本文转载自: XILINX开发者社区微信公众号
作者:赛灵思工程师 Davis Zhang
新版petalinux生成的u-boot是通过boot.scr来加载linux kernel的。如果我们用petalinux工程默认配置和下面命令生成boot image并从flash启动,会出现下面的错误:
petalinux-package --boot --u-boot --kernel
device 0 offset 0xf40000, size 0x6400000
SF: 104857600 bytes @ 0xf40000 Read: OK
Wrong Image Format for bootm command
ERROR: can't get kernel image!
Booting using Fit image failed
在2021.1和2021.2的boot.scr中,linux fit image的offset是通过下面的配置来设置的:
petalinux-config → u-boot Configuration → u-boot script configuration(qspi fit image offset默认0xF40000)
但是petalinux-package命令生成的BIF文件里,fit image的offset采用的是“petalinux-config->Subsystem AUTO Hardware Settings->Flash Settings”里第二个partition(默认名字为kernel)的offset来配置的。所以就会出现boot.scr读取到错误数据的问题。解决办法就是保持这两个配置里的offset一致。