imx6: Nand flash BB erase issue/question...

Michael D. Burkey mdburkey at gmail.com
Wed Dec 17 12:05:58 PST 2014


I have run into an issue that I wonder if anyone else has seen.

We have our kernel stored in NAND flash and have it partition and have
the nand0.kernel and nand0.kernel.bb entries.

As I understand it, the nand0.kernel.bb entry is the correct one to
use for day to day operations as it handles bad blocks.

The issue comes when I try erasing the kernel prior to updating it on
a SOM with a known bad block inside the kernel area.

Doing an erase of nand0.kernel works fine and skips the bad block.

Doing an erase of nand0.kernel.bb however generates an error message:

nand: nand_erase_nand: attempt to erase a bad block at page
0x00000bc0

It then exits with an "erase: I/O error".

Specifically, it looks like an attempt to erase a .bb device calls
nand_erase_nand() (in nand_base.c) which then uses
nand_block_checkbad() to determine if the block is bad and then just
generates an error exit rather than attempting to skip the bad block.

To me, this seems wrong.

Shouldn't an attempt to erase a .bb NAND device actually HANDLE the
bad blocks by skipping them rather than simply erroring out?

Thanks,
Michael Burkey



More information about the barebox mailing list