大容量SDRAM在windows CE系统中的应用设计
扫描二维码
随时随地手机看文章
摘 要:扩大同步动态随机存储器(SDRAM)的容量是提升嵌入式产品性能的关键问题。这里基于Intel公司的PXA255处理器提出一种大容量sDRAM的硬件设计方法,并在微软提供的板级支撑包(BSF’)的基础上编写了一套在win—dows CE嵌入式操作系统下支持此硬件设计的驱动程序。该方法不仅在本平台上取得了较好的结果,且可以移植到Intel更加高端的27x系列处理器中,为嵌入式系统产品具备大容量内存提供了方法。
关键词:WindoWs CE;动态随机存储器;启动程序;地址映射
随着嵌入式产品的发展,各种嵌入式操作系统,以及嵌入式上层应用软件层出不穷。这就对大容量SDRAM的需求日益增强。目前用于嵌入式产品中的存储器主要有FLASH和SDRAM。FLASH作为静态存储器,被应用于存放启动代码和操作系统内核,SDRAM作为动态存储器,被应用于存放实时更新的数据信息。在此,采用Intel的PXA255处理器。使用32 MB的NOR FLASH作为放置启动代码和操作系统的静态存储空间,使用256 MB的SDRAM作为动态存储空问,使用2 GB的CF卡作为应用程序和数据的存储空间,并与液晶显示屏、音频、触摸一起构成一个功能强大的嵌入式体系。
1 随机存储器介绍
随机存储器主要分为静态随机存储器(SRAM)、动态随机存储器(DRAM)及SDRAM。1个SRAM单元通常由4~6个晶体管组成,当这个SRAM单元被赋予O或者1的状态之后,它会保持这个状态直到下次被赋予新的状态或者断电之后才会更改或者消失。SRAM的读写速度相对比较快,而且比较省电,但是存储1 b的信息需要4~6只晶体管。DRAM和SDRAM必须在一定的时间内不停地刷新才能保持其中存储的数据,但存储1 b的信息只要1只晶体管就可以实现。在数据读写的过程中,SRAM,DRAM及SDRAM均有不同的工作方式。DRAM和SDRAM相对于SRAM增加了多路寻址技术,即利用2个连续的周期传输地址数据,达到使用一半的地址线,以完成SRAM同样功能的目的。SDRAM相对于DRAM不仅提出了多Bank的工作模式,并且SDRAM与CPU和芯片组共享时钟,芯片组可以主动地在每个时钟的上升沿发给sDRAM控制命令。
2 硬件设计方案
2.1 SDRAM工作原理
SDRAM本身是由多个Bank区域构成,对SDRAM的操作实际上是通过区域片选信号对单独Bank进行的操作。SDRAM中单个Bank的读取过程如图1所示。
(1)通过地址总线将行地址传输到地址引脚;
(2)RAS(行地址使能信号)被激活,这样行地址被传送到行地址门闩线路中;
(3)行地址解码器根据接收到的数据选择相应的行;
(4)wE(写使能信号)引脚确定不被激活,所以SDRAM知道它不会进行写操作;
(5)列地址通过地址总线传输到地址引脚;
(6)CAS(列地址使能信号)引脚被激活,这样地址被传送到列地址门闩线路中;
(7)DQM(输出使能)引脚被激活,数据向外输出。
这就完成了一个单Bank的读操作,在读取数据的过程中行列地址的寻址过程是通过两个时钟周期实现的,在第一个时钟周期使能行地址,下一个时钟周期使能列地址,这就实现了地址线的复用。
SDRAM写入的过程和读取过程是基本一样的,只需要将wE信号激活。
2.2 硬件设计
对于SDRAM的硬件设计需要确定3个方面的内容:通过处理器的特性选择SDRAM的型号;确定SDRAM地址线、数据线的连接方式;确定SDRAM控制信号线的连接方式。
2.2.1 SDRAM的选择
该平台处理器选择Intel公司XSCALE架构的PXA255,它针对于SDRAM有4根专用的动态片选信号,能够支持4块内存区域,如图2所示。
其中每块区域所能支持到的最大物理地址为64 MB。并且每一块内存区域均可使用16 b或32 b的SDRAM。
在硬件设计过程中考虑到硬件使用的可调节性,采用8片16 b×4 MB×4 Bank的SDRAM,共搭建了256 MB的极限存储空间。其中,SDRAM选择型号为三星公司的K4S561632E。[!--empirenews.page--]
2.2.2 数据线、地址线的分配
PXA255处理器共有32位数据线和26位地址线。故在硬件设计时需要并行处理2块16 b的SDRAM,分别连接高位和低位的16根数据线。
对于地址线的连接,首先需要参考SDRAM的数据手册,确定SDRAM行列地址线的个数。其次根据处理器数据手册确定具体地址线的连接方式。
在三星K4S561632E的数据手册中是这样给出的,如表1所示。
从表1中可以得出行列复用13根地址线,其中行地址13根,列地址9根,共组成22根地址线的寻址空间。在处理器PXA255中,给SDRAM分配的地址线空间是从A10~A22。这样就可以完全确定地址线和数据线的连接方式,如图3所示。
2.2.3 控制信号线的连接方式
对于SDRAM需要确定的控制线包括时钟信号线、区域片选信号线及Bank片选信号线。对于这三类信号线PXA255处理器是这样给出的,即:
(1)每两组内存区域使用同一组时钟信号线,即每128 MB的内存空间使用同一根时钟信号线,故在设计中使用了2组时钟信号线。
(2)共有4根区域片选信号,分别控制64 MB的物理地址空间。最大支持到256 MB的物理地址空间。
(3)地址线的23,24位用来实现对SDRAM内部Bank的选择。
2.3 硬件的移植
针对于PXA27x系列的高端处理器,Intel并没有对SDRAM部分做本质上的改动,仍然是4根动态片选信号,故硬件方面的设计可以完全移植到PXA27x系列的处理器中。
3 软件设计方案
Windows CE操作系统下对内存的驱动代码主要分为两个部分,首先在BootLoader中对SDRAM进行底层初始化;其次在系统BSP包内需要将SDRAM所对应的物理地址映射为Windows CE下能够识别的虚拟地址。
控制线的连接方式如图4所示。
3.1 BootLoader代码的买现
BootLoader是系统运行的起始点,它包含着系统运行的第一行代码。BootLoader本身也是一个功能完整的微型操作系统,在内部需要实现任务调度、内存管理、文件系统,以及各种必要设备驱动程序的配置。其中内存管理即是完成SDRAM初始化的工作,包括设置SDRAM工作频率、设置片选信号寄存器、设置刷新间隔和SDRAM潜伏期、以及配置系统内核的拷贝地址。控制线的连接方式如图4所示。
(1)频率设置
完成寄存器的复值,其中r3的选择为F即就是0x1111,打开4片内存区域。[!--empirenews.page--]
(3) 刷新间隔设置。关于刷新间隔值(DIR)的计算在手册中是这样给出的:
目前公认的标准是,存储体中电容的数据有效保存期上限是64 ms,也就是说每一行刷新的循环周期是64 ms。这样刷新速度为:64 ms/行数量。由于行地址有13位(在MDCNFG寄存器的DRACO[1:0]中设置,需要与硬件一致),所以每行的的刷新时间为64 ms/213=64 ms/8 192=7.812 5/μs,则7.812 5μs×100 MHz/32=0x18,这样就得到了系统的DRI值。
(4) 潜伏期的设置。潜伏期是指SDRAM在读写过程中所存在的延迟,潜伏期的时间长度是由以下几个参数共同决定的:
CL:在选定列地址后,就已经确定了具体的存储单元,剩下的事情就是数据通过数据I/O通道(数据总线)输出到内存总线上。但是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间被称为读取潜伏期。tRP:在发出预充电命令之后,要经过一段时间才能允许发送行有效命令打开新的工作行,这个间隔被称为预充电有效周期(Precharge command Period)。tRCD:在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定义为tRCD,即RAS to CASDelay(RAS至CAS延迟),也可以理解为行选通周期。tRAS:行有效至预充电命令间隔周期。tRC:包括行单元开启和行单元刷新在内的整个过程所需要的时间。
所有参数可以从SDRAM数据手册得到,计算出理论潜伏期时长为200/μs。
(5)其他设置
设置操作系统的入口点,这里用到的虚拟地址需要与系统中建立的映射表相对应。
3.2 BSP内代码的实现
Windows cE系统启动中,对SDRAM的操作分为两个部分:首先对SDRAM的物理空间进行分配;其次将SDRAM所对应的物理地址转换为虚拟地址。
3.2.1 地址的分配
地址的分配和系统加载的顺序有着密切的关系。首先要在内存中开辟一段空间用来存放启动代码BootLoader,它被存放在sDRAM的第一个区域空间内。当发生外部复位中断时系统会从这里重新开始运行。其次分配操作系统内核空间,它被存放在SDRAM的第二个区域,以便使BootLoader能够顺利加载操作系统内核。分配地址空间根据所建立系统内核来确定。剩余的内存空间用来存放系统下的应用程序。
3.2.2 地址的映射
在操作系统中,需要把SDRAM的空间连续起来并作为首地址,不仅方便内存管理,而且当应用程序申请大块内存时,操作系统内核也可方便的分配。这就引入了将不连续的物理地址空间映射为连续的虚拟地址空间。PXA255的SDRAM起始物理地址OxA0000000,可将其映射为0x80000000,这里0x80000000将作为系统虚拟空间的起始地址,当有IRQ中断发生时,系统PC指针会重新指向这个地址。需要注意的是这里分配的虚拟地址要与启动代码中BootLoader中所使用的虚拟地址对应起来。
3.2.3 软件的移植
针对于PXA27x系列的高端处理器,微软在Plat-Build 5.0中给出了相对应的内核代码虽然在内核代码的架构上有了很大的变化,但对于扩展SDRAM的思想并没有改变,首先在BootLoader中初始化所使用的SDRAM,其次在BSP内建立地址映射表。
4 结 语
介绍了在嵌入式Windows CE系统平台上,使用大容量SDRAM作为动态存储设备的方案。详细介绍了sDRAM硬件连接方案以及软件接口的实现。该方案已经在工程设计中投入使用,其可以在同类的嵌入式高端产品中推广使用。