FatFs

車載外部ストレージ

【FatFs】車載外部ストレージ その104【ファイル上シミュレーション⑪】

FATは基本「8.3形式」というファイル命名規則になっている。 ファイル名8文字、拡張子3文字。 VFAT仕様によりその制限を突破している。 VFAT未対応FileSystemからは「long_file_name.txt」が「long_f~1.txt」のような形で見える用にして互換性を確保している。
車載外部ストレージ

【FatFs】車載外部ストレージ その103【ファイル上シミュレーション⑩】

FAT領域の位置確認。 FAT領域参照。 FAT32の場合、32bit長データを1要素としてクラスタチェーンを表現している。 FAT16の場合は16bit長データを1要素としている。 基本的には該当クラスタがどのクラスタ番号に繋がるかの数値が埋まっている。 0x0fffffffがチェーン終端となる。
車載外部ストレージ

【FatFs】車載外部ストレージ その102【ファイル上シミュレーション⑨】

test.txtの内容のクラスタ位置を確認。 ファイルの中身を確認。 指定した7000[byte]のデータが並んでいたのを確認。 しかし、7000[byte]が並んでいるのたまたま。クラスタの空き方によっては並ぶ保証は無い。 FAT領域のクラスタチェーンでクラスタの関係性を表現している。
車載外部ストレージ

【FatFs】車載外部ストレージ その101【ファイル上シミュレーション⑧】

ルートディレクトリエントリを確認。 ディレクトリエントリが並んでおり、作成したtest.txt、test2.txtが存在。 ファイルの中身の情報はDIR_FstClusHIとDIR_FstClusLOで指定されたクラスタから特定。 BPB_RootClusでルートディレクトリエントリのクラスタ番号から特定する。
車載外部ストレージ

【FatFs】車載外部ストレージ その100【ファイル上シミュレーション⑦】

ルートディレクトリエントリを直接特定できるパラメータはない。 以下パラメータが必要。 PT_System、BPB_RsvdSecCnt、BPB_FATSz32、BPB_NumFATs。 MBR、BPB、予約領域、FAT領域を積み上げていくとルートディレクトリエントリの位置が分かる。
車載外部ストレージ

【FatFs】車載外部ストレージ その99【ファイル上シミュレーション⑥】

BPB(BIOS Parameter Block)のFAT32におけるオフセット36以降のフィールドの説明。 FAT12/16とFAT32で構成が違うが、ここではFAT32で説明。 重要パラメータはBPB_FATSz32、BPB_RootClus。 上記が分かるとルートディレクトリエントリの位置が分かる。
車載外部ストレージ

【FatFs】車載外部ストレージ その98【ファイル上シミュレーション⑤】

BPB(BIOS Parameter Block)について簡単に説明。 重要なパラメータだけ抽出。 FatFsでの具体的な数値を抽出。 セクタ、クラスタ、予約領域、FAT領域の数が分かる。 FAT領域は破損を想定してい冗長性を持たせ多重化されている場合がある。 SDカードの場合は1個なことが多い。
車載外部ストレージ

【FatFs】車載外部ストレージ その97【ファイル上シミュレーション④】

FatFs Win32 ファイル上シミュレーションのディスクイメージを確認。 PhysicalDrive1で生成されている。 MBR(Master Boot Record)を確認 FAT32であることを確認。 BPB(BIOS Parameter Block)が63セクタ目にあることを確認。
車載外部ストレージ

【FatFs】車載外部ストレージ その96【ファイル上シミュレーション③】

FatFs Win32 ファイル上シミュレーション起動。 マウント、フォーマットをして、ファイルを2つ作成。 fjコマンドでカレントディレクトリ指定。 flコマンドでファイルが作られていることを確認。 ファイルの中身も確認。 次回からディスクイメージの中を見ていく。
車載外部ストレージ

【FatFs】車載外部ストレージ その95【ファイル上シミュレーション②】

FatFsのファイル上シミュレーションの話。 diskio.cを改造する。 FatFs Win32のdiskio.cを改造。修正差分確認。 改造の概要説明。物理ドライブ走査数をMAX_DRIVE分に修正して認識できる物理ドライブの数を増加。 物理ドライブ1以上を指定されたらディスクイメージファイルをオープン。