«

zynq 7000 把程序刷入qspi或者SD卡固化

学长 发布于 阅读:1084 ZYNQ 7020


网上有,但大都是讲怎么pl固话的,ps端和pl端没怎么看到有人说

在ip design时候就加入qspi和sdcard在ps上的MIO映射的端口

开发板bank1设为1.8v,接口除了uart全部设为fast


做好ip design一直到bitstream完成,其实bitstream就是pl端的程序*.bit文件

如果没用到pl端口只跑ps系统就可以不用包含bitstream,GPIO口都在PL端通过AXI总线接入PS端

去掉走在AXI上的GPIO总线 M AXI GP0

时钟也可以去掉FCLK_CLK0

然后export hardware到sdk或者vita中


原理:

但是开机后boot的顺序是现PS从qspi或者sd之类的启动设备然后再根据,这些外围设备也是直接进入PS端的

启动设备中BOOT.in文件写入的内容决定程序怎么跑的

BOOT先需要做FSBL,也就是一般常说的bootloader

只需要创建的时候选中ZYNQ FSBL就行不需要修改编译什么,

只需要创建后然后去对应debug中找到 项目名.elf 就职之后要用到作为bl部分的二进制程序


然后建立个你先跑的PS程序如果有的话,同理,在该程序的debug中找到ps部分的二进制文件(*.elf)

然后在Xilinx Tools > Create Boot Image中把

设置好储存镜像文件顺序和目录的BIF文件(BIF file path),设置好镜像文件输出位置(output path)

FSBL的当做第一个bl加进去,

pl部分的.bit放进去

ps部分要跑的程序再加进去

然后生成bin


直接放到sd卡

或者

program flash到qspi,2023.1要再去把FSBL列进去,2015版本则不需要。。。

如果flash几次程序跑得跟测试的不一样请勾选

Blank check after erase

Verify after flash


如果BOOT.bin超过你的qspi容量则刷写会出错。。。petalinux 2023年版本至今没有找到解决办法。。。看来只能放在SD卡用了。。。

放SD卡BOOT.bin不需要把image.ub并进去。。。(题外话)

拓展思考,可以通过gpio或者USB启动更大空间的设备来跑更大的系统。。。但是ZYNQ的linux编程环境真心不如树莓派。。。

毕竟petalinux一个编译就要下载半小时乃至数天。。。而且万一中美真割裂不让用github那就彻底GG了。。。

看苏妈的AMD怎么解决xilink夸张的编译器膨胀速度吧。。。


参考:

https://blog.csdn.net/weixin_45526456/article/details/108049186


如果只有PL程序但是因为要用到PS端的SD和QSPI存储设备所以得添加ZYNQ 7 processing,并且设置完FCLK_CLK0后还得手动连接到M_AXI_GP0_ACLK上

还要把IP INTEGRATOR的block design 右键set as top不然导出的时候会有

Cannot write hardware definition file as there are no generated IPI blocks

的提醒

你要测试的pl代码也要加到里面去,其实单独生成.bit文件再单独生成fsbl一样能跑。。。



扫描二维码,在手机上阅读