uEnv.txt与boot.scr的区别

8

我对于这两个引导配置文件感到很困惑。它们似乎在做同样的事情,但我不明白为什么我需要其中一个。

如果我使用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

And they both work ...

2个回答

9

它们确实有不同的角色:

  • uEnv.txt允许在运行bootcmd之前预设U-Boot环境变量的值。
  • boot.scr允许在运行bootcmd之前运行U-Boot脚本文件。

显然,您可以在脚本文件中设置环境值,从某种程度上说,功能会重叠。

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


5

这与平台有关。要查看控制引导过程的内容,在内核启动之前,进入u-boot提示符(通过串口按下 )。

printenv

将显示环境。这里是一个摘录,来自sunxi/u-boot的环境与命令,按顺序尝试不同的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源代码中都硬编码了一个默认环境。


所以它们基本上做同样的事情,我只需要创建其中一个文件即可。 - Kousha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接