前のページ 次のページ 目次

1. Universal Serial Bus

USB は 1994 年に Compaq, Intel, Microsoft, NEC により開発がスタートした. その仕様(version 1)は 1996 年 1 月に最初にリリースされ, 最新のオフィシャル version 1.1 は 1998 年 9 月にリリースされた. ドキュメントはまだ作成中であり, 1999 年に version 2.0 がアナウンスされた. より詳細な情報や仕様書は, USB Implementers Forum を参照のこと. USB はひとつのホストによりコントロールされる厳格な階層構造をもつ. ホストは 装着された USB デバイスとコミュニケーションするために master/slave プロトコルを用いる. この意味は, あらゆる種類のコミュニケーションは, ホストにより開始され, デバイス同士はいかなるダイレクトな接続の確立もできないということである. master/slave プロトコルは, 暗黙のうちに分散バスの arbitration や collision 回避のような問題を解決する. 現在の USB の実装では, 同時に 127 のデバイスの接続が許されており, コミュニケーション・バンド幅は最大 12Mbit/s である.

1.1 Host Controllers

今日 USB の Host Controller は, ほとんどのマザーボードのチップセット上に組み込まれている. これら全てのコントローラは Open Host Controller Interface(OHCI) または Universal Host Controller Interface(UHCI)の いずれかと互換である. 両タイプのコントローラも互換性をもっており, USB デバイスは Host Controller について気にする必要はない.

1.2 USB Devices and Transfer Characteristics

異なった目的に使用するため異なったタイプの USB デバイスが存在する. 最大転送速度でさえも特殊な USB デバイスでは異なることが可能である. USB 規格は, Full speed デバイスと Low speed デバイスを決めている. マウスやキーボード, ジョイスティックのような Low speed デバイスは 1.5Mbit/s でコミュニケートする. オーディオやビデオのような Full speed デバイスは 12Mbit/sの90%(プロトコルのオーバヘッドを 含めて約10Mbit/s)まで使用可能である.

1.2.1 Hubs

コンピュータの後部パネルには物理的に, 2 つか 4 つの USB ポートが存在する. これらのポートはハブか普通のデバイスを取り付けるのに使用する. ハブは他の USB デバイスを接続するためにポート(2 - 8)の数を拡張する USB デバイスである. 接続できるデバイスの最大の数はバスの上のハブの数に よって減少させられる. ハブはセルフもしくはバスから(それとも両方)の電力 供給型の Full speed デバイスである. 通常, ホストコントローラの物理的なポートは仮想ルートハブにより扱われる. このハブはホストコントローラのデバイスドライバによってシミュレートされて, バストポロジーの統一を助ける. したがって, あらゆるポートは USB サブシステム のハブドライバにより同様な方法で取扱いが可能である. (図1を参照).

1.2.2 Data Flow Types

USB 上でのコミニュ二ケーションは, 3 つの異なる転送のタイプと 2 つの 方向により行なわれる. ホストからデバイスへのデータは downstream あるいは OUT 転送という. 逆の方向は upstream あるいは IN 転送という.

1.3 Enumeration and Device Descriptors

いつ USB デバイスをバスに取り付けようとも, それは USB サブシステム によりエニュメレーション(各接続デバイスのデバイスドライバに対して識別, コンフィギュレーション及びバインドを行なう進捗中の手順)される. すなわち, ユニークなデバイス番号(1-127) がアサインされ, そしてデバイス・ディスクリプタが読み込まれまれる. ディスクリプタとは装置とそのプロパティの情報を含んだ データ構造体である. USB 規格はディスクリプタのヒエラルキーを定義して いる(図 2 参照).

1.3.1 Standard Descripters

1.3.2 Device Classes

標準デバイスとインタフェース・ディスクリプタは分類(クラス, サブクラス, プロトコル)に関連するフィールドを含んでいる. これらのフィールドはホストシステムにより デバイスまたはインタフェイスをドライバに関連づけするのに使用される. そしてそれは, クラス仕様でどのように指定されるかに依存する. デバイスとインタフェースディ・スクリプタのクラスフィールドの有効な値は, USB Device Workig Group によって定義される(図1を参照). クラスに中にある一緒にグルーピングされたデバイスまたはインタフェイスそして クラス仕様における特性の指定は, そのクラスに基づく多重実装を管理できるホストソフトウェアの開発を認める. そのようなホストソフトウェアは, デバイスによって提示される記述的な情報を用いて その操作を特定なデバイスかインタフェイスに適合させる. クラス仕様はクラスのメンバとして自分自身を認識する すべてのデバイスまたはインタフェイスの最小の操作を定義するフレームワークを 提供する.

1.3.3 Human Interface Devices(HID)

HID クラス は主としてコンピュータシステムの操作を制御するため人間によって使用されるデバイスから成る. HID クラスデバイスの典型的な例は -

1.4 USB Device Drivers

USB デバイスのデバイスドライバを見つけると, いくつかのおもしろい状況が提示される. いくつかの場合, 全体の USB デバイスはただひとつのデバイスドライバによって扱われる. 他の場合では, 装置の各インタフェースは別々のデバイスドライバを持っている.
前のページ 次のページ 目次