首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NAND RAW访问

NAND RAW访问
EN

Stack Overflow用户
提问于 2011-03-08 22:46:27
回答 3查看 2.7K关注 0票数 1

我在运行Linux的嵌入式系统中使用C++应用程序。此设备接收消息(几个字节的小块),并需要在断电情况下存储在非易失性存储器中。这在另一个平台上工作得很好,因为有一个静态RAM可用。

在这个平台上的问题是,我们只有一个NAND闪存来做这件事,我们希望在同一块中附加不同的消息,而不必在用新消息更新它之前擦除整个块!为每个消息编写一个文件不是一个好的解决方案,因为可能会有很多这样的消息!此外,这必须是有效的,并且应该通过避免太多的擦除来为闪存节省生命!我希望能够做的是一个字节接一个字节地写入闪存,而不用担心坏块。

我找到了"Petit FAT File System“,我想知道这是否适合我的需要...?

有没有人能告诉我“小胖子文件系统”能不能做到这一点,或者给我一些如何处理这个问题的建议?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-09 18:23:53

我没有研究过Petit文件系统,但您的真正限制是NAND闪存。在需要擦除之前,制造数据表可能会指出您可以对每个块成功进行多少次写入。有可能没有硬限制,但在达到最大写入计数后,将无法保证数据的完整性。

答案取决于工艺技术和闪存单元设计。例如,它是SLC还是MLC NAND?SLC将能够更好地处理多个块写入。

另一个问题是您系统上的闪存控制器是什么类型?如果它使用硬件ECC,那么您可能会受到控制器的限制,因为第二次写入将使第一次数据写入的ECC值无效。如果可以在软件中进行ECC计算,那么它又回到了NAND限制。

通过可能提供的特殊预留存储区,可以在数据表中解决小写支持。因此,再一次检查一下数据表。

如果你发布了一个链接,或者指出你使用的是什么硬件,我可以试着给你一个更明确的答案。

票数 2
EN

Stack Overflow用户

发布于 2011-03-09 23:16:32

如果你正在处理flash,在写之前没有办法删除它。所有的闪存都是这样工作的。这取决于您的实时需求和数据大小,这可能是问题,也可能不是问题。但是,由于您使用的是嵌入式Linux,因此应用程序可能并不关心实时性。

我不明白为什么你需要一个完整的文件系统来存储几个字节?!为什么你首先需要一个外部存储器,你不能写入MCU的内部闪存吗?如果您只需要存储几个字节,带有片内eeprom/数据闪存的MCU可能最适合您的需求。

此外,闪光灯电路看起来并不太有前途。首先,我发现他们没有输入周期数,也没有输入数据保留,而是参考了“优格化报告”,这很奇怪。这可能表示内存质量不佳。数据表上写的是2009年和三星。如果我可以愤世嫉俗,那可能意味着芯片已经过时了。三星的长寿口碑并不是最好的。

票数 1
EN

Stack Overflow用户

发布于 2011-03-10 14:20:54

我很好奇你为什么要用原始闪存。为什么不在MTD驱动器上使用JFFS2或UBIFS之类的东西呢?让MTD驱动程序管理ECC,而JFFS2或UBIFS管理损耗均衡。然后只要打开一个文件,并在需要的时候写入它。

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

https://stackoverflow.com/questions/5234016

复制
相关文章

相似问题

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