创建一个任意的 FAT 文件系统,到文件或直接在程序内存中
Create an arbitrary FAT filesystem, to file or directly in program memory
我正在编写一个嵌入式系统,我正在创建一个 USB 大容量存储设备驱动程序,该驱动程序使用 8MB RAM 块作为 FAT 文件系统。
虽然当时允许 OS 将我清零的 RAM 区域取出并格式化 FAT 分区本身是有意义的,但我 运行 遇到了我在 1 月诊断的问题Axelson 的(USB 书籍的热门作者)PORTS forum。该问题与擦除驱动器中的块有关,可以通过在 USB 枚举之前将内存区域预格式化为 FAT 文件系统来规避。然后,我可以查看驱动器是否会正常运行。理想情况下,预先格式化的分区会包含一个文件来测试读取操作。
如果我能以某种方式在我的 OS (OSX) 上创建并安装一个模拟的 8MB FAT 文件系统,将文件写入其中,然后将其导出到图像文件,那就太好了包含在我的项目中。有人知道怎么做吗?我可以处理剩下的事情。我不太担心目前是否会 FAT12/16/32,可选的 MBR 包含会很好..
如果该选项不存在,我希望使用预先编写的实用程序来创建 FAT img 文件,我可以将其包含到我的项目中并直接上传到 RAM。这个实用程序允许我指定一个 8MB 的文件系统和 512 字节的扇区,例如,可能还有 FAT12/FAT16/FAT32。
有人知道这样的实用程序吗?我找不到一个。
如果没有,有人可以推荐在 C 中实现这个的第一步吗?我希望图书馆存在。从头开始实施大容量存储驱动程序后,我感到非常疲惫,但我知道我可能必须 'get crinkled' 并手动创建 FAT 分区。这不是太难。我想象一些打包的结构和一些选项。我会到那里。我已经有了 FAT 文件系统本身的资源。
有几个,它们通常隐藏在 OS 来源中。
在 BSD 上(即 OS-X),你应该有一个 "mkdosfs" 工具,如果没有,源代码将随处可用...这是一个随机示例
http://www.blancco.com/downloads/source/utils/mkdosfs/mkdosfs.c
还有 'mtools' 软件包,它通常用于软盘,但我认为它也用于磁盘映像。
虽然这些都不会创建分区表;如果还需要,您还需要其他东西。
我最终发现 FatFS 具有从嵌入式设备中格式化和分区 "drive" 的功能,这让我不必手动完全格式化它或使用主机端工具。
我想更详细地介绍所采取的步骤,但我已经筋疲力尽了。我可能会在稍后编辑更多细节。
我正在编写一个嵌入式系统,我正在创建一个 USB 大容量存储设备驱动程序,该驱动程序使用 8MB RAM 块作为 FAT 文件系统。
虽然当时允许 OS 将我清零的 RAM 区域取出并格式化 FAT 分区本身是有意义的,但我 运行 遇到了我在 1 月诊断的问题Axelson 的(USB 书籍的热门作者)PORTS forum。该问题与擦除驱动器中的块有关,可以通过在 USB 枚举之前将内存区域预格式化为 FAT 文件系统来规避。然后,我可以查看驱动器是否会正常运行。理想情况下,预先格式化的分区会包含一个文件来测试读取操作。
如果我能以某种方式在我的 OS (OSX) 上创建并安装一个模拟的 8MB FAT 文件系统,将文件写入其中,然后将其导出到图像文件,那就太好了包含在我的项目中。有人知道怎么做吗?我可以处理剩下的事情。我不太担心目前是否会 FAT12/16/32,可选的 MBR 包含会很好..
如果该选项不存在,我希望使用预先编写的实用程序来创建 FAT img 文件,我可以将其包含到我的项目中并直接上传到 RAM。这个实用程序允许我指定一个 8MB 的文件系统和 512 字节的扇区,例如,可能还有 FAT12/FAT16/FAT32。
有人知道这样的实用程序吗?我找不到一个。
如果没有,有人可以推荐在 C 中实现这个的第一步吗?我希望图书馆存在。从头开始实施大容量存储驱动程序后,我感到非常疲惫,但我知道我可能必须 'get crinkled' 并手动创建 FAT 分区。这不是太难。我想象一些打包的结构和一些选项。我会到那里。我已经有了 FAT 文件系统本身的资源。
有几个,它们通常隐藏在 OS 来源中。
在 BSD 上(即 OS-X),你应该有一个 "mkdosfs" 工具,如果没有,源代码将随处可用...这是一个随机示例
http://www.blancco.com/downloads/source/utils/mkdosfs/mkdosfs.c
还有 'mtools' 软件包,它通常用于软盘,但我认为它也用于磁盘映像。
虽然这些都不会创建分区表;如果还需要,您还需要其他东西。
我最终发现 FatFS 具有从嵌入式设备中格式化和分区 "drive" 的功能,这让我不必手动完全格式化它或使用主机端工具。
我想更详细地介绍所采取的步骤,但我已经筋疲力尽了。我可能会在稍后编辑更多细节。