您好,登錄后才能下訂單哦!
nand flash壞塊管理OOB,BBT,ECC
0.NAND的操作管理方式 NAND FLASH的管理方式:以三星FLAHS為例,一片Nand flash為一個設備(device),1 (Device) = xxxx (Blocks),1 (Block) = xxxx (Pages),1(Page) =528 (Bytes) = 數據塊大小(512Bytes) + OOB 塊大小(16Bytes,除OOB第六字節外,通常至少把OOB的前3個字節存放Nand Flash硬件ECC碼)。 1.為什么會出現壞塊 2.壞塊的分類 3.壞塊管理 可以用BBT:bad block table,即壞塊表來進行管理。各家對nand的壞塊管理方法都有差異。比如專門用nand做存儲的,會把bbt放到block0,因為第0塊一定是好的塊。但是如果nand本身被用來boot,那么第0塊就要存放程序,不能放bbt了。有的把bbt放到最后一塊,當然,這一塊堅決不能為壞塊。bbt的大小跟nand大小有關,nand越大,需要的bbt也就越大。 ECC:NAND Flash出錯的時候一般不會造成整個Block或是Page不能讀取或是全部出錯,而是整個Page(例如512Bytes)中只有一個或幾個bit出錯。一般使用一種比較專用的校驗——ECC。ECC能糾正單比特錯誤和檢測雙比特錯誤,而且計算速度很快,但對1比特以上的錯誤無法糾正,對2比特以上的錯誤不保證能檢測。 (3)為什么好塊用0xff來標記?因為Nand Flash的擦除即是將相應塊的位全部變為1,寫操作時只能把芯片每一位(bit)只能從1變為0,而不能從0變為1。0XFF這個值就是標識擦除成功,是好塊。
由于NAND Flash的工藝不能保證NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生產中及使用過程中會產生壞塊。壞塊的特性是:當編程/擦除這個塊時,會造成Page Program和Block Erase操作時的錯誤,相應地反映到Status Register的相應位。
總體上,壞塊可以分為兩大類:(1)固有壞塊:這是生產過程中產生的壞塊,一般芯片原廠都會在出廠時都會將每個壞塊第一個page的spare area的第6個byte標記為不等于0xff的值。(2)使用壞塊:這是在NAND Flash使用過程中,如果Block Erase或者Page Program錯誤,就可以簡單地將這個塊作為壞塊來處理,這個時候需要把壞塊標記起來。為了和固有壞塊信息保持一致,將新發現的壞塊的第一個page的 spare area的第6個Byte標記為非0xff的值。
根據上面的這些敘述,可以了解NAND Flash出廠時在spare area中已經反映出了壞塊信息,因此,如果在擦除一個塊之前,一定要先check一下第一頁的spare area的第6個byte是否是0xff,如果是就證明這是一個好塊,可以擦除;如果是非0xff,那么就不能擦除,以免將壞塊標記擦掉。當然,這樣處理可能會犯一個錯誤―――“錯殺偽壞塊”,因為在芯片操作過程中可能由于電壓不穩定等偶然因素會造成NAND操作的錯誤。但是,為了數據的可靠性及軟件設計的簡單化,還是需要遵照這個標準。
4.壞塊糾正
ECC一般每256字節原始數據生成3字節ECC校驗數據,這三字節共24比特分成兩部分:6比特的列校驗和16比特的行校驗,多余的兩個比特置1。(512生成兩組ECC?)
當往NAND Flash的page中寫入數據的時候,每256字節我們生成一個ECC校驗和,稱之為原ECC校驗和,保存到PAGE的OOB(out-of-band)數據區中。其位置就是eccpos[]。校驗的時候,根據上述ECC生成原理不難推斷:將從OOB區中讀出的原ECC校驗和新ECC校驗和按位異或,若結果為0,則表示不存在錯(或是出現了ECC無法檢測的錯誤);若3個字節異或結果中存在11個比特位為1,表示存在一個比特錯誤,且可糾正;若3個字節異或結果中只存在1個比特位為1,表示OOB區出錯;其他情況均表示出現了無法糾正的錯誤。
5.補充
(1)需要對前面由于Page Program錯誤發現的壞塊進行一下特別說明。如果在對一個塊的某個page進行編程的時候發生了錯誤就要把這個塊標記為壞塊,首先就要把塊里其他好的面的內容備份到另外一個空的好塊里面,然后,把這個塊標記為壞塊。當然,這可能會犯“錯殺”之誤,一個補救的辦法,就是在進行完塊備份之后,再將這個壞塊擦除一遍,如果Block Erase發生錯誤,那就證明這個塊是個真正的壞塊,那就毫不猶豫地將它打個“戳”吧!
(2)可能有人會問,為什么要使用每個塊第一頁的spare area的第六個byte作為壞塊標記。這是NAND Flash生產商的默認約定,你可以看到Samsung,Toshiba,STMicroelectronics都是使用這個Byte作為壞塊標記的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。