モデルベース開発

車載外部ストレージ

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

「FatFsでSDカードのFAT認識」の続き。 FatFsでSDカード内のファイルリスト表示。 「fl 1:」 FatFsでSDカード内のファイル内容表示。 「fo 1 long_file_name_file_by_fatfs.txt」 「fd」 「fc」 共に問題無く処理できた。
車載外部ストレージ

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

「FatFsでSDカードのFAT認識」を実施。 マウント「fi 1」及びvolume status「fs 1:」は読み出せた。 VolToPart配列の定義が反映され論理ドライブ1にSDカードが配置。 あとは実際に読み書きをしてみる。(理屈上は動くはず)
車載外部ストレージ

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

FatFs内のVolToPart配列について説明。 マルチボリューム、マルチパーティション想定したパラメータ。 PARTITION構造体について説明。 物理ドライバ番号とパーティション番号が格納される。 これにより、論理ドライブ番号、物理ドライブ番号、パーティション番号が紐づけられる。
車載外部ストレージ

【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」を作成。 リストでファイルが生成されていることを確認。 ファイルを読み出して書き込まれているデータが正しいことを確認。