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

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

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

はじめに

FatFs WinシミュレーションでSDカードに直接制御する話。
今回は「FatFsでファイル書き込みとWindowsでの認識」の前半でとりあえず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でファイル書き込みとWindowsでの認識」。

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

そして、全体構成

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

まずはFatFsでファイル生成して書き込みをして、
そのファイルができていること、内容があってることを確認してみよう。

太郎くん
太郎くん

おー!

フクさん
フクさん

じゃ、さくっと実行。

FatFsでファイル生成して書き込み、リスト表示、内容表示

FatFs module test monitor (LFN, CP932, UTF-8)

PD#0 <== RAM Disk (135MB, 512 bytes * 276480 sectors)
PD#1 <== \\.\PhysicalDrive1 (14832MB, 512 bytes * 30375936 sectors)
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 enabled. Logical drives are associated with the patitions as follows:
"0:" ==> PT#1 in PD#0
"1:" ==> PD#1
"2:" ==> PD#2
"3:" ==> PD#3
"4:" ==> PD#4
"5:" ==> PD#5
"6:" ==> PD#0
"7:" ==> PD#0

>fi 1
rc=0 FR_OK
>fj 1:
rc=0 FR_OK
>fo 6 long_file_name_file_by_fatfs_to_sdcard.txt
rc=0 FR_OK
>fw 20000 0x64
20000 bytes written.
>fc
rc=0 FR_OK
>fl
D-HS- 2021/04/16 16:04          0  System Volume Information
----A 2021/04/16 16:05      11200  long_file_name_file.txt
----A 2021/04/20 20:18      10000  long_file_name_file_by_fatfs.txt
----A 2021/05/12 16:48      20000  long_file_name_file_by_fatfs_to_sdcard.txt
   3 File(s),      41200 bytes total
   1 Dir(s),    43606016 bytes free
>fo 1 long_file_name_file_by_fatfs_to_sdcard.txt
rc=0 FR_OK
>fd
00000000: 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 dddddddddddddddd
00000010: 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 dddddddddddddddd
00000020: 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 dddddddddddddddd
00000030: 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 dddddddddddddddd
00000040: 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 dddddddddddddddd
00000050: 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 dddddddddddddddd
00000060: 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 dddddddddddddddd
00000070: 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 dddddddddddddddd
>fc
rc=0 FR_OK
>

FatFsでファイル生成して書き込み、リスト表示、内容表示の結果確認

太郎くん
太郎くん

これは、ばっちり書けたのでは?!

フクさん
フクさん

うん。ちょっと不安だったけど、書けたっぽい。
「long_file_name_file_by_fatfs_to_sdcard.txt」を生成して、0x64こと’d’を20000byte書き込み。
リスト表示でファイルが作成されていることと、
そのファイルサイズが20000byte。
そして、改めて読み出した値も0x64こと’d’になってるからOK。

太郎くん
太郎くん

あとはこれをWindows側から見れるかってところか。

まとめ

フクさん
フクさん

まとめだよ。

  • 「FatFsでファイル生成して書き込み、リスト表示、内容表示」してみた。
    • 問題無く動作。
      • ファイル名OK。
      • ファイルサイズOK。
      • 書き込まれた内容OK。
  • あとは、同じようにWindowsからもこのファイルが見えるかを確認する必要がある。

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

コメント

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