第4章嵌入式系统的存储器系统.ppt
嵌入式系统设计 基于ARM9微处理器S3C2410A 第4章 嵌入式系统的存储器系统南阳师范学院张帅,4.1 存储器系统概述,4.1.1 存储器系统的层次结构 计算机系统的存储器被组织成一个6个层次的金字塔形的层次结构,如图4.1.1所示:S0层为CPU内部寄存器S1层为芯片内部的高速缓存(cache)S2层为芯片外的高速缓存(SRAM、DRAM、DDRAM)S3层为主存储器(Flash、PROM、EPROM、EEPROM)S4层为外部存储器(磁盘、光盘、CF、SD卡)S5层为远程二级存储(分布式文件系统、Web服务器),图4.1.1 存储器系统层次结构,在这种存储器分层结构中,上面一层的存储器作为下一层存储器的高速缓存。CPU寄存器就是cache的高速缓存,寄存器保存来自cache的字;cache又是内存层的高速缓存,从内存中提取数据送给CPU进行处理,并将CPU的处理结果返回到内存中;内存又是主存储器的高速缓存,它将经常用到的数据从Flash等主存储器中提取出来,放到内存中,从而加快了CPU的运行效率。嵌入式系统的主存储器容量是有限的,磁盘、光盘或CF、SD卡等外部存储器用来保存大信息量的数据。在某些带有分布式文件系统的嵌入式网络系统中,外部存储器就作为其他系统中被存储数据的高速缓存。,4.2.1 常见的嵌入式系统存储设备1RAM(随机存储器)RAM可以被读和写,地址可以以任意次序被读。常见RAM的种类有SRAM(Static RAM,静态随机存储器)、DRAM(Dynamic RAM,动态随机存储器)、DDRAM(Double Data Rate SDRAM,双倍速率随机存储器)。其中,SRAM比DRAM运行速度快,SRAM比DRAM耗电多,DRAM需要周期性刷新。2ROM(只读存储器)ROM在烧入数据后,无需外加电源来保存数据,断电后数据不丢失,但速度较慢,适合存储需长期保留的不变数据。在嵌入式系统中,ROM用固定数据和程序。,4.2 嵌入式系统存储设备分类,3Flash Memory Flash memory(闪速存储器)是嵌入式系统中重要的组成部分,用来存储程序和数据,掉电后数据不会丢失。但在使用Flash Memory时,必须根据其自身特性,对存储系统进行特殊设计,以保证系统的性能达到最优。Flash Memory是一种非易失性存储器,根据结构的不同可以将其分成NOR Flash和NAND Flash两种。Flash Memory在物理结构上分成若干个区块,区块之间相互独立。NOR Flash把整个存储区分成若干个扇区(Sector),而NAND Flash把整个存储区分成若干个块(Block),可以对以块或扇区为单位的内存单元进行擦写和再编程。,NAND和NOR性能比较,NOR和NAND是现在市场上两种主要的非易失闪存技术NOR的读速度比NAND稍快一些NAND的写入速度比NOR快很多NAND的擦除速度远比NOR的快大多数写入操作需要先进行擦除操作NAND的擦除单元更小,相应的擦除电路更少,NAND和NOR接口差别,NOR flash带有SRAM接口,线性寻址,可以很容易地存取其内部的每一个字节NAND flash使用复用接口和控制I/O多次寻址存取数据NAND读和写操作采用512字节的块,这一点有点像硬盘管理,此类操作易于取代硬盘等类似的块设备,NAND和NOR容量和成本,NAND flash生产过程更为简单,成本低常见的NOR flash为128KB16MB,而NAND flash通常有512MB2GBNOR主要应用在代码存储介质中,NAND适合于数据存储NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大,NAND和NOR可靠性和耐用性,在NAND中每块的最大擦写次数是100万次,而NOR的擦写次数是10万次位交换的问题NAND flash中更突出,需要ECC纠错NAND flash中坏块随机分布,需要通过软件标定产品量产的问题,应用程序可以直接在NOR Flash内运行,不需要再把代码读到系统RAM中运行。NOR Flash的传输效率很高,在14MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。NAND Flash结构可以达到高存储密度,并且写入和擦除的速度也很快,应用NAND Flash的困难在于需要特殊的系统接口。在NOR Flash上运行代码不需要任何的软件支持。在NAND Flash上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD)。NAND Flash和NOR Flash在进行写入和擦除操作时都需要MTD。在NAND Flash中每个块的最大擦写次数是一百万次,而NOR Flash的擦写次数是十万次。NAND Flash除了具有10:1的块擦除周期优势,典型的NAND Flash块尺寸要比NOR型闪存小8倍,每个NAND Flash的内存块在给定的时间内删除次数要少一些。,NAND和NOR软件支持,4标准存储卡(Compact Flash,CF卡)5安全数据卡(Secure Digital Card,SD卡)6硬盘存储器 最常见的硬盘接口是IDE(ATA)和SCSI两种,一些移动硬盘采用PCMCIA或USB接口。,4.4 NAND Flash接口电路,4.4.1 S3C2410A NAND Flash控制器1S3C2410A NAND Flash控制器特性 目前,Nor Flash价格较高,而SDRAM和 Nand Flash存储器相对经济,这样促使一些用户在NAND Flash上执行启动代码,在 SDRAM 上执行主程序。S3C2410A可以在一个外部NAND Flash存储器上执行启动代码,用来实现这一想法。为了支持NAND Flash的启动装载(boot loader),S3C2410A配置了一个叫做“Steppingstone”的内部SRAM缓冲器。当系统启动时,NAND Flash存储器的前4KB将被自动加载到Steppingstone中,然后系统自动执行这些载入的启动代码。在一般情况下,启动代码将复制NAND Flash的内容到SDRAM中。使用S3C2410A内部硬件ECC功能可以对NAND Flash的数据的有效性进行检查。在复制完成后,将在SDRAM中执行主程序。,NAND Flash控制器具有以下特性:NAND Flash模式:支持读擦除编程NAND Flash存储器。自动启动模式:复位后,启动代码被传送到Steppingstone中。传送完毕后,启动代码在Steppingstone中执行。具有硬件ECC产生模块(硬件生成校验码和通过软件校验)。在NAND Flash启动后,Steppingstone 4KB内部SRAM缓冲器可以作为其他用途使用。NAND Flash控制器不能通过DMA访问,可以使用LDM/STM指令来代替DMA操作。2S3C2410A NAND Flash控制器结构 NAND Flash控制器的内部结构方框图如图4.4.1所示。NAND Flash的工作模式如图4.4.2所示。,图4.4.1 NAND Flash控制器内部结构方框图,图4.4.2 NAND Flash的操作模式,自动启动模式的时序如下:(1)完成复位;(2)当自动启动模式使能时,首先将NAND Flash存储器的前4 KB内容自动复制到Steppingstone 4 KB内部缓冲器中;(3)Steppingstone映射到nGCSO;(4)CPU开始执行在Steppingstone 4 KB内部缓冲器中的启动代码。注意:在自动启动模式,不进行ECC检测。因此,应确保NAND Flash的前4 KB不能有位错误。NAND Flash模式配置:利用NFCONF寄存器设置NAND Flash配置;写NAND Flash命令到NFCMD寄存器;写NAND Flash地址到NFADDR寄存器;在检查NAND Flash状态时,利用NFSTAT寄存器读写数据。在读操作之前或者编程操作之后应该检查R/nB信号。,在复制NAND FLASH的前4KB到Steppingstone的过程中,ECC不会被检查,这就必须保证所用NAND的前4KB没有坏位。如果使用三星的NAND FLASH,这一点是完全可以保证的,三星NAND FLASH的Block0是没有坏位的,访问时不用进行错误校验。使用其他品牌的NAND FLASH要看数据手册,确认其Block0在出厂时保证无错,方可与S3C2410配合使用,进行NAND方式的启动。2410的手册上明白写着2410的NAND控制器可以自动LOAD 4K CODE到RAM,只是必须保证这4K FLASH 没坏块。nand FLASH手册,block0是保证出厂不是坏的,其他块就不保证了 在NAND FLASH用户手册中,三星NAND FLASH对于坏块已经做了很详细的说明:The 1st block,which is placed on 00h block address,is fully guaranteed to be a valid block,does not require Error Correction.,NAND Flash控制器的引脚配置如表4.4.1所列。,表4.4.1 NAND Flash控制器的引脚配置,BOOT(启动)和NAND Flash配置如下:(1)OM1:0=00b:使能NAND Flash控制器为自动启动模式;(2)NAND Flash存储器的页面大小应该为512字节;(3)NCON:NAND Flash存储器寻址步选择。0为3步寻址;1为4步寻址。,相关寄存器:NAND Flash配置寄存器 NFCONF 地址0 x4E000000NAND Flash命令设置寄存器 NFCMD 地址0 x4E000004NAND Flash地址设置寄存器 NFADDR 地址0 x4E000008NAND Flash数据寄存器 NFDATA 地址0 x4E00000CNAND Flash操作状态寄存器 NFSTAT 地址0 x4E000010NAND Flash ECC寄存器 NFECC 地址0 x4E000014,4.4.2 NAND Flash的物理组成 正如硬盘的盘片被分为磁道,每个磁道又分为若干扇区,一块Nand flash也分为若干block,每个block分为如干page。一般而言,block、page之间的关系随着芯片的不同而不同,典型的分配是这样的:1block=32page 1page=512bytes(datafield)+16bytes(oob)NandFlash以页为单位读写数据,而以块为单位擦除数据。按照k9f1208的组织方式可以分四类地址:Column Address、halfpage pointer、Page Address、Block Address。,Nand Flash地址周期表,这里以64MB 的NandFlash为例 A0:25表示数据在64M空间中的地址。Column Address表示数据在半页中的地址,大小范围0-255,用A0:7表示;halfpage pointer表示半页在整页中的位置,即在0-255空间还是在256-511空间,用A8表示;Page Address表示页在块中的地址,大小范围0-31,用A13:9表示;Block Address表示块在flash中的位置,大小范围04095,A25:14 表示。,4.4.3 S3C2410A与NAND Flash存储器的接口电路 与NOR Flash存储器相比,NAND Flash的接口相对比较复杂。一些嵌入式处理器芯片内部配置了专门的NAND Flash控制器,如S3C2410A。S3C2410A与NAND Flash存储器K9F1208UDM-YCB0接口电路如图4.4.4所示。K9F1208UDM-YCB0的存储容量为64M字节,数据总线宽度为8位,工作电压为2.7V3.6V,采用TSOP-48封装。仅需单3.3V电压即可完成在系统的编程与擦除操作,引脚端功能如表4.4.3所示。,表4.4.3 K9F1208UDM的引脚功能,K9F1208UDM的I/O口既可接收和发送数据,也可接收地址信息和控制命令。在CLE有效时,锁存在I/O口上的是控制命令字;在ALE有效时,锁存在I/O口上的是地址;/RE或/WE有效时,锁存的是数据。这种一口多用的方式可以大大减少总线的数目,只是控制方式略微有些复杂。利用S3C2410A处理器的NAND Flash控制器可以解决这个问题。在图4.4.4中,K9F1208UDM的ALE和CLE端分别与S3C2410A的ALE和CLE端连接,8位的I/O7I/O0与S3C2410A低8位数据总线DATA7DATA0相连,/WE、/RE和/CE分别与S3C2410A的nFWE、nFRE和nFCE相连,R/B与RnB相连,为增加稳定性R/nB端口连接了一个上拉电阻。同时,S3C2410A的NCON配置端口必须连接一个上拉电阻。,图4.4.4 S3C2410A与K9F1208UDM-YCB0接口电路,4.5 SDRAM接口电路,SDRAM可读可写,不具有掉电保持数据的特性,但其存取速度大大高于Flash存储器。在嵌入式系统中,SDRAM主要用做程序的运行空间、数据及堆栈区。当系统启动时,CPU首先从复位地址0 x0处读取启动代码,在完成系统的初始化后,程序代码一般应调入SDRAM中运行,以提高系统的运行速度。同时,系统及用户堆栈、运行数据也都放在SDRAM中。SDRAM在各种嵌入式系统中应用时,为避免数据丢失,必须定时刷新。因此要求微处理器具有刷新控制逻辑,或在系统中另外加入刷新控制逻辑电路。S3C2410A及其他一些ARM芯片在片内具有独立的SDRAM刷新控制逻辑,可方便地与SDRAM接口。但某些ARM芯片则没有SDRAM刷新控制逻辑,不能直接与SDRAM接口,在进行系统设计时应注意这一点。那么要隔多长时间重复一次刷新呢?目前公认的标准是,存储体中电容的数据有效保存期上限是64ms(毫秒,1/1000秒),也就是说每一行刷新的循环周期是64ms。,SDRAM是多Bank结构,例如在一个具有两个Bank的SDRAM的模组中,其中一个Bank在进行预充电期间,另一个Bank却马上可以被读取,这样当进行一次读取后,又马上去读取已经预充电Bank的数据时,就无需等待而是可以直接读取了,这也就大大提高了存储器的访问速度。为了实现这个功能,SDRAM需要增加对多个Bank的管理,实现控制其中的Bank。进行预充电。在一个具有2个以上Bank的SDRAM中,一般会多一根叫做BAn的引脚,用来实现在多个Bank之间的选择。,引脚连接:,1).数据线DQ0-DQ15 这个与2410的数据总线对应连接就可以了。2).行/列地址线A0-A12 由于2410是按照字节寻址,但SDRAM是16Bit半字宽度,所以连接时需要错开一位,将A0连到处理器的A1,而如果系统是通过两块k4s561632串联实现32Bit数据宽度,所以需要进行字对齐连接,将A0接到A2地址总线上,其他顺次接。,3).Bank地址线BA0-BA1 在2410的手册里面,有个SDRAM BANK ADDRESS PIN CONNECTION表,里面规定了不同组织结构的SDARM的Bank地址线。所以首先要明白存储器的组织结构,看K4S56163的芯片手册,标注:4M*16Bit*4Banks。这表示每个Bank有4M大小,即由行列地址确定的存储单元个数为4M个,16Bit是位宽,即每个存储单元存储的数据大小为16bit半字,一共包含有4个Bank,所以这个SDRAM的总容量为32MB(256Mbit)。根据这个就可以确定Bank地址线为A24:23。4).控制引脚 由于2410集成了SDRAM的管理器,所以接到相应的管脚就是了,主要是行选通RAS,列选通CASE,写使能WE,LDQM和UDQM数据I/O屏蔽用于在读模式下控制输出缓冲,在写模式下屏蔽输入数据,CS片选接在nGS6,即是把SDARM挂接在Bank6上,另外还有时钟控制线,电源等。,SDRAM Bank地址配置,目前常用的SDRAM为8位/16位的数据宽度,工作电压一般为3.3V。主要的生产厂商为HYUNDAI,Winbond等,同类型器件一般具有相同的电气特性和封装形式,可以通用。S3C2410A与SDRAM存储器HY57V561620接口电路如图4.4.5所示。HY57V561620存储容量为4组64M位,工作电压为3.3V,常见封装为TSOP-54,兼容LVTTL接口,支持自动刷新(Auto-Refresh)和自刷新(Self-Refresh),16位数据宽度。HY57V561620引脚功能如表4.4.4所示。,表4.4.4 HY57V561620引脚功能,(引脚端19 nGCS0修改为nGCS6)图4.4.5 S3C2410X与SDRAM存储器HY57V561620的接口电路,根据系统需求,可构建16位或32位的SDRAM存储器系统,但为充分发挥32位CPU的数据处理能力,本设计采用32位的SDRAM存储器系统。HY57V561620为16位数据宽度,单片容量为32MB,系统选用两片HY57V561620并联构建32位的SDRAM存储器系统,共64MB的SDRAM空间,可满足嵌入式操作系统及各种相对较复杂的算法的运行要求。与Flash存储器相比,SDRAM的控制信号较多,其连接电路也要相对复杂一些。两片HY57V561620并联构建32位的SDRAM存储器系统,其中一片为高16位,另一片为低16位,可将两片HY57V561620作为一个整体配置到Bank6,即将S3C2410A的nGCS6接至两片HY57V561620的/CS端。高位HY57V561620的CLK端连接到S3C2410A的SCLK1端,低位HY57V561620的CLK端连接到S3C2410A的SCLK0端;,两片HY57V561620的CKE端连接到S3C2410A的SCKE端;两片HY57V561620的/RAS、/CAS./WE端分别连接到S3C2410X的nSDRAS端、nSDCAS端、nDWE端;两片HY57V561620的A12A0连接到S3C2410A的地址总线ADDR14ADDR2(A14A2);两片HY57V561620的BA1、BA0连接到S3C2410A的地址总线ADDR25(A25)、ADDR24(A24);高16位片的DQ15DQ0连接到S3C2410A的数据总线的高16位DATA8DATA16(D8D16),低16位片的DQ15DQ0连接到S3C2410X的数据总线的低16位DATA15DATA0(D15D0);高16位片的UDQM、LDQM分别连接到S3C2410A的nWEB3、nWEB2,低16位片的UDQM、LDQM分别连接到S3C2410X的nWEB1、nWEB0。注意:此时应将BWSCON中的DW6设置为10,即选择32位总线方式。,4.6 SD卡接口电路,4.6.1 SD卡的接口规范 SD存储卡兼容MMC卡接口规范,采用9芯的接口(CLK为时钟线,CMD为命令响应线,DAT0DAT3为双向数据传输线,VDD、Vss1和Vss2为电源和地),最大的工作频率是25MHz,标准SD的外形尺寸是24mm32mm2.1mm,SD卡的外形和接口如图4.6.1所示,SD卡引脚定义如表4.6.1所示。SD卡原理图如图4.7.2所示。SD卡系统支持SD和SPI方式两种通信协议。SD卡在结构上使用一主多从星型拓扑结构,拓扑图如图4.6.3所示。,图4.6.1 SD卡的外形和接口,表4.6.1 SD卡引脚定义,4.6.2 S3C2410A的SD卡接口电路,图4.6.4 SD卡接口电路,S3C2410A内部集成了SD控制器,SD卡接口电路如图4.6.4所示。,