S3C2440與SDRAM與NAND與NOR的地址連線分析
2^27=2^7 * 2^10 * 2^10 = 128Mbyte
本文引用地址:http://m.butianyuan.cn/article/201611/317951.htm8*128Mbyte = 1Gbyte
所以S3C2440總的尋址空間是1Gbyte。
市面上很少有32位寬度的單片SDRAM,一般選擇2片16位SDRAM擴展得到32位SDRAM.
選擇的SDARM是HY57V561620F,4Mbit * 4bank *16,共16Mbyte?(后面有解釋)
兩塊HY57V561620F并接,構成64M×32bit的SDRAM
首先了解下SDRAM的尋址原理。
SDRAM內部是一個存儲陣列??梢园阉胂蟪梢粋€表格。和表格的檢索原理一樣,先指定行,再指定列,就可以準確找到所需要的存儲單元。這個表格稱為邏輯BANK。目前的SDRAM基本都是4個BANK。尋址的流程就是先指定BANK地址,再指定行地址,最后指定列地址。這就是SDRAM的尋址原理。存儲陣列示意圖如下:
查看HY57V561620F的資料,這個SDRAM有
13根行地址線 RA0-RA12
9根列地址線 CA0-CA8
2根BANK選擇線 BA0-BA1(4個bank的選擇)
SDRAM的地址引腳是復用的,在讀寫SDRAM存儲單元時,操作過程是將讀寫的地址分兩次輸入到芯片中,每一次都由同一組地址線輸入。兩次送到芯片上去的地址分別稱為行地址和列地址。它們被鎖存到芯片內部的行地址鎖存器和列地址鎖存器。
/RAS是行地址鎖存信號,該信號將行地址鎖存在芯片內部的行地址鎖存器中;
/CAS是列地址鎖存信號,該信號將列地址鎖存在芯片內部的列地址鎖存器中。
NSCS接到bank6上,決定了SDRAM的物理地址是0x30000000
地址連線如下圖:
LnSCS0腳接了nGCS6,即接在了bank6上,所以SDRAM的物理地址從0X30000000開始
為啥LADDR2接A0呢?
@CPU的尋址空間中,仍然是按8bit一個字節(jié)為單位操作的
@由于SDRAM并接成了32位,即4個字節(jié),這樣接使得SDRAM的最小單位是4個字節(jié),方便32位的讀寫操作吧
為啥LADDR24/25接BA0/1?
@ BA1:BA0是SDRAM的最高位,組合選擇4個bank中的哪一個
@ LADDR0~LADDR25,總共26根地址線,可尋址(2的26次方)64MB
為啥一個bank4MB,而容量不是4mb×4bank=16MB是8×4=32MB?
@ 13根行地址線+9根列地址線 = 22根(4MB)。另外HY57V561620F一個存儲單元是2個字節(jié)(本身是16位的),相當于有了23根地址線。
NORFLASH中A0接CPU的LADDR1,那么,norflash的最小尋址單元為2個字節(jié)(16位),事實上只有A0~A19是有效的,因為該nor本身才有2MB,2的20次方=1MB,加上nor本身是16位的(2個字節(jié)),所以1MB×2就是nor的大小
@ 26腳接了nGCS0,即接在了bank0上,所以,nor的物理地址從0X00000000開始
從接線上可以看出NAND有點特殊,他并沒有通過CPU的地址線訪問,這就回答了為啥可以接1GB的NAND,當然他也沒有接bank選擇線,自然不存在物理地址了,由此我猜想NAND是由硬件本身識別的,即OM開關選擇是NOR還是NAND啟動,這似乎也驗證了數(shù)據(jù)手冊上這兩種啟動方式的映射圖,NAND的啟動方式可參考前面的日志
0x4000_0000-0x4000_0fff
-----這4K字節(jié)的就是前面說的stepingstone的啦。0x4000_0fff_0x4800_0000是沒用到的。
0x4800_0000-0x6000_0000
-----這空間是特殊功能寄存器的.你發(fā)現(xiàn),所有的寄存器都是在這個范圍內的。
0x6000_0000—0Xffff_ffff
-----還是未用到的。
理論上可以尋址的空間為(2的32次方,32根地址線)4GB,但其中有3GB的空間都預留給處理器內部的寄存器和其他設備了,留給外部可尋址的空間只有1GB,也就是0X00000000~0X3FFFFFFF,總共應該有30根地址線。這1GB的空間,2440處理器又根據(jù)所支持的設備的特點將它分為了8份,每份空間有128MB,這每一份的空間又稱為一個BANK。為方便操作,2440獨立地給了每個BANK一個片選信號(nGCS7~nGCS0)。其實這8個片選信號可以看作是2440處理器內部30根地址線的最高三位所做的地址譯碼的結果。正因為這3根地址線所代表的地址信息已經(jīng)由8個片選信號來傳遞了,因此2410處理器最后輸出的實際地址線就只有A26~A0
nandflash由于其自身的特點,不具備運行程序的功能。但s3c2440通過稱為“Steppingstone”的內部SRAM緩存,實現(xiàn)了可以運行存儲在外部nandflash中的啟動代碼的功能。它的機制是:當檢測到是由nandflash啟動時,系統(tǒng)會自動把nandflash中的前4k字節(jié)的數(shù)據(jù)加載到Steppingstone中,然后把該Steppingstone映射為Bank0,因此系統(tǒng)會從Steppingstone開始運行程序,從而實現(xiàn)了s3c2440的nandflash自啟動的功能。這一過程是由系統(tǒng)自動完成的,無需人為干預。在系統(tǒng)啟動以后,Steppingstone所在的SRAM就可以用作其他用途了。
評論