LoginSignup
1
1

More than 5 years have passed since last update.

FS01BU (Mass Storage)を解析してみた

Posted at

FS01BU + 格安 SIM + Zynq で IoT が最終目標

USB のホスト機能を Zynq の Standalone で実現できつつある(中途半端)。最終的には格安 SIM とつなげて IoT なことをしてみたいのだが、その前段階として FS01BU と USB のプロトコルのやり取りをしてみた。

ボードはなぜか TB-7Z-020-EMC。

TB-7Z-02-EMC の特殊事情

なぜか最初に USB HC のリセットをしないといけない。なぜだ~~。USB デバイスへの VBUS の供給は ULPI 経由。回路図を見ると(というかUMに書いてある) JP1 と JP2 もつなぐ必要がある。ULPI の OTG のレジスタに 0x67 を書き込む。(0x20 が VBUS 供給の指示)

FS01BU との通信

FS01BU と USB のプロトコルに従い通信してみる

まずはスピード

ポートが Enable になると Zynq の USB ホストは自動的に USB のスピードを判断してくれる(通常の EHCI にはない便利な機能)。Linux のドライバでは chipidea が使われれているので Zynq というより chipidea の機能かな?

PORTSC1 の PSPD が 0 になったので、FS01BU は Full Speed(12Mbps) と USB2.0 だけど High Speed(480Mbps) を使ってないことがわかる。

GET DESCRIPTOR (DEVICE)

DEVICE の情報を取得する。この段階ではまだアドレスは 0 のまま。

config.txt
12
01
00 02
00
00
00
40
9e 1c (Vendor ID = 0x1c9e)
ff 98 (Product ID = 0x98ff)
00 00
03
02
04
01

ベンダー ID が 0x1c9e でプロダクト ID が 0x98ff であることがわかる。

SET ADDRESS

とりあえず 2 番を付与する。以降、この USB デバイスのアドレスは2。

SET CONFIGURATION

本当は CONFIGURATION を GET DESCRIPTOR して番号を確認しなきゃならないんだろうけど、通常は1個しかサポートしないので、1を設定。そのあと念のために GET CONFIGURATION をして 1 になったことを確認

GET DESCRIPTOR (CONFIGURATION)

ここはあまり自信がない。FS01BU は 1 番のインデックスの CONFIGURATION を取得しようとするとエラーになる(みたい?)。自分の理解では SET CONFIGURATION した番号を GET DESCRIPTOR でも設定すると思っていたのだが、、、もう一度 USB の仕様を確認した方がよい。とにかく FS01BU は 0 番のインデックスに”のみ”反応する。

ロングバージョンの結果は次の通り

configuration.txt
9
02
20 00
01
01
01
e0
fa

09
04
00
00
02 (End Point 数)
08 (クラス:Mass Storage)
06 (サブクラス)
50 (プロトコル)
00

07
05
01
02
00
02
00

07
05
81
02
00
02
00

FS01BU は Mass Storage (USB メモリ) だった

ということで、購入したばかりの FS01BU は Mass Storage になっています。この時の Product ID は 0x98ff です。代替インタフェースもないようなので、おそらくベンダー固有のコマンドで USB シリアルに切り替えるのだと思います。

FS01BU のマニュアルにも最初は「ゼロインストール機能により、、、」と書いてあるので Mass Storage で起動して自動インストールをしてアクティベーション(?)することでモデムとして(USB Serial として) 使えるようになるのでしょう。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1