Way to clear nand bad block table
Marc Reilly
marc at cpdesign.com.au
Thu Jul 26 21:24:48 EDT 2012
Hi Juergen,
Thanks for your ideas.
I managed to clear the BBT, it was a bit of a hack... the saga is below for
anyone who runs into similar problem.
On Thursday, July 26, 2012 11:27:48 AM Juergen Beisert wrote:
> The flash blocks which contains the "bad block table" are protected by
> the "bad block table" aware MTD layer.
>
> So, the ugly way: run a bootloader which does not use the in-flash bad block
> table. Then the tables are regular blocks in the flash and can be erased.
> After that run again the bad block table aware bootloader and it will
> re-create the in-flash table. But be careful: In this case the generic
> functions scans all blocks in the NAND to collect the bad block markers in
> each NAND block's OOB. If this information is already destroyed somehow,
> this solution does not help.
Recompiling barebox with bbt support disabled stopped the all the bad block
messages, however erasing the nand didn't clear the BBT for subsequent
reboots...
The issue was that the erase commands and functions skip erasing bad blocks,
and the blocks that held the actual BBT were being considered bad, so they
weren't getting erased. After commenting out calls to nand_block_checkbad() in
nand_write.c and block_isbad() in mtd_erase()/core.c I was able to manually
erase the blocks. (erasing actual bad blocks results in I/O error)
Next restart of barebox the BBT was regenerated with the two actual bad
blocks.
After all that, I noticed imx_low_erase() in nand_imx.c. Probably would have
been easier to make up a command around that.
Cheer,s
Marc
More information about the barebox
mailing list