天天看點

Nand Flash壞塊處理

http://m.elecfans.com/article/560407.html

Nand Flash存儲器是Flash存儲器的一種,為固态大容量記憶體的實作提供了廉價有效的解決方案。NAND存儲器具有容量較大,改寫速度快等優點,适用于大量資料的存儲,如嵌入式産品中包括數位相機、記憶卡、體積小巧的U盤等。

1989年,東芝公司發表了Nand Flash結構,強調降低每比特的成本,更高的性能,并且像磁盤一樣可以通過接口輕松更新。經過十幾年的發展,NAND應用越來越廣泛,但是大多數工程師卻仍然不知道關于NAND應用的一些難點:分區、ECC糾錯、壞塊管理等。隻有真正了解NAND特性的工程師,才能在應用上得心應手,不會被Nand Flash所絆倒。

分區

定義分區的實質是定義資料會如何寫入NAND Flash,不同内容的資料寫到對應的位址中。一般使用者會有多個區,比如boot、kernel、fs、user等分區。

分區的描述:分區的位址範圍(起始塊、結束塊),鏡像檔案大小(Image Size)。

分區的資料存儲:鏡像檔案是從分區的起始塊開始存放,如果分區中有壞塊,将使用壞塊處理政策替換壞塊,直到鏡像檔案結束,如果分區中不夠好塊存放鏡像檔案,則燒錄失敗。

如下圖是跳過壞塊的鏡像檔案分區燒寫示意圖:

Nand Flash壞塊處理

ECC(錯誤更正)算法

ECC 存在于NAND 每頁的備用區(Spare Area)中,它允許外部系統發現主區的資料是否有誤。在大多數情況下,ECC 算法可以糾正誤碼,NandFlash在使用中也可能會出現壞塊,是以ECC是非常有必要的。

不同的使用者會可能會使用不同的ECC算法,一般來說ECC算法由處理器供應商提供,如果程式設計器軟體中無這個ECC算法,則需要使用者提供ECC算法源代碼。

如果使用者不使用調入檔案,而是使用讀母片的方式燒錄,并且無動态資料,則可以不考慮ECC算法,因為母片中的備用區已計算好ECC,直接将母片的備用區拷貝至其他晶片即可。

壞塊管理

壞塊處理政策定義了在遇到壞塊時算法應該如何處理,基本的壞塊處理政策有:跳過壞塊、替換表(預留塊區Reserve BlockArea,RBA)等等,下面分别對幾種壞塊處理方案進行說明。

1、硬拷貝

硬拷貝其實就是遇到壞塊什麼都不處理,不管好塊還是壞塊直接燒寫按順序燒寫資料,即使校驗資料不一緻也不報錯,這是最簡單、直接的處理方法,但是隻能适用于資料不需管理的方案;

Nand Flash壞塊處理

2、跳過壞塊

跳過壞塊就是燒錄資料時,遇到壞塊即跳過此壞塊,将資料順延燒到下一個好塊,這樣可以保證所有的資料都能燒寫到NAND存儲空間中,但是并不知道資料究竟燒到了哪一位;

Nand Flash壞塊處理

3、替換表

此方法是将NAND存儲空間中預留出一些塊作為保留塊,當遇到壞塊時,在預留的保留塊中選一個塊來替換壞塊,将原來寫到壞塊的資料寫到替換塊中;

Nand Flash壞塊處理

4、BBT(Bad block table)

此方法核心是跳過壞塊,但是跳過後需要在NAND閃存指定位置寫入一個壞塊表(Bad block table),下圖是BBT的結構圖。

Nand Flash壞塊處理

NAND應用需要注意的點大緻整理如上,實際使用中會有靈活的應用方案,需要熟知NAND特性、程式設計器原理的工程師才能設計出合适的方案加以運用。P800Flash極速程式設計器融合了ZLG緻遠電子三代Flash程式設計器的特點,全面支援eMMC、NOR、NAND Flash的燒錄,可提供完善的程式設計解決方案。

Nand Flash壞塊處理

繼續閱讀