存储分类
1. RAM: 运行内存,速度快、掉电数据丢失
2. ROM:在单片机中就是Flash。ROM原来指一次性编程存储,后来改善为PROM->EPROM->EEPROM改善增强。Flash是在EPROM的基础上改善而来,相对于EEPROM来说,速度较慢,但都是非易失性存储设备。Flash需要进行扇区读写,EEPROM可以支持字节单位进行擦除和读写。
数据存储
数据存储分为以下几个section:text、const(常量区)、静态数据存储区(bass、data)、栈、堆
text:文本段或者代码段。用于存储代码,在Flash中
const: 常量区。在Flash中。
bass:存放未初始化或初始化为0的全局变量或static变量。上电时,在RAM中分配一段区域(elf文件中有记录区域大小),在变量使用时,在RAM中进行内存分配。
data: 存放初始化非零的全局变量或static变量。掉电时,在Flash中有对应的初始化值存储,上电时,将Flash中的初始值拷贝到RAM中相应变量位置。
栈: 存放局部变量和代码返回地址等信息,在RAM中。
堆: 在启动文件中进行分配大小。在RAM中。
对于需要存储变量实时值,程序掉电重启依然记录之前值的变量:
1. 存储在Flash中,直接在Flash中找一个地址,进行数据存储;
优点: 简单,方便。
缺点:需要计算好代码大小,防止在程序烧录时,被覆盖或者与代码冲突。
2. 外挂EEPROM
参考文章:
RAM明明断电会丢失数据,为什么初始化的全局变量存储在RAM?详细分析程序的存储_那些变量会存在ram中-CSDN博客
FLASH算法|.elf文件|基本类型- FLASH算法文件介绍 - 知乎 (zhihu.com)
标签:分析,初始化,存储,Flash,变量,RAM,数据,EEPROM From: https://www.cnblogs.com/zypprocess/p/18451314