From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashi Kumar M.S Date: Thu, 28 Jan 2010 21:19:37 +0530 Subject: [U-Boot] How to use multiple env variables. References: <00f001ca9fe8$011da6f0$a5206c6b@semco> <20100128094308.GA2220@localhost.localdomain> Message-ID: <006201caa031$81daeb10$a5206c6b@semco> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi, Thanks for the reply at the earliest. One doubt. Where should this variable swapos should be. 1. should this "swapos" be in one of the separate partition of the nand flash so that can be set by the kernel. 2. or is it a u-boot environment variable set by the kernel (reading the u-boot env from the kernel and updating the "swapos" env) after the copy of new kernel and ramdisk done. Thanks and Regards Shashi. ----- Original Message ----- From: "Ladislav Michl" To: "Shashi Kumar M.S" Cc: Sent: Thursday, January 28, 2010 3:13 PM Subject: Re: [U-Boot] How to use multiple env variables. > On Thu, Jan 28, 2010 at 12:30:54PM +0530, Shashi Kumar M.S wrote: >> Is there any option for multiple env variables so that when i upgrade the >> kernel and rootfile system if not working properly so that i can fall >> back to >> the previous kernel and ramdisk considering i have a sufficiently big >> nand >> with required number of partition. > > Something like this works for me: > Two env variables controls from where to boot: 'ospart' indicating > partition > number and 'swapos' saying that there is new firmware pending. > Consider NAND partitions kernel0, rootfs0, kernel1 and rootfs1. System is > running from kernel1 and rootfs1 (ospart=1). Now write new system to > kernel0 > and rootfs0 and set variable 'swapos', then reboot system. U-Boot then > executes > if test -n $swapos; then > setenv swapos; saveenv; > if test $ospart -eq 0; then > setenv ospart 1; > else > setenv ospart 0; > fi; > fi > and constructs kernel cmdline "root=mtd:rootfs$ospart" > and then loads kernel with "nboot kernel$ospart" > > Inside some OS boot script it is then discovered that system is running > from diferent partition than saved in environment (we cleared 'swapos' > env variable, but new 'ospart' was to saved to permanent storage) and > after finding itself in sane state (based on self check or user's > interaction) it sets 'ospart' in environment accordingly. Otherwise > reboot is performed (based on watchdog, user's interaction...) and > original OS version is loaded (as 'ospart' remains intact). > > Best regards, > ladis