嵌入式学习---存储器

1.存储器常识

按照掉电后数据是否会丢失,将嵌入式存储器分为两大类:随机存储器RAM和只读存储器两种。RAM和ROM都是半导体存储器,RAM通常时在掉电后数据就丢失了,典型的RAM就是计算机内存;而ROM在系统停止供电时依然可以保存数据,比如电脑里的硬盘。

内存的工作原理:内存是用来存放当前正在使用的(即执行中)的数据和程序,我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的“动态”,指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。

嵌入式代码编译后,程序为RO段,数据分为ZI为没有初值的全局变量段,RW为有初值的全局变量段。

在MDK工程编译完成之后,双击工程打开.map文件,可以查看ROM和RAM使用情况,如下图:

 

Code是代码占用的空间,RO-data是 Read Only 只读常量的大小,如const型,RW-data是(Read Write) 初始化了的可读写变量的大小,ZI-data是(Zero Initialize) 没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化,只是在代码运行时占用RAM空间。

简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code+RO Data+RW Data

程序运行的时候,芯片内部RAM使用的空间为: RW Data + ZI Data

初始化时RW-data从flash拷贝到RAM

2.RAM(Random Access Memory)

随机存取存储器,也叫“随机存储器”,是在CPU处理过程中直接与CPU交换数据的内部存储器,也叫主存(内存)。读写速度快,但是在系统断电后,数据会丢失,主要用于存储短时间使用的程序。

2.1 SRAM(Stataic RAM)

静态随机存储器,是一种具有静止存取功能的内存,SRAM采取多重晶体管设计,不需要刷新电路既能保存它内部存取的数据,特点为高性能、集成度低、速度快。

特点:速度非常快,是目前读写速度最快的存储设备,价格昂贵,不适合做大容量内存,一般用在处理器的缓存。

像S3C2440的ARM9处理器里面就有4K的SRAM用来做CPU启动时用的。

2.2DRAM(Dynamic RAM)

动态随机存储器,动态是指存储阵列需要周期性刷新,以确保数据不丢失。DRAM中每个存储单元由配对出现的晶体管和电容构成,基本原理是利用电容存储的电荷量来代表0和1,会存在漏电导致电位差消失(1变成0),所以每过一段时间需要根据里面的内容充电(即刷新),刷新过程中不能读写。

特点:速度比SRAM慢,但还是比所有ROM都快,价格别SRAM便宜很多,计算机内存就是DRAM。

2.3 SDRAM(Synchronous Dynamic RAM)

同步动态随机存储器,同步是指内存工作需要的同步时钟,内部命令的发送与数据的传输都以它为基准。

SDRAM是DRAM中的一种,增加了同步时钟,提高了读写速率。

SDRAM的发展从现在已经经历了五代,分别是:第一代SDR SDRAM;第二代DDR SDRAM;第三代DDR2 SDRAM;第四代DDR3 SDRAM;第五代DDR4 SDRAM。

2.4 DDR RAM(Double Data Rate RAM)

双倍数据速率随机存储器,也称作DDR SDRAM,这种改进型的RAM和SDRAM是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用得最多的内存,而且它有着成本优势,事实上击败了Intel的另外一种内存标准-Rambus DRAM。在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。

2.5总结

从速度的角度来说,DRAM/SDRAM需要刷新和回写,速度比不上SRAM,所以CPU的缓存是SRAM,主内存用SDRAM。

从省电的角度来说,DRAM/SDRAM要刷新,比较费电,而省电设计的SRAM只要一个纽扣电池就可以保存数年之久。

那什么情况下用SDRAM???和DRAM???

3.ROM(Read Only Memory)

只读存储器,断电后信息保存。最初ROM内部资料是在ROM制造的工序中,在工厂里用特殊的方法烧录进去,其内容只能读不能写。

后来出现了PROM(Programmable ROM,可编程ROM),最初从工厂中制作完成的PROM内部没有数据,用户可以用专用的编程器将自己的数据写入,但只能写一次,以后不能再做擦出进行修改,写错就废了,基本用的很少了。

