我正在考虑将 FAT 文件系统用于嵌入式数据记录应用程序。记录器只会创建一个文件,并每分钟不断地向其中附加 40 字节的数据。使用几年后,写入周期将超过一百万次。我的问题是:FAT 系统是否会在每次附加文件时更改文件分配表?它如何跟踪文件末尾的位置?它只是在末尾放置一个 EndOfFile 标记还是将长度存储在 FAT 表中?如果我每次写入时它都会更改 FAT 表,那么我会在短短几年内将闪存损坏。 FAT 系统是否适合此应用程序?
我的另一个想法是,我可以将原始数据字节存储在存储卡中,并在每次写入时在数据末尾放置一个 EndOfFile 标记。但这不太理想,因为这意味着从记录器中获取数据的唯一方法是通过串行传输,而不是通过 PC 和读卡器。
最佳答案
当您修改文件时,FAT 会更新目录表(至少,如果您关闭文件,它会更新,我不确定如果不关闭会发生什么)。它不仅仅是文件大小,还有最后修改日期:
http://en.wikipedia.org/wiki/File_Allocation_Table#Directory_table
如果您的闪存 Controller 没有进行透明的磨损均衡,并且您的闪存驱动程序没有重新定位事物以平衡磨损,那么我猜您可能会导致磨损。请参阅您的手册,但如果您使用的是消费类硬件,我会认为所有东西都有磨损均衡。
从好的方面来说,如果您担心的事件每分钟都会发生,那么您应该能够在测试中大大加快速度,看看 2 年的日志条目是否真的会破坏您的实际硬件。甚至可能比尝试查找相关制造商文档更快......
关于c - FAT 文件系统和大量写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3618278/