歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Nand Flash 地址數據的確定

NAND Flash使用8位數據線,同時作為地址線,命令線,數據線復用。類似於平時使用的點陣液晶顯示器的操作方式。這裡作為學習的記錄,說一下nand flash 的地址的確定方式。nand flash 的內部分為 Block(塊)、Page(頁). 其中 一塊nand flash 包含若干 Block,每個Block裡包含若干Page.頁是nand 的最小操作單元。

一下圖片顯示的是三星16Gbit的Nand Flash  K9GAG08U0E 的結構圖:


如圖中所示,這款flash 共有2076個block(塊),每個block有128個Page(頁),每個頁包含(8k+436)Bytes的數據,其中8k是數據區,436B是用作保存效驗等一些特定用途的數據。由圖中表格可以看出定位nand中的一個位置的時候需要知道是在哪個block,哪個page中的哪個字節就可以了。

首先我們把圖中的數據列一下:

 1 Page  = (8K +436) Bytes = 8628 Byte = 0x21B4 Bytes =  PS  // 這個用PS代指頁的字節大小

1 Block  = 128 Pages = (1M + 54.5K) Bytes = 128 PS


假如我們需要訪問第 5 Block ,第2頁的第1077個字節。      (這裡的block 、page 和頁內地址均為從0開始計數)

當前如果我們知道具體的Block、Page 和頁內位置,

 我們可以直接將 block page 和頁中的位置 三個參數組織後,分別傳遞給頁地址 A14-A20,A21-A32,A0-A13.

同時我們也可以根據給出的地址的絕對值計算出相應的block page 和頁內的位置。

上述的絕對位置用如果公式計算:

      絕對地址 SUM =  塊大小 * 塊 + 頁大小 * 頁 + 頁中的位置

                                 = 128PS*5 + PS *2 + 1077

                                 = (128*5 + 2)PS + 1077  =  5540253 = 0x

所以絕對地址必定為頁大小的整數倍 + 在頁內的位置大小。

確定 Column Address :頁大小為0x21B4 (14位),即絕對地址 低14位為Column Address  A0-A13。

A0-A13 = SUM%PS =  1077 = 0x435    A0-A7 = 0x35  , A8-A13 = 0x4 & (0x3f) = 0x4

低8位為第一個發送周期發送,剩余6位作為第二周期的高六位發送,另外高兩位為低電平0。

確定Page Address: 每個Block 有128(0x80)個頁。即值為 0-0x7F,占7個bit位。即 A14 - A20.

A14-A20 = (SUM / PS )%128 = 2

即SUm 的除去 上面的0x21B3所占用的bit位,接著的7個bit位應該表示的就是 Page Address 。

A21 - A32 = (SUM /PS ) /128 = 5.

所以第三周期發送的值為  (2 &0x7F)| ((5&0x1)<<7)

第四周期發送( 5>>1) & 0xFF

第五周期發送   (5 >>8) &0x7    |  ( A33<<3)

Copyright © Linux教程網 All Rights Reserved