这将是整个专栏技术含量最高的“收官之作”。我们不仅要保存数据,还要用一种优雅、专业的方式来保护 Flash 寿命。
我们的系统现在很完美,唯一的缺点是“失忆”。 如果你设置了报警阈值为 45度,拔电重启后它又变回了 30度。这在工业现场是不可接受的。
这一章,我们要实现一个高可靠、长寿命的参数存储系统。
1. 核心设计:把 Flash 当笔记本用
Flash 的物理特性决定了它有两个弱点:
-
必须先擦后写:要想修改数据,必须先把一整页(Page)擦除为 0xFF。
-
寿命有限:通常只有 1~10 万次擦写寿命。
如果采用“原地覆盖”策略(每次保存都擦除),每分钟保存一次,两个月后 Flash 就可能坏道。
解决方案:日志追加模式 (Log-structured Append)
我们把 Flash 的一页看作一个**“笔记本”**:
-
第 1 次保存:写在第 1 行。
-
第 2 次保存:写在第 2 行(保留第 1 行不动,不擦除)。
-
...
-
写满一页后:才撕掉这一页(擦除),回到第 1 行重新开始。
假设 STM32G0 一页是 2048 字节,我们的配置是 32 字节。 原本寿命
订阅专栏 解锁全文
4327

被折叠的 条评论
为什么被折叠?



