本書は自作 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 バス
- 第3章 xHCI ドライバの重要な概念
-
2.1 PCI コンフィグレーション空間
-
2.2 BAR
-
2.3 PCI の割り込み
-
2.4 MSI
-
2.5 Local APIC ID
-
2.6 割り込みベクタ
-
3.1 3 種のリングバッファ
-
3.2 リングバッファ終端の認識
-
3.3 TRB の基本とその種類
-
3.4 ドアベルレジスタ
-
3.5 ポート,スロット,デバイスコンテキスト
-
3.6 エンドポイント
-
4.1 レジスタの種類
-
4.2 コントローラのリセット
-
4.3 デバイスコンテキストの設定
-
4.4 Command Ring の生成と登録
-
4.5 Event Ring の生成と登録
-
4.6 割り込み設定
-
4.7 コントローラの開始
-
6.1 HID クラス
-
6.2 HID のエンドポイント
-
6.3 エンドポイントの有効化
-
6.4 キーボードからの入力
-
6.5 モディファイアキー
-
6.6 キーコードと ASCII 文字コード
★★★★★
★★★★★
3.0
渚紗
2022年9月22日
マニアックな情報なので、知識をつけるにはちょうど良いと思います。
何度か読んで理解したくなりました。