S3C2410外圍存儲(chǔ)系統(tǒng)的研究與設(shè)計(jì)_第1頁(yè)
S3C2410外圍存儲(chǔ)系統(tǒng)的研究與設(shè)計(jì)_第2頁(yè)
S3C2410外圍存儲(chǔ)系統(tǒng)的研究與設(shè)計(jì)_第3頁(yè)
S3C2410外圍存儲(chǔ)系統(tǒng)的研究與設(shè)計(jì)_第4頁(yè)
S3C2410外圍存儲(chǔ)系統(tǒng)的研究與設(shè)計(jì)_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、摘  要:針對(duì)Linux移植S3C2410微處理器系統(tǒng)開(kāi)發(fā)的需要,設(shè)計(jì)了S3C2410外圍存儲(chǔ)系統(tǒng)。本文研究了S3C2410的尋址原理,并結(jié)合該芯片SDRAM時(shí)序圖詳細(xì)分析了其對(duì)SDRAM尋址的全過(guò)程。介紹了與存儲(chǔ)系統(tǒng)設(shè)計(jì)相關(guān)的控制寄存器和引腳,給出了與Flash和SDRAM的硬件電路連接圖。最后在啟動(dòng)代碼U-Boot下實(shí)現(xiàn)了存儲(chǔ)系統(tǒng)的初始化。嵌入式開(kāi)發(fā)人員可以根據(jù)開(kāi)發(fā)需要借鑒本文的設(shè)計(jì)思路擴(kuò)展其它ARM核芯片的存儲(chǔ)系統(tǒng)。 關(guān)鍵詞:S3C2410;尋址原理;SDRAM尋址機(jī)制;U-Boot 0 引言Samsung公司推出的基于ARM920T內(nèi)核的16/32位RISC微處理器

2、S3C2410,為手持設(shè)備和一般類型應(yīng)用提供了低價(jià)格、低功耗、高性能小型微控制器的解決方案。為了降低整個(gè)系統(tǒng)的成本,S3C2410提供了豐富的內(nèi)部設(shè)備。其中加強(qiáng)的ARM體系結(jié)構(gòu)MMU用于支持WinCE,EPOC32和Linux。隨著技術(shù)的進(jìn)步和發(fā)展,電子產(chǎn)品的功能日益強(qiáng)大,而嵌入式操作系統(tǒng)可以有效地管理各項(xiàng)功能,并且能夠縮短產(chǎn)品開(kāi)發(fā)周期,因此將微處理器與嵌入式操作系統(tǒng)進(jìn)行聯(lián)合開(kāi)發(fā)成為一種趨勢(shì),然而微處理器的片內(nèi)存儲(chǔ)資源有限,若要進(jìn)行嵌入式系統(tǒng)的移植,必須擴(kuò)展其存儲(chǔ)系統(tǒng)。對(duì)于嵌入式系統(tǒng)的開(kāi)發(fā)人員來(lái)說(shuō),深入理解其存儲(chǔ)系統(tǒng)原理和有效地管理存儲(chǔ)系統(tǒng)對(duì)正確高效地設(shè)計(jì)嵌入式系統(tǒng)的硬件和底層軟件編程具有重要

3、的意義1。1 S3C2410的尋址原理ARM920T內(nèi)核提供了32位的地址總線,可以訪問(wèn)4G(232)的線性地址空間,而S3C2410的內(nèi)部地址總線是30bit(HADDR29:0),能夠訪問(wèn)的最大外部地址空間是230,即1G的地址空間0x000000000x3FFFFFFFF,可見(jiàn)S3C2410僅利用了ARM920T的32位地址總線的低30位,并且是一一對(duì)應(yīng)相連的1。由表1可知S3C2410將1G的外部地址空間分成了8個(gè)存儲(chǔ)器組,每個(gè)組的大小為128M,其中6個(gè)用于ROM、SRAM等存儲(chǔ)器,2個(gè)用于ROM、SRAM、SDRAM等存儲(chǔ)器?;谛酒w積及成本的考慮,當(dāng)S3C2410對(duì)外尋址時(shí),采

4、用了部分譯碼的方式,即低位地址線用于外圍存儲(chǔ)器的片內(nèi)尋址,而高位地址線用于外圍存儲(chǔ)器的片外尋址。如表1所示,由于每個(gè)存儲(chǔ)器組的起始地址及空間大小固定,對(duì)于系統(tǒng)要訪問(wèn)的任意外部地址,S3C2410可以方便地利用內(nèi)部地址總線的高3位HADDR29:27來(lái)選擇該地址屬于哪一個(gè)存儲(chǔ)器組(Bank),從而激活相應(yīng)的Bank選擇信號(hào),并且使用外部地址總線A26:0來(lái)實(shí)現(xiàn)相應(yīng)Bank的內(nèi)部尋址,尋址范圍為128M(227),從而使得其外圍地址訪問(wèn)空間為1GB(128MB×8)。S3C2410正是通過(guò)這種機(jī)制來(lái)完成外部地址空間的尋址全過(guò)程。表 1 S3C2410存儲(chǔ)器組片選激活及地址空間分配HADD

