基于S3C4510B的存储系统原理与设计

发布者:脑洞狂想最新更新时间:2012-10-18 来源: 21ic 关键字:S3C4510B  存储系统  地址总线 手机看文章 扫描二维码
随时随地手机看文章

1.     引言  

     对于嵌入式系统的开发人员来说,深刻地理解其存储系统的寻址原理和有效的管理存储系统对正确高效地设计嵌入式系统的硬件和底层软件编程具有重要的意义。目前嵌入式系统中最常用的存储器包括有EEPROM、FLASH、Normal DRAM和Sync.DRAM等。本文所采用的存储器包括有SDRAM和FLASH。S3C4510B(以下简称4510)微处理器是构建在ARM核ARM7TDMI之上的,ARM7TDMI的地址总线为32位的,4510的内部系统总线却是26bit:SA[25:0],它的外部地址总线却是22bit:ADDR[21:0],它们之间是如何译码的,而仅用14根外部地址总线为什么能够访问多达16MB的内存地址空间,本文就试图回答这些问题。最后还介绍了基于S3C4510B的存储系统在硬件级别上的设计即接口设计和uClinux中对存储系统编程的实现。 

2.     基于S3C4510B的存储系统原理 

2.1. 32位地址总线与26位内部系统总线的关系 

    ARM7TDMI把存储器看作是从零向上增长的许多字节的线性集合,0字节到3字节为第一个字,4字节到7字节为第二个字如此等等,它的地址总线是32位的,而4510的内部系统总线却是26bit的,也就是说它能够寻址的最大空间是226byte,即64MB的地址空间0x0000000~0x3FFFFFF。很显然构建在ARM7TDMI上的RISC微控制器4510的内部地址总线仅用到了ARM7TDMI的32位地址总线的低26位,并且是一一对应的相连。 

2.2. 4510寻址原理 


     4510采用了统一编址的方式,将系统的片内、片外存储器、特殊功能寄存器和外部的I/O设备都映射到了64MB的地址空间,同时为便于管理,又将地址空间分为若干个存储器组(Bank),包括6个ROM Bank、4个DRAM Bank、内部SRAM和特殊寄存器组等,每一个存储器组都对应一个控制寄存器,可以通过配置其中的基指针(Base Pointer)和尾指针(End Pointer)来设定每个存储器组的大小和位置。上图是DRAM#(#取0~3)组的控制寄存器。[19:10]是DRAM组基指针,该设定值左移16位即为DRAM#组的起始物理地址。因此我们可以推出每个存储器组的位置是通过4510的26位系统地址总线中高10位SA[25:16]来设定和区分的。[29:20]是DRAM组尾指针,该设定值左移16位-1即为DRAM#组的结束物理地址。因此我们还可以推出只要设定了任意一组控制寄存器中的基指针和尾指针,也就确定了该组存储器在4510可寻址空间64MB中的位置和该组存储器的大小,另一方面还可以得出如下结论:对于任一要寻址的系统地址,可以通过该地址的高10位来判断它属于哪一个存储器组,而该地址的低16位就是它在所判断存储器组中的偏移地址。事实上4510正是通过这种机制来寻址的。4510把请求地址的高10位与所有的存储器组的基指针相减来实现组选择和计算偏移地址。当选定了组和计算出偏移地址,4510就会产生相应的组选择信号并且通过物理地址总线用偏移地址去寻址外部存储器,从而完成了寻址的全过程。 

2.3. 26位内部系统地址总线与22根外部地址总线的关系 

    4510通过设定寄存器EXTDBWIHD的值可以支持同外部存储器的8、16、32位接口,而SA[25:0]到ADDR[21:0]的地址译码就是依赖于这个不同接口的数据宽度。当4510发出字访问信号时,存储系统忽略低2位SA[1:0],即SA[2]与ADDR[0]相连,依次类推,直到SA[23]与ADDR[21]相连,同理当发出半字访问信号时,存储系统忽略低位SA[0],即SA[1]与ADDR[0]相连,依次类推,这样做的目的就是在原理图设计时4510的地址总线可以方便地与存储器的地址总线一一对应连接即可。 

2.4. SDRAM的寻址问题 




    以SDRAM芯片HY57V1620HG为例说明。该芯片的内部存储组织是4Banks*1M*16Bit,即共有4个Banks,每Bank中有1M个半字(16Bit)。因为该芯片引脚中有行地址锁存引脚#RAS和列地址锁存引脚#CAS,所以我们可以把每Bank看作如下图所示的一张存储单元阵列表格。其中每一个表格代表16Bit的数据存储单元。在实际工作中,首先Bank地址与相应的行地址是同时发出的,然后再同时发送列地址寻址命令与具体的操作命令(是读还是写),这时我们就先后选中了Bank、行地址和列地址,因此也就唯一确定了该存储单元阵列表格中的一个存储单元。至此我们就能明白了仅用它的12根地址线却能够访问8MB地址空间的问题。  [page]