后来又出现了可多次擦出重写的EPROM(Erasable Programmable ROM,可擦除可编写ROM)。EPROM芯片有一个很明显的特征,在其封装上可以看到一个玻璃窗口,透过窗口,可以看到内集成电路,该窗口就是提供给紫外线通过该孔照射到内部数据,完成数据擦除。EPROM在写入数据后,还要用不透光的封条把窗口封住,以免在使用时遭到其他紫外线照射导致数据丢失,操作起来很麻烦,也是比较古老了。

3.1EEPROM(Electrically Erasable Programmable ROM)

可电擦除可编程ROM,EEPROM的擦出不需要借助于其他设备,而是以电子信号来擦除的,其擦出单位是Byte,所以不必将数据全部擦出后才能重新写入。

举个例子,手机软件一般放在EEPROM中,我们打电话,有些最后拨打的号码,暂时是存在SRAM中的,不是马上写入通过记录(通话记录保存在EEPROM中),因为当时有很重要工作(通话)要做,如果写入,漫长的等待是让用户忍无可忍的。

3.2 FLASH

FLASH存储器又称闪存,属于广义的EEPROM,因为Flash本身也是电擦除的ROM,在使用上也类似与EEPROM。但是为了区别于一般的按字节为单位擦写的EEPROM,我们称之为Flash,因为Flash的擦除不是以字节为单位,而是以块为单位(256字节)。

FLASH它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。

Flash分为NOR Flash和NAND Flash。

注意:往FLASH中写入数据时,只能由1写0,不能由0写1。所以在写FLASH时,需要先擦除扇区,也就是全部写1,然后再写入数据。

3.3NOR Flash

NOR Flash采用并行接口,有自己的地址线和数据线,可以采用随机访问方式,但是擦除仍要以块来擦除,NOR Flash可以在芯片内执行,所以NOR Flash可以直接用来做boot引导。

NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。

提示:芯片内执行不是说程序在Flash内执行,CPU的基本功能是取指、编译、执行。NOR Flash能在芯片内执行,是指CPU的取指模块能够直接从NOR Flash中把指令取出来,供后面的编译和执行模块使用。

特点:读取速度比NAND Flash快,但擦出速度较慢,集成度低,成本高。

现在的NOR容量一般在2M左右,一般用在代码量小的嵌入式产品方面。ARM9开发板上可见。

3.4NAND Flash

NAND Flash是IO设备、数据、地址、控制线共用的,需要软件来控制读取时序,按页读取、按块擦除、不适合XIP,因此不能直接做为boot。

NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户不能直接运行NAND Flash上的代码,因此好多使用NAND Flash的开发板除了使用NAND Flah以外,还作上了一块小的NOR Flash来运行启动代码。

NAND不是不能XIP,只是不适合做XIP。

XIP:executed in place,本地执行。操作系统采用这种系统,可以不用将内核或执行代码拷贝到内存,而直接在代码的存储空间直接运行。采用这样的技术既可以节省可用内存又可以减少加载的时间。

3.5eMMC

eMMC(Embedded Multi Media Card)采用统一的MMC标准接口,把高密度NAND Flash以及MMCController封装在一颗BGA芯片中。eMMC具有快速、可升级的特点。

就是为了简化存储器使用,将NAND Flash和控制芯片设计成1颗MCP(存储器芯片),开发者只需要采购eMMC芯片,不需要其他复杂的NAND Flash兼容性和管理问题,最大的优点是缩短新产品的上市周期和研发成本,加速产品的推出和更新速度。

3.6总结

NAND Flash按块擦除、按页来读,NOR Flash没有页。

NOR Flash适合做代码存储并XIP的,NAND Flash适合用来做大量数据存储的。NOR Flash的读取速度比NAND Flash稍快,但擦写速度比NAND Flash慢得多。

一般小容量的用NOR Flash,因为其读取速度快,多用来存储操作系统等重要信息,而大容量的用NAND FLASH,最常见的NAND FLASH应用是嵌入式系统采用的DOC(Disk On Chip)和我们通常用的“闪盘”,可以在线擦除。目前市面上的FLASH 主要来自Intel(英特尔),AMD(超威半导体),Fujitsu(日本富士通)和Toshiba(东芝),而生产NAND Flash的主要厂家有Samsung(三星)和Toshiba(东芝)。

 

猜你喜欢

转载自blog.csdn.net/qq_28086285/article/details/82728730