1 Vitis软件平台、vitis实例、裸机SOC(SDK)程序移植教程-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vitis软件平台、vitis实例、裸机SOC(SDK)程序移植教程

电子设计 来源:VagueCheung的博客 作者:VagueCheung的博客 2022-07-25 18:07 次阅读

本文转载自:VagueCheung的博客

赛灵思公司(Xilinx)推出Vitis——这是一款统一软件平台,可以让包括软件工程师AI科学家在内的广大开发者都能受益于硬件灵活应变的优势。历经5年、投入总计1000人打造而成,Vitis统一软件平台无需用户深入掌握硬件专业知识,即可根据软件或算法代码自动适配和使用赛灵思硬件架构。此外,Vitis 平台不限制使用专有开发环境,而是可以插入到通用的软件开发工具中,并利用丰富的优化过的开源库,使开发者能够专注于算法的开发。Vitis独立于Vivado设计套件,后者仍然继续为希望使用硬件代码进行编程的用户提供支持。但是,Vitis也能够通过将硬件模块封装成软件可调用的函数, 从而提高硬件开发者的工作效率。

Vitis统一软件平台的四层架构

o4YBAGAKOeuARHC2AAOporZIYS4132.png

Vitis构建在基于堆栈的架构之上,共有四层。

第一层是基础层,是Vitis目标平台。该平台由电路板和预编程I/O构成;

第二层是Vitis 核心开发套件,覆盖开源赛灵思运行时库,以管理不同域间的数据移动, 包括子系统、即将发布的Versal ACAP内的AI 引擎和必要的外部主机。此外,该层也提供编译器、分析器和调试器等核心开发工具。这些工具均能与业界标准的构建系统与开发环境无缝集成;

在第三层,8个Vitis 库提供400余种优化的开源应用。这8个库分别是:Vitis 基本线性代数子程序(B LAS)库、Vitis 求解器库、Vitis安全库、Vitis视觉库、Vitis数据压缩库、Vitis计量金融库、Vitis数据库集和Vitis AI 库。借助这些库,软件开发者可以使用标准的应用编程接口(API)来实现硬件加速;

Vitis AI是Vitis 平台的第四层,也是最具有变革意义的一层。它集成了特定领域架构(DSA)。 DSA 提供了针对AI模型的硬件实现,开发者可以使用包括TensorFlow和Caffe等业界领先框架对其进行配置与编程。Vitis AI提供的工具链能在数分钟内完成优化、量化和编译操作,在赛灵思器件上高效地运行预先训练好的AI模型。此外,它也为从边缘到云端的部署提供了专用API,实现业界一流的推断性能与效率。赛灵思陆续还将推出另一个DSA(Vitis Video),支持从FFmpeg直接进行编码并提供同样超级简单且功能极强大的端到端视频解决方案。目前,由合作伙伴公司提供的DSA包括:与GATK 集成用于基因分析的Illumina,与ElasticSearch 集成用于大数据分析的BlackLynx, 以及当前我们客户正在使用的专有DSA。

Vitis拥有三大特点:第一是开放,第二是标准,第三是免费。首先,Vitis统一软件平台支持在赛灵思异构平台上开发嵌入式软件和加速应用,包括FPGA、SoC和Versal ACAP,为边缘、云和混合计算应用 加速提供了统一编程模型。其次,Vitis可与高层次框架进行集成,可以通过加速库采用C、C++Python进行开发,也可以使用基于RTL的加速器和低层次运行是API对实现方案进行粒度更精确的控制。

硬件加速应用程序开发流程:

