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

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

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

FatFs Win32のソースコード群確認

太郎くん
太郎くん

前回、
「FatFsのディスクアクセス部分を改造してディスクイメージをファイルにする方向で進める!(キリッ)」
みたいなことをフクさんが言ってたけど・・・。

フクさん
フクさん

(「キリッ」は入ってなかったと思うぞ・・・。)

太郎くん
太郎くん

具体的にはどこをどう弄ることになるの?

フクさん
フクさん

まず、FatFsのWin32フォルダの内容を確認してみよう。

太郎くん
太郎くん

ソースコード関連としては以下があるね。

  • diskio.c
  • ff.c
  • main.c
  • ffsystem.c
  • ffunicode.c

FatFs Win32のソースコード群の概要

フクさん
フクさん

それぞれ簡単に説明するとこんなだ。

  • diskio.c :ディスクアクセス
  • ff.c:FatFs本体
  • main.c:FatFs対話用
  • ffsystem.c:OS依存関数(malloc/free/排他同期)
  • ffunicode.c:UNICODEテーブル
太郎くん
太郎くん

これらを見る感じだと、
diskio.c :ディクスアクセス
を改造すればOKそうってことかな?

フクさん
フクさん

その通り。

フクさん
フクさん

実際にソースコードを見ても、以下のWindows APIが散見される。

  • CreateFile
  • ReadFile
  • WriteFile
  • SetFilePointer
太郎くん
太郎くん

ということは、結構そのままでも行ける?

フクさん
フクさん

まぁ結構流用はできるだろうが、
これらのAPIはWinXP時代のHDD直接制御を目的にしたものなので、
ちょこちょこ弄る必要はあるかもね。

改造方針

フクさん
フクさん

とりあえず、改造方針は以下だ。

  • 物理ドライブ0は従来通りRAM Disk
  • 物理ドライブ1~9のディスクイメージをファイルとする。
    ファイル名はPhysicalDriveXとする。
太郎くん
太郎くん

RAM Disk以外に9個のディスクイメージが作れるようになるわけか!

フクさん
フクさん

まぁ一個しか使わないけどねー。

フクさん
フクさん

とりあえず、次回までにざっと改造しておこう。

まとめ

フクさん
フクさん

まとめだよ。

  • FatFs Win32のソースコード群確認。
    • 「diskio.c」を改造すればディスクイメージをファイルにできそう。
  • diskio.cはWindowsXP時代のHDDアクセス用にAPIが残っている。
    • このAPIをうまく流用すると楽かもしれない。
  • 認識する物理ドライブを元からあるRAM Diskと別に加えて10個にする方針。

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

コメント

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