此文章部分转载于知乎,对应链接为:Choris 的回答。以下是正文:

初学 MCU 的人,经常会看到 ROM, RAM, FLASH,而且会被这些词汇搞得晕头转向。本文对这些概念进行了厘清,并介绍了这些 Memory的区别,以及它们在 MCU 中的作用。

1. ROM (Read Only Memory) 程序存储器

ROM 全称 Read Only Memory,顾名思义,它是一种只能读出事先所存的数据的固态半导体存储器。ROM 中所存数据稳定,一旦存储数据就再也无法将之改变或者删除,断电后所存数据也不会消失。其结构简单,因而常用于存储各种固化程序和数据。

在单片机中用来存储程序数据及常量数据或变量数据,凡是 .c 文件及 .h 文件中所有代码、全局变量、局部变量、‘const’ 限定符定义的常量数据、startup.asm 文件中的代码(类似 ARM 中的 bootloader 或者 X86 中的 BIOS,一些低端的单片机是没有这个的)通通都存储在 ROM 中。

为了便于使用和大批量生产,进一步发展出了可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)。EPROM 需要用紫外线长时间照射才能擦除,使用很不方便。1980 年又出现了电可擦除可编程只读存储器(EEPROM),它克服了 EPROM 的不足,但是集成度不高、价格较贵。于是又发展出了一种新型的存储单元结构同 EPROM 类似的快闪存储器(FLASH MEMORY)。FLASH 集成度高、功耗低、体积小,又能在线快速擦除,因而获得了快速发展。

2. FLASH 存储器

