特許第6642944号(P6642944)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロチップ テクノロジー インコーポレイテッドの特許一覧

特許6642944内蔵コントローラの使用によるクラスデバイスインターフェースと単一ホストインターフェースの統合
<>
  • 特許6642944-内蔵コントローラの使用によるクラスデバイスインターフェースと単一ホストインターフェースの統合 図000002
  • 特許6642944-内蔵コントローラの使用によるクラスデバイスインターフェースと単一ホストインターフェースの統合 図000003
  • 特許6642944-内蔵コントローラの使用によるクラスデバイスインターフェースと単一ホストインターフェースの統合 図000004
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6642944
(24)【登録日】2020年1月8日
(45)【発行日】2020年2月12日
(54)【発明の名称】内蔵コントローラの使用によるクラスデバイスインターフェースと単一ホストインターフェースの統合
(51)【国際特許分類】
   G06F 13/10 20060101AFI20200130BHJP
   G06F 13/38 20060101ALI20200130BHJP
【FI】
   G06F13/10 320Z
   G06F13/38 320A
【請求項の数】13
【全頁数】18
(21)【出願番号】特願2016-564191(P2016-564191)
(86)(22)【出願日】2015年5月18日
(65)【公表番号】特表2017-516212(P2017-516212A)
(43)【公表日】2017年6月15日
(86)【国際出願番号】US2015031379
(87)【国際公開番号】WO2015179296
(87)【国際公開日】20151126
【審査請求日】2018年5月16日
(31)【優先権主張番号】62/000,089
(32)【優先日】2014年5月19日
(33)【優先権主張国】US
(31)【優先権主張番号】14/709,739
(32)【優先日】2015年5月12日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】397050741
【氏名又は名称】マイクロチップ テクノロジー インコーポレイテッド
【氏名又は名称原語表記】MICROCHIP TECHNOLOGY INCORPORATED
(74)【代理人】
【識別番号】100078282
【弁理士】
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100113413
【弁理士】
【氏名又は名称】森下 夏樹
(72)【発明者】
【氏名】クマール, カビンドラ
(72)【発明者】
【氏名】ベサマニッカム, ジャヤバサンス
(72)【発明者】
【氏名】ビラカス, アルン クリシュナン ムンダン
【審査官】 打出 義尚
(56)【参考文献】
【文献】 特開2003−244277(JP,A)
【文献】 特表2009−510588(JP,A)
【文献】 特開2013−156877(JP,A)
【文献】 特開2013−073498(JP,A)
【文献】 国際公開第98/036363(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10
G06F 13/38
(57)【特許請求の範囲】
【請求項1】
ホストと複数の周辺デバイスとの間で通信するためのシステムであって、前記システムは、
前記ホスト上の複数のクラスドライバであって、前記クラスドライバの各々は、前記複数の周辺デバイスのうちの1つ以上の周辺デバイスに関連付けられた機能性を実装する、クラスドライバと、
前記ホスト上の複数のミニポートドライバであって、各ミニポートドライバは、インターフェースを提供し、前記クラスドライバのうちの1つ以上のクラスドライバは、前記インターフェースによって、クラスプロトコルを使用して、前記複数の周辺デバイスのうちの1つ以上の周辺デバイスと通信し、前記ミニポートドライバは、前記ホストによってサポートされている単一ホストインターフェースを通して通信する、ミニポートドライバと、
前記ホスト上のバスコントローラドライバであって、前記バスコントローラドライバは、前記単一ホストインターフェースの第1の部分を実装し、前記バスコントローラドライバは、前記複数の周辺デバイスのうちの前記1つ以上の周辺デバイスのそれぞれのネイティブバスプロトコルの選択的一部を使用して、前記複数のミニポートドライバとインターフェース接続する、バスコントローラドライバと、
前記単一ホストインターフェースのために選定されるバスプロトコルを使用するバストランザクションを実装するように構成されているファームウェアを備える内蔵コントローラであって、前記内蔵コントローラの前記ファームウェアは、前記周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、前記複数の周辺デバイスとインターフェース接続するようにさらに構成され、前記内蔵コントローラは、前記単一ホストインターフェースを使用して、前記複数のミニポートドライバとインターフェース接続する、内蔵コントローラと
を備える、システム。
【請求項2】
記ホスト上のバスコントローラをさらに備えており、
前記バスコントローラは、前記単一ホストインターフェースの第2の部分を実装し、前記バスコントローラは、前記単一ホストインターフェースを使用して、前記内蔵コントローラとインターフェース接続する、請求項1に記載のシステム。
【請求項3】
前記バスコントローラドライバによって実装される前記単一ホストインターフェースの前記第1の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバス管理プロセスを実装する、請求項2に記載のシステム。
【請求項4】
前記バスコントローラによって実装される前記単一ホストインターフェースの前記第2の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバストランザクションを実装する、請求項2に記載のシステム。
【請求項5】
前記複数の周辺デバイスと相互動作するために前記ホストによって使用される情報は、前記単一ホストインターフェースを使用して、前記ホストと前記内蔵コントローラとの間で通信され、前記複数の周辺デバイスと相互動作するために前記ホストによって使用される前記情報は、前記複数の周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、前記内蔵コントローラと前記複数の周辺デバイスとの間で通信される、請求項1に記載のシステム。
【請求項6】
前記単一ホストインターフェースは、eSPI(拡張シリアル周辺インターフェース)、LPC、シリアルインターフェース、I2Cインターフェース、USBインターフェース、SPIインターフェース、およびCANインターフェースから成る群から選択されるインターフェースである、請求項1に記載のシステム。
【請求項7】
ホストと複数の周辺デバイスとの間で通信する方法であって、前記方法は、
前記複数の周辺デバイスに関連付けられた機能性を提供することであって、前記機能性は、複数のクラスドライバによって前記ホスト上に提供される、ことと、
前記複数のクラスドライバと前記複数の周辺デバイスとの間で第1の通信を伝送することであって、前記第1の通信は、前記周辺デバイス機能性を前記ホスト上に実装し、前記第1の通信は、クラスプロトコルを使用して、複数のミニポートドライバによって伝送される、ことと、
前記複数のミニポートドライバと内蔵コントローラとの間で第2の通信を伝送することであって、前記第2の通信は、単一ホストインターフェースを使用して伝送され、前記第2の通信は、前記単一ホストインターフェースの第1の部分を実装するバスコントローラドライバを介して伝送され、前記バスコントローラドライバは、前記複数の周辺デバイスのうちの1つ以上の周辺デバイスのそれぞれのネイティブバスプロトコルの選択的一部を使用して、前記複数のミニポートドライバとインターフェース接続し、前記内蔵コントローラは、前記単一ホストインターフェースを実装するファームウェアを備え、前記ファームウェアは、前記単一ホストインターフェースを使用して、バスコントローラと通信する、ことと、
内蔵コントローラと前記複数の周辺デバイスとの間で第3の通信を伝送することであって、前記第3の通信は、前記複数の周辺デバイスのそれぞれのネイティブバスプロトコルを使用して伝送される、ことと
を含む、方法。
【請求項8】
前記第2の通信は、前記バスコントローラドライバを介して、かつ前記単一ホストインターフェースの第2の部分を実装するバスコントローラを介して伝送される、請求項に記載の方法。
【請求項9】
前記バスコントローラドライバによって実装される前記単一ホストインターフェースの前記第1の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバス管理プロセスを実装する、請求項に記載の方法。
【請求項10】
前記バスコントローラによって実装される前記単一ホストインターフェースの前記第2の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバストランザクションを実装する、請求項に記載の方法。
【請求項11】
前記クラスプロトコルおよび前記複数の周辺デバイスのそれぞれのネイティブバスプロトコルを利用する前記第1の通信および第3の通信を前記単一ホストインターフェースを利用する前記第2の通信に変換することをさらに含む、請求項に記載の方法。
【請求項12】
前記単一ホストインターフェースは、シリアルインターフェース、I2Cインターフェース、USBインターフェース、SPIインターフェース、およびCANインターフェースから成る群から選択される、請求項に記載の方法。
【請求項13】
前記内蔵コントローラは、ホストデバイスのプロセッサによってサポートされているメモリインターフェースまたはメールボックスインターフェースを使用して、前記ホストデバイスと通信する、請求項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の引用)
本願は、米国仮出願第62/000,089号(2014年5月19日出願)の利益を主張し、上記出願は、その全体が本明細書に引用される。
【0002】
(技術分野)
本開示は、単一ホストインターフェースを介したホストデバイスとの周辺デバイス通信に関する。
【背景技術】
【0003】
パーソナルコンピュータの出現に伴って、種々のヒューマンインターフェースデバイス(HID)が着実に急増しつつあり、HIDは、ヒトユーザが入力を提供し、ホストデバイス上で実行するコンピュータプログラムから出力を受信するための機構を提供する。パーソナルコンピュータの能力が進歩するにつれて、ユーザに利用可能な周辺HIDも同様に多様化および精巧化している。これは、周辺デバイスとホストデバイスとの間で通信するための多くの異なるハードウェアおよびソフトウェアインターフェースをもたらしている。
【0004】
周辺デバイスとの通信をサポートすることにおいてホストデバイスによって利用されるソフトウェアインターフェースの組は、典型的には、インターフェースのスタックされた層として編成される。スタック内の各層は、周辺デバイスの動作のためにホストデバイスによって要求される機能性の特定の側面を実装するソフトウェアプログラムから成る。スタックの下層は、ホストデバイスのプロセッサをハードウェアバスとインターフェース接続するソフトウェアプログラムであり、ハードウェアバスは、周辺デバイスへおよびそこから信号を伝送するために使用される。スタックの上層は、ヒトユーザまたは他のソフトウェアプログラムがそれによって周辺デバイスを動作させることができるインターフェースを提供するソフトウェアプログラムである。
【0005】
新しい周辺デバイスがホストデバイスによる使用のためにインストールされると、そのインストールプロセスの一部は、ホストデバイスのスタックが新しい周辺デバイスと通信するために必要な全ソフトウェアを含むかどうかを検証することを含む。多くの場合、このインストールプロセスは、新しい周辺デバイスを完全に利用するために要求されるデバイス特有のソフトウェアを含むための少なくともいくつかの更新をソフトウェアスタックに対して要求する。デバイス特有のソフトウェアのインストールは、常時、全適合性問題に対処するわけではない。ホストデバイスが新しい周辺デバイスとインターフェース接続するために、ホストデバイスは、周辺デバイスによって要求される低レベルバス通信プロトコルをサポートしなければならない。ホストデバイスによるバス通信プロトコルのサポートは、通常、ハードウェアレベルバス実装を要求し、その実装は、理想的には、ホストデバイスが設計および製造されるときに実装される。
【0006】
キーボードおよびマウス等のデバイスを含む初期世代の周辺HIDは、シリアルポートを使用してホストデバイスとインターフェースをとっていた。これらの初期シリアルポートHIDの多くは、Low Pin Count(LPC)バスを介して、ホストデバイスのプロセッサと通信していた。LPCバスのサポートは、典型的には、ホストデバイスプロセッサ上の専用ピンによってホストデバイス上で実装される。他のバスプロトコルも同様に、ホストデバイスのハードウェアレベルで実装されることができる。ホストデバイス製造業者は、どのバスプロトコルをハードウェアレベルでサポートすべきかを選定し、それは、ホストデバイスがある周辺デバイスと適合性があるかどうかを決定づける。
【0007】
新しいタイプの周辺HIDが市場に参入するにつれて、周辺機器によって使用されるLPCバスシリアルインターフェースは、新しい周辺デバイスインターフェースに取って代わられた。しかしながら、周辺HIDによって使用される専用インターフェースの数の結果として生じた増加は、ホストデバイス製造業者がサポートすることを不可能にした。この苦境に大きく影響され、ハードウェアおよびソフトウェア製造業者の企業体は、周辺デバイスがホストデバイスと通信するための標準化インターフェースを提供する、ユニバーサルシリアルバス(USB)を開発した。USBは、産業全体を通して急速に採用され、周辺HIDの急増をさらに促している。
【0008】
USBの人気にもかかわらず、周辺デバイスによって利用されるハードウェアインターフェースおよびバスプロトコルは、進化し続けている。新しいインターフェースが、導入され続け、既存のインターフェースは、周辺機器の新しいクラスによる使用のために適合される。ある場合には、ソフトウェア更新のみ、新しいインターフェースをサポートするために要求される。例えば、周辺デバイス通信をさらに標準化するための試みは、新しい周辺デバイスインターフェースをもたらした。HID−USBプロトコルは、USBプロトコルを使用して、HID通信を標準化する。HID−I2Cプロトコルも同様に、I2Cプロトコルを使用して、HID通信を標準化する。ホストデバイスが、USBおよびI2Cバスプロトコルのためのハードウェアサポートを含む限り、ホストデバイスは、ホストデバイスのソフトウェアスタックに対する更新を通して、HID−USBまたはHID−I2Cプロトコルを利用する周辺デバイスをサポートすることができる。
【0009】
他の場合では、新しい周辺インターフェースは、ホストデバイスによるハードウェアサポートを要求するであろう。例えば、センサが、周辺デバイスの構成要素として採用され続けるにつれて、新しいインターフェース(I2C等)が、このような比較的に新しいクラスの周辺デバイスによって使用されることになる。eSPIは、内蔵コントローラ(EC)に対する単一ホストインターフェースとしてLPCに取って代わる新しいインターフェースである。他のバスプロトコルと同様に、eSPIバスのサポートは、理想的には、eSPIバスプロトコルを実装するために必要なソフトウェアを含むことに加え、ホストデバイスのプロセッサピンをこのeSPIバスを実装するために専用にすることによって実装される。
【0010】
ホストデバイス製造業者は、新しいクラスの周辺デバイスによって使用される新しいバスプロトコルのためのハードウェアサポートを含めるかどうかを決定することにおいて将来を見据えなければならない。旧来の周辺デバイスも、ホストデバイス製造業者に同様の圧力をかける。人気のある周辺デバイスのためのサポートを提供し続ける必要性は、多くの場合、ホストデバイス製造業者に、旧来のハードウェアインターフェースをサポートし続けることを余儀なくさせる。したがって、ホストデバイス製造業者は、依然として、旧来のバスプロトコルのためのサポートを維持しながら、新しい周辺デバイスによって使用される新しく出現したバスプロトコルのためのサポートを含むことを求める圧力に直面する。さらに、ホストデバイス製造業者は、既存のバスプロトコルに対する更新をシームレスにサポートすることに適応的でなければならない。ホストデバイスによる使用のために利用可能なソフトウェアインターフェースに対する更新は、ハードウェアレベルインターフェースに対する更新と比較して、達成が比較的に容易である。例えば、クラスデバイスドライバを更新し、新しい周辺デバイス機能性をサポートすることは、ホストデバイスに対して、eSPI等の新しいバスプロトコルのためのサポートを追加することと対比して、サポートが比較的に容易である。故に、既存のバスプロトコルハードウェアを利用して、新しいバスプロトコルをサポートすることができるホストデバイスに対する必要がある(そうでなければ、新しいバスプロトコルは、ホストデバイスによる追加のハードウェアサポートを要求するであろう)。
【発明の概要】
【課題を解決するための手段】
【0011】
全人気のある周辺デバイスインターフェースのためのサポートを提供するためにホストデバイスにかかる負担を緩和するために、単一プロトコルのみを使用しながら、ホストが周辺デバイスと通信することができ、その間ずっと、周辺デバイスおよびその関連付けられたソフトウェアがそのそれぞれのネイティブ通信プロトコルを使用して動作し続けることを可能にする機構に対する必要性がある。この機構が、新しい周辺デバイスプロトコルのためのサポートを追加するために構成可能であること対する必要性もある。
【0012】
実施形態によると、ホストと複数の周辺デバイスとの間で通信するためのシステムが、提供される。ホストは、複数のクラスドライバおよびミニポートドライバを含む。クラスドライバの各々は、複数の周辺デバイスのうちの1つ以上のものに関連付けられた機能性を実装する。各ミニポートドライバは、インターフェースを提供し、それによって、クラスドライバのうちの1つ以上のものは、クラスプロトコルを使用して、複数の周辺デバイスのうちの1つ以上のものと通信し、ミニポートドライバは、ホストによってサポートされている単一ホストインターフェースを通して通信する。内蔵コントローラは、周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、複数の周辺デバイスとインターフェースをとり、内蔵コントローラは、単一ホストインターフェースを使用して、複数のミニポートドライバとインターフェース接続する。
【0013】
別の実施形態は、ホスト上のバスコントローラドライバであって、バスコントローラドライバは、単一ホストインターフェースの第1の部分を実装し、複数の周辺デバイスのうちの1つ以上のもののそれぞれのネイティブバスプロトコルの選択的一部を使用して、ミニポートドライバとインターフェース接続する、バスコントローラドライバと、ホスト上のバスコントローラであって、バスコントローラは、単一ホストインターフェースの第2の部分を実装し、単一ホストインターフェースを使用して、内蔵コントローラとインターフェース接続する、バスコントローラとを備えている。別の実施形態では、バスコントローラドライバによって実装される単一ホストインターフェースの第1の部分は、単一ホストインターフェースを使用して通信するために必要とされるバス管理プロセスを実装する。別の実施形態では、バスコントローラによって実装される単一ホストインターフェースの第2の部分は、単一ホストインターフェースを使用して通信するために必要とされるバストランザクションを実装する。別の実施形態では、内蔵コントローラは、単一ホストインターフェースを実装し、単一ホストインターフェースを使用して、バスコントローラと通信する、ファームウェアを備えている。別の実施形態では、複数の周辺デバイスと相互動作するためにホストによって使用される情報は、単一ホストインターフェースを使用して、ホストと内蔵コントローラとの間で通信され、複数の周辺デバイスと相互動作するためにホストによって使用される情報は、複数の周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、内蔵コントローラと複数の周辺デバイスとの間で通信される。別の実施形態では、単一ホストインターフェースは、eSPI(拡張シリアル周辺インターフェース)、LPC、シリアルインターフェース、I2Cインターフェース、USBインターフェース、SPIインターフェース、およびCANインターフェースから成る群から選択されるインターフェースである。
本発明は、例えば、以下を提供する。
(項目1)
ホストと複数の周辺デバイスとの間で通信するためのシステムであって、前記システムは、
前記ホスト上の複数のクラスドライバであって、前記クラスドライバの各々は、前記複数の周辺デバイスのうちの1つ以上のものに関連付けられた機能性を実装する、クラスドライバと、
前記ホスト上の複数のミニポートドライバであって、各ミニポートドライバは、インターフェースを提供し、前記クラスドライバのうちの1つ以上のものは、前記インターフェースによって、クラスプロトコルを使用して、前記複数の周辺デバイスのうちの1つ以上のものと通信し、前記ミニポートドライバは、前記ホストによってサポートされている単一ホストインターフェースを通して通信する、ミニポートドライバと、
前記周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、前記複数の周辺デバイスとインターフェース接続する内蔵コントローラと
を備え、
前記内蔵コントローラは、前記単一ホストインターフェースを使用して、前記複数のミニポートドライバとインターフェース接続する、システム。
(項目2)
前記ホスト上のバスコントローラドライバであって、前記バスコントローラドライバは、前記単一ホストインターフェースの第1の部分を実装し、前記複数の周辺デバイスのうちの1つ以上のもののそれぞれのネイティブバスプロトコルの選択的一部を使用して、前記ミニポートドライバとインターフェース接続する、バスコントローラドライバと、
前記ホスト上のバスコントローラであって、前記バスコントローラは、前記単一ホストインターフェースの第2の部分を実装し、前記単一ホストインターフェースを使用して、前記内蔵コントローラとインターフェース接続する、バスコントローラと
をさらに備えている、項目1に記載のシステム。
(項目3)
前記バスコントローラドライバによって実装される前記単一ホストインターフェースの第1の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバス管理プロセスを実装する、項目2に記載のシステム。
(項目4)
前記バスコントローラによって実装される前記単一ホストインターフェースの第2の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバストランザクションを実装する、項目2に記載のシステム。
(項目5)
前記内蔵コントローラは、前記単一ホストインターフェースを実装するファームウェアを備え、前記ファームウェアは、前記単一ホストインターフェースを使用して、前記バスコントローラと通信する、項目2に記載のシステム。
(項目6)
前記複数の周辺デバイスと相互動作するために前記ホストによって使用される情報は、前記単一ホストインターフェースを使用して、前記ホストと前記内蔵コントローラとの間で通信され、前記複数の周辺デバイスと相互動作するために前記ホストによって使用される前記情報は、前記複数の周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、前記内蔵コントローラと前記複数の周辺デバイスとの間で通信される、項目1に記載のシステム。
(項目7)
前記単一ホストインターフェースは、eSPI(拡張シリアル周辺インターフェース)、LPC、シリアルインターフェース、I2Cインターフェース、USBインターフェース、SPIインターフェース、およびCANインターフェースから成る群から選択されるインターフェースである、項目1に記載のシステム。
(項目8)
複数の周辺デバイスと通信するためのデバイスであって、
複数のクラスドライバであって、前記クラスドライバの各々は、前記複数の周辺デバイスのうちの1つ以上の周辺デバイスに関連付けられた機能性を実装する、クラスドライバと、
複数のミニポートドライバであって、各ミニポートドライバは、インターフェースを提供し、前記クラスドライバのうちの1つ以上のものは、前記インターフェースによって、クラスプロトコルを使用して、前記1つ以上の周辺デバイスと通信し、前記ミニポートドライバは、前記ホストによってサポートされている単一ホストインターフェースを通して通信する、ミニポートドライバと、
前記周辺デバイスのそれぞれのネイティブバスプロトコルを使用して、前記複数の周辺デバイスとインターフェース接続する内蔵コントローラと
を備え、
前記内蔵コントローラは、単一ホストインターフェースを使用して、前記複数のミニポートドライバとインターフェース接続する、デバイス。
(項目9)
バスコントローラドライバであって、前記バスコントローラドライバは、前記単一ホストインターフェースの第1の部分を実装し、前記1つ以上の周辺デバイスのそれぞれのネイティブバスプロトコルの選択的一部を使用して、前記ミニポートドライバとインターフェース接続する、バスコントローラドライバと、
バスコントローラであって、前記バスコントローラは、前記単一ホストインターフェースの第2の部分を実装し、前記単一ホストインターフェースを使用して、前記内蔵コントローラとインターフェース接続する、バスコントローラと
をさらに備えている、項目8に記載のデバイス。
(項目10)
前記バスコントローラドライバによって実装される前記単一ホストインターフェースの第1の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバス管理プロセスを実装する、項目9に記載のデバイス。
(項目11)
前記バスコントローラによって実装される前記単一ホストインターフェースの第2の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバストランザクションを実装する、項目9に記載のデバイス。
(項目12)
前記内蔵コントローラは、前記単一ホストインターフェースを実装するファームウェアを備え、前記ファームウェアは、前記単一ホストインターフェースを使用して、前記バスコントローラと通信する、項目9に記載のデバイス。
(項目13)
前記単一ホストインターフェースは、eSPI(拡張シリアル周辺インターフェース)、LPC、シリアルインターフェース、I2Cインターフェース、USBインターフェース、SPIインターフェース、およびCANインターフェースから成る群から選択されるインターフェースである、項目8に記載のデバイス。
(項目14)
ホストと複数の周辺デバイスとの間で通信する方法であって、前記方法は、
前記複数の周辺デバイスに関連付けられた機能性を提供することであって、前記機能性は、複数のクラスドライバによって前記ホスト上に提供される、ことと、
前記複数のクラスドライバと前記複数の周辺デバイスとの間で第1の通信を伝送することであって、前記第1の通信は、前記周辺デバイス機能性を前記ホスト上に実装し、前記第1の通信は、クラスプロトコルを使用して、複数のミニポートドライバによって伝送される、ことと、
前記複数のミニポートドライバと内蔵コントローラとの間で第2の通信を伝送することであって、前記第2の通信は、単一ホストインターフェースを使用して伝送される、ことと、
内蔵コントローラと前記複数の周辺デバイスとの間で第3の通信を伝送することであって、前記第3の通信は、前記複数の周辺デバイスのそれぞれのネイティブバスプロトコルを使用して伝送される、ことと
を含む、方法。
(項目15)
前記第2の通信は、前記単一ホストインターフェースの第1の部分を実装するバスコントローラドライバを介して、かつ前記単一ホストインターフェースの第2の部分を実装するバスコントローラを介して伝送される、項目14に記載の方法。
(項目16)
前記バスコントローラドライバによって実装される前記単一ホストインターフェースの第1の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバス管理プロセスを実装する、項目15に記載の方法。
(項目17)
前記バスコントローラによって実装される前記単一ホストインターフェースの第2の部分は、前記単一ホストインターフェースを使用して通信するために必要とされるバストランザクションプロセスを実装する、項目15に記載の方法。
(項目18)
前記内蔵コントローラは、前記単一ホストインターフェースを実装するファームウェアを備え、前記ファームウェアは、前記単一ホストインターフェースを使用して、前記バスコントローラと通信する、項目15に記載の方法。
(項目19)
前記クラスプロトコルおよび前記複数の周辺デバイスのそれぞれのネイティブバスプロトコルを利用する前記第1および第3の通信を前記単一ホストインターフェースを利用する前記第3の通信に変換することをさらに含む、項目14に記載の方法。
(項目20)
前記単一ホストインターフェースは、シリアルインターフェース、I2Cインターフェース、USBインターフェース、SPIインターフェース、およびCANインターフェースから成る群から選択される、項目14に記載の方法。
【図面の簡単な説明】
【0014】
本発明は、付随の図面を参照することによって、より理解され、その多数の目的、特徴、および利点は、当業者に明白となり得る。異なる図面内の同一参照記号の使用は、類似または同じアイテムを示す。
【0015】
図1図1は、周辺デバイスの組との通信をサポートするために従来のホストデバイスによって利用されるソフトウェアインターフェースのスタックされた組を図示するブロック図である。
【0016】
図2図2は、周辺デバイスの組との通信をサポートするためにホストデバイスの一実施形態によって利用されるソフトウェアインターフェースのスタックされた組を図示するブロック図である。
【0017】
図3図3は、単一ホストインターフェースを経由してI2CHIDとの通信をサポートする実施形態によって利用される、ソフトウェアおよびファームウェアスタックを図示する。
【発明を実施するための形態】
【0018】
ホストデバイスを使用する周辺デバイスの動作は、ホストデバイスによって提供されるソフトウェアおよびハードウェアインターフェースとの周辺デバイスの適合性を確実にすることを要求する。多くの場合、ハードウェア適合性を決定することは、ホストデバイスが新しい周辺デバイスによって要求されるハードウェアバスのタイプをサポートするかどうかを確認することのみである。多くの事例では、ハードウェア適合性は、ホストデバイスおよび周辺デバイスが設計されおよび製造されるときに決定される。いくつかの事例では、ホストデバイスは、新しい周辺デバイスをサポートするために、汎用ハードウェアを再構成することによって修正され得る。周辺デバイスが、ホストデバイスによって提供されるハードウェアインターフェースと適合性があると決定される場合、ソフトウェア適合性が、次いで、確認されることができる。
【0019】
ソフトウェアの観点から、適合性は、ホストデバイスが周辺デバイスを動作させるために必要なソフトウェアを実行することを要求する。説明されたように、大部分のホストデバイスシステムは、典型的には、このソフトウェアをインターフェースのスタックされた層の中に編成する。各層は、ホストデバイスと適合性のある周辺デバイスとの間にサポートされる通信経路を実装するために使用されるサービスの特殊な組を提供する。新しい周辺デバイスをサポートすることは、正しいソフトウェアインターフェースがスタックの各層で利用可能であることを確実にすることを要求する。ある場合には、ホストデバイスによってすでに使用中の既存のライブラリが、新しい周辺デバイスをサポートするために適正である。他の場合には、スタックの1つ以上のレベルにおける更新ソフトウェアプログラムが、要求される。
【0020】
従来のシステムでは、スタック内の最高層は、アプリケーションソフトウェアプログラムから成る。これらのデバイス特有のプログラムは、インターフェースを提供し、インターフェースは、周辺デバイスによって提供される特徴および機能性がそれによって動作させられるユーザインターフェースを含み得る。アプリケーションソフトウェアによって提供される特徴を実装する低レベル命令を実装するデバイスドライバプログラムが、アプリケーションソフトウェアの下方の層内で動作する。大部分のシステムは、クラスデバイスドライバプログラムに依拠し、クラスデバイスドライバプログラムは、特定のタイプの種々の周辺プログラムを動作させるために使用されることができるドライバプログラムの標準化ライブラリを提供する。例えば、HIDクラスUSBドライバは、USBプロトコルを使用するHIDと相互動作するための共通機能性を含むであろう。類似したHIDクラスI2Cドライバは、I2Cプロトコルを使用する同一の共通HID機能性を実装することができる。周辺デバイスのあるデバイス特有の能力は、クラスドライバによってサポートされない場合がある。これらのシナリオは、デバイス特有の機能性を実装するためのミニクラスドライバプログラムもインストールされることを要求し得る。ミニクラスドライバは、クラスドライバと相互動作するように構成され、ミニクラスドライバは、デバイス特有の機能性を提供し、クラスドライバは、一般的機能性を提供する。
【0021】
ホストデバイスがそれによって周辺デバイスと通信する通信プロトコルを実装するソフトウェアプログラムが、クラスドライバの下方にある。これらの下位レベル層は、バスプロトコルドライバとバスコントローラプログラムとを含む。各バスプロトコルドライバは、USBおよびI2C等の特定のバスプロトコルを介して周辺デバイスと通信するための命令を実装する。バスコントローラは、サポートされるハードウェアバスのうちの1つに沿ってデータを実際に伝送するための命令を実装する。一緒になって、これらの2つの層は、ホストデバイスと周辺デバイスとの間で情報を伝送するために使用されるバスプロトコルを実装する。従来のシステムでは、ホストデバイスは、バスプロトコルのサポートにおいて、ハードウェア実装を提供しなければならない。ある場合には、これらのプロトコルは、プロトコルによって使用されるバスをホストデバイスプロセッサとインターフェース接続するための専用ピンを使用して、実装される。これらのバスプロトコル実装は、多くの場合、ハードウェア依存性であるので、新しいバスプロトコルは、ホストデバイスによって容易にサポートされることができない。
【0022】
図1は、周辺デバイスの組110a−fとの通信をサポートするために、従来のホストデバイス100において利用されるスタックされたインターフェースの典型的システムを図示する。従来のシステムでは、市場の種々の周辺デバイスをサポートすることは、有意な負担をホストデバイス100にかける。ホストデバイス100は、市場の種々の周辺デバイスとのロバストな適合性を提供するために、ハードウェアおよびソフトウェアインターフェースの多様な組をサポートするように設計および製造されなければならない。説明されるように、このような適合性は、ホストデバイス100の能力が周辺機器市場における新しい技術の採用に応答して更新されることができるように、将来を見据えなければならない。適合性はまた、ホストデバイス100が人気のある旧来のデバイスのためのサポートを提供し続けるために、過去も考慮しなければならない。
【0023】
図1の従来のシステム内の上層において、アプリケーションソフトウェア115a−fは、周辺デバイス110a−fによって提供される特徴および機能性に対するインターフェースを提供する。いくつかの事例では、このアプリケーションソフトウェア115a−fは、ホストデバイス100が、それによって、ヒトユーザが周辺デバイス110a−fと相互作用することを可能にするインターフェースを提供し得る。他の事例では、アプリケーションソフトウェア115a−fは、ソフトウェアインターフェースのみを提供し得る。図1に図示されるスタックされた層の残りは、アプリケーションソフトウェア115a−fを周辺デバイス110a−fにリンクするために、ホストデバイス100によって利用される。
【0024】
図1の従来のシステムに図示されるスタックされた層は、ホストデバイス100が、ある範囲の通信プロトコルを介した周辺デバイスとの通信をサポートすることを可能にする。タッチスクリーンHID115eをサポートするタッチスクリーンソフトウェアは、ホストデバイスのCPU上で実行し、I2Cを介して、周辺タッチスクリーンHID110bと通信する。キーボード115dの特徴を実装するためのソフトウェアは、周辺USBキーボード110eから入力を受信する。ホストデバイス100はまた、シリアルポートインターフェースを介して外部モニタ110aと通信する、外部ディスプレイソフトウェア115aを実行する。ホストデバイス100はまた、I2Cを介して、外部バッテリ110cとインターフェース接続するバッテリモニタソフトウェアプログラム115bを実行する。ホストデバイス100はまた、USBフラッシュドライブ110dとインターフェース接続する外部データ記憶115eをサポートするソフトウェアを実行する。ホストデバイス100はまた、シリアル周辺インターフェース(SPI)を介して周辺ビデオゲームパッド110fとインターフェース接続するビデオゲームソフトウェア115fを実行する。
【0025】
図1に描写される従来のシステムでは、ホストデバイス100が周辺デバイス110a−fの各々に対するサポートを提供するために、ホストデバイス100はまた、クラスドライバ120a−f、トランスポートミニドライバ135a−b、バスプロトコルドライバ125a−d、およびバスコントローラ130a−d等の構成要素の層を利用する。これらの層の各々は、周辺デバイス110a−fによって使用される下位レベル通信プロトコルの側面を実装する。例えば、外部モニタ110a等のシリアルポート周辺デバイスのサポートでは、ホストデバイス100上で稼働する外部ディスプレイソフトウェア115aは、外部ディスプレイソフトウェア115aに高レベルシリアルポートソフトウェアインターフェースを提供するシリアルポートクラスドライバ120a等の構成要素を呼び出す。このシリアルポートクラスドライバ120aは、モニタによって一般に利用されるシリアルポート通信機能を実装する。シリアルポートクラスドライバ120aは、順に、シリアルポート接続およびシリアルポートを介するデータの伝送を管理するために、シリアルポートドライバ125a等の構成要素を呼び出す。シリアルポートドライバ125aは、データが外部モニタ110aへおよびそこから伝送されるシリアルポートバス上の実際のトランザクションを管理するために、シリアルポートバスコントローラ130a等の構成要素に依拠する。
【0026】
同様に、図1の従来のシステムはまた、他の周辺インターフェースのためのサポートも含む。I2Cプロトコルを使用して通信するように設計された周辺機器に対して、ホストデバイス100は、ホストデバイスと、HIDタッチスクリーン100bおよび外部バッテリ110c等の周辺デバイスとの間のI2C接続を管理するために、I2Cドライバ125b等の構成要素に依拠する。これらのI2C周辺機器のサポートはさらに、ホストデバイス100が、I2Cバス上のデータトランザクションを管理するために、I2Cバスコントローラ等の構成要素を含むことを要求する。
【0027】
ホストデバイス100上で稼働するタッチスクリーンソフトウェア115cは、タッチスクリーンソフトウェア115cに高レベルHIDクラスインターフェースを提供するHIDクラスドライバ120a等の構成要素を呼び出す。このHIDクラスドライバ120cは、HIDプロトコルベースの周辺デバイスによって一般に利用されるHIDプロトコル通信機能を実装する。HIDクラスドライバ120cは、順に、I2Cプロトコルを使用するHIDクラスデバイスによって利用される通信機能を実装するHID−I2Cトランスポートミニドライバ135a等の構成要素を呼び出す。HID−I2Cトランスポートミニドライバ135aは、順に、I2Cバスを介してI2C接続およびデータの伝送を管理するために、I2Cドライバ125bを呼び出す。
【0028】
クラスドライバは、複数の通信プロトコルを使用する共通機能性を実装し得る。ホストデバイス100は、I2Cドライバ125bを動作させることが可能である種々のクラスインターフェースを利用する。図1のシステムでは、バッテリクラスドライバ120bおよびHIDクラスドライバ120cは、I2Cドライバ125bを介してI2Cプロトコルを利用する能力を提供する。バッテリクラスドライバ120bは、周辺バッテリデバイスによって一般に採用される機能を実装する。HIDクラスドライバ120cは、HIDによって一般に使用される機能を実装し、HID−I2CおよびHID−USBトランスポートミニドライバ135a−bを使用して、I2CおよびUSB通信プロトコルの両方をサポートする。いくつかのホストデバイスでは、各々が異なる通信プロトコルをサポートする2つの別個のHIDクラスドライバが、使用さされ得る。
【0029】
同様に、従来のホストデバイス100は、USBフラッシュドライブ110dおよびUSBキーボード110e等のUSB対応周辺デバイスへの接続を管理するために、USBドライバ125c等の構成要素を含む。USBドライバ125cは、USBプロトコルを使用するHIDクラスデバイスによって利用される通信機能を実装するHID−USBトランスポートミニドライバ135bに依拠する。これらのUSB周辺機器のサポートはさらに、ホストデバイス100が、USBバス上のトランザクションを管理するために、USBバスコントローラ130c等の構成要素を含むことを要求する。ホストデバイス100は、種々のクラスドライバを利用して、USBドライバ125cを動作させ、各クラスドライバは、異なるタイプの周辺デバイスによって使用される共通USB機能性を実装する。記憶装置クラスドライバ120dは、周辺記憶デバイスによって使用される共通機能性を実装し、HIDクラスドライバ120cは、種々のタイプのHIDによって使用される共通機能性を実装する。
【0030】
従来のホストデバイス100はまた、ビデオゲームパッド110f等のSPI対応デバイスへの接続を管理するために、SPIドライバ125dを含む。ビデオゲームパッド110fのためのサポートを提供するために、ホストは、ゲームパッドソフトウェア115fを実行し、ゲームパッドソフトウェア115fは、高レベルSPIソフトウェアインターフェースを提供するSPIクラスドライバ120a等の構成要素を呼び出す。SPIクラスドライバ120aは、周辺ゲームパッドデバイスによって使用される共通SPI機能性を実装する。SPIクラスドライバは、SPI対応デバイスへの接続を管理するために、SPIドライバ125d等の構成要素に依拠する。SPIドライバ125dは、SPIバス上の実際のトランザクションを管理するために、SPIバスコントローラ130d等の構成要素に依拠する。
【0031】
前述のように、理想的ホストデバイスは、人気のある現在および旧来のプロトコルの両方をサポートすることが可能であり、さらに、将来的プロトコルを含むように適合可能である。ホストデバイスによってサポートされる周辺デバイスの数が増加するにつれて、周辺デバイスをサポートするために使用されるインターフェースのスタックされた層の複雑性も同様に増す。これらのスタックされた層の複雑性が増すにつれて、スタックの構成要素に対する更新を効果的に管理することは、スタックされた層内で生じる多くの相互依存性に起因して、ますます困難になる。これらの需要に対処することによって、本発明の実施形態は、ホストデバイスが、単一インターフェースを通して、異なる通信プロトコルを利用するある範囲の周辺デバイスとインターフェース接続する能力を提供する。
【0032】
種々の実施形態のうちの1つが、図2に図示される。図2の実施形態によると、図1に関して説明される周辺デバイスの各々は、単一ホストインターフェース260を通してホストデバイス200に接続する。ホストデバイス200は、周辺デバイス210a−fの各々とインターフェース接続するために、内蔵コントローラ(EC)215に依拠する。内蔵コントローラ215は、各周辺デバイスのネイティブインターフェースを通して周辺デバイス210a−fの各々とインターフェースをとり、単一ホストインターフェース260を通してホストデバイス200とインターフェース接続するように構成される。この構成に従って、周辺デバイス210a−fの各々とのバスレベルトランザクションは、ホストデバイス200の代わりに、内蔵コントローラ215によって管理される。
【0033】
全バスレベルトランザクションが、ホストデバイス200と内蔵コントローラ215との間のインターフェースを通して流されることにより、ホストデバイスは、周辺デバイス210a−fをサポートするために、どんな他のハードウェアインターフェースもサポートする必要はない。図2の実施形態では、単一ホストインターフェース260は、LPCハードウェアインターフェースを使用して実装される。他の実施形態は、単一ホストインターフェース260として、他のハードウェアインターフェースを利用し得る。例えば、他の実施形態は、eSPI(拡張シリアル周辺インターフェースバス)、I2C、またはPCIハードウェアインターフェースを使用して、単一ホストインターフェースを実装し得る。いくつかの実施形態は、単一ホストインターフェースとして使用されるハードウェアインターフェースを構成する能力を提供し得る。
【0034】
単一ホストインターフェース260として使用されるハードウェアインターフェースにかかわらず、この選択は、周辺デバイス210a−fに透過性である。周辺デバイス210a−fの各々は、従来のシステムにおけるように、同一ネイティブバスインターフェースを使用してホストデバイス200と通信する。例えば、外部モニタ210aは、依然として、従来のシステムにおいて使用される同一シリアルポートインターフェースを使用して、ホストデバイスと通信する。しかしながら、ホストデバイスのプロセッサによって提供されるハードウェアインターフェースと直接インターフェース接続する代わりに、周辺デバイス210a−fは、内蔵コントローラ215によって提供されるハードウェアインターフェースとインターフェース接続する。周辺デバイス210a−fの各々に関連付けられたアプリケーションソフトウェアプログラム205a−fも、内蔵コントローラ215による単一ホストインターフェース260の使用によって影響されない。各アプリケーションソフトウェアプログラム205a−fは、図1の従来のシステムにおいて使用される同一クラスドライバ220a−cおよび任意のミニクラスドライバを使用して、その対応する周辺デバイス210a−fと通信する。その結果、周辺デバイス210a−fによって提供される機能性は、周辺デバイス210a−fとの低レベルバストランザクションをブリッジする中間体としての役割を果たす、内蔵コントローラ215によって影響されない。
【0035】
図1の従来のシステムでは、通信プロトコルは、バスプロトコルドライバ125a−dおよびバスコントローラ130a−b等のソフトウェア構成要素を使用して実装される。バスプロトコルドライバ125a−dの各々は、ホストデバイス100によってサポートされるハードウェアバスプロトコルのうちの1つに対応するソフトウェアインターフェースを実装する。例えば、ホストデバイス100は、ホストデバイス100が外部バッテリ110cおよびタッチスクリーン110b等のI2Cデバイスと通信するソフトウェアインターフェースを提供するI2Cドライバ125bを実行する。これらのバスプロトコルドライバ125a−dは、I2C周辺デバイスと通信するためにホストデバイス100によって呼び出されるI2C命令を実装する。
【0036】
図1の従来のシステムのハードウェアバスコントローラ130a−bは、そのサポートされるネイティブバスプロトコルに従って周辺デバイスと通信するために必要とされる個々のバスレベルトランザクションを実装するために、ホストデバイス100によって利用されるソフトウェアプログラムである。これらのバスコントローラプログラムは、ホストデバイスによってサポートされる個々のバス上でデータを実際に伝送するための命令を提供する。バスコントローラプログラムは、その特定のプロトコルを利用する全デバイスによって使用されるバストランザクションを実装する。例えば、I2Cバスコントローラ130bは、物理I2Cバス上でデータを伝送するために使用される低レベルソフトウェアを実装し、I2Cを介してホストデバイス100と通信する全周辺デバイスの代わりに、I2Cバスへのアクセスを仲介する。図1の従来のシステムでは、HIDタッチスクリーン110bおよびバッテリデバイス110cは両方とも、I2Cバスコントローラ130bを介して、ホストデバイス100と通信する。
【0037】
新しい周辺デバイスが従来のシステムにおけるホストデバイス100によって動作させられることができる場合を決定することは、新しい周辺デバイスを動作させるために必要なソフトウェアプログラムが全て、インストールされ、ホストデバイス100にアクセス可能であることを確実にすることを要求する。例えば、パーソナルコンピュータによる使用のためにUSBキーボード110eをインストールするとき、ホストデバイス100によってキーボードを動作させるために必要なソフトウェアは全て、パーソナルコンピュータ上にインストールされなければならない。キーボードの特徴を提供する、デバイス特有のアプリケーションソフトウェア115dが、インストールされなければならない。キーボードデバイスを動作させるための好適なクラスドライバ120cが、パーソナルコンピュータのクラスドライバライブラリ内で識別されなければならないか、または、そうでなければインストールされなければならない。USBプロトコルを実装するソフトウェアプログラムもまた、インストールまたは識別されなければならない。デバイス特有のUSBドライバ125cが、キーボードを動作させるために必要なUSB通信を実装するようにインストールされなければならない。クラスドライバ120cおよびデバイス特有のUSBドライバとインターフェース接続するためのトランスポートミニドライバ135bもまた、インストールまたは識別されなければならない。さらに、汎用USBバスコントローラ130cも、識別または別様にインストールされなければならない。
【0038】
図2の実施形態では、同一アプリケーションソフトウェア205a−fおよびクラスドライバ220a−eが、図1の従来のシステムにおけるように使用される。その結果、従来のシステムを実施形態に変換するために要求される修正は、アプリケーションソフトウェア205a−fおよびクラスドライバ220a−eに透過性である。周辺デバイス210a−fもまた、変更されない。周辺デバイス210a−fならびにホストデバイス200上で実行するアプリケーションソフトウェア205a−fおよびクラスドライバ220a−eの観点から、これらの構成要素間で通信するために使用されているネイティブインターフェースは、従来のホストデバイスから変更されないので、変化は、はっきり分からない。例えば、USB HIDキーボード210eならびに対応するアプリケーションソフトウェア205dおよびクラスドライバ220cは、依然として、それらの間で通信するために、USBプロトコルを呼び出す。しかしながら、図1の従来のシステムに存在するトランスポートミニドライバ135a−b、デバイス特有のバスプロトコルドライバ125a−d、およびバスコントローラ130a−dではなく、実施形態は、代わりに、単一ホストインターフェースを実装するために、ミニポートドライバ240a−dならびに単一コントローラドライバ245および単一バスコントローラ250を利用すし、全周辺デバイスは、単一ホストインターフェースよってホストデバイス200と通信するであろう。
【0039】
実施形態によると、ミニポートドライバ240a−d等の構成要素が、クラスドライバ220a−eと合わせて使用される。ミニポートドライバ240a−dは、クラスドライバ220a−eによって使用される通信を実装する。ミニポートドライバ240a−dは、あるクラスのデバイスによって使用される通信機能を実装し、コントローラドライバ245によって提供されるバスレベル通信機能と相互動作するように構成される。例えば、図2の実施形態では、HIDミニポートドライバ240は、HIDクラスデバイスによって使用される通信を実装し、コントローラドライバ245およびコントローラ250によって実装されるバス通信プロトコルを使用して、これらの通信を内蔵コントローラ215に転送するように構成される。コントローラ250によって受信された通信は、次いで、単一ホストインターフェース260のプロトコルから周辺デバイス210a−fによって使用されるネイティブプロトコルに変換される。類似した変換は、周辺デバイス210a−fから発生し、アプリケーションソフトウェア205a−fに流れる通信のために、これらの構成要素によって行われる。このように、ミニポートドライバ240a−dは、HIDプロトコルのようなクラス特定のプロトコルと、ホストデバイス200によって実装される単一バスプロトコルを通して周辺デバイスによって利用されるネイティブバスプロトコルとの間のホストデバイス200上のブリッジとしての役割を果たす。
【0040】
図1における従来のホストデバイスのバスプロトコルドライバ125a−dおよびバスコントローラ130a−dと同様に、コントローラドライバ245およびコントローラ250は、ホストデバイス200のためのバス通信を実装する。しかしながら、ホストデバイス200の設計者によって必要と考えられるバスプロトコルの全てを実装するのではなく、コントローラドライバおよび245およびコントローラ250は、単一バスプロトコルを実装する。図2の実施形態では、この単一バスプロトコルは、LPCであるが、ホストデバイス200および内蔵コントローラ215によってサポートされ得る、任意の他の通信プロトコルであることができる。実際に実装されるバスプロトコルにかかわらず、全周辺機器と通信するために、単一ホストインターフェース260に依拠するホストデバイス200の能力は、ホストデバイス200が、単一ホストインターフェース260によって利用される単一バスプロトコルのためのハードウェアサポートのみを実装する必要があることを意味する。いくつかの実施形態では、この単一ホストインターフェースは、構成可能であり得る。そのような実施形態は、ホストデバイスによってサポートされるであろう周辺デバイスの組によって要求される多数のバスプロトコルではなく、限定数のバスプロトコルのみをサポートする必要性からも依然として利益を享受する。
【0041】
実施形態はまた、周辺機器とホストデバイスプロセッサとの間のバス通信の完全制御を維持することからも利益を享受する。あるバスプロトコルは、バスを利用する構成要素による適切なバスマスタリングを要求する。周辺機器によって要求されるバスプロトコルがホストデバイスによってサポートされ得る場合でも、バスマスタリング等のバス通信の低レベル側面における差異は、この通信リンクのエラー条件および/または非効率的動作をもたらし得る。従来のシステムにおけるバスコントローラ130a−dおよびバスプロトコルドライバ125a−dは、潜在的に、種々の周辺機器と直接インターフェース接続するので、これらの構成要素に対する更新は、後方適合性が維持されることを確実にしなければならない。したがって、新しい周辺デバイスに対応するために行われる、これらのバスプロトコル層のソフトウェアに対する更新は、事実上、実装することが困難であり得る。その結果、ホストデバイスは、内蔵コントローラとのバス通信のみをサポートする必要性によって利益を享受し、それは、異なる周辺デバイスによって使用され得る低レベルバスプロトコル実装における任意のそのような不適合に対応することにより好適である。
【0042】
ホストデバイス200による単一ホストインターフェース260の使用が周辺デバイス210a−fに透過性であるために、ホストデバイスは、周辺デバイス210a−fとのバストランザクションをブリッジする内蔵コントローラ215に依拠する。いくつかの実施形態では、内蔵コントローラは、3つの主要構成要素から成る。これらの構成要素のうちの1つは、単一ホストインターフェース260のために選定されるバスプロトコルを使用するバストランザクションを実装するために使用されるファームウェアである。図2の実施形態では、内蔵コントローラ215のファームウェアは、ホストデバイス200ハードウェア内でサポートされるLPCバスを使用して、ホストデバイス200のプロセッサと通信する。ファームウェアは、周辺デバイス210a−fとホストデバイス200との間の通信を伝送するが、単一ホストインターフェース260によって利用されるバスプロトコルを使用して通信をブリッジする。
【0043】
図2の実施形態の内蔵コントローラ215はさらに、スーパーI/O構成要素から成る。このスーパーI/O構成要素は、デバイスネイティブインターフェースファームウェアによって使用されるネイティブバスプロトコル通信と単一ホストインターフェース260によって利用されるバスプロトコルとの間で変換を行う。スーパーI/O構成要素は、ホストと周辺デバイスとの間で伝送される実際の情報を処理する必要はなく、代わりに、これらの通信を伝送するために使用されるプロトコルのみを変換する必要がある。いくつかの実施形態では、内蔵コントローラ215のスーパーI/O構成要素は、ホストデバイス200のプロセッサによってサポートされるメモリ/メールボックスインターフェースを使用して、ホストデバイス200と通信する。
【0044】
図2の実施形態の内蔵コントローラ215はさらに、デバイスネイティブインターフェースファームウェアから成る。デバイスネイティブインターフェースファームウェアは、そのネイティブバスプロトコルに従って、周辺デバイス210a−fとの通信を実装する。このファームウェアは、ホストデバイス200の代わりに、サポートされるバスプロトコルの各々に対するバストランザクションを実装する。新しいバスプロトコルは、ホストデバイス200に影響を及ぼさずに、このファームウェアを更新することによってサポートされることができ、したがって、ホストデバイス200のハードウェアインターフェースに対する更新を要求しない。いくつかの実施形態では、内蔵コントローラ215のデバイスネイティブインターフェースファームウェアは、周辺デバイス210a−fによって使用されるネイティブバスプロトコルにおけるバストランザクションをサポートするように構成される、一般的およびデバイス特有のクラスドライバの組を実装し得る。
【0045】
図3は、単一ホストインターフェースとしてLPCを使用するI2Cを利用するHIDデバイスとの通信をサポートする実施形態のためのソフトウェアおよびファームウェアスタックを図示する。図3の実施形態では、ホストデバイス300は、ホストによる使用のためにHID機能性を実装するHIDクラスドライバ315を実行する。いくつかの実施形態では、HIDクラスドライバ315は、ユーザがサポートされるHID周辺デバイス340および345と相互作用し得る機能性を実装するであろう。他の実施形態では、HIDクラスドライバ315は、サポートされるHID周辺デバイス340および345と相互動作するために、ホスト300によって使用される機能性のみを実装するであろう。
【0046】
HIDクラスドライバ315は、周辺HIDデバイス340および345と通信するために、HID−EMIミニポートドライバ320とインターフェース接続する。HID−EMIミニポートドライバ320は、HIDデバイス340および345によって利用されるクラス特有のHIDプロトコルを使用して、HIDクラスドライバと通信する。HID−EMIミニポートドライバ320は、これらのHIDプロトコル通信を、ホストデバイス300によってサポートされる単一ホストインターフェースとして使用される、LPC/EMIバスプロトコル310に変換する。HID−EMIミニポートドライバ320は、ホストデバイス300によって使用される単一ホストインターフェースとして使用されるLPC/EMIバスプロトコル310を実装する、LPC/EMIバスドライバ325とインターフェース接続する。
【0047】
内蔵コントローラ305上では、LPC/EMIプロトコルが、ファームウェア330内に実装される。ファームウェア構成要素330は、ホストデバイス300のLPC/EMIバスドライバ325とインターフェース接続することによって、変換された周辺デバイス通信をホストと内蔵コントローラとの間で伝送する。さらに、内蔵コントローラ305上で実行することによって、I2Cファームウェアドライバ335は、ネイティブI2Cバスプロトコルにおいて周辺デバイス340および345とインターフェース接続する。
【0048】
前述の明細書は、特定の実施形態を説明するが、本明細書に開示される実施形態および追加の実施形態の詳細における多数の変更が、本説明を参照することによって、当業者に明白となり、それらは、当業者によって成されるであろう。本文脈では、明細書および図は、限定的意味ではなく、例証的と見なされるものとし、そのような修正は全て、本開示の範囲内に含まれるものと意図される。故に、本開示の範囲は、以下の請求項およびその法的均等物によって決定されるべきである。
図1
図2
図3