对于基于FPGA的加速,Vitis核心开发套件支持用户通过API函数创建软件应用程序,例如OpenCL函数,在Alveo加速卡上运行加速硬核。Vitis核心开发套件也支持将软件程序运行在基于Linux嵌入式处理器平台上,例如ZYNQ的UltraScale+MPSOC设备。对于嵌入式处理器平台Vitis开发套件执行模型也通过OpenCL API和基于Linux的Xilinx运行库(XRT)来调度硬核和控制数据的搬移。(加速库和xilinx运行库在GitHub上可下载

Vitis核心开发套件可支持Alveo U50、U200、U250、U280加速卡,也支持zcu102、zcu104、zc702、zc706嵌入式处理器平台。除了以上比较流行的平台外,同时也支持自定义平台。

Vitis软件平台允许用户将数据中心应用程序移植到嵌入式平台上。Vitis核心开发套件不仅具有适用于硬核的V++编译器。也具有运行在X86主机的g++编译器和运行在Xilinx设备的嵌入式处理器的Arm编译器

Vitis与SDK对比:

pIYBAGAKOiuAcbwdAAFPhTf3mTA068.png

系统项目指的是什么?域domain可以理解成SDK中的BSP么?

系统项目就是指在Vitis中创建的application。

pIYBAGAKOnCAd4RrAAFR1EC4nTk200.png

Vitis软件平台 SDK
可在Vitis中直接创建一个平台项目(需要添加vivado生成的XSA文件或者从平台库中添加任意平台作为基础例如vck190.xsa、zc702.xsa、zc706.xsa、zcu102.xsa、zed.xsa) SDK是从vivado工程中导出硬件平台项目
为平台添加域 创建BSP
创建应用程序(通过平台的域) 创建应用程序(通过BSP)
改制一个预置平台 无提及
可在一个系统项目中管理多个应用程序 无提及
修改并且更新硬件 基本相同,工作流程可能有细微改变
在硬件上调试应用程序 基本相同,工作流程可能有细微改变
在一个系统项目下运行和调试应用程序 无提及
创建boot image 基本相同,工作流程可能有细微改变
Flash 编程 基本相同,工作流程可能有细微改变
生成设备树 基本相同,工作流程可能有细微改变
通过User-Modify/Custom FSBL测试应用程序 基本相同,工作流程可能有细微改变
修改域源文件 基本相同,工作流程可能有细微改变

实测Vitis编译时间要比SDK编译时间略长;

Vitis实现简单的HelloWord

基于黑金ZYNQ 7020开发板创建工程,打开vivado2019.2一步步创建工程,vivado部分还是与之前一模一样没有任何改变。

pIYBAGAKOr6AQoEfAAD0LutSQIw236.png

pIYBAGAKOweANY-LAABJdAmuS-U471.png

pIYBAGAKO5CANq9yAABvER9AfFw755.png

pIYBAGAKO86AWqTsAABoYHI-DVs374.png

pIYBAGAKPA2AMJK_AACXPiE3pBc295.png

pIYBAGAKPFyAa31QAABwD5HDRfk161.png

创建完工程,创建同一个 Block Design工程

o4YBAGAKPJyACVLjAAEqeU2WE4M440.png

添加ZYNQ 核

pIYBAGAKPOuAVHgeAACL23gTgW4011.png

双击ZYNQ核设置一下,这里设置跟板子一致UART1,波特率选择115200,没有用到PL,AXI也没使用。

pIYBAGAKPSqAC3NEAAD30cfmWWs263.png

o4YBAGAKPWqAP4JtAAClhVwyALY696.png

pIYBAGAKPaiAbfsfAADnDvbEND4033.png

时钟默认即可,黑金的7020最高可以跑到767Mhz。

pIYBAGAKPeeABSsTAADE1HNh-os689.png

pIYBAGAKPiWAS-etAADXWcnqBBo839.png

o4YBAGAKPmSAKsKNAACblvJcb_Y075.png

设置完成。自动连线。

o4YBAGAKPqKAA4PaAABfx4_yh3g463.png

pIYBAGAKPwGAb2zxAACmPmKfaGg432.png

生成文件:

pIYBAGAKP0CAXzd-AAGO3AvIcA4804.png

o4YBAGAKP3-AeOPHAABW2Gtluco646.png

生成顶层文件:

o4YBAGAKP7-AUoSRAAGElqgodyE015.png

o4YBAGAKQD2AOnK8AABGQGFKiAw989.png

至此PL部分完成了。

o4YBAGAKQHuAVqpaAAC4nqkpGlw077.png

导出设计到软件,没有用到PL,所以不用综合生成bit文件了,这里直接导出

pIYBAGAKQMOAem6IAADfkCbYXtk395.png

pIYBAGAKQQGAfb1bAAAxvSd0W7k381.png

导出完成,这里开始软件操作,打开vitis先创建一个 platform project导入刚才的设计xsa文件。

这里与SDK不同,SDK是从vivado直接Launch打开,而Vitis是独立与vivado IDE的开发工具。

o4YBAGAKQYWAVzsuAABzyW5HlwA499.png

pIYBAGAKQcqAWmI8AAFBsic-iq4965.png

o4YBAGAKQgmAKhCMAABv7dQaxOI359.png

选择Vivado导出的设计,点击 finish完成

o4YBAGAKQk-AeffXAABntidiqCk983.png

pIYBAGAKQquABnDsAAEv5OZCubM013.png

创建一个Application project:

o4YBAGAKQuqAcggwAAD5QKXbUr0062.png

o4YBAGAKQymAcJrdAAFJMOAGNYs460.png

pIYBAGAKQ2qAQAYiAAByTtpg-fI706.png

o4YBAGAKQ62AfstwAAA-ltSrND8241.png

o4YBAGAKQ-uAQ11AAAB0cy16KA8513.png

o4YBAGAKRCqAImi_AAEyFv6rDA4410.png

编译helloworld工程

o4YBAGAKRGyAOjHUAAEFfstjnHk566.png

给板子接好上电,连接串口助手软件,打开串口设置如下,com口根据实际而定。

o4YBAGAKRK6AFPTxAABK6rwDYos949.png

下载运行

o4YBAGAKRO6AcAZ7AAD4z84d0ms021.png

已经输出了“hello world”

o4YBAGAKRS2AN4ANAACArXPXMDM913.png

移植vivado2019.2之前版本的SOC工程:

1)Vivado部分:

