Part Number: AM3354
Tool/software: Linux
Hi:
i was recently trying to study how AM3354 linux BSP works on the nand flash bad block management.
we are using AM3354 and we are using kernel 4.4.32 extracted from ti sdk 03.02.00.05.
we also use the kernel 3.2.0 extract from ti sdk 06.00.00.00 for some older products.
Now i found a strange thing that i can not understand regarding nand flash bad block management.Either kernel 3.2.0 or 4.4.32 have the same behavior on this.
when the kernel is starting.I suppose it should look for the nand flash bad block table .Right? find out where it's located.And be able to update the table when the block_markbad() function is called in the future when a new bad block is discovered.
But strange thing is:
in drivers/mtd/nand/omap2.c omap_nand_probe()
after nand_scan_tail() is called. the nand driver did not call nand_default_bbt() to scan the bbt.Or disable the NAND_SKIP_BBTSCAN flag.
instead it defines in the omap_nand_probe():
info->nand.options |= NAND_SKIP_BBTSCAN;
to skip the scan.thus nand_scan_tail() will not call default scan_bbt callback and also the driver itself did not call scan_bbt independently.
i have products running on freescale cpu.and their driver will call nand_default_bbt() in the probe function of the driver.And when kernel is starting.I can see something in the kernel starting log like this:
Bad block table found at page 131008, version 0x01
Bad block table found at page 130944, version 0x01
So my questions .without calling the nand_default_bbt() . (both 3.2.0 kernel and 4.4.32 kernel) How is the bad block managed by kernel in the AM3354 BSP?
thank you
yan dong