From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anders Larsen Date: Fri, 07 Jul 2006 16:13:32 +0200 Subject: [U-Boot-Users] Wrong location of environment. Copy environment, substitute variables? References: <1152280943.19463.49.camel@localhost.localdomain> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Fri, 07 Jul 2006 17:02:23 +0300, Andrew Zhukov wrote: > I have at91rm9200dk with SPI DataFlash only (without Flash), u-boot > 1.1.4, kernel 2.6.10. > > I'd like the kernel to use u-boot's "bootargs" as cmdline. To use > u-boot's data the kernel should know its absolute locations... > I see the kernel expects environment at TEXT_BASE + 0x100 (that's > 20000100), but u-boot places environment at 21ede00c (result of function > env_get_addr(0)). I believe the last will move if I edit smth in u-boot. > > Summary: in function do_bootm (where u-boot starts loading the kernel), > I should copy the whole environment to the area starting from location > 20000100. > > Is this right way? No no no! The kernel expects a tagged list of parameters at 0x20000100; this list includes - among other values - the contents of "bootargs" tagged as command-line "ATAG_CMDLINE" (only the contents of bootargs is copied; other u-boot environment variables are not). This already works out-of-the-box. > Trouble: bootm doesn't substitute variables (${ipaddr} ${serverip} > etc.). I should copy-substitute. There should be a function for > substitution - does anybody know? With the hush parser you can use a trick like e.g. setenv bootcmd setenv bootargs ip=${ipaddr} ... \; bootm 0x10040000 'boot' will then set the bootargs variable just prior to booting. Cheers Anders