我需要每分钟(或每小时)将一些一位标志数据记录到闪存中。
为此,我在闪存中保留了一个 4 KB 页面(无文件系统)。然后写入一点每分钟按顺序刷新到该页面。开始时,整个闪存是空的/被擦除的。
由于闪存只能以页面粒度进行读取/写入。我不确定当有新位出现时闪存控制器是否会这样做:
- 阅读老的将现有数据保存到控制器缓存中的页面。
- 将新的位写入缓存页面。
- 挑选一个新的擦除页面并将缓存页面写入那里。(以避免擦除旧页面)
如果是这样,我认为所有可用的页面很快就会被用完。从那时起对于新的位,擦除操作是不可避免的,这会影响性能。
我这样说对吗? 有没有更好的方法来实现这种写入模式?
添加 1 - 2020 年 10 月 25 日上午 7:31
我在用W25Q32Winbond 的闪存芯片4K 页,每页容纳 256 字节。我只能写在页粒度。
我猜控制器集成在W25Q32芯片中,应该能够自动采取上述3步方法少量写入。也许控制器中有一些 RAM 缓存。否则我必须自己完成这 3 个步骤。