當(dāng)前位置:首頁(yè) > 智能硬件 > 智能硬件
[導(dǎo)讀]然而基于該芯片的存儲(chǔ)系統(tǒng)中有些問(wèn)題,如各種地址總線(xiàn)之間譯碼的問(wèn)題和在硬件級(jí)別上的尋址問(wèn)題以及其他問(wèn)題,因此本文試圖把這些問(wèn)題一一講述清楚,然后在此基礎(chǔ)上給出具體的存儲(chǔ)接口電路,最后簡(jiǎn)要闡述了基于該電路的存儲(chǔ)系統(tǒng)在uClinux中的實(shí)現(xiàn)和配置。

摘要:S3C4510B是三星公司生產(chǎn)的基于ARM核的16/32位RISC微處理器,因其很高的性?xún)r(jià)比而得到廣泛的應(yīng)用。然而基于該芯片的存儲(chǔ)系統(tǒng)中有些問(wèn)題,如各種地址總線(xiàn)之間譯碼的問(wèn)題和在硬件級(jí)別上的尋址問(wèn)題以及其他問(wèn)題,往往因?yàn)樵诂F(xiàn)有的文獻(xiàn)中沒(méi)有講到而令人感動(dòng)迷惑,但它們對(duì)系統(tǒng)硬件和軟件的設(shè)計(jì)卻非常重要,因此本文試圖把這些問(wèn)題一一講述清楚,然后在此基礎(chǔ)上給出具體的存儲(chǔ)接口電路,最后簡(jiǎn)要闡述了基于該電路的存儲(chǔ)系統(tǒng)在uClinux中的實(shí)現(xiàn)和配置。
關(guān)鍵詞:尋址,內(nèi)部系統(tǒng)總線(xiàn),外部地址總線(xiàn),Bank地址

1.     引言 

     對(duì)于嵌入式系統(tǒng)的開(kāi)發(fā)人員來(lái)說(shuō),深刻地理解其存儲(chǔ)系統(tǒng)的尋址原理和有效的管理存儲(chǔ)系統(tǒng)對(duì)正確高效地設(shè)計(jì)嵌入式系統(tǒng)的硬件和底層軟件編程具有重要的意義。目前嵌入式系統(tǒng)中最常用的存儲(chǔ)器包括有EEPROM、FLASH、Normal DRAM和Sync.DRAM等。本文所采用的存儲(chǔ)器包括有SDRAM和FLASH。S3C4510B(以下簡(jiǎn)稱(chēng)4510)微處理器是構(gòu)建在ARM核ARM7TDMI之上的,ARM7TDMI的地址總線(xiàn)為32位的,4510的內(nèi)部系統(tǒng)總線(xiàn)卻是26bit:SA[25:0],它的外部地址總線(xiàn)卻是22bit:ADDR[21:0],它們之間是如何譯碼的,而僅用14根外部地址總線(xiàn)為什么能夠訪問(wèn)多達(dá)16MB的內(nèi)存地址空間,本文就試圖回答這些問(wèn)題。最后還介紹了基于S3C4510B的存儲(chǔ)系統(tǒng)在硬件級(jí)別上的設(shè)計(jì)即接口設(shè)計(jì)和uClinux中對(duì)存儲(chǔ)系統(tǒng)編程的實(shí)現(xiàn)。

2.     基于S3C4510B的存儲(chǔ)系統(tǒng)原理

2.1. 32位地址總線(xiàn)與26位內(nèi)部系統(tǒng)總線(xiàn)的關(guān)系

    ARM7TDMI把存儲(chǔ)器看作是從零向上增長(zhǎng)的許多字節(jié)的線(xiàn)性集合,0字節(jié)到3字節(jié)為第一個(gè)字,4字節(jié)到7字節(jié)為第二個(gè)字如此等等,它的地址總線(xiàn)是32位的,而4510的內(nèi)部系統(tǒng)總線(xiàn)卻是26bit的,也就是說(shuō)它能夠?qū)ぶ返淖畲罂臻g是226byte,即64MB的地址空間0x0000000~0x3FFFFFF。很顯然構(gòu)建在ARM7TDMI上的RISC微控制器4510的內(nèi)部地址總線(xiàn)僅用到了ARM7TDMI的32位地址總線(xiàn)的低26位,并且是一一對(duì)應(yīng)的相連。

