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 的 programReference
http://cmchao.logdown.com/posts/60216
沒有留言:
張貼留言