歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> nand flash 尋址

nand flash 尋址

日期:2017/3/1 10:16:16   编辑:Linux編程
以 samsung的nand flash 型號是K9K8G08U0A,大小是1G的,8bit的 來說明 :
具體參數

1 Block = 64 Pages
(128K + 4k) Byte

1 Page = (2K + 64)Bytes
1 Block = (2K + 64)B x 64 Pages
= (128K + 4K) Bytes
1 Device = (2K+64)B x 64Pages x 8,192 Blocks
= 8,448 Mbits

一個chip共512K Pages
(=8,192 Blocks)

我們要訪問其中的第 7000個塊中的第 64 頁中的1208 字節處的地址,此時,我們就要先把具體的地址算出來:
 
 物理地址 = 塊大小×塊號+頁大小×頁號+頁內地址
 
=7000×128K+64×2K+1208
=0x36B204B8
下圖為是5個周期的地址:
 
結合圖,我們可以看出,此 Nand Flash 地址周期共有 5 個,2 個列(Column),3個行(Row)周期,而對於對應地,我們可以看出,實際上,列地址 A0~A10,就是頁內地址,地址范圍是從0 到2047,而對出的 A11,理論上可以表示 2048~4095,但是實際上,我們最多也只用到了2048~2011, 用於表示頁內的oob區域,其大小是 64 字節。對應地,A12~A30稱作頁號,頁的號碼,可以定位到具體是哪一個頁。而其中,A18~A30,表示對應的塊號,即屬於哪個塊。
簡單解釋完了地址組成,那麼就很容易分析上面例子中的地址了:
0x36B204B8 = 0011 0110 1011 0010 0000 0100 1011 1000,分別分配到5個地址周期就是:
1st周期,A7~A0:     1011 1000 = 0xB8
2nd周期,A11~A8:    0000 0100 = 0x04
3rd周期,A19~A12:    0010 0000 = 0x20
4th 周期,A27~A20:    0110 1011 = 0x6B
5th 周期,A30~A28:     0000 0011 = 0x03
注意,與圖中對應的*L,意思是地電平,由於未用到那些位,datasheet中強制要求設為0,所以,才有上面的2nd周期中的高4位是0000.其他的A30之後的位也是類似原理,都是0
因此,接下來要介紹的,我們要訪問第 7000 個塊中的第 64 頁中的 1208 字節處的話,所要傳入的地址就是分 5 個周期,分別傳入兩個列地址:0xB8,0x04,然後再傳3個行地址:0x20,0x6B,0x03,這樣硬件才能識別。
Copyright © Linux教程網 All Rights Reserved