5、R29HADDR28HADDR27片選信號(hào)片選控制寄存器地址空間000nGCS0BANKCON00x000000000x07FFFFFF001nGCS1BANKCON10x080000000x0FFFFFFF010nGCS2BANKCON20x100000000x17FFFFFF011nGCS3BANKCON30x180000000x1FFFFFFF100nGCS4BANKCON40x200000000x27FFFFFF101nGCS5BANKCON50x280000000x2FFFFFFF110nGCS6BANKCON60x300000000x37FFFFFF111nGCS7BANKCON7

6、0x380000000x3FFFFFFF S3C2410訪問(wèn)SDRAM地址空間的過(guò)程比較難理解,這主要和SDRAM的存儲(chǔ)結(jié)構(gòu)有關(guān)。為了更深入地理解其尋址機(jī)制,筆者以SDRAM芯片HY57V561620B(32MB)為例進(jìn)行詳細(xì)地說(shuō)明。該芯片的內(nèi)部存儲(chǔ)結(jié)構(gòu)是4Banks×4M×16Bit,即共有4個(gè)Bank,每個(gè)Bank中有4M個(gè)半字(16Bit)。Bank地址可以通過(guò)BA1:0與地址總線的高位相連來(lái)確定,具體BA1:0與哪個(gè)地址位相連,不同的SDRAM存儲(chǔ)系統(tǒng)有不同的方案,詳見(jiàn)參考文獻(xiàn)3。而每個(gè)Bank中的存儲(chǔ)單元由行地址和列地址來(lái)唯一標(biāo)識(shí)1,該芯片通過(guò)行地址鎖存

7、引腳nRAS和列地址鎖存引腳nCAS分別與S3C2410的引腳nSRAS(SDRAM行地址選通信號(hào))和nSCAS(SDRAM列地址選通信號(hào))連接,從地址總線獲得行地址和列地址。而且列地址的位數(shù)可以在BANKCONn(n6,7)的中的SCANBANKCONn 1:0來(lái)配置,008-bit,019-bit,1010-bit,其復(fù)位值為00,即8bit。在實(shí)際工作中,如圖1所示,在第3個(gè)總線時(shí)鐘,nSCS為低電平,表示SDRAM被選中,并且地址線的Bank地址與相應(yīng)的行地址同時(shí)發(fā)出,這個(gè)命令稱之為“行有效”或“行激活”(Row Active)。此時(shí)SDRAM將行地址鎖存(nSRAS有效),但還沒(méi)有執(zhí)

8、行寫(xiě)命令(nWE為高電平),因?yàn)闆](méi)有列地址(nSCAS為高電平),存儲(chǔ)單元無(wú)法確定。經(jīng)過(guò)Trcd(RAS至CAS延遲)后,SDRAM再次被選中(nSCS為低電平),此時(shí)nSCAS為低電平,指示SDRAM此時(shí)地址線上的地址為列地址,同時(shí)nWE有效,寫(xiě)操作被執(zhí)行??梢?jiàn)發(fā)送列地址尋址命令與具體的操作命令(是讀還是寫(xiě)),這兩個(gè)命令也是同時(shí)發(fā)出的,所以一般都會(huì)以“讀/寫(xiě)命令”來(lái)表示列尋址,相關(guān)的列地址被選中之后,將會(huì)觸發(fā)數(shù)據(jù)傳輸。至此,S3C2410對(duì)SDRAM的尋址就完成了??梢?jiàn),S3C2410將地址總線上的地址分成行地址和列地址并分開(kāi)傳輸給SDRAM?;谏鲜龅膶ぶ窓C(jī)制,由BA1:0和12根地址線就

9、可以尋址32M或更大的地址空間了。圖 1 S3C2410 SDRAM時(shí)序圖2 存儲(chǔ)器控制器和相關(guān)引腳介紹S3C2410存儲(chǔ)器控制器主要有:總線帶寬和等待控制寄存器(BWSCON);總線控制寄存器(BANKCONN:nGCS0-nGCS5);BANK控制寄存器(BANKCONn:nGCS6-nGCS7);刷新控制寄存器(REFRESH);BANKSIZE寄存器;SDRAM模式寄存器集寄存器(MRSR)等,詳情請(qǐng)見(jiàn)參考文獻(xiàn)3。S3C2410提供了相關(guān)的引腳來(lái)控制存儲(chǔ)器訪問(wèn):組選擇信號(hào):nGCS0-nGCS5,nGCS6(nSCS0),nGCS7(nSCS1)引腳用來(lái)選擇相應(yīng)的存儲(chǔ)器組。訪問(wèn)控制信號(hào)

