uchan note

プログラミングや電子工作の話題を書きます

【技術書典4】USB 3.0 ホストドライバ自作入門を出します(ダウンロード頒布有)

大人気の技術書オンリーの同人誌即売会技術書典 4」が、2018/04/22(日)に秋葉原 UDX で開かれます。

今回は「USB 3.0 ホストドライバ自作入門」を出しますので、そのお知らせです。

頒布情報

  • 日時 2018 年 4 月 22 日(日)
  • 場所 秋葉原 UDX アキバ・スクエア
  • ブース け 51「windhole」 windhole のサークルページ
  • 書名 USB 3.0 ホストドライバ自作入門
    • windhole ブースでは他にも Linux や自作 OS 系の低レイヤな同人誌を頒布しています。
  • ページ数 52(表紙含む)

f:id:uchan_nos:20180414175839j:plain:w150

概要

本書は自作 OS 向けの USB 3.0 ホストドライバの作り方を説明しています。最終的には USB キーボードからの入力を受け付けられるようになります。 関連する仕様書と合わせて本書を一緒に読むことで、最短で USB ホストドライバを作ることを目指します。

現代の x86_64 アーキテクチャのコンピュータには USB 3.0 ホストコントローラとして xHCI 準拠のコントローラが搭載されています。 xHCIIntel が作ったホストコントローラ規格であり、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 文字コード

チラ見

中身を数ページだけ公開します。 ブースに立ち寄るかどうかの参考になれば幸いです。

f:id:uchan_nos:20180414182509p:plain:w150f:id:uchan_nos:20180414182545p:plain:w150f:id:uchan_nos:20180414182626p:plain:w150

ダウンロード頒布

同人誌即売会の雰囲気を大事にしたいので、当日ブースまで来ていただけると嬉しいです。しかし、何らかの理由により来られない方のために、ダウンロードによる頒布を行っています。

ダウンロード頒布は https://uchan.booth.pm/ で行っています。(過去作もあります)

ブース紹介

け 51 では本書の他に低レイヤな本が並びます。それらを簡単にご紹介。

武内さんの同人誌

武内さん(@satoru_takeuchi)は Linux カーネルエンジニアであり、サイボウズ株式会社の技術顧問です。

筆者(@uchan_nos)の同人誌

  • USB 3.0 ホストドライバ自作入門
    • 本ページで解説。ここまで具体的な値を載せてある本も珍しい、と思います。
  • システムプログラミングハンドブック
    • 「30 日でできる!OS 自作入門」を読んだ人が、一歩進んだ機能を OS に追加したいときに役立つ資料集。
  • Linux カーネルモジュール自作入門
    • ハローワールドはもちろん、kprobes を使って実用的なカーネルモジュールを作ります。

どの本も読みごたえがあると思います。是非お立ち寄りください。