在闪存中擦除比扇区大小(最小可擦除大小)更少的字节的最佳逻辑

Dur*_*esh 0 c embedded flash-memory

我正在使用Spansion的16MB闪存.扇区大小为256KB.我正在使用闪存来读/写/删除30个字节的块(结构).我在IC的数据表中发现最小可擦除大小为256KB.删除特定块的一种方法是

  1. 将包含要删除的块的扇区读入临时数组.
  2. 删除该部门.
  3. 删除临时数组中的所需块
  4. 将临时数组写回Flash.

我想问一下,有没有更好的替代逻辑.

D K*_*ger 7

没有办法擦除闪存中的最小可擦除扇区大小.

但是,有一种典型的方法可以处理大型闪存扇区上的小型结构.只需添加标题即可指示该结构位置中的数据状态.

简单的例子:

  • 0xffff 结构被删除并可供使用.
  • 0xa5a5 结构包含有效的数据.
  • 0x0000 结构包含无效的数据.

标题将0xffff在删除后.将新数据写入结构时,将标题设置为0xa5a5.当不再需要该数据时,将标题设置为0x0000.

数据实际上不会被删除,但可以检测为无效.这允许您等到扇区已满,然后清理无效记录并压缩有效记录.