首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >闪存管理

闪存管理
EN

Stack Overflow用户
提问于 2017-03-25 18:40:08
回答 1查看 211关注 0票数 1

我正在一个基于ARM Cortex M4的远程评估工具包上收集数据,并希望将这些数据记录到持久内存中,以便以后访问。

我每小时要记录大约300个字节,并希望在运行大约1周后,用PC来收集所有数据。

我知道我应该尽量减少写到闪存的次数,但是我对最好的方法没有很好的理解。我正在寻找一种资源来解释这种情况下的内存管理技术。

我使用的是ADUCM350,看起来它有3个独立的闪存部分(128‘m、256’m和一个16‘m的eeprom)。

EN

回答 1

Stack Overflow用户

发布于 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年的连续伐木..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43020407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档