在 U-Boot(来自 Denx)中,是否有可能在 SPL 部分中影响从 U-Boot 部分加载的 uImage 文件?
问问题
910 次
1 回答
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" \
<...>
...转换为“将内核映像从nandsrcaddr
NAND 上的位置复制到 ram 并尝试从那里运行它”。
2)由于环境变量存储在 NAND 中的静态位置,您可以轻松地在 SPL 中编写一个简单的函数,nandsrcaddr
使用它的地址手动覆盖(我不会详细说明如何找到该地址,这取决于您的配置)。之后,重新计算 CRC 并写入。查看环境的结构 - struct environment_s
。
3) 为 SPLboard_init_r
函数添加一个开关 ( ./common/spl/spl.c ),这样当满足某个条件时(在启动过程中按下按钮、跳线设置等),您的函数(参见 2)就会被调用,并且内核映像已更改。
于 2013-10-17T08:25:39.040 回答