1 分类
特点:
SRAM是目前读写最快的存储设备,但制造成本高,通常用于CPU的一级缓存,二级缓存。
DRAM保留数据时间段,速度比SRAM慢,但比任何ROM都要快,计算机的内存就是DRAM的。
DDR SDRAM(Double Data Rate SDRAM),习惯称DDR,即双倍速率同步动态随机存储器。其在SDRAM的基础上发展而来,SDRAM在一个时钟周期内只传输一次数据,在上升沿传输;而DDR则是一个时钟周期内传输两次数据,能够在上升沿与下降沿各传输一次。根据工作频率的不同,DDR有DDR200、DDR266、DDR333、DDR400、DDR533等。DDR2内存拥有两倍于DDR内存的预读取能力(即4bit数据读预取),也就是说,DDR2内存每个时钟能够以4倍外部总线的数据读/写数据,并且能够以内部控制总线4倍速度运行。DDR3相比DDR2有更低工作电压,数据预读升级到8bit。
EEPROM(Electrically Erasable Programmable ReadOnly Memory),电可擦除可编程只读存储器。
Flash存储器,又称闪存,不仅具备EEPROM的性能,又不会断电丢失数据,U盘就是这种存储器。目前主要有两种:Nor Flash和Nand Flash。
Nor | Nand | |
---|---|---|
接口 | RAM-Like | 复用I/O |
容量 | 1MB~32MB | 16MB~512MB |
XIP(代码可直接运行) | Yes | No |
性能 | 擦除 | 非常慢(5s) |
写 | 慢 | 快 |
读 | 快 | 快 |
可靠性 | 较高,位反转比例小于Nand Flash的10% | 较低,位反转较常见,必须要有校验措施 |
可擦写次数 | 10000~100000 | 100000~1000000 |
易用性 | 容易 | 复杂 |
主要用途 | 保存代码和关键数据 | 保存数据 |
生命周期 | 低于Nand Flash的10% | 是Nor Flash10倍以上 |
注:
① XIP,即代码可直接运行,无需复制到内存。Nor Flash接口与RAM完全相同,可随机访问任意地址数据,Nor Flash存储程序,Nand Flash存储数据,两者一般同时使用。
② Flash以块为单位,擦除必须以块擦除 -> Nor Flash 块大小64Kb-128Kb;Nand Flash 块大小8-64Kb;这也是擦除慢的原因。
③ Nand Flash 一般以512byte为单位读写,更适合存储数据。
④ EDC/ECC检测/恢复位反转(Linux中已经实现)
⑤ Nor->jiffs2;Nand->yaffs
现代工艺,出现坏块几率不大,手机中一般只使用Nand Flash
2 Nor Flash
2.1 接口
Nor Flash的接口为RAM-Like,属于内存类接口,故其包含有数据线、地址线、控制信号。Nor Flash可以像内存一样读,但是不能像内存一样写,需要做一些特殊的操作才能进行写操作,读只需像内存一样读很简单。下图为接口示意图:
根据连线图,发现A0接了LADDR1,是由于该款芯片位宽为16位。对于计算机而言,读取数据必然都是8bit的倍数。假设执行:
MOV R0, #3 @去地址为3的内存上
LDRB R1, [R0] @ 从内存为3的地址上,读出一个字节
CPU发出0x00000003地址,经内存控制器,到芯片中接收到A(0) = 1;A(1) = 0;根据内存分布也就是第一个地址空间的第3地址的数据。如下图所示:
简言之,CPU发出的地址到具体的存储芯片中会转化为地址空间,再去取相应地址值。所以在编程中对于16位宽操作需要左移1位。
2.2 规范
(1)jedec
内核中实现定义了一个数组,通过比较ID,相同则使用
探测简单,但数组过于庞大
(2)CFI
直接发送各种命令读取芯片状态(通用)
进入CFI模式:往55H写入98H
2.3 指令
Nor Flash的操作需要写入相应的命令,以MX29LV800BBTC为例datasheet中给出了命令参数:
注:
ADI :读写ID,A1=0,A0=0(manufacturer);A1=0,A0=1(device)
DDI :本款芯片ID:C2H(manufacturer);22DA/DA-top 225B/5B-bottom(device)
PA :内存地址位
PD :读取PA的数据