nand flash中,一个块中含有1个或多个位是坏的,就成为其为坏块。
坏块的稳定性是无法保证的,也就是说,不能保证你写入的数据是对的,或者写入对了,读出来也不一定对的。而正常的块,肯定是写入读出都是正常的。
坏块有两种:
(1)一种是出厂的时候,也就是,你买到的新的,还没用过的nand flash,就可以包含了坏块。此类出厂时就有的坏块,被称作factory (masked)bad block或initial bad/invalid block,在出厂之前,就会做对应的标记,标为坏块。
具体标记的地方是,对于现在常见的页大小为2k的nand flash,是块中第一个页的oob起始位置(关于什么是页和oob,下面会有详细解释)的第1个字节(旧的小页面,pagesize是512b甚至256b的nand flash,坏块标记是第6个字节),如果不是0xff,就说明是坏块。相对应的是,所有正常的块,好的块,里面所有数据都是0xff的。
(2)第二类叫做在使用过程中产生的,由于使用过程时间长了,在擦除块的时候,出错了,说明此块坏了,也要在程序运行过程中,发现,并且标记成坏块的。具体标记的位置,和上面一样。这类块叫做worn-out bad block。
对于坏块的管理,在linux系统中,叫做坏块管理(bbm,bad block managment),对应的会有一个表去记录好块,坏块的信息,以及坏块是出厂就有的,还是后来使用产生的,这个表叫做 坏块表(bbt,bad block table)。在linux内核mtd架构下的nand flash驱动,和uboot中nand flash驱动中,在加载完驱动之后,如果你没有加入参数主动要求跳过坏块扫描的话,那么都会去主动扫描坏块,建立必要的bbt的,以备后面坏块管理所使用。
而关于好块和坏块,nand flash在出厂的时候,会做出保证:
1.关于好的,可以使用的块的数目达到一定的数目,比如ato的afnd1g08u3,整个flash一共有1024个块,出厂的时候,保证好的块至少大于1004个,也就是意思是,你新买到这个型号的nand flash,最坏的可能,有1024-1004=20个坏块。不过,事实上,现在出厂时的坏块,比较少,绝大多数,都是使用时间长了,在使用过程中出现的。
2.保证第一个块是好的,并且一般相对来说比较耐用。做此保证的主要原因是,很多nand flash坏块管理方法中,就是将第一个块,用来存储上面提到的bbt,否则,都是出错几率一样的块,那么也就不太好管理了,连放bbt的地方,都不好找了,^_^。
一般来说,不同型号的nand flash的数据手册中,也会提到,自己的这个nand flash,最多允许多少个坏块。就比如上面提到的,ato的afnd1g08u3,最多有20个坏块。
对于坏块的标记,本质上,也只是对应的flash上的某些字节的数据是非0xff而已,所以,只要是数据,就是可以读取和写入的。也就意味着,可以写入其他值,也就把这个坏块标记信息破坏了。对于出厂时的坏块,一般是不建议将标记好的信息擦除掉的。
uboot中有个命令是“nand scrub”就可以将块中所有的内容都擦除了,包括坏块标记,不论是出厂时的,还是后来使用过程中出现而新标记的。一般来说,不建议用这个。不过,我倒是经常用,其实也没啥大碍,呵呵。
最好用“nand erase”只擦除好的块,对于已经标记坏块的块,不擦除。
三维动态下对机器人设计中的实操运用
基于TMS320C6701浮点DSP芯片来实现线性调频信号的
华为荣耀V9买不买?就看这篇荣耀V9高清上手图赏
USB 3.1与第一代与第二代 USB 3.1 之间的差异
小基站,5G边缘计算时代的新入口
Nand Flash中的坏块(Bad Block)
旷视科技举办3D视觉产业先锋研讨会
Vive Focus VR一体机评测:将支持4G移动网络?
PCB中的金手指是什么
安森美半导体荣获延锋伟世通颁发2012年度“最佳项目合作奖”
润和软件遭停牌 散户8天买554亿 鸿蒙概念股龙头润和软件重大消息停牌核查
小米5c、红米4X齐发!都是超高性价比怎么选?
什么是计数器芯片?
苹果官网:未经授权改装iOS负面影响
了解千兆光模块和万兆光模块的优势与劣势
Chrome OS 77的Canary Channel中发现了两项新功能
普渡科技消毒机器人“欢乐消2”用科技力量助力疫情防控
施耐德电气助力小米集团建设高效节能数据中心
动起来!涂鸦智能发布运动健康产品解决方案
凌力尔特的隔离器μModule ®转换器是断开接地环路紧凑的解决方案