Linux uEnv.txt vs boot.scr

Linux uEnv.txt vs boot.scr,linux,bootloader,u-boot,Linux,Bootloader,U Boot,我对这两个引导配置文件感到非常困惑。他们似乎在做同样的事情,我不明白为什么我需要或 如果我使用uEnv.txt,我将其设置为 bootargs=console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 ${extra} aload_script=fatload mmc 0 0x43000000 script.bin; aload_kernle=fatload mmc 0 0x48000000 uImage; bootm 0x43000

我对这两个引导配置文件感到非常困惑。他们似乎在做同样的事情,我不明白为什么我需要或

如果我使用
uEnv.txt
,我将其设置为

bootargs=console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 ${extra}
aload_script=fatload mmc 0 0x43000000 script.bin;
aload_kernle=fatload mmc 0 0x48000000 uImage;  bootm 0x43000000 - 0x48000000;
uenvcmd=setenv run aload_script aload_kernel
或者,我可以创建
boot.cmd

setenv bootargs console=console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 ${extra}
fatload mmc 0 0x43000000 script.bin
fatload mmc 0 0x48000000 uImage
bootm 0x48000000

它们都能工作…

这非常依赖于平台。要查看是什么控制了引导过程,请在内核引导开始之前进入u-boot提示符(点击串口)。然后

printenv
将展示环境。下面是环境的一个摘录,其中的命令依次尝试不同的fatload源,直到其中一个可用

bootscr=boot.scr
bootenv=uEnv.txt
loadbootscr=fatload mmc 0 ${scriptaddr} ${bootscr} || ext2load mmc 0 ${scriptaddr} ${bootscr} || ext2load mmc 0 ${scriptaddr} boot/${bootscr}
loadbootenv=fatload mmc 0 ${scriptaddr} ${bootenv} || ext2load mmc 0 ${scriptaddr} ${bootenv} || ext2load mmc 0 ${scriptaddr} boot/${bootenv}
boot_mmc=fatload mmc 0 0x43000000 script.bin && fatload mmc 0 0x48000000 ${kernel} && watchdog 0 && bootm 0x48000000
bootcmd=if run loadbootenv; then \
                echo Loaded environment from ${bootenv}; \
                env import -t ${scriptaddr} ${filesize}; \
。。。接下来还有更多的选择


默认环境在每个平台U-Boot源代码中都是硬编码的。

嗯,它们有不同的角色:

  • uEnv.txt允许在运行bootcmd之前预设U-Boot环境变量值
  • 在运行bootcmd之前,boot.scr允许运行U-boot脚本文件
因此,很明显,您可以在脚本文件中设置环境值,以达到功能重叠的程度


但是,如果您只想设置一些env值(例如用于线路板ID),那么使用uEnv.txt是最简单的方法。

因此,它们的作用基本相同,我只需要创建其中一个文件。