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

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

バックナンバーはこちら。
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

他のFATについて

フクさん
フクさん

というわけで、前回でFAT FileSystemのディスクイメージ調査の話は終了だ!

太郎くん
太郎くん

お!
全部話し切った感じか!

フクさん
フクさん

まぁFAT32に限定した説明になってるんだけどね。
実際はFAT12とかFAT16とかもあって、
FAT領域のクラスタチェーンの単位が違ってたり、
ディレクトリエントリ構造体の構成が違ってたりはする。

太郎くん
太郎くん

結構違うの?

フクさん
フクさん

まぁFAT32を追った手順と変わらないから、
見れば分かるかなー?
って程度だ。
実際にもっと知りたい場合はCHANさんのサイトを見ることをお勧めする。
(他力本願)

感想

フクさん
フクさん

で、感想としてはどうな感じ?

太郎くん
太郎くん

そうだねー。
今まではFileSystemとか意識してなくて、
動いて当たり前ってイメージだったけど
その当たり前が結構大変なことになってたんだなー。
って目から鱗が落ちた感じだ。

フクさん
フクさん

まぁそうだろうねぇ。
PCでは当たり前で気にしないしないだろうし、
OSが全部解決しちゃうしね。

太郎くん
太郎くん

OSがやってくれてることって組み込みだと自分たちで解決しないとダメなこと多いから、FileSystemなんてまさにそんな感じなんだろうねー。
以前やったEthernet、TCP/IPプロトコルスタックなんかも同じ関係性だったね。

フクさん
フクさん

あとはUSBとかHDMIとか。
PCだったら刺して終了だけど、組み込み機器はそういうわけには行かないねー。

太郎くん
太郎くん

そう考えると、日ごろから「使えて当たり前」なものもどういう仕組みで動いているか気にしておく必要はあるね。

フクさん
フクさん

その考え方は大事だ。
人によっては「車輪の再発明だ!」と揶揄するかもしれないが、
実状はそうなってない。
WindowsやLinuxがあらゆるCPUに対応し、どんな低スペックな環境でも動作してくれるなら「車輪の再発明」ってことは成立するかもしれないが、そもそも作るものが異なることに対して使う言葉ではないだろう。

今後の方針

太郎くん
太郎くん

で、今回が最終回?

フクさん
フクさん

うーん、まぁFAT FileSystemの構造が見えたからこれで終わりでも良いけど、
FileSystemって異なるシステムでも同じ構成で認識できること最大のメリットだからねー。

太郎くん
太郎くん

と、いうことは?

フクさん
フクさん

SDカードからディスクイメージを抽出して、
それに対して読み書きできるか確認。
ってにもチャレンジするかー。
って思ってる。

太郎くん
太郎くん

結構大変そうなイメージがあるんだけど。

フクさん
フクさん

まぁダメだったらダメでも頑張ったことをネタにでもすりゃいいよ。

太郎くん
太郎くん

まぁやってみるだけやってみるかー。

ソースコードについて

フクさん
フクさん

今回使用したソースコードはGithubにて公開してる。

興味ある人は参照してみて。

まとめ

フクさん
フクさん

まとめだよ。

  • 扱ったのはFAT32。
    • 他にFAT12、FAT16があるが、違いはFAT領域のクラスタサイズとディレクトエントリ構造体。
    • 基本的な追い方は一緒。
  • 組み込み機器ではPCで出来て当たり前がとても困難。
    • 「車輪の再発明」という揶揄が適切ではない状況の方が多い。
    • 日ごろから「出来て当たり前」の仕組みを考えると吉。

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

コメント

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