【IoT】STM32 FLASH 掉电数据丢失处理策略以及备份机制

编程入门 行业动态 更新时间:2024-10-28 06:26:29

1、原因

由于FLASH的擦除和写入的特性,如果在擦除中掉电或者写入时掉电,有可能会出现失败的情况,下次再上电读取就会出错。

擦除的时候掉电,不能保证擦除完全,但是已经擦除的部分,肯定是0xff了。

写的时候掉电,已经写入的就是正确的,电平掉到最低极限工作电压附近时,写入的就无法保证了,地址无法保证,写入的值也无法保证。没有写到的,肯定还是 0xFF。  

2、解决方式

2.1、硬件方式解决 — 掉电保护机制 

必须硬件电路上有相应的掉电警告中断,而且必须有足够的时间供软件响应。  

掉电保存和上电恢复,需要以下: 

1) 快速检测掉电信号;

2) 要有足够的时间让你停下来保存现场;

3) 上电后可靠的复位; 

这些的关键是掉电信号\电源\复位信号三个怎么配合的事;
  
掉电保护不是重新擦写那么简单,首先要有一个机制能知道发生了掉电事件,还要知道什么地方的数据是可能出错的,如果是新建文件还好一点,一般就是数据作废,如果是改写一个文件时发生掉电事故的话,还要有恢复机制,将数据恢复成改写以前的数据。

由于 flash 的先擦后写的特性,不会在原来位置重新写数据,一般都是把原位置的数据标记为无效,再在新位置写入数据,对于文件来说有一个存储位置的关系,这不同于文件系统的逻辑地址,每个逻辑地址要有对应的物理地址,要有一套逻辑-物理地址的转换映射关系在里面。

flash 空间总是有限的,还要有垃圾回收的机制,系统要将无效数据的存储空间回收。

更多推荐

【IoT】STM32 FLASH 掉电数据丢失处理策略以及备份机制

本文发布于:2023-06-14 01:33:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1423155.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:备份   数据丢失   机制   策略   掉电

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!