バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
FatFsのファイル上シミュレーションの話。
ロングファイルネームなフォルダやファイルを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で作成
今回からVFAT仕様の確認で、
ロングファイルネームがどう実現されてるかを確認するんだよね?
そうだね。
とりえあえず、FatFsでロングファイルネームなフォルダやファイルを作ってみて、そのディスクイメージをバイナリエディタで確認するって流れを想定している。
いままでやったパターンと大体一緒だね。
ルートディレクトリエントリまではわかってるから、
そこから追う感じになると思う。
FatFs対話モードでの実際の処理
FatFs対話モードで一気にフォルダとファイルを作成してしまおう。
FatFs module test monitor (LFN, CP932, UTF-8)
PD#0 <== RAM Disk (135MB, 512 bytes * 276480 sectors)
PD#1 <== PhysicalDrive1 (Not Ready)
PD#2 <== PhysicalDrive2 (Not Ready)
PD#3 <== PhysicalDrive3 (Not Ready)
PD#4 <== PhysicalDrive4 (Not Ready)
PD#5 <== PhysicalDrive5 (Not Ready)
PD#6 <== PhysicalDrive6 (Not Ready)
PD#7 <== PhysicalDrive7 (Not Ready)
PD#8 <== PhysicalDrive8 (Not Ready)
PD#9 <== PhysicalDrive9 (Not Ready)
Multiple partition is disabled.
Each logical drive is associated with the same physical drive number.
>fi 1
rc=0 FR_OK
>fj 1:
rc=0 FR_OK
>fs
FAT type = FAT32
Cluster size = 4096 bytes
Sectors/FAT = 1024
Number of FATs = 1
Number of clusters = 130928
Volume start sector = 63
FAT start sector = 128
Root DIR start cluster = 2
Data start sector = 1152
No volume label
Volume S/N is 5283-207B
2 files, 15000 bytes.
0 folders.
4210120 KiB total disk space.
523692 KiB available.
>fk long_file_name_folder
rc=0 FR_OK
>fl
----A 2021/04/03 04:06 7000 test.txt
----A 2021/04/03 04:06 8000 test2.txt
D---- 2021/04/11 16:37 0 long_file_name_folder
2 File(s), 15000 bytes total
1 Dir(s), 536256512 bytes free
>fg long_file_name_folder
rc=0 FR_OK
>fl
0 File(s), 0 bytes total
0 Dir(s), 536256512 bytes free
>fo 6 long_file_name_file.txt
rc=0 FR_OK
>fw 16 0x63
16 bytes written.
>fc
rc=0 FR_OK
>fl
----A 2021/04/11 16:39 16 long_file_name_file.txt
1 File(s), 16 bytes total
0 Dir(s), 536252416 bytes free
>fo 1 long_file_name_file.txt
rc=0 FR_OK
>fd 16
00000000: 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 cccccccccccccccc
>fc
rc=0 FR_OK
>
何をしたかのおおよその説明
ざっと何したか説明してもらえると助かるかな。
やったことはこんなん。
- 「1:」をマウント
- volume status確認
- リスト確認
- test.txtとtest2.txtがあるのを確認。
- 「long_file_name_folder」というフォルダを作成。
- リスト確認
- test.txtとtest2.txtに加えて「long_file_name_folder」フォルダが作成されているのを確認。
- カレントディレクトリを「1:long_file_name_folder」に変更
- リスト確認
- ファイルもフォルダも無いことを確認。
- long_file_name_file.txtを作成&書き込みモードでOpen。
- long_file_name_file.txtに’c’を16byte分書き込み
- long_file_name_file.txtをclose
- リスト確認
- long_file_name_file.txtが生成されていることを確認
- long_file_name_file.txtを読み取りモードでOpen。
- long_file_name_file.txtから16byte読み出し
- ‘c’が16byte分書かれているのを確認
- long_file_name_file.txtをclose
一言で言っちゃうと、
「long_file_name_folder」作って、その中に「long_file_name_file.txt」ってのを作ったってことだね。
フォルダもファイルも「8.3形式」じゃないからロングファイルネーム扱いになって、VFAT仕様を確認できるってことか。
そうね。
次回はディスクイメージの中を追っていこう。
まとめ
まとめだよ。
- FatFsのVFAT仕様確認方法。
- とりえあず、ロングファイルネームなフォルダとファイルを作成してディスクイメージの中身を確認する方針。
- FatFs対話モードでフォルダとファイルを作成。
- 「long_file_name_folder」作って、その中に「long_file_name_file.txt」を作成。
バックナンバーはこちら。
コメント