From: Detlev Zundel <dzu@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] Boot based on I2C EEPROM value
Date: Thu, 18 Feb 2010 13:52:48 +0100 [thread overview]
Message-ID: <m2k4uabt9b.fsf@ohwell.denx.de> (raw)
In-Reply-To: <E3B2C7C726B07C4FA70FFAED2C8A2E6AB9DCA9@owa.usmonolithics.com> (Srivatsan Canchivaram's message of "Wed, 17 Feb 2010 15:59:10 -0800")
Hi Srivatsan,
> The modem I am working on contains two software images in flash memory:
>
> 1. Default image
> 2. Backup image
>
>
>
> Typically, the Default image will get loaded. If the application
> software determines that the Default image is causing issues, it will
> set a value of 1 in an address in the I2C EEPROM and reboot the board.
>
>
>
> So, U-boot will need to read this EEPROM value and determine whether it
> should boot the Default or Backup image i.e.
>
>
>
> if EEPROM data == 0
>
> bootm $default_addr
>
> else
>
> bootm $backup_addr
>
>
>
> How can I read and parse the EEPROM data from U-boot?
>
>
>
> U-boot has the facility to read the I2C device from the command line as
> in (EEPROM dev num = 50, address = 2, count = 1):
>
> => i2c md 50 2 1
>
> 0002: 01 .
>
>
>
> How do I parse this from within a U-boot command that can be run at
> boot-up?
Ah, this is interesting. I was about to tell you to use the "standard"
i2c commands to transfer data from the chip into memory and then use the
hush shell and the standard "itest *addr = 1" facility. Unfortunately,
the "i2c" subsystem does not implement such functionality. So currently
I would advise to implement such "read" and "write" operations to
transfer to/from memory.
With this addition, you could even propose a patch to remove crc32
subcommand from i2c as this can then be done in two steps. So maybe you
can even get away with this addition without adding anything to the
binary size of U-Boot ;)
Then itest would work like this:
=> md.b 0x200000 1
00200000: 00 .
=> if itest *0x200000 -eq 0 ; then echo zero;else echo not zero; fi
zero
=> mw.b 0x200000 1 1
=> md.b 0x200000 1
00200000: 01 .
=> if itest *0x200000 -eq 0 ; then echo zero;else echo not zero; fi
not zero
=>
Cheers
Detlev
--
An elephant is a mouse with an operating system.
-- Donald Knuth
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
next prev parent reply other threads:[~2010-02-18 12:52 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-17 23:59 [U-Boot] Boot based on I2C EEPROM value Canchivaram, Srivatsan
2010-02-18 12:52 ` Detlev Zundel [this message]
2010-02-18 13:11 ` Detlev Zundel
2010-02-18 22:51 ` Canchivaram, Srivatsan
2010-02-18 23:16 ` 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=m2k4uabt9b.fsf@ohwell.denx.de \
--to=dzu@denx.de \
--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