2

USB ポート経由でビデオを読み込み、そのビデオにいくつかの変更 (圧縮など) を加えてから、できれば同じ USB ポート経由でホストに送り返す必要がある組み込み Linux プロジェクトがあります。また、ビデオ圧縮レベルなどを変更するコマンドをホストからデバイスに送信できれば、好ましい機能です。

ホストは、あるバージョンの Linux を実行するデスクトップであると想定できます。このビデオ処理を実際に実行するデバイスは、組み込み Linux を実行する Gumstix です。

このプロジェクトをどうやって始めようか、Linuxの入出力分割で何を研究しようか、基本的に迷っています。まず、ビデオの読み取り、ビデオの書き込み、およびコマンドの送信の両方を同じ USB ポートで行うことは可能でしょうか? ビデオは、特にデバイスによる圧縮後は比較的小さいため、帯域幅は問題になりません。主な問題は、このプロジェクトの研究をどこから開始するかを知ることです。ホストとデバイスの間で複数の接続を開いてデータを転送できる、USB 用の TCP/IP のようなものはありますか?

独自の USB デバイス ドライバを作成する必要がありますか? 独自のプロトコルを開発しますか、それとも USB は同じポートで複数のことを比較的簡単に行うことをサポートしますか?

Linux ドライバー、ユーザー レベルのプログラミングと API、または USB プロトコルの調査を開始する必要がありますか? それともまったく違うもの?

私はコンピューター エンジニアリングの上級生なので、経験レベルは C、C++、Java、Verilog、TCL などのプログラミングの混合です。ほとんどすべてのソケット関連のプログラミングは Java (OS に依存しない) で行われているので、よくわかりません。そのようなタスクを実行する Linux アプリケーションの作成を開始する場所。私はマイクロプロセッサ プログラミング (AVR、coldfire) についてかなりの経験を積んできましたが、必要なものに近いにもかかわらず、どこから始めればよいかを理解するのにあまり役に立ちません。

4

2 に答える 2

4

USB ポートには 2 種類あります。バスのコントローラーであり、PC やデバイス、または Linux で見られるホストは、ガジェットを話します (移動中に USB と呼ばれる接続でポートの種類を切り替えることができるスチル カメラで一般的に見られるバージョンがあります)。ホスト ポートは、(ハブ経由で) 複数のガジェット ポートに接続できます。ホストは、スレーブとして動作するガジェットを非常に制御できます。2 つのポート タイプのハードウェアは大きく異なり、多くの組み込みコアには各タイプのコントローラーの例が含まれています。Linux カーネルには、OHCI EHCI および UHCI ホスト コントローラー ハードウェア用のホスト ドライバーと、さまざまなプロトコル ドライバー (プリンター、キーボードなど) が含まれています。一部のデバイス タイプでは、USB 組織が標準プロトコルを実装しているため、

デバイスが PC ホストと通信するようにしたい場合は、デバイス/ガジェット インターフェイスを実装する必要があります。ケーブルの反対側のハードウェア設計にははるかに多くの種類がありますが、Linux カーネルがサポートする選択を見つける必要があります。より一般的なもの。

ガジェット ディレクトリには、さまざまなプロトコル ドライバも含まれています。多くの作業を節約できるトリックの 1 つは、デバイスが USB ネットワーク インターフェイスとして表示されるように構成することです。これにより、多くの低レベルのものを記述することを回避でき、ネットワーク診断ツールを利用でき、USB レイヤーは外部から抽象化されます。両端であなたのアプリケーション。これは、カスタム Windows ドライバーを作成する必要なく、Windows ホストでも機能します (XP は Microsoft RNDIS USB プロトコルのみをサポートし、Windows ドライバーはバグが多く、切断時にハングする可能性がありますが、カーネルには RNDIS ラッパーが含まれており、このソリューションをうまく機能させることができます。 )。

あなたの質問から、ビデオソースが独立した USB デバイスであったかどうかはわかりませんでした。その場合、デバイスに別の USB ホストポートが必要になるか、ホストから提供されたかどうか。

カーネル ソースのセルフ セットを取得し、USB ガジェット ディレクトリを調べ、USB.org から USB 仕様をダウンロードします。ホストがガジェットを検出するとどうなるかを説明しているので、第 8 章、第 9 章、第 10 章、および第 11 章を理解しておく必要があります。また、エンドポイントの概念についても説明します。 . Mindshare は、USB の簡単な紹介として OK の USB ブックを作成しました。

于 2010-10-26T07:37:18.853 に答える
1

必要なのは、Linux で「ガジェット」ドライバーと呼ばれるものです。これは、Linux を USB デバイスとして機能させるドライバーです。USB 複合フレームワークに関するこのLWN の記事は、出発点として適しています。

于 2010-10-06T10:30:13.503 に答える