什么是“乒乓操作”?设用户可存储的Flash空间为8KB 把这 8KB 分成两块 4KB 的区域(A区 和 B区),轮流使用。就像打乒乓球一样,数据在 A 和 B 之间来回“切换”。 就是:用两块等大的 Flash 区域轮流存数据,一边写新数据,一边保留旧数据,提高可靠性和寿命。 具体是怎么工作的? 假设: A区:4KB B区:4KB 运行逻辑大致是: 当前数据存 A区 当需要更新数据时: 不直接覆盖 A区(因为 Flash 不能随便改) 而是把新数据写到 B区 写完后: 标记 B区为“最新有效数据” A区变成“旧数据” 下一次更新: 再写回 A区(擦除后) 两块区域继续来回切换 为什么要这么做? Flash 有几个特点: 1.不能直接覆盖写(必须先擦除) 2.擦除是按块(比如 4KB)进行 3.掉电时容易写一半导致数据损坏 “乒乓操作”的好处: 1. 防止数据损坏(掉电保护) 写新数据时,旧数据还在另一块里 → 写失败也不丢数据 2. 避免频繁擦写同一块(延长寿命) A / B 轮流用 → 平衡 Flash 擦写次数 3. 保证数据始终有一份是完整的 任何时刻至少有一块是“可用的” 为什么“有效只有 4KB”? 因为: 8KB 被分成两块 任意时刻只用其中一块存“有效数据” 另一块是备用 / 正在更新
共1条
1/1 1 跳转至页
双缓冲-兵乓操作
关键词: 双缓冲
共1条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 基于ArduinoUNO开发板的AT24C02读写测试被打赏¥16元 | |
| TCS3472S传感器及其色彩检测被打赏¥19元 | |
| 【S32DS】S32K3 RTD7.0.1 HSE 组件配置报错问题解决被打赏¥27元 | |
| 【S32K3XX】MCME 启动 CORE1被打赏¥23元 | |
| AG32VH407下温度大气压传感器及其检测被打赏¥20元 | |
| AG32VH407下光照强度传感器BH1750及其检测被打赏¥22元 | |
| AT32VH407下使用温湿度传感器DHT22进行检测被打赏¥20元 | |
| DIY一个婴儿澡盆温度计被打赏¥34元 | |
| 【FreeRtos】FreeRtos+MPU region 配置规则被打赏¥23元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动墨水屏(ArduinoIDE)被打赏¥28元 | |
我要赚赏金
