[U-Boot] Question about U-Boot env variable substitution

Wolfgang Denk wd at denx.de
Tue May 1 20:30:46 CEST 2012


Dear David Aldrich,

In message <41302A7145AC054FA7A96CFD03835A0A114C7F at EX10MBX02.EU.NEC.COM> you wrote:
> 
> I would be grateful for some help with environment variable substitution in U-Boot please.

Make sure to read the manual, and the FAQ section, especially
http://www.denx.de/wiki/view/DULG/CommandLineParsing

> I have:
> 
> => printenv
> [snip]
> bootargs=console=ttyS0,115200 root=/dev/nfs rw ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off nfsroot=${serverip}:${rootpath} 
...
> When I leave the system to autoboot I see:
> 
> [    0.000000] Kernel command line: console=ttyS0,115200 root=/dev/nfs rw ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off nfsroot=${serverip}:${rootpath}
> 
> So environment variable substitution is not happening.

Why (and where) should it happen?  The "bootm" command will just pass
the content of the "bootargs" variable as command line to the Linux
kernel - it will not modify it in any way.

If you want variable substitution to take place, you must invoce the
shell - one way or another.  The recommended and usually most
efficient way is to (iteratively) build the kernel command line (i. e.
the bootargs variable) dynamically; in this process you also get the
variables substituted as you want it.

See the examples in the manual, or many of the built-in default
environment settings, for example in "include/configs/amcc-common.h"


Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Why is an average signature file longer than an average Perl script??


More information about the U-Boot mailing list