SSブログ

C++Builderの使い方を間違えてた [USB]

P1010125.jpg
C++Builder4で作ったアプリをちゃんと検証していなかったため、他のパソコンで動かないことに今更ながら気がついた。
C++Builder4をインストールしたパソコンで動かしている限りは気がつかない。
で、リンカをいじり、現在はEXEファイルにライブラリも組み込んでしまいました。
これで動くはずです。

ここです。
http://www.page.sannet.ne.jp/je3nqy/onechip/MC68HC908/JB16_EV/JB16USBDEV1.htm


エンドポイント・ディスクリプタ [USB]

突然疑問に思う悪い癖。

最低必要なディスクリプタは、
デバイス・ディスクリプタ
インターフェイス・ディスクリプタ
コンフィグレーション・ディスクリプタ
エンドポイント・ディスクリプタ
の4つ。
908JB8 と908JB16はエンドポイントがEP0、EP1、EP2の3つのはず。
USB08プロジェクトのエンドポイント・ディスクリプタや、NECのエンドポイント・ディスクリプタは
EP1 EP2はあるけど、EP0がない。
EP0は、コントロール転送に使う特別なものだから、ディスクリプタで設定をする必要がないのだろうか。

ハテ

================================================================
やはりそうか。
EP0はどんな場合でも必要なので、エンドポイント・ディスクリプタとして書く必要がないのだそうな。
書けば、間違って書くこともあるだろうし。
で、USB08のプロジェクトのエンドポイント・ディスクリプタはしっかりEP1EP2の設定がしてあるから、ユーザーコード側さえしっかり書けば、使えるってことだな。EP2は、OUTだけだけど。

データブックの英語が・・・ [USB]

苦手な英語ですが、

MC68HC908JB16-Rev.1.1 データブックの162ページ
11.1 Introduction での説明
Endpoint 0 functions as a transmit/receive control endpoint
endpoint 2 functions as interrupt transmit or receive endpoint.
163ページ
11.3 Features での説明
Endpoint 0 with 8-byte transmit buffer and 8-byte receive buffer
Endpoint 2 with 8-byte transmit buffer and 8-byte receive buffer

エンドポイント0 はコントロール転送の送受信に使われることは分かる。
エンドポイント2はインターラプト転送の送受信ができるようだが、
どちらか一方の選択なのか、同時使用ができるのかこれだけでは分からない。

USBでもぼちぼちやるか [USB]

hamayanさん、k_tさんのおかげでFreescale社のマイコンMC68HC908JB8とJB16によるUSBの実験環境が整いました。
ぐらろさんやmasatoさんのおかげでUSBが反応しています。だけど、理解できた訳ではない。
moritanさんとTsuneoさんの話題はハイレベル。
解説本は少し読んでみたけど、闇夜に蛍程度の理解。さて、これからどうするか。

とりあえず、手持ちのUSBマイコンは、上記のJB8とJB16。チップ単体で9S08JM、9S12UF。サイプレスのEZ-USB(FX)苺屋製も死蔵してますが。

ホスト側は、WinXPにBCB4とBCB2007。