2010年10月22日星期五

MTD如何判断NAND flash坏块

nand_block_bad()在nand_base.c中定义,它是NAND MTD的通用函数,用于坏块的判断。市面上现有的NAND flash都是在page的spare area开始部分标记是否是坏块。
Spare area在MTD中就对应的是OOB,所以猜测一下,nand_block_bad()会读取OOB,然后对标记进行检测。

代码一看果然如此。
先通过cmdfunc来个NAND_CMD_READOOB,再来个read_byte把标记读出来,判断是不是0xFF就知道是不是坏块儿了。

struct nand_chip结构体的函数指针表中的block_bad默认就是指向这个函数。

没有评论: