KEI

車載外部ストレージ

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

OSから見たマウント解除方法説明。CreateFileに「\\.\d」を指定すると論理ドライブのハンドルを取得できる。DeviceIoControlに以下の制御コードを渡すことでOSの論理ドライブアクセスを禁止できる。FSCTL_LOCK_VOLUME。FSCTL_DISMOUNT_VOLUME。
車載外部ストレージ

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

FatFs改造のソースコード差分提示。次回から以下に注力する形で開設予定。dismount_volume関数。DeviceIoControlがポイントとなる。main.cのVolToPart配列。論理ドライブと物理ドライブ関連。
車載外部ストレージ

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

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

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

Windows上からSDカード直接制御に意味があるのか?特にない。面白そうだからやる。方針を提示。まずは改造。その後、FatFs-Windows間で相互運用できるかを確認。一応OS側で保護されているが、HDDにアクセスしないように気を付ける。リムーバブルディスクにしかアクセスできないはず。
車載外部ストレージ

【FatFs】車載外部ストレージ その117【SDカードディスクイメージ⑦】

Windows上でSDカードに作成されたテキストファイルを確認。ファイルの存在を確認OK。ファイルの内容を確認OK。ディスク関連はブラックボックスのまま使用してしまうことが多いが、概念だけでも知っておくといろいろな確認手段が得られる。今後の方針としてWindows上からSD直接制御。
車載外部ストレージ

【FatFs】車載外部ストレージ その116【SDカードディスクイメージ⑥】

LinuxでディスクイメージをSDカードへ書き込み。ddコマンドで書き込み。Windowsで確認前にLinuxでSDカード確認してみた。ファイルが作成されていることを確認。サイズが正しいことを確認。ファイルの中身が正しいことを確認。viで「:%!xxd」を実行するとバイナリモード。
車載外部ストレージ

【FatFs】車載外部ストレージ その115【SDカードディスクイメージ⑤】

FatFsで適当なテキストファイルを作成。なんとなくやばそうだが、問題ない。たぶん。事前にリスト確認。「long_file_name_file_by_fatfs.txt」を作成。リストでファイルが生成されていることを確認。ファイルを読み出して書き込まれているデータが正しいことを確認。
車載外部ストレージ

【FatFs】車載外部ストレージ その114【SDカードディスクイメージ④】

Windowsで作成したテキストファイルの有無をFatFsで確認。「long_file_name_file.txt」があることが確認。サイズもあってる。Windowsで作成したテキストファイルの中身をFatFsで確認。「0123456789」の繰り替しのテキストファイルなことを確認。
車載外部ストレージ

【FatFs】車載外部ストレージ その113【SDカードディスクイメージ③】

ディスクイメージをWindows側に持ってきてFatFsシミュレータのプロジェクトフォルダへコピー。PhysicalDrive2というファイル名はFatFsシミュレータがDisk2と認識するルールに則った名称。FatFsシミュレータでディスクイメージ認識はOK。fsコマンドで確認できた。
車載外部ストレージ

【FatFs】車載外部ストレージ その112【SDカードディスクイメージ②】

WindowsでSDカードをFATでフォーマット。FAT12/FAT16/FAT32が選択できないのでFATを指定するのみ。領域サイズで自動選択。テキストファイルをSDカード内に作成。LinuxでSDカードのディスクイメージ作成。dfコマンドでデバイス確認。ddコマンドでディスクイメージ作成。