2017-04-06 6 views
0

私が知っている:USBの相互作用(エンドポイント - バッファ - ホストコントローラ)

  • USBデバイス(マウス)は、送信データが格納されているイストホストするエンドポイントの割り込みを持っています。
  • ホストはこのInterrupt IN Endpointをポーリングし、そのデータをバッファに書き込みます。

このバッファはどこにありますか?私はマザーボードのテクニカルマニュアル(USB ...コントローラ...バッファ)でそれを見つけるのは非常に難しかったが、このレジスタを見つけることができませんでした。

HostControllerは、デバイスからのEndpoint INデータを格納するために独自のバッファを使用していますか、またはHost Conrollerを他のレジスタにマッピングしていますか?

アクションがある場合(マウスの動きやクリックなど)、USBホストコントローラは割り込みを引き起こしますか? このストアド/バッファリングされたデータはどこにありますか?

私はUbuntuので働いていると/proc/interruptsに見ることで、私は、接続されたUSBデバイスのIRQ番号(マウス)とのEHCI_HCD:USB2コントローラーを見つけることができます...

たぶん、誰もが理解した上で私を助けることができるこのUSB Enpoint =>ホストコントローラ=>割り込み---メカニズム。

ありがとうございました!

答えて

0

どこでこのバッファを見つけることができますか?私はマザーボードのテクニカルマニュアル(USB ...コントローラ...バッファ)でそれを見つけるのは非常に難しかったが、このレジスタを見つけることができませんでした。

このバッファは、URB形式のHIDクラスドライバから提供されます。ソフトウェアバッファです。

したがって、HostControllerは、デバイスからのEndpoint INデータを格納するために独自のバッファを使用していますか、それとも他のレジスタにマッピングしていますか?

前述したように、データを格納するレジスタはホストコントローラにありません。ホストコントローラは、HCDによって渡されたソフトウェアバッファを使用します。

アクション(マウスの動きやクリックなど)がある場合、USBホストコントローラは割り込みを引き起こしますか?このストアド/バッファリングされたデータはどこにありますか?

いいえ割り込みはありません。 Interruptエンドポイントをポーリングして状態を取得します。あなたのケースでは、割り込みは、ホストコントローラが割り込みIN転送である転送の完了を通知するために使用されます。

転送ディスクリプタの下の図を参照してください。ホストコントローラは、それぞれINおよびOUTトランザクションの場合に「バッファポインタ」を使用してデータを格納または検索します。 Transfer Descriptorの詳細については、EHCI仕様をお読みください。

enter image description here

+0

親愛なる@Shaibal。あなたの答えをありがとう。ホストコントローラはURBが完了すると割り込みを発生させますか?汎用割り込みコントローラに登録されていますか?コアに通知するため? pic "バッファポインタ"のソースは何ですか...私はUSB Specs.Youに記載されている転送記述子を見つけることができませんでしたこれのためのソースですか? – fetteotter

+0

はいホストコントローラは、転送完了、ポート変更イベント、ホスト内部エラーの3つの状況で割り込みを発生させます。割り込みは汎用割り込みコントローラに登録されます。インテルの "ehci specification"のドキュメントを参照してください。第3章データ構造図のセクション5とバッファの詳細。 :) – Shaibal

関連する問題