spinand通常會有一個內置的data buffer。
以W25N01GV爲例,一個page是2048bytes外加64bytes的spare數據,其data buffer就有2048+64=2112bytes。測試
在寫數據到spinand時,須要分爲兩步。
第一步,Load Program Data (02h),將數據寫到data buffer中。此時spinand除了會將接收到spi的波形解碼出來寫到buffer,還會計算對應的ecc校驗碼,並覆蓋到spare區域的指定位置。即在buffer中準備好要寫入cell的數據。
第二步,Program Execute (10h),將數據從data buffer真正寫到cell中,固化起來。spa
在從spinand中讀數據時,也須要分爲兩步
第一步,Page Data Read (13h),將數據從cell中讀取到data buffer中。此時spinand會讀取cell數據,並計算ecc,進行糾錯。若是cell中發生了位翻轉,那麼通過ecc糾錯後寫到data buffer中的就已是正確的數據了
第二步,Read Data (03h),將數據從data buffer中讀出來。flash
能夠看到,data buffer是讀寫的必經之路。效率
當出現flash數據讀寫錯誤,能夠專門構建一個buffer讀寫測試。數據
簡單來說,就是隻執行上述讀寫步驟的第一步,把數據寫到buffer,但不寫入cell,而是直接再讀出校驗。
這樣的實驗,省去了讀寫cell的時間,效率很高。且不會真正讀寫cell,所以對flash的壽命是沒有影響的。能夠幫助快速復現排查問題。
若是buffer讀寫測試能夠復現問題,那麼就能夠確認問題跟cell無關了。時間