本文依据 Vivado 2022.1 版本工具链的特性,对 UG1209( 最新版本为 2020.1 )中介绍的 USB BOOT 启动步骤做了修改,此外,介绍了 WINDOWS 10 中 DFU 工具的使用。
Step1 VIVADO 操作:
新建 VIVADO 工程 。
( 图片截自 UG1209,路径和工程名可自定,下同 )
新建 Block Design。
添加 Zynq UltraScale+ MPSoC IP,并使用 run block automation 应用 board preset。
需要注意的是,要在 board preset 的基础上减少外设的使用以防启动镜像过大,原因会在镜像制作阶段说明。这里去掉了 PCIE、SATA、DP、CAN 外设以及两个 AXI HPM FPD 接口。
完成配置后,依次进行 Validate Design, Create HDL wrapper, Generate Output Product (OOC) , Export Hardware。因为这里没有用到PL端,所以不用生成比特流。
Step 2 制作第一个启动镜像:
创建 FSBL 工程。
配置 FSBL,在 src 目录下找到 xfsbl_config.h,修改其中的宏定义如下:
修改完成后保存、编译。
打包 fsbl.elf 和 pmufw.elf,USB boot 的第一个启动镜像会被加载到 256KB OCM 中,为了满足 size 要求,第一个启动镜像只包含 fsbl.elf 和 pmufw.elf,如果使能过多外设会导致最终的 pmufw 过大。当 OCM 被写满时,USB 启动就会失败。打包方式如下图所示,注意 pwufw 的 partition type 要指定为 pmu(loaded by bootrom)。
Step 3 制作第二个启动镜像:
使用 Vivado 2022.1 版本的 ZCU102 BSP 创建 PETALINUX 2022.1 工程。
配置 PETALINUX 工程:
1.选中 Subsystem AUTO Hardware Settings, 选中 Memory Settings ,设置 System Memory Size 为 0x6FFFFFFF。
2.返回主菜单. 选择 Image Packaging Configuration, 设置 root file system type 为 INITRAMFS。
3.将 INITRAMFS/INITRD Image name 由默认的 petalinux-intramfs-image 为 petalinux-image-minimal,默认配置下ROOTFS 会放在 SD 卡的 EXT4 分区,这是 PETALINUX 2021.1之后版本的新特性,修改后 ROOTFS 在 DDR 中,就无需插 SD卡了。
4.返回主菜单,选择 ARM Trusted Firmware Configuration,配置如下:
默认情况下,ATF 运行在 COM 中,但是在本设计中 OCM 的空间非常紧张,ATF 在 OCM 运行可能会因为内存不足卡死,所以改为在 DDR 中运行,同时使能 atf debug 方便调试。
5.修改设备树:
编辑 ./project-spec/meta-user/recipes-bsp/device-tr ee/ files/system-user.dtsi 如下:
6.编译: petalinux-build
回到 Vitis IDE 制作启动镜像,如下图所示,注意 bl31.elf 的excpetion level=el3 并且使能 trust zone,system.dtb 的 load属性设为 0x00100000(在2021.1后u-boot.elf 不再包含system.dtb),u-boot.elf 的 exception level=el2。
详细的测试过程,请参考“如何使用 Vivado 2022.1 版本工具链实现 ZCU102 USB 启动(下)”
审核编辑:汤梓红
-
usb
+关注
关注
60文章
8214浏览量
274041 -
赛灵思
+关注
关注
33文章
1797浏览量
132457 -
Vivado
+关注
关注
19文章
835浏览量
68970 -
zcu102
+关注
关注
0文章
24浏览量
7425
原文标题:开发者分享|如何使用 Vivado 2022.1 版本工具链实现 ZCU102 USB 启动(上)
文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
适用于板载Zynq UltraScale+ZCU102评估板的vivado版本
Vivado中缺少Zcu102板但它在HLS中存在
ZCU102许可证凭证是否涵盖所有ZCU102版本
如何知道ZCU102 dxdesinger版本?
为什么在Vivado(任何版本)中没有ZCU102的板级支持?
请问是否有针对zcu102板/平台的固件更新的参考文档?
如何使用ZCU102 Petalinux教程获取BSP?
在ZCU102 ultrascale上找不到串口
ZCU102,ZCU104和ZCU106有什么区别?
如何为zcu102生成PSU Init文件?
ZCU102评估板提供设计文件吗?
如何使用ZCU102评估板来运行应用
PYNQ移植ZCU102详细流程分析

评论