色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > s3c2440 存儲(chǔ)系統(tǒng)和I/O空間 認(rèn)識(shí)

          s3c2440 存儲(chǔ)系統(tǒng)和I/O空間 認(rèn)識(shí)

          作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò) 收藏
          用友善之臂的板子已經(jīng)有一段時(shí)間了.對(duì)于存儲(chǔ)系統(tǒng)和I/O空間的認(rèn)識(shí)也漸漸淡忘了,原因是在做其他開發(fā)時(shí),一直用著自帶的啟動(dòng)代碼,從不關(guān)心板子的儲(chǔ)存空間配置.最近在做網(wǎng)卡驅(qū)動(dòng),突然間就不知道網(wǎng)卡的地址是什么了,于是花點(diǎn)時(shí)間總結(jié)一下.廢話少說(shuō).開始吧.

          1,板上的存儲(chǔ)資源

          本文引用地址:http://cafeforensic.com/article/201611/316718.htm

          兩個(gè)32M的SDRAM.

          一個(gè)2M的NOR FLASH

          一個(gè)128M(有些是64M)的NAND FLASH

          以上這些資源看原理圖便知.

          2,板上的I/O資源

          這塊板子上(準(zhǔn)確的說(shuō)是S3C2440)的I/O空間是用存儲(chǔ)映射的方法映射到存儲(chǔ)空間上的,也就說(shuō)I/O空間是要占用存儲(chǔ)空間的.

          3,各種存儲(chǔ)器的區(qū)別與各自的用途

          為什么這塊板子上有那么多存儲(chǔ)設(shè)備呢?原因很簡(jiǎn)單.每種存儲(chǔ)設(shè)備的用途都不一樣,而且為了兼顧廣大用戶的需要,也必須有不同的存儲(chǔ)設(shè)備.首先說(shuō)SDRAM.(寫到這突然想起忘了說(shuō)SRAM了.SRAM是靜態(tài)隨機(jī)存儲(chǔ)器,它具有掉電不丟失數(shù)據(jù)且不必頻繁刷新的特點(diǎn),存儲(chǔ)速度快,相當(dāng)于PC的內(nèi)存,看來(lái)這塊相當(dāng)于內(nèi)存的東西很重要,可是剛剛怎么沒(méi)說(shuō)有這塊東西呢?原因很簡(jiǎn)單.因?yàn)楸緛?lái)就沒(méi)有.其實(shí),如果需要隨機(jī)存儲(chǔ)器,SDRAM就是隨機(jī)存儲(chǔ)器啊,只是它需要不斷的刷新以保持里面的數(shù)據(jù)(電平).說(shuō)到這,SDRAM的作用同學(xué)們也應(yīng)該了解了.也就說(shuō)我們這塊板子就是有64M的內(nèi)存,足夠用了.

          其次說(shuō)說(shuō)NOR FLASH.NOR FLASH是具有SRAM接口特性的ROM.可是NOR FLASH才2M未免太少了,沒(méi)錯(cuò),是很少,可是我們有NAND FLASH啊,它也是ROM啊,所以加起來(lái)我們可以說(shuō)這塊板子有130M(66M)的硬盤.這也足夠用了,可以少好幾個(gè)Linux了.

          再說(shuō)說(shuō)NAND FLASH,NAND FLASH可以做的很大,但是速度卻比不上NOR FLASH,NOR FLASH能做快卻不能做的大,所以,速度和容量是一對(duì)矛盾.為了克服這對(duì)矛盾,這板子上兩種FLASH都有了.各有用途.另外,初學(xué)者一定要知道NAND FLASH與NOR FLASH啟動(dòng)的不同吧.這是跟他們的特性有關(guān)的,接下來(lái)談?wù)?

          4,NOR FLASH啟動(dòng)與NAND FLASH啟動(dòng)

          開發(fā)板上有一個(gè)S2開關(guān),當(dāng)它打在NOR一端是就是NOR啟動(dòng).相反,打在另一端就是NAND FLASH啟動(dòng)了.先說(shuō)著兩種啟動(dòng)的不同,再說(shuō)說(shuō)硬件上是如何啟動(dòng)的,空間有時(shí)如何分配的.當(dāng)S2打在NAND FLASH啟動(dòng),那么程序就是在NAND FLASH上跑起來(lái).其實(shí),在內(nèi)部還有一個(gè)4K字節(jié)的steppingstone的緩沖器(其實(shí)這是一個(gè)SRAM),當(dāng)選擇NAND FALSH啟動(dòng)時(shí),這個(gè)緩沖器映射在地址0x0000_0000上,而它負(fù)責(zé)將NAND FLASH上的代碼復(fù)制到SDRAM上(大家都知道,程序運(yùn)行時(shí)都是在RAM上運(yùn)行的,怎么可能是在FLASH上運(yùn)行呢,其實(shí)就是將FLASH上的代碼復(fù)制了而已)而負(fù)責(zé)復(fù)制這段代碼的東西就是傳說(shuō)中的BIOS啦.

          當(dāng)S2打在NOR FLASH一端時(shí),又有什么區(qū)別呢?當(dāng)選擇用NOR FLASH啟動(dòng)時(shí),2M的NOR FLASH就映射到地址0x0000_0000上,程序就是從這里運(yùn)行了.那難道程序就能從NOR FLASH上運(yùn)行嗎?當(dāng)然不行,那為什么可以在這里啟動(dòng)呢,其實(shí)這個(gè)NOR FLASH已經(jīng)安裝了BIOS的了(若有讀者不知什么是BIOS,那就暫且認(rèn)為它的功能就是從FLASH上復(fù)制代碼到SDRAM就可以了)

          4,S3C2410 S3C2440NAND存儲(chǔ)系統(tǒng)

          大家都知道,32位可以尋址4G空間.但是S3C2440卻的存儲(chǔ)空間里把4G這樣子分的:

          (途中只顯示最低的1G)

          0x4000_0000只有還有3G空間是這樣分配:

          OM[1:0]=01或者是10時(shí):0x4000_0000-0x4000_0fff.這4字節(jié)的就是前面說(shuō)的stepingstone的啦.0x4000_0fff_0x4800_0000是沒(méi)用到的.0x4800_0000-0x6000_0000的空間是特殊功能寄存器的.你發(fā)現(xiàn),所有的寄存器都是在這個(gè)范圍內(nèi)的.0x6000_0000—0Xffff_ffff的還是未用到的.

          OM[1:0]=00時(shí).這個(gè)時(shí)候如上圖所示.剛剛說(shuō)的steppingstone映射到ox000_0000那里,也即是途中的BOOT INTERNAL SRAM.其他的一樣.

          其實(shí).S3C2440把低1G的空間分成了8塊,由圖可知,第0至6這七塊的起始地址是不變的.而第七段的地址是可變的(它的地址有第六塊需要用到多少來(lái)決定,反正就是第六第七是連在一起的).前6塊可以是ROM SRAM .最后兩塊不但可以是ROM,SRAM外,還可以是SDRAM.其實(shí)啊,簡(jiǎn)單點(diǎn)的說(shuō),就是只有最后兩塊才能是SDRAM.也就是說(shuō)SDRAM必須要映射到這兩塊里面.mini2440就是選擇映射在第七塊上,所以SDRAM的起始地址是0x3000_0000(這就是手冊(cè)上為什么在加載測(cè)試程序時(shí)DNW的初始值要設(shè)為這個(gè),它就是為了想程序直接加載到SDRAM上,這只是做實(shí)驗(yàn)而且,掉電后還是會(huì)丟失的.所以做產(chǎn)品時(shí)是不可能這樣做的).

          剛剛說(shuō)S3C2440把存儲(chǔ)空間分為8塊,它為什么要這么做呢?其實(shí)很簡(jiǎn)單,即使它不這么做,我們也會(huì)這么做的.先了算一算數(shù):每塊128M,那就是需要27根地址線來(lái)尋址.而8塊呢就跟著引出與之一一對(duì)應(yīng)的8跟片選引腳.講到這聰明的讀者必能想到.其實(shí)這8根片選引腳就是里面用3根地址線譯碼出來(lái)的.所以一共用了30根地址線,30根不正好是1G么.呵呵.

          說(shuō)的差不多了.應(yīng)該有很多需要完善的,但是這對(duì)于初學(xué)者來(lái)說(shuō)還是有一定的幫助吧?


          S3C2440 MEMORY CONTROLLER詳解


          BANK0總線寬度由OM[1:0]引腳決定,當(dāng)OM[1:0]=01時(shí),booting ROM data width是16位,當(dāng)[1:0]=10時(shí),booting ROM data width是32位,當(dāng)OM[1:0]=00時(shí),從NAND FLASH啟動(dòng)。在友善之臂S3C2440開發(fā)板上,OM1引腳直接接地。

          依據(jù)這張表,可以查找到SDRAM的BANK選擇引腳連接方式,比如,我們使用的SDRAM是2片HYNIX的HY57V561620(L)T,它的規(guī)格是4*4M*16bit(使用兩片是為了配置成32位的總線寬度),BANK大小是4M*16=64MB,總線寬度是32位,器件大小是4*BANK大小=256Mb(M bit的意思吧),寄存器配置就是(4M*16*4B)*2( M bit ),根據(jù)上面的表格,SDRAM上的BANK地址引腳(BA[1:0])與S3C2440的A[25:24]相連。
          上表是寄存器控制地址總線連接方式,我們使用2片SDRAM配置成32位的總線寬度,所以SDRAM上的A[12:0]接到S3C2440的A[14:2]引腳。
          具體的S3C2440與兩片SDRAM接線方式如下圖所示:

          SDRAM的工作時(shí)序作為ARM工程師了解即可,具體的讀寫控制由寄存器控制器完成,作為FPGA工程師則需要詳細(xì)了解SDRAM工作原理與時(shí)序,在此不再贅述。作為ARM工程師,最重要的是準(zhǔn)確配置與SDRAM相關(guān)的寄存器。


          軟件可編程的大小端模式;

          地址空間:每個(gè)BANK可尋址128MB(總共8個(gè)BANK 1GB空間);

          可編程的訪問(wèn)位寬:BANK0為16或32位,其他BANK為8或16或32位;

          8個(gè)存儲(chǔ)器BANK,其中6個(gè)用于ROM或者SRAM,2個(gè)用于ROM、SRAM或者SDRAM;

          BANK0~BANK6的起始地址固定;

          BANK7的起始地址和大小可編程;

          所有存儲(chǔ)器BANK的訪問(wèn)周期可編程;

          外部wait信號(hào)可延長(zhǎng)總線周期;

          支持SDRAM的自刷新和掉電模式。




          評(píng)論


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

          關(guān)閉