(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6483142
(24)【登録日】2019年2月22日
(45)【発行日】2019年3月13日
(54)【発明の名称】周辺機器デバイスのユニバーサルシリアルバスエミュレーション
(51)【国際特許分類】
G06F 13/38 20060101AFI20190304BHJP
G06F 13/10 20060101ALI20190304BHJP
【FI】
G06F13/38 320A
G06F13/10 320Z
【請求項の数】35
【全頁数】22
(21)【出願番号】特願2016-549428(P2016-549428)
(86)(22)【出願日】2015年3月13日
(65)【公表番号】特表2017-508202(P2017-508202A)
(43)【公表日】2017年3月23日
(86)【国際出願番号】US2015020463
(87)【国際公開番号】WO2015138912
(87)【国際公開日】20150917
【審査請求日】2016年10月31日
(31)【優先権主張番号】14/213,472
(32)【優先日】2014年3月14日
(33)【優先権主張国】US
(31)【優先権主張番号】14/213,620
(32)【優先日】2014年3月14日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】クリスティアン,ダニエル・エイ
(72)【発明者】
【氏名】ラムジー,ベアード・ジョナサン
【審査官】
田名網 忠雄
(56)【参考文献】
【文献】
米国特許第07383547(US,B1)
【文献】
特開2004−102716(JP,A)
【文献】
特開2001−245017(JP,A)
【文献】
米国特許出願公開第2008/0021693(US,A1)
【文献】
米国特許出願公開第2007/0299650(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10−13/14
G06F 13/20−13/42
(57)【特許請求の範囲】
【請求項1】
コンピュータシステムにおいて物理的な周辺機器デバイスをエミュレートするエミュレートユニバーサルシリアルバス(USB)ハードウェアデバイスであって、
構成記述子を格納するメモリと、
USB−シリアルインターフェイスチップと、
入力および出力デバイスを含む異なる種類のUSBデバイスのための複数のUSBプロファイルをサポートすることにより、複数の物理的なUSB周辺機器デバイスをエミュレートするようソフトウェアでプログラム可能である、USBサポートを有する1つ以上のマイクロコントローラと、を含み、
前記1つ以上のマイクロコントローラは、
エミュレートされる特定の物理的なUSB周辺機器デバイスと関係するデバイス識別子を含む特定の記述子を受け取ることによって、当該特定の記述子から特定される前記特定の物理的なUSB周辺機器デバイスのモデルのインスタンスをエミュレートする手段と、
テスト対象のコンピュータデバイスにUSBプロトコルによって応答する手段と、
第2のプロトコルを使用して、前記物理的なUSB周辺機器デバイスのUSBインタラクションをシミュレートするテスト実行コンピュータデバイスと通信する手段とを備える、エミュレートUSBハードウェアデバイス。
【請求項2】
前記1つ以上のマイクロコントローラはさらに、前記テスト実行コンピュータデバイスとインタラクションするデバイスエミュレーションアプリケーションを実行する手段を備え、前記デバイスエミュレーションアプリケーションは、前記マイクロコントローラ上に格納されるファームウェアを書換えることなく異なる物理的なUSB周辺機器デバイスをエミュレートするよう、前記エミュレートUSBハードウェアデバイスが前記テスト実行コンピュータデバイスによって再構成されることを可能にする、請求項1に記載のエミュレートUSBハードウェアデバイス。
【請求項3】
前記エミュレートUSBハードウェアデバイスのために付加的な機能を提供する、前記1つ以上のマイクロコントローラ上の1つ以上の入出力ポートをさらに含む、請求項1または2に記載のエミュレートUSBハードウェアデバイス。
【請求項4】
前記1つ以上の入出力ポートは、前記エミュレートUSBハードウェアデバイスへの電力を制御する、請求項3に記載のエミュレートUSBハードウェアデバイス。
【請求項5】
前記1つ以上の入出力ポートは非USB周辺機器デバイスのためのシリアルポートである、請求項3または4に記載のエミュレートUSBハードウェアデバイス。
【請求項6】
前記1つ以上の入出力ポートは、POSキャッシュドロアと通信するポイントオブセール(POS: Point of Sale)キャッシュドロアポートである、請求項3または4に記載のエミュレートUSBハードウェアデバイス。
【請求項7】
前記1つ以上の入出力ポートは、前記エミュレートUSBハードウェアデバイスに付加的な機能を追加することが可能である拡張カードに接続する、請求項3から6のいずれか1項に記載のエミュレートUSBハードウェアデバイス。
【請求項8】
前記1つ以上のマイクロコントローラはさらに、スイッチングデバイスの状態を規定する制御信号をセットするようソフトウェアコマンドを受け取り、前記テスト対象のコンピュータデバイスに前記特定の物理的なUSB周辺機器デバイスまたは前記エミュレートされたUSBハードウェアデバイスのいずれかを接続する手段を備える、請求項1から7のいずれか1項に記載のエミュレートUSBハードウェアデバイス。
【請求項9】
周辺機器デバイスインタラクションをテストするためのコンピュータシステムであって、
テストフレームワーク、デバイスエミュレーション、および、エミュレートUSBハードウェアデバイス通信ドライバを実行するように構成されるテスト実行コンピュータデバイスと、
テスト対象のコンピュータデバイスと、
入力および出力デバイスを含む異なる種類のUSBデバイスのための複数のUSBプロファイルをサポートすることによって複数の物理的なUSB周辺機器デバイスをエミュレートするようソフトウェアでプログラム可能であり、かつ、前記テスト対象のコンピュータデバイスとの第1の物理的なUSB周辺機器デバイスのUSBインタラクションをシミュレートする少なくとも1つのエミュレートユニバーサルシリアルバス(USB)ハードウェアデバイスと、
第2の物理的なUSB周辺機器デバイスをエミュレートし、かつ、前記テスト対象のコンピュータデバイスとの前記第2の物理的なUSB周辺機器デバイスのUSBインタラクションをシミュレートする付加的なエミュレートUSBハードウェアデバイスと、を備え、
前記テスト実行コンピュータデバイスは、
前記付加的なエミュレートUSBハードウェアデバイスと前記少なくとも1つのエミュレートUSBハードウェアデバイスとの間を協調させる手段を、備え、
前記協調させる手段は、前記少なくとも1つのエミュレートUSBハードウェアデバイスからのデータを入力すると、前記付加的なエミュレートUSBハードウェアデバイスからの当該データに対する応答の時間をはかる、または送信すべき当該応答を選択し、
前記少なくとも1つのエミュレートUSBハードウェアデバイスは、
エミュレートされる特定の物理的なUSB周辺機器デバイスと関係するデバイス識別子を含む特定の記述子を受け取ることによって、前記特定の物理的なUSB周辺機器デバイスをエミュレートする手段と、
テスト対象のコンピュータデバイスにUSBプロトコルによって応答する手段と、
第2のプロトコルを使用して、前記物理的なUSB周辺機器デバイスのUSBインタラクションをシミュレートする前記テスト実行コンピュータデバイスと通信する手段と、
を備える、コンピュータシステム。
【請求項10】
前記少なくとも1つのエミュレートUSBハードウェアデバイスはさらに、ファームウェアを書換えることなく第2の物理的なUSB周辺機器デバイスをエミュレートするよう特定の記述子のセットを受け取る手段を備える、請求項9に記載のコンピュータシステム。
【請求項11】
前記少なくとも1つのエミュレートUSBハードウェアデバイスはさらに、前記テスト実行コンピュータデバイスからのインタラクションを必要とすることなく、前記テスト対象のコンピュータデバイスから受け取られるあるメッセージに自動的に応答する手段を備える、請求項9または10に記載のコンピュータシステム。
【請求項12】
前記少なくとも1つのエミュレートUSBハードウェアデバイスはさらに、少なくとも1つの前記エミュレートUSBハードウェアデバイスのために付加的な機能を提供する1つ以上のマイクロコントローラ上の1つ以上の入出力ポートを有するように構成される、請求項9から11のいずれか1項に記載のコンピュータシステム。
【請求項13】
前記1つ以上の入出力ポートは、前記少なくとも1つのエミュレートUSBハードウェアデバイスへの電力を制御する、請求項12に記載のコンピュータシステム。
【請求項14】
前記1つ以上の入出力ポートは非USB周辺機器デバイスのためのシリアルポートである、請求項12または13に記載のコンピュータシステム。
【請求項15】
前記1つ以上の入出力ポートは、POSキャッシュドロアと通信するポイントオブセール(POS: Point of Sale)キャッシュドロアポートである、請求項12または13に記載のコンピュータシステム。
【請求項16】
前記1つ以上の入出力ポートは、前記少なくとも1つのエミュレートUSBハードウェアデバイスに付加的な機能を追加することが可能である拡張カードに接続する、請求項12から15のいずれか1項に記載のコンピュータシステム。
【請求項17】
前記テスト実行コンピュータデバイスの前記テストフレームワークは、プレテストデータキャプチャ、テストケース実行、ならびに、ポストテストデータキャプチャおよび検証を含む、請求項9から16のいずれか1項に記載のコンピュータシステム。
【請求項18】
前記テスト対象のコンピュータデバイスとのUSB接続が、前記エミュレートUSBハードウェアデバイスと、前記エミュレートUSBハードウェアデバイスがエミュレートしている前記特定の物理的なUSB周辺機器デバイスとの間でスイッチングされることを可能にするUSBスイッチングデバイスをさらに含む、請求項9から17のいずれか1項に記載のコンピュータシステム。
【請求項19】
入力および出力デバイスを含む異なる種類のUSBデバイスのためにコンピュータシステムにおいてUSBデバイスのUSBプロトコルによるホスト接続をエミュレートするエミュレートユニバーサルシリアルバス(USB)ハードウェアデバイスであって、
構成記述子を格納するメモリと、
USB−シリアルインターフェイスチップと、
ソフトウェアを受け取ることによって物理的なUSBデバイスのホスト接続をエミュレートするよう、ソフトウェアでプログラム可能である、USBサポートを有する1つ以上のマイクロコントローラと、を含み、前記ソフトウェアは、前記1つ以上のマイクロコントローラにより実行されると、前記1つ以上のマイクロコントローラに、
USBホストモードバス信号を構成することと、
シリアルバス上でUSBフレームを開始することと、
デバイスエミュレーションプロセスにデバイス接続ステータスを示すことと、
物理的なUSBデバイスと前記デバイスエミュレーションプロセスとの間でパケットを中継することと、
第2のプロトコルを使用して、前記物理的なUSBデバイスのUSBインタラクションをシミュレートするテスト実行コンピュータデバイスと通信することと、
スイッチングデバイスの状態を規定する制御信号をセットするようソフトウェアコマンドを受け取り、物理的なUSBホストデバイスまたは前記エミュレートされるUSBハードウェアデバイスのいずれかを前記物理的なUSBデバイスに接続することを行なわせる、エミュレートUSBハードウェアデバイス。
【請求項20】
前記エミュレートUSBハードウェアデバイスのために付加的な機能を提供する、1つ以上のマイクロコントローラ上の1つ以上の入出力ポートをさらに含む、請求項19に記載のエミュレートUSBハードウェアデバイス。
【請求項21】
前記1つ以上の入出力ポートは、前記エミュレートUSBハードウェアデバイスへの電力を制御する、請求項20に記載のエミュレートUSBハードウェアデバイス。
【請求項22】
前記1つ以上の入出力ポートは非USB周辺機器デバイスのためのシリアルポートである、請求項20または21に記載のエミュレートUSBハードウェアデバイス。
【請求項23】
前記1つ以上の入出力ポートは、POSキャッシュドロアと通信するポイントオブセール(POS: Point of Sale)キャッシュドロアポートである、請求項20または21に記載のエミュレートUSBハードウェアデバイス。
【請求項24】
前記1つ以上の入出力ポートは、前記エミュレートUSBハードウェアデバイスに付加的な機能を追加することが可能である拡張カードに接続する、請求項20から23のいずれか1項に記載のエミュレートUSBハードウェアデバイス。
【請求項25】
前記ソフトウェアは、前記1つ以上のマイクロコントローラにより実行されると、前記1つ以上のマイクロコントローラに、ファームウェアを書換えることなく物理的なUSB周辺機器デバイスをエミュレートするよう特定の記述子のセットを受け取ることを行なわせる、請求項19から24のいずれか1項に記載のエミュレートUSBハードウェアデバイス。
【請求項26】
周辺機器デバイスインタラクションおよびホスト接続をテストするためのコンピュータシステムであって、
テストフレームワーク、ホスト接続、および、エミュレートUSBハードウェアデバイス通信ドライバを実行するように構成されるテスト実行コンピュータデバイスと、
テスト対象のコンピュータデバイスと、
物理的なUSB周辺機器デバイスと、
入力および出力デバイスを含む異なる種類のUSBデバイスのために物理的なUSBデバイスのUSBプロトコルによるホスト接続をエミュレートするようソフトウェアでプログラム可能である少なくとも1つのエミュレートユニバーサルシリアルバス(USB)ハードウェアデバイスと、を含み、
前記少なくとも1つのエミュレートUSBハードウェアデバイスは、
USBホストモードバス信号を構成する手段と、
シリアルバス上でUSBフレームを開始する手段と、
デバイスエミュレーションプロセスにデバイス接続ステータスを示す手段と、
前記物理的なUSB周辺機器デバイスと前記デバイスエミュレーションプロセスとの間でパケットを中継する手段と、
エミュレートされる特定の物理的なUSB周辺機器デバイスと関係するデバイス識別子を含む特定の記述子を受け取ることによって、当該特定の記述子から特定される前記特定の物理的なUSB周辺機器デバイスのモデルのインスタンスをエミュレートする手段とを備える、コンピュータシステム。
【請求項27】
前記テスト実行コンピュータデバイスは受け取られるデータを監視し、前記受け取られるデータをフィルタリングおよび表示する、請求項9に記載のコンピュータシステム。
【請求項28】
前記物理的なUSB周辺機器デバイスとのUSB接続が、前記エミュレートUSBハードウェアデバイスと前記エミュレートUSBハードウェアデバイスがエミュレートしている物理的なホストとの間でスイッチングされることを可能にするUSBスイッチングデバイスをさらに含む、請求項26に記載のコンピュータシステム。
【請求項29】
前記少なくとも1つのエミュレートUSBハードウェアデバイスはさらに、少なくとも1つの前記エミュレートUSBハードウェアデバイスのために付加的な機能を提供する、前記1つ以上のマイクロコントローラ上の1つ以上の入出力ポートを有するように構成される、請求項26に記載のコンピュータシステム。
【請求項30】
前記1つ以上の入出力ポートは、前記少なくとも1つのエミュレートUSBハードウェアデバイスへの電力を制御する、請求項29に記載のコンピュータシステム。
【請求項31】
前記1つ以上の入出力ポートは非USB周辺機器デバイスのためのシリアルポートである、請求項29または30に記載のコンピュータシステム。
【請求項32】
前記1つ以上の入出力ポートは、POSキャッシュドロアと通信するポイントオブセール(POS: Point of Sale)キャッシュドロアポートである、請求項29または30に記載のコンピュータシステム。
【請求項33】
前記1つ以上の入出力ポートは、前記少なくとも1つのエミュレートUSBハードウェアデバイスに付加的な機能を追加することが可能である拡張カードに接続する、請求項29から32のいずれか1項に記載のコンピュータシステム。
【請求項34】
入力および出力デバイスを含む異なる種類のUSBデバイスのための複数のUSBプロファイルをサポートすることにより、複数の物理的なUSB周辺機器デバイスをエミュレートする方法をコンピュータに実行させるためのプログラムであって、
前記方法は、
エミュレートされる特定の物理的なUSB周辺機器デバイスと関係するデバイス識別子を含む特定の記述子を受け取るステップと、
受け取った当該特定の記述子から特定される前記特定の物理的なUSB周辺機器デバイスのモデルのインスタンスをエミュレートするステップと、
テスト対象のコンピュータデバイスにUSBプロトコルによって応答するステップと、
第2のプロトコルを使用して、前記物理的なUSB周辺機器デバイスのUSBインタラクションをシミュレートするテスト実行コンピュータデバイスと通信するステップとを備える、プログラム。
【請求項35】
入力および出力デバイスを含む異なる種類のUSBデバイスのためにコンピュータシステムにおいてUSBデバイスのUSBプロトコルによるホスト接続をエミュレートする方
法をコンピュータに実行させるためのプログラムであって、
前記方法は、
USBホストモードバス信号を構成するステップと、
シリアルバス上でUSBフレームを開始するステップと、
デバイスエミュレーションプロセスにデバイス接続ステータスを示すステップと、
物理的なUSBデバイスと前記デバイスエミュレーションプロセスとの間でパケットを中継するステップと、
エミュレートされる特定の物理的なUSBデバイスと関係するデバイス識別子を含む特定の記述子を受け取るステップと、
受け取った当該特定の記述子から特定される前記特定の物理的なUSBデバイスのモデルのインスタンスをエミュレートするステップを備える、プログラム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
コンピュータデバイスは、コンピュータデバイスと周辺機器デバイスとの間の通信プロトコルを定義する業界標準であるユニバーサルシリアルバス(USB)を介して、マウス、キーボード、プリンタ、スピーカ、スキャナ、マイクロフォンおよびウェブカメラといった周辺機器デバイスに接続し得る。USBにより、ホストコンピュータデバイス(105)に(またはホストコンピュータデバイス(105)上に)接続されるUSBポートにUSBデバイス(107)が取り付けられる場合、または、そこから取り除かれる場合、ホストコンピュータデバイス(105)は、USBデバイス(107)の状態を識別および管理するためにバスエニュメレーションプロセス(bus enumeration process)を使用する。ホスト/デバイス関係が
図1aに示される。各デバイス(107)は、エニュメレーションプロセスにおいて一連の記述子メッセージを使用して自身を識別する。記述子メッセージは、良好に定義されたプロトコルを使用しており、
図1bの(101)において示されるように、USBアナライザを使用して記録され得る。
図1bは、通信するためにUSBデバイスとホストコンピュータデバイスとの間で送信されるさまざまなコマンドを示す。典型的に、デバイス記述子は、デバイスID、ストリングおよびレポート記述子を含む。例示的なデバイス記述子が
図4aの(401)において示される。付加的なメッセージが、デバイスの入力、出力およびステータスを定義し得る。
【0002】
ポイントオブセール(POS: point of sale)システムのような多くの従来のコンピュータシステムは、適切に機能するために複数のUSB周辺機器デバイスを必要とする。たとえば、コンピュータシステムは、USBキーボード、USBマウスおよびUSBスキャナ/プリンタを含み得る。コンピュータシステムが正しく作動しているかどうか判定するために、コンピュータシステムおよびすべての周辺機器デバイスとのインタラクションをテストすることは重要である。これらのシステムは、USBデバイス/ホストインタラクションをテストするために、USBデバイスとコンピュータデバイスとの間の物理的な接続を必要とし得る。
【0003】
テストは、テスト対象のコンピュータデバイスまたはシステムが周辺機器にどのように応答するか検証するべきであり、また、特定の周辺機器を必要とするアプリケーションおよび/またはシステムが適切に機能することを検証するべきである。周辺機器とのシステムのインタラクションをテストおよび検証するために、システムに接続され得る各周辺機器デバイスについて手動のデータ入力および検証プロシージャを実行することが慣習的である。各デバイスが自身を一意のUSB識別で提示し、また、単純な一般的なインターフェイステストでは各デバイスの特定の特徴が検証されないので、手動の入力が各デバイスについて必要とされる。さらに、特別なキーボードのような特定のUSB周辺機器を必要とするシステムまたはアプリケーションをテストする場合、フルシステムを使用して手動のテストおよび検証を実行することが慣習的である。これらのテスト方法は、エラーが起きやすく、正確さを保証するために繰り返される必要があり得る。
【0004】
本発明者らによって認識されるように、エラーを最小化し精度を保証しつつ、テストされるべきシステムにおける周辺機器デバイスを自動的にエミュレートする方法が存在するべきである。
【発明の概要】
【課題を解決するための手段】
【0005】
概要
この明細書は、一般に、コンピュータシステム内でのUSB周辺機器デバイスのインタラクションをテストすることに関する技術を記載しており、具体的には、コンピュータデバイスおよび/またはシステムをテストする際に複数のUSB周辺機器をエミュレートすることが可能である方法およびシステムに関する技術を記載する。さらに、明細書は、一般に、コンピュータシステム内でのUSBハードウェアデバイスのインタラクションをテストすることに関する技術を記載しており、具体的には、コンピュータデバイスおよび/またはシステムをテストする際に、複数のUSBホスト接続をエミュレートすることが可能である方法およびシステムに関する技術を記載する。
【0006】
一般に、この明細書に記載される主題の1つの局面は、コンピュータシステムにおける物理的な周辺機器デバイスをエミュレートするエミュレートユニバーサルシリアルバス(USB)ハードウェアデバイスと、周辺機器デバイスインタラクションをテストするためのコンピュータシステムとにおいて具現化され得る。
【0007】
例示的なエミュレートUSBハードウェアデバイスは、構成記述子を格納するメモリと、USB−シリアルインターフェイスチップと、複数のUSBプロファイルをサポートすることにより、複数の物理的なUSB周辺機器デバイスをエミュレートするようソフトウェアでプログラム可能である、USBサポートを有する1つ以上のマイクロコントローラとを含む。1つ以上のマイクロコントローラは、エミュレートされる特定の物理的なUSB周辺機器デバイスと関係するデバイス識別子を含む特定の記述子を受け取ることによって、特定の物理的なUSB周辺機器デバイスをエミュレートすることと、テスト対象のコンピュータデバイスにUSBプロトコルによって応答することと、第2のプロトコルを使用して、物理的なUSB周辺機器デバイスのUSBインタラクションをシミュレートするテスト実行コンピュータデバイスと通信することとを行うように構成される。
【0008】
例示的なコンピュータシステムは、テストフレームワーク、デバイスエミュレーション、および、エミュレートUSBハードウェアデバイス通信ドライバを実行するように構成されるテスト実行コンピュータデバイスと、テスト対象のコンピュータデバイスと、複数のUSBプロファイルをサポートすることによって複数の物理的なUSB周辺機器デバイスをエミュレートするようソフトウェアでプログラム可能であり、かつ、テスト対象のコンピュータデバイスとの第1の物理的なUSB周辺機器デバイスのUSBインタラクションをシミュレートする少なくとも1つのエミュレートユニバーサルシリアルバス(USB)ハードウェアデバイスとを含む。少なくとも1つのエミュレートUSBハードウェアデバイスは、エミュレートされる特定の物理的なUSB周辺機器デバイスと関係するデバイス識別子を含む特定の記述子を受け取ることによって、特定の物理的なUSB周辺機器デバイスをエミュレートすることと、テスト対象のコンピュータデバイスにUSBプロトコルによって応答することと、第2のプロトコルを使用して、物理的なUSB周辺機器デバイスのUSBインタラクションをシミュレートするテスト実行コンピュータデバイスと通信することとを行うように構成される。
【0009】
これらおよび他の実施形態は随意に以下の特徴の1つ以上を含み得る。1つ以上のマイクロコントローラは、デバイスエミュレーションアプリケーションを実行するように構成され得、当該デバイスエミュレーションアプリケーションは、テスト実行コンピュータデバイスとインタラクションし、マイクロコントローラ上に格納されるファームウェアを書換えることなく異なる物理的なUSB周辺機器デバイスをエミュレートするよう、エミュレートUSBハードウェアデバイスがテスト実行コンピュータデバイスによって再構成されることを可能にする。1つ以上のマイクロコントローラはさらに、スイッチングデバイスの状態を規定する制御信号をセットするようソフトウェアコマンドを受け取り、テスト対象のコンピュータデバイスに特定の物理的なUSB周辺機器デバイスまたはエミュレートされたUSBハードウェアデバイスのいずれかを接続するように構成され得る。例示的なハードウェアデバイスは、エミュレートUSBハードウェアデバイスのために付加的な機能を提供する、1つ以上のマイクロコントローラ上の1つ以上の入出力ポートを含み得る。1つ以上の入出力ポートは、エミュレートUSBハードウェアデバイスへの電力を制御し得る。1つ以上の入出力ポートは非USB周辺機器デバイスのためのシリアルポートであり得る。1つ以上の入出力ポートは、POSキャッシュドロアと通信するポイントオブセール(POS: Point of Sale)キャッシュドロアポートであり得る。1つ以上の入出力ポートは、エミュレートUSBハードウェアデバイスに付加的な機能を追加することが可能である拡張カードに接続し得る。例示的なエミュレートUSBハードウェアデバイスは、ファームウェアを書換えることなく第2の物理的なUSB周辺機器デバイスをエミュレートするよう特定の記述子のその後のセットを受け取るように構成され得る。例示的なエミュレートUSBハードウェアデバイスは、テスト実行コンピュータデバイスからのインタラクションを必要とすることなく、テスト対象のコンピュータデバイスから受け取られるあるメッセージに自動的に応答するように構成され得る。例示的なコンピュータシステムは、第2の物理的なUSB周辺機器デバイスをエミュレートし、かつ、テスト対象のコンピュータデバイスとの第2の物理的なデバイスのUSBインタラクションをシミュレートする第2のエミュレートUSBハードウェアデバイスを含み得る。第1のエミュレートUSBハードウェアデバイスからのデータは、第2のエミュレートUSBハードウェアデバイスからの応答の時間をはかるまたは応答を選択するように使用され得る。テスト実行コンピュータデバイスのテストフレームワークは、プレテストデータキャプチャ、テストケース実行、ならびに、ポストテストデータキャプチャおよび検証を含み得る。USBスイッチングデバイスは、テスト対象のコンピュータデバイスとのUSB接続が、エミュレートUSBハードウェアデバイスと、エミュレートUSBデバイスがエミュレートしている特定の物理的なUSB周辺機器デバイスとの間でスイッチングされることを可能にし得る。
【0010】
この明細書に記載される主題の付加的な局面は、コンピュータシステムにおけるUSBデバイスのホスト接続をエミュレートするエミュレートユニバーサルシリアルバス(USB)ハードウェアデバイスと、周辺機器デバイスインタラクションおよびホスト接続をテストするためのコンピュータシステムとにおいて具現化され得る。
【0011】
例示的なエミュレートUSBハードウェアデバイスは、構成記述子を格納するメモリと、USB−シリアルインターフェイスチップと、ソフトウェアを受け取ることによって物理的なUSBデバイスのホスト接続をエミュレートするよう、ソフトウェアでプログラム可能である、USBサポートを有する1つ以上のマイクロコントローラとを含み、ソフトウェアは、USBホストモードバス信号を構成することと、シリアルバス上でUSBフレームを開始することと、デバイスエミュレーションプロセスにデバイス接続ステータスを示すことと、物理的なUSBデバイスとデバイスエミュレーションプロセスとの間でパケットを中継することとを行う。
【0012】
周辺機器デバイスインタラクションおよびホスト接続をテストするための例示的なコンピュータシステムは、テストフレームワーク、ホスト接続、および、エミュレートUSBハードウェアデバイス通信ドライバを実行するように構成されるテスト実行コンピュータデバイスと、テスト対象のコンピュータデバイスと、物理的なUSB周辺機器デバイスと、物理的なUSBデバイスのホスト接続をエミュレートするようソフトウェアでプログラム可能である少なくとも1つのエミュレートユニバーサルシリアルバス(USB)ハードウェアデバイスとを含み、少なくとも1つのエミュレートユニバーサルシリアルバスハードウェアデバイスは、USBホストモードバス信号を構成することと、シリアルバス上でUSBフレームを開始することと、デバイスエミュレーションプロセスにデバイス接続ステータスを示すことと、物理的なUSB周辺機器デバイスとデバイスエミュレーションプロセスとの間でパケットを中継することとを行うように構成される。
【0013】
これらおよび他の実施形態は随意に以下の特徴の1つ以上を含み得る。例示的なエミュレートUSBハードウェアデバイスは、エミュレートUSBハードウェアデバイスのために付加的な機能を提供する、1つ以上のマイクロコントローラ上の1つ以上の入出力ポートを含み得る。1つ以上の入出力ポートは、エミュレートUSBハードウェアデバイスへの電力を制御し得る。1つ以上の入出力ポートは非USB周辺機器デバイスのためのシリアルポートであり得る。1つ以上の入出力ポートは、POSキャッシュドロアと通信するポイントオブセール(POS: Point of Sale)キャッシュドロアポートであり得る。1つ以上の入出力ポートは、エミュレートUSBハードウェアデバイスに付加的な機能を追加することが可能である拡張カードに接続し得る。1つ以上のマイクロコントローラは、スイッチングデバイスの状態を規定する制御信号をセットするようソフトウェアコマンドを受け取り、物理的なUSBホストデバイスまたはエミュレートされたUSBハードウェアデバイスのいずれかを物理的なUSBデバイスに接続するように構成され得る。エミュレートUSBハードウェアデバイスは、ファームウェアを書換えることなく物理的なUSB周辺機器デバイスをエミュレートするよう特定の記述子のセットを受け取るように構成され得る。テスト実行コンピュータデバイスは受け取られるデータを監視し、受け取られるデータをフィルタリングおよび表示し得る。物理的なUSB周辺機器デバイスとのUSB接続が、エミュレートUSBハードウェアデバイスと、エミュレートUSBデバイスがエミュレートしている物理的なホスト接続との間でスイッチングされることを可能にするUSBスイッチングデバイスがコンピュータシステムに含まれ得る。
【0014】
本発明の1つ以上の実施形態の詳細が、例示のみとして与えられる添付の図面と、以下の記載とにおいて説明される。本発明の他の機能、局面および利点は、明細書、図および請求の範囲から明白になるであろう。さまざまな図における同様の参照番号および指定は同様の要素を示す。
【図面の簡単な説明】
【0015】
【
図1a】ホストコンピュータデバイスと物理的なUSB周辺機器デバイスとの間での慣習的なエニュメレーションプロセスを示すブロック図である。
【
図1b】通信するためにUSBデバイスとホストコンピュータデバイスとの間で送信されるさまざまなコマンドを示す図である。
【
図2】例示的なエミュレートされたUSBハードウェアデバイスの概略図である。
【
図3】USBスイッチングデバイスを有する例示的なエミュレートされたUSBハードウェアデバイスの概略図である。
【
図4a】特定のUSB周辺機器デバイスをエミュレートするために例示的なマイクロコントローラをプログラムするために使用される例示的な擬似コードを示す図である。
【
図4b】特定のUSB周辺機器デバイスをエミュレートするための例示的なマイクロコントローラをプログラムする例示的な擬似コードの
図4aからの継続である。
【
図5a】ユニバーサルシリアルバス周辺機器デバイスをエミュレートするための例示的な方法のフロー図である。
【
図5b】ユニバーサルシリアルバス接続をエミュレートするための例示的な方法のフロー図である。
【
図6b】POSテストのためのコンポーネントの例示的なブロック図である。
【
図7】USB接続のホスト側をエミュレートする例示的なエミュレートされたUSBハードウェアデバイスの概略図である。
【
図8】例示的なコンピュータデバイスを示すブロック図である。
【発明を実施するための形態】
【0016】
詳細な説明
例示的な実施形態に従うと、少なくとも1つのUSB周辺機器デバイスを必要とするシステムをテストするために、周辺機器および/またはホスト接続をエミュレートするよう、エミュレートされたUSB周辺機器(EUP: emulated USB peripheral)ハードウェアデバイスが存在し得る。例示的なハードウェアデバイスは、「エミュレートされたUSB周辺機器(EUP)デバイス」、「エミュレートされたUSB周辺機器ハードウェアデバイス」、および、「エミュレートされたUSBハードウェアデバイス」といったいくつかの用語によって言及され得る。これらの用語はすべて、デバイスの構成に依存してホストモードまたはデバイスモードで動作する能力を有し得る同じデバイスを指す。
【0017】
例示的なEUPデバイスは、デバイスモードおよびホストモードといった2つのモードの間でスイッチングすることが可能であり得る。デバイスモードでは、EUPデバイスは、多くの異なる周辺機器をエミュレートすることが可能であり得る。ホストモードでは、EUPデバイスは、USB接続のホスト側をエミュレートし得る。EUPデバイスと、テストスクリプトを実行するテスト実行コンピュータデバイスと、周辺機器インタラクションがテストされているシステム(たとえばテスト対象のコンピュータデバイス)とを含む、エミュレートされたUSB周辺機器検証フレームワーク(emulated USB peripheral validation framework)がさらに存在し得る。
【0018】
デバイスモードでのEUPデバイス
例示的なエミュレートされたUSB周辺ハードウェアデバイス(EUP)は、
図2に示されるように、USBサポートを有する1つ以上のマイクロコントローラ(203)と、USB−シリアルインターフェイスチップ(202)とを含み得る。USBサポートは、ビルトインされ得るか、または、外部チップを使用し得る。EUPデバイスは1つのUSBチャンネルにつき1つのマイクロコントローラを有し得るが、複数のマイクロコントローラおよびUSBチャンネルを有してもよい。シリアルチップ(202)は、テスト実行コンピュータデバイス(201)との接続を作り出し得る。テスト実行コンピュータデバイス(201)は、EUPデバイスがテスト対象のコンピュータデバイス(204)とインタラクションし得るように、テストアプリケーションおよびEUPドライバを実行しているデバイスである。
【0019】
いくつかの実施形態において、デバイスモードにあるEUPデバイスは、テスト目的のために単独で使用されない場合がある。たとえば、EUPデバイスは、容易に入手可能でない周辺機器デバイス、または、レガシーコンピュータデバイスとインターフェイス接続し得ない周辺機器デバイスをエミュレートするために使用され得る。これらの場合において、コマンドを受け取り、コンピュータデバイスに接続するために、EUPデバイスは、テスト実行コンピュータデバイスにそれでも接続され得る。その後、EUPデバイスは、入手不可能もしくは容易に入手可能でない周辺機器デバイスとして、または、レガシーコンピュータデバイスへのインターフェイスとして、コンピュータデバイスとインタラクションする。
【0020】
マイクロコントローラにおけるUSBサポートによって、マイクロコントローラが、USBに対して着脱すること、リセットを検出すること、要求またはメッセージを受け取ること、および、メッセージを送ることが可能になり得る。デバイスモードにおいて、各マイクロコントローラは、一度にUSB周辺機器デバイスの1つのインスタンスをエミュレートし得る。USBインターフェイスはEUPデバイスに宛先が設定されたパケットのみを自動的に受け取り、エンドポイントによって着信パケットを分解し得る。慣習的なUSBデバイスにおいて、すべての命令および応答は、ファームウェアにおいてプログラムされ、メッセージの選択された部分が、テスト対象のコンピュータデバイスにおよびテスト対象のコンピュータデバイスから転送される。例示的な実施形態において、EUPデバイスは、所与のUSB物理デバイスをエミュレートするよう、テスト対象のコンピュータデバイスとインタラクションするアプリケーションを実行する。EUPデバイスがファームウェア上でアプリケーションを実行しているので、EUPデバイスは、マイクロコントローラ上に格納されたファームウェアを書換えることなく、異なるデバイスをエミュレートするように構成され得る。
【0021】
いくつかの実施形態において、
図3に示されるようにEUPデバイス(310)によって制御されるUSBスイッチングデバイス(300)が存在し得る。例示的なスイッチングデバイス(300)は、物理的な周辺機器デバイス(305)を例示的なシステムに接続または例示的なシステムから切断するハードウェアコンポーネントとして実現され得る。このスイッチングデバイス(300)によって、EUPデバイス(エミュレートされたUSB周辺機器デバイス)(310)と、コンピュータシステム内での両方のインタラクションをテストするためにEUPデバイスが表わしている物理デバイス(305)(USB周辺機器デバイス)との間で、USB接続が変更されることが可能になり得る。例示的なスイッチングデバイス(300)は、物理デバイス(305)のための給電されたUSBコネクタと、テストシステムに接続する電力入力コネクタとを有し得る。スイッチングデバイス(300)はUSB信号接続をスイッチングするのみであり得る。テストアプリケーションからのソフトウェアコマンドは、物理的なUSB周辺機器またはエミュレートされた周辺機器が所定の時間に接続されているかどうか示すようスイッチングデバイスの状態を規定する制御信号をセットするために、EUPデバイス(310)のマイクロコントローラ(303)に送信され得る。例示的なスイッチングデバイス(300)は、EUPテスト実行コンピュータデバイス(301)が接続されない場合にデフォルトで物理デバイス(305)に接続され得、または、デフォルトでテストに使用され得ない。EUPデバイス(310)が使用のために構成されると、EUPドライバソフトウェアはEUPデバイス(310)をシステム内にスイッチングし得る。テストアプリケーションがスイッチングデバイス(300)を制御するためにソフトウェアを実行していないか、または、EUPデバイス(310)が給電されていない場合、スイッチングデバイス(300)は、通過ソケット(pass through socket)への接続を通るように戻る。
【0022】
例示的なEUPデバイスは、テスト対象のコンピュータデバイスまたはシステムへの電力を管理するとともに非USB周辺機器デバイスのテストのためにシリアルポートを提供するといった機能を提供するために、マイクロコントローラ上に付加的な入出力(IO)ポートを含み得る。各EUPマイクロコントローラは、所与の時間にて1つの物理的なUSB周辺機器デバイスをエミュレートし得る。さらに、物理的なUSB周辺機器デバイスをエミュレートしている間、マイクロコントローラはさらに、1つ以上のシリアルデバイスのエミュレーションと、1つ以上の物理的なコンタクトスイッチングデバイスとを提供し得る。いくつかの実施形態において、たとえば、入出力ポートは、ドロアを開くことを要求する信号を感知し、ドロアが開いていることを示す信号を生成するPOSキャッシュドロア(POS cash drawer)をエミュレートし得る。さらに、入出力ポートは、まだ定義されていない付加的な機能を提供するために、EUPデバイスに拡張カードを追加するよう使用され得る。
【0023】
EUPデバイスが周辺機器デバイスをエミュレートするために、例示的なEUPデバイスのマイクロコントローラは、テスト対象のコンピュータデバイスとインタラクションするための標準的なUSBプロトコルと、テスト実行デバイスとインタラクションするためのシリアルプロトコルとを解釈および応答し得る一般的なソフトウェアでプログラムされ得る。マイクロコントローラを構成するために使用される例示的なコードが
図4aおよび
図4bに示される。テスト実行コンピュータデバイスはこのコードを使用して、特定のUSB周辺機器デバイスに関係する特定の記述子を含む任意のUSBプロファイルをEUPマイクロコントローラ上にロードし得る。特定の記述子は、デバイスID、ストリングおよびレポート記述子を含み得るので、EUPデバイスは、特定のデバイスの特定のモデルおよびインスタンスをエミュレートし得る。たとえば、
図4aの(401)において示されるように、テスト実行コンピュータデバイスは、特定のキーボードモデルのためのEUPデバイスに特定の記述子情報を提供し得る。記述子情報がEUPデバイスにロードされると、EUPデバイスは、それについて記述子がロードされた特定のキーボードモデルの機能をエミュレートする。テスト実行コンピュータデバイスとEUPデバイスとの間には、デバイスが自動的に応答するかまたはテスト実行コンピュータデバイスに転送することになるパケットを定義する通信プロトコルが存在し得る。物理デバイスはすべてのコマンドに応答しない場合もあるので、特定されない任意のコマンドは応答を発しない。
【0024】
テスト実行コンピュータデバイスは、マイクロコントローラがあるメッセージに自動的に応答することを特定し得る。テスト実行コンピュータデバイスはさらに、テスト実行コンピュータデバイス上で実行されるデバイスエミュレーションプロセスによって返答が計算され得るように、自身に送られるあるUSBパケットを構成し得る。テスト実行コンピュータデバイス上でデバイスエミュレーションプロセスを使用することによって、複雑なエミュレーションがデバイス上で行われることを可能にする。
【0025】
EUPデバイスは、実際のUSB周辺機器デバイスが通常動作で送信する任意のメッセージをエミュレートし得る。記述子情報はEUPデバイスにロードされるので、エニュメレーションプロセスは、テスト実行コンピュータデバイスインタラクションなしで完了され得る。USB規格は、デバイスが10ミリ秒といったある時間量内でエニュメレーションを実行することを要求する。例示的なEUPデバイスのメモリにエニュメレーションデータをロードすることによって、テスト実行アプリケーションが期待される時間フレーム内で応答することに依存することなく、EUPデバイスは、必要なタイムアウト期間内でエニュメレーションを完了することが可能である。より長い応答タイムアウトを有する他のメッセージが、テスト実行コンピュータデバイス上で実行されるデバイスエミュレーションプロセスによって生成され得る。
【0026】
標準的なUSBバスエニュメレーションはいくつかのステップを含む。まず、USBデバイスが取り付けられるポートは、USBデバイスが接続されたことと、USBデバイスが給電状態であることとをホストコンピュータデバイスに報知する。次に、USBホストはポートへコマンドを送信し、USBデバイスにユニークアドレスを割り当てる。USBデバイスの状態は、アドレス付与状態に変化する。USBホストはUSBデバイスから構成情報を読み出し、USBデバイスがどのように使用されるかを決定する。その後、USBホストはデバイスに構成値を割り当て、デバイスの状態を「構成済(Configured)」にセットする。
【0027】
EUPデバイスは、テスト実行コンピュータデバイスによって以前に格納されたデータを使用して、テストエニュメレーションの対象のコンピュータデバイスからのエニュメレーションコマンドに応答する。エニュメレーションプロセスは、実際の物理的な周辺機器デバイスのエニュメレーションプロセスと同様であり得る。
【0028】
エニュメレーションの後、テストアプリケーションからEUPデバイスを通じてテスト対象のコンピュータデバイスまたはシステムにコマンドが送信される。テスト対象のコンピュータデバイスからの応答はEUPデバイスに返され、次いで、EUPデバイスは当該応答をテストアプリケーションに返す。このプロセスを使用して、テストアプリケーションは適切に応答し続け得、EUPデバイスを通じて、テストされるデバイスをエミュレートする。
【0029】
いくつかの実施形態において、例示的なエミュレートされたUSBの周辺機器検証フレームワークは、テスト実行コンピュータデバイスに存在し得る。このフレームワークは、周辺機器USBデバイスをエミュレートするよう少なくとも1つのEUPデバイスを構成し得る。その後、フレームワークは、テストケースのシーケンスを実行し、可能であればテストケースからの予期されない出力を扱い、予期される結果が各テストケースから生成されたことを検証し、各テストケースの成功または失敗を示し得る。たとえば、例示的な検証フレームワークは、ポイントオブセール(POS)システムをエミュレートするために提供され得る。POSシステムテストを行なうために、例示的な実施形態はさらに、いくつかのEUPデバイスとともに、キーボードおよびスキャナのような周辺機器をエミュレートするよう、ポイントオブセール(POS)端末と、POSコントローラとを含み得る。いくつかの場合において、端末およびコントローラは同じシステムであり得る。さらに、複数の端末および複数のコントローラが存在し得る。さらに、APIシミュレーションサーバが、エンドツーエンドテスト環境を作り出すために使用され得る。テストは、テストアプリケーションが、提供される入力に基づいたテスト対象のシステムの挙動と、システム上のアプリケーションの挙動とを検証して、行なわれ得る。
【0030】
フレームワークはシステム構成を読み出し、実行するべきテストを選択する。その後、POSターミナルは初期化され得る。テストはシーケンスされ、次いで、実行され得る。テストが実行されると、ログはトランザクションおよび応答を記録し得る。その後、テストプログラムは、収集されたデータを取得し、当該データを容易な検証のための形式に変換し得る。収集されたデータおよび結果は、その後の調査のためにログされ得る。いくつかの場合において、テストが正確に実行されなかった場合、システムに関する問題を修正するために手動介入が許可され得る。
【0031】
例示的な方法は、USBサポートおよびUSB−シリアルインターフェイスチップを有するエミュレートされたUSB周辺機器デバイス(EUP)上のマイクロコントローラにテスト実行コンピュータデバイスを接続することにより、テスト実行コンピュータデバイスにおいて開始する。マイクロコントローラは、
図5aにおいて示されるように、複数のUSBプロファイルをサポートすることによって複数の物理的なUSB周辺機器デバイスをエミュレートし得る、デバイスエミュレーションアプリケーションのようなソフトウェアにより構成され得る(501)。デバイス固有でないUSBアプリケーションがマイクロコントローラのフラッシュメモリに格納され得る。ソフトウェアは、テスト対象のコンピュータデバイスとインタラクションするための標準的なUSBプロトコルと、テスト実行コンピュータデバイスとインタラクションするためのシリアルプロトコルとを解釈および応答し得る。マイクロコントローラはシリアルプロトコルを使用して、エミュレートされる特定の物理的なUSB周辺機器デバイスのUSBインタラクションをシミュレートするテスト実行コンピュータデバイスと通信し得る(502)。USBプロファイルを定義する特定の記述子は、EUPデバイスのマイクロコントローラにロードされる(503)。特定の記述子によって定義されるデバイス構成は、マイクロコントローラのRAMに格納され得る。これらの記述子は、マイクロコントローラがエミュレートするべき実際のUSBデバイスに関係するデバイス識別子を含む。この例示的な場合において、マイクロコントローラにPOSスキャナのデバイスIDがロードされる。その後、実際のUSB周辺機器デバイスとテスト対象のコンピュータデバイスとの間の実際のメッセージをエミュレートするよう、エミュレートされたデバイスからテスト対象のコンピュータデバイスにメッセージが送信され得る。周辺機器デバイスについての出力は、マイクロコントローラによってテスト対象のコンピュータデバイスから受け取られ得、テスト実行コンピュータデバイスへ転送され得る。
【0032】
図6aは、POSシステムのための例示的なテストケースを示す。このテストケースでは、ロイヤルティーカード(loyalty card)が、スキャンされたとしてシミュレートされ、また、2つのユニバーサルプロダクトコード(UPC: Universal Product Codes)が、アイテムが購入される際にスキャンされたとしてシミュレートされる。
図6bは例示的なシステムを示す。テスト実行コンピュータデバイス(601)は、テストフレームワーク、デバイスエミュレーション、およびEUPデバイス通信ドライバを含む1つのプロセスを実行し得る。代替的には、テスト実行コンピュータデバイス(601)は、当該フレームワーク、エミュレーションおよび通信ドライバについて、異なるプロセスを実行し得る。例示的なテストフレームワークは、プレテストデータキャプチャ、テストケース実行、ならびに、ポストテストデータキャプチャおよび検証を含み得る。
図6bに示されるような例示的なシステムにおいて、所与の時間にてシステムにおける複数の周辺機器デバイスをエミュレートするよう、1つより多いEUPデバイス(610a,610b)が存在し得る。たとえば、
図6bにおいて示されるように、1つのEUPデバイスはバーコードスキャナUSBデバイス(610a)をエミュレートし得、別のEUPデバイスはPOSキーボード(610b)をエミュレートし得る。デバイスエミュレーションは、テスト実行コンピュータデバイスを介して格納および送信され得る。テスト実行コンピュータデバイス(601)は、EUPデバイスと通信するためにEUPデバイス通信ドライバを有する。各EUPデバイスについて実行のスレッドが存在し得、入出力データを使用してEUPデバイス間で協調/通信が存在し得る。いくつかの実施形態において、1つのEUPデバイスは、第2のEUPデバイスからの応答の時間をはかるまたは応答を選択するために使用されるデータを出力し得る。たとえば、例示的なPOSシステムにおいて、アクティベートされると、スキャナがこれ以上スキャンを受け付けるのを停止させる待機(WAIT)ライトがキーボード上に存在し得る。ソフトウェアはこの関係を利用して、POS入力バッファが超過することを回避する。代替的には、例示的な実施形態は、エラーメッセージまたはプロンプトが存在した場合に送信するべき次のキーを判定するよう、POSシステムの表示を読み出し得る。
【0033】
このテストケースにおいて、スキャナ(610a)をエミュレートするEUPデバイスは、数値識別子とスキャンされた2つのプロダクトの識別子とによってロイヤルティーカードを識別するメッセージを正確に送信すると予想される。キーボード(610b)をエミュレートするEUPデバイスは、キーボードキーが「QTY」および「TOTAL」について押圧および解放されるに対応する入力ストリングを正確に送信すると予想される。キャッシュアウト(CashOut)は、表示を見てその後キーボードを通じて正しいエントリを送信するスマートなルーチンであり得る。検証は、テストが予想通りに行なわれたことを判定し得る。検証は、トランザクションが予想通りに発生したこと、適用されたクーポンの数が正しいこと、または、周辺機器デバイスによって認識された顧客番号が正しいことを検証することを含み得る。
【0034】
EUPデバイスは、所与の時間にて、1つのマイクロコントローラ当たり1つの周辺機器デバイスをエミュレートし得る。EUPデバイスが1つより多いマイクロコントローラを含む場合、EUPデバイスは同時に異なる周辺機器デバイスをエミュレートし得、各マイクロコントローラに1つの周辺機器デバイスを割り当てる。
【0035】
POSシステムの例において論じられるように、コンピュータシステムは、複数の周辺機器デバイスインタラクションをテストする必要があり得る。コンピュータシステムは、マウス、キーボードおよびプリンタを用いて、機能をテストする必要があり得る。一実施形態において、1つのEUPデバイスは、連続する態様で各デバイスをテストするように使用され得る。EUPデバイスは、異なる時間にて、各周辺機器をエミュレートするようにプログラムされ得る。たとえば、EUPデバイスはまず、マウスをエミュレートし、次にキーボードをエミュレートし、次にプリンタをエミュレートし得る。代替的には、複数のEUPデバイスが、コンピュータシステム内の複数の周辺機器デバイスをエミュレートするために使用され得る。たとえば、3つのEUPデバイスが、マウス、キーボードおよびプリンタをそれぞれエミュレートするために使用され得る。その後、コンピュータシステムは、周辺機器デバイスとの複数のインタラクションの並列テストを実行し得る。複数の周辺機器をエミュレートすることによって、ステータスランプのような、テスト対象のコンピュータデバイスのオペレーティングシステムからのインジケータが、キーボードまたはスキャナのような他の周辺機器にセットされる情報のレートを調節するために使用され得る。
【0036】
ホストモードでのEUPデバイス
いくつかの実施形態において、EUPデバイスは、
図7に示されるように、USB接続のホスト側をエミュレートし得る。EUPデバイスは、デバイスモードに関して上で論じられたすべての機能を組み込み得る。さらに、EUPデバイスのマイクロコントローラポートは、デバイスがデバイスモードの周辺機器として動作し得るか、または、ホストモードのUSBデバイスのホストエンドとして動作し得るように、USB on the goを実現し得る。
【0037】
ホスト接続をエミュレートするために、EUPマイクロコントローラは、
図5bに示されるように、USBホストモードバス信号を構成し(510)、バス上でUSBフレームを開始し(512)、エミュレーションプロセスにデバイスステータス(接続または切断)を示し(513)、デバイスとエミュレーションプロセスとの間でパケットを中継する(516)ソフトウェアを受け取り得る。ホストモードバス信号線D+およびD−が、15kの抵抗によりプルダウンされ得、USBフレームパケットが1khzまたは8khzにて生成され得る。ホストモードのEUPデバイスのUSBインターフェイスは、特定のデバイスおよびエンドポイントへパケットを送信し得る。したがって、パケットバッファは、ホストモードにおいては、デバイスモードである場合とは異なって扱われ得る。例示的なEUPデバイスでは、マイクロコントローラは、各エンドポイント(各デバイス)または発信パケット(ホスト)について使用されるメモリをトラッキングするよう、バッファ記述子テーブル(BDT: buffer descriptor table)を有し得る。パケットが送信中であり、かつ、固定データである場合、パケットは、RAMの代わりにプログラムスペースにおけるテーブルから送信され得る。また、デバイスはさらに、デバイスモードとホストモードとの間で動的に変化することが可能であり得る。
【0038】
スイッチングデバイスは、物理的なUSB周辺機器デバイスに接続されるべき特定の物理的なUSBホストデバイスまたはエミュレートされたUSBハードウェアデバイスのいずれかのスイッチングを可能にし得る。このスイッチングデバイスは、物理的なUSB周辺機器デバイスをエミュレートするEUPデバイスに関して上で論じたスイッチングデバイスと類似または同じであり得る。
【0039】
USBホストモードにおいて構成されるEUPデバイスに物理的な周辺機器を接続するよう、付加的なスイッチングデバイスが存在し得る。
図7に示されるように、EUPデバイスの1つのマイクロコントローラは、ホストモードであり得、USBデバイス(デバイスモード)をエミュレートしているEUPデバイスの第2のマイクロコントローラにさらに接続されるテスト実行コンピュータデバイスに接続され得る。デバイスモードにおけるEUPデバイスのマイクロコントローラは、テスト対象のコンピュータデバイスに接続され得る。この構成は、バスアナライザに類似したシステムを通じてデータが追跡されることを可能にし得る。新しいデバイスをエミュレートするためのデータは、任意の付加的なハードウェアなしで、EUPデバイスを介して収集され得る。テスト実行コンピュータデバイスは、受け取られるデータを監視し、当該受け取られるデータをフィルタリングおよび表示する。
図7のシステム構成はさらに、USB周辺機器デバイスからのデータが、EUPデバイスを実行するソフトウェアによって修正されることを可能にし得る。たとえば、エミュレートUSBデバイスは、マウスが逆さにされてトラックボールとして使用され得るように、USBマウスの報告された移動方向を反転し得る。付加的または代替的には、2つのマイクロコントローラ(または2つのEUPデバイス)の組合せは、意図した機能に依存してデータを選択的に通すよう使用され得る。
図7は、1つがデバイスモードであり1つがホストモードである2つのマイクロコントローラを有する1つのEUPデバイスを示すが、2つのEUPデバイスまたはより多くのマイクロコントローラを有するEUPデバイスを使用して、同様の構成が実現され得る。たとえば、1つのEUPデバイスはホストモードで構成され得、また、他のEUPデバイスはデバイスモードで構成され得る。代替的には、EUPデバイスは1つのチャンネル当たり1つのマイクロコントローラを有する4つのチャネルを有し得る。この例示的なデバイスは、バスアナライザモードの2つのインスタンスを提供し得、各インスタンスはホストおよびデバイスチャンネルを必要とする。
【0040】
ホストモードとデバイスモードとの間のスイッチング
USBインターフェイスがホストモードについて構成される場合、適切なUSBプルダウン抵抗が構成され、USBフレームがバス上に生成される。デバイスが接続されると、メッセージが実行側に送信され、その後、エニュメレーションプロセスを開始する。実行側からのソフトウェアコマンドは、マイクロコントローラにデバイスモードまたはホストモードにあるべきであるかどうかを指示し得る。
【0041】
ハイレベルブロック図
図8は、テストされるべきコンピュータシステムにおいて、ユニバーサルシリアルバスデバイスをエミュレートするために構成される例示的なコンピュータ(800)のハイレベルブロック図である。非常に基本的な構成(801)において、コンピュータデバイス(800)は典型的に、1つ以上のプロセッサ(810)およびシステムメモリ(820)を含む。メモリバス(830)は、プロセッサ(810)とシステムメモリ(820)との間で通信するために使用され得る。
【0042】
所望の構成に依存して、プロセッサ(810)は、マイクロプロセッサ(μP)、マイクロコントローラ(μC)、デジタル信号プロセッサ(DSP)またはその任意の組合せを含むがこれらに限定されない任意のタイプのプロセッサであり得る。プロセッサ(810)は、レベル1キャッシュ(811)およびレベル2キャッシュ(812)のような1つ以上のレベルのキャッシングと、プロセッサコア(813)と、レジスタ(814)とを含み得る。プロセッサコア(813)は、算術論理演算ユニット(ALU: arithmetic logic unit)、浮動小数点ユニット(FPU:floating point unit)、デジタル信号処理コア(DSPコア:digital signal processing core)またはその任意の組合せを含み得る。メモリコントローラ(815)がさらにプロセッサ(810)と共に使用され得るか、または、いくつかの実現例では、メモリコントローラ(815)はプロセッサ(710)の内部部分であり得る。
【0043】
所望の構成に依存して、システムメモリ(820)は、揮発性メモリ(たとえばRAM)、不揮発性メモリ(たとえばROM、フラッシュメモリなど)、または、その任意の組合せを含むがこれらに限定されない任意のタイプのシステムメモリであり得る。システムメモリ(820)は典型的に、オペレーティングシステム(821)と、1つ以上のアプリケーション(822)と、プログラムデータ(824)とを含む。アプリケーション(822)は、ユニバーサルシリアルバスハードウェアデバイスをエミュレートするための方法を含み得る。プログラムデータ(824)は、1つ以上の処理デバイスによって実行されると、テスト対象のコンピュータデバイスにおいて、ユニバーサルシリアルバスハードウェアデバイスをエミュレートするための方法(823)を実現する命令を格納することを含む。いくつかの実施形態において、アプリケーション(822)は、オペレーティングシステム(821)上でプログラムデータ(824)を用いて動作するように構成され得る。
【0044】
コンピュータデバイス(800)は、基本的な構成(801)と任意の必要とされるデバイスおよびインターフェイスとの間の通信を促進するよう、付加的な特徴または機能および付加的なインターフェイスを有し得る。
【0045】
システムメモリ(820)はコンピュータストレージ媒体の例である。コンピュータストレージ媒体は、RAM、ROM、EEPROM、フラッシュメモリ、もしくは、他のメモリ技術か、CD−ROM、デジタルバーサタイルディスク(DVD)、もしくは、他の光学ストレージか、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは、他の磁気ストレージデバイスか、または、所望の情報を格納するために使用され得るとともにコンピュータデバイス800によってアクセスされ得る任意の他の媒体を含むがこれらに限定されない。任意のそのようなコンピュータストレージ媒体はデバイス(800)の一部であり得る。
【0046】
コンピュータデバイス(800)は、上記の機能のいずれかを含む、携帯電話、スマートフォン、個人用携帯情報端末(PDA)、パーソナルメディアプレーヤデバイス、タブレットコンピュータ(タブレット)、ワイヤレスウェブウォッチデバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、または、ハイブリッドデバイスのようなスモールフォームファクタポータブル(またはモバイル)電子デバイスの部分として実現され得る。コンピュータデバイス(800)はさらに、ラップトップコンピュータ構成および非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとして実現され得る。
【0047】
前述の詳細な説明は、ブロック図、フローチャートおよび/または例の使用を介して、デバイスおよび/またはプロセスのさまざまな実施形態を記載している。その限りにおいて、そのようなブロック図、フローチャートおよび/または例は1つ以上の機能および/または動作を含むので、そのようなブロック図、フローチャートまたは例内の各機能および/または動作が、広い範囲のハードウェア、ソフトウェア、ファームウェア、または、その実質的に任意の組合せによって、個々におよび/または集合的に実現され得るということが当業者によって理解されるであろう。一実施形態において、本願明細書において記載された主題のいくつかの部分は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、他の集積フォーマットを介して、または、ウェブサービスとして、実現され得る。しかしながら、当業者は、本願明細書において開示された実施形態のいくつかの局面は、全体的または部分的に、1つ以上のコンピュータ上で実行される1つ以上のコンピュータプログラムとして、1つ以上のプロセッサ上で実行される1つ以上のプログラムとして、ファームウェアとして、または、その実質的には任意の組合せとして、集積回路において同等に実現され得るということを認識するとともに、回路を設計すること、および/または、ソフトウェアもしくはファームウェアのためのコードを記述することは、この開示を考慮した当業者の技能の範囲内であるということを認識するであろう。さらに、当業者は、本願明細書において記載される主題のメカニズムは、さまざまな形態のプログラムプロダクトとして流通されることが可能であるということを認識するとともに、実際に流通を行なうために使用される特定タイプの一時的でない信号担持媒体にかかわらず、本願明細書において記載された主題の例示的な実施形態が適用されるということを認識するであろう。一時的でない信号担持媒体の例は、フロッピーディスク(登録商標)、ハードディスクドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、デジタルテープ、コンピュータメモリなどといった記録可能なタイプの媒体と、デジタルおよび/またはアナログ通信媒体(たとえばファイバーオプティクスケーブル、導波路、有線通信リンク、無線通信リンクなど)のような送信タイプの媒体とを含むがこれらに限定されない。
【0048】
本願明細書において実質的に任意の複数形および/または単数形の使用に関して、当業者は、文脈および/または用途に対して適切であるように、複数から単数へおよび/または単数から複数へ変換し得る。明瞭さの目的のためにさまざまな単数/複数の順列が明らかに本願明細書において述べられ得る。
【0049】
このように、主題の特定の実施形態が記載されている。他の実施形態は添付の請求の範囲の範囲内である。いくつかの場合において、請求項に記載される動作は、異なる順で実行され得、それでも望ましい結果を達成し得る。さらに、添付の図面において示されるプロセスは、望ましい結果を達成するために、示された特定の順番または順序を必ずしも必要としない。ある実現例において、マルチタスキングおよび並列処理が有利であり得る。