Kousha Kousha - 5 months ago 50
Linux Question

uEnv.txt vs boot.scr

I'm very confused on these two files for the boot configuration. They seem to be doing the same thing and I don't understand why I would need either or.

If I use

uEnv.txt
, I set it as

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


Alternatively, I can create
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 ...

Answer

It's very platform-dependent. To see what's controlling the boot process, get to u-boot prompt (hit on serial port) before kernel boot starts. Then

printenv

will show the environment. Here is an excerpt from sunxi/u-boot of environment with commands which try different fatload sources in turn, until one works

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}; \

... more options follow

A default environment is hardcoded in each platform U-Boot source.

Comments