USB 3.0 ホストドライバ自作入門
- ¥ 660
本書は自作 OS 向けの USB 3.0 ホストドライバの作り方を説明しています。最終的には USB キーボードからの入力を受け付けられるようになります。 関連する仕様書と合わせて本書を一緒に読むことで、最短で USB ホストドライバを作ることを目指します。 現代の x86_64 アーキテクチャのコンピュータには USB 3.0 ホストコントローラとして xHCI 準拠のコントローラが搭載されています。 xHCI は Intel が作ったホストコントローラ規格であり、xHCI に対応できれば USB 1.1、USB 2.0、USB 3.0 のデバイスを扱えるようになります。 本書はホストコントローラを PCI バス上で検索するやり方から始まり、ホストコントローラの初期化、USB デバイスの認識、USB キーボード用クラスドライバの作り方を解説します。 PCI における割り込み(MSI)の説明もしています。複数の関連する仕様にまたがって一気通貫で説明しているのが特徴です。
目次
- 第 1 章はじめに - 第 2 章PCI バス - PCI コンフィグレーション空間 - BAR - PCI の割り込み - MSI - Local APIC ID - 割り込みベクタ - 第 3 章xHCI ドライバの重要な概念 - 3 種のリングバッファ - リングバッファ終端の認識 - TRB の基本とその種類 - ドアベルレジスタ - ポート,スロット,デバイスコンテキスト - エンドポイント - 第 4 章ホストコントローラの初期化 - レジスタの種類 - コントローラのリセット - デバイスコンテキストの設定 - Command Ring の生成と登録 - Event Ring の生成と登録 - 割り込み設定 - コントローラの開始 - 第 5 章デバイス検出と初期化 - ポートの状態遷移 - デバイス接続とポート初期化 - スロット割り当て - デバイスへのアドレス割り当て - コラム:ルート文字列 - コントロール転送とデバイスディスクリプタの取得 - コンフィグレーションとインターフェース - コンフィグレーションディスクリプタの取得 - 第 6 章クラスドライバ - HID クラス - HID のエンドポイント - コラム:Interrupt エンドポイント - エンドポイントの有効化 - キーボードからの入力 - モディファイアキー - キーコードとASCII 文字コード