Universal Serial Bus (USB) は PC 業界で開発された、周辺機器 (キーボード、マウス、プリンタなど) をシステムに接続するための低コストのソリューションです。
USB コネクタは 1 方向 1 種類のケーブルだけに適合するように設計されています。USB が設計された主な目的は、デバイスごとに異なる何種類ものコネクタを減らすことです。USB の設計により、システムの背面パネルの混雑を軽減できます。
デバイスは、外部 USB ハブ上の USB ポートか、コンピュータ本体に設置されたルートハブ上の USB ポートのいずれかに接続されます。ハブには複数のポートがあるため、1 つのハブからデバイスツリーの複数の枝が伸びることがあります。
次の表に、Solaris 環境でサポートされるUSB デバイスを示します。
USB デバイス |
USB デバイスがサポートされるシステム |
---|---|
オーディオデバイス上の HID コントロール |
SPARC および x86 システム |
ハブ |
SPARC および x86 システム |
キーボードとマウス |
SPARC および x86 システム |
大容量ストレージ |
SPARC および x86 システム サポートされる構成では、キーボードとマウスは 1 つずつしか含めることができない。これらのデバイスは、オンボードの USB ホストコントローラに接続する必要がある |
プリンタ |
SPARC および x86 システム |
スピーカおよびマイク |
SPARC および x86 システム |
USB シリアルコンバータ |
SPARC システム |
次の表に、Solaris 環境で使用される USB の略語について説明します。USB の構成要素と略語についての詳細は http://www.usb.org を参照してください。
略語 |
定義 |
---|---|
ugen |
USB 汎用ドライバ |
USB |
Universal Serial Bus |
USBA |
USB アーキテクチャ (Solaris) |
USBAI |
USBA クライアントドライバインタフェース (Solaris) |
HCD |
USB ホストコントロールドライバ |
EHCI |
拡張オープンコントローラインタフェース |
OHCI |
オープンホストコントローラインタフェース |
UHCI |
ユニバーサルホストコントローラインタフェース |
USB 仕様は、ライセンス料を払わずに入手することができます。USB 仕様は、バスとコネクタの電気的および機械的なインタフェースを定義します。
USB が採用するトポロジでは、ハブが USB デバイスに接続点を提供します。ホストコントローラには、システム内のすべての USB ポートの起点となるルートハブが含まれます。ハブの詳細については、USB ホストコントローラとルートハブを参照してください。
図 29–1 は、有効な USB ポートが 3 つ搭載されたシステムを示しています。1 番目の USB ポートは Zip ドライブに接続されています。2 番目の USB ポートは外部ハブに接続されており、このハブには CD-RW デバイスと、キーボードとマウスの複合デバイスが接続されています。このキーボードは「複合デバイス」であるため USB コントローラが組み込まれており、このコントローラによって、キーボードとキーボードに接続されたマウスの両方が制御されます。キーボードとマウスは、同じ USB コントローラによって制御されるため、同一の USB バスアドレスを共有します。
図 29–1 は、ハブとプリンタの「合成デバイス」の例も示しています。このハブは外部ハブで、プリンタと同じケースに入っています。プリンタはこのハブに固定接続されます。このハブとプリンタは、それぞれ異なる USB バスアドレスを持ちます。
次の表に、図 29–1 に示したデバイスの一部について、デバイスツリーパス名を示します。
Zip ドライブ |
/pci@1f,4000/usb@5/storage@1 |
キーボード |
/pci@1f,4000/usb@5/hub@2/device@1/keyboard@0 |
マウス |
/pci@1f,4000/usb@5/hub@2/device@1/mouse@1 |
CD-RW デバイス |
/pci@1f,4000/usb@5/hub@2/storage@3 |
プリンタ |
/pci@1f,4000/usb@5/hub@3/printer@1 |
属性とサービスが似ている USB デバイスは、いくつかのデバイスクラスに分類されます。デバイスクラスごとに 1 つのドライバが割り当てられます(フレームワークごとに 1 つ)。 1 つのクラス内のデバイスは、同じデバイスドライバの組み合わせで管理されます。ただし、USB 仕様では、特定のクラスに属さないベンダー固有のデバイスも許可しています。
Human Interface Device (HID) クラスには、ユーザーが制御するデバイス (キーボード、マウス、ジョイスティックなど) が含まれます。Communication Device クラスには、電話に接続するデバイス (モデムや ISDN インタフェースなど) が含まれます。その他にも、Audio Device、Monitor Device、Printer Device、Storage Device などのデバイスクラスがあります。各 USB デバイスはデバイスのクラスを表す記述子を持っています。デバイスクラスは、そのメンバーが構成とデータ転送についてどのように動作するかを指定します。クラス情報の詳細については、http://www.usb.org を参照してください。
USB デバイスは、2 つのレベルのデバイスツリーノードとして表現できます。デバイスノードは、USB デバイス全体を表します。1 つまたは複数の子インタフェース ノードはデバイス上にある個々のUSB インタフェースを表します。
ドライバのバインドは互換性のある名前属性の使用によって実現されます。詳細については、『IEEE 1275 USB binding (英語版)』の 3.2.2.1 項と『Writing Device Drivers (英語版)』を参照してください。ドライバは、デバイス全体にバインドしてすべてのインタフェースを制御することも、1 つのインタフェースだけにバインドすることも可能です。デバイス全体にバインドするドライバがベンダーにもクラスにも存在しない場合、汎用 USB マルチインタフェースドライバがデバイスレベルのノードにバインドされます。IEEE 1275 バインド仕様の 3.2.2.1 項で定義されているように、このドライバは互換名プロパティを使用して、各インタフェースに対してドライバのバインドを試みます。
Solaris USB アーキテクチャ(USBA) は、USB 1.1 および USB 2.0 の仕様に加え、Solaris ドライバ条件にも準拠しています。USBA モデルは Sun Common SCSI Architecture (SCSA) に似ています。USBA は、汎用 USB トランスポート層という概念をクライアントドライバに提供する薄い層で、汎用 USB の主要な機能を実装するサービスをクライアントドライバに提供します。