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

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

バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/

はじめに

FatFsのファイル上シミュレーションの話。
ディスクイメージを読み解く。
今回はファイルの内容を確認してみる。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

test.txtの内容のクラスタ位置

フクさん
フクさん

前回、確認したtest.txtの先頭クラスタ番号は3だった。
そして、ルートディレクトリエントリが配置されている先頭クラスタは2。

太郎くん
太郎くん

たしかにそうだったね。

太郎くん
太郎くん

ということは、ルートディレクトリエントリがあるクラスタ2のすぐ直後にあるってことか。
クラスタのサイズが4096[byte]で
ルートディレクトリエントリが0x90000[byte]の位置にあるから、
単純に0x90000[byte]に4096[byte]を足した、0x91000[byte]がクラスタ3ってことになって、
test.txtの内容が記載されてるってことか。

フクさん
フクさん

その通り。

test.txtの内容確認

フクさん
フクさん

じゃ、0x91000[byte]の位置に飛んで、
test.txtの内容を確認してみよう。

61 61 61 61 61 61 61 61 …
太郎くん
太郎くん

お!
ちゃんとFatFsで書き込んだ0x61=’a’が連続で埋まってるね!
指定した7000[byte]になってるし。

太郎くん
太郎くん

何となくファイルとファイルの中身の関係がわかった気がするよ。

フクさん
フクさん

さて、本当にそうなか?

太郎くん
太郎くん

(なんだ?この含みのある問いは・・・。)

クラスタ越えのファイルについて

フクさん
フクさん

今回の於いて1クラスタのサイズは4096[byte]。
クラスタは読み書き単位。
そして、test.txtは7000[byte]で1クラスタには収まっていない。

太郎くん
太郎くん

言われてみれば・・・。
1ファイルだから連続するような仕様になってるってこと?

フクさん
フクさん

たまたま、連続に配置できるようにクラスタが空いてたから連続になってるだけかもねー。

太郎くん
太郎くん

7000[byte]を書き込む際に連続した空きクラスタが無いとどうなるんだ???

フクさん
フクさん

まぁ答えを言ってしまうと
FAT領域でクラスタチェーンを管理している

太郎くん
太郎くん

以前もそんなこと言ってたね。
たしか、「ファイルサイズの伸縮を実現している」とかなんとか。

太郎くん
太郎くん

たしかここで言ってたと思う。

フクさん
フクさん

おー!
ちゃんと覚えていたか!

太郎くん
太郎くん

そう言ってたのを覚えていただけで、
なんのこと言ってるかはわからないけどねー。

フクさん
フクさん

というわけで次回はFAT領域のクラスタチェーンについて見てみよう。

まとめ

フクさん
フクさん

まとめだよ。

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

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました