USB規格:デバイス管理の4レイヤ

USBシステムは3つのレイヤ(Phisical層、Link層、Protocol層)からなり、規格書では詳細に解説されています。しかしUSB機器やその周辺アプリのSW開発者はこれらレイヤの細かい内容の知識は求められません。ここではUSBシステムを開発するSW担当者に求められるUSB規格について説明します。
SW開発では、Protocol層内の以下4つの管理レイヤを理解する必要があります。これらレイヤは、デバイス側(ファームウェア)と、ホスト側(デバイスドライバ)の通信方法を定義します。この構造はUSBディスクリプタに記述されます。

| レイヤ | 概要 |
|---|---|
| Device | USB Device全体を示す、1つしか持てない |
| Configuration | 一連の動作の集まり、Device内に1つ以上持つ、複数のConfigurationは同時動作できない |
| Interface | ホストSW(デバイスドライバ)が通信を行う機能の単位、Configuration内に1つ以上持つ、複数のInterfaceを持つデバイスをマルチファンクションデバイスと呼ぶ |
| Endpoint | SWが取り扱う通信路、Endpoint0のみ各Interfaceで共有される |
身近な構成例
最近は見かけなくなりましたが … 初めてUSBデバイスを挿すと光ドライブとして起動してインストーラを自動再生させ、インストール後はそのUSBデバイス本来の機能で動作させるUSB機器がありました。これは、光ドライブとその他USBデバイスのマルチコンフィギュレーションデバイスとして構成されていました。
マイク付きWebカメラは、マイク(UAC : USB Audio Class)とカメラ(UVC : USB Video Class)のマルチインターフェースデバイス(マルチファンクションデバイスと呼びます)として構成されています。なお、UVCは単独でマルチインターフェース構造を取ると定義されています。詳しくはUVCの記事を参照してください。
デバイスクラス
WebカメラはUVC、USBメモリはMSC(Mass Storage Class)といったように、定番のUSBデバイスではデバイスクラスと呼ばれる規格が定められています。デバイスクラスではここで述べた4つのレイヤが厳格に定義されています。デバイスクラスを理解する上で、ここで述べられた4つのレイヤは重要です。


