USBデバイスクラス
USB通信を実現するためには、ホストソフトウェア(ドライバー)とデバイスソフトウェア(ファームウェア)が必要です。周辺機器の機能によってグループ分けされたデバイスクラスと呼ばれる仕様群が定義され、クラスに準拠した機器類は、クラスドライバーと呼ばれる共通のドライバーによって動作させることができます。デバイス側のファームウェアがそれらのクラスに対応していると、ホストにインストールされている標準クラスドライバーが呼び出され、動作できる仕組みになっています。
例えばUSB Audio Classデバイスクラスに対応するUSBスピーカーをホストに挿すと、ドライバーのインストール不要でUSBスピーカーが使用できます。USB規格による代表的なクラスを下記に示します。なお、Vendor Specificで定義されているベンダー定義独自機能を持つUSBデバイスを制御するためには、ホスト用のUSBドライバーも開発する必要があります。
USBエニュメレーション
USBはホットプラグによるプラグアンドプレイに対応しています。USBデバイスをホストに接続した際、ホストがそのデバイスが「何者か」を認識し、通信できる状態にするまでの一連の自動的なやりとりや手続きがUSBエニュメレーションです。
自動認識するために、全てのUSBデバイスにはデバイスディスクリプターのテーブルがあります。ディスクリプターには、デバイスの属性やドライバーをインストールする際に必要となる情報の全てが記述されています。USBプラグを接続すると、ホストは以下の手順でデバイスを認識し最適なドライバーをロードし、USBデバイスを使用できるようになります。
1. ホストはゲットディスクリプターデバイスをアドレス0に送出します。全ての
USBデバイスの接続直後のアドレスは“0”です。USBデバイスからの応答によって、
デバイスが送信可能なパケットサイズとサポートしているエンドポイント番号を
ホストが知ります。
2. ホストはセットアドレスリクエストを送り、デバイスにアドレスを割り付けます。
3. ホストはゲットディスクリプターリクエストを送って、デバイスの追加情報を
要求します。これにより、ホストはデバイスとの通信に必要な全ての情報を入手
します。
4. ホストはディスクリプターの情報を解析し、デバイスに合ったドライバーを選んで
ロードします。
上記のすべての手続きが完了すると、デバイスは「Configured(設定済み)」状態になり、使えるようになります。
USBの状態遷移
USBの状態は、接続直後のAttachedから始まり、エニュメレーションの間、Powered、Default、Address、Configuredの4つの状態を遷移します。各状態で状態変化が発生しなかった場合、Suspended状態に遷移します。各状態での動作は前述の説明の通りです。
1. Attached
USBデバイスがホストに接続された状態
2. Powered
USBデバイスがホストに接続され、デバイスにVbus電力を供給開始した状態
3. Default
バスリセットが行われ、通信ができるようになった状態
4. Address
USBデバイスにアドレスを割り当てた状態
5. Configured
USBデバイスのConfiguration(設定)が終了し、利用可能な状態
6. Suspended
バス上に3ms以上の状態変化がなかった場合に、電力を制限するモード
Copyright © Ryoyo Ryosan, Inc. All rights reserved.
記事ランキング