[U-Boot] NAND bad environment block handling
Frans Meulenbroeks
fransmeulenbroeks at yahoo.com
Sun Jan 11 14:26:12 CET 2009
Manfred,
Thanks for your suggestions.
Did you modify u-boot to search from the last block of the device backwards?
I feel putting the env at the end is quite a good idea.
Unfortunately in our system we need to modify the env at runtime.
For software upgrade we aim to go for a ping pong strategy (so having two kernels and two rfs-es in flash, and upgrade the non active kernel, then modify u-boot env so the next time we boot from the upgraded kernel).
Unless of course there is a better strategy for this.
Best regards, Frans.
--- On Sun, 1/11/09, Schlaegl Manfred jun. <manfred.schlaegl at gmx.at> wrote:
> From: Schlaegl Manfred jun. <manfred.schlaegl at gmx.at>
> Subject: Re: [U-Boot] NAND bad environment block handling
> To: fransmeulenbroeks at yahoo.com
> Cc: u-boot at lists.denx.de
> Date: Sunday, January 11, 2009, 12:10 PM
> Hi!
> Am Donnerstag, den 08.01.2009, 07:19 -0800 schrieb Frans
> Meulenbroeks:
> >
> > Has someone experience in this area? Ideas?
> Suggestions?
>
> 1. For our systems we assume, that the env-block never gets
> bad in
> productive use, because the env-block is never written
> again. So we
> reduced the problem to number of initial/factory bad
> blocks.
> 2. the partitioning and environment-saving is done at
> production-time.
> 3. we put the environment in the last good block of the
> device. The
> search starts at the end of device and ends at the last
> block of the
> last data-partition with an error.
>
>
> Example-Partition-Table on an 32MB-NAND, with blocksize
> 16kb and max. 45
> factory bad-blocks:
> * the part-size means the possible data size (without
> bad-blocks).
> * the real partition-size on device depends on the
> bad-blocks in this
> the partition and is calculated automatically at
> production-time
> (partition generation).
>
> part-size partition
> 200kb: uboot
> 1000kb: kernel
> 15000kb: rootfs
> 15832kb: datafs
> rest of device: rest (maximal 45*16kb (max bad blocks) +
> 16bk (envblock)
> = 736kb
>
> with an increasing number of initial/factory bad-blocks the
> rest-partition shrinks. So the env-block can be written on
> any
> nand-device without less than 45 (initial/factory)
> bad-blocks.
>
>
> >
> > Thanks alot!
> > Frans Meulenbroeks
> >
>
> - Manfred
More information about the U-Boot
mailing list