バックナンバーはこちら。
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回
そして、全体構成
これ・・・本当に大丈夫????
まぁ大丈夫でしょー。
物理的に壊れたりはしないし、
フォーマットがおかしくても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>]]]]]
バックナンバーはこちら。
コメント