Category Archives: USB

Eclipse の設定

 今年は色々な面でアンドロイドに軸足を置こうと考えている。そこで、アンドロイドの開発環境である Eclipse がメインの開発環境になるわけだ。学校の課題とかもこなしていたので、インストールしていた Eclipse はかなりくたびれた感じになっていた。新しめのソースがビルド出来ないくらいなのだ。仕方がないので、全部新調することにした。でも、インストール時にいくつかの不具合が生じて都合、3回くらいフルインストールをするはめになった。でも、その甲斐あって色々な開発に使えそうな環境に仕上がった。

 今年はコレ!コレで行く!

経験値を上げる

 Personal Cloud 觔斗雲の調子がおかしくなってしまった。録画してもファイルサイズが「0」。これを放送波の弁別ソフトである tssplitter にぶち込むとサイズが「0」であるがゆえに落ちてしまう。当初はアンテナの接触不良が考えられたが、アンテナの接続を再確認しても改善しない。アンテナは分配器により、混合信号を4信号に分配してチューナに入力している。分配器を利用したのは配線がすっきりするためであるが、分波器のほうが良いと web では解説している。周波数毎に分配するのが分波器であるが、信号の減衰を抑えることが出来るらしい。もしかすると、分波器を再購入しなければいけないかなと?心配だったが、一応、録画は出来ているようだ。

 原因は BCAS カードが正しく読めていないのが、原因のようであった。確かに不具合がでている時の BCAS カードリーダの LED の点滅はゆっくりであったが、正規の動作を行っている時の点滅はいくぶん速い。再起動を行い、動作を確認するとちゃんと動作しているようだ。まだ、検証中であるが試しにいくつかの番組を録画してみると問題ない様に見える。

 しばらく試用していこう。

USB ファームウェア

 YaFW の調子が良くないので、オプティマイズの FX2FW を SDCC のポートしたものを利用することにしたが、SDCC は大きめのコードがうまくコンパイルできない様だ。仕方が無いので、FX2FW をベースに自分でファームウェアを作成することにした。まだ、途中だけれどナカナカいい感じだ。まぁ、元々ファームウェアと言うのは必要最小限を実装するのが原則なので、これが基本なのだが…。やるべき事はだいぶ整理されてきているので後は実装を行えば良さそうだ。

Yet Another Firmware

 久々に USB の開発をやっている。最後に触ったのは、去年の10月位なので半年以上のブランクだ。IT 業界では3ヶ月前は他人という言葉があるくらいなので、すっかり忘れてしまっている。しかも、見始めたのがそこで使われているファームウェアとは別のファームウェアなので、タチが悪い。w
 Keil のコンパイラのサンプルを使うのが USB 開発では多いのだが、SDCC も使われている。特に fenrir が Keil のサンプルをポートしてくれたのも非常にポピュラーだし、おれも使わせてもらっている。それとは別にもう一つのファームウェアのひな形もある。これは元々、Linux の DVB 用に開発されたもので最初は主にそれを使っていた。さらにもう一つのファームウェアと言うことで、YetAnotherFirmWare = YaFW と名付けてみた。
 以前に USB 関連の原稿を執筆した時にサンプルとして作成したものだ。LED の点灯と SW の読み取りが行える非常にシンプルなものだ。もちろん、SDCC でビルドしたものだがその頃はたしか Ver.2.7 程度だったような気がする。これを最新版の SDCC 用に置き換えてビルドを通るようにするのが最初のミッションだ。次のミッションは renum の確認。その次は動作確認だ。 一通り、LED や SW を取り扱う事が出来るようになった。あとはこれをベースにして、付加機能を実装していく。
 昔のコードの理解は乾いた体に水が浸み込む用にじっくり脳内に浸透していく。不思議な感覚だ。

McMil ファームウェアの拡張

 コツコツとシステムの拡張に取り組んでいる。この手のシステムだと全部をいっぺんにやるとトラブった時にわけがわからなくなるので、少しずつ変更を加えてテストしながら進める。
 今回はファームウェアの拡張を行った。詳しく言うと RTL の動作モードを増やしたわけだ。一種のステートマシンと言える。ビルドしたファームウェアをロードすると、renum までは問題なく出来てファームウェアの置き換えまでは出来たようだ。
 次はホストソフトを拡張して、モードの切り替えが出来るようにする。このモード(ステート)の切り替えは実際に FX2 の GPIO をドライブするのでこのピンの状態を観察することで、ファームウェアとそれを制御しているホストソフトの動作の確認が出来る。
 Step by Step !

myProjHID

 手元にある PS2 のジョイスティックを USB に変換するアダプタで試してみた。とりあえず、動作した。次は本丸のコントローラだな。

うそっぴすけきよ

 って、よく学生のころに言ったけど、さすがに最近は言わなくなった。先日の JoyStick の解析だがまさにこのようになってしまった。
 先頭からの8バイトにすべて集約されているみたいだ。今のところは決め打ちだけど、これで色々なジョイスティックに対応できそうだ。まだ、フォースフィードバックのやり方がわからないけど、これも追々。
 

