歡迎光臨深圳市浦洛電子科技有限公司官方網站!
語言選擇: 中文版  英文版

Nand燒錄方案

Nand特性談其燒錄關鍵點

 來源:電子產品世界

  為什么 Flash經常失敗?為什么成功了,一部分芯片貼板之后系統卻運行不起來?…,等等,問了那么多為什么,那我反問一個問題:你了解 Flash的特性及其關鍵點嗎?


圖片10.jpg

 一、Nand flash的特性

  1、位翻轉

  在 NAND 閃存是通過對存儲單元(Cell)進行充電來完成數據存儲的,存儲單元的閾值電壓就對應著數據值。當讀取的時候,通過將它的閾值電壓與參考點對比來獲得其數據值。對SLC 而言,就只有兩種狀態和一個參考點。而對于2-Bits 的MLC 而言,它有4 種狀態和三個參考點。TLC就更多狀態和參考點。當讀出的數據值與編程時數據值對應的閾值電壓不相匹配時,表明數據發生了位翻轉,就帶來了可靠性問題。導致位翻轉的最常見原因是“編程干擾”導致的閾值電壓漂移。

  2、存儲結構

  Nand 閃存由多個Block組成,每一個Block又由多個Page組成,Page的大小一般為512+16Bytes 、2K+64Bytes以及4096+128Bytes,Page是讀取和編程的基本單位,而擦除的基本單位是Block。

  NAND Flash的頁,包含主區(Main Area)和備用區(Spare Area)兩個域,“主區”也常稱作數據區,備用區是保留區域,一般用來標記壞塊(bad block)和存放ECC的值,當然有些文件系統使用備用區記錄擦除次數、文件組織數據等。

  

圖片11.jpg

  圖1.1 為頁大小為2048+64的閃存存儲結構

  3、壞塊及ECC

  位翻轉的發生是隨機的,且比特誤碼的數量會隨著擦寫次數的增加而增加。但是只要比特誤碼的數量在ECC 能夠糾正的范圍內,數據的完整性就始終有保障。在有些點,每頁的比特誤碼有可能很接近ECC 所能糾正的極限,NAND 的控制系統必須嚴防比特誤碼超過可糾錯的范圍,否則,就可能造成數據丟失或者系統無法正常工作。因此,這些塊必須要標記為壞塊。壞塊永遠不應該再用來存儲數據。由于壞塊的產生是不可避免的,NAND 制造商在對裸片測試時會選擇對某些塊進行壞塊標記,而不是放棄整個裸片,所以大多數NAND 在出廠時就已經存在標記為壞塊的塊。如果一個NAND 的塊被標記為壞塊,那么NAND 的容量就永久性的減小了。

  二、Nand系統裸片量產燒錄的關鍵點

  由于Nand flash芯片的特性,以其作為存儲介質時必須對這些特性進行恰當處理,這樣系統才能正常運行。系統設定各分區數據在Nand芯片的存儲布局,并且在存儲驅動層對Nand進行位糾錯、壞塊管理等處理,這些信息需要系統/驅動工程師明確。

  研發階段或小批量生產階段,常采用在板燒錄的方式,原理是將boot通過串口下載到內存跑起來,由boot從SD卡或網絡將內核鏡像、文件系統鏡像等數據燒錄Nand flash芯片。

  為了提高生產效率或別的方面考慮,會使用燒錄器對Nand flash裸片進行量產燒錄,由于燒錄器廠家并不知道存儲驅動層對Nand各種特性的處理方式,所以不加正確配置就進行燒錄的話,往往出現以下情況:1. 燒錄失敗,經常是校驗通不過;2. 燒錄通過,但是部分芯片貼板之后系統運行不起來,或者運行起來某些模塊出現一些錯誤與異常。這些大多不是燒錄器本身的問題,而是裸片燒錄Nand系統時幾個重要的關鍵點沒有處理好,或者說沒有和目標系統相關處理一致。這些關鍵點包括:

  1) 壞塊處理策略

  2) 分區(Partition)

  3) 糾錯碼(Error Correction Codes,ECC)

  當然,影響燒錄的還有其他因素,比如備用區的使用情況、未用好快的格式化以及動態元數據等,但我們這里只討論上面幾個比較普遍的因素。

  1、壞塊處理策略

  壞塊一般是根據芯片的壞塊標記位置進行識別的,而壞塊處理策略定義了在遇到壞塊時算法應該如何處理。策略算法負責將本來應該寫到壞塊的內容寫到其它可選的好塊中。最常用的壞塊處理策略是跳過壞塊,其他典型的還有帶BBT的跳過壞塊及預留塊區等。

  跳過壞塊的處理策略是最基本最常用的壞塊替換策略。當燒錄中遇到壞塊時,算法簡單地跳過壞塊,而將數據寫入下一個好塊。它會造成物理數據和邏輯數據的位置偏移,這通常需要分區來解決這個問題。

  2、分區(Partition)

  采用類跳過壞塊的處理策略的Nand系統,常常會把存儲區分成若干個不同的物理區域,這就是我們說的分區,概念上很像電腦硬盤的分區。使用分區使得你有能力確保你的數據可以存到預先指定的物理塊區內,即便在這之前發現了一些壞塊。這對一些底層軟件組件比如啟動引導程序和某些必須很容易定位的文件系統驅動程序來說,是非常有幫助的。

  當使用跳過壞塊的替換策略時,壞塊會導致數據順移到下一個好塊。如果設置了分區,就可以指導燒錄器確定數據的邊界,確保數據文件不會侵占鄰近的分區。

  圖2.2.1就是典型的嵌入式Linux系統的分區情況。

  

圖片12.jpg

 

  圖2.2.1 典型的嵌入式Linux系統分區情況

  3、糾錯碼(Error Correction Codes,ECC)

  針對不同工藝、容量的NAND存儲系統采用適當的ECC算法是應該的,要保證系統的可靠性,甚至是必須的。ECC糾錯碼一般存放在備用區中,對一整頁或將頁分成若干節的數據進行計算而得。數據燒錄之前需要準備好ECC(硬件ECC除外),如果是純數據則需要使用ECC算法來生成。Nand裸片量產中,知道ECC算法的糾錯能力(糾錯位數)是很重要的,因為要保證生產效率,燒錄器如果采用ECC來進行校驗數據是不實際的,而通過簡單數據比對就可以知道數據的位翻轉個數,如果翻轉個數范圍在ECC算法的糾錯范圍之內,則認為校驗應該是通過的。

  三、燒錄定制

  對于以上關鍵點或其它特殊部分,如果燒錄器軟件沒有支持的相應的方案,需要聯系原廠進行相關算法的定制,比如壞塊處理方案、ECC方案等。



聯系我們

公 司:深圳市浦洛電子科技有限公司

聯系人:田副總經理

電話:0755-27889099-860

手機:15013898675

E-mail:sales@www.mik777.com

地 址:深圳市寶安區福永新田大道71-1福寧工業園A棟6F

一分快3-Welcome