リソースに制約のあるマイクロコントローラーでFAT16ファイルシステム構造を使用する低レベルのアプリケーションに取り組んでいるため、独自のカスタムアクセスコードを作成する必要があります。私はすでにPetitFATやFatFSのようなライブラリの使用を検討しましたが、残念ながら、これらのどちらも私のニーズに合うとは思いません。ただし、これらはFATがどのように機能するかについての有用なリファレンスとして役立ちました。
私がまだ問題を抱えている領域の1つは、サブディレクトリエントリです。
これによると、ディレクトリエントリは1つの開始クラスタを指すことができます。データファイルの場合、これは単に最初のデータクラスターです。ディレクトリの場合、これはサブディレクトリ(おそらく別のディレクトリエントリ)の開始クラスタです。
これは、ルートディレクトリからベースファイルまでのディレクトリパスが1つしかない場合は問題なく機能しますが、特定のディレクトリの下にある複数のファイル/ディレクトリに分岐する方法がわかりません。
元。ディレクトリ構造:
- root dir 1
- sub dir 1
- file 1
- sub dir 2
- file 2
- root dir 2
- sub dir 3
FAT16の構造についての私の理解に基づいて、
FATの直後には、の情報を含む最初のルートディレクトリエントリのクラスタがありますroot dir 1
。最初のクラスターフィールドには、のクラスターアドレスが含まれます。sub dir 1
最初のクラスターフィールドには、のクラスターアドレスが含まれ、file 1
最初のクラスターはデータクラスターを指します。
2番目のルートディレクトリエントリは、2番目のクラスタで開始され、その後、の情報を含むFATが終了しroot dir 2
ます。その最初のクラスターはのクラスターを指し、sub dir 3
最初のクラスターは空のクラスターを指します(FATでマークされているように)。
ここで何が欠けていますか?ルートディレクトリエントリからに移動する方法がわかりませんsub dir 2
。