一、进入U-Boot命令行界面,查看加载比特流文件的环境变量
在开机倒计时的时候,按任意键进入U-Boot界面
输入指令查看环境变量:printenv
因为从vivado导出的比特流文件是.bit文件,而U-Boot的环境变量定义的指令是加载.bin文件的,因此要使用bootgen将.bit文件转换为.bin文件
注意第五行的bitstream_image=system.bit.bin,这也说明要将比特流文件转换为.bin文件,并命名为system.bit.bin
(也可以用修改环境变量,将“load”修改为“loadb”,同时修改bitstream_image=system.bit.bin,将等号后面修改为.bit文件)。如果是“loadb”或者已经修改为“loadb”,请直接看三。
二、安装bootgen,使用bootgen命令行将.bit文件打包为.bin文件
1、安装bootgen
1、下载bootgen-master文件(https://github.com/Xilinx/bootgen)
2、编译bootgen-master文件
编译完后会产生一个bootgen文件夹:
因为bootgen-master目录下文件太多,我移动到了别的目录下:
2、使用bootgen命令行将.bit文件打包为.bin文件
将比特流文件(system.bit)移动到虚拟机bootgen文件的同级目录下
1、在bootgen的同级目录下编写.bif文件,其中system.bit就是待转换的比特流文件
此时bootgen的同级目录下应该同时有以下几个文件:
bootgen system.bif system.bit
2、使用指令生成system.bit.bin文件
./bootgen -image system.bif -arch zynq -process_bitstream bin
三、将比特流文件复制到SD卡
四、加载比特流文件
1、手动加载
手动加载直接在U-Boot命令行下手敲指令:load mmc 0 ${loadbit_addr} ${bitstream_image} && fpga load 0 ${loadbit_addr} ${filesize}
其实该指令来源于之前printenv打印出来的环境变量
也可直接输入mmc_loadbit后的指令:echo Loading bitstream from SD/MMC/eMMC to RAM.. && mmcinfo && load mmc 0 ${loadbit_addr} ${bitstream_image} && fpga load 0 ${loadbit_addr} ${filesize}
也可以使用环境变量的操作指令:run mmc_loadbit
手动加载完了之后,直接输入boot就可继续启动开发板了
2、自动加载
将SD卡拔出,接入自己电脑,打开uEnv.txt文件添加以下内容:
!!!注意:开机后并没有执行run_mmc loadbit,要将run_mmc loadbit和run adi_sdboot调换位置。因为run_mmc loadbit和run adi_sdboot是按顺序执行的,执行了run adi_sdboot后,开发板就继续开机了,run_mmc loadbit就不会被执行了。
以上就实现了zynq开机后可以自动挂载fpga文件,正常开机后看看见加载成功后的输出信息: