我买了一个 I2C EEPROM。我想存储传感器和电压数据。我假设值可以大于一个字节,并且可以有很多数据。用小文件分配表实现文件系统是否值得?例如,它会让我更容易窥视 EEPROM。
3 回答
我发现 EEPROM 上的 FAT 有两个原因
- 如果需要具有不同文件的灵活性。例如用于数据记录或配置。它允许多个这样的配置/日志文件,它们是独立的,并且将来很容易添加。这可能是未来项目的一个非常成功的构建块。
- 为了便于其他设备或库访问。如果存储设备可由其他接口直接访问,通常只有一个选项。在这种情况下,它是一个 EEPROM。如果您的设备直接支持 USB,例如 ATmega32u4 (leo),那么您可以使用 LUFA 工具将 USB 显示为 MASS 存储。使 FAT 成为理想的解决方案。或者,如果设备具有以太网屏蔽,则可能。
综上所述,如果这种情况只是一个数据记录器,那么 KISS(保持简单解决方案)可能是一个不错的选择。这样人们就可以专注于收集数据本身的原始主题。
值得注意的是,可以很容易地以便宜的方式添加 SdCard,无论是成熟的 Sd 库(IDE 库存)还是 SdFat 库(GitHub 更多功能),都可以添加几乎无限的 FAT32 日志记录容量。唯一的权衡是它们消耗了相当大的代码空间。
我认为 mpflaga 走在正确的道路上。
您应该考虑的一些选项包括:
- 写入数据的设备/微控制器是否与读取数据的设备/微控制器相同?
- 您希望将多少条记录放入您的存储设备中?
- 您希望您的存储格式对于重启/断电/等事件有多强大/可恢复?
我对这些观点的看法是:
它将是相同的设备读取和写入,因此您可能可以使用非常特定/自定义的格式而不是完整的文件系统。
您可能希望提取尽可能多的字节以用作存储,因此为您的应用程序精心设计的格式可能会有所帮助。
这很棘手。您可以使用自描述结构,例如TLV,它会紧紧地打包您的字节,但更难搜索;或者您可以使用固定长度的结构,这会浪费大量字节,但可以轻松访问。此外,您可以假设存储将始终保持有效,但是如果在写入中途断电会发生什么情况!
总的来说,我的建议是:
- 使用现有库
- 首先使用特定于应用程序的格式,但要确保从数据本身中抽象出数据的存储。
- 如果您发现需要文件系统,请重写存储层以使用文件系统。
拥有像FAT16这样的小型标准文件系统是值得实施的,因为您可以通过 USB 或网络将此文件系统映射到其他设备/计算机。
设计中的标准化是一个很大的合规优势。
您可以找到现成的源/库,或者,如果它是 FAT16,并且因为它非常简单且描述/记录良好,请尝试自己实现。