Vitis尝鲜(二)

作者:碎碎思,来源:OpenFPGA微信公众号
* 本文由作者授权转发,如需转载请联系作者本人

上一篇安装完相关程序后,这一篇就简单运行一个“Hello Vitis”的程序。

本例硬件平台为ZYNQ平台,具体芯片为XC7Z035。

ZYNQ 芯片分为 PL 和 PS, PS 端的 IO 分配相对是固定的,不能任意分配,而且不需要在 Vivado 软件里分配管脚,虽然本实验仅仅使用了 PS,但是还要建立一个 Vivado 工程,用来配置 PS 管脚。虽然 PS 端的 ARM 是硬核,但是在 ZYNQ 当中也要将 ARM硬核添加到工程当中才能使用。

Vivado 工程建立

1. 点击桌面图标Vivado2019.2

2. file–>project–>new

3. 做选择,NEXT

4. 设置工程名字和路径

设置工程名字:ps_hello
设置工程路径

5. 选择工程类型

这里选择RTL Project,尤其注意勾选箭头所示位置,现在不添加特殊的设计文件(我们还没有设计文件)。

6. 选择本工程对应的目标器件

本实例目标器件是xc7z035ffg676-2

7. 工程总结页面

核对之前的设置,如果没问题点击Finsh。

8. 创建图形化设计

点击“Create Block Design”,创建一个 Block 设计,也就是图形化设计

9. 修改“Design name”

“Design name”这里可以不做修改,保持默认“design_1”,这里可以根据需要修改为“zynq035”,不过名字要尽量简短,否则在 Windows 下编译会有问题。

10. 点击“Add IP”快捷图标

11. 添加“ZYNQ7 Processing System”

搜索“zynq”,在搜索结果列表中双击“ZYNQ7 Processing System”

12. 配置相关参数

双击 Block 图中的“processing_system7_0”,配置相关参数

图中绿色部分是可配置模块,可以点击进入相应的编辑界面,当然也可以在左侧的窗口进入编辑。各个窗口的功能就不一一介绍了。有兴趣可以去官网搜索“ug585”,里面有对 ZYNQ 的详细介绍。

主要的页面是时钟配置,因为每个板子不相同,所以需要配置这个页面。

在“Clock Configuration”选项卡中我们可以配置 PS 时钟输入时钟频率,这里默认是33.333333,和板子上一致,不用修改, CPU 频率默认 666.666666Mhz,这里也不修改。同时 PS 还可以给 PL 端提供 4 路时钟,频率可以配置,这里不需要,所以保持默认即可。还有 PS 端外设的时钟等也可以进行配置,这里保持默认。

另外DDR配置也很重要。

内存型号配置(PS: 开发板内存型号配置为MT41K256M16 RE-125):

内存型号配置如下:

13. 设置外扩接口,之后点击OK。

14. 点击“Run Block Automation”, vivado 软件会自动完成一些导出端口的工作

按照默认点击“OK”

点击“OK”以后我们可以看到 PS 端导出一些管脚,包括 DDR 还有 FIXED_IO, DDR 是DDR3 的接口信号, FIXED_IO 为 PS 端固定的一些接口,比如输入时钟, PS 端复位信号,MIO 等。

连接 FCLK_CLK0 到 M_AXI_GP0_ACLK,按 Ctrl+S 保存设计

PS:DDR 和 FIXED_IO 是 PS 端引脚, PS_PORB 为 PS 端上电复位信号,不能用于 PL 端复位,不要将 PL 端的复位绑定到这个引脚号上在!

15. 右击 system.bd, 单击Generate Output Products。


这一步操作会产生执行、仿真、综合的文件,可以看出来最后的硬件设计步骤还是回到了我们前面的FPGA开发上来了。

17. 右击 system.bd 选择 Create HDL Wrapper 这步的作用是产生顶层的 HDL 文件

选择 Leave Let Vivado manager wrapper and auto-update 然后单击 OK

展开设计可以看到 PS 被当成一个普通 IP 来使用。

查看 system_wrapper.v 源码可以看到顶层文件的源码调用了 CPU 接口,所有外设的接口也都是通过顶层文件引出来的。

16. 在菜单栏“File -> Export -> Export Hardware…”导出硬件信息,这里就包含了 PS 端的配置信息。

在弹出的对话框中点击“OK”,这里注意下因为实验仅仅是使用了 PS 的串口,不需要 PL 参与,这里就可以不勾选“Include bitstream”,如果你的工程里有PL部分代码,一定记得勾选箭头位置。导出路径可以自由选择,本实验保存在工程路径下面新建文件夹 vitis, 这个文件夹可以根据自己的需要在合适的位置新建,不一定要放在 vivado工程下面, vivado 和 vitis 软件是独立的。

