【问题标题】:Creating boot.scr for u-boot为 u-boot 创建 boot.scr
【发布时间】:2015-06-03 06:26:35
【问题描述】:

我使用 Yocto 为飞思卡尔 i.mx6 sabresd 生成图像。 启动时,要激活 hdmi,我必须通过编辑 bootargs 来修改 u-boot。我使用以下命令:

setenv mmcargs 'setenv bootargs console=ttymxc0,115200 root=/dev/mmcblk2p2 rootwait rw video=mxcfb0:dev=hdmi, 1920x1080M@60, if=RGB24'

我可以使用saveenv 在每次启动时不输入它,但我想自动化它以使部署更容易。所以我做了一个boot.scr。这是 boot.txt :

setenv mmcargs 'setenv bootargs console=ttymxc0,115200 root=/dev/mmcblk2p2 rootwait rw video=mxcfb0:dev=hdmi, 1920x1080M@60, if=RGB24'
boot

我使用mkimage -A arm -T script -O linux -d boot.txt boot.scr 创建了 boot.scr。但是,在启动时,它会产生一个循环(boot make uboot 重新加载配置,它会读取boot 所以它会重新开始)。没有boot... 没有启动。我尝试了很多可能性:boot 0x120000000bootmbootz,有很多选择,但没有任何效果。

【问题讨论】:

    标签: linux boot u-boot yocto


    【解决方案1】:

    很可能,您的启动失败是因为您从未加载可以从中启动的内核。

    在大多数情况下,如果 bootcmd 加载 boot.scr,则由您的 boot.scr 脚本来加载内核(假设您使用的是最新的 iMX6 内核,还有设备树)。然后你的脚本可以使用这个内核启动,或者允许 bootcmd 使用加载的内核继续它的启动顺序。加载命令看起来像:

    loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
    loaduimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}
    

    启动命令应该类似于:

    run loaduimage; run loadfdt; bootm ${loadaddr} - ${fdt_addr}
    

    您可能已经定义了一个 mmcboot 命令来处理这些问题。

    我会从你的脚本中删除“boot”行,而是加载内核和设备树,然后运行 ​​bootm(或 mmcboot)——基本上是在设置 mmcarg 后尝试将上述三行添加到你的脚本中——你需要确保正确设置所有引用的变量(即 mmcdev、mmpart 等)。

    【讨论】:

      【解决方案2】:

      使用 shibley 的答案,我找到了一种更简单的方法:

      run loadimage
      run mmcboot
      

      他是对的,mmcboot 负责内核的引导。但我必须运行loadimage(之前不是loaduimage)

      【讨论】:

        猜你喜欢
        • 2017-01-22
        • 2020-06-26
        • 2021-05-12
        • 1970-01-01
        • 1970-01-01
        • 2011-06-28
        • 1970-01-01
        • 2019-04-03
        • 2021-01-18
        相关资源
        最近更新 更多