创建任意FAT文件系统,文件或直接在程序存储器中

时间:2015-03-26 08:24:26

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

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

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

如果我能以某种方式在我的操作系统(OSX)上创建和安装模拟8MB FAT文件系统,向其写入文件,并将其导出到图像文件以包含在我的项目中,那将是很好的。有人知道怎么做吗?我可以处理其余的事情。我不太关心目前是否会有FAT12 / 16/32,可选的MBR包含会很好..

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

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

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

2 个答案:

答案 0 :(得分:1)

我最终发现FatFS具有设置格式和分区"驱动器"从嵌入式设备中解脱出来,我不必手动绝对格式化它或使用主机端工具。

我想更详细地介绍所采取的步骤,但我很累。我稍后可能会进一步编辑。

答案 1 :(得分:0)

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

在BSD(即OS-X)上你应该有一个" mkdosfs"工具,如果不是源将在所有地方可用...这是一个随机的例子

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

还有' mtools'包,它通常用于软盘,但我认为它也会产生磁盘映像。

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