U-Boot:影响在SPL中加载哪个内核映像

时间:2013-10-16 13:40:26

标签: kernel spl u-boot

在U-Boot(来自Denx)中,是否有可能在SPL部分影响从U-Boot部分加载的uImage文件?

1 个答案:

答案 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)并更改内核映像的地址。