【FatFs】車載外部ストレージ その105【ファイル上シミュレーション⑫】

【FatFs】車載外部ストレージ その105【ファイル上シミュレーション⑫】 車載外部ストレージ

バックナンバーはこちら。
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」を作成。

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

コメント

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