手把手教你创建zynq裸板程序

开发环境:vivado 2018.2、xilinx SDK 2018.2

程序框架:

具体步骤:

1. 打开vivado 2018.2软件

2. 点击Create Project

3. 输入工程名和工程路径

(注意:工程路径中不要有空格,否则后续SDK会无法导入硬件描述文件

扫描二维码关注公众号,回复: 5345515 查看本文章

4. 选择RTL工程,下方选项不勾选。

5. 选择Verilog语言,不添加文件,一直点击Next

6. 直接点击boards,选择对应的开发板

7. 这样就打开了一个新项目project_led

8. 创建一个block Design ,在Flow Navigator区域展开IP INTEGRATOR,选择create Block Design,输入块的名称system_1。

9. 工作域将会打开Diagram的图表画布,我们将在空白区域像画画一样构建自己的系统。这里操作的最小单位为IP核,xilinx提供的免费IP核可以直接添加使用,用户也可以自定义IP核。

10. 点击空白画布中间的+号来添加IP核(或者在空白板上右键点击Add IP),在search中输入zynq ,在搜索结果中双击ZYNQ7 Processing  system添加PS端到IP核画布

11. 要使PS模块在zedboard中工作,还要对其进行配置,鼠标左键双击PS模块,即可打开编辑IP核的界面。

12. 点击Presets -> Zedboard ,使用vivado对zedboard提供的默认配置,点击ok。(此处用户可根据自己的硬件自行配置)

13. 单击DDR接口,出现笔状时右键,选择 Make External ,FIXED_IO使用同样办法

14. 添加AXI GPIO IP核到系统中。右键单击空白处添加IP核,搜索栏输入GPIO,双击AXI GPIO 添加完成

15. 然后单击run connection automation 选择/axi_gpio_o/s_AXI,单击ok有两个新IP核被自动添加了。

16. 然后再单击run connection automation,Select Board Interface下选择leds_8bits.
这样就基本配置完成,IP Integrator会自动为AXI总线上的逻辑设备分配地址空间,这样ARM就可以寻址到该设备。如图:

17. 为AXI GPIO分配64k的地址空间,基地址为0x41200000,保存工程。在Diagram窗口上方工具栏中,选择Validate Design 按钮,检查设计有效性

18. 至此,IP子系统我们已经设计完成了。下面我们将设计完成Block Design生成可以综合的HDL设计文件。 在Sources 窗口,右键zynq_system_1 选择Generate Output Products

19. 单击Generate,生成HDL源文件和相应端口的约束文件。再右击zynq_system_1,选择Create HDL Wrapper选型,单击ok。这里vivado为IP子系统生成了一个顶层文件,使我们可以对系统进行综合、实现并生成比特流。

20. 在Flow Navigator 中展开Program and debug ,单击generate Bitstream。单击ok。此时vivado会生成一个硬件.bit文件,产生的bit文件位于:C:\Users\DELL\vivado_workspace\project_led\project_led.runs\impl_1中

21. 这一过程将持续很长时间,当完成后,会弹出一个对话框,选择open Implementation Design

22. 将设计导入SDK,然后就可以对ARM编程。选中Soueces栏中的zynq_system_1.bd,执行File->Export->Export Hardware 命令,弹出的对话框确保复选按钮被选上。会生成一个project_led.sdk文件夹 (产生的硬件描述文件system_1_wrapper.hdf文件位于C:\Users\DELL\vivado_workspace\project_led\project_led.sdk)

23. 启动SDK 2018.2:硬件导出后,选择菜单 File->Launch SDK,启动 SDK 开发环境, 会出现1 个 hardware platform:sytem_1_wrapper_hw_platform_0,这就是在vivado中设计的硬件平台被自动导入到SDK中了。

24. 进入SDK 开发环境后,点击菜单 File -> New -> Application Project, 仅在 Project name: 输入 fsbl,Hardware Platform 需要选择system_wrapper_hw_platform_0

25. 点击next,选择 Zynq FSBL 模板

26. 点击Finish,SDK软件会自动加载一个对应于FSBL的BSP文件。

27. FSBL文件一般不做修改就可以使用。这里为了能够让串口打印出 BootLoader 的信息,我们需要在 fsbl_debug.h 文件里添加一条语句,定义一下“FSBL_DEBUG_INFO”常量。修改后保存,重新编译一下 fsbl 项目。

28. 用户可以自行添加应用程序(裸机程序)至工程中,在main函数中编写自己的用户程序,保存即可编译。

29. 接下去我们要把 FSBL 可执行文件,FPGA PL的bit比特流文件和PS应用程序结合成一个 Bin 文件。选择菜单 Xilinx ->Create Boot Image:

30. 点击 Browse 选择选择 Zynq Boot Image 文件.bif 的存放地址;点击 Add按钮, 在弹出的Add new boot image partition 对话框中, 点击 Browse 选择我们刚生成的 FSBL 可执行文件 fsbl.elf。返里 Partition type 为 bootloader,fsbl.elf 作为bootloader 程序。点击 Add 按钮,在弹出的 Add new boot image partition 对话框中, 点击 Browse 按钮找到 FPGA PL的比特流文件 system_wrapper.bit, 这里 Partition type 为 datafile。同样的方法添加应用程序文件如helloworld。 返里 Partition type 也是 datafile。3 个文件添加后如下所示:

31. 把生成的 BOOT.bin 文件烧写到 QSPI FLASH 中

(1)开发板需要连接 JTAG 线到电脑,把开发板的上电启动配置跳线帽选择至 QSPI Flash 启劢,并上电。

(2)在 SDK开发环境里,选择菜单 Xilinx Tools->Program Flash。

猜你喜欢

转载自blog.csdn.net/m0_37765662/article/details/87782093