McMil20091104

 先日、成功した USB の動作に気を良くして改良を試みたが…。改良ポイントはコードのコンパクト化とハードの整理だ。どちらも固まらないままに適当にやったので全く動作しなくなってしまった。押入れに片づけておいたオシロスコープを引っ張り出して波形を見れる準備を整えた。
 原因は Objective-C ではありがちな、[obj method] での呼び出しの obj の綴り間違いであることがわかった。こういう間違いを犯すと、本当に年齢をとるのはいやだなと痛感する。コードもコンパクトになり動作も完璧に把握できたので、これをベースに改良を加えていこうと思う。

0 -> 1

 ちょっと長かったけど、Macintosh から カメレオン USB FX2の動作が出来るようになった。今回のミソは
 1. Macintosh 上から操作
 2. ファームウェアは SDCC を用いて Mac 上で開発
 3. CPLD の RTL 開発は VirtualBox を用いて Windows7 上で開発
 4. CPLD への焼き込みも VBox の Win7 上の USB 経由で
 今回の開発は筆者がたびたび行っている「一発書き」 に近いものになった。
 この言葉は筆者が勝手に命名しているだけで、この言葉が世間一般であるとは思えないが誰もがやっているのではないかと推察する。
 初めての環境でデバッグの装備がほとんどない場合、実質的に「一発」で動作させないとナニがおかしいのかわからない状態になる。動かなくなる原因はほとんど無数にあるわけだし、ある程度動作させることが出来れば他の箇所をわざとおかしくさせてその時のシステムの振る舞いを見ることができる。これにより動作していない状況がどのような原因でおこるのかの引き出しを増やすことが出来る。
 次の目標はカウンタと分周回路を実装し、その設定を Macintosh から行えるようにする。

Joy Stick の解析

 Mac に接続されている JoyStick (Wise Corp. GameCube to USB )の解析をおこなった。自作のソフトにて HID のレポートを提出させて、そのダンプリストを解析した。解析結果は以下の通り…
Not pressed
0e e9 00 00 df cf 03 00 00 80 7c 82 7d 81 1d 23 1c 00 00 00 1e 00 00 00 1c 00 00 00 de 9f 72 7d
Button-A
49 e9 00 00 e3 93 04 00 (01) 80 7c 82 7d 81 1d 23 1c 00 00 00 1e 00 00 00 1c 00 00 00 7d df 0a ab
Button-B
72 e9 00 00 41 1c 05 00 (02) 80 7c 82 7d 81 1d 23 1c 00 00 00 1e 00 00 00 1c 00 00 00 46 9e 3f dd
Button-X
ca e9 00 00 33 3e 06 00 (04) 80 7c 82 7d 81 1d 23 1c 00 00 00 1e 00 00 00 1c 00 00 00 dd 1f ef 6b
Button-Y
e5 e9 00 00 51 99 06 00 (08) 80 7c 82 7d 81 1c 23 1c 00 00 00 1e 00 00 00 1c 00 00 00 4d cb 66 f7
Button-Z
f1 e9 00 00 a3 be 06 00 (40) 80 7c 82 7d 81 1c 23 1c 00 00 00 1e 00 00 00 1c 00 00 00 02 0d 97 35
Button-L(Digital)
fe e9 00 00 27 eb 06 00 (10) 80 7c 82 7d 81 e6 26 1c 00 00 00 1e 00 00 00 1c 00 00 00 15 12 e4 b1
Button-R(Digital)
12 ea 00 00 1f 2c 07 00 (20) 80 7c 82 7d 81 1d e7 1c 00 00 00 1e 00 00 00 1c 00 00 00 c2 e2 bd 49
Button-Start/Pause
93 ea 00 00 b7 d7 08 00 (80) 90 7c 83 80 80 00 00 1c 00 00 00 1e 00 00 00 1c 00 00 00 0b 2e 7a 6a
Analog -X-
a4 ea 00 00 cd 11 09 00 00 80 (dc) 81 7e 80 1d 24 1c 00 00 00 1e 00 00 00 1c 00 00 00 0e 9f fa e7
Analog -Y-
c0 ea 00 00 4f 6f 09 00 00 80 85 (28) 7e 80 1d 24 1c 00 00 00 1e 00 00 00 1c 00 00 00 66 a4 b0 27
Analog -L-
f7 ea 00 00 07 25 0a 00 00 80 7c 83 81 81 (c9) 22 1c 00 00 00 1e 00 00 00 1c 00 00 00 e4 47 f1 0e
Analog -R-
0f eb 00 00 87 73 0a 00 00 80 7c 83 81 81 1e (26) 1c 00 00 00 1e 00 00 00 1c 00 00 00 8c 8d 01 b2
HatSw (CrossKey) – Neutral
1d eb 00 00 4f a3 0a 00 00 (80) 7c 83 81 81 1e 26 1c 00 00 00 1e 00 00 00 1c 00 00 00 d7 5a df 42
U – 00, R – 20, D – 40, L – 60
Analog -X- (Right Side)
55 eb 00 00 e1 5c 0b 00 00 80 7c 83 (28) 84 1e 26 1c 00 00 00 1e 00 00 00 1c 00 00 00 2d 5d 3f 33
Analog -Y- (Right Side)
76 eb 00 00 35 c8 0b 00 00 80 7c 83 8c (d1) 1e 21 1c 00 00 00 1e 00 00 00 1c 00 00 00 84 e7 8c 9f
 この手法を用いれば、色々なジョイスティックをMacに接続出来そう。鉄騎かなやっぱ。w