|
Flash模拟EEPROM,本质上就是用擦写次数有限、只能按页擦除的Flash,去模拟按字节随时改写、寿命更长的EEPROM。要解决“又快、又稳、又不怕掉电”这三个矛盾点,确实需要一些手段。 如在Flash里划出两个同样大小的页(Page A 和 Page B)。数据不是直接覆盖,而是带版本号/序列号依次写入。启动时,读取两页,比较版本号,取最新的作为当前有效数据。写入时,如果当前页写满了,就把最新的一条记录和所有有效数据搬到另一页,然后擦除当前页。下次写入就切到另一页。 这样如果在搬移过程中掉电,重启后通过版本号校验会发现旧页完整、新页不完整,自动回滚到旧页数据,数据不会丢。
|