LoginSignup
10
6

More than 3 years have passed since last update.

USB XHCIについて

Last updated at Posted at 2019-05-11

USB XHCIについてのメモ

USB XHCIについて

  • XHCIではデータ転送はハードウェアが主に実現する
  • XHCIではTRB(Transfer Ring Block)という16バイトの制御構造体を用いてデータ転送などを実現する
  • TRBは、TRB Ringというリング配列のデータ構造により、メインメモリ領域を介してコントローラドライバとホストコントローラでデータのやり取りを行う
  • TRB Ringは次の3つ
    • Transfer TRB
      • USBデバイスとのデータ転送に使用される
      • コントローラドライバによりパイプごとに作成される
      • ホストコントローラが順次取り出して実際の転送を実行する
    • Command TRB
      • USBデバイスの認識プロセスにおけるコマンドの発行やステート遷移に使用される
      • システムに一つだけ存在する
      • ホストコントローラが順次取り出して実行する
    • Event TRB
      • ホストコントローラで発生したイベントをコントローラドライバに通知するために使用される
      • 転送処理、コマンド処理の完了やポートの状態変化の通知など、ハードウェアの状態変化をUSBソフトウェアに伝えるために存在する
      • システムに1つだけ存在する

TRB_Ring.png

データ転送

  • 基本は以下の手順
  • コントローラドライバが送信したいTransfer TRBまたはCommand TRBをTransfer RingまたはCommand Ringについかする
  • コントローラドライバがDoorbell Arrayレジスタに転送したいエンドポイントを設定することで転送開始
  • ホストコントローラがTRBを受信してUSB転送処理を開始する
  • ホストコントローラは処理が完了したことのEvent TRBをEvent Ringに追加
  • ホストコントローラは割り込みを発生させてコントローラドライバに処理が完了したことを通知する
  • Event TRBを取得する

xhciにおけるステート遷移

デバイス認識シーケンス

  1. xHCにデバイスが接続される
  2. PORTSCレジスタのCCSビットとCSCビットが1にセットされる
  3. PORTSCレジスタの変化とともに、XHCIはPort Status Change Event TRBを生成し、Event Ringに追加。その後割り込みがあがり、コントローラドライバに通知される。
  4. ドライバはデバイスのために、Event Slot Command TRBを発行し、Device Slotをアサインする。ドライバはCommand Completion Event TRBを受け取り、Device SlotのSlot IDを入手できる。
  5. ドライバはDevice Slot管理用のDevice Contextの確保と初期化を行う
  6. ドライバはAdress Device Command TRB用のInput Contextの確保と初期化を行う。(Enable State)
  7. ドライバはAddress Device Command TRBを発行し、デバイス・アドレスの割り当てを行う。この時、バス上では、SET_ADDRESSのControl転送がxHCにより自動実行される。この転送が成功すると、(Block Set Address Request(BSR)が0の時)Enable StateからAddressed Stateに遷移する。(Addressed State)
  8. ドライバはGET_DESCRIPTORコントロール転送を発行し、USBデバイスのディスクリプタ情報を取得する
  9. ドライバはConfigure Endpoint Command TRBを発行し、デバイスステートをConfigured Stateへ移行し、認識シーケンスが完了する。(Configured State)

※この時、Deconfigure(DC)フラグを1にしてConfigure Endpoint Commandが発行されると、Addressed stateに戻る

XHCI_State.png

10
6
0

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
10
6