2018年6月20日 星期三

Nand Flash 簡述

ECC(Error Correction Code)

Nand Flash由於物理特性,Nand Flash中cell的電荷會慢慢漏電,導致資料不正確;抹除和寫資料次數越多,漏電的情形會更嚴重。為了確保資料的正確性,Nand Flash需要ECC功能來偵測糾正Nand Flash內部的隨機位元錯誤。通常Nand Flash本身並不提供ECC功能,而是由SOC的Nand Flash Controller來提供。

Nand Flash 讀寫單位

Nand Flash 中最小的讀寫單位是一個 page,一個 page 的大小通常為 2K bytes(user area) + 64 bytes(spare area),user data 是用來存放一般的儲存資料,spare area 是用來存放一些 meta data,不會用來儲存一般資料

一個 block 通常為 64 個 page,等於 128KB(user area) + 4KB(spare area),一個 block 是 nand flash 進行 erase 動作的一個最小單位

Spare Area

Spare Area 在 linux 系統中的專有名稱為 OOB(Out Of Band),可用來放置 ECC data,還有標記此 block 是否為 bad block,以及一些與 file system 有關的 meta data,Spare Area 從物理上來說跟 User Area 沒有任何差別

Flash 寫入操作

Flash 的寫入稱為 program,並且只能由 1 -> 0,若要寫入由 0 -> 1,則需先執行 erase,erase 完後 flash 內容變為 0xFF,之後便可以將 flash 作 1 -> 0 的 program


Reference
http://cmchao.logdown.com/posts/60216

沒有留言:

張貼留言