打印
[综合信息]

浅谈RAM和ROM的各种区别

[复制链接]
630|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
 一、RAM和ROM的区别
  只读存储器(Read Only Memory,ROM)。ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。ROM所存数据稳定,计算机中的ROM主要是用来存储一些系统信息,或者启动程序BIOS程序,这些都是非常重要的,只可以读一般不能修改,断电也不会消失。
  随机存取存储器(Random Access Memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。当电源关闭时RAM不能保留数据。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。
从电脑来说一般比较好理解,RAM就是我们平时所说的运行内存,它的确是随时可读写的。因为CPU处理的数据都是以运行内存为中介的。断电后信息是不保存的。那么对于ROM来说,是不是就是硬盘呢?不是说ROM只可以读吗?硬盘却是可以修改的。的确,必须明确一点,RAM与ROM都是内存,而硬盘是外存,所以ROM不等于硬盘。只不过RAM叫随机内存,ROM叫只读内存。
  //(上面为CSDN博主「添码星空」的原创**,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。//
  //原文链接:https://blog.csdn.net/tectrol/java/article/details/80638457)//
  内存(即随机存贮器RAM)可分为静态随机存储器SRAM,和动态随机存储器DRAM两种。我们经常说的“内存”是指DRAM。而SRAM大家却接触的很少。  
     SRAM其实是一种非常重要的存储器,它的用途广泛。SRAM的速度非常快,在快速读取和刷新时能够保持数据完整性。SRAM内部采用的是双稳态电路的形式来存储数据。所以SRAM的电路结构非常复杂。制造相同容量的SRAM比DRAM的成本高的多。正因为如此,才使其发展受到了限制。因此目前SRAM基本上只用于CPU内部的一级缓存以及内置的二级缓存。仅有少量的网络服务器以及路由器上能够使用SRAM。例如可以对全局变量、局部静态变量、全局静态变量等。

使用特权

评论回复
沙发
杨寅辉|  楼主 | 2020-7-28 10:48 | 只看该作者
举例说明
  可以知道SRAM属于RAM,掉电后数据丢失;FLASH和EEPROM属于ROM,掉电后数据不丢失。
  FLASH和EEPROM的区别在于:Flash存储器,适用于速度要求高,容量要求大,掉电时要求数据不丢失的场合;EEPROM适用于速度不高,容量不大,掉电时要求数据不丢失的场合。
了解这些之后,翻看开发板的stm32f103开发手册统计一下用到了哪些内存。
1.芯片自带内存:SRAM:20K,FLASH:128K.
2.IIC实验里介绍MCU与24C02通过IIC实现通讯,24C02是一款EEPROM芯片,总容量2Kbit。
3.SPI实验里介绍MCU与W25Q128通过SPI实现通讯,W25Q128是一块外部FLASH,容量128Mb,也就是16M字节。
知道了有哪些内存,再来总结下各个内存块的用处。
在单片机中,RAM主要是做运行时数据存储器,FLASH主要是程序存储器,EEPROM主要是用以在程序运行保存一些需要掉电不丢失的数据。

使用特权

评论回复
板凳
杨寅辉|  楼主 | 2020-7-28 10:51 | 只看该作者
二、堆栈、全局变量、全局静态变量、局部静态变量、文字常量、函数代码

  据我所知,单片机程序可分为 Code(数据代码区)、RO-data(只读存储区)、RW-data(可读可写存储区)、ZI-data(零初始化存储区),
其中Code(数据代码区) 和RO-data(只读存储区)存储在FLASH中,RW-data(可读可写存储区)和ZI-data(零初始化存储区)存储在SRAM中。
  那麽堆栈、全局变量、全局静态变量、局部静态变量、文字常量、函数代码分别存储在那些存储区中呢?

使用特权

评论回复
地板
杨寅辉|  楼主 | 2020-7-28 10:52 | 只看该作者
三、堆栈注意问题
  注意1 栈(Stack)越界问题,导致程序跑飞
  怎么出现这种情况?
  stack是往下发展的,当局部变量或者函数形参过多时,超过规定的stack大小,会占用Heap区域
  解决方法:
  1.确定程序没有问题   2.增大STACK大小
  2.不能使用malloc申请内存

使用特权

评论回复
5
詹求实| | 2020-7-28 22:16 | 只看该作者
SRAM属于RAM,掉电后数据丢失;FLASH和EEPROM属于ROM,掉电后数据不丢失。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

295

帖子

2

粉丝