电子说
在2020.1版本之后,u-boot阶段会执行boot.scr来加载后续的kernel和rootfs。但是在有些应用情况下,对u-boot加载过程需要一定的定制化修改。例如,不是在FSBL阶段加载bit文件,而是在u-boot阶段加载bit文件。对于这类的定制化应用,我们可以修改boot.scr来实现。
boot.scr是一个FIT类型的文件,但是可以用文本工具将其打开并查看其内容。如下图:
通常,boot.scr是在petalinux工程中自动生成出来的。其相关原文件在petalinux 工程的/components/yocto/layers/meta-xilinx/meta-xilinx-core/recipes-bsp/u-boot/u-boot-zynq-scr路径下。
在boot.scr文件中,你可以看到对于不同的boot mode都有相应的加载和启动分支。
接下来,你就可以根据你的实际的应用需求对其进行修改。下面我会以zcu102 SD启动模式为例,让U-boot在加载kernel和rootfs之前,自动加载bit文件。
1. 首先,将原先/image/linux下生成的boot.scr复制一份,并命名为boot.mycmd。
2. 然后,用文本工具打开boot.mycmd。删除一开始的乱码部分,这部分是FIT类型文件的验证头信息,用文本工具打开的话,就会显示成乱码,所以要先删除
3. 接下来,在SD卡的加载分支里添加相应的U-boot命令来实现bit文件的加载,并保存。
4. 执行如下mkimage命令来生成新的boot.scr文件
mkimage -c none -A arm -T script -d boot.mycmd boot.scr
5. 最后,将生成的boot.scr和BOOT.bin拷贝到SD卡中,放入zcu102上运行,其结果如下
6. 加载完成,且DONE正常亮起。
全部0条评论
快来发表一下你的评论吧 !