rom是什么意思 ?一文区分清楚ROM、RAM和FLASH

硬件的存储介质配置决定了整体的启动流程。运行介质都会在CPU的地址空间上,占用地址空间的一部分。CPU可以根据寻址地址从运行介质中读取一条指令或者一条数据。RAM属于随机访问存储器,ROM和Flash等属于非易失性存储器。

ROM

ROM(Read Only Memory),只读存储器。ROM数据不能随意更新,但是在任何时候都可以读取。主要用于存放一些固定的不需要修改的代码或者数据。掉电之后,数据还可以保存。IROM则是指集成于芯片内部的ROM。

rom是什么意思 ?一文区分清楚ROM、RAM和FLASH

ROM

ROM主要有Mask ROM、EPROM、EEPROM和Flash ROM。

Mask ROM(掩膜ROM),一次性由厂家写入数据的ROM,用户无法修改。

PROM只允许用户利用专门的设备(编程器)将自己的程序写入一次,一旦写入后,其内容将无法改变。所以也叫做一次可编程只读存储器(One Time Programming ROM)。

EPROM(可擦除可编程ROM),分为UVEPROM(紫外线擦除)和EEPROM(电擦除)。EPROM虽然即可读又可“写”,但它不能取代RAM。因为EPROM的编程次数是有限的;而且它写入的时间较长,即使对于EEPROM,擦除一个字节需要约10ms,写入一个字节大约需要10us,比SRAM或DRAM的时间长100~1000倍。

EEPROM不但可以利用电压的高低来写入数据,还可以利用电压的高低清除EEROM所存储的数据。EEPROM在数据清除时还可以针对个别的存储单元进行清除操作,比起EPROM需要整个清除数据方便许多。EEPROM的数据存储保持能力可以长达10年,而数据清除再被规划的次数可以达到一万次以上。

Flash ROM见NOR Flash部分。

RAM

RAM有两个大类,静态RAM和动态RAM。

rom是什么意思 ?一文区分清楚ROM、RAM和FLASH

板载RAM

SRAM(Static Random Access Memory),即静态随机存取存储器(六个晶体管存储一位数据,功耗大,密面积大)。它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。优点,速度快(目前读写速度最快的存储设备),不必配合内存刷新电路,可提高整体的工作效率。初始化简单。缺点,集成度低,掉电不能保存数据,功耗较大,相同的容量体积较大,而且价格较高,少量用于关键性系统以提高效率(一、二级缓存)。

DRAM( Dynamic Random Access Memory),动态随机存储器(一个晶体管和一个电容存储一位数据,便宜简单,需要刷新),动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。

DRAM有很多种,主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等。

其中SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器,同步是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;相对于SRAM来说,体积较小且价格便宜。由General SDRAM and Controller进行控制,通常只能工作在133MHz主频。

其中DDRAM(Double Data Rate SDRAM,双倍速率随机存储器),DDRAM依靠一种叫做双倍预取(2n-prefetch)的技术,即在内存芯片内部的数据宽度是外部接口数据宽度的2倍,使峰值的读写速度达到输入时钟速率的2倍,并且DDRAM允许在时钟脉冲上升沿或下降沿传输数据,这样不需要提高时钟频率就能加倍提高SDRAM的速度,并具有SDRAM多一倍的传输速率和内存带宽。同时为了保证在高速运行时的信号完整性,DDRAM技术还采用了差分输入的方式。总的来说DDRAM采用更低的电压、差分输入和双倍数据速率输出等技术。

Flash

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

rom是什么意思 ?一文区分清楚ROM、RAM和FLASH

U盘、SD大小卡

Flash有两种:NOR Flash和NADN Flash。NOR Flash(读慢、写快)一般用来存储少量的代码,适合小容量固件的启动内存。NADN Flash一般用在高数据存储密度方案(固态硬盘、u盘等)。

NOR Flash的读取和我们常见的SRAM的读取是一样,不需要再把代码读到系统RAM中运行,用户可以直接运行装载在NOR FLASH里面的代。NOR Flash的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但很低的擦除和写入速度大大影响了它的性能。

NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。NAND Flash不能像RAM那样,直接对目标地址进行总线操作,比如执行一次写操作,它必须输入一串特殊的指令(NOR Flash),或者完成一段时序(NAND Flash)才能将数据写入到Flash Memory中,因此用户不能直接运行NAND Flash上的代码,好多使用NAND Flash的开发板除了使用NAND Flah以外,还配上了一块小的NOR Flash来运行启动代码。

SPI Flash使用SPI总线接口的Nand Flash。

eMMC是Nand Flash和闪存控制器集成在同一芯片封装。

SD和eMMC相似,区别就是eMMC焊接在主板上,而SD卡是可以拔插的。

TF(Trans Flash),也称为Micro SD卡,本质和SD卡是一个东西。

rom是什么意思 ?一文区分清楚ROM、RAM和FLASH

TF卡

SSD(solid-state drive)固态硬盘,与eMMC类似,区别是SSD是有多个闪存芯片,eMMC通常是一个闪存芯片,SSD使用SATA、PCIe、M2等接口,传输速度比eMMC的SPI接口更快,eMMC常用于移动设备中,SSD常用于PC。

rom是什么意思 ?一文区分清楚ROM、RAM和FLASH

三星870pro SSD

启动顺序

在uboot启动过程中有三个步骤,即BL0、BL1和BL2。因为BL0是上电启动代码,固定不变的,所以将其固化在IROM中运行。因为SRAM是集成在平台内部,BL0阶段之后可以直接使用,但是size比较小。而SDRAM需要根据外围DDR进行初始化,BL0之后还无法使用,需要在BL1中进行初始化之后才能使用。故BL0放在IROM中运行,BL1放在SRAM中运行,BL2放在SDRAM中运行。