Live2d Test Env

数据存储分析

存储分类

  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)

posted @ 2024-10-08 11:38  爬上那个坡  阅读(5)  评论(0编辑  收藏  举报