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

Hi
I would be grateful for some help with environment variable substitution in U-Boot please.
I have:
=> printenv [snip] bootargs=console=ttyS0,115200 root=/dev/nfs rw ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off nfsroot=${serverip}:${rootpath} [snip] bootcmd=run flashboot_nohv_mount_nfs [snip] flashboot_nohv_mount_nfs=setenv bdev /dev/ram; run bootargs; bootm $kern_flash $rfs_flash $fdt_flash [snip]
ipaddr etc. are also defined.
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.
What am I doing wrong please?
Best regards
David

I have fixed this now.
Best regards
David
-----Original Message----- From: u-boot-bounces@lists.denx.de [mailto:u-boot- bounces@lists.denx.de] On Behalf Of David Aldrich Sent: 01 May 2012 13:29 To: u-boot@lists.denx.de Subject: [U-Boot] Question about U-Boot env variable substitution
Hi
I would be grateful for some help with environment variable substitution in U-Boot please.
I have:
=> printenv [snip] bootargs=console=ttyS0,115200 root=/dev/nfs rw ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:of f nfsroot=${serverip}:${rootpath} [snip] bootcmd=run flashboot_nohv_mount_nfs [snip] flashboot_nohv_mount_nfs=setenv bdev /dev/ram; run bootargs; bootm $kern_flash $rfs_flash $fdt_flash [snip]
ipaddr etc. are also defined.
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}:of f nfsroot=${serverip}:${rootpath}
So environment variable substitution is not happening.
What am I doing wrong please?
Best regards
David _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Click https://www.mailcontrol.com/sr/uUXZRz9yae3TndxI!oX7UqMEQvnfkQd8ps QMlLDSuzukDtsZfzt9rhAxPsYhMyihXvjKACHTr5IsQNbByDSe6A== to report this email as spam.

Dear David Aldrich,
In message 41302A7145AC054FA7A96CFD03835A0A114C7F@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
participants (2)
-
David Aldrich
-
Wolfgang Denk