此时在新建的 vitis 文件夹下可以看到 xsa 文件,这个文件就是这个文件就包含了 Vivado 硬件设计的信息,供软件开发人员使用。


Vitis 调试
接下来就是将Vivado做的相关文件导入Vitis中,这一步和以前的SDK是不同的,我们看下在Vivado中相关位置:

以前版本是有Launch SDK选项的,所以vitis调试第一步需要自己打开vitis软件。

1. 打开Vitis软件

为了方便相关人员调试,Vivado中也是可以直接打开Vitis软件的, 通过Tools–>Launch Vitis 打开 Vitis 软件

当然通过桌面图标打开也是一样的。

2. 选择之前新建的“vitis”文件夹,点击”Launch”

如果是以后经常使用一个文件夹作为Vitis工程,可以勾选下图位置。

3. Create Application Project

启动 Vitis 之后界面如下,点击file–>New–>Application Project或者“Create Application Project”,这个选项会生成 APP 工程以及Platfrom 工程, Platform 工程类似于以前版本的 hardware platform,包含了硬件支持的相关文件以及 BSP。

4. 填写项目名称

5. Create a new platform hardware(XSA)

点击“Create a new platform hardware(XSA),软件已经提供了一些板卡的硬件平台,但对于我们自己的硬件平台,可以选择”+”

选择之前生成的 xsa,点击打开

点击 Next

CPU 默认选择 ps7_cortexa9_0, OS 选择 standalone,最下面的 Generate boot components选项,如果勾选上,软件会自动生成 fsbl 工程,我们一般选择默认勾选上。点击 Next

6. 模板选择 ,建立工程

模板选择,根据自己的需要来,本例选择 Hello World,点击 Finish

完成之后可以看到生成了两个工程,一个是硬件平台工程,即之前所说的 Platfrom 工程,一个是 APP 工程。

展开 Platform 工程后可以看到里面包含有 BSP 工程,以及 zynq_fsbl 工程(此工程即选择Generate boot components 之后的结果) ,双击 platform.spr 即可看到 Platform 对应生成的BSP 工程,可以在这里对 BSP 进行配置。软件开发人员比较清楚, BSP 也就是 BoardSupport Package 板级支持包的意思,里面包含了开发所需要的驱动文件,用于应用程序开发。可以看到 Platform 下有多个 BSP,这是跟以往的 Vitis 软件不一样的,其中 zynq_fsbl即是 fsbl 的 BSP, standalone on ps7_cortexa9_0 即是 APP 工程的 BSP。也可以在 Platform里添加 BSP。

点开 BSP,即可看到工程带有的外设驱动,其中 Documentation 是 xilinx 提供的驱动的说明文档, Import Examples 是 xilinx 提供的 example 工程,加快学习。

先修改下,helloworld.c文件,在图示位置,修改

编译工程
选中 APP 工程,右键 Build Project,或者点击菜单栏的“锤子”按键,进行工程编译

可以在 Console 看到编译过程

编译结束,生成 elf 文件

硬件调试
连接 JTAG 线到开发板、 UART 的 USB 线到 PC

打开串口软件,查看设备管理器中串口号

选用SecureCRT串口调试终端,波特率按照文件指示选择115200。


PS:在上电之前最好将开发板的启动模式设置到 JTAG 模式

运行程序

选择“hello_ps”,右键,可以看到很多选项,本实验要用到这里的
“Run as”,就是把程序运行起来,“Run as”里又有很对选项,选择第一个“Launch on Hardware(Single Application Debug)”,使用系统调试,直接运行程序。

这个时候观察串口软件, 即可以看到输出”Hello vitis”

为了保证系统的可靠调试, 最好是右键“Run As -> Run Configuration…”

我们可以看一下里面的配置,其中 Reset entire system 是默认选中的,这是跟以前的 Vitis软件不同的。如果系统中还有 PL 设计,还必须选择“Program FPGA”

除了“Run As”,还可以“Debug As”,这样可以设置断点,单步运行

进入 Debug 模式

和其他 C 语言开发 IDE 一样,可以逐步运行、设置断点等

右上角可以切换 IDE 模式

尝鲜就先到这里,总结一下:1、和以前开发流程大差不差,中间有几步稍微有点差别,但是走过一遍应该就能熟悉;2、整个vitis和以前的SDK界面稍有不同,但是功能基本一致;3、虽然变化不大,但是把软件和硬件开发分得更细致了,这样更方便软硬件进行协同工作。目前能想到的就这些,后面有什么新发现会第一时间分享给大家,还是之前文章说的,如果你是vivado+SDK的用户没必要为了尝鲜去升级软件,至少我目前是这么认为的。如果你对硬件加速方面有特殊需求的,推荐去尝试一下。

最新文章

最新文章