USBデバイス用のドライバーを作成しています。 パイプ0:USBとは?

そのため、Windows用のUSBディスプレイのドライバーをゼロから作成する必要がありました。 機会がある-私はそのような面白いプロセスの詳細についてお話します。

画像



USBは簡単です

ドライバーの作成はアプリケーションプログラミングと比較して非常に難しいと考えられていますが、この低レベルの世界ではプログラマーは注意を奪われませんでした。ドライバーの作成を簡素化する大きなステップは、USBバスの開発でした。

それでは、なぜusbバスはそんなに便利なのでしょうか?また、Universalという言葉は略語の中で何を隠していますか?



以前は、プログラマがデバイスと通信するためにドライバーを書くことを余儀なくされたとき-彼はバスレベルで、大まかに言って直接働きました-デバイスが9線ケーブルで接続されていた場合、 通常、そのうちの2つは電源に流用されます。プログラマは、最大7本のワイヤを手動で制御する必要がありました。 各デバイスには、提供されたポートの使用方法に関する独自のアイデアがありました。 たとえば、1つのデバイスがワイヤー1、2、5を介してコンピューターにデータを転送でき、制御に3と7を使用し、4と6を使用してデバイスにデータを書き込み、別のデバイスは両方向と5のデータ転送に2つのワイヤーを使用できます制御信号用。



これはすべて、デバイスの反応または準備が整うまで待機しなければなりませんでした。 デバイスが複数の種類のアクティビティを実行した場合、現在作業している機能を把握し、それに基づいて作業方法を変更する必要がありました。 このような状況では、デバッグが難しく、プログラマーは各デバイスのこのポートで通信プロトコルを学習する必要がありました。 このすべてを無期限に続けることはできず、USBバスが発明されました。



タイヤ構造

最新のオペレーティングシステムでusbデバイスを操作するときに最初に確認できることは、データポートを物理的に操作する必要がなくなったことです。 だから-最初の近似で任意のUSBデバイスが何であるか見てみましょう:



画像

防衛の最前線では、インターフェイスレベルが待ち受けています。これは、タスクに応じてデバイスを論理的に分離したものです。たとえば、追加の音声通知システムを備えた外部ディスプレイがある場合、デバイスには、ディスプレイを操作するためのインターフェイス、音で動作し、例えば、3番目-デバイス自体をフラッシュするために。

最新のドライバーフレームワーク(WDF)を使用してWindows用のドライバーを作成することを検討する場合、インターフェイスの数を確認し、数行のコードを使用してそれらにアクセスできます。

USBに存在する分離レベルはインターフェースだけではなく、各インターフェースはいわゆるエンドポイントのセットに分割されます。



ディスプレイに画像を記録し、ディスプレイから現在の画像を読み取ることができるとします。この場合、一方のエンドポイントが読み取りに使用され、もう一方のエンドポイントが記録に使用されます。 データ転送の方向(In / Out)に加えて、エンドポイントには別のかなり有用なプロパティがあります。これは、次のいずれかの値を持つ転送のタイプです。



•制御転送-ホストが接続中にデバイスを構成し、動作中にデバイスを制御してステータス情報を取得するために使用されます。 このプロトコルは、そのようなパッケージの配信を保証します。

•バルクデータ転送-ホストから機能へ、または機能からホストへのデータの配信を保証する必要があるが、配信時間に制限がない場合に使用されます。

•割り込み送信-単一の小さなデータパケットを送信する必要がある場合に使用します。 各パケットは限られた時間で送信する必要があります。 送信操作は自発的なものであり、デバイスが必要とするよりも遅くは行わないでください。

•アイソクロナス伝送-リアルタイムのデータ交換に使用されます。各時間間隔で厳密に定義された量のデータを送信する必要がありますが、情報は保証されません(障害の場合、データ送信は繰り返しなく実行され、パケット損失は許可されます)。



デバイスロジックによって直接定義されたエンドポイントに加えて、1つの(ゼロ)エンドポイントはプロトコルによって直接決定され、すべてのusbデバイスにはゼロのエンドポイントが必要です。 これは、デバイスをコンピューターに接続するとすぐに、オペレーティングシステムがこのデバイスの名前をすぐに認識し、この標準エンドポイントなしではそのデバイスのドライバーを見つけようとするためです。ドライバーがない場合にデバイスに関する情報を取得することは不可能です。



画像

おわりに

すべてのデータはusbケーブル内の2本の導体を介して送信されます(別の2本が電力用に使用されます)。これにより、すべてのusbデバイスに単一のコネクタを使用できます。

最初のドライバーを作成するためにバスについて知っておく必要があるのはこれだけです。これは次の記事で行います。

オペレーティングシステムWindows XP、Vista、7用のドライバー開発キット-リンクからダウンロードできます: 開発者キット。



次の部分では、デバイスに関連するイベントの処理、アプリケーションからのバックライトの操作、および少しのリバースエンジニアリング。



将来の患者の写真:

画像







All Articles