JP3920280B2 - I2cルータを通じたデータ送信方法 - Google Patents
I2cルータを通じたデータ送信方法 Download PDFInfo
- Publication number
- JP3920280B2 JP3920280B2 JP2004165338A JP2004165338A JP3920280B2 JP 3920280 B2 JP3920280 B2 JP 3920280B2 JP 2004165338 A JP2004165338 A JP 2004165338A JP 2004165338 A JP2004165338 A JP 2004165338A JP 3920280 B2 JP3920280 B2 JP 3920280B2
- Authority
- JP
- Japan
- Prior art keywords
- port
- router
- bus
- data
- buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000005540 biological transmission Effects 0.000 title claims description 114
- 238000000034 method Methods 0.000 title claims description 98
- 239000000872 buffer Substances 0.000 claims description 142
- 230000006854 communication Effects 0.000 claims description 85
- 238000004891 communication Methods 0.000 claims description 85
- 238000010586 diagram Methods 0.000 description 41
- 230000008569 process Effects 0.000 description 39
- 238000007726 management method Methods 0.000 description 21
- 238000004458 analytical method Methods 0.000 description 16
- 238000011084 recovery Methods 0.000 description 10
- 230000000875 corresponding effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 230000002457 bidirectional effect Effects 0.000 description 7
- 230000001276 controlling effect Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000003139 buffering effect Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 5
- 230000007175 bidirectional communication Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000012790 confirmation Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005086 pumping Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/405—Coupling between buses using bus bridges where the bridge performs a synchronising function
- G06F13/4059—Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0016—Inter-integrated circuit (I2C)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
- Small-Scale Networks (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
これらのタスクの実行において、電子回路および電子システムは、通信バスを介して相互に通信することが多い。
通信バスの1つのタイプが、集積回路間バス(I2C(inter-integrated circuit)バス)である。
I2Cバスは、集積回路(IC)と電子システムとの間の通信リンクを提供する。
従来、I2Cバスは、シリアルデータライン(SDA)およびシリアルクロックライン(SCL)と呼ばれる2つのアクティブワイヤからなる。
このI2Cバスシステム100では、管理プロセッサ110が、I2Cバス115上の通信アクセスを管理する。
I2Cバス115は、SCLライン112およびSDAライン114を含む。
これらのSCLライン112およびSDAライン114は、モジュール形式のフィールド交換可能ユニット(FRU)120、121、および122に接続される双方向通信パスを提供する。
プルアップ抵抗器135および137は、SCLライン112およびSDAライン114にそれぞれ接続されて、各ラインのデフォルト状態を確立する。
FRUは、サーバブレード、サーバカード、ドライバ、メモリ、または複合機能ICが含まれるさまざまなコンポーネントとすることができる。
I2Cバスは、インテリジェントプラットフォーム管理インターフェース(IPMI(Intelligent Platform Management Interface))または他のI2Cプロトコルと共に使用することができる。
I2Cバスに接続されたコンポーネント(例えばFRU)は、一意のアドレスを有し、(例えば、そのデバイスの特定の機能に応じて)データの送り手または受け手として振る舞うことができる。
IPMIによると、バス上のそれぞれの「インテリジェント」デバイスは、マスタとしての役割を果たし、マスタ−マスタ通信プロトコルを利用する。
別のマスタ(例えば管理プロセッサ)がバスを制御している間に、あるコンポーネント(例えばFRU120)が、I2Cバス上で情報の送信を試みる場合には、そのコンポーネントは、I2Cの調停ルールに従わなければならない。
基本的に、バスの制御権を得ようと試みているすべてのデバイスは、バスの監視も行わなければならず、そして、信号が、その個々のデバイスが書き込もうとしているものと一致しないとすぐに引き下がらなければならない。
バスは、プルアップ抵抗器によってハイレベルに引き上げられており、アクティブなデバイスによってのみローレベルに駆動されるので、ローレベルを駆動するデバイスが、バスの制御権を得る。
意図的でないエンティティおよび/または認可されていないエンティティがバス上で通信される情報にアクセスすることを防止することが、一般に望ましい。
しかしながら、従来、意図的でないコンポーネントが、I2Cバス上の通信をスプーフィングすることは一般に可能である。
例えば、共通の筐体(例えば、共通の筐体においてスロットが貸し出されているホスト−クライアントの状況)のI2Cバス上における、第1のエンティティ(例えば第1の企業)が利用するコンポーネント向けの通信は、第2のエンティティ(例えば競争相手企業)が利用する別のコンポーネントによって受信可能である。
より具体的に言うと、I2Cバスを「スプーフィング」するデバイスは、この特定の「スプーフィング」を行うデバイスに宛てられていなかったデータ(例えば競争相手の機密情報)を故意に受信することが可能である。
例えば、I2Cバスのあるセグメントにバス障害があると、バスに接続されたコンポーネントが破損したセグメントにない場合であっても、そのコンポーネントへの通信は、通常、失われる。
適切な保守を提供するには、I2Cバスに接続されたデバイスのタイプおよび個数をよく理解することが、一般に有益である。
従来、これは、手作業で行われており、特に、コンポーネントが遠隔に位置する場合には、大きな労力を必要とし、多くの場合、不便であった。
また、システムのエラーを発見して是正の方向を提供することも、一般に困難であった。
例えば、あるデバイスがマスタになって、他のデバイスのバスの使用を妨げる情報を絶えず送信することによりバスを有効に「捕捉」するといった状況は、従来、検出および修正することが困難であった。
I2Cバスに接続されたデバイスの容量特性も、多くの場合、保守および再構成を困難にする可能性がある。
この容量性負荷は、プルアップ抵抗器と共に、I2Cバスを介して通信される信号の属性に影響を与えるRC定数の特性を生成する。
例えば、信号波形が、変更される可能性があり、コンポーネントが論理的な1と0とを区別する機能が、影響を受ける可能性がある。
その結果、I2Cバスラインの容量特性と抵抗特性との間の適切なバランスを維持することが望ましい。
しかしながら、バス上のコンポーネントの個数およびタイプが容量特性に影響を与えるので、コンポーネントを動的に追加したり除去したりすると、容量および抵抗のバランスを維持することは困難となる可能性がある。
バランスを実現する従来の試みは、一般に、I2Cに接続されるコンポーネントの個数を制限するものであり、多くの場合、高価なバスの再設計が必要となるものであった。
この再設計が誤って行われると、バス割り込みが引き起こされる可能性があり、場合によっては、破局的なバス障害が引き起こされる可能性がある。
例えば、図1を参照して、FRU120、FRU121、およびFRU122はそれぞれ、割り当てられたI2Cアドレスを有する。
上述したように、FRU120が第1のエンティティによって操作され、FRU121が第2のエンティティによって操作される状況を考察する。
第2のエンティティが、FRU120へ送信中のデータにアクセスしたい場合、FRU121は、FRU120のI2Cアドレスを使用することにより、現在のI2Cバスシステムをスプーフィングして、FRU121がFRU120であると信じさせることができる。
さらに、従来技術によるI2Cバスには、I2Cバス上のデータトラフィックを容易に分析してデバッグすることができないという欠点もある。
シリアルの2ラインI2Cバスは、イベントをトラップする場合、シリアルデータパターンをトラップしなければならないので、イベントのトラップが困難である。
さらに、どのデバイスが、送信元デバイスであるかを検出することも困難である。
すなわち、宛先のデバイスアドレスしか容易にトラップできない。
添付図面において、同じ参照符号は、同様の要素を参照する。
これらの実施の形態の例を添付図面に示す。
本発明を、これらの実施の形態と共に説明するが、実施の形態は、本発明をこれらの実施の形態に限定することを意図するものはないことが理解されよう。
それとは反対に、本発明は、代替なもの、変更したもの、および均等なものをカバーするように意図されており、これらは、添付した特許請求の範囲によって画定されるような本発明の精神および範囲内に含めることができる。
さらに、以下の本発明の詳細な説明では、本発明の十分な理解を提供するために、多数の具体的な細部について述べる。
しかしながら、本発明は、これらの具体的な細部がなくても実践することができることが理解されよう。
それ以外の場合には、既知の方法、手順、コンポーネント、および回路は、本発明の態様を不必要に分かりにくくしないように詳細に説明していない。
次に、図2を参照する。
図2には、本発明の一実施の形態による集積回路間(I2C)ルータシステム200のブロック図を示す。
この例示のI2Cルータシステム200は、管理プロセッサ201、I2Cルータ250、ならびに複数のフィールド交換可能ユニット(FRU(field removable unit))220、221、および222を備える。
管理プロセッサ201は、高速外部バス240によってI2Cルータ250に接続されている。
FRU220、221、および222は、電気的に分離されたI2Cバス部241、242、および243によってI2Cルータ250にそれぞれ接続されている。
それぞれのI2Cバス部241、242、および243は、SDAラインおよびSCLラインを備える。
例えば、I2Cバス部241のSDAライン261およびSCLライン271は、FRU220をI2Cルータ250に通信接続し、I2Cバス部242のSDA262およびSCLライン272は、FRU221をI2Cルータ250に通信接続し、I2Cバス部243のSDAライン263およびSCLライン273は、FRU222をI2Cルータ250に通信接続する。
プルアップ抵抗器(例えば、プルアップ抵抗器290)は、SDAラインおよびSCLライン(例えば、SCLライン273)に接続されている。
I2Cルータ250は、任意の個数のポートを備えることができ、この実施の形態に限定されるものではないことが理解されるべきである。
高速内部バス281は、高速外部ポート210、ならびにI2Cポート253a、253b、および253nに接続されている。
一実施の形態において、それぞれのI2Cポート253a、253b、および253nは、それぞれ、電気コネクタ259a、259b、および259nに接続されたコントローラ257a、257b、および257nを含む。
電気コネクタ259a、259b、および259nは、それぞれのI2Cバス部241、242、および243をI2Cルータ250に通信接続する。
例示の一実施態様において、各電気コネクタは、シリアルデータピンおよびシリアルクロックピンを含む。
コントローラ257a、257b、および257nは、対応する電気コネクタ259a、259b、および259nを流れるデータ通信を制御し、これらの電気コネクタが、認可されずにデータ(例えば、内部高速バス281上で通信されるデータ)にアクセスすることを防止する。
本発明の一実施の形態において、コントローラは、フィールドプログラマブルゲートアレイ、マイクロプロセッサなどとすることができる。
例えば、コントローラ257aは、電気コネクタ259aを通じたI2Cバス241上への通信について、内部高速バス281からのデータのスプーフィングを防止する。
集積回路間ポートの下流に接続されたFRUが、情報の受信を認可されていない場合に、集積回路間ポートは、上記情報がI2Cバス部へ通信されるのを妨げることができる。
したがって、それぞれのバス部(例えば、241および243)に接続されたデバイス(例えば、FRU220および222)を制御する1つのエンティティ(例えば企業)または複数のエンティティ(例えば、供給業者と購入者)は、別個のバス部(例えば242)に接続されたデバイス(例えばFRU221)を制御する認可または承認されていないエンティティ(例えば競争相手)による情報の不正なスプーフィングを受けることなく、互いに情報を通信することができる。
本発明のコントローラ(例えば257b)は、情報が、対応する電気コネクタ(例えば259b)を介して通信されることを防止するので、認可または承認されていないエンティティは、情報を不正に受け取ることができない。
高速内部バス281は、パラレルバスとすることもできるし、本発明のさまざまな構成と互換性のある他の任意の高速バスとすることもできることが理解されよう。
高速内部バス281は、I2Cポート253a、253b、および253nのそれぞれの間で情報を通信し、また、これらのポートのそれぞれと高速外部ポート210との間でも情報を通信する。
高速内部バス281の通信速度は、各ポートの外部通信速度と異なってもよい。
オプションとして、ポート253a、253b、253n、および/または210は、各ポートで通信される情報をバッファリングするキャッシュメモリを備える。
これらのキャッシュと高速内部バスとの組み合わせにより、複数のポートは、I2Cルータ250への情報の通信およびI2Cルータ250からの情報の通信を同時に行うことが可能になる。
例えば、インテリジェントプラットフォーム管理インターフェース(IPMI)がパケットを32バイトに制限し、I2Cルータ250がこのIPMIプロトコルを利用する構成で使用される場合、キャッシュは、そのパケットサイズの倍数(例えば、64バイト、96バイトなど)のサイズにすることができる。
リトライ方式およびフロー制御方式を利用してオーバーフロー状況の処理を援助する本発明の実施の形態では、付加的な柔軟性を実現することができる。
例えば、特定のポートに関連付けられたキャッシュが、あらかじめ定められた容量に達すると、プログラミングされたオーバーフロー制御ルーチンが、バスに割り込みを行って、そのポートがそのメモリをダンプしてエラーを防止できるようにする。
集積回路間ポートは、I2Cバス部の相互間を電気的に分離する。
例えば、ポート253a、253b、および253nは、I2Cバス部241、242、および243の相互間を電気的に分離する。
I2Cバスを電気的に分離することにより、I2Cバス部に接続されたデバイス(例えば、FRU220、221、および222)のホットスワッピングが容易になる。
例示の一実施態様では、I2Cバス部を電気的に分離することによって、FRUのスワッピングにより影響を受けるI2Cバス部のプルアップ抵抗器(例えば、プルアップ抵抗器290)を変更して容量の変化を吸収する必要なく、FRUのスワッピングが可能になる。
したがって、全体の容量限界には、従来のI2Cバスが使用された場合よりも柔軟性が得られる。
また、I2Cバス部をセグメント化して電気的に分離することにより、I2Cバス部の1つに接続されたデバイス(例えばFRU)が障害を起こした場合であっても、I2C機能を維持することも容易となる。
あるI2Cバス部(例えば、I2Cバス部242)に接続されたデバイス(例えばFRU221)が、障害を起こしても、そのデバイスは、他のI2Cバス部(例えば、241および243)に接続された他のデバイス(例えば、FRU220および222)が相互に通信することを妨げることはない。
このパケットベースのルータでは、数バイトが、ポートで同時(例えば、I2C停止(STOP)状態の待機中)に読み出され、次いで、I2Cルータ250の別のポートに転送される。
I2Cルータ250の各ポートは、接続されたI2Cバス(例えば、241、242、および243)上の正当なI2C通信プロトコルの挙動を認識でき、I2Cルータ250は、必要に応じてI2Cハンドシェークを処理できる。
例示の一実施態様において、I2Cルータ250は、別のI2Cポートに接続されたデバイスが、I2Cルータ250と同時に通信することを許可することができ、それによって、従来、I2Cバスの部分が空くまでデバイスが必ず待たなければならないという必要はなくなる。
一実施の形態において、I2Cルータ250のポートに接続されたFRUまたはデバイスは、従来のI2Cバスにおいて動作するのと同様に通常どおり動作し、I2Cルータ250の存在は、FRUまたはデバイスにはトランスペアレントなものである。
高速外部バス240は、パラレルポートバスとすることもできるし、高速I2Cバスとすることもできるし、他の任意の高速バスとすることもできることが理解されよう。
この場合も、I2Cルータ250は、別のポート(例えば、I2Cポート220、221、および/または222)から受信したデータをキャッシュして、高速外部バス240上にデータをポンピングするバッファをオプションとして備える。
それによって、I2Cルータ250に接続された複数のデバイスが、同時に通信することが可能になる。
例示の一実施態様において、コントローラ351は、高速内部バス375(243ではない)を介してこれらのI2Cバスカプラに接続されたポート管理コンポーネントである。
このポート管理コンポーネントは、上記I2Cコネクタが上記データに不正にアクセスするのを防止することを含めて、I2Cバスカプラを通るデータ通信フローを管理する。
一実施の形態において、第2のポート(例えば253b)からの情報が、第1のポート(例えば253a)にもアドレス指定されておらず、第1のポートに接続された外部デバイス(例えばFRU220)にもアドレス指定されていない場合、第1のポートに関連付けられたコントローラ(例えば257a)は、第2のポートからの情報が第1のポートを介して電気コネクタ(例えば259a)に通信されるのを防止する。
さらに別の実施の形態では、コントローラ(例えば、257a、257b、257n)は、I2Cポートが、別のI2Cポートにデータを送信することも防止する。
図3には、本発明の一実施の形態による集積回路間(I2C)ルータ350のブロック図300を示す。
I2Cルータ350は、ポート353a、353b、および353nのそれぞれにコントローラを有するのではなく単一のコントローラ351を有する点を除いて、I2Cルータ250と同様である。
I2Cルータ350は、高速内部バス375、コントローラ351、外部高速ポート310、ならびにI2Cポート253a、253b、および253nを備える。
高速内部バス375は、コントローラ351、高速外部ポート310、ならびにI2Cポート253a、253b、および253nに接続されている。
高速内部バス375は、双方向とすることができることが理解されよう。
I2Cルータ350は、任意の個数のポート(例えば、16個の個別のI2Cポート)を含むことができることも理解されよう。
コントローラ351は、対応するポート353a、353b、および353nを通るデータ通信フローを制御し、これらのポートが認可されずにデータ(例えば、内部高速バス375上で通信されるデータ)にアクセスすることを防止する。
本発明の一実施の形態において、コントローラは、フィールドプログラマブルアレイ、マイクロプロセッサなどとすることができる。
本発明の実施の形態によると、フィールドプログラマブルゲートアレイ(FPGA)などの単一のユニットを使用して、ルータ内のポートのすべてを制御することができ、この場合、その汎用入出力ピンは、I2Cバスとして使用され、したがって、I2Cポートがその内部に作成される。
本発明の一実施の形態において、I2Cルータは、I2Cルータのいずれのポートについても、ポートアドレスへの双方向(例えば、データ受信方向およびデータ送信方向)の通信を阻止することができる。
例えば、ポート253aが、ポート253bとの通信のみを許可され、ポート253bが、ポート253aとの通信のみを許可されていると仮定する。
ポート253aからそれ以外のどのアドレス(例えば、ポート253n)へのどのパケットも、I2Cルータ250を通じて転送されない。
その結果、I2Cルータ250によってサポートされるI2Cデバイスの個数は、そのルータのポート数の127倍に増加する。
例えば、I2Cルータ250が、16個のポートを有する場合、利用可能なアドレス数は、2032個となる。
したがって、2032個までのデバイスを16ポートのI2Cルータに接続することが可能になる。
図4には、本発明の一実施の形態に従って、集積回路間(I2C)ルータでの通信を制御するプロセスのフロー図400を示す。
本発明の一実施の形態によると、ルータは、ポートが情報をスプーフィングする能力を制限することによって、ポート間の通信を制御する。
本発明の実施の形態において、I2Cバス接続インターフェースは、I2Cコネクタアドレスと関連付けられている。
そのデータに含まれる宛先アドレスが、I2Cコネクタアドレスに対応しているかどうかが判断される。
例えば、受信データパケットが検査されて、そのデータパケットのヘッダ部において、送信元アドレスおよび宛先アドレスが特定される。
データが、I2Cコネクタアドレスに対応している場合、そのI2C接続インターフェースが、そのデータの通信の承認を受けているものであるかどうかを分析する分析が行われる。
例示の一実施態様において、データは、I2Cバス部を介してサーバブレードから受信される。
データは、(例えば、高速外部バス、外部I2Cバスなどから)I2Cルータの第1のバス接続インターフェース上で受信できることが理解されよう。
この場合、データは、I2Cルータに含まれる第2のバス接続インターフェース宛てのものである。
本発明の一実施の形態において、データは、あるデバイス(例えばFRU)へI2Cバス部を介して転送される。
I2Cインターフェース上での通信を禁止することにより、I2Cバス上での「スプーフィング」が防止され、これによって、外部コンポーネントまたはデバイス(例えば、図2からのFRU220、221、および222)には、セキュリティがさらに提供される。
例えば、I2Cバス接続インターフェースは、I2Cバスの一部を電気的に分離するのに利用される。
I2Cバス接続インターフェースがI2Cバスを異なる部分に分割するのに利用される例示の一実施態様においては、プルアップ抵抗(例えば、図2のプルアップ抵抗器290)を変更することなく、I2Cバス接続インターフェースに接続されたコンポーネントのホットスワッピングが可能になる。
図5には、本発明の実施の形態による集積回路間(I2C)ルータのブロック図を示す。
ルータ570は、高速ポート510を備える。
高速ポート510は、このルータを高速外部バス540に接続する。
高速バス540は、高速I2Cバスとすることもできるし、パラレルバスとすることもできるし、当技術分野で既知の他の任意の高速バスとすることもできることが理解されよう。
本発明による一実施の形態において、高速バス540は、8線パラレルバスである。
制御ロジックは、マスク530に接続されている。
マスク530は、制御ロジック515に制御情報を提供する。
また、高速ポート510は、高速内部バス575上の通信をバッファリングするオプションバッファ520も含む。
上述したように、オーバーフロールーチンおよびバッファリング方式は、制御ロジック515によって実施されて、データオーバーフローから生じるエラーからの保護を行う。
オプションとして、高速ポート510は、エラーレジスタおよび対応するシステムイベントログを備える。
エラーレジスタは、ルータにおけるエラーを追跡し、システムイベントログは、エラーを編成して、報告することができる。
分かりやすくするために、図5は、2つのI2Cポート550および560を示している。
ポート550は、制御ロジック516およびマスク531を備える。
制御ロジック516は、ポート550の通信を制御する。
マスク531は、制御ロジック516に制御情報を提供する。
マスク531は、ソフトウェアを使用してプログラミングすることもできるし、I2Cデュアルインラインプラグ(DIP)スイッチにより手動でプログラミングすることもできることが理解されよう。
マスク531は、ポート550がデータ送信可能なポートアドレスを提供する。
ポートが、マスク531において許可されていないアドレスへデータを送信しようとすると、そのデータは、ルータ570に入力されない。
各I2Cポートは、I2Cプロトコルを制御するI2Cコントローラも含むことが理解されよう。
ポート560は、ポート550と同様に構成され、この場合、ポート560は、制御ロジック517、マスク532、およびオプションバッファ522を備えることが理解されよう。
本発明の実施の形態によると、ルータ570の複数のポートは、中央制御ロジックおよび中央マスクを共有する。
集中化した構成では、単一のプロセッサおよび単一のマスクが、高速内部バス574上の通信を制御することができる。
ポート550は、I2Cバス541に接続され、ポート560は、I2Cバス542に接続されている。
本発明の一実施の形態によると、I2Cポート550は、自身に接続されたデバイスの存在を検出するためのオプションの検出ラインも含む。
さらに、ポート550に接続された応答しないデバイスをリセットするオプションのリセットラインが、ポート550に接続される。
リセットラインは、ルータ570でエラーを引き起こしているデバイスをリセットする手段を提供することができる。
本発明の一実施の形態において、高速ポート510は、デバッグロジックを備える。
このデバッグロジックは、ルータでエラーを起こしているデバイスに接続されたリセットラインを、その応答しないデバイスをリセットするように切り換えることができる。
例えば、ポート550に接続されたデバイスは、わずか100kb/sでしか通信できない場合があり、ポート560は、自身に接続されたデバイスであって、1.4Mb/sで通信できるデバイス、を有する場合がある。
内部高速バス575は、ルータ570のI2Cポートに接続されたデバイスが高速で通信できるような帯域幅を提供する。
有利なこととして、ルータ570のポートに接続されたデバイスは、従来のI2Cバス上で動作するのと同様に通常どおり動作し、それらのデバイスは、ルータ570に気付くことはない。
好都合なこととして、ルータ570は、I2Cバスをデバイスごとに電気的にセグメント化し、有利なこととして、特定のポートの特定の送信元に宛てられたパケットのみがそのポートに転送される。
従来のI2Cバスの実施態様では、すべてのデバイスが単一のバスを共有し、かつ、当該単一のバスに取り付けられるが、この従来のI2Cバスの実施態様とは対照的に、本発明は、有利なこととして、ルータに接続されたデバイスを電気的に分離する。
したがって、バス上のあらゆる障害デバイスは、他のポートの他のデバイスに影響を与えることはない。
さらに、I2Cバスをセグメント化して、I2Cバス上のデバイスを電気的に分離することにより、プルアップ抵抗器を変更してバス上の容量の変化を吸収する必要なく、I2Cバス上のデバイスをホットスワッピングすることが可能になる。
その上、I2Cバス上のデバイスを電気的に分離することにより、本発明は、ルータの各ポートをI2C仕様の400pFの容量限界に近づける。
したがって、各セグメントまたはポートに必要な容量の要件は、従来のI2Cバスが使用された場合よりも緩和されたものとすることができる。
図5を全体的に参照して、本発明の実施の形態は、I2Cルータ570を通じたデータ通信を安全に制御するプロセスを提供する。
一実施の形態において、I2Cルータ570は、I2Cポート550、I2Cポート560、および高速ポート510を備える。
I2Cルータ570は、任意の個数のI2Cポートを備えることができ、図5に示す実施の形態によって限定されないことが理解されるべきである。
例えば、I2Cルータ570は、16個のI2Cポートを備えることができる。
各I2Cポートは、高速内部バス575に接続されている。
このコントローラは、マスクレジスタが提供する制御情報に基づいてI2Cポートを通じたデータ通信を制御するように動作できる。
一実施の形態において、マスクレジスタは、コントローラ(例えば制御ロジック516)のランダムアクセスメモリ(例えばRAM)内に記憶される。
制御情報は、I2Cポートを通じた送信が許可されるデータ通信を指定するものである。
一実施の形態において、制御情報は、I2Cポートを通じてデータを送信することができる宛先のI2Cアドレスを指定する。
一実施の形態において、この論理回路は、アドレスを制御情報と比較するための排他的OR(XOR)およびANDの論理回路を備える。
このXORおよびANDの論理回路は、制御ロジック(例えば、制御ロジック515、516、および517)内に含めることができる。
1つのI2Cポートまたは1組のI2Cポートが、特定のデータ通信の受信者であると識別されると、アクセスの妥当性確認が、PITレジスタで示される。
一実施の形態において、PITレジスタは、コントローラ(例えば制御ロジック516)のRAM内に記憶される。
PITレジスタは、少なくとも、I2Cルータ570に存在するポートと同数のビットを含むことが理解されるべきである。
アクセスの妥当性確認は、PITレジスタで「1」として示される。
図6Aには、本発明の一実施の形態に従って、集積回路間(I2C)ポートにおけるデータ通信を安全に制御するコンピュータ実施されるプロセス600のフロー図を示す。
本発明による一実施の形態において、プロセス600は、集積回路間ポート(例えば、図5のI2Cポート550)で実行される。
プロセス600には、具体的なブロックが開示されるが、このようなブロックは例示である。
すなわち、本発明による実施の形態は、他のさまざまなブロックまたは図6Aに列挙したブロックを変形したものを実行することにもよく適している。
このデータは、宛先アドレスを含む。
一実施の形態では、このデータは、ヘッダおよびペイロードを含むデータパケットである。
宛先アドレスは、ヘッダ内に含まれる。
I2Cポートを通じたデータ通信を安全に制御し、かつ、アドレススプーフィングを防止するために、宛先アドレスは、I2Cポートで妥当性が確認されなければならない。
一実施の形態では、宛先アドレスは1バイトである。
上述したように、この制御情報は、特定の宛先アドレスに向けられたデータを特定のI2Cポートを通じて送信することが許可されているかどうかを指定するものである。
一実施の形態では、この制御情報は、1つのI2Cアドレスを含む。
別の実施の形態では、この制御情報は、ある範囲のI2Cアドレスを含む。
一実施の形態において、このマスクレジスタは、コントローラ(例えば制御ロジック516)のランダムアクセスメモリ(例えばRAM)内に記憶される。
マスクレジスタが設定されると、1つのI2Cポートを通じた通信またはある範囲のI2Cポートを通じた通信が可能になる。
一実施の形態では、I2Cポートのマスクレジスタは、単一のI2Cアドレスに設定される。
別の実施の形態では、I2Cポートのマスクレジスタは、ある範囲のI2Cアドレスに設定される。
一実施の形態では、高速ポート510のマスク530が設定されることにより、アドレス20h(16進数表記)への通信が可能になる。
I2Cルータ570の他のI2Cポートのマスクレジスタは、最初、単一のI2Cアドレスに設定することができる。
マスクレジスタは、複数のI2Cアドレスを記憶する個別の設定を占めるように管理することができる。
別の実施の形態では、マスクレジスタは、ある範囲のI2Cアドレスを記憶する2バイトである。
図7Aは、本発明の実施の形態による2バイトのマスクレジスタの例示のマスクレジスタ設定700および710を示している。
アドレスレジスタは、I2Cアドレスを示すためのものである。
ドントケアレジスタは、アドレスレジスタのビットが、許可された宛先アドレスを示すために使用されることを示すためのものである。
ドントケアレジスタにおけるそれぞれの「1」は、使用されるビットを示し、ドントケアレジスタにおけるそれぞれの「0」は、使用されないビットを示す。
ドントケアレジスタおよびアドレスレジスタは、単一のI2Cアドレスまたはある範囲のI2Cアドレスを提供するように機能できる。
図示するように、ドントケアレジスタは、1111 1110(2進数表記)に設定され、アドレスレジスタは、0010 0000bに設定されている。
ドントケアレジスタのビットは、最後のビットを除いてすべて1に設定されている。
アドレスレジスタのすべてのビットは、許可された宛先アドレスを決定するために使用される。
したがって、許可されたアドレスは、0010 000xb(20hおよび21h)のみである。
アドレス空間の最初の7ビットのみが使用されることが理解されるべきである。
このバイトの最後のビットは、アクセスが読み出しであるのか書き込みであるのかを決定するものである。
図示するように、ドントケアレジスタは、1111 1000b(F8h)に設定され、アドレスレジスタは、0010 0000bに設定されている。
ドントケアレジスタにおける最後の3ビットが、0に設定されているので、許可された宛先アドレスは、0010 0xxxbとなり得る。
ここで、xは、1であってもよいし、0であってもよい。
したがって、許可されたアドレスは、20h〜27hの範囲のアドレスとなる。
マスクレジスタ設定700と同様に、アドレス空間の最初の7ビットのみが使用される。
このバイトの最後のビットは、アクセスが読み出しであるのか書き込みであるのかを決定するものである。
制御情報は、宛先アドレスが、I2Cポートを通じた送信を許可されているかどうかを示すものである。
図6Bには、本発明の一実施の形態による、宛先アドレスを制御情報と比較するプロセス630のフロー図を示す。
本発明による一実施の形態において、プロセス630は、集積回路間ポート(例えば、図5のI2Cポート550)で実行される。
プロセス630には、具体的なブロックが開示されるが、このようなブロックは例示である。
すなわち、本発明による実施の形態は、他のさまざまなブロックまたは図6Bに列挙したブロックを変形したものを実行することにもよく適している。
宛先アドレスおよびアドレスレジスタの各ビットが比較される。
これらのビットが一致しない場合には、「1」が返される。
あるいは、これらのビットが一致する場合には、「0」が返される。
XOR演算の結果およびドントケアレジスタの各ビットが比較される。
これらのビットのいずれかが「0」である場合には、「0」が返される。
あるいは、これらのビットのいずれもが「0」でない場合には、「1」が返される。
0の値は、宛先アドレスが、マスクレジスタに記憶された制御情報と一致することを示す。
一致することは、宛先アドレスが、I2Cポートを通じたデータの送信を許可されることを示す。
比較720および730は共に、図7Aのマスクレジスタ設定710に示すのと同様のマスクレジスタ設定に基づいており、この場合、許可されるアドレスは、20h〜27hの範囲のアドレスである。
図6Bのステップ632に示すように、宛先アドレス(24h)およびアドレスレジスタ(20h)に対して、論理XOR演算が実行され、04hの結果が返される。
次いで、図6Bのステップ634に示すように、XOR演算の結果(04h)およびドントケアレジスタ(F8h)に対して、論理AND演算が実行される。
論理AND演算の結果は、00hになり、I2Cポートを通じた送信を許可する宛先アドレスを示す。
宛先アドレス(28h)およびアドレスレジスタ(20h)に対して実行される論理XOR演算は、08hの結果を返す。
XOR演算の結果(08h)およびドントケアレジスタ(F8h)に対して実行される論理AND演算は、08hの結果を返す。
論理AND演算の結果が、00hでない値になるので、この宛先アドレスは、I2Cポートを通じた送信を許可されない。
次いで、プロセス630は、図6Aのプロセス600のステップ640に進む。
あるいは、論理AND演算が、0以外の値を返す場合には、ステップ639に示すように、I2Cポートを通じた送信は許可されない。
次いで、プロセス630は、図6Aのプロセス600のステップ640に進む。
一実施の形態において、この判断は、図6Bのプロセス630で説明したように、宛先アドレスと制御情報との比較の結果に基づく。
宛先アドレスを制御情報と比較するには、任意の比較を使用することができ、本発明は、図6Bのプロセス630で説明した実施の形態に限定されないことが理解されるべきである。
例えば、マスクレジスタが、1つのアドレスを記憶する1バイトである場合、マスクレジスタおよび宛先アドレスに対してXOR演算を実行することができ、この場合、00hの結果は、許可された宛先アドレスを示す。
次いで、プロセス600は、ステップ670に進む。
あるいは、I2Cポートを通じた送信が許可されない場合、ステップ660に示すように、データは、I2Cポートによって無視される。
一実施の形態では、PITレジスタのI2Cポートに対応するビットに、「1」が示される。
I2Cポートのマスクレジスタを使用することにより、バスにわたって通信される情報にアクセスする意図的でないエンティティおよび/または認可されていないエンティティを防ぐことが可能である。
各ポートには、アドレスが割り当てられ、特定のアドレスに向けられた情報のみを、ポートを通じて送信することができる。
さらに、バスをスプーフィングするデバイスは、マスクレジスタにより、認可されていないデータを故意に受信することはできない。
図5を再び全体的に参照して、本発明の実施の形態は、バッファオーバーフローを回避するI2Cルータ570を通じたデータの新規な送信方法を提供する。
本発明の一実施の形態において、I2Cルータ570は、第1のI2C送信元ポートバッファ522と、高速内部バス575を介して第1のI2C送信元バッファ522に接続されたI2C宛先ポート550と、同様に高速内部バス575を介してI2C宛先ポート550に接続された第2のI2C送信元ポートバッファ(図示しないが、バッファ521および522と同様である)とを備える。
ルータ570の各バッファは、ルータ570のポートに関連付けられている(例えば、第1のI2C送信元バッファ522は、I2Cポート560に関連付けられている)。
ルータのポートは、内部バス(例えば、高速バス575)を通じて互いに通信する。
第1のI2C送信元ポートバッファ522にデータを受信すると、ルータ570は、第1のI2C送信元ポートバッファ522がオーバーフローする前に、I2C宛先ポート550を捕捉するように動作できる。
ルータは、宛先ポート550を捕捉すると、他の送信元ポートバッファ(図示せず)から宛先ポート550への送信を制限すると同時に、第1のI2C送信元ポートバッファ522からI2C宛先ポート550にデータを送信するように動作できる。
したがって、本発明によると、ルータ570は、ポート間でデータを送信するルータ/ハブとして動作できる。
同様に、ルータ570は、ポート間で安全な送信を行うマルチバスハブ(multi bus hub)として動作できる。
本発明のこの実施の形態の具体的なステップが、フローチャート800、900に開示されるが、このようなステップは例示である。
すなわち、本発明の実施の形態は、他のさまざまなステップまたはフローチャート800、900に列挙したステップと均等なステップによっても実行することができる。
また、フローチャート800、900のステップは、提示したものとは異なる順序で実行することができ、フローチャート800、900のステップのすべてが実行され得るとは限らない。
フローチャート800、900により説明される方法のすべてまたは一部は、コンピュータ可読で、かつ、コンピュータ実行可能な命令を使用して実施することができる。
これらの命令は、例えば、コンピュータシステムまたは同様のデバイスのコンピュータ使用可能媒体に存在する。
一実施の形態において、フローチャート800、900のステップは、図5の例示のルータ570によって実施することができる。
図8Aおよび図8Bには、本発明の一実施の形態による、集積回路間(I2C)ルータ(例えば、図5のルータ570)を通じたデータ送信方法のフロー図800を示す。
この方法は、ステップ801から開始する。
この開始は、送信元ポート(例えば、送信元ポート560)が、I2Cデータパケットの開始を表す新たなデータを受信したことを、ルータ570が気付いた時に行われる。
この新たなデータは、送信元ポート560に接続された送信デバイス(図示せず)からSDA562およびSLC572を通じて受信されるものであり、宛先ポート(例えば、ルータ570の宛先ポート550)に送信するためのものである。
ステップ803において、データは、チェックされ、そのパケットが、ポート560以外の別のポートに転送されるべきかどうかが判断される。
I2C送信では、データパケットの最初のバイトが、そのパケットの宛先アドレスを含む。
データパケットが別のポートに転送されるべきかどうかをチェックする際に、ルータ570は、このバイトを検査し、受信する宛先ポートがもしあれば、どの宛先ポートがそのパケットを受信すべきかを決定する。
ステップ804において、パケットが別のポート(例えば、ポート550)に転送されるべきものであると、ルータ570が判断した場合、ステップ806において、データは、ルータ570によって、宛先ポート550への転送についての妥当性が確認される。
この確認は、ルータのマスク532のデータを宛先ポート550のアドレスと比較することにより行われる。
一方、ステップ807において、データが、宛先ポート550に転送されることについて妥当であると確認されると、ステップ809において、ルータ570は、宛先ポート550が、送信元ポート560から入来するデータの受信準備ができたことの確認を受信するまで、送信元ポート560のバッファ522にデータをキューイングする。
この送信において、ステップ818、819、および820で、バッファ522の残りのデータと共にこのデータを、高速バス575を介して宛先ポート550にストリーミングすることができる。
図8Bのステップ812において、ルータ570は、ポーリングすることによって、送信元ポートバッファ522をチェックし、送信元ポートバッファ522のあらかじめ定められた点(例えば中間点)に到達したかどうかを判断する。
あるいは、送信元ポートバッファは、そのあらかじめ定められた点に到達すると、ルータへの割り込みを起動する。
ステップ813において、ルータ570は、宛先ポートが利用可能かどうかを調べるために、宛先ポート550のレジスタをポーリングし、宛先ポート550の制御を得るための交渉も行う。
送信元ポートバッファ522の容量が、まだ、あらかじめ定められた点未満である限り、ルータ570は、データを送信元バッファ522に続けてキューイングし、宛先ポート550の制御を得るための交渉を続けて行う。
これは、ルータ570が、宛先ポート550のSDAラインおよびSCLライン以外のすべてのSDAラインおよびSCLラインを論理的なローレベルにアサートすることにより達成される。
I2Cプロトコルのもとでは、送信側ポートが、自身のポートで0からなるバイトのデータを受信している認識すると、その最初の送信を停止し、その送信の再送を試みる。
本発明によると、送信元ポート560以外のポートにおける最初のデータの停止時と再送時との間で、ルータ570は、宛先ポート550に割り込み、宛先ポート550の交渉を勝ち取る。
ルータ570が、宛先ポート550の捕捉動作を開始した時に、宛先ポート550がビジーでない場合、ルータ570は、宛先ポート550の制御を取得し、宛先ポート550へのデータの送出を(例えば、送信元ポートバッファ522が満たされていくのと同じ速度で)開始することに留意すべきである。
ルータ570は、宛先ポート550を捕捉すると、送信元ポート560における宛先ポート550向けのデータが送信されるまで、ステップ818、819、および820において、送信元ポート560から宛先ポート550にデータを送信する。
ルータ570が、宛先ポート550を捕捉できず、送信元ポートバッファ522がオーバーフローすると、この方法は、ステップ815において、送信元ポート560でデータが損失するという結果で終了する。
したがって、例えば、パケット長が32バイトであり、送信元ポートバッファ522の容量が64バイトである場合に、宛先ポート550の捕捉動作は、送信元ポートバッファ522が32バイトになった時に開始する。
これらの状況下で、送信元ポートバッファ522は、オーバーフローしないはずである。
本発明のこの実施の形態では、パケット長とバッファ容量との他の設計比も使用できることに留意すべきである。
図9には、本発明の一実施の形態による、集積回路間(I2C)ルータを通じた代替的なデータ送信方法のフロー図を示す。
このI2Cルータ900を通じたデータ送信方法は、ステップ901において、ルータ570の第1の送信元ポートバッファ522のデータを受信することを含む。
ステップ902において、ルータ570は、第1の送信元ポートバッファ522がオーバーフローする前に、宛先ポート550を捕捉するように動作できる。
ステップ903において、ルータ570は、他の送信元ポートバッファ(図示せず)から宛先ポート550への送信を制限すると同時に、第1の送信元ポートバッファ522から宛先ポート550にデータを送信するように動作できる。
しかしながら、データをバッファリングする方法は、I2Cポートと外部高速ポートとの間の通信、および、I2Cポートと複数のI2Cポートとの間の通信も含むことが可能であることが理解されよう。
図5を全体的に再び参照して、本発明の実施の形態は、例えばバッファ522などの送信元ポートバッファがオーバーフローした場合の、I2Cルータ570を通じた新規なデータ送信方法も提供する。
本発明のこの実施の形態において、ルータ570は、第1のI2C送信元バッファ522と、高速内部バス575を介して第1のI2C送信元バッファ522に接続されたI2C宛先ポート550と、同様に高速内部バス575を介してI2C宛先ポート550に接続された第2のI2C送信元ポートバッファ(図示しないが、バッファ521および522と同様である)とを備える。
例えば、バッファ521、522などのルータ570の各バッファは、例えば、ルータ570のポート550、560などのポートに関連付けられている。
例えば、第1のI2C送信元バッファ522は、I2Cポート560に関連付けられている。
ルータのポートは、例えば高速バス575などの内部バスを通じて互いに通信する。
送信元バッファ522へのデータの再送を要求すると、ルータ570は、宛先ポート550への送信を現在試みている他のポート、または、宛先ポート550へ現在送信中の他のポートをビジーにするように動作できる。
あるいは、ルータ570は、I2C宛先ポート550に割り込むように動作できる。
いずれの場合も、I2C宛先ポートへのアクセスに成功すると、ルータは、他の送信元ポートバッファ(図示せず)から宛先ポート550への送信を制限すると同時に、送信元ポートバッファ522から宛先ポート550に回復データを再送するように動作できる。
したがって、本発明によると、ルータ570は、ポート間でデータを送信するルータ/ハブとして動作できる。
同様に、ルータ570は、ポート間で安全な送信を行うマルチバスハブとして動作できる。
本発明のこの実施の形態の具体的なステップが、フローチャート1000、1100に開示されるが、このようなステップは例示である。
すなわち、本発明の実施の形態は、他のさまざまなステップまたはフローチャート1000、1100に列挙したステップと均等なステップによっても実行することができる。
また、フローチャート1000、1100のステップは、提示したものとは異なる順序で実行することができ、フローチャート1000、1100のステップのすべてが実行され得るとは限らない。
フローチャート1000、1100により説明される方法のすべてまたは一部は、コンピュータ可読で、かつ、コンピュータ実行可能な命令を使用して実施することができる。
これらの命令は、例えば、コンピュータシステムまたは同様のデバイスのコンピュータ使用可能媒体に存在する。
一実施の形態において、フローチャート1000、1100のステップは、図3および図5の例示のルータ570によって実施することができる。
図10Aおよび図10Bには、本発明の一実施の形態による、集積回路間(I2C)ルータ570を通じたデータ送信方法のフロー図1000を示す。
この方法は、ステップ1001から開始する。
この開始は、送信元ポート(例えば、送信元ポート560)が、パケットの開始を表す新たなデータを受信したという情報を、ルータ570が受信した時に行われる。
この新たなデータは、送信元ポート560の送信デバイスからのものであり、宛先ポート(例えば、宛先ポート550)に送信するためのものである。
I2C送信では、パケットの最初のバイトが、そのパケットの宛先アドレスを含む。
データが転送されるべきかどうかをチェックする際に、ルータ570は、このバイトを検査し、例えばポート550などの宛先ポートがもしあれば、どの宛先ポートがそのパケットを受信すべきかを決定する。
ステップ1004において、パケットが転送されるべきものであると、ルータ570が判断した場合、ステップ1006において、データは、宛先ポート550への送信についての妥当性が確認される。
この確認は、ルータのマスクデータ532を宛先ポートアドレスと比較することにより行われる。
一方、ステップ1007において、データが、宛先ポート550に転送されることについて妥当であると確認されると、ステップ1009において、ルータ570は、宛先ポート550が、送信元ポート560から入来するデータの受信準備ができたことの確認を受信するまで、送信元ポート560のバッファ522にデータをキューイングする。
この送信において、ステップ1016、1017、および418で、バッファ522の残りのデータと共にこのデータを宛先ポート550にストリーミングする。
ステップ1013において、ルータ570は、以下の2つの動作の一方を行い、宛先ポート550を捕捉する。
これは、ルータ570が、宛先ポート550以外のすべてのSDAラインおよびSCLラインを論理的なローレベルにアサートすることにより達成される。
I2Cプロトコルのもとでは、送信側ポートが、自身のポートで0からなるバイトのデータを受信していると認識すると、その最初の送信を停止し、その送信の再送を試みる。
最初のデータの停止時と再送時との間で、ルータ570は、宛先ポート550に割り込み、宛先ポート550の交渉を勝ち取る。
ルータ570が、宛先ポート550の捕捉動作を開始した時に、宛先ポート550がビジーでない場合、ルータ570は、宛先ポート550を制御し、バッファ522が満たされていくのと同じ速度で、データの送出を開始することに留意すべきである。
補足した時点で、ルータ570は、ステップ1016において、データの送信がステップ1017で完了するまで、送信元ポート560から宛先ポート550へデータを供給する。
データが宛先ポート550に供給されている時、ルータ570は、パケットの送信が成功に終わるまで、SCLラインおよびSDAライン上のローレベルを引き伸ばすことにより、他のポートをビジーに維持する。
その後、ルータ570は、通常動作に戻る。
図11には、本発明の一実施の形態による、集積回路間(I2C)ルータを通じた代替的なデータ送信方法のフロー図1100を示す。
ステップ1101において、オーバーフローしたデータは、第1のI2C送信元ポートバッファに再送される。
I2Cルータは、I2C宛先ポートおよび第2のI2C送信元ポートバッファをさらに備える。
ステップ1102において、オーバーフローしたデータは、第1のI2C送信元ポートバッファで受信される。
ステップ1103において、I2C宛先ポートが捕捉される。
ステップ1104において、第1のI2C送信元ポートバッファからのデータが、I2C宛先ポートに送信される。
さらに、本発明によると、バッファがオーバーフローすると、宛先ポートに再送するために、データを回復させることができる。
また、本発明によると、ルータは、送信されたデータを追跡することもでき、バスを獲得するために交渉することもできるので、指定されたポートへのアクセスを制限することにより、各ポートへの安全な送信を有するマルチバスデータハブとしてルータを動作させることができる。
しかしながら、I2Cパケットのオーバーフロー回復方法は、I2Cポートと外部高速ポートとの間の通信、および、I2Cポートと複数のI2Cポートとの間の通信も含むことが可能であることが理解されよう。
図12は、本発明の一実施の形態による集積回路間(I2C)ルータエラー管理システム1200のブロック図である。
このI2Cルータエラー管理システム1200は、内部バス1215、高速ポート1220、デバッグコネクタ1230、ならびにI2Cポート1250および1270を備える。
内部バス1215は、(例えば、本発明の他の内部バス281、375、1810などと同様に)高速ポート1220、デバッグコネクタ1230、ならびにI2Cポート1250および1270を通信接続する。
高速外部ポート1220は、(例えば、高速外部ポート210、310、1815などと同様に)内部バス1215および高速外部バス1221からの高速インターフェースを提供する。
デバッグコネクタ1230は、I2Cルータシステム1200のコンポーネントから外部デバッグメカニズムへのインターフェースを提供する。
I2Cポート1250は、外部I2Cバス1213間のインターフェースを提供し、I2Cポート1270は、外部I2Cバス1217間のインターフェースを提供する。
例えば、I2Cポート1250は、制御ロジック1251、マスク1252、バッファ1255、パラレル/シリアルバスインターフェース1290、エラーレジスタ1253、およびシステムイベントログ1257を備える。
制御ロジック1251は、(例えば、制御ロジック257a、517、1640などと同様に)I2Cポート1250を通じた情報フローを制御する。
マスク1252は、(例えば、方法600ならびに/または図7Aおよび図7Bに示す設定などに従って)制御ロジック1251に制御情報を提供する。
バッファ1255は、I2Cポート1250を介して通信される情報をバッファリングする。
例示の一実施態様において、バッファ1255は、方法800、900、1000、または1100に従って情報をバッファリングすることができる。
パラレル/シリアルバスインターフェース1290は、I2Cポート1250の内部パラレル通信と外部シリアルI2Cバス通信との間のインターフェースを提供する。
エラーレジスタ1253は、(例えば、I2Cポート1250を通じた情報のデータフローに関連付けられ、制御ロジック1251によって制御される)エラー表示を追跡する(例えば記憶する)。
イベントシステムログ1257は、エラー情報および統計値を、整理および相関された形式でログ記録する。
本発明のI2Cバス1213は、SDAライン1201、SCLライン1202、存在検出ライン1203、およびリセットライン1204を含む。
本発明のI2Cバス1217は、SDAライン1207、SCLライン1208、存在検出ライン1209、およびリセットライン1210を含む。
存在検出ライン1203および1209は、(例えば、ライン1660および1665と同様に)バス1213および1217にそれぞれ通信接続されたコンポーネントの存在を示す。
リセットライン1204および1210は、バス1213および1217にそれぞれ通信接続されたコンポーネントにリセット表示を通信するために利用される。
エラーレジスタ1253は、フラグ153Aおよび153Bを利用して、エラー表示を捕捉することができる(例えば、エラーレジスタ1253に含まれる特定のビットが、あらかじめ定められた論理値に設定され、ある種類のエラーの存在を示す)。
エラーレジスタ1253は、I2Cポートに障害が発生したときに設定される障害ポートレジスタまたは障害ポートフラグを含むことができる。
また、このレジスタは、回復のために障害ポートの制御を取り戻してそのポートを監視するプロセスを実行する2次状態機械を起動することもできる。
この2次状態機械は、I2Cルータシステム1200に含めることもできる(例えば、シリアルバスインターフェース1290に並列に含めることができる)し、I2Cルータシステム1200から独立させることもできる。
I2Cルータシステム1200におけるエラーのない残りのポートは、障害ポートからの影響も2次状態機械からの影響も受けることなく、データを継続して適切に通過させる。
エラーのないI2Cルータシステム1200のポートが、「分離された」障害ポートとの通信を試みると、送信側ポートは、その通信の少なくとも一部が完了しないことを信号で伝えられる。
例示の一実施態様において、エラーレジスタ1253は、エラーカウントを保持する。
例えば、エラーレジスタ1253は、エラーレジスタフラグに関連付けられたエラーイベントが検出されるごとに、そのエラーレジスタフラグに含まれる値をインクリメントすることによって、エラーカウントを追跡することができる。
一実施の形態において、エラーレジスタ1253は、障害ポートの状態の表示を捕捉することができ、エラーからの回復に関与することができる。
例えば、障害ポートの状態は、SCLライン1202およびSDAライン1201の制御権を得るために、パラレル/シリアルバスインターフェース1290が自身のポートのリセットを試みた回数の表示によって認識することができる。
あるいは、障害ポートの状態は、I2Cルータシステム1200が、障害の疑いのあるI2Cポートの制御権の取得を試みて失敗した回数の表示によって認識することができる。
また、エラーレジスタ1253を利用して、バッファ問題(例えばバッファオーバーフロー)の捕捉およびバッファ問題からの回復を行うこともできる。
例えば、エラーレジスタを利用して、バッファ1255のバッファリング能力を超える長い送信パケットを検出することができる。
本発明のエラー管理ポリシーは、特定のI2Cポートによる有害なバス独占の可能性を最小にすることも対象にすることができる。
一実施の形態において、I2Cポートが「破損した(lost)」とみなされる(例えば、1つまたは複数の致命的なエラーがI2Cポートに発生した)場合、I2Cルータシステムは、データが、破損したI2Cポートへまたは当該I2Cポートから通過するのを防止することができる。
障害のあるI2Cポートは、I2Cルータシステム1200のデータ転送部(例えば、内部バス1215)から分離される。
例示の一実施態様において、I2Cルータシステム1200は、I2Cルータが適切に機能していない(例えば、「破損」した)ことを示すために起動される障害ライトを含む。
例示の一実施態様においては、タイムアウトレジスタ1291を利用して、エラー表示を提供することができる。
タイムアウトレジスタ1291には、最大タイムアウト値が設定される。
この最大タイムアウト値は、リセットが(例えば、リセットライン1204を介して)開始される前において、SCLライン(例えばSCL1202)がローレベルに保持される最大時間である。
交渉が長引いた場合、ストップビットが欠如した場合、および/またはバスがハングした場合を含めて、さまざまな理由から、SCLをローレベルに保持することができる。
このタイムアウト機能は、SCLがローレベルになった時に開始し、SCLラインがハイレベルになった時にリセットされる。
SCLラインが、タイムアウト値以上の時間の間、ローレベルにあると、I2Cルータシステム1200は、バスエラーが発生したものと結論する。
パラレル/シリアルバスインターフェース1290は、SCLラインがローレベルに固定されていることの表示またはステータスコードをステータスレジスタ1293にロードし、SCLライン1202およびSDAライン1201の解放を試みる割り込み信号を生成する。
制御ロジック1251は、ステータスレジスタ1293をポーリングし、割り込み信号ラインを監視することにより、エラーイベントの発生を判断することができる。
制御ロジック1252は、I2Cバスエラーカウンタの値を1つずつインクリメントし、かつ、障害ポートと障害のないポートとを区別するためのポートエラーLEDを設定することにより、応答することができる。
例示の一実施態様において、ストップビットの欠落が発生すると、パラレル/シリアルバスインターフェース1290は、シリアル転送中のバスエラーの発生を示すステータスコードをロードすることができる。
バスエラーは、フォーマットフレームの誤った(「違反した」)位置でスタート状態またはストップ状態が発生することにより引きこされることがある。
あるいは、ある外部インターフェースが、パラレル/シリアルバスインターフェースと干渉する。
例えば、あるデータビットまたは肯定応答ビットが、アドレスバイトにおいて送信される。
エラーが発生すると、(例えば、シリアル割り込みフラグの設定を含めて)割り込みが設定される。
ストップビットの欠落エラーが発生すると、制御ロジック1251は、ステータスレジスタ1293を再びポーリングして、ストップビット欠落エラーカウントを1つだけインクリメントすることができる。
I2Cルータエラー管理方法1300は、エラー問題を追跡し、表形式にし、かつ、エラー問題からの回復を行う。
相互集積接続(I2C)ルータエラー管理方法は、I2Cルータシステムのロバスト性および信頼性を向上させる。
例えば、ポートの通信トラフィックフロー特性が検査される。
I2Cポートが内部バスを捕捉している時間量を検査することもできるし、I2Cポートが1つのパケットで通信する情報量を検査することもできる。
例示の一実施態様では、バッファ(例えばバッファ1255)のオーバーフローが監視される。
一実施の形態では、ステップ1310で特定されたエラーが追跡される。
例えば、特定の種類のエラーの発生カウントが保持される。
例示の一実施態様では、エラー表示が、整理および相関された形式でログ記録される。
デバッグ分析を拡大して行うために、エラー表示をデバッグシステムへ通信することができる。
本発明の一実施の形態において、この回復動作は、エラーに関連したI2C通信活動を一時停止することを含む。
例えば、バッファを使用して大きなパケットをその宛先ポートに直接送信することが可能になるまで、影響を受けるポートを介した長い送信パケットの通信が一時停止される。
例示の一実施態様では、長いパケットの送信元ポートが、内部I2Cルータバスを捕捉できるまで、通信は一時停止される。
あるいは、大きなパケットは、送信元ポートを介して通信することが許可されず、大きなパケットの通信を試みる送信元ポートは、無効にされる。
送信元ポートを無効にすることは、他のポートが内部バス(例えば1215)にアクセスして、それらのポートを効果的に停止させることを、暴走プロセスおよび/またはサービス拒否攻撃が妨げるのを防止することにも利用できる。
本発明の一実施の形態において、エラー回復動作は、リセットを起動すること(例えば、I2Cポートに接続されたデバイスをリセットすること)を含む。
また、本発明は、複数のI2Cポートをリセットして、全I2C通信ネットワークエラー監視/回復システムの実施を容易にすることにも柔軟に適合することができる。
次に図14を参照する。
図14には、本発明の一実施の形態による、個別の送信速度をサポートする集積回路間(I2C)ルータのデータフロー図を示す。
本実施の形態の説明を分かりやすくするために、I2Cルータ1400を使用して、個別の送信速度を有する接続デバイスをサポートできるI2Cルータを示す。
しかしながら、図5のI2Cルータ570で説明したものなど、本発明の他の実施の形態も、個別の送信速度を接続デバイスに提供するように動作でき、個別の送信速度のサポートは、図14で説明する実施の形態だけに限定されるものでないことが理解されるべきである。
一実施の形態において、内部バス1402は高速バスである。
一実施の形態において、第1の送信速度1410は、ほぼ1.4メガヘルツ(MHz)である。
内部バス1402は、電気的に分離された外部バスへの接続用に構成されたポートを備える。
電気的に分離されたバス(例えば、外部I2Cバス1424および外部バス1434)は、電気的に分離されたポートが接続される他のバスとは、当該ポートを通じて独立に動作することができる。
I2Cポート1420は、バッファ1422を備え、外部I2Cバス1424に接続される。
外部I2Cバス1424は、内部バス1402から電気的に分離されている。
外部I2Cバス1424は、第2の送信速度1426でデータを送信するように動作できる。
一実施の形態では、第2の送信速度1426は、ほぼ100キロヘルツ(kHz)である。
別の実施の形態では、第2の送信速度1426は、ほぼ400kHzである。
外部I2Cバス1424は、外部デバイスまたは外部コンポーネント(例えば、図2のFRU220、221、および222)への接続用に構成される。
バッファ1422は、データが内部バス1410と外部I2Cバス1424との間で送信される時にそのデータを一時的に記憶するデータキャッシュを備える。
一実施の形態において、第1の送信速度1410が、第2の送信速度1424よりも大きい場合、バッファ1422は、第1の送信速度1410で内部バス1402からのデータを受信して、送信速度の相違により送信できないそのデータを記憶することによって、そのデータをバッファリングし、そして、第2の送信速度1426で外部I2Cバス1424にわたってデータを送信するように動作できる。
実質的には、バッファ1422は、低速リンクが、高速リンクからデータを受信できるように、データ送信速度を減速するように動作できる。
上述したように、バッファ1422のサイズは、さまざまなI2Cルータ1400の実施態様に従って構成することができる。
例えば、I2Cルータ1400が、IPMIプロトコルを利用する構成で使用される場合、キャッシュは、32バイトのパケットサイズの倍数(例えば、64バイト、96バイトなど)のサイズとすることができる。
例えば、データは、外部バス1424からI2Cポート1420に受信される。
バッファ1422は、そのデータをキャッシュする。
十分なデータがキャッシュされると、キャッシュされたデータは、内部バス1402にわたってバーストにより送信される。
バッファ1422は、低速リンクからデータを受信し、そのデータをキャッシュし、そして、そのデータをより高速で高速リンクにポンピングすることによって、より高いスループットを効果的に達成するように動作する。
データをバーストにすることにより、高速バス1410は、バス1424とは独立に他のデータを自由にバーストにすることができる。
ポート1430は、バッファ1432を備え、外部バス1434に接続されている。
外部バス1434は、内部バス1402から電気的に分離されている。
外部バス1434は、第3の送信速度1436でデータを送信するように動作できる。
バッファ1432は、バッファ1422と同様に動作し、第1の送信速度1410が第3の送信速度1436と異なる場合に、データをバッファリングするように動作できることが理解されるべきである。
別の実施の形態では、ポート1430は、高速ポート(例えば、図5の高速ポート510)であり、外部バス1434は、外部高速バス(例えば、図5の高速外部バス540)である。
一実施の形態において、内部バス1402は、第1の送信速度よりも小さな送信速度でデータを送信するように動作できる。
本実施の形態では、外部I2Cバス1424からポート1420に受信されたデータをキャッシュする必要はなく、また、そのデータを第1の送信速度1410でバーストにより送信する必要はない。
ポート1420は、第2の送信速度で内部バス1410にわたってデータを送信するように動作可能であってよい。
バッファ1432は、第2の送信速度1426で内部バス1402からデータを受信するように動作でき、第3の送信速度1436でポート1430から外部バス1434へデータを送信するように動作できる。
バッファ1432は、第1の送信速度1410で内部バス1402からデータを受信するように動作でき、第3の送信速度1436で外部バス1434へデータを送信するように動作できる。
バッファ1432は、第3の送信速度1436で外部バス1434から受信したデータをキャッシュするように動作でき、第1の送信速度1410で内部バス1402にわたってバーストによりデータを送信するように動作できる。
これらの図には、本発明の実施の形態に従って、集積回路間(I2C)ルータのポート間でデータを通信するプロセス1500、1520、および1530を示すフロー図を示す。
本発明による一実施の形態において、プロセス1500、1520、および1530は、I2Cルータ(例えば、図14のI2Cルータ1400)で実行される。
プロセス1500には、具体的なブロックが開示されるが、このようなブロックは例示である。
すなわち、本発明による実施の形態は、他のさまざまなブロックまたは図15Aに列挙したブロックを変形したものを実行することにもよく適している。
分かりやすくするために、図14のI2Cルータ1400と共に、プロセス1500、1520、および1530を説明することにする。
しかしながら、説明する本発明の実施の形態は、他のI2Cルータ(例えば、図5のI2Cルータ570)においても実施できることが理解されるべきである。
ステップ1504において、第1の送信速度1410が、I2Cポート1420に接続された外部I2Cバス1424の第2の送信速度1426よりも高速である場合、データは、バッファ1422にバッファリングされる。
ステップ1506において、データは、第2の送信速度1426で外部I2Cバス1424にわたって送信される。
ステップ1510において、第1の送信速度1410が、第2の送信速度1426よりも高速である場合、データは、バッファ1422にキャッシュされる。
ステップ1512において、データは、第1の送信速度1410で内部バス1402にわたってバーストにより送信される。
本実施の形態では、ポート1430が、第2のI2Cポートであり、外部バス1434が、第2の外部I2Cバスである。
ステップ1524において、第1の送信速度1410が、第2の外部I2Cバスの第3の送信速度1436よりも高速である場合、第2のデータは、バッファ1432にバッファリングされる。
ステップ1526において、第2のデータは、第3の送信速度1436で第2の外部I2Cバスにわたって送信される。
本実施の形態では、ポート1430が、高速ポートであり、外部バス1434が、外部高速バスである。
ステップ1534において、第1の送信速度1410が、外部高速バスの第3の送信速度1436よりも高速である場合、第2のデータは、バッファ1432にバッファリングされる。
ステップ1536において、第2のデータは、第3の送信速度1436で外部高速バスにわたって送信される。
このI2Cルータは、複数のI2Cポートおよび1つの高速ポートに接続された高速内部バスを備えることができる。
バス接続されたそれぞれのI2Cポートおよび高速ポートは、電気的に分離され、異なる速度で動作することができる。
I2Cポートのそれぞれでデータをバッファリングすることに加えて、データをキャッシュして、高速でデータをポンピングすることにより、I2Cルータで単一の高速バスを使用して、より大きなスループットを提供することができる。
さらに、1つの高速ポートおよび複数のI2Cポートを有することにより、性能を損なうことなく、使用コストを最適化することができる。
本発明の実施の形態は、集積回路間(I2C)ルータに接続されたデバイス(例えば、フィールド交換可能ユニット)の検出、および/または、そのデバイスのリセットを提供する。
ここで図16を参照する。
図16には、本発明の一実施の形態によるI2Cルータ1605のブロック図を示す。
図16に示すように、I2Cルータ1605は、内部バス1610、複数のバスポート1615〜1630、および制御ロジック1640を備える。
内部バス1610は、複数のバスポート1615〜1630および制御ロジック1640を通信接続する。
複数のバスポート1615〜1630は、高速外部バスポート1615および複数のI2Cバスポート1620〜1630(例えば、16個のI2Cバスポートインターフェース)を備える。
一実施の形態において、この高速通信パスは、双方向パラレルバス(例えば、スピードウェイ)などを備える。
一実施態様において、この双方向パラレルバスは、8本のデータライン、2本のアドレスライン、および5本の制御ライン(例えば、読み出し、書き込み、イネーブル、割り込み、およびリセット)を備える。
内部バス1610の帯域幅は、I2Cルータ1605に接続されたデバイス間の高速通信を可能にするのに十分なものである。
制御ロジック1640は、I2Cルータ1605内で集中化されてもよいし、複数のバスポート1615〜1630のそれぞれの間で分散されてもよい。
高速外部バスは、接続された外部デバイスとI2Cルータ1605との間の通信パスを備える。
高速外部バスは、パラレルバスであってもよいし、高速I2Cバス(例えば、1.4MHz)などであってもよい。
それぞれのI2Cバスポート1620〜1630は、I2Cルータと、対応する区画された(例えば、分離された)I2Cバスとの間の通信を制御するインターフェースを備える。
I2Cバスは、それぞれ、1つまたは2つ以上の接続されたデバイスとI2Cルータ1605との間の通信パスを備える。
I2Cルータ1605は、複数のバスポート1620〜1630のいずれか1つにおいて1つまたは2つ以上のデータパケットを受信し、そのパケットを正しい宛先バスポート1615〜1630に転送する。
したがって、I2Cルータ1605は、高速外部バスに接続されたデバイスとI2Cバスのいずれか1つに接続されたデバイスとの間の通信、および/または、I2Cバスの第1のものに接続されたデバイスとI2Cバスの他のいずれかに接続された別のデバイスとの間の通信を提供する。
それぞれのI2Cバスポート1620は、存在ライン1660およびリセットライン1665をさらに備える。
一実施の形態において、存在ライン1660は、バスポート1620に入力されるアクティブローのラインであり、リセットライン1665は、バスポート1620から出力されるアクティブハイのラインである。
より具体的に言うと、存在ライン1660は、I2Cバスポート1620または制御ロジック1640によってハイレベルにバイアスされている(例えば、適切な供給電圧へ接続されたプルアップ抵抗器)。
デバイスがI2Cバスポート1620に接続され、そのデバイスが機能していると、そのデバイスは、存在ライン1660をローにする。
デバイスが、I2Cバスポート1620に接続されていないか、または、機能していない場合、存在ライン1660は、ハイレベルにバイアスされた状態を維持する。
したがって、I2Cルータ1605は、所与のI2Cバスポート1620に接続された動作可能なデバイスの存在を、対応する存在ライン1660の状態に応じて容易に判断することができる。
リセット状況が、I2Cルータによって判断されると、I2Cバスポート1620または制御ロジック1640は、所望の(例えば、あらかじめ定められた)時間の間、リセットライン1665をハイレベルにする。
I2Cバスポート1620に接続されたデバイスは、リセットライン1665のハイ状態を検知すると、リセットプロセスを実行する。
図17Aには、本発明の一実施の形態に従って、集積回路間(I2C)ルータに接続されたデバイス(例えば、フィールド交換可能ユニット)の存在を検出する方法のフロー図を示す。
図17Aに示すように、この方法は、1710において、存在ラインを第1の状態にバイアスすることを含む。
一実施態様において、存在ラインは、当該存在ラインをハイレベルに引き上げることによりバイアスされる(例えば、適切な電源装置に接続されたプルアップ抵抗器)。
一実施態様において、この機能デバイスは、存在ラインをローレベルにする。
あるいは、1720において、デバイスが存在ラインに接続されていないか、または、デバイスが機能していない場合には、存在ラインは、第1の状態を維持する。
存在ラインが、第2の状態である場合、1730において、I2Cルータは、デバイスが存在し、かつ/または、機能していると判断する。
存在ラインが、第1の状態である場合、1735において、I2Cルータは、デバイスが接続されていないか、または、デバイスが機能していないと判断する。
デバイスが存在するかしないか、および/または、機能するかどうかを判断すると、この方法は、1725に戻る。
図17Bには、本発明の一実施の形態に従って、集積回路間(I2C)ルータに接続されたデバイス(例えば、フィールド交換可能ユニット)をリセットする方法のフロー図を示す。
図17Bに示すように、この方法は、1750において、リセットラインを第1の状態にバイアスすることを含む。
一実施態様において、リセットラインは、当該リセットラインをローレベルに引き下げることによりバイアスされる(例えば、グラウンドに接続されたプルダウン抵抗器)。
一実施態様において、リセット状況は、図13および図14について上述したような報告されたエラーを含む。
リセット状況が存在する場合、一実施態様において、I2Cルータはリセットラインをハイレベルにする。
リセット状況が存在しないと判断された場合、または、リセットラインがリセット状況に応じてローレベルにされた後、この方法は、ステップ1755に戻る。
さらに、本発明の実施の形態は、デバイスの存在を検出する方法のみを実施することもできるし、リセット状況の判断時にデバイスをリセットする方法のみを実施することもできるし、デバイスの存在を検出する方法および同デバイスまたは別のデバイスをリセットする方法の双方を実施することもできる。
また、本発明の実施の形態は、I2Cバスの制御権を取得したデバイスをリセットできるという利点も有する。
デバイスのリセット時に、I2Cバスは解放される。
また、本発明の実施の形態は、応答しないデバイスを検出できるという利点も有する。
I2Cルータに接続されたデバイスを検出する機能および/またはリセットする機能により、システムのロバスト性が容易に改善される。
本発明の実施の形態は、集積回路間(I2C)ルータを容易に分析してデバッグすることを提供する。
図18を参照する。
図18には、本発明の一実施の形態によるI2Cルータ1805のブロック図を示す。
図18に示すように、I2Cルータ1805は、内部バス1810、複数のバスポート1815〜1830、制御ロジック1840、およびデバッグコネクタ1865を備える。
内部バス1810は、複数のバスポート1815〜1830および制御ロジック1840を通信接続する。
複数のバスポート1815〜1830は、高速外部バスポート1815および複数のI2Cバスポート1820〜1830(例えば、16個のI2Cバスポート)を備える。
一実施の形態において、この高速通信パスは、双方向パラレルバス(例えば、スピードウェイ)などを備える。
一実施態様において、この双方向パラレルバスは、8本のデータライン、2本のアドレスライン、5本の制御ライン(例えば、読み出し、書き込み、イネーブル、割り込み、およびリセット)、ならびに4本の汎用入出力ラインを備える。
一実施の形態において、この汎用入出力ラインは、デバッグライン1880(例えば、デバッグ(0:3))として指定される。
内部バス1810の帯域幅は、I2Cルータ1805に接続されたデバイス(例えば、フィールド交換可能ユニット)間の高速通信を可能にするのに十分なものである。
制御ロジック1840は、I2Cルータ1805内に集中化されてもよいし、複数のバスポート1815〜1830のそれぞれの間で分散されてもよい。
高速外部バス1845は、接続された外部デバイスとI2Cルータ1805との間の通信パスを備える。
高速外部バス1845は、パラレルバスであってもよいし、高速I2Cバス(例えば、1.4MHz)などであってもよい。
それぞれのI2Cバスポート1820〜1830は、I2Cルータ1805と、対応する区画された(例えば、分離された)I2Cバス1855〜1860との間の通信を制御するインターフェースを備える。
それぞれのI2Cバスポート1820〜1830は、双方向通信を提供するシリアルデータライン(SDA)1860およびシリアルクロックライン(SDL)1865を備える。
I2Cバスは、それぞれ、1つまたは2つ以上の接続されたデバイスとI2Cルータ1805との間の通信パスを備える。
I2Cルータ1805は、複数のバスポート1815〜1830のいずれか1つにおいて1つまたは2つ以上のデータパケットを受信し、そのパケットを正しい宛先バスポート1815〜1830に転送する。
したがって、I2Cルータ1805は、高速外部バス1815に接続されたデバイスとI2Cバス1820〜1830のいずれか1つに接続されたデバイスとの間の通信、および/または、I2Cバス1820〜1830の第1のものに接続されたデバイスとI2Cバス1820〜1830の他のいずれかに接続された別のデバイスとの間の通信を提供する。
また、デバッグコネクタ1865は、ロジックアナライザ1885を内部バス1810に接続することもできる。
複数の分析ライン1870〜1880は、複数のデバッグライン(例えば、デバッグ(0:3))1880、1つもしくは2つ以上の制御ロジック分析ライン1870、および/または1つもしくは2つ以上の高速外部バスポート分析ライン1875を備える。
したがって、デバッグコネクタ1865によって、I2Cルータ1805を通過してあらゆるバスポート1815〜1830に向かうトラフィックを標準的な方法でトラップして分析することが可能になる。
さらに、分析ライン1870〜1880上の信号を、ブレークポイントおよびトラップを設定するデバッグファームウェアによって生成することができる。
I2Cルータ1805は、内部バス(例えば、パラレルバス)1810およびデバッグコネクタ1865を備え、個々のバスポート1815〜1830へのトラフィックおよび/またはそれらのポートからのトラフィックの分離を容易に可能にし、そして、バイトごとのデータの便利な分析を容易に可能にする。
したがって、シリアル信号の分析に必要な複合状態の状況を生成して制御することは必要なくなる。
図19には、本発明の一実施の形態に従って、集積回路間(I2C)ルータのトラフィックを分析する方法のフロー図を示す。
図19に示すように、この方法は、1910において、1つまたは2つ以上のバスポートに接続された複数のデバッグライン上で第1の組の信号を送信することを含む。
この送信することは、信号を送信することおよび/または信号を受信することを含む。
例示の一実施態様において、1つまたは2つ以上の信号が、デバッグライン上を送信され、それによって、1つまたは2つ以上のバスポートの1つまたは2つ以上の要素の状態が設定され、かつ/または、バスポートの1つまたは2つ以上のものの1つまたは2つ以上の要素の状態が判断される。
例示の一実施態様において、1つまたは2つ以上の信号が、1つまたは2つ以上の制御ロジック分析ライン上を送信され、それによって、制御ロジックの1つまたは2つ以上の要素の状態が設定され、かつ/または、制御ロジックの1つまたは2つ以上の要素の状態が判断される。
この方法は、1920において、1つまたは2つ以上のバスポート分析ライン上で第3の組の信号を送信することをさらに含むことができる。
例示の一実施態様において、1つまたは2つ以上の信号が、1つまたは2つ以上のバスポート分析ライン上を送信され、それによって、バスポートの1つまたは2つ以上の要素の状態が設定され、かつ/または、バスポートの1つまたは2つ以上の要素の状態が判断される。
これらのバスポートには、高速バスポートおよび/または複数のI2Cバスポートを含めることができる。
さらに、この方法の要素1910〜1925の1つまたは2つ以上のものは、個別に実行することもできるし、互いを直列に組み合わせて実行することもできるし、互いを並列に組み合わせて実行することもできるし、それらの実行を任意に組み合わせて実行することもできる。
本発明の実施の形態は、ブレークポイントおよびトラップの設定を可能にするという利点を有する。
また、本発明の実施の形態は、データパケットトラフィックの宛先アドレスおよび送信元アドレスを容易に検出することを可能にするという利点も有する。
本発明の実施の形態は、I2Cルータを通じた送信データに使用するのによく適しているが、本発明は、このような使用に限定されるものではなく、I2Cデータ送信の分離および制御が望まれる他の用途にも使用することができる。
本発明を特定の実施の形態で説明してきたが、本発明は、このような実施の形態によって限定されるものと解釈されるべきではなくて、むしろ、添付した特許請求の範囲に従って解釈されるべきであることが理解されるべきである。
210,253a〜253n・・・ポート、
257a〜257n・・・コントローラ、
259a〜259n・・・電気コネクタ、
350・・・I2Cルータ、
351・・・制御ロジック、
310・・・ポート、
353a〜353n・・・I2Cポート、
375・・・高速内部バス、
540・・・高速外部バス、
510・・・高速ポート、
520,521,522・・・バッファ、
515,516,517・・・制御ロジック、
530,531,532・・・マスク、
550,560・・・入出力ポート、
1220・・・高速ポート、
1230・・・デバッグコネクタ、
1250,1270・・・I2Cポート、
1251・・・制御ロジック、
1252・・・マスク、
1253・・・エラーレジスタ、
153A,153B・・・フラグ、
1255・・・バッファ、
1257・・・システムイベントログ、
1290・・・パラレル/シリアルバスインターフェース、
1291・・・タイムアウトレジスタ、
1293・・・ステータスレジスタ、
1402・・・内部バス、
1422,1432・・・バッファ、
1420・・・I2Cポート、
1430・・・ポート、
1424・・・外部I2Cバス、
1434・・・外部バス、
1605・・・I2Cルータ、
1610・・・内部バス、
1640・・・制御ロジック、
1615・・・バスポート0(高速)、
1645・・・高速外部バス、
1620,1625,1630・・・バスポート、
1805・・・I2Cルータ、
1810・・・内部バス、
1840・・・制御ロジック、
1865・・・デバッグコネクタ、
1885・・・ロジックアナライザ、
1815・・・バスポート0(高速)、
1845・・・高速外部バス、
Claims (10)
- 送信元ポートから宛先ポートへI2Cルータを通じてデータを送信する方法(900)であって、
前記I2Cルータであって、I2C宛先ポートおよび第2のI2C送信元ポートバッファをさらに備える前記I2Cルータの第1のI2C送信元ポートバッファにデータを受信すること(901)と、
前記第1のI2C送信元ポートバッファがオーバーフローする前に、前記I2C宛先ポートを捕捉すること(902)と、
前記第2のI2C送信元ポートバッファから前記I2C宛先ポートへの送信を制限すると同時に、前記第1のI2C送信元ポートバッファから前記I2C宛先ポートへ前記データを送信すること(903)と
を含むデータを送信する方法。 - 前記I2C宛先ポートを捕捉することは、
前記第1のI2C送信元ポートバッファのすべてのデータが、前記I2C宛先ポートへ送信完了するまで、前記第2のI2C送信元ポートバッファをビジーに保持すること(816)
を含む
請求項1に記載のデータを送信する方法。 - 前記I2C宛先ポートを捕捉することは、
0からなるバイトを前記第2のI2C送信元ポートバッファに送信すること
を含む
請求項1に記載のデータを送信する方法。 - 前記第2のI2C送信元ポートバッファをビジーに保持することは、
前記第2のI2C送信元ポートバッファのSDAラインおよびSCLラインを論理的なローレベルにアサートすること
を含む
請求項2に記載のデータを送信する方法。 - 前記I2C宛先ポートを捕捉することは、
前記第2のI2C送信元ポートバッファが、前記0からなるバイトを受信して現在の通信を停止してから現在の通信を再開するまでの間に、前記I2C宛先ポートの制御権を取得すること
を含む
請求項3に記載のデータを送信する方法。 - 前記I2C宛先ポートを捕捉することは、前記第1のI2C送信元ポートバッファの前記データが、前記第1のI2C送信元ポートバッファの容量のあらかじめ設定された部分を超えた時に開始される
請求項1に記載のデータを送信する方法。 - 前記あらかじめ設定された部分は、前記第1のI2C送信元ポートバッファの容量の2分の1である
請求項6に記載のデータを送信する方法。 - I2Cルータ(570)であって、
第1のI2C送信元ポートバッファ(521)と、
前記第1のI2C送信元ポートバッファ(521)に接続されたI2C宛先ポート(560)と、
前記I2C宛先ポート(560)に接続された第2のI2C送信元ポートバッファと
を備え、
該I2Cルータ(570)は、前記第1のI2C送信元ポートバッファ(521)にデータを受信すると、前記第2のI2C送信元ポートバッファから前記I2C宛先ポート(560)への送信を制限し、前記第1のI2C送信元ポートバッファ(521)がオーバーフローする前に前記I2C宛先ポート(560)を捕捉し、前記第1のI2C送信元ポートバッファ(521)から前記I2C宛先ポート(560)へ前記データを送信する
I2Cルータ。 - 前記I2Cルータ(570)は、前記第1のI2C送信元ポートバッファ(521)のすべてのデータが、前記I2C宛先ポート(560)へ送信完了するまで、前記第2のI2C送信元ポートバッファをビジーに保持することにより、前記I2C宛先ポート(560)を捕捉する
請求項8に記載のI2Cルータ。 - 前記I2Cルータ(570)は、0からなるバイトを前記第2のI2C送信元ポートバッファに送信することにより、前記I2C宛先ポート(560)を捕捉する
請求項8に記載のI2Cルータ。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/461,156 US20040255070A1 (en) | 2003-06-12 | 2003-06-12 | Inter-integrated circuit router for supporting independent transmission rates |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005004748A JP2005004748A (ja) | 2005-01-06 |
JP3920280B2 true JP3920280B2 (ja) | 2007-05-30 |
Family
ID=32713624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004165338A Expired - Fee Related JP3920280B2 (ja) | 2003-06-12 | 2004-06-03 | I2cルータを通じたデータ送信方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20040255070A1 (ja) |
JP (1) | JP3920280B2 (ja) |
GB (1) | GB2404045B (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7685320B1 (en) * | 2003-04-11 | 2010-03-23 | Zilker Labs, Inc. | Autonomous sequencing and fault spreading |
US7793005B1 (en) * | 2003-04-11 | 2010-09-07 | Zilker Labs, Inc. | Power management system using a multi-master multi-slave bus and multi-function point-of-load regulators |
US7653757B1 (en) * | 2004-08-06 | 2010-01-26 | Zilker Labs, Inc. | Method for using a multi-master multi-slave bus for power management |
US7506179B2 (en) * | 2003-04-11 | 2009-03-17 | Zilker Labs, Inc. | Method and apparatus for improved DC power delivery management and configuration |
JP2006244416A (ja) * | 2005-03-07 | 2006-09-14 | Fujitsu Ltd | マスターノード及びスレーブノードを有する電子装置システム |
US8515342B2 (en) * | 2005-10-12 | 2013-08-20 | The Directv Group, Inc. | Dynamic current sharing in KA/KU LNB design |
US7987310B2 (en) * | 2006-01-11 | 2011-07-26 | International Business Machines Corporation | Self-configuring bus for connecting electronic devices |
US20090119440A1 (en) * | 2007-11-02 | 2009-05-07 | International Business Machines Corporation | Self-configuring bus for connecting electronic devices |
US8120203B2 (en) * | 2008-07-18 | 2012-02-21 | Intersil Americas Inc. | Intelligent management of current sharing group |
US8237423B2 (en) | 2008-07-18 | 2012-08-07 | Intersil Americas Inc. | Active droop current sharing |
US8120205B2 (en) * | 2008-07-18 | 2012-02-21 | Zilker Labs, Inc. | Adding and dropping phases in current sharing |
US8239597B2 (en) * | 2008-07-18 | 2012-08-07 | Intersil Americas Inc. | Device-to-device communication bus for distributed power management |
CN101763331B (zh) * | 2010-01-18 | 2014-04-09 | 中兴通讯股份有限公司 | 一种实现i2c总线控制的系统及方法 |
CN102339263B (zh) * | 2010-07-26 | 2014-06-11 | 杭州华三通信技术有限公司 | 总线传输装置和方法 |
WO2012167566A1 (zh) * | 2011-11-18 | 2012-12-13 | 华为技术有限公司 | 路由交换装置、网络交换系统和路由交换方法 |
CN105095139A (zh) * | 2014-05-08 | 2015-11-25 | 中兴通讯股份有限公司 | 集成电路总线系统及其数据操作和传输方法 |
US20160335213A1 (en) * | 2015-05-13 | 2016-11-17 | Hong Fu Jin Precision Industry (Shenzhen) Co., Ltd. | Motherboard with multiple interfaces |
JP2022082839A (ja) * | 2020-11-24 | 2022-06-03 | エイブリック株式会社 | バス調停回路及びそれを備えたデータ転送システム |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4860193A (en) * | 1986-05-22 | 1989-08-22 | International Business Machines Corporation | System for efficiently transferring data between a high speed channel and a low speed I/O device |
US5455913A (en) * | 1990-05-14 | 1995-10-03 | At&T Global Information Solutions Company | System and method for transferring data between independent busses |
US5640599A (en) * | 1991-12-30 | 1997-06-17 | Apple Computer, Inc. | Interconnect system initiating data transfer over launch bus at source's clock speed and transfering data over data path at receiver's clock speed |
GB9405855D0 (en) * | 1994-03-24 | 1994-05-11 | Int Computers Ltd | Computer system |
US5546385A (en) * | 1995-01-19 | 1996-08-13 | Intel Corporation | Flexible switching hub for a communication network |
US6098110A (en) * | 1996-12-30 | 2000-08-01 | Compaq Computer Corporation | Network switch with a multiple bus structure and a bridge interface for transferring network data between different buses |
TW362178B (en) * | 1997-01-30 | 1999-06-21 | Nxp Bv | Electronic apparatus |
US5892933A (en) * | 1997-03-31 | 1999-04-06 | Compaq Computer Corp. | Digital bus |
KR100224965B1 (ko) * | 1997-07-10 | 1999-10-15 | 윤종용 | 다층 구조의 아이2씨 버스를 이용한 진단/제어 시스템 |
US6047339A (en) * | 1997-10-27 | 2000-04-04 | Emulex Corporation | Buffering data that flows between buses operating at different frequencies |
US6363076B1 (en) * | 1998-01-27 | 2002-03-26 | International Business Machines Corporation | Phantom buffer for interfacing between buses of differing speeds |
US6622188B1 (en) * | 1998-09-30 | 2003-09-16 | International Business Machines Corporation | 12C bus expansion apparatus and method therefor |
US6145036A (en) * | 1998-09-30 | 2000-11-07 | International Business Machines Corp. | Polling of failed devices on an I2 C bus |
US6324612B1 (en) * | 1998-12-10 | 2001-11-27 | International Business Machines Corporation | Associating buffers in a bus bridge with corresponding peripheral devices to facilitate transaction merging |
US6339806B1 (en) * | 1999-03-23 | 2002-01-15 | International Business Machines Corporation | Primary bus to secondary bus multiplexing for I2C and other serial buses |
US6353867B1 (en) * | 2000-01-14 | 2002-03-05 | Insilicon Corporation | Virtual component on-chip interface |
US6769046B2 (en) * | 2000-02-14 | 2004-07-27 | Palmchip Corporation | System-resource router |
US6636924B1 (en) * | 2000-08-17 | 2003-10-21 | Koninklijke Philips Electronics N.V. | Multiple port I2C hub |
US6874052B1 (en) * | 2000-09-29 | 2005-03-29 | Lucent Technologies Inc. | Expansion bridge apparatus and method for an I2C bus |
US7032051B2 (en) * | 2000-12-11 | 2006-04-18 | Linear Technology Corp. | Methods and circuitry for interconnecting data and clock busses of live backplane circuitry and input/output card circuitry, and methods and circuitry for isolating capacitanes of a live backplane from the capacitanes of at least one input/output card |
US7092041B2 (en) * | 2000-12-20 | 2006-08-15 | Thomson Licensing | I2C bus control for isolating selected IC's for fast I2C bus communication |
US6934785B2 (en) * | 2000-12-22 | 2005-08-23 | Micron Technology, Inc. | High speed interface with looped bus |
US6725320B1 (en) * | 2001-02-08 | 2004-04-20 | International Business Machines Corporation | I2C bus switching devices interspersed between I2C devices |
US7149838B2 (en) * | 2001-05-29 | 2006-12-12 | Sun Microsystems, Inc. | Method and apparatus for configuring multiple segment wired-AND bus systems |
US6842806B2 (en) * | 2001-05-29 | 2005-01-11 | Sun Microsystems, Inc. | Method and apparatus for interconnecting wired-AND buses |
US20040225814A1 (en) * | 2001-05-29 | 2004-11-11 | Ervin Joseph J. | Method and apparatus for constructing wired-AND bus systems |
US7039750B1 (en) * | 2001-07-24 | 2006-05-02 | Plx Technology, Inc. | On-chip switch fabric |
US20030065869A1 (en) * | 2001-10-01 | 2003-04-03 | Francois Balay | PCI/LVDS half bridge |
US6543034B1 (en) * | 2001-11-30 | 2003-04-01 | Koninklijke Philips Electronics N.V. | Multi-environment testing with a responder |
US6857040B2 (en) * | 2001-12-05 | 2005-02-15 | Hewlett-Packard Development Company, L.P. | Bi-directional bus bridge in which multiple devices can assert bus concurrently |
US6816939B2 (en) * | 2002-05-09 | 2004-11-09 | International Business Machines Corporation | Apparatus for supporting I2C bus masters on a secondary side of an I2C multiplexor |
US20030221030A1 (en) * | 2002-05-24 | 2003-11-27 | Timothy A. Pontius | Access control bus system |
US7743257B2 (en) * | 2002-06-27 | 2010-06-22 | Nxp B.V. | Security processor with bus configuration |
US7085863B2 (en) * | 2003-10-30 | 2006-08-01 | International Business Machines Corporation | I2C device including bus switches and programmable address |
-
2003
- 2003-06-12 US US10/461,156 patent/US20040255070A1/en not_active Abandoned
-
2004
- 2004-06-03 JP JP2004165338A patent/JP3920280B2/ja not_active Expired - Fee Related
- 2004-06-08 GB GB0412764A patent/GB2404045B/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB2404045A (en) | 2005-01-19 |
US20040255070A1 (en) | 2004-12-16 |
GB0412764D0 (en) | 2004-07-07 |
JP2005004748A (ja) | 2005-01-06 |
GB2404045B (en) | 2006-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4077812B2 (ja) | 個別の送信速度をサポートする集積回路間ルータ | |
US7010639B2 (en) | Inter integrated circuit bus router for preventing communication to an unauthorized port | |
US7082488B2 (en) | System and method for presence detect and reset of a device coupled to an inter-integrated circuit router | |
US7630304B2 (en) | Method of overflow recovery of I2C packets on an I2C router | |
JP3920280B2 (ja) | I2cルータを通じたデータ送信方法 | |
JP4294544B2 (ja) | セキュリティを向上させる集積回路間バスルータ | |
US11048797B2 (en) | Securing vehicle bus by corrupting suspected messages transmitted thereto | |
US8127015B2 (en) | Alerting system, architecture and circuitry | |
US7543191B2 (en) | Method and apparatus for isolating bus failure | |
US11677779B2 (en) | Security module for a can node | |
US10922264B1 (en) | CAN transceiver | |
JP2005006306A (ja) | 集積回路間ルータエラー管理システムおよび方法 | |
CN101625656B (zh) | 一种处理pci系统异常的方法及装置 | |
US20140298076A1 (en) | Processing apparatus, recording medium storing processing program, and processing method | |
JP2005004750A (ja) | 集積回路間ルータ分析システムおよび方法 | |
JPH10307776A (ja) | コンピュータウイルス受信監視装置及びそのシステム | |
CN114301644A (zh) | 网络异常检测系统及方法 | |
CN115065572A (zh) | 一种面向车载电子系统的can fd控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061227 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070117 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070214 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100223 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110223 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120223 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130223 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140223 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |