- ベストアンサー
HIDデバイスクラスの実装
USBのインタラプト方式を用いてマイコンからPCへのデータ転送を行いたいと考えています(因みにマイコンにはH8-3052F、開発環境にはルネサスのHEWを使用しています)。 マウスの(ようなもの)を作りたいので、HIDクラスを利用して実装できないかと考えています。が、手前で調べてみたところあまり参考になるサイトがなく、どうすれば良いやらわかりません・・ 参考になる文献やサイトをご存知の方、またHIDクラスを扱ったことがあるという方、何か教えていただけないでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 >僕が作りたいのはUSBマウス的なものです。HIDだし、転送方式もインタラプトなので、上のURLの質問者様と同じ様にHIDクラスを用いれば実装が楽になるのかなと考えました。 >…質問の解釈違いでしたらすいません。 実際にPCドライバ、及びUSBデバイスを組んだ開発者としての発言になりますが、 極端なことを書きますが、USBデバイス側から見ればデバイスクラスななんてはっきり言えばどうでもいいんですよ。 「PCでこんなことをしたい」→「だったら○○クラスでインターフェースクラス(データ転送)は△△だ」 というのが設計の基本ですから。 今回は「USBマウス的なもの」とのことですから、HIDクラスで問題ないと思います。 >・HIDクラスを使用する際、あらかじめ用意(インストール?)しておく必要がある物は? OSが標準でHIDドライバーを用意しているのであれば特になし。 >・HIDクラスドライバを用いることで新たにドライバを開発する必要はなくなる。 デバイスはHIDとして認識されているので開発の必要はなし。 >HIDデバイスとして正しく実装されているものであれば、初めての接続時でも自動的にOS(?)が適切なクラスドライバを適用してくれるので、こちらでドライバを用意する必要がない。(クラスドライバはあらかじめsystem32フォルダなどに入っている???) 前述のとおり。OSが標準でHIDをサポートしているのであれば必要なし。 >・PICFUNや秋月のキット(AKI-H8-USB)のサンプルなどでバルク転送による通信を行うサンプルが公開されていますが、これをHIDデバイス用として流用しようとするのは可能か。また、可能ならどのあたりの処理部を修正・追加する必要があるのか。 流用は可能。 提示のキットは使用したことがないけど、同系列であればコンフィグレーションの変更と、送受信ルーチンの若干の変更可能。 重要なのはバルク(データ保障)ではなくインタラプト(割り込み)であること。この部分の処理は必要。
その他の回答 (2)
- arain
- ベストアンサー率27% (292/1049)
No.1です。 >2. HIDクラスの利用(使用)方法。 これこそ「何で使用しますか」というのが先かと。 PCでならHIDクラスで定義したものなら、それこそHIDデバイスとして利用できるとしか回答しようがありません。 >3. そもそもHIDクラスが具体的にどんな機能を持っているのか、よくわからない 「HID」は「Human Interface Device」の略。 つまるところ、キーボードやマウスも含め、「人が扱う(PCと入出力できる)デバイス全般」が対象となります。 今までの質問と返答を読むと「HIDクラスとして実装」の前に、「○○を行うから××クラスにする」というのが前提に必要ではないかと。 ひょっとしたら、別のクラス……場合によっては独自デバイス(要:PCドライバ開発)での検討も必要かもしれませんし。
お礼
ttp://oshiete1.goo.ne.jp/qa3466279.html 僕が作りたいのはUSBマウス的なものです。HIDだし、転送方式もインタラプトなので、上のURLの質問者様と同じ様にHIDクラスを用いれば実装が楽になるのかなと考えました。 …質問の解釈違いでしたらすいません。 現時点での解釈とわからない部分です。まだまだ勉強不足なので間違った解釈などあると思いますが、その際はご指摘くだされば幸いです。 ・HIDクラスを使用する際、あらかじめ用意(インストール?)しておく必要がある物は? ・HIDクラスドライバを用いることで新たにドライバを開発する必要はなくなる。 HIDデバイスとして正しく実装されているものであれば、初めての接続時でも自動的にOS(?)が適切なクラスドライバを適用してくれるので、こちらでドライバを用意する必要がない。(クラスドライバはあらかじめsystem32フォルダなどに入っている???) ・PICFUNや秋月のキット(AKI-H8-USB)のサンプルなどでバルク転送による通信を行うサンプルが公開されていますが、これをHIDデバイス用として流用しようとするのは可能か。また、可能ならどのあたりの処理部を修正・追加する必要があるのか。
- arain
- ベストアンサー率27% (292/1049)
>何か教えていただけないでしょうか。 何を知りたいのでしょうか? とりあえず、USBアナライザーにUSBマウスを繋いるだけで、 どのような通信データが必要かについては十分にな情報が所得できます。 コンフィグレーションであれば、USB関連の書籍はいろいろとあります。 定番ではCQ出版の赤本(最近は青本)がありますが。
お礼
ご回答ありがとうございます。 コンフィギュレーションでやりとりされるデータやその流れについてはある程度理解しているつもりです。 1. それらの処理をプログラムにするには一体どうすれば良いのか?? 2. HIDクラスの利用(使用)方法。 3. そもそもHIDクラスが具体的にどんな機能を持っているのか、よくわからない の3つで困っています。 …と、ここまで書いてからしばらくPCを放置していたのですが。 放置している間に1つ目の原因を考えていましたら、 ・USBコントローラ(USBN9604)の使い方 がわかれば糸口はつかめそうな気がしてきました。 1についてはこれとは別に新しく質問したいと思います。なので知りたいのは2と3になります。よろしくお願いします。
お礼
返信ありがとうございます。 またお礼遅くなってしまい、すいません。 インタフェース・ディスクリプタの中でHIDクラス(Mouse)であることを定義し、その他必要な処理・記述があればあとはPCのドライバの問題になるのででデバイス側にとってはどうでも良い・・・ということでしょうか。 バルク転送のプログラムを流用する際、デバイス側の実装で必要になるのは ・既存のディスクリプタの必要な部分を改変 ・HID、リポート、フィジカルディスクリプタの記述 ・インタラプト転送の実装(バルク転送の送受信ルーチンの変更で可能?) の3つでよろしいでしょうか。