是否值得为EEPROM实现小型文件系统

时间:2014-07-14 19:47:33

标签: c filesystems arduino low-level eeprom

我买了一个I2C EEPROM。我想存储传感器和电压数据。我假设该值可能大于一个字节,并且可能存在大量数据。实现具有小文件分配表的文件系统是否值得这样?例如,它会让我更容易看到EEPROM。

3 个答案:

答案 0 :(得分:3)

我在EEPROM上看到FAT的两个原因

  1. 如果要求具有不同文件的灵活性。如 用于数据记录或配置。它允许多个这样的配置/日志文件独立,并在将来轻松添加。这可以成为未来项目的一个非常成功的构建块。
  2. 为方便其他设备或库访问。通常只有一个选项,如果存储设备可以被其他接口直接访问。在这种情况下,它是一个EEPROM。如果您的设备直接支持USB,例如ATmega32u4(leo),那么您可以使用LUFA工具将USB显示为MASS存储。使FAT成为理想的解决方案。或者可能是设备具有以太网屏蔽。
  3. 所有人都说了,如果这个案例只是一个数据记录器,那么KISS(保持简单解决方案)可能是一个很好的方法。因此,人们可以专注于原始主题以收集数据本身。


    值得注意的是,SdCards可以很容易地添加到廉价的Sd库(IDE库存)或SdFat库(GitHub更多功能)中,增加了几乎无限的FAT32日志记录容量。唯一的权衡是他们消耗了相当多的代码空间。

答案 1 :(得分:3)

我认为mpflaga正走在正确的道路上。

您应该考虑的一些选项包括:

  1. 正在写入数据的设备/微控制器是否与正在读取数据的设备/微控制器相同?
  2. 您希望将多少条记录放入存储设备?
  3. 您希望您的存储格式对重启/断电等事件有多强大/可恢复性?
  4. 我对这些观点的看法是:

    1. 它将是相同的设备读写,因此您可能可以使用非常特定/自定义的格式而不是完整的文件系统。

    2. 您可能希望提取尽可能多的字节用作存储空间,因此为您的应用程序设计的格式可能会有所帮助。

    3. 这很棘手。您可以使用自我描述结构,例如TLV,它会紧紧包装您的字节但更难搜索;或者您可以使用固定长度的结构,这会浪费大量字节但允许轻松访问。此外,您可以假设存储将始终保持有效,但如果通过写入中途移除电源会发生什么情况!

    4. 总的来说,我的建议是:

      1. 使用现有库
      2. 首先使用特定于应用程序的格式,但要确保从数据本身中抽象出数据的存储。
      3. 如果您发现需要文件系统,请重写存储层以使用文件系统。

答案 2 :(得分:1)

拥有一个小的标准文件系统,如 FAT16 ,值得实施,因为您可以通过USB或网络将此文件系统映射到其他设备/计算机。

您的设计标准化是一项重要的合规优势。

你可以找到现成的资源/库,或者,如果它是FAT16,并且因为它非常简单并且有很好的描述/记录,请尝试自己实现。