基于S3C4510B的存儲系統(tǒng)原理與設(shè)計(jì)
出處:pgd_vinson 發(fā)布于:2006-09-13 16:14:58
摘要:S3C4510B是三星公司生產(chǎn)的基于ARM核的16/32位RISC微處理器,因其很高的性價(jià)比而得到廣泛的應(yīng)用。然而基于該芯片的存儲系統(tǒng)中有些問題,如各種地址總線之間譯碼的問題和在硬件級別上的尋址問題以及其他問題,往往因?yàn)樵诂F(xiàn)有的文獻(xiàn)中沒有講到而令人感動迷惑,但它們對系統(tǒng)硬件和軟件的設(shè)計(jì)卻非常重要,因此本文試圖把這些問題一一講述清楚,然后在此基礎(chǔ)上給出具體的存儲接口電路,簡要闡述了基于該電路的存儲系統(tǒng)在uClinux中的實(shí)現(xiàn)和配置。
1. 引言
對于嵌入式系統(tǒng)的開發(fā)人員來說,深刻地理解其存儲系統(tǒng)的尋址原理和有效的管理存儲系統(tǒng)對正確高效地設(shè)計(jì)嵌入式系統(tǒng)的硬件和底層軟件編程具有重要的意義。目前嵌入式系統(tǒng)中常用的存儲器包括有EEPROM、FLASH、Normal DRAM和Sync.DRAM等。本文所采用的存儲器包括有SDRAM和FLASH。S3C4510B(以下簡稱4510)微處理器是構(gòu)建在ARM核ARM7TDMI之上的,ARM7TDMI的地址總線為32位的,4510的內(nèi)部系統(tǒng)總線卻是26bit:SA[25:0],它的外部地址總線卻是22bit:ADDR[21:0],它們之間是如何譯碼的,而僅用14根外部地址總線為什么能夠訪問多達(dá)16MB的內(nèi)存地址空間,本文就試圖回答這些問題。還介紹了基于S3C4510B的存儲系統(tǒng)在硬件級別上的設(shè)計(jì)即接口設(shè)計(jì)和uClinux中對存儲系統(tǒng)編程的實(shí)現(xiàn)。
2. 基于S3C4510B的存儲系統(tǒng)原理
2.1. 32位地址總線與26位內(nèi)部系統(tǒng)總線的關(guān)系
ARM7TDMI把存儲器看作是從零向上增長的許多字節(jié)的線性集合,0字節(jié)到3字節(jié)為個(gè)字,4字節(jié)到7字節(jié)為第二個(gè)字如此等等,它的地址總線是32位的,而4510的內(nèi)部系統(tǒng)總線卻是26bit的,也就是說它能夠?qū)ぶ返目臻g是226byte,即64MB的地址空間0x0000000~0x3FFFFFF。很顯然構(gòu)建在ARM7TDMI上的RISC微控制器4510的內(nèi)部地址總線僅用到了ARM7TDMI的32位地址總線的低26位,并且是一一對應(yīng)的相連。
2.2. 4510尋址原理
4510采用了統(tǒng)一編址的方式,將系統(tǒng)的片內(nèi)、片外存儲器、特殊功能寄存器和外部的I/O設(shè)備都映射到了64MB的地址空間,同時(shí)為便于管理,又將地址空間分為若干個(gè)存儲器組(Bank),包括6個(gè)ROM Bank、4個(gè)DRAM Bank、內(nèi)部SRAM和特殊寄存器組等,每一個(gè)存儲器組都對應(yīng)一個(gè)控制寄存器,可以通過配置其中的基指針(Base Pointer)和尾指針(End Pointer)來設(shè)定每個(gè)存儲器組的大小和位置。上圖是DRAM#(#取0~3)組的控制寄存器。[19:10]是DRAM組基指針,該設(shè)定值左移16位即為DRAM#組的起始物理地址。因此我們可以推出每個(gè)存儲器組的位置是通過4510的26位系統(tǒng)地址總線中高10位SA[25:16]來設(shè)定和區(qū)分的。[29:20]是DRAM組尾指針,該設(shè)定值左移16位-1即為DRAM#組的結(jié)束物理地址。因此我們還可以推出只要設(shè)定了任意一組控制寄存器中的基指針和尾指針,也就確定了該組存儲器在4510可尋址空間64MB中的位置和該組存儲器的大小,另一方面還可以得出如下結(jié)論:對于任一要尋址的系統(tǒng)地址,可以通過該地址的高10位來判斷它屬于哪一個(gè)存儲器組,而該地址的低16位就是它在所判斷存儲器組中的偏移地址。事實(shí)上4510正是通過這種機(jī)制來尋址的。4510把請求地址的高10位與所有的存儲器組的基指針相減來實(shí)現(xiàn)組選擇和計(jì)算偏移地址。當(dāng)選定了組和計(jì)算出偏移地址,4510就會產(chǎn)生相應(yīng)的組選擇信號并且通過物理地址總線用偏移地址去尋址外部存儲器,從而完成了尋址的全過程。
2.3. 26位內(nèi)部系統(tǒng)地址總線與22根外部地址總線的關(guān)系
4510通過設(shè)定寄存器EXTDBWIHD的值可以支持同外部存儲器的8、16、32位接口,而SA[25:0]到ADDR[21:0]的地址譯碼就是依賴于這個(gè)不同接口的數(shù)據(jù)寬度。當(dāng)4510發(fā)出字訪問信號時(shí),存儲系統(tǒng)忽略低2位SA[1:0],即SA[2]與ADDR[0]相連,依次類推,直到SA[23]與ADDR[21]相連,同理當(dāng)發(fā)出半字訪問信號時(shí),存儲系統(tǒng)忽略低位SA[0],即SA[1]與ADDR[0]相連,依次類推,這樣做的目的就是在原理圖設(shè)計(jì)時(shí)4510的地址總線可以方便地與存儲器的地址總線一一對應(yīng)連接即可。
2.4. SDRAM的尋址問題
以SDRAM芯片HY57V1620HG為例說明。該芯片的內(nèi)部存儲組織是4Banks*1M*16Bit,即共有4個(gè)Banks,每Bank中有1M個(gè)半字(16Bit)。因?yàn)樵撔酒_中有行地址鎖存引腳#RAS和列地址鎖存引腳#CAS,所以我們可以把每Bank看作如下圖所示的一張存儲單元陣列表格。其中每一個(gè)表格代表16Bit的數(shù)據(jù)存儲單元。在實(shí)際工作中,首先Bank地址與相應(yīng)的行地址是同時(shí)發(fā)出的,然后再同時(shí)發(fā)送列地址尋址命令與具體的操作命令(是讀還是寫),這時(shí)我們就先后選中了Bank、行地址和列地址,因此也就確定了該存儲單元陣列表格中的一個(gè)存儲單元。至此我們就能明白了僅用它的12根地址線卻能夠訪問8MB地址空間的問題。
3. 存儲系統(tǒng)接口電路具體設(shè)計(jì)
從2.2節(jié)的分析可以知道所謂的片選信號對4510來說就是存儲器組選擇信號。4510把nRCS<5:0>用作FLASH的片選信號,把nSDCS[3:0]用作SDRAM的片選信號。從參考文獻(xiàn)3看到HY57V1620的LDQM和UDQM兩引腳是起到Data Input/Output Mask的作用。存儲系統(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就會發(fā)出控制信號使得SDRAM1的UDQM、SDRAM2的LDQM和UDQM有效,就是它們把32位數(shù)據(jù)中的高24位屏蔽掉,從而進(jìn)行字節(jié)讀取。LDQM是Low (byte) DQ Mask的縮寫。UDQM則是Upper (byte) DQ Mask的縮寫。DQ指SDRAM的輸入/輸出數(shù)據(jù)。
上圖是存儲系統(tǒng)電路原理圖。兩片HY57V1620的并聯(lián)設(shè)計(jì)是為了充分發(fā)揮32位MPU的性能
4. 存儲系統(tǒng)在嵌入式操作系統(tǒng)uClinux中的實(shí)現(xiàn)與配置
所謂的存儲系統(tǒng)在uClinux中的實(shí)現(xiàn)與配置實(shí)質(zhì)上就是對4510的各個(gè)存儲器組的控制寄存器進(jìn)行設(shè)置。此處運(yùn)用的是uClinux-Samsung-20020318.tar.gz版本。所謂配置存儲系統(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)行存儲系統(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è)定初始化存儲映射 */
ldmia r0, {r1-r12}
ldr r0, =SYS_INIT_BASE/*該宏定義位于上面提到的Hardware.h中,是外部存儲寄存器組中個(gè)寄存器的地址*/
stmia r0, {r1-r12}
……
5. 結(jié)束語
本文闡述了本人在嵌入式系統(tǒng)設(shè)計(jì)過程中遇到的關(guān)于存儲系統(tǒng)方面問題,希望因同樣問題感到迷惑的開發(fā)人員能從本文中獲得啟發(fā)和幫助,從而能夠從更深的層次上理解和設(shè)計(jì)整個(gè)系統(tǒng)的硬件和軟件。
參考文獻(xiàn):
[1]. S3C4510B datasheet http://www.hbjingang.com/datasheet/S3C4510B_589499.html.
[2]. RISC datasheet http://www.hbjingang.com/datasheet/RISC_1189725.html.
[3]. ARM7TDMI datasheet http://www.hbjingang.com/datasheet/ARM7TDMI_139812.html.
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識介紹2025/8/29 16:58:56
- SQL核心知識點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識2025/6/18 16:30:52
- 高速PCB信號完整性(SI)設(shè)計(jì)核心實(shí)操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計(jì)算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護(hù)設(shè)計(jì)
- 連接器耐腐蝕性能測試方法
- PCB電磁兼容(EMC)設(shè)計(jì)與干擾抑制核心實(shí)操規(guī)范
- 用于相位噪聲測量的低通濾波器設(shè)計(jì)與本振凈化技術(shù)
- MOSFET在高頻開關(guān)中的EMI問題
- 電源IC在便攜式設(shè)備中的設(shè)計(jì)要點(diǎn)
- 連接器結(jié)構(gòu)設(shè)計(jì)常見問題分析