2.2. 4510尋址原理


     4510采用了統(tǒng)一編址的方式,將系統(tǒng)的片內(nèi)、片外存儲(chǔ)器、特殊功能寄存器和外部的I/O設(shè)備都映射到了64MB的地址空間,同時(shí)為便于管理,又將地址空間分為若干個(gè)存儲(chǔ)器組(Bank),包括6個(gè)ROM Bank、4個(gè)DRAM Bank、內(nèi)部SRAM和特殊寄存器組等,每一個(gè)存儲(chǔ)器組都對(duì)應(yīng)一個(gè)控制寄存器,可以通過(guò)配置其中的基指針(Base Pointer)和尾指針(End Pointer)來(lái)設(shè)定每個(gè)存儲(chǔ)器組的大小和位置。上圖是DRAM#(#取0~3)組的控制寄存器。[19:10]是DRAM組基指針,該設(shè)定值左移16位即為DRAM#組的起始物理地址。因此我們可以推出每個(gè)存儲(chǔ)器組的位置是通過(guò)4510的26位系統(tǒng)地址總線(xiàn)中高10位SA[25:16]來(lái)設(shè)定和區(qū)分的。[29:20]是DRAM組尾指針,該設(shè)定值左移16位-1即為DRAM#組的結(jié)束物理地址。因此我們還可以推出只要設(shè)定了任意一組控制寄存器中的基指針和尾指針,也就確定了該組存儲(chǔ)器在4510可尋址空間64MB中的位置和該組存儲(chǔ)器的大小,另一方面還可以得出如下結(jié)論:對(duì)于任一要尋址的系統(tǒng)地址,可以通過(guò)該地址的高10位來(lái)判斷它屬于哪一個(gè)存儲(chǔ)器組,而該地址的低16位就是它在所判斷存儲(chǔ)器組中的偏移地址。事實(shí)上4510正是通過(guò)這種機(jī)制來(lái)尋址的。4510把請(qǐng)求地址的高10位與所有的存儲(chǔ)器組的基指針相減來(lái)實(shí)現(xiàn)組選擇和計(jì)算偏移地址。當(dāng)選定了組和計(jì)算出偏移地址,4510就會(huì)產(chǎn)生相應(yīng)的組選擇信號(hào)并且通過(guò)物理地址總線(xiàn)用偏移地址去尋址外部存儲(chǔ)器,從而完成了尋址的全過(guò)程。

2.3. 26位內(nèi)部系統(tǒng)地址總線(xiàn)與22根外部地址總線(xiàn)的關(guān)系

    4510通過(guò)設(shè)定寄存器EXTDBWIHD的值可以支持同外部存儲(chǔ)器的8、16、32位接口,而SA[25:0]到ADDR[21:0]的地址譯碼就是依賴(lài)于這個(gè)不同接口的數(shù)據(jù)寬度。當(dāng)4510發(fā)出字訪問(wèn)信號(hào)時(shí),存儲(chǔ)系統(tǒng)忽略低2位SA[1:0],即SA[2]與ADDR[0]相連,依次類(lèi)推,直到SA[23]與ADDR[21]相連,同理當(dāng)發(fā)出半字訪問(wèn)信號(hào)時(shí),存儲(chǔ)系統(tǒng)忽略低位SA[0],即SA[1]與ADDR[0]相連,依次類(lèi)推,這樣做的目的就是在原理圖設(shè)計(jì)時(shí)4510的地址總線(xiàn)可以方便地與存儲(chǔ)器的地址總線(xiàn)一一對(duì)應(yīng)連接即可。

2.4. SDRAM的尋址問(wèn)題


    以SDRAM芯片HY57V1620HG為例說(shuō)明。該芯片的內(nèi)部存儲(chǔ)組織是4Banks*1M*16Bit,即共有4個(gè)Banks,每Bank中有1M個(gè)半字(16Bit)。因?yàn)樵撔酒_中有行地址鎖存引腳#RAS和列地址鎖存引腳#CAS,所以我們可以把每Bank看作如下圖所示的一張存儲(chǔ)單元陣列表格。其中每一個(gè)表格代表16Bit的數(shù)據(jù)存儲(chǔ)單元。在實(shí)際工作中,首先Bank地址與相應(yīng)的行地址是同時(shí)發(fā)出的,然后再同時(shí)發(fā)送列地址尋址命令與具體的操作命令(是讀還是寫(xiě)),這時(shí)我們就先后選中了Bank、行地址和列地址,因此也就唯一確定了該存儲(chǔ)單元陣列表格中的一個(gè)存儲(chǔ)單元。至此我們就能明白了僅用它的12根地址線(xiàn)卻能夠訪問(wèn)8MB地址空間的問(wèn)題。

