PicWriterUSB:ソフトウェア編【USBマスストレージ】

msc_test01

TinyUSB MSCの改変

まずはマスストレージクラスの実装がどのように行われているか確認します。「msc_disk.c」にFATドライブとしての設定部分がまとめられています。ざっと眺めると下記のように設定されています。

  • uint8_t msc_disk[DISK_BLOCK_NUM][DISK_BLOCK_SIZE]としてFATドライブのデータイメージをRAM上に置いている
  • FAT12として、Boot sector、FAT、Root directory entry、README.TXT(コンテンツ)をmsc_disk[]の初期値として与えている
  • DISK_BLOCK_NUM = 16, DISK_BLOCK_SIZE = 512でトータルの容量は8KB
  • FATの数は”1″(通常は2であることが多いが実動作上の問題は無さそう)
  • Root directory entryの数は16

ドライブとしての容量は8KBしかありませんので、RAMの総容量を鑑みて240KB迄拡張します。DISK_BLOCK_NUM = 480になりますが、FAT12の場合1つのチェーンに12bit(1.5バイト)ですからデフォルトの1block=512バイトでは340チェーン迄しか記録出来ないためこちらも2blockに拡張します。

加えて、ボリュームラベルとVID、README.TXTの内容とドライブにファイルが書き込まれたことを検出するためのフラグを追加しています。

あとはUSBのdescriptorをPicWriterUSBに合わせて変更します。

3: Serialsはユニークな値を設定するべきかとは思いますが、とりあえず固定値を入れています。

再度ビルドを行いmsc_test.uf2にてRP2040を書き換えると、ボリュームラベルの変更と容量の拡大を確認できます。

msc_test01

 

 

 

コメント

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