ROM、RAM、FLASH区别

一、ROM

       ROM(Read Only Memory)只读存储器。是一种半导体内存,其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子或电脑系统中,资料并且不会因为电源关闭而消失。只能读出事先所存数据的固态半导体存储器。ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。ROM所存数据稳定 ,断电后所存数据也不会改变;其结构较简单,读出较方便,因而常用于存储各种固定程序和数据。除少数品种的只读存储器(如字符发生器)可以通用之外,不同用户所需只读存储器的内容不同。ROM分类:

  • PROM: 可编程一次性(无法修改的ROM)。
  • EPROM: 紫外线可擦除可编程的ROM。
  • EEPROM: 电子可擦除可编程的ROM。

二、RAM

       RAM(Random Access Memory)随机存取存储器。是与CPU直接交换数据的内部存储器;存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。RAM最大的特点是存储读取的速度非常快,比ROM高出很多。CPU(中央处理器)在执行程序时需要先将指令和数据调入到RAM中,从而保证计算速度。RAM分类:

  • SRAM: 静态RAM。SRAM速度非常快,不需要刷新电路即能保存数据,是目前最快的存储设备。
  • DRAM: 动态RAM。DRAM保留数据的时间很短,需要内存刷新电路,每隔一段时间,刷新充电一次,否则数据会消失。

ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据。

三、FLASH

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

四、单片机程序大小计算

       单片机的FLASH有4K的,有8K的,单片机程序写好并编译后生成hex文件,这个hex文件就是要下载到单片机里的文件,这个文件的大小不能超过单片机的FLASH大小,否则就要优化程序或者选用更大FLASH的单片机。
在这里插入图片描述

       hex文件的大小并不是单片机程序真正的占用FLASH的空间大小,在使用编译工具编译成功后,一般会有提示。

1、Keil/MDK

       通过Keil编译单片机程序成功后,会有如下提示:
在这里插入图片描述

  • Code: 表示所要执行的代码,程序中所有的函数。
  • RO-data: (Read Only Data)表示只读数据,程序中所定义的全局常量数据。
  • RW-data: (Read And Write Data)表示已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量。
  • ZI-data: (Zero Initial Data)表示定义了但未初始化的可读写数据,程序中定义了但没有初始化的全局变量和静态变量(就是程序中用到的并且被系统初始化为0的变量,Keil编译器默认是把没有初始化的变量都赋值一个0,这些变量在程序运行时是保存在RAM中的)。

通过上面的描述就可以看出:

  • 下载到单片机FLASH的程序是:Code + RO-data + RW-data
  • 运行在RAM中的数据是:RW-data + ZI-data

猜你喜欢

转载自blog.csdn.net/hezhanran/article/details/130601225