【问题标题】:Create an arbitrary FAT filesystem, to file or directly in program memory创建任意 FAT 文件系统,以归档或直接在程序内存中
【发布时间】:2015-05-30 04:44:18
【问题描述】:

我正在编写一个嵌入式系统,我正在创建一个 USB 大容量存储设备驱动程序,该驱动程序使用 8MB 的 RAM 块作为 FAT 文件系统。

虽然当时允许操作系统取出我的归零 RAM 区域并格式化 FAT 分区本身是有意义的,但我遇到了我在 Jan Axelson(USB 书籍的流行作者)上诊断的问题@ 987654321@。该问题与擦除驱动器中的块有关,并且可以通过在 USB 枚举之前将内存区域预格式化为 FAT 文件系统来规避。然后,我可以查看驱动器是否可以正常运行。理想情况下,预格式化的分区上会包含一个文件来测试读取操作。

如果我能以某种方式在我的操作系统 (OSX) 上创建和挂载一个模拟 8MB FAT 文件系统,向其中写入一个文件,然后将其导出到一个图像文件以包含在我的项目中,那就太好了。有人知道该怎么做吗?我可以处理剩下的。目前我不太担心那是否是 FAT12/16/32,可选的 MBR 包含会很好..

如果该选项不存在,我希望使用预先编写的实用程序来创建一个 FAT img 文件,我可以将其包含到我的项目中并直接上传到 RAM。例如,此实用程序将允许我指定具有 512 字节扇区的 8MB 文件系统,可能还有 FAT12 / FAT16 / FAT32。

有人知道这样的实用程序吗?我找不到一个。

如果没有,有人可以推荐在 C 中实现这一点的第一步吗?我希望图书馆存在。从头开始实施大容量存储驱动程序后,我已经筋疲力尽了,但我知道我可能不得不“弄皱”并手动创建 FAT 分区。这不是太难。我想象一些打包的结构和一些选项。我会到达那里。我已经拥有 FAT 文件系统本身的资源。

【问题讨论】:

    标签: c macos usb fat usb-mass-storage


    【解决方案1】:

    我最终发现FatFS 具有从嵌入式设备中格式化和分区“驱动器”的功能,它让我不必完全手动格式化或使用主机端工具。

    我想更详细地介绍所采取的步骤,但我已经筋疲力尽了。稍后我可能会编辑更多详细信息。

    【讨论】:

      【解决方案2】:

      有几个,它们通常隐藏在操作系统源代码中。

      在 BSD(即 OS-X)上,您应该有一个“mkdosfs”工具,如果没有,源代码将随处可用……这是一个随机示例

      http://www.blancco.com/downloads/source/utils/mkdosfs/mkdosfs.c

      还有“mtools”包,它通常用于软盘,但我认为它也可以用于磁盘映像。

      不过,这些都不会创建分区表;如果你也需要的话,你还需要别的东西。

      【讨论】:

      • 我不确定是否需要它。虽然我只计划有一个分区,这暗示不需要分区表,但 Jan Axelson 的书确实指出拥有​​ MBR 可能增加对设备的支持.. 你的想法?
      • 目前关注mformat
      猜你喜欢
      • 1970-01-01
      • 2013-04-29
      • 2011-11-27
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      相关资源
      最近更新 更多