打印
[STM32MP2]

双缓冲区机制

[复制链接]
286|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大鹏2365|  楼主 | 2024-9-30 20:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
双缓冲区机制是通过在两个独立的 Flash 页之间交替存储数据来确保数据的完整性。每次写入时不会覆盖原始数据,直到新的数据完全写入并校验成功后,才标记新的页为有效页。即使写入过程中掉电,由于旧页的数据仍然有效,系统可以从中读取到上一次成功写入的数据。这种方法适合需要频繁更新但数据量较小的场景。

使用特权

评论回复
沙发
大鹏2365|  楼主 | 2024-9-30 20:41 | 只看该作者
优点:
提供了较高的写入安全性,即使掉电也能保留上一次成功写入的数据。
简单易实现,不需要复杂的硬件支持。

使用特权

评论回复
板凳
大鹏2365|  楼主 | 2024-9-30 20:41 | 只看该作者
缺点:
占用额外的 Flash 空间,因为需要双页来交替存储。
在更新频繁的情况下,Flash 页的擦除次数会增多,影响 Flash 寿命。

使用特权

评论回复
地板
大鹏2365|  楼主 | 2024-9-30 20:41 | 只看该作者
数据校验与回滚机制
在写入数据时,同时写入校验和(或 CRC 校验值),以确保数据的完整性。在写入完成后,通过校验和验证数据是否完整。如果校验失败,系统可以自动回滚到上一次的有效数据,确保不会使用不完整或损坏的数据。

使用特权

评论回复
5
大鹏2365|  楼主 | 2024-9-30 20:41 | 只看该作者
优点:
校验机制简单,能够有效检测写入过程中的数据损坏。
可结合双缓冲区机制,进一步提高数据的安全性。

使用特权

评论回复
6
大鹏2365|  楼主 | 2024-9-30 20:41 | 只看该作者
缺点:
如果发生掉电,虽然可以避免使用损坏的数据,但依然需要回滚到上一次有效的写入数据,可能导致数据不一致或延迟。
需要额外的存储空间存放校验和或其他校验数据。

使用特权

评论回复
7
大鹏2365|  楼主 | 2024-9-30 20:42 | 只看该作者
硬件掉电检测与延时电源
通过硬件设计,在电源掉电前给 MCU 提供预警信号,使其有时间将当前重要数据保存到 Flash 中。同时,通过在电源线上接入大容量电容,为系统提供足够的时间完成写入操作。

使用特权

评论回复
8
大鹏2365|  楼主 | 2024-9-30 20:42 | 只看该作者
实现方式:
电压检测器:可以使用 STM32 内置的 PVD(Programmable Voltage Detector)功能,检测电源电压的变化,提前触发中断,保存重要数据。
大容量电容:在系统电源上使用电容缓冲,维持短暂的电源供应,确保 MCU 有时间在掉电后完成 Flash 写入。

使用特权

评论回复
9
大鹏2365|  楼主 | 2024-9-30 20:42 | 只看该作者
优点:
在掉电的情况下仍能完成最后一次写入,数据不丢失。
硬件保护与软件结合,提高了系统的整体可靠性。

使用特权

评论回复
10
大鹏2365|  楼主 | 2024-9-30 20:42 | 只看该作者
缺点:
增加了硬件复杂度,尤其是设计电容大小时,需要精确计算写入数据的时间和电源维持时间。
如果掉电发生得太快,系统可能依然无法完成 Flash 写入。

使用特权

评论回复
11
大鹏2365|  楼主 | 2024-9-30 20:42 | 只看该作者
日志型写入(Log-based Write)与分散存储(Wear Leveling)
日志型写入是通过将数据写入 Flash 的不同区域来避免对同一块 Flash 页的频繁擦除和重写。每次写入时,都将新数据存储到新的地址,旧的数据不会被立即覆盖,确保在写入过程中发生掉电时仍有备份数据可用。

使用特权

评论回复
12
大鹏2365|  楼主 | 2024-9-30 20:42 | 只看该作者
实现步骤:
循环队列存储:在 Flash 中为数据更新创建循环队列,每次数据更新时都写入队列的下一个位置。
写入指针:通过一个指针记录最新的数据位置,指针在每次成功写入后更新,确保可以读取到最新的有效数据。
回收策略:当写入队列被写满时,通过擦除旧数据的区域进行回收,避免 Flash 的擦除次数集中在某个区域。

使用特权

评论回复
13
大鹏2365|  楼主 | 2024-9-30 20:42 | 只看该作者
优点:
延长 Flash 的使用寿命,因为避免了对同一页的频繁擦除。
提高了掉电时的数据安全性,旧数据不会立即被覆盖,直到新数据写入成功。

使用特权

评论回复
14
大鹏2365|  楼主 | 2024-9-30 20:42 | 只看该作者
缺点:
需要复杂的存储管理机制和额外的存储空间。
对于大数据量的写入或频繁更新的场景,日志型写入的实现较为复杂。

使用特权

评论回复
15
yellow555| | 2024-10-2 21:32 | 只看该作者
直到新的数据完全写入并校验成功后,才标记新的页为有效页

使用特权

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

本版积分规则

47

主题

656

帖子

0

粉丝