我正在一个基于ARM Cortex M4的远程评估工具包上收集数据,并希望将这些数据记录到持久内存中,以便以后访问。
我每小时要记录大约300个字节,并希望在运行大约1周后,用PC来收集所有数据。
我知道我应该尽量减少写到闪存的次数,但是我对最好的方法没有很好的理解。我正在寻找一种资源来解释这种情况下的内存管理技术。
我使用的是ADUCM350,看起来它有3个独立的闪存部分(128‘m、256’m和一个16‘m的eeprom)。
发布于 2022-04-13 20:33:13
对于测井应用,最简单、最有效的磨平策略是将整个闪存阵列作为一个巨大的环缓冲。
将条目大小定义为最小可擦除闪存单元的整数分数。假设扇区为4K(4096字节);让条目大小为256。这将使所有日志条目对齐扇区,并允许您擦除任何扇区,而无需将日志条目减半。
启动时,遍历内存并找到第一个空条目。这是“write_pointer”
当写入日志条目时,只需将其写入write_pointer并增量write_pointer。如果write_pointer位于扇区边界上,则删除write_pointer上的扇区,以便为下一次写入腾出空间。从本质上说,这保证了在引导时至少有一个空日志条目可供您查找,并允许您还原write_pointer。
如果您将128 128KBytes用于日志条目,并且持续时间为20000次,则写入/擦除周期。这将给您在失败之前总共写了10240000条条目。或1168年的连续伐木..。
https://stackoverflow.com/questions/43020407
复制相似问题