
Hi Matthew,
On Tuesday 18 September 2007, MatthewLCreech@eaton.com wrote:
- How does U-Boot handle a bad block in the area where the environment
is stored? I can create a second environment via CFG_ENV_OFFSET_REDUND, but that's not very flexible (what if the primary and the backup are both bad blocks?) I also need to write to the environment from within Linux via the "fw_setenv" utility, but it doesn't seem to have any NAND awareness.
You could be right here. The bad block handling in the NAND environment is not perfect. If both blocks of the environment are bad (primary & redundant) then we really have a problem.
There was a patch sent to the list a few months ago (IIRC, from the Openmoko project), that addressed this problem. Unfortunately I didn't find the time till now to take a deeper look at it.
- It's not obvious to me how U-Boot reacts when it encounters a bad
block. If I'm copying a kernel image out of NAND, and a bad block is encountered, does it skip to the next block?
There are both option:
a) Bad blocks are not skipped and writted as 0xff in memory b) Bad blocks are skipped upon read from NAND
I personally never used a) and always use b).
If so, do I need to compensate by padding each partition with unused blocks, or how else does addressing work?
Yes, you have to add some reserve to your partitions size for bad blocks that could occur.
Similarly for writes - if I do "nand write <memaddr> <location> 100000", and the first block is bad, will U-Boot write all 0x100000 bytes _after_ that block?
Yes.
- Can Linux handle bad blocks in the same manner? Specifically, I need
to use 'nandwrite' to copy a kernel image to an MTD partition from within Linux, and have U-Boot read the image correctly on bootup, both in the presence of bad blocks and bit-flips.
Sure, this works the same way.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================