3.     存储系统接口电路具体设计 



    从2.2节的分析可以知道所谓的片选信号对4510来说就是存储器组选择信号。4510把nRCS<5:0>用作FLASH的片选信号,把nSDCS[3:0]用作SDRAM的片选信号。从参考文献3看到HY57V1620的LDQM和UDQM两引脚是起到Data Input/Output Mask的作用。存储系统是如何利用这两个引脚的呢?当4510执行内存中半字数据读取指令LDRH、字节数据读取指令LDRB等指令时,这两个引脚就发挥作用了。例如当执行LDRB时,4510就会发出控制信号使得SDRAM1的UDQM、SDRAM2的LDQM和UDQM有效,就是它们把32位数据中的高24位屏蔽掉,从而进行字节读取。LDQM是Low (byte) DQ Mask的缩写。UDQM则是Upper (byte) DQ Mask的缩写。DQ指SDRAM的输入/输出数据。 

    上图是存储系统电路原理图。两片HY57V1620的并联设计是为了充分发挥32位MPU的性能 

4.  存储系统在嵌入式操作系统uClinux中的实现与配置 
    所谓的存储系统在uClinux中的实现与配置实质上就是对4510的各个存储器组的控制寄存器进行设置。此处运用的是uClinux-SAMSung-20020318.tar.gz版本。所谓配置存储系统所有的4510相关特殊寄存器的宏定义在Linux-2.4.x/Include/Asm-armnommu/Arch-SAMSUNG/Hardware.h中。部分代码如下: 

….. 

#define DSR0 (2<<0) /* ROM Bank0 数据宽度为半字*/ 

….. 

#define DSD0 (3<<12) /* RAM Bank0数据宽度为字*/ 

….. 

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

….. 

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

真正进行存储系统映射的代码在Linux-
2.4.x/Arch/Armnommu/Boot/Compressed/head.S部分代码如下: 

……. 

#ifdef CONFIG_ARCH_SAMSUNG 

ldr r0, =SYSCFG/* 设定系统寄存器的值 */ 

ldr r1, =rSYSCFG 

str r1, [r0] 

adr r0, SDRAM_SYSINIT_RESET/* 设定初始化存储映射 */ 

ldmia r0, {r1-r12} 

ldr r0, =SYS_INIT_BASE/*该宏定义位于上面提到的Hardware.h中,是外部存储寄存器组中第一个寄存器的地址*/ 

stmia r0, {r1-r12} 

…… 

5.     结束语 
    本文阐述了本人在嵌入式系统设计过程中遇到的关于存储系统方面问题,希望因同样问题感到迷惑的开发人员能从本文中获得启发和帮助,从而能够从更深的层次上理解和设计整个系统的硬件和软件。 

参考文献:

[1]. S3C4510B datasheet http://www.dzsc.com/datasheet/S3C4510B_589499.html.
[2]. RISC datasheet http://www.dzsc.com/datasheet/RISC_1189725.html.
[3]. ARM7TDMI datasheet http://www.dzsc.com/datasheet/ARM7TDMI_139812.html.

关键字:S3C4510B  存储系统  地址总线 引用地址:基于S3C4510B的存储系统原理与设计

上一篇:基于EP7312的公用信息终端的设计
下一篇:IP电话的VoIP语音网关设计

推荐阅读最新更新时间:2024-03-16 13:10

基于U盘的单片机低功耗海量存储系统
引言 近几年,随着Flash Memory非易失存储技术的发展,基于USB接口的闪存即U盘现已得到广泛应用。从理论上讲,以U盘作为便携式采集存储系统的存储载体完全能够满足长时间采集海量数据的要求。但目前所面临的问题是,U盘主要应用于PC机系统中。以单片机等微处理器为核心的嵌入式系统的应用中,尚缺少与U盘的直接接口技术。因此将单片机技术与U盘存储技术两者结合起来,利用单片机直接读写U盘,并通过总线方式与嵌入式系统的其它部分实现命令和数据的通信,从而实现便携仪器或者嵌入式系统的外挂式海量存储,具有广阔的应用前景。而以Cypress公司的SL811HS为代表的嵌入式USB主机接口芯片为这种方案的实现提供了可能。 SL811HS介绍 采用
[单片机]
基于U盘的单片机低功耗海量<font color='red'>存储系统</font>
基于ARM和FPGA的嵌入式高速图像采集存储系统
现代化生产和科学研究对图像采集系统要求日益提高。传统图像采集系统大都是基于PC机上,而在一些特殊的场合,尤其是在实时性要求较高时,普通的PC机显然无法满足应用要求。文中设计了一种基于ARM和FPGA的嵌入式的图像采集存储系统,可以很好地解决实时的嵌入式图像采集和存储问题。它主要包括图像采集模块、图像处理模块以及图像存储模块等。 1 系统结构及工作原理 本系统的结构模型,如图1所示。图像采集模块负责采集原始图像,并将原始图像数据送给FPGA,采用了可编程视频输入处理器SAA7113H。原始图像数据送到FPGA后,FPGA将原始图像数据暂存于两个SRAM中,系统采用了Alter公司的EPlK30TCl44—3和ICSI公司的I
[单片机]
基于ARM和FPGA的嵌入式高速图像采集<font color='red'>存储系统</font>
地址总线与数据总线的计算
     我们先看两个例子:        一.1个CPU的寻址能力为8KB,它的地址总线的宽度为多少位?              答案是13位,因为一个存储单元可以存储8个bit,计算表达式为8*1024=2的13次方;         二.数据总线宽度分别为8根,它一次可以传送的数据为多少 B ?              答案是1B,因为1B=8bit,这与上面有所不同!        也就是说,地址总线寻址,寻的是一个个单元;而数据总线传输数据,则是从最小单位的bit一个个传输的。总的来说,CPU的基本单位为是B,而最小单位是bit。
