public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Ladislav Michl <Ladislav.Michl@seznam.cz>
To: u-boot@lists.denx.de
Subject: [U-Boot] How to use multiple env variables.
Date: Thu, 28 Jan 2010 10:43:08 +0100	[thread overview]
Message-ID: <20100128094308.GA2220@localhost.localdomain> (raw)
In-Reply-To: <00f001ca9fe8$011da6f0$a5206c6b@semco>

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

  reply	other threads:[~2010-01-28  9:43 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-28  7:00 [U-Boot] How to use multiple env variables Shashi Kumar M.S
2010-01-28  9:43 ` Ladislav Michl [this message]
2010-01-28 15:49   ` Shashi Kumar M.S
2010-01-28 17:11     ` Ladislav Michl
2010-01-28  9:44 ` Wolfgang Denk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100128094308.GA2220@localhost.localdomain \
    --to=ladislav.michl@seznam.cz \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox