(57)【要約】単一のＵＳＢ割込みエンドポイントは、ＵＳＢデバイス内の２個の異なるアクティブな論理デバイスによって使用可能である。第１の論理デバイスがＵＳＢホストに割り込むとした場合、第１の論理デバイスはエンドポイントに通知を書き込む。通知は、第１のデバイスオブジェクトを識別する番号を運ぶ。しかし、第２の論理デバイスがホストに割り込むとした場合は、第２の論理デバイスは、通知をエンドポイントに書き込むが、通知は第２のデバイスオブジェクトを識別する番号を運ぶ。ＵＳＢホストは通知を読み取る。一例では、番号およびデバイスＩＤが、その通知が第１のオブジェクトに関することを表示する場合は、第１のオブジェクトはその通知を処理する。番号およびデバイスＩＤが、その通知が第２のオブジェクトに関することを表示する場合は、第２のオブジェクトがその通知を処理するように、第１のオブジェクトは第２のオブジェクトに知らせる。
2009535714.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）ＵＳＢデバイス上の割込みエンドポイントから第１の通知を読み取ることと、そして、前記第１の通知をＵＳＢホスト上の第１のデバイスオブジェクト上に受信することと、なおここで、前記第1の通知は第1の数を含む；
（ｂ）前記第１の通知が前記第１のデバイスオブジェクトに向けられていることを決定するために、前記第１のデバイスオブジェクト上で前記第１の番号を使用することと；
（ｃ）前記第１の通知を前記第１のデバイスオブジェクト上で処理することと；
（ｄ）前記割込みエンドポイントから第２の通知を読み取ることと、そして、前記第２の通知を前記第１のデバイスオブジェクト上に受信することと、なおここで、前記第２の通知は第２の番号を含む；
（ｅ）前記第２の通知が第２のデバイスオブジェクトに向けられていることを決定するために、前記第１のデバイスオブジェクト上で前記第２の番号を使用することと；
（ｄ）前記第２のデバイスオブジェクトに前記第２の通知を知らせることと、なおここで、前記第１のデバイスオブジェクトは（ｄ）の前記知らせることを実行する；そして
（ｅ）前記第２のデバイスオブジェクト上で前記第２の通知を処理することと；
を備える方法。
【請求項２】
前記第１の通知は、第１のＵＳＢ割込みメッセージであり、前記第１のＵＳＢ割込みメッセージは、データフィールドを含んでおり、前記第１の番号は、前記第１の割込みメッセージの前記データフィールド内で運ばれ、前記第２の通知は、第２のＵＳＢ割込みメッセージであり、前記第２のＵＳＢ割込みメッセージはデータフィールドを含んでおり、前記第２の番号は、前記第２の割込みメッセージの前記データフィールド内で運ばれる、請求項１に記載の方法。
【請求項３】
前記ＵＳＢホストから前記ＵＳＢデバイスに要求を送信することと、そして、前記要求に応答して、前記ＵＳＢデバイスからデバイス識別子を取得することと、そして
前記第１の番号と前記デバイス識別子の組合せを前記第１のデバイスオブジェクトと関連づけ、前記第２の番号と前記デバイス識別子の組合せを前記第２のデバイスオブジェクトと関連づける情報を、前記ＵＳＢホスト内に記憶することと、
をさらに備える請求項１に記載の方法。
【請求項４】
ステップ（ａ）から（ｅ）は、前記ＵＳＢホスト上のＵＳＢハードウェアと前記ＵＳＢホスト上で実行しているオペレーティングシステムの組合せによって実行される、請求項１に記載の方法。
【請求項５】
プロセッサにＵＳＢデバイス上の割込みエンドポイントから第１の通知を読み取らせ、ＵＳＢホスト上の第１のデバイスオブジェクト上に前記第１の通知を受信するためのコードと、なおここで、前記第1の通知は第1の数を含む;
前記第１の通知が前記第１のデバイスオブジェクトに向けられていることを決定するために、プロセッサに前記第１のデバイスオブジェクト上で前記第１の番号を使用させるためのコードと;
プロセッサに前記第１のデバイスオブジェクト上で前記第１の通知を処理させるためのコードと、
プロセッサに前記割込みエンドポイントから第２の通知を読み取らせ、前記第１のデバイスオブジェクト上に前記第２の通知を受信するためのコードと、なおここで、前記第２の通知は第２の番号を含む；
前記第２の通知が第２のデバイスオブジェクトに向けられていることを決定するために、プロセッサに前記第１のデバイスオブジェクト上で前記第２の番号を使用させるためのコードと；
プロセッサに前記第２のデバイスオブジェクトに前記第２の通知を知らせるためのコードと；そして
プロセッサに前記第２のデバイスオブジェクト上で前記第２の通知を処理させるためのコードと；
を備えるプロセッサ可読媒体。
【請求項６】
（ａ）第１の通知を第１のデバイスオブジェクトに通信するためにＵＳＢ割込みエンドポイントを使用することと；そして
（ｂ）第２の通知を第２のデバイスオブジェクトに通信するために前記ＵＳＢ割込みエンドポイントを使用することと、なおここで、前記第１のデバイスオブジェクトおよび第２のデバイスオブジェクトの両方は、前記第１の通知の前記通信の間および前記第２の通知の前記通信の間、アクティブである；
を備える方法。
【請求項７】
前記第１の通知は、第１のＵＳＢ割込みメッセージであり、前記第１のＵＳＢ割込みメッセージは、データフィールドを含んでおり、第１の番号は、前記第１のＵＳＢ割込みメッセージの前記データフィールド内で運ばれ、前記第２の通知は、第２のＵＳＢ割込みメッセージであり、前記第２のＵＳＢ割込みメッセージは、データフィールドを含んでおり、第２の番号は、前記第２のＵＳＢ割込みメッセージの前記データフィールド内で運ばれ、前記第１の番号は、前記第１のデバイスオブジェクト向けの通知であるとして前記第１の通知を識別するために使用可能であり、前記第２の番号は、前記第２のデバイスオブジェクト向けの通知であるとして前記第２の通知を識別するために使用可能である、請求項６に記載の方法。
【請求項８】
（ａ）の前記使用することは、前記第１の通知を前記ＵＳＢ割込みエンドポイント内に書き込むＵＳＢデバイス上のドライバを伴い、前記第１のデバイスオブジェクトは、ＵＳＢホスト上で実行している第１の量のコードであり、（ｂ）の前記使用することは、前記第２の通知を前記ＵＳＢデバイスエンドポイント内に書き込む前記ドライバを伴い、前記第２のデバイスオブジェクトは、前記ＵＳＢホスト上で実行している第２の量のコードである、請求項６に記載の方法。
【請求項９】
（ｃ）前記ＵＳＢホストから前記ＵＳＢデバイス上に要求を受信することと、そして
（ｄ）前記要求に応答して、前記ＵＳＢデバイスから、前記ＵＳＢデバイスを一意的に識別するデバイス識別子を前記ＵＳＢホストに通信し戻すことと、
をさらに備える請求項８に記載の方法。
【請求項１０】
前記ＵＳＢデバイスは、第１の論理デバイスと第２の論理デバイスとを含み、前記第１の論理デバイスは、第１の記述子によって第１の複数のエンドポイントにマップされ、前記第１の複数のエンドポイントのうちの１つは、前記ＵＳＢ割込みエンドポイントであり、前記第２の論理デバイスは、第２の記述子によって第２の複数のエンドポイントにマップされ、前記第２の記述子は、前記第２の論理デバイスをいずれのＵＳＢ割込みエンドポイントにもマップしない、請求項８に記載の方法。
【請求項１１】
前記第１の割込みエンドポイントは、ＵＳＢデバイスの一部であり、ステップ（ａ）および（ｂ）は、前記ＵＳＢデバイス上のＵＳＢハードウェアおよび前記ＵＳＢデバイス上で実行しているオペレーティングシステムの組合せによって実行される、請求項６に記載の方法。
【請求項１２】
（ａ）プロセッサに第１のデバイスオブジェクトに関する第１の割込み通知をＵＳＢ割込みエンドポイント内に記憶させるためのコードと、そして
（ｂ）プロセッサに第２のデバイスオブジェクトに関する第２の割込み通知を前記ＵＳＢ割込みエンドポイント内に記憶させるためのコードと、
を備え、前記第１のデバイスオブジェクトおよび第２のデバイスオジェクトの両方は、（ａ）の前記記憶する間および（ｂ）の前記記憶する間、アクティブである
プロセッサ実行可能命令を記憶するプロセッサ可読媒体。
【請求項１３】
前記ＵＳＢ割込みエンドポイントは、ＵＳＢデバイスの一部であり、
（ｃ）プロセッサに、前記ＵＳＢデバイスを一意的に識別するデバイス識別子を前記ＵＳＢデバイス上のエンドポイント内に記憶させるためのコード、
をさらに含む請求項１２に記載のプロセッサ可読媒体。
【請求項１４】
ＵＳＢエンドポイントと、そして
第１の論理デバイスに関する第１の割込み通知を前記ＵＳＢエンドポイント内に書き込み、第２の論理デバイスに関する第２の割込み通知も前記ＵＳＢエンドポイント内に書き込む回路と、
を備え、
前記第１および第２の論理デバイスの両方がアクティブであるとき、前記第１および第２の割込み通知は、前記ＵＳＢエンドポイント内に書き込まれる、
ＵＳＢデバイス。
【請求項１５】
前記回路は、
プロセッサと、そして
プロセッサ実行可能命令のプログラムを記憶するメモリと、
を備え、
前記プロセッサによる前記プログラムの実行は、前記第１および第２の割込み通知を前記ＵＳＢエンドポイント内に書き込ませる、
請求項１４に記載のＵＳＢデバイス。
【請求項１６】
前記第１の割込み通知は、第１の番号を含み、前記第１の番号は、前記第１の割込み通知を前記第１の論理デバイスに関するとして識別し、前記第２の割込み通知は、第２の番号を含み、前記第２の番号は、前記第２の割込み通知を前記第２の論理デバイスに関しているとして識別する、請求項１４に記載のＵＳＢデバイス。
【請求項１７】
前記ＵＳＢデバイスは、多機能移動通信電話である、請求項１４に記載のＵＳＢデバイス。
【請求項１８】
第１の論理デバイスと第２の論理デバイスとを具現化するＵＳＢデバイスと、なおここで、ＵＳＢデバイスはＵＳＢエンドポイントを含む；そして
ＵＳＢバスによって前記ＵＳＢデバイスに結合されたＵＳＢホストと、なおここで、前記ＵＳＢホストは、前記ＵＳＢエンドポイントから割込み通知を読み取り、少なくとも一部、前記割込み通知のデータフィールド内で運ばれた番号に基づいて、前記割込み通知が前記第１の論理デバイスに関連する第１のドライバ部分によって処理されることになるのか、あるいは前記第２の論理デバイスに関連する第２のドライバ部分によって処理されることになるのかを決定する機構を含む；
を備えるシステム。
【請求項１９】
前記第１の論理デバイスは、第１の割込み通知を前記ＵＳＢエンドポイント内に書き込むことによって前記ＵＳＢホストに割り込み、前記第２の論理デバイスは、第２の割込み通知を前記ＵＳＢエンドポイント内に書き込むことによって前記ＵＳＢホストに割り込む、請求項１８に記載のシステム。
【請求項２０】
前記ＵＳＢデバイスは、移動通信電話であり、前記ＵＳＢホスト内の前記機構は、中央処理装置と、オペレーティングシステムと、ＵＳＢハブとを備える、請求項１８に記載のシステム。
【請求項２１】
前記ＵＳＢデバイスは、前記ＵＳＢエンドポイントを前記第１の論理デバイスに関連していると定義する第１の記述子を、前記ＵＳＢホストに通信し、前記ＵＳＢデバイスは、他のエンドポイントを前記第２の論理デバイスに関連していると定義するが、いずれの割込みＵＳＢエンドポイントも前記第２の論理デバイスに関連していると定義しない第２の記述子を、前記ＵＳＢホストに通信する、請求項１８に記載のシステム。
【請求項２２】
（ａ）プロセッサにＵＳＢ割込み通知内で運ばれた番号を読み取らせるコードと、なおここで、前記読み取らせることは、第１のデバイスオブジェクトによって実行される；そして
（ｂ）前記ＵＳＢ割込み通知が前記第１のデバイスオブジェクトに関するのか、あるいは、別のデバイスオブジェクトに関するのか、を決定するために、プロセッサに前記番号を使用させるためのコードと、なおここで、（ｂ）の前記使用させることは、前記第１のデバイスオブジェクトによって実行され、前記第１のデバイスオブジェクトおよび前記他のデバイスオブジェクトは、ドライバの一部である；
を備えるプロセッサ実行可能命令、を記憶しているプロセッサ可読媒体。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本出願は、２００６年４月２８に出願された仮出願第６０／７９５，７７３号、および、２００６年６月６日に出願された仮出願第６０／８１１，５２６号の、米国特許法第１１９条のもとでの優先権を主張する。これら両方の仮出願の全体の内容は、参照によりここに組み込まれている。
【背景情報】
【０００２】
（技術分野)
開示された実施形態は、ユニバーサルシリアルバス（ＵＳＢ）に関する。
【０００３】
（背景情報）
ユニバーサルシリアルバス、すなわちＵＳＢバスとして知られているシリアルバスは、デバイスをコンピュータに接続するために通常使用される。デバイスは、ＵＳＢバス上のスレーブとしての役目を果たす。デバイスは、ＵＳＢバスケーブル内の対のデータ導体(pair of data conductors)上でプルアップするプルアップ抵抗を含む。コンピュータはホストと呼ばれる。ホストは、ＵＳＢバス上のマスタとしての役目を果たす。デバイスがＵＳＢケーブルを経由してまずコンピュータに結合する場合、デバイスのプルアップ抵抗はケーブル内のデータ導体上でプルアップする。ホストはこれを検出して、ＵＳＢバスを経由して値をデバイス上の所定のメモリ位置内に書き込むことによって応答する。この所定の位置は、制御エンドポイント(control endpoint)と呼ばれ、通常、「エンドポイント０(endpoint 0)」と呼ばれる。制御エンドポイントに書き込むことは要求と呼ばれる。
【０００４】
デバイスは、どんな種類のデバイスがバスにまさに(just)接続されたか、そしてどんなリソースをデバイスは要求することになるかを表示する情報をホストに提供することによってこの要求に応答する。例えば、ホストは、１つまたは複数の異なる要求をデバイスに発行して、ＵＳＢバスの全域で、要求されたデバイス記述子と、要求された構成記述子と、要求されたインターフェース記述子と、要求されたエンドポイント記述子とを読み取る。記述子は、特定の情報を含むためにフォーマットされることになる、ＵＳＢ仕様によって定義されたデータ構造である。デバイスから取得されたこれらの記述子内の情報から、ホストは必要とされるデバイスドライバのタイプを決定して、適切なデバイスドライバをロードする。このデバイスドライバは、通常、ＵＳＢ機能ドライバ(USB function driver)と呼ばれる。その後、通信は、パイプ(pipes)と呼ばれるものの全域で、デバイスとドライバとの間で発生する。パイプは、デバイス上のエンドポイントとホスト内のドライバとの間の、論理接続(logical connection)である。ホストは、ホストからＵＳＢに送信されたパケット内の４ビットのフィールド内のエンドポイントを特定することによってエンドポイントに書き込むことまたはエンドポイントから読み取ることが可能である。４ビットのフィールドにより、デバイス内に多くても１６対のエンドポイントが存在し得る。したがって、多くても３２個（１６個がホスト内に、１６個がホストから）のアクティブなパイプが存在し得る。
【０００５】
ＵＳＢデバイスは、なおさらにより複雑になりつつある。移動通信電話(cellular telephone)などの物理的デバイス(physical device)は、実際に、複数の異なる論理ＵＳＢデバイスを含む場合がある。例えば、移動通信電話は、ホストの立場から、安全な無線モデムと、安全でないがインターネットサーフィングに適した第２の無線モデムと、ＧＰＳ（全地球測位システム）デバイスと、着脱可能な記憶ドライブとを含むと思われる。安全な無線モデムは安全なネットワーキング通信に従事するのに適している。第２の無線モデムはインターネットサーフィングに適している。ＧＳＰデバイスは定期的な位置情報をホストに送信する。記憶デバイスは、ホストが情報を記憶し、ホストがそこから情報を取り出すことが可能な場所を提供する。すべて物理的な移動通信電話内に具現化されるこれらの異なる論理ＵＳＢデバイス(logical USB devices)は、「論理デバイス(logical devices)」と呼ばれる。
【０００６】
１つのそのような論理デバイスを検討する。例えば、論理デバイスが、ホストが読むための情報を有する場合、論理デバイスはホストに割り込む。しかし、ＵＳＢバスはホスト中心のバスである。ホストだけがトランザクションを開始し、ホストだけがＵＳＢバスケーブルの全域で情報を読み取りかつ／または情報を書き込むことができる。したがって、ホストは、ＵＳＢバスの全域でデバイスに関連する割込みエンドポイントの読取りを定期的に実行する。これは「ポーリング(polling)」と呼ばれる。デバイスがホストに割り込むことを望む場合、デバイスは、割込み条件を表示する情報を割込みエンドポイント内に配置する。したがって、ホストは、ポーリング動作の間、（ＵＳＢバスを経由して）割込みエンドポイントを読み取ることによって割込み条件を学ぶ。情報の読取りがさらなる読取りが必要とされることを表示する場合は、ホストはＵＳＢバスの全域で、論理デバイスに関連する別のエンドポイント(another endpoint)の別の読取りを実行することによって応答する。論理デバイスが安全な無線モデムである場合、暗号化された鍵情報は、安全な無線モデムによって関連づけられるその他のエンドポイント(the other endpoint)からホストによって読み取られることが可能である。
【０００７】
ＵＳＢデバイスが、ますます複雑になり、ますます多くの機能を有しているますます多くの論理デバイスを具現化するにつれ、ＵＳＢデバイスの機能をサポートするために、利用可能な３２個のエンドポイントよりも多くのエンドポイントが要求される可能性がある。１つの可能な解決策は、ＵＳＢ機能を複数のセットに区切り、一度に１セットの機能だけをアクティブに維持することである。これはＵＳＢ標準の下で可能である。これは、１セットの論理デバイスがアクティブである第１の時点で１つの論理デバイスに関してエンドポイントが使用され、第２のセットの論理デバイスがアクティブである第２の時点で第２の論理デバイスに関してエンドポイントが使用されることを可能にする。しかし、ある時点で、論理デバイスを動作不能にさせることは望ましくない。ユーザは、別の論理デバイスに切り替えるために、現在の動作を終了する必要がある可能性がある。別の論理デバイスに切り替えることは、新しいデバイス列挙をトリガし、ユーザのジョブのうちのいくつかを終了させる可能性もある。その結果は、非効率および不都合であろう。
【０００８】
第２の解決策は、物理的ＵＳＢデイバス上に別の物理的ＵＳＢポートおよびその関連するＵＳＢ機能性を提供することである。各物理的ポートおよびその関連する機能性は、１６対のエンドポイントすべてをサポートすることが可能である。ハードウェアの複数のインスタンス(instances)を提供しなければならないため、この解決策は費用がかかる。さらに、物理的ＵＳＢデバイス上の追加の物理的ＵＳＢポートは、どの論理デバイスがどの物理的ＵＳＢポート上でサポートされるかを知らされない可能性があるため、その物理的ＵＳＢポートは、ユーザに混乱を生じさせる可能性がある。さらに、ＵＳＢデバイスソフトウェアは、複数のＵＳＢポートを同時に処理する必要があるため複雑であり得る。
【０００９】
解決策が所望される。
【発明の開示】
【概要】
【００１０】
単一の割込みエンドポイント(interrupt endpoint)は、ＵＳＢデバイス内の２個の異なる論理デバイスによって共有される。第１の論理デバイスがＵＳＢホストに割り込むとする場合は、そのとき、第１の論理デバイスは、割込み通知(interrupt notification)を第１の論理デバイスに関連する割込みエンドポイント(interrupt endpoint)に書き込む。割込み通知は、その通知を第１の論理デバイスに関連する第１のデバイスオブジェクト(device object)に関すると識別する番号、を運ぶ(carries)。しかしながら、第２の論理デバイスがＵＳＢホストに割り込むとする場合は、そのとき第２の論理デバイスは、割込み通知を第１の論理デバイスに関連する割込みエンドポイント内に書き込むが、割込み通知は、通知を第２の論理デバイスに関連する第２のデバイスオブジェクトに関すると識別する番号、を運ぶ。このように、第２の論理デバイスは、ホストに知らせるために専用の割込みエンドポイントを必要としない。代わりに、第２の論理デバイスは、第１の論理デバイスによって所有される割込みエンドポイントを使用する。ＵＳＢホストは、エンドポイントをポーリングし(polls)、通知を読み取る。ＵＳＢホストは、通知が第１のデバイスオブジェクトに関する通知であるのか、あるいは第２のデバイスオブジェクトに関する通知であるのかを決定するために、この番号とデバイスＩＤとを使用する。デバイスＩＤは、物理的ＵＳＢデバイスを一意的に(uniquely)識別する(identifies)番号である。通知が第１のデバイスオブジェクトに関すると決定される場合は、第１のデバイスオブジェクトは通知を処理する。通知が第２のデバイスオブジェクトに関すると決定される場合は、第１のデバイスオブジェクトは第２のデバイスオブジェクトに通知を知らせ、そして、第２のデバイスオブジェクトが通知を処理することができるように、通知を第２のデバイスオブジェクトに転送する。上記に説明されたように、割込みエンドポイントの共有(interrupt endpoint sharing)は、結果として、ＵＳＢホストによる低減されたポーリングをもたらすことができ、したがって、結果として、ＵＳＢバス帯域幅の節約と電力節約とをもたらすことができる。
【００１１】
以上は概要(summary)であり、したがって、必然的に、詳細の簡易化、一般化および省略を含んでいる；したがって、当業者は、概要は単に例示的であり、限定的であることを意味しない、ということを理解するであろう。特許請求の範囲によってのみ定義されるような、ここにおいて説明されるデバイスおよび／またはプロセスの他の態様、発明の特徴、および利点は、ここに記載される非限定的な詳細な説明において明らかになるであろう。
【詳細な説明】
【００１２】
図１は、１つの新規性のある態様によるシステム１００の図である。システム１００は、ユニバーサルシリアルバス（ＵＳＢバス）１０２によってＵＳＢホスト１０３に結合されたＵＳＢデバイス１０１を含む。本実施例では、デバイス１０１は、多機能移動通信電話であり、ホスト１０３はＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムを実行するラップトップパーソナルコンピュータ（ＰＣ）である。デバイス１０１とホスト１０３の間の物理的接続は、１つの端にタイプＡのプラグ(type A plug)１０５を有し、別の端にタイプＢのプラグ１０６を有するＵＳＢケーブル１０４を必要とする。タイプＡのプラグ１０５は、ホスト１０３上の（ＵＳＢレセプタクルとも呼ばれる）タイプＡのＵＳＢポート１０７内に挿入される。タイプＢのプラグ１０６は、デバイス１０１上のタイプＢのポート１０８内に挿入される。ＵＳＢケーブル１０４は、４本の導体を含む。導体のうちの２本は、より対線データ導体Ｄ＋およびＤ−を形成する。このより対線は図１に示される。ケーブル１０４は、図１に例示されない供給電圧導体および接地導体も含む。ＵＳＢバス１０２は、ＵＳＢ  Ｉｍｐｌｅｍｅｎｔｅｒ’ｓ  Ｆｏｒｕｍ、Ｉｎｃ．（ＵＳＢ−ＩＦ）のウェブサイト（ｗｗｗ．ｕｓｂ．ｏｒｇ）から利用可能なＵＳＢ改訂版２．０仕様書に適合する。
【００１３】
ホスト１０３は、ＵＳＢハブハードウェア１０９と、中央処理装置（ＣＰＵ）１２１と、１つまたは複数のプロセッサ可読媒体（例えば、半導体メモリ）とを含む。ホスト１０３内のＣＰＵ１２１は、プロセッサ可読媒体内に記憶されたプロセッサ実行可能命令のオペレーティングシステム１１０（すなわち、ソフトウェア）を実行する。オペレーティングシステム１１０は、プロトコル処理層のＵＳＢ「スタック」と呼ばれることもあるものを含む。ＵＳＢスタックは、ハブドライバ部分１１１と機能ドライバ部分１１２とを含む。この実施例では、オペレーティングシステム１１０は、オペレーティングシステムのＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓファミリーのオペレーティングシステムなどのオペレーティングシステムである。
【００１４】
デバイス１０１は、ここでは「ＵＳＢコア」１１３と呼ばれるＵＳＢハードウェアを含む。プロセッサ１２２は、デバイス１０１内の１つまたは複数のプロセッサ可読媒体内に記憶されたプロセッサ実行可能命令のオペレーティングシステム１１４（すなわち、ソフトウェア）を実行する。オペレーティングシステム１１４は、ＵＳＢコア１１３と相互に作用して、ＵＳＢコア１１３を制御するためのドライバ部分１１５を含む。ドライバ１１５とＵＳＢコア１１３の組合せは、動作可能な１６対のＵＳＢエンドポイントを提供する。ＵＳＢエンドポイントは、ＵＳＢホスト１０３からまたはＵＳＢホスト１０３に渡す情報のシンクまたはソースとして機能する記憶位置である。さらなる詳細については、ＵＳＢ仕様書を参照されたい。
【００１５】
ケーブル１０４内のデータ導体Ｄ＋およびＤ−は、ハブ１０９内の弱いプルダウン抵抗によって当初プロダウンされる。デバイス１０１がケーブル１０４を経由してホスト１０３に当初結合される場合、コア１１３内のより強いプルアップ抵抗はケーブル１０４内のＤ＋導体およびＤ−導体をプルアップする。ホスト１０３内のハブ１０９はこの状態を検出する。応答して、ホスト１０３は標準のＵＳＢ列挙プロセスに従事する。列挙プロセスは、ホスト１０３がバス１０２の全域で初期値をエンドポイント０に書き込むことを伴う。この値はＵＳＢ要求の形態のものである。デバイス１０１は、要求された情報を指定されたエンドポイント（典型的には、エンドポイント０）に書き込むことによって、エンドポイント０内に存在しているＵＳＢ要求に応答する。これは、デバイス１０１のプロセッサが、デバイス１０１のローカルバスを使用して情報をエンドポイントのアドレス内に書き込むことによって行われる。ホスト１０３は、ＵＳＢバスの全域でこのエンドポイントの読取りを実行して、情報を取得する。このように、ホスト１０３は、デバイス記述子(device descriptor)と、構成記述子(configuration descriptor)と、どんな種類のデバイスがバスにまさに接続されたか、およびデバイスはどんなリソースを要求することになるかに関する他の要求された情報とを取得する。デバイス１０１から取得された情報から、ホスト１０３内のオペレーティングシステム１１０は、適切なデバイスドライバを選択およびロードする。この場合、ローディングは、ホスト１０３内のオペレーティングシステム１１０が、ハードディスクなどの大容量記憶装置から２進実行可能コードを取得して、実行のためにそれをメモリ内に配置することを意味する。この実施例における結果は、各論理ＵＳＢデバイスに関してドライバ１１２内に１つのデバイスオブジェクトが存在するというものである。
【００１６】
図１の実施例では、物理的な移動通信電話１０１内に５個の論理ＵＳＢデバイスが存在する。したがって、移動通信電話１０１は多機能ＵＳＢデバイスと呼ばれる。第１の論理デバイスは、「論理デバイス＃１」と示される。第１の論理デバイスは２対のエンドポイントを使用する。第１の対のエンドポイントは「１」と指定され、データ通信のために使用される。第２の対のエンドポイントは「２」と指定される。対のエンドポイント「２」のうちの１つは割込みエンドポイントであり、別のエンドポイントは使用されない。この第１の論理デバイスは、ハブドライバ１１１内に関連する物理的デバイスオブジェクト「Ａ」を有し、機能ドライバ１１２内に関連するデバイスオブジェクト「１」も有する。本実施例では、論理デバイス＃１は、ＴＣＰ／ＩＰプロトコルを使用した安全なサーバに対するＶＰＮ通信など、安全な無線ネットワーキング通信に従事するために使用可能な、安全な無線モデム機能性である。
【００１７】
物理的な移動通信電話１０１内の第２の論理デバイスは「論理デバイス＃２」と示される。第２の論理デバイスは、１対のエンドポイントを有する。この対のエンドポイントは図１で「３」と指定され、データ通信のために使用される。この第２の論理デバイスは、ハブドライバ１１１内に関連する物理的デバイスオブジェクト「Ｂ」を有し、ドライバ１１２内に関連するデバイスオブジェクト「２」も有する。本実施例では、論理デバイス＃２は、インターネットサーフィングに従事するために使用可能な、暗号化されていないモデム機能性である。論理デバイス＃２は割込みエンドポイントを有さない点に留意されたい。
【００１８】
物理的な移動通信電話１０１内の第３の論理デバイスは「論理デバイス＃３」と示される。第２の論理デバイス同様、第３の論理デバイスは、１対のエンドポイントを有し、いかなる割込みエンドポイントも有さない。この対のエンドポイントは図１で「４」と指定され、データ通信のために使用される。論理デバイス＃３は、ハブドライバ１１１内に関連する物理的デバイスオブジェクト「Ｃ」を有し、ドライバ１１２内に関連するデバイスオブジェクト「３」も有する。本実施例では、この論理デバイス＃３は、ホスト１０３に移動通信電話１０１の位置を表示する位置情報を供給することが可能なＧＰＳ（全地球測位システム）デバイスである。
【００１９】
上記に説明された論理デバイス＃１、＃２および＃３に加えて、移動通信電話１０１は、図示されない２個の他の論理ＵＳＢデバイスも含む。図１の実施例では、すべての１６対のエンドポイントは、デバイス１０１内の５個の論理ＵＳＢデバイスによって使用される。物理的デバイスオブジェクト「Ｄ」およびデバイスオブジェクト「４」は、第４の論理デバイスと関連づけられる。物理的デバイスオブジェクト「Ｅ」およびデバイスオブジェクト「５」は、第５の論理デバイスと関連づけられる。
【００２０】
１つの新規性のある態様では、列挙プロセス内でデバイス１０１から要求された通常の情報に加えて、ホスト１０３はデバイス１０１に特別な要求も発行する。特別な要求は、特別な要求コードを有する。ホスト１０３は、バス１０２の全域でこの特別な要求をエンドポイント０内に書き込む。デバイス１０１のドライバ１１５は、デバイス１０１のローカルバスを使用して、エンドポイント０のアドレスからこの特別な要求を読み取り、要求が特別な要求であることを特別な要求コードから決定して、ローカルバスを使用して「デバイスＩＤ」１１６をエンドポイント０内に書き込むことによって応答する。この「デバイスＩＤ」は、物理的デバイス１０１を一意的に識別して、他のＵＳＢポートによってホスト１０３に結合され得る他の物理的デバイスから物理的デバイス１０１を区別するデバイス特定の値(device-specific value)である。
【００２１】
十分な時間の後、ホスト１０３はＵＳＢバス１０２の全域でエンドポイント０を読み取る。それにより、ホスト１０３はデバイスＩＤ１１６を取得する。図２は、エンドポイント０からデバイスオブジェクト「１」への、デバイスＩＤ１１６のこの読取りを例示する。デバイスオブジェクト＃１は、デバイスＩＤを取得するこの動作を実行して、相互参照マッピング表を生成する。相互参照マッピング表は、各論理ＵＳＢデバイスに関して、「インターフェース番号」と「デバイスＩＤ」の識別組合せを識別する。ホスト１０３は、複数の異なる物理的ＵＳＢポートから複数の物理的ＵＳＢデバイスに接続され得るため、かつ各物理的ＵＳＢデバイスは、番号１から始まるインターフェース番号を使用して、その論理デバイスを識別することになるため、論理デバイスのインターフェース番号を単に特定することは、論理デバイスを識別しない可能性がある。しかし、インターフェース番号と共にデバイスＩＤ１１６は各論理デバイスを一意的に識別する。
【００２２】
図３は、相互参照マッピング表を例示する図である。表の第１の行は、デバイスオブジェクト「１」に対応する論理デバイスに関する割込みエンドポイントがインターフェース番号「１」およびデバイスＩＤ「Ａ」によって識別されることを表示する。この場合、デバイスＩＤ  Ａは物理的ＵＳＢデバイス１０１である。表の第２の行は、デバイスオブジェクト「２」に対応する論理デバイスに関する割込みエンドポイントがインターフェース番号「３」およびデバイスＩＤ「Ａ」によって識別されることを表示する。（移動通信電話１０１がＵＳＢケーブル１０４を経由してホスト１０３内にプラグで接続された後）、初期の列挙プロセスの間、各デバイスオブジェクトは１つまたは複数の記入項を表に提供し、各記入項は、デバイスオブジェクトと、デバイスＩＤと、論理デバイスに関連する１つまたは複数のインターフェース番号とを含む。図３の表の相互参照情報を考慮する別の様式は、この相互参照情報は、通知内のインターフェース番号および、そこから通知が受信されたＵＳＢデバイスのデバイスＩＤに基づいて、通知をデバイスオブジェクトにマップする(maps)ことまたはデバイスオブジェクトと関連づけることである。列挙プロセスが完了する場合、Ｗｉｎｄｏｗｓオペレーティングシステム１１０は、多くの場合、新しいデバイスをコントロールパネル内のデバイスマネージャの表示に加える。
【００２３】
そのあとのデバイス動作において、論理デバイス＃２は、ホスト１０３に情報を送信することを望む可能性がある。これを行うために、デバイス１０１上のドライバ１１５は図５内に例示された形態の割込み通知１１７を割込みエンドポイント「１」に書き込む。この割込みエンドポイント「１」は論理デバイス「１」によって使用されるが、１つの新規な態様によれば、論理デバイス＃２によって共有される。割込み通知１１７は、データフィールド１１８内のコンテンツが論理デバイス＃２のインターフェース番号を含むことを除いて、ＵＳＢ標準において提供される（トークンパケットまたは状態パケットとは対照的に）データパケットの標準の形態のものである。本実施例では、インターフェース番号は「３」である。割込み通知１１７は論理デバイス「１」に関する割込みエンドポイント「１」からホスト１０３によって読み取られることが可能であるにもかかわらず、このインターフェース番号は割込み通知１１７を、論理デバイス＃２に関する割込み通知であるとして識別するために使用可能である。割込み通知１１７の４ビットのパケットＩＤ（ＰＩＤ）フィールドは「１０１１」である。この実施例では、ＰＩＤ内のこの値は、パケットタイプがデータ１であることを表示する。
【００２４】
ホスト１０３は、その通常のポーリング動作で、トークンパケット、データパケット、および状態パケットを含む標準ＵＳＢトランザクションの際に、バス１０２の全域で割込みエンドポイント「１」を定期的に読み取る。ホスト１０３が割込みエンドポイント「１」を読み取る場合、ホスト１０３は論理デバイス「２」のインターフェース番号「３」を有する通知１１７（ＵＳＢトランザクションのデータパケット）を取得する。図４は、バス１０２の全域での割込みエンドポイント「１」の読取りを例示する。図５は、割込みエンドポイント「１」からデバイスオブジェクト「１」に転送された通知１１７の形態を例示する。
【００２５】
次に、デバイスオブジェクト「１」は、通知１１７のデータフィールド１１８内で運ばれたインターフェース番号を検査する。この場合、インターフェース番号は「３」である。デバイスオブジェクト「１」は物理的ポート１０７の全域で割込み通知を読み取るため、デバイスオブジェクト「１」は、通知のデバイスＩＤが「Ａ」であることを知っている。物理的ポート１０７は、列挙プロセスの間、デバイスＩＤ「Ａ」と関係づけられた。デバイスオブジェクト１は、次いで、インターフェース番号「３」とデバイスＩＤ「Ａ」を含む、表の行を見つけるために図３の表を調べる。これは表の２番目の行である。表の左手の列内の対応するデバイスオブジェクトは、デバイスオブジェクト２である。したがって、デバイスオブジェクト「１」は、割込み通知１１７はデバイスオブジェクト「１」に関するのではなく、デバイスオブジェクト「２」に関することを決定する。デバイスオブジェクト「１」は、次いで、デバイスオブジェクト「２」に受信された通知を知らせる。一実施例では、デバイスオブジェクト「１」は、デバイスオブジェクト「２」の通知キュー１１９（図６を参照）上に通知１１７を配置することによって、デバイスオブジェクト「２」に割込み通知１１７を知らせる。一実施形態では、各デバイスオブジェクトは１つのかかるキューを有する。加えて、デバイスオブジェクト「１」は、通知がそのキュー内に存在することをデバイスオブジェクト「２」に表示するために、フラッグビットまたは他のインジケータを設定する。デバイスオブジェクト「２」はフラッグビットが設定されたことを決定して、キュー１１９から通知１１７を取り出すことによって応答する。デバイスオブジェクト「２」は、次いで、割込み通知を処理する。通知が、（例えば、データパイプ（エンドポイント３）上でまたは制御パイプ（エンドポイント０）上で）さらなる動作が実行される必要があることを表示する場合、デバイスオブジェクト「２」は、デバイス１０１上の論理デバイス「２」がホスト１０３に送信することを望むデータを取得する目的でエンドポイント「３」の読取りを実行するために知る。
【００２６】
図６は、受信された割込み通知１１７がデバイスオブジェクト「２」に関することをデバイスオブジェクト「２」に知らせるデバイスオブジェクト「１」を例示する。矢印１２０は、通知１１７をデバイスオブジェクト「２」のキュー１１９内に押し入れることを表示する。
【００２７】
論理デバイス「１」に関する割込み通知がホスト１０３に送信されることになる場合、図５の形態の割込み通知は論理デバイス＃１に関する割込みエンドポイント「１」内に配置される。しかし、上の実施例と異なり、インターフェース番号が「３」である場合、インターフェース番号は、この場合、割込み通知が論理デバイス＃１に関することを表示するために「１」である。ホスト１０３は割込みエンドポイント「１」をポーリングして、通知を読み取り、インターフェース番号を検査し、次いで、図３の表を調べるために、インターフェース番号（この場合「１」）とデバイスＩＤ（この場合「Ａ」）を使用する。デバイスオブジェクト「１」は、表の第１の行を割込み通知に関連する行であると識別して、表の左の列内の記入項から、割込み通知がデバイスオブジェクト「１」に関することを決定する。したがって、デバイスオブジェクト「１」は、割込み通知を自ら処理する。通知がさらなる動作が実行される必要があることを表示する場合、デバイスオブジェクト「１」は、デバイス１０１上の論理デバイス「１」がホスト１０３に送信することを望むデータを取得する目的でエンドポイント「２」の読取りを実行するために知る。
【００２８】
したがって、論理デバイス＃１および論理デバイス＃２は両方とも、自己の割込みエンドポイントとしてエンドポイント「１」を使用することが分かる。論理デバイス＃１および論理デバイス＃２は、エンドポイントを「共有」すると言える。論理デバイス＃１が割込み通知をエンドポイント「１」内に配置することを望む場合、論理デバイス＃１はそのデータフィールドが論理デバイス＃１に関連するインターフェース番号を運ぶ割込み通知を配置する。他方で、論理デバイス＃２が割込み通知をエンドポイント「１」内に配置することを望む場合、論理デバイス＃２はそのデータフィールドが論理デバイス＃２に関連するインターフェース番号を運ぶ割込み通知を配置する。ホスト１０３内のデバイスオブジェクトは、通知が向けられている(is directed)デバイスオブジェクトを決定するために、割込み通知の受信時に、通知によって運ばれたインターフェース番号と、通知が生じたＵＳＢデバイスのデバイスＩＤとを使用する。
【００２９】
図７は、１つの新規な態様に従って、ホスト１０３によって実行される方法の簡略化された流れ図である。第１のステップ（２００）において、割込み通知がＵＳＢホスト上に(onto a USB host)受信される。その通知はＵＳＢデバイス上の割込みエンドポイントから送信され、ＵＳＢデバイス上の第１の論理デバイスに関連する第１のデバイスオブジェクト上に受信される。
【００３０】
次に（ステップ２０１）、ホスト上の第１のデバイスオブジェクトは、通知のデータフィールド内で運ばれたインターフェース番号を調べる(examines)。次に（ステップ２０２）、第１のデバイスオブジェクトは、割込み通知が第１のデバイスオブジェクトに関するか、または別のデバイスオブジェクトに関するかを決定するためにインターフェース番号を使用する。一実施例では、第１のデバイスオブジェクトは、図３に例示されたように情報の表を調べるために、インターフェース番号と、通知が発生したＵＳＢデバイスのデバイスＩＤとを使用する。インターフェース番号およびデバイスＩＤから、第１のデバイスオブジェクトは、割込み通知がホスト上のデバイスオブジェクトのうちのどれに向けられているかを決定する。第１のデバイスオブジェクトが割込み通知が第１のデバイスオブジェクトに向けられと決定する（ステップ２０２）場合、第１のデバイスオブジェクトは割込み通知を処理する。
【００３１】
他方、第１のデバイスオブジェクトが、割込み通知が第２のデバイスオブジェクトに向けられていると決定する場合（ステップ２０３）、第１のデバイスオブジェクトは、第２のデバイスオブジェクトに割込み通知を知らせる。一実施例では、第１のデバイスオブジェクトは、第２のデバイスオブジェクトのキュー上に割込み通知を配置して、次いで、記入項がキュー上にあることを第２のデバイスオブジェクトに表示するためにフラッグビットを設定することによって、第２のデバイスオブジェクトに割込み通知を知らせる。第２のデバイスオブジェクトは、次いで、キューから割込み通知を取り出して、割込み通知を処理する。第２のデバイスオブジェクトに向けられた割込み通知は、第１の論理デバイスの割込みエンドポイントを経由してホスト１０３に供給され得る点に留意されたい。このように、２つ以上の論理デバイスが同じ割込みエンドポイントを共有することが可能である。
【００３２】
図８は、１つの新規性のある態様による、ＵＳＢデバイス１０１によって実行される方法の簡略化された流れ図である。ＵＳＢデバイス１０１内のドライバ１１５は、ホスト１０３内の複数の異なるデバイスオブジェクトに割込み通知を送信するために、単一の割込みエンドポイントを使用する（ステップ３００）。割込み通知が向けられている特定のデバイスオブジェクトは、割込み通知のデータフィールド内で運ばれたインターフェース番号によって識別される。ホスト１０３は、割込みエンドポイントの読取りの結果として割込み通知を受信する。次いで、ホスト１０３は、割込み通知が向けられている特定のデバイスオブジェクトを決定するために、発信ＵＳＢデバイスのデバイスＩＤと共に割込み通知からのインターフェース番号を使用する。
【００３３】
説明の目的で、いくつかの実施形態が上記に説明されているが、この特許文書の教示は一般的な適用可能性を有し、上記に説明される特定の実施形態に限定されない。ＵＳＢデバイスの例として移動通信電話が上で説明されるが、ＵＳＢデバイスは、例えば、外部のモデム、音声再生機、音声記録機、ゲームコントローラ、ジョイスティック、デジタルカメラ、データ記憶デバイス、プリンタ、スキャナ、スピーカ、マイクロフォン、マウス、キーボード、電話、モニタ、または別のタイプの周辺機器など、任意のタイプの周辺デバイスであり得る。複数の論理デバイスを含む複合ＵＳＢデバイスは、割込み通信のために上で説明されたように割込みの共有を用いることが可能であり、データの通信のために、デフォルト制御パイプ(default control pipes)および関連するエンドポイントを使用することが可能である。データのホストからデバイスへの転送の場合、ＵＳＢホストはデフォルト制御パイプを経由してデータを通信する。デバイスからホストへの転送の場合、ＵＳＢデバイスは、ＵＳＢホストが適切なインターフェースを用いて受信努力を開始することができるように、インターフェース番号を使用してＵＳＢホストに着信データを知らせる。複数の物理的デバイスがＵＳＢホストに接続されている場合、ＵＳＢホストが正しいデバイスを用いて受信努力を正しく開始することができるように、各物理的デバイスは固有のデバイスＩＤ(unique Device ID)をホストドライバに登録する。このように、割込みの共有が割込み通信のために使用され、他の論理デバイスによって既に使用中のデフォルト制御パイプがデータ通信のために使用されるため、ＵＳＢデバイスの論理デバイスは、いずれの専用のエンドポイントも特定せずにサポートされることが可能である。ＵＳＢデバイスによって生成されているとしてデバイスＩＤが上で説明されるという事実にもかかわらず、他の実施形態では、デバイスＩＤはシステムソフトウェア（例えば、機能ドライバ）および／またはＵＳＢハブドライバによってＵＳＢホスト上で生成される。したがって、説明された具体的な実施形態の様々な特徴の様々な修正、改造、および組合せは、添付の特許請求の範囲から逸脱せずに実施されることができる。
【００３４】
ここで説明されるＵＳＢ割込みエンドポイントの共有技術は、様々な手段によって実施され得る。例えば、これらの技術は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せでインプリメントされる(implemented)ことが可能である。ハードウェアインプリメンテーション(hardware implementation)の場合、ＵＳＢ割込みエンドポイントの共有を実行するために使用される処理装置は、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、デジタル信号処理デバイス（ＤＳＰＤ）、プログラマブル論理デバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、電子デバイス、ここで説明された機能を実行するために設計された他の電子装置、またはそれらの組合せにおいてインプリメントされることが可能である。
【００３５】
ファームウェアインプリメンテーションおよび／またはソフトウェアインプリメンテーションの場合、ＵＳＢ割込みエンドポイントの共有は、ここで説明された機能を実行するモジュール（例えば、手順、機能など）を用いてインプリメントされ得る。ファームウェアコードおよび／またはソフトウェアコードは、メモリ内に記憶されて、プロセッサによって実行されることが可能である。メモリはプロセッサ内で、またはプロセッサの外部でインプリメントされてもよい。
【図面の簡単な説明】
【００３６】
【図１】１つの新規な態様に従うシステムの簡略化された図。
【図２】列挙プロセスの間、図１のＵＳＢデバイス１０１からＵＳＢホスト１０３へのデバイスＩＤの通信を示す簡略化された図。
【図３】列挙プロセスの際に取得されたデバイスＩＤを使用して、図１のＵＳＢホスト内の機能ドライバによって作成される相互参照表を示す図。
【図４】図１のＵＳＢデバイス内のＵＳＢエンドポイントから図１のＵＳＢホスト内のデバイスオブジェクトへの割込み通知の通信を示す簡略化された図。
【図５】図４の割込み通知をより詳細に示す図。
【図６】図４の割込み通知を受信する第１のデバイスオブジェクトがどのように、割込み通知のデータフィールド内のインターフェース番号を検査して、少なくとも一部、このインターフェース番号の値に基づいて、通知が第１のデバイスオブジェクト向けではなく、第２のデバイスオブジェクト向けであることを決定するかを示す簡略化された図。次いで、第１のデバイスオブジェクトは、第２のデバイスオブジェクトに通知を知らせる。
【図７】図１のＵＳＢホスト内で実行される方法を示す流れ図。
【図８】図１のＵＳＢデバイス内で実行される方法を示す流れ図。
【図１】
2009535714.tif 000003
【図２】
2009535714.tif 000004
【図３】
2009535714.tif 000005
【図４】
2009535714.tif 000006
【図５】
2009535714.tif 000007
【図６】
2009535714.tif 000008
【図７】
2009535714.tif 000009
【図８】
2009535714.tif 000010
【国際調査報告】
2009535714.tif 000011
2009535714.tif 000012