使用Vivado 2019.2打开之前版本的vivado工程项目 ,重新综合生成bit流文件,如果工程中不设计PL部分则不需要生成bit文件。综合通过之后导出硬件

File——Export——Export HardWare,导出成功后会发现在vivado工程路径中会多出一个.XSA文件(个人理解与SDK导出的Hdf文件大同小异);

pIYBAGAKRW6AWV1vAAEGI-3Lpa4878.png

2)Vitis部分:

打开Vitis工具,创建一个Platform,设置项目名,添加vivado工程路径中的.XSA文件。创建完Platform之后接下来创建一个Application项目,复制原工程SDK中的相应文件(.c和.h),粘贴到Vitis Apllication。

pIYBAGAKRayAPeUhAAB8d8_HEfo221.png

点击编译。右键app——DebugAs——DebugConfigurations

pIYBAGAKRe6AMhv1AAEhFOKdWPo603.png

尝试分别选择上图中3个Debug Configuration,运行均能正确实现原SDK工程的功能;

还不清楚这三个配置有什么区别。

总结:SDK工程的移植基本没什么太大的变化,Vitis只是将SDK从Vivado中抽离出来单独运行而已;

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1034

    浏览量

    45895
  • Vitis
    +关注

    关注

    0

    文章

    146

    浏览量

    7421
