1

FAT16ファイルシステムを備えたフラッシュベースの USB 大容量記憶装置を開発しています。正常に動作していますが、FAT セグメントで何が起こっているのか理解できません。

開始すると、ルート ディレクトリに 56 バイトの長さの 1 つのファイルがあり、長さは 32 ビットで、データは 2 番目のクラスターに格納されます (0 と 1 は FAT では使用できません)。

FAT セグメントのメモリ ダンプを見ると、次のように表示されます。

f8 ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00... zeros until the end

私が理解しているように、最後の 0xFFFF は、このクラスターがこのファイルのチェーン内の最後のクラスターであることを意味します。

ここまでは順調ですね。

しかし...実際のファイルのサイズを 4,032 バイトに拡張すると、FAT セグメントは次のようになります。

f8 ff ff 00 f0 ff 05 60 00 07 f0 ff 00 00 00 00 00... zeros until the end

ここで何が起こっているのか誰でも説明できますか?

説明できないことがいくつかあります。

1. 4 つのシステム予約バイトが変更されるのはなぜですか?

2. 0xFFFF が表示されません。これは、クラスター チェーンに終わりがないことを意味しますか?

ブロックサイズは512バイトで、ファイルシステムはクラスターごとに2セグメントでフォーマットされています。

4

1 に答える 1

1

私が使用していたFAT16ではなく、FAT12であると考えます。

FAT12-16 は、ブート セクターに書き込まれる文字列ではなく、クラスターの数によって区別されます。

于 2013-06-10T09:05:54.213 に答える