[嵌入式]
基于uCLinux和S3C4510B的网络通信设计
摘要:结合工程实例,基于S3C4510B微处理器,构建以DM9161为以太网物理层接口的低功耗、高速硬件电路;在嵌入式操作系统uCLinux上实现网络通信工程的程序编写,对于网络通信工程在嵌入式设备中的应用有很好的借鉴意义。 关键词:uCLinux S3C4510B 网络通信 DM9161 嵌入式系统 引言 Linux是一种很受欢迎的操作系统,与UNIX系统兼容,开放源代码。它原本被设计为桌面系统,现在广泛应用于嵌入式设备。uCLinux正是在这种氛围下产生的。在uCLinux这个英文单词中,u表示Micro,是“小”的意思;C表示Control,是“控制”的意思,所以uCLinux就是Micro-Control-Linux
[应用]
紫光西部数据荣膺“2016中国存储系统市场挑战者”称号
eeworld网消息,在刚刚发布的《2016-2017年中国存储系统市场研究年度报告》中,赛迪顾问将“紫光与西部数据成立合资公司进军存储系统市场”作为行业年度重大影响事件之一。同时,根据其自身的卓越发展能力,赛迪顾问将紫光西部数据定位为“2016年中国存储系统市场挑战者”。 赛迪顾问是国内知名的工业和信息化领域发展研究专业机构,隶属于工信部中国电子信息产业发展研究院。该机构每年发表的“中国存储系统市场研究年度报告”,包含了对该行业现状的深入研究,未来三年发展趋势的全面预测,以及对行业竞争格局的细致分析。 在《2016-2017年中国存储系统市场研究年度报告》中,赛迪顾问认为,紫光集团和西部数据公司以合资方式进入国内企业级存
[半导体设计/制造]
ARM存储系统概述
ARM存储系统的体系结构适应不同的嵌入式应用系统的需要差别很大。最简单的存储系统使用平办事的地址映射机制,就像一些简单的弹片机系统中一样,地址空间的分配方式是固定的,系统各部分都使用物理地址。而一些复杂系统可能包括下面的一种或几种技术,从而提供更为强大的存储系统。 **系统中可能包含多种类型的存储器,如FLASH,ROM,RAM,EEPROM等,不同类型的存储器的速度和宽度等各不相同。 **通过使用CACHE及WRITE BUFFER技术缩小处理器和存储系统速度差别,从而提高系统的整体性能。 **内存管理部件通过内存映射技术实现虚拟空间到物理空间的映射。在系统加电时,将ROM/FLASH影射为地址0,这样可以进行一些初始化处理;当这
[单片机]
单片机地址总线和数据总线的分离
  微处理器与存储器和I/O接口之间通过数据总线、地址总线和控制总线相连接。图1为常用的几种微处理器。在八位微处理器Z80 CPU中明显地可以区分出数据总线和地址总线。而微处理器INTEL 8086/8088和微控制器89C51由于封装的原因,不可能将所有的信号连接到外部,因此有一部分引脚具备两种功能,以便用有限的引脚产生更多的连接信号。这些引脚两种功能的选择可通过不同的方式来决定,一类引脚功能的选择是通过微处理器的时序来区分,另一类引脚的功能由微处理器的某个功能设置引脚来定义。在微处理器INTEL 8086/8088 以及微控制器89C51中,数据总线和地址总线就采用时序区分的方法,由引脚输出的为信号AD总线,当地址锁存信号ALE
[单片机]
单片机<font color='red'>地址总线</font>和数据总线的分离
基于ARM7的LCD设计与实现
1 引言 随着科技的发展,ARM在社会各个方面的应用越来越广。ARM芯片广泛应用于无线产品、PDA、GPS、网络、消费电子产品、STB及智能卡。S3C4510B是SAMSUNG公司生产的基于ARM7TDMI的RISC微处理器,主频可达50MHZ。液晶显示是嵌入式系统中反映系统输入/输出的人机交互界面,液晶显示以其微功耗、体积小、显示内容丰富、模块化,接口电路简单等诸多优点得到广泛应用。由于S3C4510B主要是针对以太网应用系统设计的,所以其内部没有LCD控制模块,这样在一些需要人机可视话交互过程中会产生诸多不便。我们在看重高性价比的情况下,利用S3C4510B的通用I/O口来控制液晶显示屏的软硬件方法,实现了与LCD控制模块一
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved