2013-07-12 11 views
11

いくつかのテストを自動化したいLinuxアプリケーションがあります。その状態は、特定のデバイス(USBデバイス、WLANデバイス、WANデバイス)の状態によって変わります。しかし、私たちは物理的なUSB、WLAN、WANなどのデバイスを用意していないので、実際に物理デバイスを差し込んでオン/オフすることなく、このプログラムをテストする方法を理解する必要があります。物理的なUSBデバイスをエミュレートするLinux

私はユーザー空間から制御できる仮想USBデバイスを作成することから始めますが、これらのフォーラムで同様のトピックを取って自分のプロジェクトに適用することができないという基本的な知識が不足しています。私は、ある種の仮想USBドライバを作成してから、usbfsではなくユーザレベルのプログラムと通信させる必要があるように感じます。しかし、この仮想ドライバを作成しても、このデバイスをユーザスペースから「プラグイン」して、この特定のドライバに登録されたプログラムを取得するにはどうすればよいですか?私がしようとしていることは可能なのでしょうか?

答えて

0

VMWareを使用して仮想環境でアプリケーションをテストできますか?次に、ホストマシン上の仮想デバイスをゲストVMに「プラグイン」して、アプリケーションをそのようにテストすることができます。

+0

残念ながら私はコードにアクセスできません。カーネルモジュールを追加してテストアプリケーションを実行するだけです。テストはリモートサーバー上で実行されます –

8

Linuxガジェットドライバとハードウェアを使用してUSBデバイスにすることをお勧めします。ガジェットドライバでは、コンピュータをあらゆる種類のデバイスと「ふりをする」ことができます。テスト中のシステムには、ガジェットボックスへのUSB OTGケーブルが1つあります。あなたのガジェットボックスが適切なハードウェアを持っている場合は、ケーブルのプラグを抜く必要はありません。 「ガジェットボックス」は、Linuxを実行しているデスクトップ/ラップトップ(USB OTGをサポートしている場合)、またはAndroidの電話機やラズベリーパイなどです。 (。。ケーブルフィットは、それがUSB OTG用に正しく配線さだという意味ではありませんという理由だけでケーブルが吸うそのUSBを注意してください)

あなたは右のUSB OTGハードウェアを持っていたら、ガジェットのボックスは、すべてのソフトウェアである:

1)テスト対象のデバイスがOTGをサポートしている場合は、ガジェットボックスがUSBホストにならないようにしてください。 (テスト対象のデバイスがUSBクライアントになります)。 usb_storageなどが自動的に読み込まれないようにしてください。

2)デフォルトでは、カーネルはUSBハブ、USBイーサネット、USBシリアルポート、USBスティック用のガジェットをサポートしています。適切なモジュールをガジェットボックスにロードするだけで、「うまくいく」ことができます。たとえば、USBスティックを作成するには、「insmod g_file_storage.ko file=/dev/ram0」のような操作を行います。あなたはUSBスティックを差し込んだと思うでしょう。シリアルデバイスの場合

、ガジェットでは、/ dev/USBx」とテスト対象デバイスへの会談で「受話器を取る」というユーザ空間のコードを実行することができます。(おそらく4Gモデムまたは何をエミュレートする。)

製造元がUSBを理解するのが面倒すぎるため、たくさんのデバイスが実際には「USBシリアル」になっています。

3)少しの再コンパイルや設定では、さまざまなUSBのふりをする一般的なガジェットデバイスこれらのデバイスの一般的なバージョンでテストしています。

"実際のハードウェアに対するテスト"と同じではありません。

4)カーネルにまだないデバイスタイプ(WiFiなど)については、あなた自身である。十分な血液の汗と涙で、あなたは自分のガジェットタイプを書くことができます。 (理想的には、できるだけユーザー空間に保管し、カーネルのパフォーマンス上重要な部分のみを処理してください。)

注意:USBを同時に理解することは不可能です。

+1

これはテストシステムへの物理的なアクセスがあれば完璧です。残念ながら、私はしません。しかし、Linuxガジェットドライバは便利です...私は初期化時に、Linuxガジェットソースにあるデバイス、設定、インターフェース記述子を反映する仮想USBデバイスを自動的に登録するUSB​​ドライバを作成する予定です。これは動作しますか? –

+0

は、カーネルモジュールの名前が 'usb_f_mass_storage.ko'に変更されたようです。 [link](https://github.com/torvalds/linux/blob/master/Documentation/usb/gadget-testing.txt)を参照してください。 – netvope

関連する問題