Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为EEPROM实现小型文件系统值得吗_C_Filesystems_Arduino_Low Level_Eeprom - Fatal编程技术网

C 为EEPROM实现小型文件系统值得吗

C 为EEPROM实现小型文件系统值得吗,c,filesystems,arduino,low-level,eeprom,C,Filesystems,Arduino,Low Level,Eeprom,我买了一个I2C EEPROM。我想存储传感器和电压数据。我假设这个值可以大于一个字节,并且可以有很多数据。在这种情况下实现一个具有小文件分配表的文件系统值得吗?例如,它会使我更容易窥视电可擦可编程只读存储器。我发现电可编程只读存储器上的FAT有两个原因 如果需要具有不同文件的灵活性。比如 用于数据记录或配置。它允许多个这样的配置/日志文件,这些文件是独立的,并且在将来很容易添加。这可能是未来项目的一个非常成功的构建块 便于其他设备或库访问。通常,只有当存储设备可由其他接口直接访问时,才是一个选

我买了一个I2C EEPROM。我想存储传感器和电压数据。我假设这个值可以大于一个字节,并且可以有很多数据。在这种情况下实现一个具有小文件分配表的文件系统值得吗?例如,它会使我更容易窥视电可擦可编程只读存储器。

我发现电可编程只读存储器上的FAT有两个原因

  • 如果需要具有不同文件的灵活性。比如 用于数据记录或配置。它允许多个这样的配置/日志文件,这些文件是独立的,并且在将来很容易添加。这可能是未来项目的一个非常成功的构建块
  • 便于其他设备或库访问。通常,只有当存储设备可由其他接口直接访问时,才是一个选项。在这种情况下,它是一个EEPROM。如果您的设备直接支持USB,例如ATmega32u4(leo),那么您可以使用LUFA工具将USB显示为大容量存储。使脂肪成为理想的解决方案。或者,如果设备有以太网屏蔽
  • 尽管如此,如果这个案例只是一个数据记录器,那么KISS(保持简单的解决方案)可能是一个好办法。这样人们就可以专注于收集数据本身的原始主题



    值得注意的是,Sd卡可以很容易地以便宜的价格添加到成熟的Sd库(IDE库)或SdFat库(GitHub更多功能)中,从而添加几乎无限的FAT32日志记录容量。唯一的折衷是它们消耗了相当大的代码空间。

    我认为mpflaga走的是正确的道路

    <> P>你应该考虑的一些选项包括:

  • 写入数据的设备/微控制器是否与读取数据的设备/微控制器相同
  • 您希望在存储设备中放入多少条记录
  • 您希望您的存储格式对重新启动/断电等事件的鲁棒性/可恢复性如何
  • 我对这几点的看法是:

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

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

  • 这很棘手。您可以使用自描述结构,例如a,它会将您的字节压缩得很紧,但搜索起来会更困难;或者您可以使用固定长度的结构,这会浪费大量字节,但允许轻松访问。此外,您可以假设存储将始终保持有效,但如果在写入过程中中途断电会发生什么呢

  • 总的来说,我的建议是:

  • 使用现有库
  • 首先使用特定于应用程序的格式,但要确保从数据本身提取数据存储
  • 如果发现需要文件系统,请重写存储层以使用文件系统

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

    设计中的标准化是法规遵从性的一大优势


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

    EEPROM有多大?这是Atmel 24C16 I2C EEPROM(16K)。EEPROM通常不是很大,因此从一开始就以特定偏移量存储数据可能会更容易。如果你有一个“主结构”来告诉结构存储在哪里,那么出于所有实际原因,你就有了你的“文件系统”。这取决于你要存储多少文件。一个FAT8可能会很好的工作。@JoachimPileborg好主意,我会努力做到的。感谢您的评论。:)