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

发布者:学富五车最新更新时间:2006-08-30 来源: 微计算机信息关键字:寻址  总线  寄存器 手机看文章 扫描二维码
随时随地手机看文章

  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地址空间的问题。

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]ARM7TDMI data sheet.pdf
[2]um_s3c4510b_rev1.pdf
[3]HY57V641620HG(L)T.pdf
[4]中关村在线,赵效民。理性VS激情,DDR内存的终极优化.2004-03-30
[5]李驹光、聂雪媛、江泽明、王兆卫。ARM应用系统开发详解--基于S3C4510B的系统设计[M].清华大学出版社.2003-12-01

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

上一篇:FM20L08型铁电存储器的原理及应用
下一篇:基于FLASH介质嵌入式存储方案的设计与实现

推荐阅读最新更新时间:2024-05-13 18:14

DSP交流伺服系统与CAN总线的通信设计
1 DSP的CAN控制器   TI公司的低功耗、高速DSP芯片TMS320LF2407A具有高速运算能力和高效控制能力。其内嵌的CAN控制器是一个完全的CAN控制器,完全支持CAN2.0B协议,它主要有以下特点:有6个邮箱,其数据长度为0~8 B,其中接收邮箱有局域接收邮箱屏蔽寄存器,在发送出错或仲裁时丢失数据的情况下,有自动重发功能、可编程的位定时器和总线错误诊断功能。   CAN控制器的内部结构图如图1所示。  图1 CAN控制器的内部结构图   工作过程如下:CAN控制器在接收信息时,先将要接收信息标识符与相应接收邮箱的标识符进行比较,只有标识符相同的信息才能被接收;接收信息时,将数据存入邮箱,标识符存入相
[嵌入式]
汽车电力载波总线系统的应用设计
    目前,现行的汽车总线标准很多,其中使用比较广泛的有CAN总线、J1850等。这些总线都要采用专门的数据线束,且汽车的ECU单元对数据传输的要求不一致,需要在汽车内同时布置几个不同的数据网络。另外,这些数据总线的实现又需要布置专用的数据通信线束,这样增加了汽车内的线束、制造成本和维护难度,给汽车内的数据传输带来不稳定的因素。本文介绍一种新的汽车总线数据传输方式——汽车电力载波总线数据通信技术,该方式在不增加汽车内线束的基础上可实现汽车内各ECU模块之间的数据传输和共享。 1 系统总线通信信道模型分析   与低压电网载波通信系统一样,汽车电力线载波系统的负载也是复杂和时变的。各种类型的电器有时接通,有时断开,使得导线的
[嵌入式]
基于CAN总线的分布式监控系统设计
引言 锅炉是通过燃烧加热工质来提供热能动力的重要设备,同时又是承压、受火、有爆炸危险而又被各行各业普遍使用的特殊设备。所以实时监控锅炉的运行状态,及时、准确地发现锅炉运行中的事故至关重要。传统的锅炉监控系统在测量手段和使用的传感器方面都存在很大的缺陷。以温度检测为例,早期采用的热电偶电桥法,测试过程复杂;而采用集成的半导体模拟温度传感器需要大量的传输电缆,成本高且不易维护。 CAN总线是一种多主机控制标准,具有物理层和数据链路层的协议、多主节点、无损仲裁、高可靠性及扩充性能好等特点;能有效支持分布式控制系统的串行通信网络。一方面,其通信方式灵活,可实现多主方式工作,还可实现点对点、点对多点等多种数据的收发;另一方面,能在相
[嵌入式]
现场总线仪表电缆屏蔽接地连接方法
1、仪表系统的信号是以方式传输,总线信号电缆屏蔽层的接地与模拟信号电缆有所不同,总线电缆屏蔽层的两端都宜做接地连接(见图1)。 条文说明 现场总线仪表信号是数字传输,易受到电磁场的影响,因此在总线线缆的屏蔽层的两端接地,通过屏蔽层建立一个理想的法拉第笼,以避免通信信号受到外界电磁场的干扰。 图1 现场总统系统带屏蔽,屏蔽层在控制室与现场两端接地 2、在不能确定控制室与现场之间有良好的等电位接地系统时,宜在总线信号电缆屏蔽层的现场端直接将屏蔽层接地,而电缆屏蔽层的另一端通过与接地系统连接。在有爆炸性危险场所时,电缆屏蔽层的电容连接接地端应设置在非爆炸性安全场所(见图2)。 条文说明 由于电容对直流(dc) 和低频交流(
[测试测量]
现场<font color='red'>总线</font>仪表电缆屏蔽接地连接方法
51单片机模拟 SPI 总线的方法
1 引言   SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。由于SPI系统总线一共只需3~4位数据线和控制即可实现与具有S
[单片机]
51单片机模拟 SPI <font color='red'>总线</font>的方法
STM32蜂鸣器-寄存器
这次实验犯了个笑话,竟然在宏定义后面加分号...就像这样(#define XXX;)大家千万不要学我,结果报错expected expression,还苦恼半天,想为啥操作不了寄存器了?我真愚蠢! 刚开始我也不会写这些东西,其实摸清套路就好,RCC时钟使能、GPIO初始化、相关寄存器初始化、延时函数/串口等初始化、循环执行相关操作,该用库函数的用库函数,该用寄存器的用寄存器,废话少说,上代码,这里依然只给出beep部分和main部分; 1.beep.h #ifndef __BEEP_H #define __BEEP_H #include sys.h #define BEEP PFout(8) void beep
[单片机]
基于串行总线的测量仪器模拟节点设计
智能测量仪器作为信息获取工具,是一种集多个门类、多种学科技术于一体的复杂有机体。随着测试技术、计算机技术和大规模集成电路技术的飞速发展,现代智能测量仪器不但对功能、性能、精度和指标的要求越来越高,而且对系统可靠性、可维修性的要求也越来越高。因此,这就要求测量仪器具有完备的内建测试(build intest,BIT)功能以及自我调节和补偿能力,以使测量仪器系统本身具备测试、诊断和故障定位的能力以及适应各种环境、温度和器部件性能变化的能力。 但是,智能测量仪器要具备这些测试、诊断以及调节、补偿能力,必须首先对整个测量仪器工作状态进行监测,然后通过对这些节点的状态进行分析和处理,从而进行进一步的故障定位或调节补偿。这些状态主要包括环境
[测试测量]
基于串行<font color='red'>总线</font>的测量仪器模拟节点设计
基于CPLD的VXI总线接口的研制
    摘要: 文章以VXI总线开关矩阵模块为例,介绍了基于可编程逻辑器件的VXIbus寄存器基接口的开发过程。给出了选用ALTERA公司的可编程逻辑器件FLEX 10K10在MAXPLUSII环境下,结合VXIbus时序对接口逻辑电路进行波形仿真和时序分析的方法。     关键词: VXI总线 接口 CPLD FLEX 10K 1 引言 VXI总线测试系统是一种世界范围内完全开放的、适用于多个生产厂家的模块化仪器总线系统。随着仪器功能逐渐向复杂化发展,以数字电路为主的接口电路的设计也在追求更高的集成度,这时如果采用可编程逻辑器件(PLD)技术代替传统的中、小规模集成电路来实现电路设计,不仅可以节省
[应用]
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved