1、目的
在使用传统方式生成uboot后,需要用uboot.elf结合Xilinx的SDK打包成BOOT.BIN,作为系统启动的引导文件,打包时需要的文件有:
fsbl.elf
uboot.elf
*.bit文件
每次打包比较麻烦,现提出一种固定uboot后加载bit流方法,避免修改bit文件后频繁打包,方便调试。
2、使用工具
SDK 2019.1
bootgen
3、实现步骤
3.1windows操作
1、从vivado中export工程到SDK
2、创建fsbl工程,生成fsbl.elf
3、制作BOOT.BIN时,导出output.bif
第4行为fsbl.elf的地址
第5行为*.bit流的文件地址
第6行为SDK下生成的测试工程编译后得到的.elf文件
4、将fsbl.elf 和output.elf拷贝到Linux下uboot工程包中根目录下
3.2Linux操作
1、修改output.bif文件如下
//arch = zynq; split = false; format = BIN
the_ROM_image:
{
[bootloader]./fsbl.elf
./u-boot.elf
}
2、制作uboot编译脚本
#!/bin/bash
source /opt/SDK/2019.1/settings64.sh
export ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
make distclean
make zynq_zc702_defconfig
make -j8
echo "Create BOOT.BIN!"
rm -rf BOOT.BIN boot.mcs
bootgen -image output.bif -o i boot.mcs -w on
bootgen -image output.bif -o i BOOT.BIN -w on
make -j8之前是生成u-boot.elf文件,后边的一段是生成BOOT.BIN文件
3、修改\include\configs\zynq-common.h内容,添加加载bit流文件指令,总共有2处;
1)bitstream_image的名字,需要与vivado中生成的*.bit对应;
2)从SD卡或者从emmc加载bit的指令。
4、验证
将Linux下uboot根目录下的BOOT.BIN文件,vivado生成的*.bit文件,和后续制作好的uImage文件拷贝到SD卡下,插入工程板中,即可加载当前目录下的bit并启动内核,之后修改完成bit文件后,直接拷贝到SD卡中即可,无需再使用SDK合成