zynq 7000 把程序刷入qspi或者SD卡固化
网上有,但大都是讲怎么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一样能跑。。。