3.     存儲(chǔ)系統(tǒng)接口電路具體設(shè)計(jì)



    從2.2節(jié)的分析可以知道所謂的片選信號(hào)對(duì)4510來(lái)說(shuō)就是存儲(chǔ)器組選擇信號(hào)。4510把nRCS<5:0>用作FLASH的片選信號(hào),把nSDCS[3:0]用作SDRAM的片選信號(hào)。從參考文獻(xiàn)3看到HY57V1620的LDQM和UDQM兩引腳是起到Data Input/Output Mask的作用。存儲(chǔ)系統(tǒng)是如何利用這兩個(gè)引腳的呢?當(dāng)4510執(zhí)行內(nèi)存中半字?jǐn)?shù)據(jù)讀取指令LDRH、字節(jié)數(shù)據(jù)讀取指令LDRB等指令時(shí),這兩個(gè)引腳就發(fā)揮作用了。例如當(dāng)執(zhí)行LDRB時(shí),4510就會(huì)發(fā)出控制信號(hào)使得SDRAM1的UDQM、SDRAM2的LDQM和UDQM有效,就是它們把32位數(shù)據(jù)中的高24位屏蔽掉,從而進(jìn)行字節(jié)讀取。LDQM是Low (byte) DQ Mask的縮寫(xiě)。UDQM則是Upper (byte) DQ Mask的縮寫(xiě)。DQ指SDRAM的輸入/輸出數(shù)據(jù)。

    上圖是存儲(chǔ)系統(tǒng)電路原理圖。兩片HY57V1620的并聯(lián)設(shè)計(jì)是為了充分發(fā)揮32位MPU的性能

4.  存儲(chǔ)系統(tǒng)在嵌入式操作系統(tǒng)uClinux中的實(shí)現(xiàn)與配置
    所謂的存儲(chǔ)系統(tǒng)在uClinux中的實(shí)現(xiàn)與配置實(shí)質(zhì)上就是對(duì)4510的各個(gè)存儲(chǔ)器組的控制寄存器進(jìn)行設(shè)置。此處運(yùn)用的是uClinux-Samsung-20020318.tar.gz版本。所謂配置存儲(chǔ)系統(tǒng)所有的4510相關(guān)特殊寄存器的宏定義在Linux-2.4.x/Include/Asm-armnommu/Arch-samsung/Hardware.h中。部分代碼如下:

…..

#define DSR0 (2<<0) /* ROM Bank0 數(shù)據(jù)寬度為半字*/

…..

#define DSD0 (3<<12) /* RAM Bank0數(shù)據(jù)寬度為字*/

…..

#define ROM_BASE0_R ((0x00000000>>16)<<10)/* ROM Bank0的基指針是0x000*/

…..

#define SDRAM_BASE0_R((0x01000000>>16)<<10) /* RAM Bank0基指針是0x0100*/

真正進(jìn)行存儲(chǔ)系統(tǒng)映射的代碼在Linux-
2.4.x/Arch/Armnommu/Boot/Compressed/head.S部分代碼如下:

…….

#ifdef CONFIG_ARCH_SAMSUNG

ldr r0, =SYSCFG/* 設(shè)定系統(tǒng)寄存器的值 */

ldr r1, =rSYSCFG

str r1, [r0]

adr r0, SDRAM_SYSINIT_RESET/* 設(shè)定初始化存儲(chǔ)映射 */

ldmia r0, {r1-r12}

ldr r0, =SYS_INIT_BASE/*該宏定義位于上面提到的Hardware.h中,是外部存儲(chǔ)寄存器組中第一個(gè)寄存器的地址*/

stmia r0, {r1-r12}

……

5.     結(jié)束語(yǔ)
    本文闡述了本人在嵌入式系統(tǒng)設(shè)計(jì)過(guò)程中遇到的關(guān)于存儲(chǔ)系統(tǒng)方面問(wèn)題,希望因同樣問(wèn)題感到迷惑的開(kāi)發(fā)人員能從本文中獲得啟發(fā)和幫助,從而能夠從更深的層次上理解和設(shè)計(jì)整個(gè)系統(tǒng)的硬件和軟件。

參考文獻(xiàn):
[1]      ARM7TDMI data sheet.pdf
[2]      um_s3c4510b_rev1.pdf
[3]      HY57V641620HG(L)T.pdf
[4]      中關(guān)村在線(xiàn),趙效民。理性VS激情,DDR內(nèi)存的終極優(yōu)化.2004-03-30
[5]     李駒光、聶雪媛、江澤明、王兆衛(wèi)。ARM應(yīng)用系統(tǒng)開(kāi)發(fā)詳解--基于S3C4510B的系統(tǒng)設(shè)計(jì)[M].清華大學(xué)出版社.2003-12-01
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