10、:為了實(shí)現(xiàn)ARM存儲(chǔ)器訪問(wèn)指令LDR/STR字節(jié)、半字和字訪問(wèn)的三種方式,在S3C2410的存儲(chǔ)器組中,除了Bank0以外的所有地址空間都可以通過(guò)編程設(shè)置為8位、16位或32位對(duì)準(zhǔn)訪問(wèn),Bank0可以設(shè)置為16位或32位。引腳nWBE3:0(寫(xiě)字節(jié)使能)實(shí)現(xiàn)8bit ROM芯片組的三種訪問(wèn)方式,或者SRAM不使用UB/LB(在BWSCON中設(shè)置)的情況下,與UB/LB連接。引腳nBE3:0(在使用SRAM情況下的字節(jié)允許信號(hào))在SRAM使用UB/LB(是否使用可在BWSCON中設(shè)置)的情況下與UB/LB連接。DQM3:0(SDRAM數(shù)據(jù)屏蔽信號(hào))引腳實(shí)現(xiàn)對(duì)SDRAM的三種訪問(wèn)。還有nWAIT、

11、nXBREQ/nXBACK引腳。3 硬件電路設(shè)計(jì)在本嵌入式系統(tǒng)開(kāi)發(fā)實(shí)驗(yàn)中,S3C2410擴(kuò)展的存儲(chǔ)系統(tǒng)采用了英國(guó)Intel公司的16M E28F128J3A-150 NOR Flash芯片,以及Hynix公司的32M HY57V561620B SDRAM芯片。地址空間分配如下:Flash為Bank0中的0x000000000x07FFFFFF地址段,而SDRAM為Bank6中的0x300000000x37FFFFFF地址段,具體的電路連接如圖2。圖 2 S3C2410 與Flash、SDRAM的電路連接圖4 存儲(chǔ)系統(tǒng)初始化U-Boot是德國(guó)DENX小組的開(kāi)發(fā)用于多種嵌入式CPU的開(kāi)放源代碼bo

12、otloader程序,目前最新版本是1.1.6,本實(shí)驗(yàn)使用的是U-Boot-1.1.4。U-Boot是在ppcboot以及armboot的基礎(chǔ)上發(fā)展而來(lái),現(xiàn)已非常成熟和穩(wěn)定,已經(jīng)在許多嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中被采用。其支持多種目標(biāo)操作系統(tǒng),其中對(duì)Linux的支持最完善,是嵌入式Linux Bootloader的最佳選擇。由于本實(shí)驗(yàn)Linux要移植的開(kāi)發(fā)板是基于s3c2410的開(kāi)發(fā)板,在U-Boot中已有移植成功的smdk2410開(kāi)發(fā)板,故以smdk2410開(kāi)發(fā)板上運(yùn)行的U-Boot為模板設(shè)計(jì)適合本實(shí)驗(yàn)的U-Boot。有關(guān)存儲(chǔ)系統(tǒng)的初始化修改如下:(1)Flash驅(qū)動(dòng)程序采用了board/Cmi/F

13、lash.c,由于cmi中的flash.c在寫(xiě)入時(shí)要交換字節(jié),因而刪除了它的write_short()和write_buff()函數(shù),利用board/ep7312/Flash.c中的write_word()和write_buff()函數(shù),并且把flash.c中的FLASH_BASE0_PRELIM改為CFG_FLASH_BASE。把FLASH_BLOCK_SIZE改為0x20000,(E28F128J3A flash中塊的大小是128K)。(2)Board/ smdk2410/smdk2410.c中函數(shù)dram_init()定義了SDRAM的真實(shí)地址和實(shí)際大小。由于本實(shí)驗(yàn)中,SDRA

14、M的大小為32M,所以修改Include/configs/Smdk2410.h中的PHYS_SDRAM_1_SIZE,改為0x02000000。(3)將如下代碼替代原來(lái)在Include/configs/Smdk2410.h的/*FLASH and environment organization*/一欄中的內(nèi)容。#define PHYS_FLASH_1 0x00000000                /* Fla

15、sh Bank #1 */ #define PHYS_FLASH_SIZE 0x01000000           /* 16 MB */ #define CFG_FLASH_PROTECTION #define CFG_FLASH_BASE PHYS_FLASH_1 #define CFG_MONITOR_BASE PHYS_FLASH_1 #define

16、0;CFG_MAX_FLASH_BANKS 1        /* max number of memory banks */ #define CFG_MAX_FLASH_SECT 128              /* max number of sectors

17、60;on one chip */ #define CFG_FLASH_ERASE_TOUT (2*CFG_HZ)    /* Timeout for Flash Erase */ #define CFG_FLASH_WRITE_TOUT (2*CFG_HZ)   /* Timeout for Flash Write */ #define CFG_ENV_IS_IN_

18、FLASH 1 #define CFG_ENV_ADDR (PHYS_FLASH_1 + 0x60000) #define CFG_ENV_SIZE 0x20000                     /* Total Size of Environment Sector */如上分析,SDRAM和Flash的初始化信息分別在smdk2410.c和flash.c文件中定義了,最后是通過(guò)lib_arm/board.c文件的display_dram_config()和display_flash_config()函數(shù)來(lái)顯示的。5 結(jié)束語(yǔ)本文結(jié)合實(shí)際實(shí)驗(yàn),分析了S3C2410的存儲(chǔ)系統(tǒng)原理,完成了其外

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論