【FatFs】車載外部ストレージ その119【SDカード直接制御②】

【FatFs】車載外部ストレージ その119【SDカード直接制御②】 車載外部ストレージ

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

はじめに

FatFs WinシミュレーションでSDカードに直接制御する話。
今回は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改造方針を考える
  • FatFs改造
  • FatFsでSDカードのFAT認識
  • FatFsでファイル書き込みとWindowsでの認識
  • FatFsでFAT32フォーマットしてWindowsで認識
太郎くん
太郎くん

方針から考えるのか・・・。

フクさん
フクさん

まぁある程度決めてはいるけどねー。

FatFs改造方針

太郎くん
太郎くん

いつも通り、図解でよろしくー。

フクさん
フクさん

うむ。
ざっと書いてみた。

FatFS、FileSystem、DiskIO、DeviceIoControl、読み書き実施、SDHC、WindowsAPIを駆使してSDを直接制御
太郎くん
太郎くん

思ったよりもシンプルだけど・・・。

太郎くん
太郎くん

DiskIOの下のDeviceIoControlがキモなのかな?

DeviceIoControl

太郎くん
太郎くん

ところでDeviceIoControlって結局なに?

フクさん
フクさん

まぁデバイスアクセス用の設定関数的な位置づけにあるAPIだね。

太郎くん
太郎くん

設定?
設定以外はどうするの?

フクさん
フクさん

設定以外はWriteFile、ReadFileで読み書きって感じだね。

太郎くん
太郎くん

WriteFile、ReadFileってファイルアクセス用のAPIだよね?
デバイスが関係あるの?

フクさん
フクさん

Windowsに限らずの話だけど、
デバイスドライバ経由でデバイス制御する場合、
OS上のアプリケーションはWriteFile、ReadFileを使って通信するんだよね。
有名どころだとRS232CことCOMポートなんか有名どころかな。

太郎くん
太郎くん

あー!
たしかにCOMポートで通信する時にWriteFile、ReadFileを使った気がする。

フクさん
フクさん

他のデバイスもデバイスドライバがあることが前提とはなるけど、
同じようにWriteFile、ReadFileでアクセスすることになる。

DeviceIoControlをどうつかうのか?

太郎くん
太郎くん

で、DeviceIoControlで設定って具体的になにするの?

フクさん
フクさん

DeviceIoControlにFileSystem関連の制御コードがあったはずなんだよね。
そこを調べてうまくSDカードことリムーバブルディスクの直接制御ができるようにするつもり。

太郎くん
太郎くん

(まだ調べてなかったのか・・・。)

フクさん
フクさん

まぁ次回までに調べてFatFsのソースコードを改造しておくよー。

まとめ

フクさん
フクさん

まとめだよ。

  • FatFs改造方針。
    • DeviceIoControl関数を使用する。
  • 余談として、ファイルアクセス以外にデバイスアクセスにもReadFile、WriteFileを使用する。
  • DeviceIoControlの制御コードにFileSystem関連のものがあるので、これでリムーバブルディスクの直接制御はできそう。

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

コメント

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