デバイスのソフトウェア構成


【デバイスのフレームワーク】

デバイスをソフトウェア構成から見たときには、前述のように、「オブジェクト」として
扱われます。つまり、デバイスは、「デバイスオブジェクト」というクラスが代表となっ
ていて、基本の枠組みが決まっています。
このデバイス全体の枠組みは「デバイスフレームワーク」として定義されています。


(1) 基本のデバイスのフレームワーク
 最も基本的なデバイスクラスは下図のような、エンドポイントとインターフェース
とから構成されます。
この基本構成では、コンフィギュレーションとして構成が定義され、その中味は、
1個のインターフェースで定義される1つの要素機能だけとなります。
この要素機能の中には、いくつかのエンドポイントが含まれ、これがUSB通信の
対象として見えます。






(2) 複合デバイスのフレームワーク
 上記の基本構成に対し、下図はやや複雑な複合デバイスのフレームワークです。
このデバイスの場合にも、コンフィギュレーションとして構成が定義されますが、
その中味には、インターフェースが複数定義されていて、それぞれ独立の動作を
する機能ブロックとなることが出来ます。つまり、複数の要素機能を持った複合の
デバイスとして定義されていることになります。
例えば、キーボードとマウスの組み合わせの複合デバイスのような場合に、この
ような構成が使われます。
また、一つのハードウェアに対し、複数のインターフェースを持つことで、動的に
インターフェースを切り替えて異なった機能を持たせることも可能です。








【ソフトウェアの構成】

実際のデバイスに必要なソフトウェアは基本的に下記のような機能部分から構成
されます。






(1) 初期化プログラム
  文字通りデバイスの初期化、プログラムやデバイスの状態遷移の初期化を
 行います。

(2) メインプログラム
  デバイスの実際の機能を実現する部分で、常時はこのメインプログラムが
 動作していて、もともとのデバイスとしての動作を実行します。
 USB通信が必要なときだけ下記の割込みによりUSB通信動作が実行されます。
 その結果として必要となるUSBの送信、受信に関連する動作部分も含みます。

(3) USB割込み処理
  USB通信は高速な動作であることと、デバイスコントローラが大部分の処理を
 実行してくれるので、プログラムとしてはコントローラの動作結果を割込みで得て、
 その通信のコントロールを行います。
 また重要な働きとして、デバイスがホストのUSBバスに接続された時に実行される
 デバイスコンフィギュレーションの動作を実行します。これにより、ホストにデバイス
 の機能内容を通知して、ホストがデバイスを正しく認識して正常動作が出来るよう
 にします。

(4) ディスクリプタデータ
  コンフィギュレーションをするときに、デバイスを定義したデータで、これをホスト
 に渡すことでホストがデバイスを正しく認識することが可能となります。


 目次に戻る