收藏 人收藏

    评论

    相关推荐

    全新AMD Vitis统一软件平台2024.2版本发布

    全新 AMD Vitis 统一软件平台 2024.2 版本已于近期推出。
    的头像 发表于 12-11 15:06 255次阅读

    AMD Vitis Unified Software Platform 2024.2发布

    近日,全新 AMD Vitis Unified Software Platform 2024.2 版本推出。
    的头像 发表于 11-27 15:47 204次阅读

    将应用程序从NoOS SDK移植到RTOS SDK遇到异常怎么解决?

    我正在将应用程序从 NoOS SDK 移植到 RTOS SDK。但现在有问题了。它得到了致命的异常 28。 问:context(stack) 通过espconn_regist_recv
    发表于 07-11 07:56

    一个更适合工程师和研究僧的FPGA提升课程

    系统软件设计; ● 嵌入式系统设计; ● Zynq SoC 系统架构; ● 基于Vitis进行嵌入软件开发移植; Versa
    发表于 06-05 10:09

    AMD Vitis™设计工具中的Libraries新功能介绍

    AMD Vitis™ 2023.2 设计工具是 Vitis 设计工具变化较大的一个版本,设计流程和界面都发生了变化。
    的头像 发表于 05-29 09:50 583次阅读
    AMD <b class='flag-5'>Vitis</b>™设计工具中的Libraries新功能介绍

    STM32移植UCOS和编写GUI程序平台如何建立?

    请教STM32移植UCOS和编写GUI程序平台如何建立 ,需要哪些软件,请各位大虾、前辈指教,分享一下,或推荐一下教程,谢谢
    发表于 05-15 08:18

    在Windows 10上创建并运行AMD Vitis™视觉库示例

    本篇文章将演示创建一个使用 AMD Vitis™ 视觉库的 Vitis HLS 组件的全过程。此处使用的是 Vitis Unified IDE。如果您使用的是旧版 AMD Vitis
    的头像 发表于 05-08 14:02 751次阅读
    在Windows 10上创建并运行AMD <b class='flag-5'>Vitis</b>™视觉库示例

    如何使用Vitis自带的LWIP模板进行PS端千兆以太网TCP通信?

    开发板有两路千兆以太网,通过RGMII接口连接,本实验演示如何使用Vitis自带的LWIP模板进行PS端千兆以太网TCP通信。
    的头像 发表于 04-28 10:44 3369次阅读
    如何使用<b class='flag-5'>Vitis</b>自带的LWIP模板进行PS端千兆以太网TCP通信?

    AMD Vitis™ Embedded嵌入式软件开发套件的功能和特性概述

    Vitis Embedded 是一款独立的嵌入式软件开发套件,主要用于为 AMD 自适应 SoC 和 FPGA 中的 AMD 嵌入式处理子系统(基于 ARM 的子系统和 AMD MicroBlaze)开发并编译 C/C++
    的头像 发表于 04-08 10:50 916次阅读
    AMD <b class='flag-5'>Vitis</b>™ Embedded嵌入式<b class='flag-5'>软件</b>开发套件的功能和特性概述

    Vitis2023.2使用之—— updata to Vitis Unified IDE

    2023.2的classic Vitis IDE工程的方法是编译好vivado工程后重新导出硬件.xsa 基于导出的硬件重新生成平台工程和应用工程。 工程编译好后单击Vitis菜单下的Export
    发表于 03-24 17:14

    Vitis2023.2使用之—— classic Vitis IDE

    Vitis 已经更新到2023.2了,新版本相较于旧版本更新了嵌入式平台,新版平台增加了Versal™ AI 引擎 DSP 设计的增强功能,全新的独立 Vitis 嵌入式
    发表于 03-24 16:15

    Vitis2023.2全新GUI的功能特性介绍

    Vitis2023.2之前就安装过了,vivado 2023.2相比于2023.1区别不明显,但嵌入式平台vitis2023.2的变化很大,有种vscode的既视感,更符合软件开发人员
    的头像 发表于 01-05 09:42 1339次阅读
    <b class='flag-5'>Vitis</b>2023.2全新GUI的功能特性介绍

    Vitis AI用户指南

    德赢Vwin官网 网站提供《Vitis AI用户指南.pdf》资料免费下载
    发表于 01-03 10:51 1次下载
    <b class='flag-5'>Vitis</b> AI用户指南

    AMD Vitis™ Libraries Vision L3 Isppipeline U50流程示例

    Vitis Vision 库是一组 90 多个内核,基于 OpenCV 计算机视觉库,针对 AMD FPGA、AMD AI Engine™ 和 AMD SoC 进行了优化。
    的头像 发表于 01-03 10:10 965次阅读
    AMD <b class='flag-5'>Vitis</b>™ Libraries Vision L3 Isppipeline U50流程示例

    AMD-Xilinx的Vitis-HLS编译指示小结

    流水线指令 pragma HLS pipeline 通过流水线提高性能是计算机架构设计的8个伟大思想之一,不管是硬件设计还是软件设计,流水线设计(pipeline)都能够用更多的资源来实现高速
    发表于 12-31 21:20