依然源自《主流ARM嵌入式系统设计技术与实例精解》
关于存储器
文档原则:这事儿不可说的太细,不高大全。
用途:储存数据,比如代码,数据文件,变量等。
一般嵌入式都会涉及到片内存储器和片外存储器,前次做得单片机的项目就我完全是利用 片内的Flash,RAM以及ROM这些片内存储器。现如今升格成32位的ARM了,FLASH和SDRAM也 顺势就跑到外面来,当然也大了很多,内存相对没有原先的要求那么苛刻了。当然用的SoC 片子里面还是自有它集成的存储器的,I-Cache, D-Cache一个都不少。
关于静态随机存储器SRAM
一般用作Cache,快速,价高,集成度相对低,无需刷新,鉴于定位,不做介绍了。
关于动态随机存储器DRAM
一般的主存,利用电容快速充放电来记录数据,比SRAM稍慢,大概1/10速度,集成度高, 需要动态刷新来维持数据。关于SDRAM和DDRAM以及DDR2,DDR3等的区别和具体内容不做 介绍了。 SDRAM指同步动态随机存储器,这里同步指的是和CPU的时钟同步。SDRAM一般在一个方波的
上升沿执行一次读或写操作,而DDR在上升沿和下降沿各执行一次,所以速度可以加倍。
关于Flash
概述
两大类,NOR闪存(源自Intel)和NAND闪存(源自Toshiba)。
NOR闪存,适合存储少量的代码,支持XIP(execute in place)方式执行。即程序可直接运行于闪存。可用于加快系统启动速度。传输效率高,写入擦除慢,接口方便。主要占据1~16MB的市场,一般用来存程序代码。
NAND闪存,单元密度大,写入擦除快,需要特殊管理接口。扎根大容量市场。一般用来存数据。
连接
NOR闪存可以像其它存储器一样直接与微处理器相连,并在上面执行代码。NAND则需要
提供特殊的设备接口。另外NAND要注意如何隔离坏块,防止对坏块的写入。一般在NOR
闪存上运行代码不需要什么软件支持,但是在NAND软件上运行代码,通常需要驱动程
序,也就是内存技术驱动程序(MTD),NAND和NOR在写入和擦除时都需要MTD。
常用器件和厂商
NOR闪存,SST, INTEL, MICRON等。常用型号:28F128, 28F256, 28F640
NAND闪存,SAMSUNG, MICRON等。常用型号有:29F2G08, 29F4G16等
传统的FLASH必须先擦除然后才能写,现代新开发的支持bit alterability的PCM技术的
FLASH可以直接写,而不需要事先擦除。
编程时基本的操作:lock, unlock, program, erase。由于这些操作各个厂商都不同,所
以定义了统一的命令标准集CFI,它允许设备标识它自己和它的关键操作参数。
NOR
可以像RAM一样随机读和写,但是必须按块的方式擦除,擦除的时候把擦除块的所有的位都
变为1,典型的块大小为64、128、256KB。对于序列数据的写操作,NOR型FLASH要比NAND型
FLASH慢许多。由于NOR支持XIP,由于可以随机读取每个地址,所以CPU一般可以在NOR上执
行程序,即支持XIP。
老式的NOR闪存不支持坏块管理
NAND
工作形式更像是块设备。每个块包含许多页,这些页的典型大小为512、2048或者4096B。
每页关联一个12~16字节的错误检测或纠正码ECC,NAND依赖ECC进行纠错和检错。NAND读
和写都必须以页为最小单位,擦除必须以块为最小单位。NAND的另一个限制是同一个块内
的数据必须序列的写入。
NAND闪存也需要由设备驱动或者一个独立控制器进行坏块管理。两种坏块管理方式,一种
是划分逻辑块和物理块,保留一部分块存放映射表并处理坏块;另一种是在上电的时候扫
描每个块在RAM中创建一个坏块的映射表。NAND出厂的时候允许存在一些坏块,这个大大
降低NAND的成本。
当在NAND存储器中执行软件代码时,常使用虚存机制,代码首先被交换到RAM中,然后在
RAM中执行。不过一般NAND用来存储数据,而不是用于执行代码。
标准化工作
开放NAND闪存接口工作组(Open NAND Flash Interface Working Group)开发了NAND的芯
片级标准--ONFI标准。它包括NAND FLASH的物理引脚形式;读写擦除NAND的命令集;自我
标识机制。
非易挥发性存储器主机控制器工作组(Non-Volatile Memory Host Controller Interface
Working Group)NVMHCI。
NOR和NAND在两个主要方面不同:独立内存单元连接方式不同;提供读写的接口不同(NOR
允许随机读,NAND只允许按页访问)
串行接口的闪存,使用一个串行接口,典型的是SPI,支持序列数据访问,一次传送一位。
优点在于相对于并行接口来说较少的PCB连线,可以减少PCB板面积、省电以及降低整体成
本(原因有xxx)。常用来存放嵌入式系统的固件。
2006年闪存大概占据了整个半导体市场产值的8%,半导体存储市场的34%。
关于Memory Technology Devices(MTD),不做介绍。