5.17.2007

nandflash - block, pages and chip

兩顆nandflash,串成一顆,從block number看來是連續的。
所以physical layer要操作時,要先從block number算出,要access哪一顆nandlfash:

兩部份的程式又有不同的model:

ADS code : 用block, page (relative/offset)
Kernel : 用 page (absolute/total)

Block Number = Absolute/Total PageNumber >> 6
Block Number > 0x2000 的是在第二個chip select上

分出 是在哪一個chip上後,要算出是對應該chip的哪一個block, page。

不論是ADS或是Kernel,實際上 nandflash access 是用 page (relative/offset)。
所以要動作時,還是要轉為 page.

所以是ADS的話,就有一點囉唆:
(block,page) ==> (chip index, rel block, offset page)
(rel block, offset page) ==> (chip page)
Kernel的話,其實就直接將page 轉成 chip index, offset page就可以了)。
但是不知道為甚麼,code是這樣作:
(page) ==> (block, page)
(block, page) ==> (chip index, rel block, page)

沒有留言: