如何将“坏块”进行有效利用
被广泛应用于手机、平板等数码设备中的Nand Flash由于工艺原因无法避免坏块的存在,但是我们可以凭借高科技变废为宝,将“坏块”进行有效的利用,从而满足我们的应用需求,让坏块不“坏”。
本文引用地址://m.amcfsurvey.com/article/201610/311611.htm要想变废为宝,有效利用坏块。我们首先要弄明白什么是“坏块”,做到知己知彼,才能为我所用。坏块的特点是当编程或者擦除这个块时,不能将某些位拉高,从而造成编程和块擦除操作时的错误,这种错误可以通过状态寄存器的值反映出来。这些无效块无法确定编程时的状态,就是大家常说的“坏块”。那么这些“坏块”是怎么产生的呢?
![](http://m.amcfsurvey.com/editerupload/201610/7c6f6ae9539539decbe12650b1a11552.png)
图1 坏块示意图
由于工艺上的问题,Nand Flash中不可避免的会出现出厂坏块(出厂时允许存在2%数量的坏块),同时在Nand Flash的使用过程中也会产生新的坏块。Nand Flash每个块的最大擦除次数大约为100万次,如果超过这个次数,也会变成坏块。除了上述情况之外,坏块的产生原因还有很多,比如存储单元错误、地址线错误等……
那么重点来了,既然不能完全地消除“坏块”,那么我们可以选择将它利用起来,实现一些特殊且必要的功能。为什么说能将坏块“变废为宝”呢?除了上文中介绍的几种类型的坏块,我们在一些特殊情况下需要人为地将Nand Flash芯片的某些块标记为坏块。比如某块非常不稳定以致超出了系统ECC的纠错范围,这个时候需要将此块标记为坏块;或者我们想验证烧写方案的坏块处理部分是否正确时,也需要制作出一些坏块以供测试验证;还有为了满足某类系统的特性,需要制作指定的坏块,比如我们一开始提到的UBI文件系统。这些特殊情况需要我们有目的性的设置指定坏块,满足相应的需求。
清楚了什么是坏块以及坏块是怎么产生的,那么我们下面来看看怎么人为地设置坏块,让坏块为我们所用,达到“变废为宝”的目的
首先,我们要知道什么是芯片的“坏块标记位”(英文简称BI)。对于不同的器件,坏块标志位不尽相同。通常对于512字节/页的NandFlash芯片,坏块标记位在第0、1页(或别的页)备用区的第5个字节,对于2K字节/页的芯片坏块标记位置在第0个字节。
![](http://m.amcfsurvey.com/editerupload/201610/6fa25a5df80b85f2f873671a951428ba.png)
图2 坏块标记位
那么从原理上来说,我们只需要在芯片某块的BI位置按照芯片手册上的规定写入特定的数值,就可以将该块标记为坏块。大部分芯片的坏块标记值为“非0xff”即被认为是坏块,然而有些芯片是“0x00”才被认为是坏块,而且坏块标记所在页也是变化的,所以为了统一,我们使用一个通用有效的方法:将整块写数值0x00。致远电子自主研发的6000F-PLUS编程器及配套的SmartPRO III软件,可以很方便的完成坏块的标记。
评论