壞block標示在額外區域的 第六byte. 在壞block的第一或者第二page的第517byte(from512, 6th) 是non-FFh數據
然後建立一個 table 來記錄所有壞block
掃描出壞block並標示以後就可以保證不對壞block進行讀寫.
方法: 從block address=0開始, 檢查每個block的第一&第二page的 517address上是否是 FFH, 如果是, check next block.; 如果不是,create(or update ) invalid blocks table 然後check next block. 直到 the last block . end.
遇到壞block,會用芯片中另外一個地方的block來代替這個地址的block.但是爲了提高內存空間的利用率, 讀寫操作出現ecc錯誤的時候不會產生block替換操作
方法:1 copy nth page 到另外一個block的 nth page中 2 copy1st-(n-1)th page 到另外一個block的 1st-(n-1)page中 3 在沒有更新 invalid block table 前 不要刪除壞block中意境寫入的數據
指針操作(*8)
命令 00h 是A區域(0-255bytes), 01h是B區域(256-511bytes),50h是C區域(512-527bytes), 其中 00h 50h可以保持,直到下一個地址指針命令出現,01h卻只能生存於一個操作中.
注意: 1 當01H用過一次, 地址指針會自動回到A區域.
2 00h 50h必須在80h之前writen
3 要programB區域,必須就在80h指令前一個寫入01h.( program 和writen 什麼區別?)
哈 後面就要看圖理解了, 今天寫到這裏.
寫的粗略了一點, 後面的過程要配合程序來看了, 所以nandflash讀書筆記暫時停止. 等我再讀讀vivi, 遇到有新的部分再繼續添加.