USBフェイク
STM32:なんちゃってマスストレージ・デバイス on STM8S-Discovery†
ソースはこちらにある、以下のこれ。
アプリケーション・サンプルソース†
種別 | ファイル | 対応基板 |
STM32版 仮想COMサンプル他 | sample.zip | STM8S-DiscoveryのSTM32側、他 |
- sample.zip内にmsdデバイスサンプルがあります。
- ハードウェアは、とりあえず、STM8S-DiscoveryのST-Link側だけを使用します。(CQ-STARMなどでも同様に可)
- ファーム書き込みは拙作 armboot.exe で行ないます。
- ファームを書き込んだら、ブートジャンパーをOPENにして、USB再接続するとUSB HDDデバイスが現れます。
差分はこちら†
Index: msc/src/scsi_data.c =================================================================== --- msc/src/scsi_data.c (revision 290) +++ msc/src/scsi_data.c (working copy) @@ -32,7 +32,7 @@ 0x80, /* RMB = 1: Removable Medium */ 0x02, /* Version: No conformance claim to standard */ 0x02, - +#if 0 36 - 4, /* Additional Length */ 0x00, /* SCCS = 1: Storage Controller Component */ 0x00, @@ -44,6 +44,20 @@ 'D', 'i', 's', 'k', ' ', ' ', ' ', /* Product Revision Level */ '1', '.', '0', ' ' +#else + 36 - 4, /* Additional Length */ + 0x00, /* SCCS = 1: Storage Controller Component */ + 0x00, + 0x00, + /* Vendor Identification */ + 'M', 'a', 'x', 't', 'o', 'r', ' ', '5', + /* Product Identification */ + 'A', '1', '2', '0', 'J', '0', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', + /* Product Revision Level */ + '1', '.', '0', ' ' +#endif + }; uint8_t Standard_Inquiry_Data2[] = {
- 文字数は変えません。
- ほんとうは(たぶん)SPIインターフェースの先にMMC/SDを接続しないと正しく動作しないような気もします。
- まあ、フェイクなので未配線のままテストします。
- これで、Maxtorのドライブがデバイス一覧のドライブに現れればOKです。
- SPIインターフェースの先にMMC/SDを接続して実ドライブにしたいなぁ・・・。(SPIだしUSB FullSpeedなので遅いけど)