<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > S3C2440與SDRAM與NAND與NOR的地址連線分析

          S3C2440與SDRAM與NAND與NOR的地址連線分析

          作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
          S3C2440有27根地址線ADDR[26:0],8根片選信號(hào)nGCS0-nGCS7,對(duì)應(yīng)bank0-bank7,當(dāng)訪問(wèn)bankx的地址空間,nGCSx引腳為低電平,選中外設(shè)。

          2^27=2^7 * 2^10 * 2^10 = 128Mbyte

          本文引用地址:http://www.ex-cimer.com/article/201611/317951.htm

          8*128Mbyte = 1Gbyte

          所以S3C2440總的尋址空間是1Gbyte。

          市面上很少有32位寬度的單片SDRAM,一般選擇2片16位SDRAM擴(kuò)展得到32位SDRAM.

          選擇的SDARM是HY57V561620F,4Mbit * 4bank *16,共16Mbyte?(后面有解釋)

          兩塊HY57V561620F并接,構(gòu)成64M×32bit的SDRAM

          首先了解下SDRAM的尋址原理。

          SDRAM內(nèi)部是一個(gè)存儲(chǔ)陣列??梢园阉胂蟪梢粋€(gè)表格。和表格的檢索原理一樣,先指定行,再指定列,就可以準(zhǔn)確找到所需要的存儲(chǔ)單元。這個(gè)表格稱為邏輯BANK。目前的SDRAM基本都是4個(gè)BANK。尋址的流程就是先指定BANK地址,再指定行地址,最后指定列地址。這就是SDRAM的尋址原理。存儲(chǔ)陣列示意圖如下:

          查看HY57V561620F的資料,這個(gè)SDRAM有

          13根行地址線 RA0-RA12

          9根列地址線 CA0-CA8

          2根BANK選擇線 BA0-BA1(4個(gè)bank的選擇)

          SDRAM的地址引腳是復(fù)用的,在讀寫SDRAM存儲(chǔ)單元時(shí),操作過(guò)程是將讀寫的地址分兩次輸入到芯片中,每一次都由同一組地址線輸入。兩次送到芯片上去的地址分別稱為行地址和列地址。它們被鎖存到芯片內(nèi)部的行地址鎖存器和列地址鎖存器。

          /RAS是行地址鎖存信號(hào),該信號(hào)將行地址鎖存在芯片內(nèi)部的行地址鎖存器中;

          /CAS是列地址鎖存信號(hào),該信號(hào)將列地址鎖存在芯片內(nèi)部的列地址鎖存器中。

          NSCS接到bank6上,決定了SDRAM的物理地址是0x30000000

          地址連線如下圖:

          LnSCS0腳接了nGCS6,即接在了bank6上,所以SDRAM的物理地址從0X30000000開始

          為啥LADDR2接A0呢?

          @CPU的尋址空間中,仍然是按8bit一個(gè)字節(jié)為單位操作的

          @由于SDRAM并接成了32位,即4個(gè)字節(jié),這樣接使得SDRAM的最小單位是4個(gè)字節(jié),方便32位的讀寫操作吧

          為啥LADDR24/25接BA0/1?

          @ BA1:BA0是SDRAM的最高位,組合選擇4個(gè)bank中的哪一個(gè)

          @ LADDR0~LADDR25,總共26根地址線,可尋址(2的26次方)64MB

          為啥一個(gè)bank4MB,而容量不是4mb×4bank=16MB是8×4=32MB?

          @ 13根行地址線+9根列地址線 = 22根(4MB)。另外HY57V561620F一個(gè)存儲(chǔ)單元是2個(gè)字節(jié)(本身是16位的),相當(dāng)于有了23根地址線。

          NORFLASH中A0接CPU的LADDR1,那么,norflash的最小尋址單元為2個(gè)字節(jié)(16位),事實(shí)上只有A0~A19是有效的,因?yàn)樵搉or本身才有2MB,2的20次方=1MB,加上nor本身是16位的(2個(gè)字節(jié)),所以1MB×2就是nor的大小

          @ 26腳接了nGCS0,即接在了bank0上,所以,nor的物理地址從0X00000000開始

          從接線上可以看出NAND有點(diǎn)特殊,他并沒(méi)有通過(guò)CPU的地址線訪問(wèn),這就回答了為啥可以接1GB的NAND,當(dāng)然他也沒(méi)有接bank選擇線,自然不存在物理地址了,由此我猜想NAND是由硬件本身識(shí)別的,即OM開關(guān)選擇是NOR還是NAND啟動(dòng),這似乎也驗(yàn)證了數(shù)據(jù)手冊(cè)上這兩種啟動(dòng)方式的映射圖,NAND的啟動(dòng)方式可參考前面的日志

          0x4000_0000-0x4000_0fff

          -----這4K字節(jié)的就是前面說(shuō)的stepingstone的啦。0x4000_0fff_0x4800_0000是沒(méi)用到的。

          0x4800_0000-0x6000_0000

          -----這空間是特殊功能寄存器的.你發(fā)現(xiàn),所有的寄存器都是在這個(gè)范圍內(nèi)的。

          0x6000_0000—0Xffff_ffff

          -----還是未用到的。

          理論上可以尋址的空間為(2的32次方,32根地址線)4GB,但其中有3GB的空間都預(yù)留給處理器內(nèi)部的寄存器和其他設(shè)備了,留給外部可尋址的空間只有1GB,也就是0X00000000~0X3FFFFFFF,總共應(yīng)該有30根地址線。這1GB的空間,2440處理器又根據(jù)所支持的設(shè)備的特點(diǎn)將它分為了8份,每份空間有128MB,這每一份的空間又稱為一個(gè)BANK。為方便操作,2440獨(dú)立地給了每個(gè)BANK一個(gè)片選信號(hào)(nGCS7~nGCS0)。其實(shí)這8個(gè)片選信號(hào)可以看作是2440處理器內(nèi)部30根地址線的最高三位所做的地址譯碼的結(jié)果。正因?yàn)檫@3根地址線所代表的地址信息已經(jīng)由8個(gè)片選信號(hào)來(lái)傳遞了,因此2410處理器最后輸出的實(shí)際地址線就只有A26~A0

          nandflash由于其自身的特點(diǎn),不具備運(yùn)行程序的功能。但s3c2440通過(guò)稱為“Steppingstone”的內(nèi)部SRAM緩存,實(shí)現(xiàn)了可以運(yùn)行存儲(chǔ)在外部nandflash中的啟動(dòng)代碼的功能。它的機(jī)制是:當(dāng)檢測(cè)到是由nandflash啟動(dòng)時(shí),系統(tǒng)會(huì)自動(dòng)把nandflash中的前4k字節(jié)的數(shù)據(jù)加載到Steppingstone中,然后把該Steppingstone映射為Bank0,因此系統(tǒng)會(huì)從Steppingstone開始運(yùn)行程序,從而實(shí)現(xiàn)了s3c2440的nandflash自啟動(dòng)的功能。這一過(guò)程是由系統(tǒng)自動(dòng)完成的,無(wú)需人為干預(yù)。在系統(tǒng)啟動(dòng)以后,Steppingstone所在的SRAM就可以用作其他用途了。



          關(guān)鍵詞: S3C2440SDRAMNANDNOR地址連

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();