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

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

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

はじめに

FatFs WinシミュレーションでSDカードに直接制御する話。
今回は「FatFsでFAT32フォーマットしてWindowsで認識」。
まずはフォーマット手順の確認。

SDカードをFatFsでフォーマットしてみる。
RAMディスクに対してフォーマットしたことはある。
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でFAT32フォーマットしてWindowsで認識」。

  • FatFs改造方針を考える
  • FatFs改造
  • FatFsでSDカードのFAT認識
  • FatFsでファイル書き込みとWindowsでの認識
  • FatFsでFAT32フォーマットしてWindowsで認識 ← これの1回目/全2回
フクさん
フクさん

そして、全体構成

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

これ・・・本当に大丈夫????

フクさん
フクさん

まぁ大丈夫でしょー。
物理的に壊れたりはしないし、
フォーマットがおかしくてもWindowsからしたらフォーマットされてないSDカードが刺さってるくらいにしか見えないし。

実は以前にもFatFsでフォーマットはしている

フクさん
フクさん

実はフォーマット自体は以前、RAMディスクに対してはやってるんだよねー。

太郎くん
太郎くん

え?そうだっけ?

フクさん
フクさん

RAMディクスは起動直後はまっさらなメモリ空間なんで、
フォーマット処理を書けないとFileSystemとして成立しない。

太郎くん
太郎くん

なるほど。
過去の記事を確認したらここでやってたね。

FatFs対話モードでのフォーマットコマンド

フクさん
フクさん

一応、フォーマットコマンドのおさらいをしておこう。

太郎くん
太郎くん

うん。

フクさん
フクさん

コマンドとしては、「fm」コマンドを使用する。

フクさん
フクさん

FatFsのhelp的にはこういう文法になってる。

fm <ld#> [<fs type> [<au size> [<align> [<N fats> [<N root>]]]]] - Create FAT volume

FatFs対話モードでのフォーマットコマンドの各種パラメータ

太郎くん
太郎くん

ld#は論理ディスク番号で、
fs typeはなんだっけ?
以前やった気がするけど。

フクさん
フクさん

(たしかにデジャヴ)

フクさん
フクさん

FileSystemの指定だね。
以下の定義になってる。
(デジャヴ)

  • FAT:0x01
  • FAT32:0x02
  • exFAT:0x04
太郎くん
太郎くん

そして、
au sizeがクラスタサイズで・・・

太郎くん
太郎くん

alignは?

フクさん
フクさん

セクタサイズだね。
ここは512byte固定にしておいた方が良いかな。
まぁ指定するのは「au size」までで良いと思うよ。

フクさん
フクさん

一応、残りのパラメータも説明だけしておくと、

  • N fats:FATテーブル個数、デフォルトは1
  • N root:ルートディレクトリエントリの位置

「N root」なんかそうそう指定するパラメータでは無いな。

太郎くん
太郎くん

じゃ、これを元にSDカードをフォーマットしてみるかー。

まとめ

フクさん
フクさん

まとめだよ。

  • SDカードをFatFsでフォーマットしてみる。
    • 物理的に壊れることはない。はず。
  • RAMディスクに対してフォーマットしたことはある。
  • FatFs対話モードのコマンドは「fm」。
    • fm <ld#> [<fs type> [<au size> [<align> [<N fats> [<N root>]]]]]

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

コメント

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