存储器
- ram
- rom
- rom: 不能编程
- prom: 可以写入一次
- eprom: 多次擦写, 需要在紫外线照一下
- eeprom: 任意修改
- 狭义EEPROM:
- 广义EEPROM: flash
- nor flash: 字节读, 块擦除
- nand flash: 页读取, 块擦除
ROM&RAM
EEPROM
- 可随机访问/修改任意字节, 可向每个bit写入0/1, 掉电不丢失
- 电路复杂成本高, 通常几k字节, 很少超过512k
flash
-
nor flash
- 数据线与地址线分开, 像ram一样随机寻址, 可读取任一字节(无页), 按块擦除
- 小容量(2~12M居多)
- 损坏无法使用
- 字节寻址, 程序可在nor flash中运行: 嵌入式系统常用小容量的nor flash存储引导代码, 用大容量的nand flash存放文件系统和内核
-
nand flash
- 数据线与地址线复用, 不能随机寻址, 读取只能按页读取, 按块擦除
- 读取速度慢, 擦写速度块
- 数据密度大, 体积小, 成本低
- 大容量居多
- 擦除次数是norflash数倍
- 可标记坏块, 使软件跳过坏块
-
flash
-
每页: 256 Byte (2048 bit)
-
每扇区: 16页
-
每块: 16扇区
-
最小擦除单位:扇区
-
可选择擦除单位:扇区、块、全片
-
最大编程(写入)单位:页( 256 Byte),大于256 Byte则需要循环写入。
-
最小编程(写入)单位:1 Byte,即一次可写入 1~256 Byte的任意长度字节。
-
未写入时FLASH里面的数据为全1,即0xFF。
-
只能由 1 —> 0 写入,不能由 0 —> 1 写入,即如果已经写入过了,则需要先擦除(擦除后数据变为全1)再写入。
-
示例:0xF0(1111 0000),即高4位可写入,低4位不可写入。
ref
- EEPROM和flash的区别
- 程序存储和运行时的内存分布