[英]U-Boot: Influence which kernel image to load in SPL
在U-Boot(来自Denx)中,是否有可能影响SPL部分中从u-Boot部分加载的uImage文件?
对的,这是可能的。 您提供的信息很多,所以我无法确切地说出如何做,但我将举一个示例,说明使用存储多个图像的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),并且地址为内核映像已更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.