所以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)Kernel的話,其實就直接將page 轉成 chip index, offset page就可以了)。
(rel block, offset page) ==> (chip page)
但是不知道為甚麼,code是這樣作:
(page) ==> (block, page)
(block, page) ==> (chip index, rel block, page)
沒有留言:
張貼留言