被廣泛應(yīng)用于手機,、平板等數(shù)碼設(shè)備中的Nand Flash由于工藝原因無法避免壞塊的存在,,但是我們可以憑借高科技變廢為寶,將“壞塊”進行有效的利用,,從而滿足我們的應(yīng)用需求,,讓壞塊不“壞”,。
要想變廢為寶,有效利用壞塊,。我們首先要弄明白什么是“壞塊”,,做到知己知彼,才能為我所用,。壞塊的特點是當(dāng)編程或者擦除這個塊時,,不能將某些位拉高,從而造成編程和塊擦除操作時的錯誤,,這種錯誤可以通過狀態(tài)寄存器的值反映出來,。這些無效塊無法確定編程時的狀態(tài),就是大家常說的“壞塊”,。那么這些“壞塊”是怎么產(chǎn)生的呢,?
圖1 壞塊示意圖
由于工藝上的問題,Nand Flash中不可避免的會出現(xiàn)出廠壞塊(出廠時允許存在2%數(shù)量的壞塊),,同時在Nand Flash的使用過程中也會產(chǎn)生新的壞塊,。Nand Flash每個塊的最大擦除次數(shù)大約為100萬次,如果超過這個次數(shù),,也會變成壞塊,。除了上述情況之外,壞塊的產(chǎn)生原因還有很多,,比如存儲單元錯誤,、地址線錯誤等……
那么重點來了,既然不能完全地消除“壞塊”,,那么我們可以選擇將它利用起來,,實現(xiàn)一些特殊且必要的功能。為什么說能將壞塊“變廢為寶”呢,?除了上文中介紹的幾種類型的壞塊,,我們在一些特殊情況下需要人為地將Nand Flash芯片的某些塊標(biāo)記為壞塊,。比如某塊非常不穩(wěn)定以致超出了系統(tǒng)ECC的糾錯范圍,,這個時候需要將此塊標(biāo)記為壞塊;或者我們想驗證燒寫方案的壞塊處理部分是否正確時,,也需要制作出一些壞塊以供測試驗證,;還有為了滿足某類系統(tǒng)的特性,需要制作指定的壞塊,,比如我們一開始提到的UBI文件系統(tǒng),。這些特殊情況需要我們有目的性的設(shè)置指定壞塊,滿足相應(yīng)的需求,。
清楚了什么是壞塊以及壞塊是怎么產(chǎn)生的,,那么我們下面來看看怎么人為地設(shè)置壞塊,,讓壞塊為我們所用,達到“變廢為寶”的目的
首先,,我們要知道什么是芯片的“壞塊標(biāo)記位”(英文簡稱BI),。對于不同的器件,壞塊標(biāo)志位不盡相同,。通常對于512字節(jié)/頁的NandFlash芯片,,壞塊標(biāo)記位在第0、1頁(或別的頁)備用區(qū)的第5個字節(jié),,對于2K字節(jié)/頁的芯片壞塊標(biāo)記位置在第0個字節(jié),。
圖2 壞塊標(biāo)記位
那么從原理上來說,我們只需要在芯片某塊的BI位置按照芯片手冊上的規(guī)定寫入特定的數(shù)值,,就可以將該塊標(biāo)記為壞塊,。大部分芯片的壞塊標(biāo)記值為“非0xff”即被認為是壞塊,然而有些芯片是“0x00”才被認為是壞塊,,而且壞塊標(biāo)記所在頁也是變化的,,所以為了統(tǒng)一,我們使用一個通用有效的方法:將整塊寫數(shù)值0x00。致遠電子自主研發(fā)的6000F-PLUS編程器及配套的SmartPRO III軟件,,可以很方便的完成壞塊的標(biāo)記,。