淺談SDRAM在windows CE系統(tǒng)中的應(yīng)用設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
隨著嵌入式產(chǎn)品的發(fā)展,各種嵌入式操作系統(tǒng),以及嵌入式上層應(yīng)用軟件層出不窮。國(guó)內(nèi)普遍認(rèn)同的嵌入式系統(tǒng)定義為:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)??梢赃@樣認(rèn)為,嵌入式系統(tǒng)是一種專(zhuān)用的計(jì)算機(jī)系統(tǒng),作為裝置或設(shè)備的一部分。通常,嵌入式系統(tǒng)是一個(gè)控制程序存儲(chǔ)在ROM中的嵌入式處理器控制板。事實(shí)上,所有帶有數(shù)字接口的設(shè)備,如手表、微波爐、錄像機(jī)、汽車(chē)等,都使用嵌入式系統(tǒng),有些嵌入式系統(tǒng)還包含操作系統(tǒng),但大多數(shù)嵌入式系統(tǒng)都是是由單個(gè)程序?qū)崿F(xiàn)整個(gè)控制邏輯。一個(gè)嵌入式系統(tǒng)裝置一般都由嵌入式計(jì)算機(jī)系統(tǒng)和執(zhí)行裝置組成,嵌入式計(jì)算機(jī)系統(tǒng)是整個(gè)嵌入式系統(tǒng)的核心,由硬件層、中間層、系統(tǒng)軟件層和應(yīng)用軟件層組成。執(zhí)行裝置也稱(chēng)為被控對(duì)象,它可以接受嵌入式計(jì)算機(jī)系統(tǒng)發(fā)出的控制命令,執(zhí)行所規(guī)定的操作或任務(wù)。執(zhí)行裝置可以很簡(jiǎn)單,如手機(jī)上的一個(gè)微小型的電機(jī),當(dāng)手機(jī)處于震動(dòng)接收狀態(tài)時(shí)打開(kāi);也可以很復(fù)雜,如SONY 智能機(jī)器狗,上面集成了多個(gè)微小型控制電機(jī)和多種傳感器,從而可以執(zhí)行各種復(fù)雜的動(dòng)作和感受各種狀態(tài)信息。
1 隨機(jī)存儲(chǔ)器介紹
隨機(jī)存儲(chǔ)器主要分為靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DRAM)及SDRAM。1個(gè)SRAM單元通常由4~6個(gè)晶體管組成,當(dāng)這個(gè)SRAM單元被賦予O或者1的狀態(tài)之后,它會(huì)保持這個(gè)狀態(tài)直到下次被賦予新的狀態(tài)或者斷電之后才會(huì)更改或者消失。SRAM的讀寫(xiě)速度相對(duì)比較快,而且比較省電,但是存儲(chǔ)1 b的信息需要4~6只晶體管。DRAM和SDRAM必須在一定的時(shí)間內(nèi)不停地刷新才能保持其中存儲(chǔ)的數(shù)據(jù),但存儲(chǔ)1 b的信息只要1只晶體管就可以實(shí)現(xiàn)。RAM(隨機(jī)存取存儲(chǔ)器)RAM -random access memory 隨機(jī)存儲(chǔ)器。存儲(chǔ)單元的內(nèi)容可按需隨意取出或存入,且存取的速度與存儲(chǔ)單元的位置無(wú)關(guān)的存儲(chǔ)器。這種存儲(chǔ)器在斷電時(shí)將丟失其存儲(chǔ)內(nèi)容,故主要用于存儲(chǔ)短時(shí)間使用的程序。 按照存儲(chǔ)信息的不同,隨機(jī)存儲(chǔ)器又分為靜態(tài)隨機(jī)存儲(chǔ)器(Static RAM,SRAM)和動(dòng)態(tài)隨機(jī)存儲(chǔ)器(Dynamic RAM,DRAM)。在計(jì)算機(jī)的組成結(jié)構(gòu)中,有一個(gè)很重要的部分,就是存儲(chǔ)器。存儲(chǔ)器是用來(lái)存儲(chǔ)程序和數(shù)據(jù)的部件,對(duì)于計(jì)算機(jī)來(lái)說(shuō),有了存儲(chǔ)器,才有記憶功能,才能保證正常工作。存儲(chǔ)器的種類(lèi)很多,按其用途可分為主存儲(chǔ)器和輔助存儲(chǔ)器,主存儲(chǔ)器又稱(chēng)內(nèi)存儲(chǔ)器(簡(jiǎn)稱(chēng)內(nèi)存),輔助存儲(chǔ)器又稱(chēng)外存儲(chǔ)器(簡(jiǎn)稱(chēng)外存)。外存通常是磁性介質(zhì)或光盤(pán),像硬盤(pán),軟盤(pán),磁帶,CD等,能長(zhǎng)期保存信息,并且不依賴(lài)于電來(lái)保存信息,但是由機(jī)械部件帶動(dòng),速度與CPU相比就顯得慢的多。
2 硬件設(shè)計(jì)方案
2.1 SDRAM工作原理
SDRAM本身是由多個(gè)Bank區(qū)域構(gòu)成,對(duì)SDRAM的操作實(shí)際上是通過(guò)區(qū)域片選信號(hào)對(duì)單獨(dú)Bank進(jìn)行的操作。SDRAM中單個(gè)Bank的讀取過(guò)程如圖1所示。
(1)通過(guò)地址總線(xiàn)將行地址傳輸?shù)降刂芬_;
(2)RAS(行地址使能信號(hào))被激活,這樣行地址被傳送到行地址門(mén)閂線(xiàn)路中;
(3)行地址解碼器根據(jù)接收到的數(shù)據(jù)選擇相應(yīng)的行;
(4)wE(寫(xiě)使能信號(hào))引腳確定不被激活,所以SDRAM知道它不會(huì)進(jìn)行寫(xiě)操作;
(5)列地址通過(guò)地址總線(xiàn)傳輸?shù)降刂芬_;
(6)CAS(列地址使能信號(hào))引腳被激活,這樣地址被傳送到列地址門(mén)閂線(xiàn)路中;
(7)DQM(輸出使能)引腳被激活,數(shù)據(jù)向外輸出。
這就完成了一個(gè)單Bank的讀操作,在讀取數(shù)據(jù)的過(guò)程中行列地址的尋址過(guò)程是通過(guò)兩個(gè)時(shí)鐘周期實(shí)現(xiàn)的,在第一個(gè)時(shí)鐘周期使能行地址,下一個(gè)時(shí)鐘周期使能列地址。
SDRAM寫(xiě)入的過(guò)程和讀取過(guò)程是基本一樣的,只需要將wE信號(hào)激活。
2.2 硬件設(shè)計(jì)
對(duì)于SDRAM的硬件設(shè)計(jì)需要確定3個(gè)方面的內(nèi)容:通過(guò)處理器的特性選擇SDRAM的型號(hào);確定SDRAM地址線(xiàn)、數(shù)據(jù)線(xiàn)的連接方式;確定SDRAM控制信號(hào)線(xiàn)的連接方式。
2.2.1 SDRAM的選擇
該平臺(tái)處理器選擇Intel公司XSCALE架構(gòu)的PXA255,它針對(duì)于SDRAM有4根專(zhuān)用的動(dòng)態(tài)片選信號(hào),能夠支持4塊內(nèi)存區(qū)域,如圖2所示。
其中每塊區(qū)域所能支持到的最大物理地址為64 MB。并且每一塊內(nèi)存區(qū)域均可使用16 b或32 b的SDRAM。
在硬件設(shè)計(jì)過(guò)程中考慮到硬件使用的可調(diào)節(jié)性,采用8片16 b×4 MB×4 Bank的SDRAM,共搭建了256 MB的極限存儲(chǔ)空間。其中,SDRAM選擇型號(hào)為三星公司的K4S561632E。
2.2.2 數(shù)據(jù)線(xiàn)、地址線(xiàn)的分配
PXA255處理器共有32位數(shù)據(jù)線(xiàn)和26位地址線(xiàn)。故在硬件設(shè)計(jì)時(shí)需要并行處理2塊16 b的SDRAM,分別連接高位和低位的16根數(shù)據(jù)線(xiàn)。
對(duì)于地址線(xiàn)的連接,首先需要參考SDRAM的數(shù)據(jù)手冊(cè),確定SDRAM行列地址線(xiàn)的個(gè)數(shù)。其次根據(jù)處理器數(shù)據(jù)手冊(cè)確定具體地址線(xiàn)的連接方式。
在三星K4S561632E的數(shù)據(jù)手冊(cè)中是這樣給出的,如表1所示。
從表1中可以得出行列復(fù)用13根地址線(xiàn),其中行地址13根,列地址9根,共組成22根地址線(xiàn)的尋址空間。在處理器PXA255中,給SDRAM分配的地址線(xiàn)空間是從A10~A22。這樣就可以完全確定地址線(xiàn)和數(shù)據(jù)線(xiàn)的連接方式,如圖3所示。
2.2.3 控制信號(hào)線(xiàn)的連接方式
對(duì)于SDRAM需要確定的控制線(xiàn)包括時(shí)鐘信號(hào)線(xiàn)、區(qū)域片選信號(hào)線(xiàn)及Bank片選信號(hào)線(xiàn)。對(duì)于這三類(lèi)信號(hào)線(xiàn)PXA255處理器是這樣給出的,即:
(1)每?jī)山M內(nèi)存區(qū)域使用同一組時(shí)鐘信號(hào)線(xiàn),即每128 MB的內(nèi)存空間使用同一根時(shí)鐘信號(hào)線(xiàn),故在設(shè)計(jì)中使用了2組時(shí)鐘信號(hào)線(xiàn)。
(2)共有4根區(qū)域片選信號(hào),分別控制64 MB的物理地址空間。最大支持到256 MB的物理地址空間。
(3)地址線(xiàn)的23,24位用來(lái)實(shí)現(xiàn)對(duì)SDRAM內(nèi)部Bank的選擇。
2.3 硬件的移植
針對(duì)于PXA27x系列的高端處理器,Intel并沒(méi)有對(duì)SDRAM部分做本質(zhì)上的改動(dòng),仍然是4根動(dòng)態(tài)片選信號(hào),故硬件方面的設(shè)計(jì)可以完全移植到PXA27x系列的處理器中。
3 軟件設(shè)計(jì)方案
Windows CE操作系統(tǒng)下對(duì)內(nèi)存的驅(qū)動(dòng)代碼主要分為兩個(gè)部分,首先在BootLoader中對(duì)SDRAM進(jìn)行底層初始化;其次在系統(tǒng)BSP包內(nèi)需要將SDRAM所對(duì)應(yīng)的物理地址映射為Windows CE下能夠識(shí)別的虛擬地址。
控制線(xiàn)的連接方式如圖4所示。
3.1 BootLoader代碼的買(mǎi)現(xiàn)
BootLoader是系統(tǒng)運(yùn)行的起始點(diǎn),它包含著系統(tǒng)運(yùn)行的第一行代碼。BootLoader本身也是一個(gè)功能完整的微型操作系統(tǒng),在內(nèi)部需要實(shí)現(xiàn)任務(wù)調(diào)度、內(nèi)存管理、文件系統(tǒng),以及各種必要設(shè)備驅(qū)動(dòng)程序的配置??刂凭€(xiàn)的連接方式如圖4所示。
(1)頻率設(shè)置
完成寄存器的復(fù)值,其中r3的選擇為F即就是0x1111,打開(kāi)4片內(nèi)存區(qū)域。
(3) 刷新間隔設(shè)置。關(guān)于刷新間隔值(DIR)的計(jì)算在手冊(cè)中是這樣給出的:
目前公認(rèn)的標(biāo)準(zhǔn)是,存儲(chǔ)體中電容的數(shù)據(jù)有效保存期上限是64 ms,也就是說(shuō)每一行刷新的循環(huán)周期是64 ms。這樣刷新速度為:64 ms/行數(shù)量。由于行地址有13位(在MDCNFG寄存器的DRACO[1:0]中設(shè)置,需要與硬件一致)。
(4) 潛伏期的設(shè)置。潛伏期是指SDRAM在讀寫(xiě)過(guò)程中所存在的延遲,潛伏期的時(shí)間長(zhǎng)度是由以下幾個(gè)參數(shù)共同決定的:
CL:在選定列地址后,就已經(jīng)確定了具體的存儲(chǔ)單元,剩下的事情就是數(shù)據(jù)通過(guò)數(shù)據(jù)I/O通道(數(shù)據(jù)總線(xiàn))輸出到內(nèi)存總線(xiàn)上。但是在CAS發(fā)出之后,仍要經(jīng)過(guò)一定的時(shí)間才能有數(shù)據(jù)輸出,從CAS與讀取命令發(fā)出到第一筆數(shù)據(jù)輸出的這段時(shí)間被稱(chēng)為讀取潛伏期。tRP:在發(fā)出預(yù)充電命令之后,要經(jīng)過(guò)一段時(shí)間才能允許發(fā)送行有效命令打開(kāi)新的工作行,這個(gè)間隔被稱(chēng)為預(yù)充電有效周期(Precharge command Period)。tRCD:在發(fā)送列讀寫(xiě)命令時(shí)必須要與行有效命令有一個(gè)間隔,這個(gè)間隔被定義為tRCD,即RAS to CASDelay(RAS至CAS延遲),也可以理解為行選通周期。tRAS:行有效至預(yù)充電命令間隔周期。tRC:包括行單元開(kāi)啟和行單元刷新在內(nèi)的整個(gè)過(guò)程所需要的時(shí)間。
所有參數(shù)可以從SDRAM數(shù)據(jù)手冊(cè)得到,計(jì)算出理論潛伏期時(shí)長(zhǎng)為200/μs。
(5)其他設(shè)置
設(shè)置操作系統(tǒng)的入口點(diǎn),這里用到的虛擬地址需要與系統(tǒng)中建立的映射表相對(duì)應(yīng)。
3.2 BSP內(nèi)代碼的實(shí)現(xiàn)
Windows cE系統(tǒng)啟動(dòng)中,對(duì)SDRAM的操作分為兩個(gè)部分:首先對(duì)SDRAM的物理空間進(jìn)行分配;其次將SDRAM所對(duì)應(yīng)的物理地址轉(zhuǎn)換為虛擬地址。
3.2.1 地址的分配
地址的分配和系統(tǒng)加載的順序有著密切的關(guān)系。首先要在內(nèi)存中開(kāi)辟一段空間用來(lái)存放啟動(dòng)代碼BootLoader,它被存放在sDRAM的第一個(gè)區(qū)域空間內(nèi)。當(dāng)發(fā)生外部復(fù)位中斷時(shí)系統(tǒng)會(huì)從這里重新開(kāi)始運(yùn)行。其次分配操作系統(tǒng)內(nèi)核空間,它被存放在SDRAM的第二個(gè)區(qū)域,以便使BootLoader能夠順利加載操作系統(tǒng)內(nèi)核。
3.2.2 地址的映射
在操作系統(tǒng)中,需要把SDRAM的空間連續(xù)起來(lái)并作為首地址,不僅方便內(nèi)存管理,而且當(dāng)應(yīng)用程序申請(qǐng)大塊內(nèi)存時(shí),操作系統(tǒng)內(nèi)核也可方便的分配。這就引入了將不連續(xù)的物理地址空間映射為連續(xù)的虛擬地址空間。PXA255的SDRAM起始物理地址OxA0000000,可將其映射為0x80000000,這里0x80000000將作為系統(tǒng)虛擬空間的起始地址,當(dāng)有IRQ中斷發(fā)生時(shí),系統(tǒng)PC指針會(huì)重新指向這個(gè)地址。
3.2.3 軟件的移植
針對(duì)于PXA27x系列的高端處理器,微軟在Plat-Build 5.0中給出了相對(duì)應(yīng)的內(nèi)核代碼雖然在內(nèi)核代碼的架構(gòu)上有了很大的變化,但對(duì)于擴(kuò)展SDRAM的思想并沒(méi)有改變,首先在BootLoader中初始化所使用的SDRAM,其次在BSP內(nèi)建立地址映射表。
4 結(jié) 語(yǔ)
介紹了在嵌入式Windows CE系統(tǒng)平臺(tái)上,使用大容量SDRAM作為動(dòng)態(tài)存儲(chǔ)設(shè)備的方案。詳細(xì)介紹了sDRAM硬件連接方案以及軟件接口的實(shí)現(xiàn)。該方案已經(jīng)在工程設(shè)計(jì)中投入使用,其可以在同類(lèi)的嵌入式高端產(chǎn)品中推廣使用。
QICK