3.26.2008

nand flash read

LB Read Command:

  • CE assert
  • CMD 0x00
  • Address
    • Offset in one page
      • A[7:0]
      • A[12:8]
    • block + page address
      • A[20:13]
      • A[28:21]
      • A[32:29]
  • CMD 0x30
  • --- delay --
  • Wait RB ready
  • --- read data (many)
  • CE de-assert
說明:
  • 告訴nandflash,把 哪一個 page 導引到 output buffer
  • 告訴nandflash,將要從該page的哪一個byte 開始讀
等到 RB pin ready,就可以向nandflash 的data port讀取資料。
每讀一個byte,內部 address就會+1。

以 "讀取 第 1 個block的第 4 個page 的spare area" 為例:

先算出 "第1個block的第4個page" 是 整個算起來,block+page index是..

1 x 128 + 4 = 132

LB 的一個page,有 4k 的data, spare area在 data area的後面,所以 就是由第 4096 byte 開始讀。

這樣就決定了 command 中的offset in one page (4096) 和 block+page index (132)。

照著下給 nandflash 後,就可以向nand flash 的data port 讀資料了。

因為 LB 的 spare area 有 128 bytes。所以用for loop
  for(i=0;i<128;i++)
data[i]=readnanddata();
就可以把spare area都讀到data[ ]中了。

沒有留言: