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

USB

USBシステムは3つのレイヤ(Phisical層、Link層、Protocol層)からなり、規格書では詳細に解説されています。しかしUSB機器やその周辺アプリのSW開発者はこれらレイヤの細かい内容の知識は求められません。ここではUSBシステムを開発するSW担当者に求められるUSB規格について説明します。

SW開発では、Protocol層内の以下4つの管理レイヤを理解する必要があります。これらレイヤは、デバイス側(ファームウェア)と、ホスト側(デバイスドライバ)の通信方法を定義します。この構造はUSBディスクリプタに記述されます。

SW 4 layer
レイヤ概要
DeviceUSB Device全体を示す、1つしか持てない
Configuration一連の動作の集まり、Device内に1つ以上持つ、複数のConfigurationは同時動作できない
InterfaceホストSW(デバイスドライバ)が通信を行う機能の単位、Configuration内に1つ以上持つ、複数のInterfaceを持つデバイスをマルチファンクションデバイスと呼ぶ
EndpointSWが取り扱う通信路、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つのレイヤは重要です。