USB通信方式について
USBについて
時間的な制約のない大量のデータを正確に伝えるのに適した転送方式
データーに誤りがあった場合やFIFOに空きがない場合再送される。
インタラプト転送は、少量のデーターの転送に用いられる転送方式。
キーボードやマウスなどの入力データーの転送などに用いられる。
「インタラプト」と言ってもターゲット側から自発的に転送が行われるわけではない。
一定の周期でホスト側からポーリングすることによってデーターの転送が行われる。
https://gyazo.com/5b2c80b1b058b82730e94685ee83212b
USBの構成:
ホストの中では、各デバイス(ノードとハブ両方を含む)を、オブジェクトとして扱っている。
オブジェクトとなる各デバイスは、「クラスの概念」を持っている。
それぞれに「デバイスクラス」を持っている。
基本のデバイスクラスはひとつ
いろいろな種類のデバイスはその基本のデバイスクラスの派生クラスとなっている。
オブジェクト指向の概念を使っているため、見かけ上、ホストからデバイスへのアクセスはオブジェクトへのアクセスという形となる。
「メッセージ」のやり取りでデータの送受が実行される。
具体例: get・・・( ) と set・・・( ) コマンドだけでデータの送受を行う
メッセージの処理を実行する「メソッド」の部分がデバイスの中のファームウェアの処理で実現される
デバイス側はメッセージに対応したメソッド部分だけを実装すれば、全体の制御はホストが実行
これにより、デバイスは簡単な構成で処理を実現することが可能となる。
USBデバイスクラス:
USB通信を実現するためには、ホストSW(ドライバ)とデバイスSW(ファームウェア)が必要
ただし特定機能に関しては、ホストSWを開発する必要がない。
この特定機能をデバイスクラスと呼ぶ。
デバイスSWがデバイスクラスに対応すると、ホスト(パソコン等)に標準でインストールされているドライバが呼び出され、動作
CDCクラス:CDCクラス(Communication Device Class) USB上でデバイス間のデータのやりとりを行うための通信規格
パソコン側のアプリケーション・プログラムは、通信部をシリアルインタフェースで組めますので比較的容易に開発可能。
USB機器の典型的な機能や接続・制御仕様の標準を定めたUSBデバイスクラスの一つ
ストレージ(外部記憶装置)について定めた規格。
同規格に基づいて設計されたUSBストレージ装置を認識・制御することができる汎用のデバイスドライバ。
大容量記憶装置として分類されるUSBの機器タイプのこと。
正式には「USBマスストレージクラス(USB mass storage class)」
一般的には略して「USBストレージクラス(USB storage class)」
クラスは、本来はハードディスクなどを接続するために用意されている
最近ではこのUSBマスストレージクラスに対応したデジタルカメラなども広く普及している。
デジタルカメラをPCに接続すると、PC側からはちょうどリムーバブル・ディスクのように見えるので、通常のドラッグ&ドロップ操作で撮影したファイルを簡単にやり取りすることができる。
USBマスストレージクラスに対応していないデジタルカメラの場合は、カメラから取り出した記録メディア(スマートメディアやコンパクトフラッシュなど)をカード・リーダを使って読み書きしたり、専用のケーブルとソフトウェアを使ってアクセスしたりしなければならない。
エンドポイント:
通信端点のこと。
USB デバイス上のバッファ(FIFOバッファ)のこと。
エンドポイントの特徴
USBコントローラーにエンドポイントを複数持つことにより、ソフトウェアは複数の通信経路として認識することが可能となる。
エンドポイントごとに独立した通信を行うことが可能。
物理的な通信経路は固定のため、エンドポイントを複数使用すれば、その分だけ通信オーバーヘッドは増大
エンドポイントは、コントロールエンドポイントとデータエンドポイントに分類される。
ホスト側にも同様のバッファが用意されて、このバッファ同士が「パイプ」で接続されて、データを送受する。
https://gyazo.com/97c21cb3679360f18b416a292d671742
接続直後の動作
デバイスをUSBに接続した直後の状態は、コンフィギュレーション前の状態となる。
デフォルトパイプであるコントロール転送だけが通信のできる状態
これに対応するのが「エンドポイント0(FIFO0)」となる。
https://gyazo.com/152f1d4904b7e5d7060cd755dd715e85