0

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

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

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

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

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

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

4

2 回答 2

1

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

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

于 2015-04-01T14:39:59.413 回答
0

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

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

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

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

但是,这些都不会创建分区表;如果也需要,您还需要其他东西。

于 2015-03-26T08:49:14.270 回答