- 论坛徽章:
- 0
|
回复 #4 zhlyp 的帖子
是的,mtd为了兼容X16和X8,干脆直接判断坏块位置开始的(2K页是oob的byte0位置)的两个字节。
实际上,如果只是针对X8的nand flash,是只需要判断一个字节的:
512B的页是oob开始的第六个字节,2K/4K。。。的页是oob开始的第一个字节
因为,nand flash出厂的时候,如果是坏块,其标记,也只是1个字节,标成非0xFF,说明是坏块。
此处多说一句,最近刚了解到的信息:
对于坏块标记的位置的问题,对于2K页的nand flash,标记位置都是页内oob开始处,都是非0xFF表示坏块,
但是,对于是第几页,不同nand flash就有不同的规定了:
有些nand flash,是标记在坏块的第一个页(或者是第二个页,这点是考虑到,万一第一个页是坏的,所以才做此规定的。一般都是在第一个页处做标记),比如三星的多数SLC,Hynix等
另一些,是在一个块内的最后一页或倒数第二页做此标记,比如samsung MLC , Numonyx等
所以,真正比较完整的检查坏块的做法,至少要检测块内第一,第二,倒数第一,倒数第二页,是否是0xFF,才能比较全名的判断是否是坏块的。
有空再更新上面的文档,把新东西加进去。 |
|