在U-Boot(来自Denx)中,是否有可能在SPL部分影响从U-Boot部分加载的uImage文件?
答案 0 :(得分:1)
是的,有可能。您提供的信息不多,所以我无法确切知道如何,但我会举例说明使用存储多个图像的NAND磁盘在am335x板上可以做些什么。
1)查找您的主板正在使用的启动脚本。通常它们位于 ./ configs / yourboardname.h 感兴趣的行应该类似于:
#define CONFIG_EXTRA_ENV_SETTINGS \
<..>
"nandsrcaddr=0x280000\0" \
"nandimgsize=0x500000\0" \
"nandboot=echo Booting from nand ...; " \
"run nandargs; " \
"nand read ${loadaddr} ${nandsrcaddr} ${nandimgsize}; " \
"bootm ${loadaddr}\0" \
<...>
...转换为“将内核映像从NAND上的nandsrcaddr
位置复制到ram并尝试从那里运行”。
2)由于环境变量存储在静态位置的NAND上,您可以轻松地在SPL中编写一个简单的函数,使用它的地址手动覆盖nandsrcaddr
(我不会详细说明如何找出地址,再次,这取决于您的配置)。之后,重新计算CRC并写入。查看环境结构 - struct environment_s
。
3)添加一个开关到SPL board_init_r
功能( ./ common / spl / spl.c ),以便在满足某个条件时(按钮在开机时按下,跳线设置等) 。)调用你的函数(见2)并更改内核映像的地址。