(57)【特許請求の範囲】
【請求項１】
ホストと複数の周辺デバイスとの間で通信するためのシステムであって、前記システムは、
前記ホスト上の複数のクラスドライバであって、前記クラスドライバの各々は、前記複数の周辺デバイスのうちの１つ以上の周辺デバイスに関連付けられた機能性を実装する、クラスドライバと、
前記ホスト上の複数のミニポートドライバであって、各ミニポートドライバは、インターフェースを提供し、前記クラスドライバのうちの１つ以上のクラスドライバは、前記インターフェースによって、クラスプロトコルを使用して、前記複数の周辺デバイスのうちの１つ以上の周辺デバイスと通信し、前記ミニポートドライバは、前記ホストによってサポートされている単一ホストインターフェースを通して通信する、ミニポートドライバと、
前記ホスト上のバスコントローラドライバであって、前記バスコントローラドライバは、前記単一ホストインターフェースの第１の部分を実装し、前記バスコントローラドライバは、前記複数の周辺デバイスのうちの前記１つ以上の周辺デバイスのそれぞれのネイティブバスプロトコルの選択的一部を使用して、前記複数のミニポートドライバとインターフェース接続する、バスコントローラドライバと、
前記単一ホストインターフェースのために選定されるバスプロトコルを使用するバストランザクションを実装するように構成されているファームウェアを備える内蔵コントローラであって、前記内蔵コントローラの前記ファームウェアは、前記周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、前記複数の周辺デバイスとインターフェース接続するようにさらに構成され、前記内蔵コントローラは、前記単一ホストインターフェースを使用して、前記複数のミニポートドライバとインターフェース接続する、内蔵コントローラと
を備える、システム。
【請求項２】
前記ホスト上のバスコントローラをさらに備えており、
前記バスコントローラは、前記単一ホストインターフェースの第２の部分を実装し、前記バスコントローラは、前記単一ホストインターフェースを使用して、前記内蔵コントローラとインターフェース接続する、請求項１に記載のシステム。
【請求項３】
前記バスコントローラドライバによって実装される前記単一ホストインターフェースの前記第１の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバス管理プロセスを実装する、請求項２に記載のシステム。
【請求項４】
前記バスコントローラによって実装される前記単一ホストインターフェースの前記第２の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバストランザクションを実装する、請求項２に記載のシステム。
【請求項５】
前記複数の周辺デバイスと相互動作するために前記ホストによって使用される情報は、前記単一ホストインターフェースを使用して、前記ホストと前記内蔵コントローラとの間で通信され、前記複数の周辺デバイスと相互動作するために前記ホストによって使用される前記情報は、前記複数の周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、前記内蔵コントローラと前記複数の周辺デバイスとの間で通信される、請求項１に記載のシステム。
【請求項６】
前記単一ホストインターフェースは、ｅＳＰＩ（拡張シリアル周辺インターフェース）、ＬＰＣ、シリアルインターフェース、Ｉ２Ｃインターフェース、ＵＳＢインターフェース、ＳＰＩインターフェース、およびＣＡＮインターフェースから成る群から選択されるインターフェースである、請求項１に記載のシステム。
【請求項７】
ホストと複数の周辺デバイスとの間で通信する方法であって、前記方法は、
前記複数の周辺デバイスに関連付けられた機能性を提供することであって、前記機能性は、複数のクラスドライバによって前記ホスト上に提供される、ことと、
前記複数のクラスドライバと前記複数の周辺デバイスとの間で第１の通信を伝送することであって、前記第１の通信は、前記周辺デバイス機能性を前記ホスト上に実装し、前記第１の通信は、クラスプロトコルを使用して、複数のミニポートドライバによって伝送される、ことと、
前記複数のミニポートドライバと内蔵コントローラとの間で第２の通信を伝送することであって、前記第２の通信は、単一ホストインターフェースを使用して伝送され、前記第２の通信は、前記単一ホストインターフェースの第１の部分を実装するバスコントローラドライバを介して伝送され、前記バスコントローラドライバは、前記複数の周辺デバイスのうちの１つ以上の周辺デバイスのそれぞれのネイティブバスプロトコルの選択的一部を使用して、前記複数のミニポートドライバとインターフェース接続し、前記内蔵コントローラは、前記単一ホストインターフェースを実装するファームウェアを備え、前記ファームウェアは、前記単一ホストインターフェースを使用して、バスコントローラと通信する、ことと、
内蔵コントローラと前記複数の周辺デバイスとの間で第３の通信を伝送することであって、前記第３の通信は、前記複数の周辺デバイスのそれぞれのネイティブバスプロトコルを使用して伝送される、ことと
を含む、方法。
【請求項８】
前記第２の通信は、前記バスコントローラドライバを介して、かつ前記単一ホストインターフェースの第２の部分を実装するバスコントローラを介して伝送される、請求項７に記載の方法。
【請求項９】
前記バスコントローラドライバによって実装される前記単一ホストインターフェースの前記第１の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバス管理プロセスを実装する、請求項８に記載の方法。
【請求項１０】
前記バスコントローラによって実装される前記単一ホストインターフェースの前記第２の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバストランザクションを実装する、請求項８に記載の方法。
【請求項１１】
前記クラスプロトコルおよび前記複数の周辺デバイスのそれぞれのネイティブバスプロトコルを利用する前記第１の通信および第３の通信を前記単一ホストインターフェースを利用する前記第２の通信に変換することをさらに含む、請求項７に記載の方法。
【請求項１２】
前記単一ホストインターフェースは、シリアルインターフェース、Ｉ２Ｃインターフェース、ＵＳＢインターフェース、ＳＰＩインターフェース、およびＣＡＮインターフェースから成る群から選択される、請求項７に記載の方法。
【請求項１３】
前記内蔵コントローラは、ホストデバイスのプロセッサによってサポートされているメモリインターフェースまたはメールボックスインターフェースを使用して、前記ホストデバイスと通信する、請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の引用）
本願は、米国仮出願第６２／０００，０８９号（２０１４年５月１９日出願）の利益を主張し、上記出願は、その全体が本明細書に引用される。
【０００２】
（技術分野）
本開示は、単一ホストインターフェースを介したホストデバイスとの周辺デバイス通信に関する。
【背景技術】
【０００３】
パーソナルコンピュータの出現に伴って、種々のヒューマンインターフェースデバイス（ＨＩＤ）が着実に急増しつつあり、ＨＩＤは、ヒトユーザが入力を提供し、ホストデバイス上で実行するコンピュータプログラムから出力を受信するための機構を提供する。パーソナルコンピュータの能力が進歩するにつれて、ユーザに利用可能な周辺ＨＩＤも同様に多様化および精巧化している。これは、周辺デバイスとホストデバイスとの間で通信するための多くの異なるハードウェアおよびソフトウェアインターフェースをもたらしている。
【０００４】
周辺デバイスとの通信をサポートすることにおいてホストデバイスによって利用されるソフトウェアインターフェースの組は、典型的には、インターフェースのスタックされた層として編成される。スタック内の各層は、周辺デバイスの動作のためにホストデバイスによって要求される機能性の特定の側面を実装するソフトウェアプログラムから成る。スタックの下層は、ホストデバイスのプロセッサをハードウェアバスとインターフェース接続するソフトウェアプログラムであり、ハードウェアバスは、周辺デバイスへおよびそこから信号を伝送するために使用される。スタックの上層は、ヒトユーザまたは他のソフトウェアプログラムがそれによって周辺デバイスを動作させることができるインターフェースを提供するソフトウェアプログラムである。
【０００５】
新しい周辺デバイスがホストデバイスによる使用のためにインストールされると、そのインストールプロセスの一部は、ホストデバイスのスタックが新しい周辺デバイスと通信するために必要な全ソフトウェアを含むかどうかを検証することを含む。多くの場合、このインストールプロセスは、新しい周辺デバイスを完全に利用するために要求されるデバイス特有のソフトウェアを含むための少なくともいくつかの更新をソフトウェアスタックに対して要求する。デバイス特有のソフトウェアのインストールは、常時、全適合性問題に対処するわけではない。ホストデバイスが新しい周辺デバイスとインターフェース接続するために、ホストデバイスは、周辺デバイスによって要求される低レベルバス通信プロトコルをサポートしなければならない。ホストデバイスによるバス通信プロトコルのサポートは、通常、ハードウェアレベルバス実装を要求し、その実装は、理想的には、ホストデバイスが設計および製造されるときに実装される。
【０００６】
キーボードおよびマウス等のデバイスを含む初期世代の周辺ＨＩＤは、シリアルポートを使用してホストデバイスとインターフェースをとっていた。これらの初期シリアルポートＨＩＤの多くは、Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ（ＬＰＣ）バスを介して、ホストデバイスのプロセッサと通信していた。ＬＰＣバスのサポートは、典型的には、ホストデバイスプロセッサ上の専用ピンによってホストデバイス上で実装される。他のバスプロトコルも同様に、ホストデバイスのハードウェアレベルで実装されることができる。ホストデバイス製造業者は、どのバスプロトコルをハードウェアレベルでサポートすべきかを選定し、それは、ホストデバイスがある周辺デバイスと適合性があるかどうかを決定づける。
【０００７】
新しいタイプの周辺ＨＩＤが市場に参入するにつれて、周辺機器によって使用されるＬＰＣバスシリアルインターフェースは、新しい周辺デバイスインターフェースに取って代わられた。しかしながら、周辺ＨＩＤによって使用される専用インターフェースの数の結果として生じた増加は、ホストデバイス製造業者がサポートすることを不可能にした。この苦境に大きく影響され、ハードウェアおよびソフトウェア製造業者の企業体は、周辺デバイスがホストデバイスと通信するための標準化インターフェースを提供する、ユニバーサルシリアルバス（ＵＳＢ）を開発した。ＵＳＢは、産業全体を通して急速に採用され、周辺ＨＩＤの急増をさらに促している。
【０００８】
ＵＳＢの人気にもかかわらず、周辺デバイスによって利用されるハードウェアインターフェースおよびバスプロトコルは、進化し続けている。新しいインターフェースが、導入され続け、既存のインターフェースは、周辺機器の新しいクラスによる使用のために適合される。ある場合には、ソフトウェア更新のみ、新しいインターフェースをサポートするために要求される。例えば、周辺デバイス通信をさらに標準化するための試みは、新しい周辺デバイスインターフェースをもたらした。ＨＩＤ−ＵＳＢプロトコルは、ＵＳＢプロトコルを使用して、ＨＩＤ通信を標準化する。ＨＩＤ−Ｉ２Ｃプロトコルも同様に、Ｉ２Ｃプロトコルを使用して、ＨＩＤ通信を標準化する。ホストデバイスが、ＵＳＢおよびＩ２Ｃバスプロトコルのためのハードウェアサポートを含む限り、ホストデバイスは、ホストデバイスのソフトウェアスタックに対する更新を通して、ＨＩＤ−ＵＳＢまたはＨＩＤ−Ｉ２Ｃプロトコルを利用する周辺デバイスをサポートすることができる。
【０００９】
他の場合では、新しい周辺インターフェースは、ホストデバイスによるハードウェアサポートを要求するであろう。例えば、センサが、周辺デバイスの構成要素として採用され続けるにつれて、新しいインターフェース（Ｉ２Ｃ等）が、このような比較的に新しいクラスの周辺デバイスによって使用されることになる。ｅＳＰＩは、内蔵コントローラ（ＥＣ）に対する単一ホストインターフェースとしてＬＰＣに取って代わる新しいインターフェースである。他のバスプロトコルと同様に、ｅＳＰＩバスのサポートは、理想的には、ｅＳＰＩバスプロトコルを実装するために必要なソフトウェアを含むことに加え、ホストデバイスのプロセッサピンをこのｅＳＰＩバスを実装するために専用にすることによって実装される。
【００１０】
ホストデバイス製造業者は、新しいクラスの周辺デバイスによって使用される新しいバスプロトコルのためのハードウェアサポートを含めるかどうかを決定することにおいて将来を見据えなければならない。旧来の周辺デバイスも、ホストデバイス製造業者に同様の圧力をかける。人気のある周辺デバイスのためのサポートを提供し続ける必要性は、多くの場合、ホストデバイス製造業者に、旧来のハードウェアインターフェースをサポートし続けることを余儀なくさせる。したがって、ホストデバイス製造業者は、依然として、旧来のバスプロトコルのためのサポートを維持しながら、新しい周辺デバイスによって使用される新しく出現したバスプロトコルのためのサポートを含むことを求める圧力に直面する。さらに、ホストデバイス製造業者は、既存のバスプロトコルに対する更新をシームレスにサポートすることに適応的でなければならない。ホストデバイスによる使用のために利用可能なソフトウェアインターフェースに対する更新は、ハードウェアレベルインターフェースに対する更新と比較して、達成が比較的に容易である。例えば、クラスデバイスドライバを更新し、新しい周辺デバイス機能性をサポートすることは、ホストデバイスに対して、ｅＳＰＩ等の新しいバスプロトコルのためのサポートを追加することと対比して、サポートが比較的に容易である。故に、既存のバスプロトコルハードウェアを利用して、新しいバスプロトコルをサポートすることができるホストデバイスに対する必要がある（そうでなければ、新しいバスプロトコルは、ホストデバイスによる追加のハードウェアサポートを要求するであろう）。
【発明の概要】
【課題を解決するための手段】
【００１１】
全人気のある周辺デバイスインターフェースのためのサポートを提供するためにホストデバイスにかかる負担を緩和するために、単一プロトコルのみを使用しながら、ホストが周辺デバイスと通信することができ、その間ずっと、周辺デバイスおよびその関連付けられたソフトウェアがそのそれぞれのネイティブ通信プロトコルを使用して動作し続けることを可能にする機構に対する必要性がある。この機構が、新しい周辺デバイスプロトコルのためのサポートを追加するために構成可能であること対する必要性もある。
【００１２】
実施形態によると、ホストと複数の周辺デバイスとの間で通信するためのシステムが、提供される。ホストは、複数のクラスドライバおよびミニポートドライバを含む。クラスドライバの各々は、複数の周辺デバイスのうちの１つ以上のものに関連付けられた機能性を実装する。各ミニポートドライバは、インターフェースを提供し、それによって、クラスドライバのうちの１つ以上のものは、クラスプロトコルを使用して、複数の周辺デバイスのうちの１つ以上のものと通信し、ミニポートドライバは、ホストによってサポートされている単一ホストインターフェースを通して通信する。内蔵コントローラは、周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、複数の周辺デバイスとインターフェースをとり、内蔵コントローラは、単一ホストインターフェースを使用して、複数のミニポートドライバとインターフェース接続する。
【００１３】
別の実施形態は、ホスト上のバスコントローラドライバであって、バスコントローラドライバは、単一ホストインターフェースの第１の部分を実装し、複数の周辺デバイスのうちの１つ以上のもののそれぞれのネイティブバスプロトコルの選択的一部を使用して、ミニポートドライバとインターフェース接続する、バスコントローラドライバと、ホスト上のバスコントローラであって、バスコントローラは、単一ホストインターフェースの第２の部分を実装し、単一ホストインターフェースを使用して、内蔵コントローラとインターフェース接続する、バスコントローラとを備えている。別の実施形態では、バスコントローラドライバによって実装される単一ホストインターフェースの第１の部分は、単一ホストインターフェースを使用して通信するために必要とされるバス管理プロセスを実装する。別の実施形態では、バスコントローラによって実装される単一ホストインターフェースの第２の部分は、単一ホストインターフェースを使用して通信するために必要とされるバストランザクションを実装する。別の実施形態では、内蔵コントローラは、単一ホストインターフェースを実装し、単一ホストインターフェースを使用して、バスコントローラと通信する、ファームウェアを備えている。別の実施形態では、複数の周辺デバイスと相互動作するためにホストによって使用される情報は、単一ホストインターフェースを使用して、ホストと内蔵コントローラとの間で通信され、複数の周辺デバイスと相互動作するためにホストによって使用される情報は、複数の周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、内蔵コントローラと複数の周辺デバイスとの間で通信される。別の実施形態では、単一ホストインターフェースは、ｅＳＰＩ（拡張シリアル周辺インターフェース）、ＬＰＣ、シリアルインターフェース、Ｉ２Ｃインターフェース、ＵＳＢインターフェース、ＳＰＩインターフェース、およびＣＡＮインターフェースから成る群から選択されるインターフェースである。
本発明は、例えば、以下を提供する。
（項目１）
ホストと複数の周辺デバイスとの間で通信するためのシステムであって、前記システムは、
前記ホスト上の複数のクラスドライバであって、前記クラスドライバの各々は、前記複数の周辺デバイスのうちの１つ以上のものに関連付けられた機能性を実装する、クラスドライバと、
前記ホスト上の複数のミニポートドライバであって、各ミニポートドライバは、インターフェースを提供し、前記クラスドライバのうちの１つ以上のものは、前記インターフェースによって、クラスプロトコルを使用して、前記複数の周辺デバイスのうちの１つ以上のものと通信し、前記ミニポートドライバは、前記ホストによってサポートされている単一ホストインターフェースを通して通信する、ミニポートドライバと、
前記周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、前記複数の周辺デバイスとインターフェース接続する内蔵コントローラと
を備え、
前記内蔵コントローラは、前記単一ホストインターフェースを使用して、前記複数のミニポートドライバとインターフェース接続する、システム。
（項目２）
前記ホスト上のバスコントローラドライバであって、前記バスコントローラドライバは、前記単一ホストインターフェースの第１の部分を実装し、前記複数の周辺デバイスのうちの１つ以上のもののそれぞれのネイティブバスプロトコルの選択的一部を使用して、前記ミニポートドライバとインターフェース接続する、バスコントローラドライバと、
前記ホスト上のバスコントローラであって、前記バスコントローラは、前記単一ホストインターフェースの第２の部分を実装し、前記単一ホストインターフェースを使用して、前記内蔵コントローラとインターフェース接続する、バスコントローラと
をさらに備えている、項目１に記載のシステム。
（項目３）
前記バスコントローラドライバによって実装される前記単一ホストインターフェースの第１の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバス管理プロセスを実装する、項目２に記載のシステム。
（項目４）
前記バスコントローラによって実装される前記単一ホストインターフェースの第２の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバストランザクションを実装する、項目２に記載のシステム。
（項目５）
前記内蔵コントローラは、前記単一ホストインターフェースを実装するファームウェアを備え、前記ファームウェアは、前記単一ホストインターフェースを使用して、前記バスコントローラと通信する、項目２に記載のシステム。
（項目６）
前記複数の周辺デバイスと相互動作するために前記ホストによって使用される情報は、前記単一ホストインターフェースを使用して、前記ホストと前記内蔵コントローラとの間で通信され、前記複数の周辺デバイスと相互動作するために前記ホストによって使用される前記情報は、前記複数の周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、前記内蔵コントローラと前記複数の周辺デバイスとの間で通信される、項目１に記載のシステム。
（項目７）
前記単一ホストインターフェースは、ｅＳＰＩ（拡張シリアル周辺インターフェース）、ＬＰＣ、シリアルインターフェース、Ｉ２Ｃインターフェース、ＵＳＢインターフェース、ＳＰＩインターフェース、およびＣＡＮインターフェースから成る群から選択されるインターフェースである、項目１に記載のシステム。
（項目８）
複数の周辺デバイスと通信するためのデバイスであって、
複数のクラスドライバであって、前記クラスドライバの各々は、前記複数の周辺デバイスのうちの１つ以上の周辺デバイスに関連付けられた機能性を実装する、クラスドライバと、
複数のミニポートドライバであって、各ミニポートドライバは、インターフェースを提供し、前記クラスドライバのうちの１つ以上のものは、前記インターフェースによって、クラスプロトコルを使用して、前記１つ以上の周辺デバイスと通信し、前記ミニポートドライバは、前記ホストによってサポートされている単一ホストインターフェースを通して通信する、ミニポートドライバと、
前記周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、前記複数の周辺デバイスとインターフェース接続する内蔵コントローラと
を備え、
前記内蔵コントローラは、単一ホストインターフェースを使用して、前記複数のミニポートドライバとインターフェース接続する、デバイス。
（項目９）
バスコントローラドライバであって、前記バスコントローラドライバは、前記単一ホストインターフェースの第１の部分を実装し、前記１つ以上の周辺デバイスのそれぞれのネイティブバスプロトコルの選択的一部を使用して、前記ミニポートドライバとインターフェース接続する、バスコントローラドライバと、
バスコントローラであって、前記バスコントローラは、前記単一ホストインターフェースの第２の部分を実装し、前記単一ホストインターフェースを使用して、前記内蔵コントローラとインターフェース接続する、バスコントローラと
をさらに備えている、項目８に記載のデバイス。
（項目１０）
前記バスコントローラドライバによって実装される前記単一ホストインターフェースの第１の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバス管理プロセスを実装する、項目９に記載のデバイス。
（項目１１）
前記バスコントローラによって実装される前記単一ホストインターフェースの第２の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバストランザクションを実装する、項目９に記載のデバイス。
（項目１２）
前記内蔵コントローラは、前記単一ホストインターフェースを実装するファームウェアを備え、前記ファームウェアは、前記単一ホストインターフェースを使用して、前記バスコントローラと通信する、項目９に記載のデバイス。
（項目１３）
前記単一ホストインターフェースは、ｅＳＰＩ（拡張シリアル周辺インターフェース）、ＬＰＣ、シリアルインターフェース、Ｉ２Ｃインターフェース、ＵＳＢインターフェース、ＳＰＩインターフェース、およびＣＡＮインターフェースから成る群から選択されるインターフェースである、項目８に記載のデバイス。
（項目１４）
ホストと複数の周辺デバイスとの間で通信する方法であって、前記方法は、
前記複数の周辺デバイスに関連付けられた機能性を提供することであって、前記機能性は、複数のクラスドライバによって前記ホスト上に提供される、ことと、
前記複数のクラスドライバと前記複数の周辺デバイスとの間で第１の通信を伝送することであって、前記第１の通信は、前記周辺デバイス機能性を前記ホスト上に実装し、前記第１の通信は、クラスプロトコルを使用して、複数のミニポートドライバによって伝送される、ことと、
前記複数のミニポートドライバと内蔵コントローラとの間で第２の通信を伝送することであって、前記第２の通信は、単一ホストインターフェースを使用して伝送される、ことと、
内蔵コントローラと前記複数の周辺デバイスとの間で第３の通信を伝送することであって、前記第３の通信は、前記複数の周辺デバイスのそれぞれのネイティブバスプロトコルを使用して伝送される、ことと
を含む、方法。
（項目１５）
前記第２の通信は、前記単一ホストインターフェースの第１の部分を実装するバスコントローラドライバを介して、かつ前記単一ホストインターフェースの第２の部分を実装するバスコントローラを介して伝送される、項目１４に記載の方法。
（項目１６）
前記バスコントローラドライバによって実装される前記単一ホストインターフェースの第１の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバス管理プロセスを実装する、項目１５に記載の方法。
（項目１７）
前記バスコントローラによって実装される前記単一ホストインターフェースの第２の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバストランザクションプロセスを実装する、項目１５に記載の方法。
（項目１８）
前記内蔵コントローラは、前記単一ホストインターフェースを実装するファームウェアを備え、前記ファームウェアは、前記単一ホストインターフェースを使用して、前記バスコントローラと通信する、項目１５に記載の方法。
（項目１９）
前記クラスプロトコルおよび前記複数の周辺デバイスのそれぞれのネイティブバスプロトコルを利用する前記第１および第３の通信を前記単一ホストインターフェースを利用する前記第３の通信に変換することをさらに含む、項目１４に記載の方法。
（項目２０）
前記単一ホストインターフェースは、シリアルインターフェース、Ｉ２Ｃインターフェース、ＵＳＢインターフェース、ＳＰＩインターフェース、およびＣＡＮインターフェースから成る群から選択される、項目１４に記載の方法。
【図面の簡単な説明】
【００１４】
本発明は、付随の図面を参照することによって、より理解され、その多数の目的、特徴、および利点は、当業者に明白となり得る。異なる図面内の同一参照記号の使用は、類似または同じアイテムを示す。
【００１５】
【図１】図１は、周辺デバイスの組との通信をサポートするために従来のホストデバイスによって利用されるソフトウェアインターフェースのスタックされた組を図示するブロック図である。
【００１６】
【図２】図２は、周辺デバイスの組との通信をサポートするためにホストデバイスの一実施形態によって利用されるソフトウェアインターフェースのスタックされた組を図示するブロック図である。
【００１７】
【図３】図３は、単一ホストインターフェースを経由してＩ２ＣＨＩＤとの通信をサポートする実施形態によって利用される、ソフトウェアおよびファームウェアスタックを図示する。
【発明を実施するための形態】
【００１８】
ホストデバイスを使用する周辺デバイスの動作は、ホストデバイスによって提供されるソフトウェアおよびハードウェアインターフェースとの周辺デバイスの適合性を確実にすることを要求する。多くの場合、ハードウェア適合性を決定することは、ホストデバイスが新しい周辺デバイスによって要求されるハードウェアバスのタイプをサポートするかどうかを確認することのみである。多くの事例では、ハードウェア適合性は、ホストデバイスおよび周辺デバイスが設計されおよび製造されるときに決定される。いくつかの事例では、ホストデバイスは、新しい周辺デバイスをサポートするために、汎用ハードウェアを再構成することによって修正され得る。周辺デバイスが、ホストデバイスによって提供されるハードウェアインターフェースと適合性があると決定される場合、ソフトウェア適合性が、次いで、確認されることができる。
【００１９】
ソフトウェアの観点から、適合性は、ホストデバイスが周辺デバイスを動作させるために必要なソフトウェアを実行することを要求する。説明されたように、大部分のホストデバイスシステムは、典型的には、このソフトウェアをインターフェースのスタックされた層の中に編成する。各層は、ホストデバイスと適合性のある周辺デバイスとの間にサポートされる通信経路を実装するために使用されるサービスの特殊な組を提供する。新しい周辺デバイスをサポートすることは、正しいソフトウェアインターフェースがスタックの各層で利用可能であることを確実にすることを要求する。ある場合には、ホストデバイスによってすでに使用中の既存のライブラリが、新しい周辺デバイスをサポートするために適正である。他の場合には、スタックの１つ以上のレベルにおける更新ソフトウェアプログラムが、要求される。
【００２０】
従来のシステムでは、スタック内の最高層は、アプリケーションソフトウェアプログラムから成る。これらのデバイス特有のプログラムは、インターフェースを提供し、インターフェースは、周辺デバイスによって提供される特徴および機能性がそれによって動作させられるユーザインターフェースを含み得る。アプリケーションソフトウェアによって提供される特徴を実装する低レベル命令を実装するデバイスドライバプログラムが、アプリケーションソフトウェアの下方の層内で動作する。大部分のシステムは、クラスデバイスドライバプログラムに依拠し、クラスデバイスドライバプログラムは、特定のタイプの種々の周辺プログラムを動作させるために使用されることができるドライバプログラムの標準化ライブラリを提供する。例えば、ＨＩＤクラスＵＳＢドライバは、ＵＳＢプロトコルを使用するＨＩＤと相互動作するための共通機能性を含むであろう。類似したＨＩＤクラスＩ２Ｃドライバは、Ｉ２Ｃプロトコルを使用する同一の共通ＨＩＤ機能性を実装することができる。周辺デバイスのあるデバイス特有の能力は、クラスドライバによってサポートされない場合がある。これらのシナリオは、デバイス特有の機能性を実装するためのミニクラスドライバプログラムもインストールされることを要求し得る。ミニクラスドライバは、クラスドライバと相互動作するように構成され、ミニクラスドライバは、デバイス特有の機能性を提供し、クラスドライバは、一般的機能性を提供する。
【００２１】
ホストデバイスがそれによって周辺デバイスと通信する通信プロトコルを実装するソフトウェアプログラムが、クラスドライバの下方にある。これらの下位レベル層は、バスプロトコルドライバとバスコントローラプログラムとを含む。各バスプロトコルドライバは、ＵＳＢおよびＩ２Ｃ等の特定のバスプロトコルを介して周辺デバイスと通信するための命令を実装する。バスコントローラは、サポートされるハードウェアバスのうちの１つに沿ってデータを実際に伝送するための命令を実装する。一緒になって、これらの２つの層は、ホストデバイスと周辺デバイスとの間で情報を伝送するために使用されるバスプロトコルを実装する。従来のシステムでは、ホストデバイスは、バスプロトコルのサポートにおいて、ハードウェア実装を提供しなければならない。ある場合には、これらのプロトコルは、プロトコルによって使用されるバスをホストデバイスプロセッサとインターフェース接続するための専用ピンを使用して、実装される。これらのバスプロトコル実装は、多くの場合、ハードウェア依存性であるので、新しいバスプロトコルは、ホストデバイスによって容易にサポートされることができない。
【００２２】
図１は、周辺デバイスの組１１０ａ−ｆとの通信をサポートするために、従来のホストデバイス１００において利用されるスタックされたインターフェースの典型的システムを図示する。従来のシステムでは、市場の種々の周辺デバイスをサポートすることは、有意な負担をホストデバイス１００にかける。ホストデバイス１００は、市場の種々の周辺デバイスとのロバストな適合性を提供するために、ハードウェアおよびソフトウェアインターフェースの多様な組をサポートするように設計および製造されなければならない。説明されるように、このような適合性は、ホストデバイス１００の能力が周辺機器市場における新しい技術の採用に応答して更新されることができるように、将来を見据えなければならない。適合性はまた、ホストデバイス１００が人気のある旧来のデバイスのためのサポートを提供し続けるために、過去も考慮しなければならない。
【００２３】
図１の従来のシステム内の上層において、アプリケーションソフトウェア１１５ａ−ｆは、周辺デバイス１１０ａ−ｆによって提供される特徴および機能性に対するインターフェースを提供する。いくつかの事例では、このアプリケーションソフトウェア１１５ａ−ｆは、ホストデバイス１００が、それによって、ヒトユーザが周辺デバイス１１０ａ−ｆと相互作用することを可能にするインターフェースを提供し得る。他の事例では、アプリケーションソフトウェア１１５ａ−ｆは、ソフトウェアインターフェースのみを提供し得る。図１に図示されるスタックされた層の残りは、アプリケーションソフトウェア１１５ａ−ｆを周辺デバイス１１０ａ−ｆにリンクするために、ホストデバイス１００によって利用される。
【００２４】
図１の従来のシステムに図示されるスタックされた層は、ホストデバイス１００が、ある範囲の通信プロトコルを介した周辺デバイスとの通信をサポートすることを可能にする。タッチスクリーンＨＩＤ１１５ｅをサポートするタッチスクリーンソフトウェアは、ホストデバイスのＣＰＵ上で実行し、Ｉ２Ｃを介して、周辺タッチスクリーンＨＩＤ１１０ｂと通信する。キーボード１１５ｄの特徴を実装するためのソフトウェアは、周辺ＵＳＢキーボード１１０ｅから入力を受信する。ホストデバイス１００はまた、シリアルポートインターフェースを介して外部モニタ１１０ａと通信する、外部ディスプレイソフトウェア１１５ａを実行する。ホストデバイス１００はまた、Ｉ２Ｃを介して、外部バッテリ１１０ｃとインターフェース接続するバッテリモニタソフトウェアプログラム１１５ｂを実行する。ホストデバイス１００はまた、ＵＳＢフラッシュドライブ１１０ｄとインターフェース接続する外部データ記憶１１５ｅをサポートするソフトウェアを実行する。ホストデバイス１００はまた、シリアル周辺インターフェース（ＳＰＩ）を介して周辺ビデオゲームパッド１１０ｆとインターフェース接続するビデオゲームソフトウェア１１５ｆを実行する。
【００２５】
図１に描写される従来のシステムでは、ホストデバイス１００が周辺デバイス１１０ａ−ｆの各々に対するサポートを提供するために、ホストデバイス１００はまた、クラスドライバ１２０ａ−ｆ、トランスポートミニドライバ１３５ａ−ｂ、バスプロトコルドライバ１２５ａ−ｄ、およびバスコントローラ１３０ａ−ｄ等の構成要素の層を利用する。これらの層の各々は、周辺デバイス１１０ａ−ｆによって使用される下位レベル通信プロトコルの側面を実装する。例えば、外部モニタ１１０ａ等のシリアルポート周辺デバイスのサポートでは、ホストデバイス１００上で稼働する外部ディスプレイソフトウェア１１５ａは、外部ディスプレイソフトウェア１１５ａに高レベルシリアルポートソフトウェアインターフェースを提供するシリアルポートクラスドライバ１２０ａ等の構成要素を呼び出す。このシリアルポートクラスドライバ１２０ａは、モニタによって一般に利用されるシリアルポート通信機能を実装する。シリアルポートクラスドライバ１２０ａは、順に、シリアルポート接続およびシリアルポートを介するデータの伝送を管理するために、シリアルポートドライバ１２５ａ等の構成要素を呼び出す。シリアルポートドライバ１２５ａは、データが外部モニタ１１０ａへおよびそこから伝送されるシリアルポートバス上の実際のトランザクションを管理するために、シリアルポートバスコントローラ１３０ａ等の構成要素に依拠する。
【００２６】
同様に、図１の従来のシステムはまた、他の周辺インターフェースのためのサポートも含む。Ｉ２Ｃプロトコルを使用して通信するように設計された周辺機器に対して、ホストデバイス１００は、ホストデバイスと、ＨＩＤタッチスクリーン１００ｂおよび外部バッテリ１１０ｃ等の周辺デバイスとの間のＩ２Ｃ接続を管理するために、Ｉ２Ｃドライバ１２５ｂ等の構成要素に依拠する。これらのＩ２Ｃ周辺機器のサポートはさらに、ホストデバイス１００が、Ｉ２Ｃバス上のデータトランザクションを管理するために、Ｉ２Ｃバスコントローラ等の構成要素を含むことを要求する。
【００２７】
ホストデバイス１００上で稼働するタッチスクリーンソフトウェア１１５ｃは、タッチスクリーンソフトウェア１１５ｃに高レベルＨＩＤクラスインターフェースを提供するＨＩＤクラスドライバ１２０ａ等の構成要素を呼び出す。このＨＩＤクラスドライバ１２０ｃは、ＨＩＤプロトコルベースの周辺デバイスによって一般に利用されるＨＩＤプロトコル通信機能を実装する。ＨＩＤクラスドライバ１２０ｃは、順に、Ｉ２Ｃプロトコルを使用するＨＩＤクラスデバイスによって利用される通信機能を実装するＨＩＤ−Ｉ２Ｃトランスポートミニドライバ１３５ａ等の構成要素を呼び出す。ＨＩＤ−Ｉ２Ｃトランスポートミニドライバ１３５ａは、順に、Ｉ２Ｃバスを介してＩ２Ｃ接続およびデータの伝送を管理するために、Ｉ２Ｃドライバ１２５ｂを呼び出す。
【００２８】
クラスドライバは、複数の通信プロトコルを使用する共通機能性を実装し得る。ホストデバイス１００は、Ｉ２Ｃドライバ１２５ｂを動作させることが可能である種々のクラスインターフェースを利用する。図１のシステムでは、バッテリクラスドライバ１２０ｂおよびＨＩＤクラスドライバ１２０ｃは、Ｉ２Ｃドライバ１２５ｂを介してＩ２Ｃプロトコルを利用する能力を提供する。バッテリクラスドライバ１２０ｂは、周辺バッテリデバイスによって一般に採用される機能を実装する。ＨＩＤクラスドライバ１２０ｃは、ＨＩＤによって一般に使用される機能を実装し、ＨＩＤ−Ｉ２ＣおよびＨＩＤ−ＵＳＢトランスポートミニドライバ１３５ａ−ｂを使用して、Ｉ２ＣおよびＵＳＢ通信プロトコルの両方をサポートする。いくつかのホストデバイスでは、各々が異なる通信プロトコルをサポートする２つの別個のＨＩＤクラスドライバが、使用さされ得る。
【００２９】
同様に、従来のホストデバイス１００は、ＵＳＢフラッシュドライブ１１０ｄおよびＵＳＢキーボード１１０ｅ等のＵＳＢ対応周辺デバイスへの接続を管理するために、ＵＳＢドライバ１２５ｃ等の構成要素を含む。ＵＳＢドライバ１２５ｃは、ＵＳＢプロトコルを使用するＨＩＤクラスデバイスによって利用される通信機能を実装するＨＩＤ−ＵＳＢトランスポートミニドライバ１３５ｂに依拠する。これらのＵＳＢ周辺機器のサポートはさらに、ホストデバイス１００が、ＵＳＢバス上のトランザクションを管理するために、ＵＳＢバスコントローラ１３０ｃ等の構成要素を含むことを要求する。ホストデバイス１００は、種々のクラスドライバを利用して、ＵＳＢドライバ１２５ｃを動作させ、各クラスドライバは、異なるタイプの周辺デバイスによって使用される共通ＵＳＢ機能性を実装する。記憶装置クラスドライバ１２０ｄは、周辺記憶デバイスによって使用される共通機能性を実装し、ＨＩＤクラスドライバ１２０ｃは、種々のタイプのＨＩＤによって使用される共通機能性を実装する。
【００３０】
従来のホストデバイス１００はまた、ビデオゲームパッド１１０ｆ等のＳＰＩ対応デバイスへの接続を管理するために、ＳＰＩドライバ１２５ｄを含む。ビデオゲームパッド１１０ｆのためのサポートを提供するために、ホストは、ゲームパッドソフトウェア１１５ｆを実行し、ゲームパッドソフトウェア１１５ｆは、高レベルＳＰＩソフトウェアインターフェースを提供するＳＰＩクラスドライバ１２０ａ等の構成要素を呼び出す。ＳＰＩクラスドライバ１２０ａは、周辺ゲームパッドデバイスによって使用される共通ＳＰＩ機能性を実装する。ＳＰＩクラスドライバは、ＳＰＩ対応デバイスへの接続を管理するために、ＳＰＩドライバ１２５ｄ等の構成要素に依拠する。ＳＰＩドライバ１２５ｄは、ＳＰＩバス上の実際のトランザクションを管理するために、ＳＰＩバスコントローラ１３０ｄ等の構成要素に依拠する。
【００３１】
前述のように、理想的ホストデバイスは、人気のある現在および旧来のプロトコルの両方をサポートすることが可能であり、さらに、将来的プロトコルを含むように適合可能である。ホストデバイスによってサポートされる周辺デバイスの数が増加するにつれて、周辺デバイスをサポートするために使用されるインターフェースのスタックされた層の複雑性も同様に増す。これらのスタックされた層の複雑性が増すにつれて、スタックの構成要素に対する更新を効果的に管理することは、スタックされた層内で生じる多くの相互依存性に起因して、ますます困難になる。これらの需要に対処することによって、本発明の実施形態は、ホストデバイスが、単一インターフェースを通して、異なる通信プロトコルを利用するある範囲の周辺デバイスとインターフェース接続する能力を提供する。
【００３２】
種々の実施形態のうちの１つが、図２に図示される。図２の実施形態によると、図１に関して説明される周辺デバイスの各々は、単一ホストインターフェース２６０を通してホストデバイス２００に接続する。ホストデバイス２００は、周辺デバイス２１０ａ−ｆの各々とインターフェース接続するために、内蔵コントローラ（ＥＣ）２１５に依拠する。内蔵コントローラ２１５は、各周辺デバイスのネイティブインターフェースを通して周辺デバイス２１０ａ−ｆの各々とインターフェースをとり、単一ホストインターフェース２６０を通してホストデバイス２００とインターフェース接続するように構成される。この構成に従って、周辺デバイス２１０ａ−ｆの各々とのバスレベルトランザクションは、ホストデバイス２００の代わりに、内蔵コントローラ２１５によって管理される。
【００３３】
全バスレベルトランザクションが、ホストデバイス２００と内蔵コントローラ２１５との間のインターフェースを通して流されることにより、ホストデバイスは、周辺デバイス２１０ａ−ｆをサポートするために、どんな他のハードウェアインターフェースもサポートする必要はない。図２の実施形態では、単一ホストインターフェース２６０は、ＬＰＣハードウェアインターフェースを使用して実装される。他の実施形態は、単一ホストインターフェース２６０として、他のハードウェアインターフェースを利用し得る。例えば、他の実施形態は、ｅＳＰＩ（拡張シリアル周辺インターフェースバス）、Ｉ２Ｃ、またはＰＣＩハードウェアインターフェースを使用して、単一ホストインターフェースを実装し得る。いくつかの実施形態は、単一ホストインターフェースとして使用されるハードウェアインターフェースを構成する能力を提供し得る。
【００３４】
単一ホストインターフェース２６０として使用されるハードウェアインターフェースにかかわらず、この選択は、周辺デバイス２１０ａ−ｆに透過性である。周辺デバイス２１０ａ−ｆの各々は、従来のシステムにおけるように、同一ネイティブバスインターフェースを使用してホストデバイス２００と通信する。例えば、外部モニタ２１０ａは、依然として、従来のシステムにおいて使用される同一シリアルポートインターフェースを使用して、ホストデバイスと通信する。しかしながら、ホストデバイスのプロセッサによって提供されるハードウェアインターフェースと直接インターフェース接続する代わりに、周辺デバイス２１０ａ−ｆは、内蔵コントローラ２１５によって提供されるハードウェアインターフェースとインターフェース接続する。周辺デバイス２１０ａ−ｆの各々に関連付けられたアプリケーションソフトウェアプログラム２０５ａ−ｆも、内蔵コントローラ２１５による単一ホストインターフェース２６０の使用によって影響されない。各アプリケーションソフトウェアプログラム２０５ａ−ｆは、図１の従来のシステムにおいて使用される同一クラスドライバ２２０ａ−ｃおよび任意のミニクラスドライバを使用して、その対応する周辺デバイス２１０ａ−ｆと通信する。その結果、周辺デバイス２１０ａ−ｆによって提供される機能性は、周辺デバイス２１０ａ−ｆとの低レベルバストランザクションをブリッジする中間体としての役割を果たす、内蔵コントローラ２１５によって影響されない。
【００３５】
図１の従来のシステムでは、通信プロトコルは、バスプロトコルドライバ１２５ａ−ｄおよびバスコントローラ１３０ａ−ｂ等のソフトウェア構成要素を使用して実装される。バスプロトコルドライバ１２５ａ−ｄの各々は、ホストデバイス１００によってサポートされるハードウェアバスプロトコルのうちの１つに対応するソフトウェアインターフェースを実装する。例えば、ホストデバイス１００は、ホストデバイス１００が外部バッテリ１１０ｃおよびタッチスクリーン１１０ｂ等のＩ２Ｃデバイスと通信するソフトウェアインターフェースを提供するＩ２Ｃドライバ１２５ｂを実行する。これらのバスプロトコルドライバ１２５ａ−ｄは、Ｉ２Ｃ周辺デバイスと通信するためにホストデバイス１００によって呼び出されるＩ２Ｃ命令を実装する。
【００３６】
図１の従来のシステムのハードウェアバスコントローラ１３０ａ−ｂは、そのサポートされるネイティブバスプロトコルに従って周辺デバイスと通信するために必要とされる個々のバスレベルトランザクションを実装するために、ホストデバイス１００によって利用されるソフトウェアプログラムである。これらのバスコントローラプログラムは、ホストデバイスによってサポートされる個々のバス上でデータを実際に伝送するための命令を提供する。バスコントローラプログラムは、その特定のプロトコルを利用する全デバイスによって使用されるバストランザクションを実装する。例えば、Ｉ２Ｃバスコントローラ１３０ｂは、物理Ｉ２Ｃバス上でデータを伝送するために使用される低レベルソフトウェアを実装し、Ｉ２Ｃを介してホストデバイス１００と通信する全周辺デバイスの代わりに、Ｉ２Ｃバスへのアクセスを仲介する。図１の従来のシステムでは、ＨＩＤタッチスクリーン１１０ｂおよびバッテリデバイス１１０ｃは両方とも、Ｉ２Ｃバスコントローラ１３０ｂを介して、ホストデバイス１００と通信する。
【００３７】
新しい周辺デバイスが従来のシステムにおけるホストデバイス１００によって動作させられることができる場合を決定することは、新しい周辺デバイスを動作させるために必要なソフトウェアプログラムが全て、インストールされ、ホストデバイス１００にアクセス可能であることを確実にすることを要求する。例えば、パーソナルコンピュータによる使用のためにＵＳＢキーボード１１０ｅをインストールするとき、ホストデバイス１００によってキーボードを動作させるために必要なソフトウェアは全て、パーソナルコンピュータ上にインストールされなければならない。キーボードの特徴を提供する、デバイス特有のアプリケーションソフトウェア１１５ｄが、インストールされなければならない。キーボードデバイスを動作させるための好適なクラスドライバ１２０ｃが、パーソナルコンピュータのクラスドライバライブラリ内で識別されなければならないか、または、そうでなければインストールされなければならない。ＵＳＢプロトコルを実装するソフトウェアプログラムもまた、インストールまたは識別されなければならない。デバイス特有のＵＳＢドライバ１２５ｃが、キーボードを動作させるために必要なＵＳＢ通信を実装するようにインストールされなければならない。クラスドライバ１２０ｃおよびデバイス特有のＵＳＢドライバとインターフェース接続するためのトランスポートミニドライバ１３５ｂもまた、インストールまたは識別されなければならない。さらに、汎用ＵＳＢバスコントローラ１３０ｃも、識別または別様にインストールされなければならない。
【００３８】
図２の実施形態では、同一アプリケーションソフトウェア２０５ａ−ｆおよびクラスドライバ２２０ａ−ｅが、図１の従来のシステムにおけるように使用される。その結果、従来のシステムを実施形態に変換するために要求される修正は、アプリケーションソフトウェア２０５ａ−ｆおよびクラスドライバ２２０ａ−ｅに透過性である。周辺デバイス２１０ａ−ｆもまた、変更されない。周辺デバイス２１０ａ−ｆならびにホストデバイス２００上で実行するアプリケーションソフトウェア２０５ａ−ｆおよびクラスドライバ２２０ａ−ｅの観点から、これらの構成要素間で通信するために使用されているネイティブインターフェースは、従来のホストデバイスから変更されないので、変化は、はっきり分からない。例えば、ＵＳＢ  ＨＩＤキーボード２１０ｅならびに対応するアプリケーションソフトウェア２０５ｄおよびクラスドライバ２２０ｃは、依然として、それらの間で通信するために、ＵＳＢプロトコルを呼び出す。しかしながら、図１の従来のシステムに存在するトランスポートミニドライバ１３５ａ−ｂ、デバイス特有のバスプロトコルドライバ１２５ａ−ｄ、およびバスコントローラ１３０ａ−ｄではなく、実施形態は、代わりに、単一ホストインターフェースを実装するために、ミニポートドライバ２４０ａ−ｄならびに単一コントローラドライバ２４５および単一バスコントローラ２５０を利用すし、全周辺デバイスは、単一ホストインターフェースよってホストデバイス２００と通信するであろう。
【００３９】
実施形態によると、ミニポートドライバ２４０ａ−ｄ等の構成要素が、クラスドライバ２２０ａ−ｅと合わせて使用される。ミニポートドライバ２４０ａ−ｄは、クラスドライバ２２０ａ−ｅによって使用される通信を実装する。ミニポートドライバ２４０ａ−ｄは、あるクラスのデバイスによって使用される通信機能を実装し、コントローラドライバ２４５によって提供されるバスレベル通信機能と相互動作するように構成される。例えば、図２の実施形態では、ＨＩＤミニポートドライバ２４０は、ＨＩＤクラスデバイスによって使用される通信を実装し、コントローラドライバ２４５およびコントローラ２５０によって実装されるバス通信プロトコルを使用して、これらの通信を内蔵コントローラ２１５に転送するように構成される。コントローラ２５０によって受信された通信は、次いで、単一ホストインターフェース２６０のプロトコルから周辺デバイス２１０ａ−ｆによって使用されるネイティブプロトコルに変換される。類似した変換は、周辺デバイス２１０ａ−ｆから発生し、アプリケーションソフトウェア２０５ａ−ｆに流れる通信のために、これらの構成要素によって行われる。このように、ミニポートドライバ２４０ａ−ｄは、ＨＩＤプロトコルのようなクラス特定のプロトコルと、ホストデバイス２００によって実装される単一バスプロトコルを通して周辺デバイスによって利用されるネイティブバスプロトコルとの間のホストデバイス２００上のブリッジとしての役割を果たす。
【００４０】
図１における従来のホストデバイスのバスプロトコルドライバ１２５ａ−ｄおよびバスコントローラ１３０ａ−ｄと同様に、コントローラドライバ２４５およびコントローラ２５０は、ホストデバイス２００のためのバス通信を実装する。しかしながら、ホストデバイス２００の設計者によって必要と考えられるバスプロトコルの全てを実装するのではなく、コントローラドライバおよび２４５およびコントローラ２５０は、単一バスプロトコルを実装する。図２の実施形態では、この単一バスプロトコルは、ＬＰＣであるが、ホストデバイス２００および内蔵コントローラ２１５によってサポートされ得る、任意の他の通信プロトコルであることができる。実際に実装されるバスプロトコルにかかわらず、全周辺機器と通信するために、単一ホストインターフェース２６０に依拠するホストデバイス２００の能力は、ホストデバイス２００が、単一ホストインターフェース２６０によって利用される単一バスプロトコルのためのハードウェアサポートのみを実装する必要があることを意味する。いくつかの実施形態では、この単一ホストインターフェースは、構成可能であり得る。そのような実施形態は、ホストデバイスによってサポートされるであろう周辺デバイスの組によって要求される多数のバスプロトコルではなく、限定数のバスプロトコルのみをサポートする必要性からも依然として利益を享受する。
【００４１】
実施形態はまた、周辺機器とホストデバイスプロセッサとの間のバス通信の完全制御を維持することからも利益を享受する。あるバスプロトコルは、バスを利用する構成要素による適切なバスマスタリングを要求する。周辺機器によって要求されるバスプロトコルがホストデバイスによってサポートされ得る場合でも、バスマスタリング等のバス通信の低レベル側面における差異は、この通信リンクのエラー条件および／または非効率的動作をもたらし得る。従来のシステムにおけるバスコントローラ１３０ａ−ｄおよびバスプロトコルドライバ１２５ａ−ｄは、潜在的に、種々の周辺機器と直接インターフェース接続するので、これらの構成要素に対する更新は、後方適合性が維持されることを確実にしなければならない。したがって、新しい周辺デバイスに対応するために行われる、これらのバスプロトコル層のソフトウェアに対する更新は、事実上、実装することが困難であり得る。その結果、ホストデバイスは、内蔵コントローラとのバス通信のみをサポートする必要性によって利益を享受し、それは、異なる周辺デバイスによって使用され得る低レベルバスプロトコル実装における任意のそのような不適合に対応することにより好適である。
【００４２】
ホストデバイス２００による単一ホストインターフェース２６０の使用が周辺デバイス２１０ａ−ｆに透過性であるために、ホストデバイスは、周辺デバイス２１０ａ−ｆとのバストランザクションをブリッジする内蔵コントローラ２１５に依拠する。いくつかの実施形態では、内蔵コントローラは、３つの主要構成要素から成る。これらの構成要素のうちの１つは、単一ホストインターフェース２６０のために選定されるバスプロトコルを使用するバストランザクションを実装するために使用されるファームウェアである。図２の実施形態では、内蔵コントローラ２１５のファームウェアは、ホストデバイス２００ハードウェア内でサポートされるＬＰＣバスを使用して、ホストデバイス２００のプロセッサと通信する。ファームウェアは、周辺デバイス２１０ａ−ｆとホストデバイス２００との間の通信を伝送するが、単一ホストインターフェース２６０によって利用されるバスプロトコルを使用して通信をブリッジする。
【００４３】
図２の実施形態の内蔵コントローラ２１５はさらに、スーパーＩ／Ｏ構成要素から成る。このスーパーＩ／Ｏ構成要素は、デバイスネイティブインターフェースファームウェアによって使用されるネイティブバスプロトコル通信と単一ホストインターフェース２６０によって利用されるバスプロトコルとの間で変換を行う。スーパーＩ／Ｏ構成要素は、ホストと周辺デバイスとの間で伝送される実際の情報を処理する必要はなく、代わりに、これらの通信を伝送するために使用されるプロトコルのみを変換する必要がある。いくつかの実施形態では、内蔵コントローラ２１５のスーパーＩ／Ｏ構成要素は、ホストデバイス２００のプロセッサによってサポートされるメモリ／メールボックスインターフェースを使用して、ホストデバイス２００と通信する。
【００４４】
図２の実施形態の内蔵コントローラ２１５はさらに、デバイスネイティブインターフェースファームウェアから成る。デバイスネイティブインターフェースファームウェアは、そのネイティブバスプロトコルに従って、周辺デバイス２１０ａ−ｆとの通信を実装する。このファームウェアは、ホストデバイス２００の代わりに、サポートされるバスプロトコルの各々に対するバストランザクションを実装する。新しいバスプロトコルは、ホストデバイス２００に影響を及ぼさずに、このファームウェアを更新することによってサポートされることができ、したがって、ホストデバイス２００のハードウェアインターフェースに対する更新を要求しない。いくつかの実施形態では、内蔵コントローラ２１５のデバイスネイティブインターフェースファームウェアは、周辺デバイス２１０ａ−ｆによって使用されるネイティブバスプロトコルにおけるバストランザクションをサポートするように構成される、一般的およびデバイス特有のクラスドライバの組を実装し得る。
【００４５】
図３は、単一ホストインターフェースとしてＬＰＣを使用するＩ２Ｃを利用するＨＩＤデバイスとの通信をサポートする実施形態のためのソフトウェアおよびファームウェアスタックを図示する。図３の実施形態では、ホストデバイス３００は、ホストによる使用のためにＨＩＤ機能性を実装するＨＩＤクラスドライバ３１５を実行する。いくつかの実施形態では、ＨＩＤクラスドライバ３１５は、ユーザがサポートされるＨＩＤ周辺デバイス３４０および３４５と相互作用し得る機能性を実装するであろう。他の実施形態では、ＨＩＤクラスドライバ３１５は、サポートされるＨＩＤ周辺デバイス３４０および３４５と相互動作するために、ホスト３００によって使用される機能性のみを実装するであろう。
【００４６】
ＨＩＤクラスドライバ３１５は、周辺ＨＩＤデバイス３４０および３４５と通信するために、ＨＩＤ−ＥＭＩミニポートドライバ３２０とインターフェース接続する。ＨＩＤ−ＥＭＩミニポートドライバ３２０は、ＨＩＤデバイス３４０および３４５によって利用されるクラス特有のＨＩＤプロトコルを使用して、ＨＩＤクラスドライバと通信する。ＨＩＤ−ＥＭＩミニポートドライバ３２０は、これらのＨＩＤプロトコル通信を、ホストデバイス３００によってサポートされる単一ホストインターフェースとして使用される、ＬＰＣ／ＥＭＩバスプロトコル３１０に変換する。ＨＩＤ−ＥＭＩミニポートドライバ３２０は、ホストデバイス３００によって使用される単一ホストインターフェースとして使用されるＬＰＣ／ＥＭＩバスプロトコル３１０を実装する、ＬＰＣ／ＥＭＩバスドライバ３２５とインターフェース接続する。
【００４７】
内蔵コントローラ３０５上では、ＬＰＣ／ＥＭＩプロトコルが、ファームウェア３３０内に実装される。ファームウェア構成要素３３０は、ホストデバイス３００のＬＰＣ／ＥＭＩバスドライバ３２５とインターフェース接続することによって、変換された周辺デバイス通信をホストと内蔵コントローラとの間で伝送する。さらに、内蔵コントローラ３０５上で実行することによって、Ｉ２Ｃファームウェアドライバ３３５は、ネイティブＩ２Ｃバスプロトコルにおいて周辺デバイス３４０および３４５とインターフェース接続する。
【００４８】
前述の明細書は、特定の実施形態を説明するが、本明細書に開示される実施形態および追加の実施形態の詳細における多数の変更が、本説明を参照することによって、当業者に明白となり、それらは、当業者によって成されるであろう。本文脈では、明細書および図は、限定的意味ではなく、例証的と見なされるものとし、そのような修正は全て、本開示の範囲内に含まれるものと意図される。故に、本開示の範囲は、以下の請求項およびその法的均等物によって決定されるべきである。
【図１】
0006642944.tif 000002
【図２】
0006642944.tif 000003
【図３】
0006642944.tif 000004