0

私は、FAT ファイルシステムとして 8MB の RAM チャンクを使用する USB 大容量記憶装置ドライバーを作成している組み込みシステムを作成しています。

当時は、OS が RAM 領域をゼロにして FAT パーティション自体をフォーマットできるようにすることは理にかなっていましたが、Jan Axelson (USB に関する本の人気著者) のPORTS フォーラムで診断している問題に遭遇しました。この問題は、ドライブ内のブロックの消去に関連しており、USB エニュメレーションの前にメモリ領域を FAT ファイルシステムに事前フォーマットすることで回避できる場合があります。次に、ドライブが正常に動作するかどうかを確認できました。理想的には、事前にフォーマットされたパーティションには、読み取り操作をテストするためのファイルが含まれています。

どうにかして自分の OS (OSX) に 8MB の FAT ファイルシステムのモックを作成してマウントし、それにファイルを書き込んで、プロジェクトに含めるためにイメージ ファイルにエクスポートできればいいのですが。誰かがこれを行う方法を知っていますか? 私は残りを処理することができました。現時点では、それが FAT12/16/32 になるかどうかはあまり心配していません。オプションで MBR を含めるとよいでしょう。

そのオプションが存在しない場合は、事前に作成されたユーティリティを使用して、プロジェクトに含めて RAM に直接アップロードできる FAT img ファイルを作成しようとしています。このユーティリティを使用すると、たとえば 512 バイトのセクターを持つ 8MB のファイルシステムを指定でき、場合によっては FAT12 / FAT16 / FAT32 も指定できます。

誰もそのようなユーティリティを知っていますか? 見つけられませんでした。

そうでない場合、誰かがこれを C で実装するための最初のステップを推奨できますか? ライブラリが存在することを願っています。大容量記憶装置ドライバーをゼロから実装したのでかなり疲れましたが、「しわが寄って」手動で FAT パーティションを作成する必要があるかもしれないことは理解しています。それほど難しくありません。いくつかのパックされた構造体といくつかのオプションを想像します。私はそこに着きます。私はすでに FAT ファイルシステム自体にリソースを持っています。

4

2 に答える 2

1

FatFSには、組み込みデバイス内から「ドライブ」をフォーマットおよびパーティション分割する機能があることを発見しました。これにより、手動で完全にフォーマットしたり、ホスト側のツールを使用したりする必要がなくなりました。

実行した手順をさらに詳しく説明したいと思いますが、疲れ果てています。後で詳細を編集するかもしれません。

于 2015-04-01T14:39:59.413 に答える
0

いくつかありますが、通常は OS ソースに隠されています。

BSD (すなわち OS-X) では、「mkdosfs」ツールが必要です。そうでない場合、ソースはどこからでも入手できます...ここにランダムな例があります

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

また、「mtools」パッケージもあり、通常はフロッピーに使用されますが、ディスク イメージにも使用できると思います。

ただし、どちらもパーティション テーブルを作成しません。それも必要な場合は、何か他のものが必要になります。

于 2015-03-26T08:49:14.270 に答える