Solaris 8 のシステム管理 (追補)

USB バスの説明

USB 仕様は、ライセンス料無しで誰でも入手できます。USB 仕様は、バスとコネクタの電気的および機械的なインタフェースを定義します。

図 18–1 USB 物理デバイスの階層

Graphic

USB が採用するトポロジでは、ハブが USB デバイスに接続点を提供します。ホストコントローラには、システム内のすべての USB ポートの原点となるルートハブが含まれます。ハブについての詳細は、USB ホストコントローラとルートハブを参照してください。

上記の例では、1 つのシステムが 3 つのアクティブな USB ポートを持っています。1 番目の USB ポートは Zip ドライブに接続されています。この Zip ドライブにはハブが埋め込まれていないため、他のデバイスは接続できません。2 番目の USB ポートはハブに接続されており、このハブには Jaz ドライブと合成デバイス (キーボードとマウス) が接続されています。このキーボードにはハブが埋め込まれており、そのハブにマウスが接続されています。

次の表に、上記の例におけるデバイスのデバイスツリーパス名を示します。

Zip ドライブ 

/pci@1f,4000/usb@5/storage@1

キーボード 

/pci@1f,4000/usb@5/hub@2/keyboard@1

マウス 

/pci@1f,4000/usb@5/hub@2/mouse@2

Jaz ドライブ 

/pci@1f,4000/usb@5/hub@2/storage@3

プリンタ 

/pci@1f,4000/usb@5/hub@3/printer@1

USB デバイスとドライバ

USB デバイスはいくつかのデバイスクラスに分類されます。各デバイスクラスは対応するドライバを持っています。1 つのクラス内のデバイスは同じデバイスドライバで管理されます。しかし USB 仕様では、特定のクラスに属さない、ベンダー固有のデバイスも許可しています。同じような属性とサービスを持つデバイスはグループ化されます。

Human Interface Device (HID) クラスには、ユーザーが制御するデバイス (キーボード、マウス、ジョイスティックなど) が含まれます。Communication Device クラスには、電話に接続するデバイス (モデムや ISDN インタフェースなど) が含まれます。その他にも、Audio、Monitor、Printer、Storage Device などのデバイスクラスがあります。各 USB デバイスはデバイスのクラスを表す記述子を持っています。デバイスクラスは、そのメンバーが構成とデータ転送に関してどのように動作するべきかを指定します。クラス情報についての詳細は、http://www.usb.org サイトを参照してください。

Solaris USB Architecture (USBA)

USB デバイスは 2 つのレベルのデバイスツリーノードとして表現されます。1 つのデバイスノードが USB デバイス全体を表し、1 つまたは複数の子インタフェースノードがデバイス上にある個々の USB インタフェースを表します。特殊なケースとして、デバイスノードとインタフェースノードが 1 つのノードに結合される場合もあります。

ドライバのバインドは互換性のある名前属性の使用によって実現されます。詳細は、『IEEE 1275 USB binding』の 3.2.2.1 項と『Writing Device Drivers』を参照してください。ドライバは、デバイス全体にバインドしてすべてのインタフェースを制御することも、1 つのインタフェース (キーボードやマウスなど) だけにバインドすることも可能です。デバイス全体にバインドするドライバがベンダーにもクラスにも存在しない場合、汎用 USB マルチインタフェースドライバがデバイスレベルのノードにバインドされます。このドライバは、互換性のある名前属性 (『IEEE 1275 USB binding』の 3.2.2.1 項で定義されている) を使用して、各インタフェースにドライバをバインドしようとします。

図 18–1 には、複合デバイス (ハブとプリンタ) の例が示されています。ハブとプリンタは両方とも同じプラスチック製のケースに入っていますが、異なる USB バスアドレスを持ちます。また、図 18–1 には、合成デバイスの例も示されています。キーボードとコントローラは同じプラスチック製のケースに入っていますが、同じ USB バスアドレスを持ちます。この例では、1 本のケーブルが USB マウスを合成デバイス (キーボードとコントローラ) に接続しています。

Solaris USB Architecture (USBA) は、USB 1.0 および 1.1 の仕様に加え、Solaris ドライバ条件に準拠しています。USBA モデルは Sun Common SCSI Architecture (SCSA) に似ています。USBA とは、汎用 USB トランスポート層という概念をクライアントドライバに提供する薄い層のことです。

SCSA と USBA の違いは、SCSA がバスを検査するときに .conf ファイルを使用するのに対して、USB ハブドライバは自己検査 nexus ドライバであることです。