如何在 U-Boot 和 Linux 中下载 Bit 文件

Xilinx Wiki http://www.wiki.xilinx.com/Solution+ZynqMP+PL+Programming 有如何在 U-Boot/Linux 下 Configure PL 的流程。注意需要先加入 AR68246 中的 PMUFW 的补丁,以保证下载 bit 文件后 PS 能正确将 PL 复位,否则 PS 不能访问 PL 的地址。

AR68246: https://www.xilinx.com/support/answers/68246.html

FSBL 没有配置 PS-PL AXI 总线数据位宽

在 Vivado 中配置 PS-PL Interface 的 AXI HP/ACP 端口为 32 或 64 位宽的总线,会发现读写 0x0 地址是正确的,但是 0x4, 0x8, 0xc 地址出现错误。这是因为总线状态还停留在128位的模式。使用以下两个 AR 中的方法可以解决。

SDK - Create Boot Image 默认没有为 U-Boot 和 ATF 添加 Exception Level 的参数

SDK 的 Create Boot Image 图形界面工具会根据用户设置生成对应的 BIF 文件,并使用 Bootgen 工具将这个 BIF 文件作为输入参数,以产生最终的 BOOT.BIN。2016.3 SDK 中的 Create Boot Image 工具默认却没有为 U-Boot 和 ATF 添加 Exception Level 的参数。这会导致 U-Boot 和 Linux 不能正常启动。比较保险的方式是用PetaLinux的 petalinux-package --boot 工具产生boot.bin

U-Boot 和 Linux 的 reboot 命令不能正常重启

这是由于 PMUFW 中缺少相应实现代码引起。在 AR68514 中有一个绕过的方法,只进行PS Only Reset。这个问题在 2017.1 中得到了解决。

AR68514: https://www.xilinx.com/support/answers/68514.htm

MPSoC PL 中例化的 MicroBlaze 可能会无法用 JTAG 连接

解决方法请参考AR68439。产生这个问题主要是因为 MicroBlaze 的 JTAG 连接模块 MDM 的一些异步信号需要额外的时序约束。

AR68439: https://www.xilinx.com/support/answers/68439.html