Flash 存储器(FLASH EEPROM)又称闪存,快闪。它是 EEPROM 的一种。它结合了 ROM 和 RAM 的长处。不仅具备电子可擦除可编辑(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据。它于 EEPROM 的最大区别是,FLASH 按扇区(block)操作,而 EEPROM 按照字节操作。FLASH 的电路结构较简单,同样容量占芯片面积较小,成本自然比 EEPROM 低,因此适合用于做程序存储器。

3. RAM (Random Access Memory) 随机访问存储器

RAM 又称随机存取存储器,存储单元的内容可按照需要随机取出或存入,且存取的速度与存储单元的位置无关。这种存储器在断电时,将丢失其存储内容,所以主要用于存储短时间使用的程序。

它主要用来存储程序中用到的变量。凡是整个程序中,所用到的需要被改写的量(包括全局变量、局部变量、堆栈段等),都存储在 RAM 中。

4. ROM, FLASH 和 RAM 的区别

对于 RAM, ROM 以及 FLASH 的区别,简单地说,在计算机中,RAM 、ROM 都是数据存储器。RAM 是随机存取存储器,它的特点是易挥发性,即掉电失忆。ROM 通常指固化存储器(一次写入,反复读取),它的特点与 RAM 相反。ROM 又分一次性固化、光擦除和电擦除重写两种类型。

在应用中,常规上 ROM 是用来存储固化程序的,RAM 是用来存放数据的。由于 FLASH ROM 比普通的 ROM 读写速度快,擦写方便,一般用来存储用户程序和需要永久保存的数据。譬如说,现在家用的电子式电度表,它的内核是一款单片机,该单片机的程序就是存放在 ROM 里的。电度表在工作过程中,是要运算数据的,要采集电压和电流,并根据电压和电流计算出电度来。电压和电流时一个适时的数据,用户不关心,它只是用来计算电度用,计算完后该次采集的数据就用完了,然后再采集下一次,因此这些值就没必要永久存储,就把它放在 RAM 里边。然而计算完的电度,是需要永久保存的,单片机会定时或者在停电的瞬间将电度数存入到 FLASH 里。

ROM、FLASH 和 RAM 的区别相关推荐

  1. ROM, FLASH和RAM的区别

    ROM (Read Only Memory)程序存储器 ROM全称Read Only Memory,顾名思义,它是一种只能读出事先所存的数据的固态半导体存储器.ROM中所存数据稳定,一旦存储数据就再也 ...

  2. flash和ram的区别

    flash和ram的区别:FLASH和RAM最大的区别是,FLASH是掉电保持的,RAM是掉电丢失的. 也就是说在关掉电源之后,储存在FLASH中的数据还是在FLASH 里面,储存在RAM中的数据会随 ...

  3. 内存(RAM或ROM)和FLASH存储的真正区别总结

    内存(RAM或ROM)和FLASH存储的真正区别总结 1.什么是内存      什么是内存呢?在计算机的组成结构中,有一个很重要的部分,就是存储器.存储器是用来存储程序和数据的部件,对于计算机来说,有 ...

  4. 总结内存(RAM或ROM)和FLASH存储的真正区别

    本文主要向大家介绍了内存(RAM或ROM)和FLASH存储的真正区别,通过具体的分析,让大家能够了解它们,希望对大家学习内存(RAM或ROM)和FLASH存储有所帮助. 1.什么是内存 什么是内存呢? ...

  5. ROM与RAM 的区别

     作为FPGA的初学者,在调用IP核时会发现其中的 ROM 和 RAM 是在同一个地方,但是不知道它们到底有什么区别呢?下列我根据自己的理解说说吧. RAM 可以理解为缓存吧,就是把系统即将要用到 ...

  6. 计算机中rom,计算机中RAM和ROM

    1.RAM(RamdomAccessMemory): 易挥发性随机存取存储器,高速存取,读写时间相等,且与地址无关,如计算机内存等. 2.ROM(Read Only Memory): 只读存储器.断电 ...

  7. 【飞思卡尔 MC9S12】PRM文件与内存映射(Flash、RAM、EEE)

    本篇介绍飞思卡尔MC9S12系列芯片基本内存映射知识,主要是其特有的分页机制.一般的小型项目可能很多人都不会去专门了解这些内容,但是对于大型项目(代码超过16KB 或 内部变量过多超过4KB),势必要 ...

  8. FPGA中block ram和distributed ram的区别

    在Spartan-3系列FPGA中使用LUT构建分布式RAM http://xilinx.eetrend.com/tag/846?quicktabs_1=0 利用块RAM实现数据延迟的一些问题 htt ...

  9. stm32 FATFS文件系统如何减少Flash和RAM占用,FATFS移除中文文件名,FATFS移除动态内存

    FATFS 下载地址:FATFS源码下载 FATFS 移植的过程中,主要用到三个文件:ff.c.diskio.c.ffconf.h. 移植FATFS不需要过多的操作,过程很是方便,步骤为: 补全 di ...

最新文章

  1. python元组和列表都支持的方法是_python_列表和元组
  2. Java中的泛型方法
  3. boost::mpl::abs相关的测试程序
  4. python内置属性类_Python内置类属性,元类研究
  5. [html] 你能否画出一个0.5px的直线?
  6. Linux常用最基础命令总结
  7. Telnet FTP Xwindow
  8. 中文分词与马尔科夫模型之二:隐马尔科夫模型与维特比
  9. 201521145048 《Java程序设计》第3周学习总结
  10. 移动、复制、新增工作表
  11. web前端js上传文件
  12. WS2811 M是三通道LED驱动控制专用电路彩灯带方案开发
  13. Win 双网卡上网冲突,网络设置
  14. 缠中说禅股票交易系统图解 z
  15. 关于国际标准书号ISBN
  16. Discuz X 多页面专题制作教程
  17. 深耕教学 常研常新——海门市高二历史教研活动掠影
  18. 斯坦福编程方法学作业讲解3---Karel机器人三大定律(上)
  19. shell数组 IFS
  20. Kafka的灵魂伴侣Logi-KafkaManger(2)之kafka针对Topic粒度的配额管理(限流)

热门文章

  1. Dubbo 服务订阅源码分析
  2. php增加logo,PHP图片等比缩放和增加Logo水印代码详解和注释
  3. 2021-5-5 buu刷题记录
  4. 华大单片机-STM32F030的终结者HC32F030 横空出世-芯虎论坛
  5. Arduino的模拟信号输入——电压测试
  6. 计算机网络自顶向下方法(一)——计算机网络和因特网
  7. 冰板栗之对while循环的总结
  8. 浅谈PHP编写杨辉三角算法
  9. android raw文件作用,Android 中raw和assets文件夹的区别
  10. 沉迷于图书馆无法自拔