使用 Arduino EEPROM 库时,使用 ESP8266 上的布尔值优化闪存单地址寿命

问题描述

当使用带有 Arduino EEPROM libraryESP8266 集成(闪存)存储器存储单个布尔值时,我正在尝试实现更长的存储器写入寿命。单个硬件内存位置不能无限更改,我正在尝试找到一种有效的解决方案,以延长多个不同(类似)平台上的内存使用写入周期的寿命。

一些消息来源确定单个 EEPROM 存储器(位)位置的实际写入周期量约为 100k - 1M 写入(当然,这取决于所使用的硬件而有很大差异)。 One test I found measured 9584038 passed write cycles with Arduino 但如果可能的话,我仍然想延长内存写入周期。

据我所知,无法使用 EEPROM 库访问单个位,并且您只能存储和读取 8 位字节值。

使用 Arduino EEPROM 库存储布尔值的最简单解决方案可以将 FALSE 存储为 0 值,将 TRUE 存储为 1(例如).

问题是:这种(“位移”)方法(下图)与仅将 01 值写入相比有什么不同吗?单个 Arduino EEPROM(8 位)内存地址。这种方法背后的想法只是在更改用作布尔值的实际 Arduino EEPROM 存储器(8 位)地址值时更改单个位(位的反向奇偶校验 00000000 = false,{ {1}} = 00000001true = 00000011false = 00000111 等)。或者我应该删除 Arduino EEPROM 库并以其他方式执行此操作?在使用 Arduino EEPROM 库时,我试图弄清楚引擎盖下发生了什么,但无法理解它在微芯片内部的实际工作原理。

description image attached

“Red Block”代表更改的位 - “DECVAL”是实际存储的 Arduino EEPROM 无符号字符值。所以实际存储的(无符号)字符值循环将是 true,0,1,3 ... 7,224,1921280 ...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)