(57)【要約】【解決手段】CANコントローラに関係付けられているメモリを割り付けるための方法は、識別子(ID)とデータとを備えたデータフレームを受信する段階と、データフレームを待ち行列に入れるためにメモリ内のメッセージバッファ(MB)を動的に割り付ける段階と、MBを指し示すポインタであって、メモリの中の静的な場所を介してアクセスされるポインタを生成する段階と、を含んでいる。CANコントローラ用の対応するホストインターフェースは、IC回路構成に実装されており、ホストCPU及びCANバスインターフェースに連結されるように構成されており、動的メモリ割り付けのためのメモリ割り付けユニットと、メモリ割り付けユニット及びメモリに連結されているメモリアクセスコントローラとを含んでおり、メモリアクセスコントローラは、メモリへのアクセスを制御して、CANバスによる多数のデータフレームの送信と受信を円滑にするように構成されている。【選択図】図２
2010515370.tif 000002
【特許請求の範囲】
【請求項１】
ＣＡＮ（コントローラエリアネットワーク）コントローラと関係付けられているメモリを割り付けるための方法において、
識別子（ＩＤ）とデータを備えたデータフレームを受信する段階と、
前記データフレームを待ち行列に加えるために前記メモリ内のメッセージバッファ（ＭＢ）を動的に割り付ける段階と、
前記ＭＢを指し示すポインタであって、前記メモリの中の静的な場所を介してアクセスされるポインタを生成する段階と、から成る方法。
【請求項２】
前記ポインタを生成する段階は、前記ポインタを前記メモリの中の前記静的な場所に置く段階を含んでいる、請求項１に記載のメモリを割り付けるための方法。
【請求項３】
前記ポインタを生成する段階は、前記ポインタを、先のデータフレームを待ち行列に入れるために割り付けられた先のＭＢの中に置く段階を更に含んでおり、前記先のＭＢを指す前記先のポインタは、前記メモリの前記静的な場所の中に置かれる、請求項１に記載のメモリを割り付けるための方法。
【請求項４】
前記データが前記ＭＢから引き出されたら、前記ＭＢの割り付けを取り消し、前記ポインタを削除して、それにより、前記ＭＢに関係付けられている前記メモリを再利用できるようにする段階を更に含んでいる、請求項１に記載のメモリを割り付けるための方法。
【請求項５】
前記データフレームを受信する段階は、時間経過に伴って複数のデータフレームを受信する段階を更に含んでおり、
前記メッセージバッファ（ＭＢ）を動的に割り付ける段階は、対応する複数のメッセージバッファ（ＭＢ）を動的に割り付ける段階を更に含んでおり、
前記ＭＢを指し示すポインタを生成する段階は、対応する複数のポインタを生成する段階を更に含んでおり、第１データフレームの第１ポインタは、第２データフレームの第２ＭＢ内に含まれるので、前記複数のポインタは、前記複数のデータフレームに対応している前記ＭＢの連結リストになる、請求項１に記載のメモリを割り付けるための方法。
【請求項６】
前記ポインタを生成する段階は、前記ポインタを、前記メモリの中の前記静的な場所に位置付ける段階を更に含んでおり、前記ポインタは、最初に割り付けられたＭＢを指し示している、請求項５に記載のメモリを割り付けるための方法。
【請求項７】
前記ポインタを生成する段階は、前記ポインタを、前記メモリの中の前記静的な場所に位置付ける段階を更に含んでおり、前記ポインタは、最も新しく割り付けられたＭＢを指し示している、請求項５に記載のメモリを割り付けるための方法。
【請求項８】
フィルタリング判定基準に従って前記データフレームをフィルタに掛ける段階を更に含んでおり、前記ＭＢを動的に割り付ける段階と前記ポインタを生成する段階は、前記データフレームが前記フィルタリング判定基準を満たしていることに応答するようになっている、請求項１に記載のメモリを割り付けるための方法。
【請求項９】
前記データフレームをフィルタに掛ける段階は、複数のデータフレームを、第１フィルタリング判定基準に従い、及び第２フィルタリング判定基準に従い、フィルタに掛ける段階を更に含んでおり、前記複数のデータブレームの内で前記第１フィルタリング判定基準を満たしている第１の部分から、ＭＢの第１連結リストが形成され、前記複数のデータフレームの内で前記第２フィルタリング判定基準を満たしている第２の部分から、ＭＢの第２連結リストが形成される、請求項８に記載のメモリを割り付けるための方法。
【請求項１０】
前記フィルタリング判定基準に従って前記データフレームをフィルタに掛ける段階は、前記識別子（ＩＤ）、前記データ、及びＣＡＮチャネル、の内の少なくとも１つに従って前記データフレームをフィルタに掛ける段階を更に含んでいる、請求項８に記載のメモリを割り付けるための方法。
【請求項１１】
ＣＡＮ（コントローラエリアネットワーク）コントローラにおいて、
集積回路として実装されていて、
メモリ内のメッセージバッファ（ＭＢ）であって、識別子（ＩＤ）とデータとを備えたデータフレームを受け取ると直ちに待ち行列に入れるためのメッセージバッファ（ＭＢ）を割り付けるように、及び
前記ＭＢを指し示すポインタであって、前記メモリの中の静的な場所を介してアクセスされるポインタを提供するように、構成されている、メモリ割り付けユニットと、
前記メモリ割り付けユニットと前記メモリに連結されており、前記メモリへのアクセスを制御して、ＣＡＮバスによる多数のデータフレームの送信及び受信を円滑にするように構成されているメモリアクセスコントローラと、を備えているＣＡＮコントローラ。
【請求項１２】
識別子（ＩＤ）とデータを備えた前記データフレームを受信し、前記メモリ割り付けユニットに、前記ＭＢを動的に割り付けさせ、前記メモリの中の前記静的な場所を割り当てさせるための受信エンジンを更に備えている、請求項１１に記載のＣＡＮコントローラ。
【請求項１３】
前記ＣＡＮバスに連結されており、フィルタリング判定基準に従って前記データフレームをフィルタに掛けるように構成されている、メッセージフィルタリングユニットを更に備えており、前記静的な場所を割り当て、前記ＭＢを動的に割り付ける段階は、前記データフレームが前記フィルタリング判定基準を満たしていることに応答するようになっている、請求項１２に記載のＣＡＮコントローラ。
【請求項１４】
前記受信エンジンは、複数のデータフレームを受信し、前記メモリ割り付けユニットは、対応する複数のＭＢを動的に割り付けて、前記ポインタがメモリの中の前記静的な場所に置かれ、次のポインタが前記ＭＢに置かれて、次に割りつけられるＭＢが指し示されるようにするので、前記複数のデータフレームの受信された順序によるＭＢの連結リストが構築される、請求項１２に記載のＣＡＮコントローラ。
【請求項１５】
メッセージフィルタリングユニットは、前記ＣＡＮバスに連結されており、前記複数のデータフレームを、第１フィルタリング判定基準に従い、及び第２フィルタリング判定基準に従い、フィルタに掛けるように構成されており、前記複数のデータブレームの内で前記第１フィルタリング判定基準を満たしている第１の部分からＭＢの第１連結リストが形成され、前記複数のデータフレームの内で前記第２フィルタリング判定基準を満たしている第２の部分から、ＭＢの第２連結リストが形成される、請求項１４に記載のＣＡＮコントローラ。
【請求項１６】
前記ホストに連結されると共に、前記メモリアクセスコントローラ及びメモリ割り付けユニットに連結されるように構成されており、共同で、前記ホストにポインタを介したＭＢへの読み出しアクセスを提供するように構成されている、ＣＰＵインターフェースを更に備えており、前記ＭＢはホストに読み出された後、前記メモリ割り付けによって割り付けを取り消されるので、前記ＭＢに関係付けられている前記メモリを再利用することができるようになる、請求項１２に記載のＣＡＮコントローラ。
【請求項１７】
前記ホストには、ポーリング作動モード時に、前記ＭＢへのアクセスが提供される、請求項１６に記載のＣＡＮコントローラ。
【請求項１８】
前記ＣＰＵインターフェースは、前記ホストへの割り込みを提供し、前記ホストには、割り込み起動作動モード時に、前記ＭＢへのアクセスが提供される、請求項１６に記載のＣＡＮコントローラ。
【請求項１９】
コントローラエリアネットワーク（ＣＡＮ）コントローラ用のホストインターフェースであって、集積回路（ＩＣ）に実装され、ホストに、及びＣＡＮバスインターフェースに、連結されるように構成されている、ホストインターフェースにおいて、
データフレームをメッセージバッファ（ＭＢ）の１つ又は複数の連結リストの中で待ち行列に入れるために、ＭＢを動的に割り付けるためのメモリ割り付けユニットであって、ＭＢの各連結リスト毎に、第１ＭＢに対する第１ポインタは所定のメモリ場所に記憶され、第２ＭＢに対する第２ポインタは前記第１ＭＢに記憶され、後続のＭＢに対する後続のポインタは、それぞれに、直前のＭＢに記憶される、メモリ割り付けユニットと、
データフレームを前記ＣＡＮバスから受信し、受信されたデータフレームを、受信型式のＭＢの前記１つ又は複数の連結リストに記憶するために、前記ＣＡＮバスインターフェースに連結されている受信エンジン２１９と、
送信型式のＭＢの前記１つ又は複数の連結リストに記憶されている送信データフレームを送信するために、前記ＣＡＮバスインターフェースに連結されている送信エンジンと、
前記受信エンジン、前記送信エンジン、及び前記ホストによる、前記ＭＢの１つ又は複数の連結リストへのアクセスを制御するためのメモリアクセスコントローラと、を備えているホストインターフェース。
【請求項２０】
受信されたデータフレームを、フィルタリング判定基準に従ってフィルタに掛けるための、前記ＣＡＮバスインターフェースに連結されているメッセージフィルタユニットを更に備えており、第１フィルタリング判定基準を満たしている前記受信されたデータフレームは、ＭＢの第１連結リストに記憶され、第２フィルタリング判定基準を満たしている前記受信されたデータフレームは、ＭＢの第２連結リストに記憶される、請求項１９に記載のホストインターフェース。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概括的にはメモリ割り付けに、より具体的には、ＣＡＮ（コントローラエリアネットワーク）プロトコルベースの装置と関係付けられているメモリリソースの動的割り付けのための方法及び装置に関する。
【背景技術】
【０００２】
コントローラエリアネットワークプロトコルは、一般に知られており、元々は、１９８０年代に、自動車環境の中でコントロールユニットを接続するために開発された。現在、ＣＡＮは、多くの用途、特に電気的干渉が存在する用途、に使用されている。一般に、ＣＡＮモジュール又はコントローラは、マイクロコントローラと共に配備され、例えば、マイクロコントローラが含まれているか又は内蔵されており、その様なマイクロコントローラの取り合わせの中で相互の交信を円滑にするために、ＣＡＮバス（ＣＡＮプロトコルを使用しているバス）が使用されている。
【０００３】
ＣＡＮモジュールは、普通は、プロトコルの仕様を実装し、ＣＡＮバスと直接インターフェースしているＣＡＮエンジンを含んでいる。更に、ホスト、例えばマイクロコントローラ、とのインターフェースを支持し、マイクロコントローラとＣＡＮエンジンの間で転送される情報又はデータをバッファする、ホストインターフェースが含まれている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
現在のデータバッファリングの方式は、一般に、メールボックス又はＦＩＦＯ（先入れ先出し）の何れかのモデル又は方式を利用している。メールボックスモデルでは、メモリのブロックが、データを記憶するために割り付けられ、データは、データと関係付けられているＩＤ（識別子）に従って記憶され、デスティネーション側は、データを任意の順序で使用し又は呼び出すことができる。ＦＩＦＯモデルでは、データは、到着した順序に従って、記憶されるか、又は待ち行列に入れられて、その後（指示に応じて）マイクロコントローラ又はＣＡＮエンジンに配信されるか又は読み出される。両方の仕組みを使用できるＣＡＮモジュールもあるが、メモリは両方式の一方の専用になっていて、他方には利用できないため、メモリ割り付けの面では効率が悪い。
【０００５】
これらの方式はそれぞれに問題を抱えている。例えば、ＦＩＦＯ方式を使った場合、優先順位を割り当て及び管理すること、即ち、優先順位の高いデータを優先順位の低いデータに先んじて送ること、は難しい。メールボックスモデルは、何れの特定の順序でのデータ移動も支持しておらず、データ損失を被り易く、即ち、所与のメールボックス割り付けでは、先のデータが読み出される前に、後のデータが先のデータに上書きされてしまうことがある。
【課題を解決するための手段】
【０００６】
概括的には、本開示は、コントローラエリアネットワーク（ＣＡＮ）コントローラに、より具体的には、ＣＡＮコントローラと関係付けられているメモリの動的メモリ割り付けのための技法及び装置に関係がある。より具体的には、必要な時に必要な間だけメモリを効率的且つ動的に割り付けるように配置構成された方法及び装置、例えば、集積回路又は他のハードウェア及びその中の工程、に具現化された様々な発明概念及び原理が論じられ、開示されている。
【０００７】
特定の関心事を具現化する形態は様々に異なるが、各実施形態は、ハードウェア、例えば、状態機械、において具現化されたＣＡＮコントローラを含んでおり、メールボックス式又はＦＩＦＯ式の何れでも、その様なメモリを上記方式の何れの特定の方式にも演繹的に割り付けること無く、要求に応じて動的メモリ割り付けが提供されるようにしている。ＣＡＮコントローラを採用しているシステム、機器、及び装置、例えば、ホストコントローラ同士の交信のためにＣＡＮバスを使用しているものでは、下に説明する装置と方法は、メモリを効率的に使用するために、ここに教示されている発明概念と原理に従って実際に使用することを条件として、利用することができる。
【０００８】
本開示は、出願時点で、本発明による様々な実施形態を作成し及び使用する最良の形態を、実現可能な様式で、更に詳しく説明するために提示されている。本開示は、更に、本発明を何ら限定するものではなく、本発明の原理及び利点の理解及び評価を深めるために提供されている。本発明は、特許請求の範囲、即ち、本出願の係属中に行われるあらゆる補正及び発行時におけるそれらの等価物を含めた特許請求の範囲によってのみ定義される。
【０００９】
また、第１及び第２、上と下、及び類似用語の様な、関係を示す用語が使用されている場合、それらは、或るエンティティ又は行為を別のエンティティ又は行為と区別するためにのみ使用されているのであって、必ずしも、その様なエンティティ又は行為の間に何らかの実際のその様な関係又は順序を要求するものでも示唆するものでもないことを理解頂きたい。
【００１０】
本発明の機能性の多く、及び発明原理の多くは、集積回路（ＩＣ）と共に又は集積回路の中に実装されるのが最良であり、その様なＩＣとして考えられるものには、特定用途向けＩＣ、内蔵されたソフトウェア又はファームウェアによる統合処理制御型ＩＣ、又は１つ又は複数の状態機械を実装したＩＣが含まれる。当業者であれば、例えば、利用可能な時間、現在の技術、及び経済的考慮、が動機となって多大な努力と多くの設計選定を要するかもしれないが、ここに開示されている概念と原理に導かれれば、その様なソフトウェア命令とプログラム、及びＩＣを、実験を最小限に抑えて、容易に生成できるようになるものと予想される。従って、本発明による原理と概念を簡潔に示し且つそれらが曖昧になる危険を最小限にするという利益のために、その様なソフトウェア及びＩＣを更に論じることがあれば、その様な論議は、様々な実施形態の原理及び概念に関する必須要素に限定されるものとする。
【図面の簡単な説明】
【００１１】
【図１】１つ又は複数の実施形態によるコントローラエリアネットワーク（ＣＡＮ）コントローラの、簡略化された代表的な形態による高レベル線図を示している。
【図２】１つ又は複数の実施形態による、図１のＣＡＮコントローラ内で使用するのに適したホストインターフェースの、代表的な形態による線図を示している。
【図３】１つ又は複数の実施形態によるメモリの動的割り付けの１つの態様を示している代表的な線図である。
【図４】１つ又は複数の実施形態による、図２のホストインターフェースのバファリング態様を説明している代表的な高レベルフローチャートを示している。
【図５】１つ又は複数の実施形態による、ＣＡＮバスからＣＡＮメッセージを受信する場合のホストインターフェースの作動を説明しているフローチャートを示している。
【図６】１つ又は複数の実施形態による、ＣＡＮメッセージを読み出す時のホストインターフェースの作動を、ホスト側から見て説明しているフローチャートを示している。
【図７】１つ又は複数の実施形態による、ＣＡＮバスで送信中のホストインターフェースの作動を説明しているフローチャートを示している。
【図８】１つ又は複数の実施形態による、ＣＡＮバスで送信されるＣＡＮメッセージを転送中のホストインターフェースの作動を、ホスト側から見て説明しているフローチャートを示している。
【発明を実施するための形態】
【００１２】
添付図面では、別々の図を通して同じ参照番号は同一であるか機能的に同様の要素を指しており、それらの図面は、下の詳細な説明と共に、明細書に組み込まれて明細書の一部を形成し、本発明による様々な実施形態を更に例示し、本発明による様々な原理及び利点を全て説明するのに供されている。
【００１３】
図１を参照しながら、１つ又は複数の実施形態によるコントローラエリアネットワーク（ＣＡＮ）コントローラの簡略化された代表的な高レベル線図を、簡単に論じ説明してゆく。図１では、ＣＡＮコントローラは、既知のＣＡＮ２．０Ｂプロトコル仕様を支持するように配置構成されており、ホストマイクロコントローラ又はホストＣＰＵインターフェース１０３を手助けるホストインターフェース１０１を含んでおり、このインターフェースは、ホストが、メッセージを読み取り、メッセージをＣＡＮバスとやり取りできるようにするものである。ホストインターフェースは、更に、ダイレクトメモリアクセス（ＤＭＡ）インターフェース１０５を支持しており、様々な周辺ホスト又はコントローラは、ホストインターフェース１０１を介してメモリに直接的な読み出し書き込みアクセスを行うようになっている。ホストインターフェース１０１は、システムクロック１０７から刻時される。ホストインターフェースは、メモリ１０９、例えば、ローカルランダムアクセスメモリ（ＲＡＭ）の一部、へのアクセスを制御し、やり易くするものであり、同ＲＡＭの他の部分は、他のホスト装置によって他の目的に使用されることになる。ＣＡＮコントローラは、ホストインターフェース１０１を、システムクロック１０７から作動させるか又は刻時できるようにし、なお且つ、別の非同期クロック１１５から刻時されるＣＡＮエンジン１１３とインターフェースできるようにする、クロックインターフェース１１１を含んでいてもよい。ＣＡＮエンジン１１３は、ＣＡＮコントローラに付属しており、それぞれが異なる通信速度で作動し、どれもが既知のＣＡＮ２．０Ｂプロトコル仕様に準拠している、チャネル１１７又はＣＡＮバスを、最大４チャネルまで支持することができる。
【００１４】
図２を参照しながら、１つ又は複数の実施形態による、図１のＣＡＮコントローラの中で使用するのに適したホストインターフェース２０１の代表的でより詳細な線図を、簡単に論じ、説明してゆく。図２は、ホスト又はホストＣＰＵ２０３、メモリ２０５又はＲＡＭと、そして更にＣＡＮエンジン２０７とも、連結され又はインターフェースしているホストインターフェース２０１を示しており、ＣＡＮエンジンは、ＣＡＮバス２０９（バスは１つしか図示していない）とインターフェースしている。一般に、ホスト２０３、例えば、通信はＣＡＮバスを介することが必要条件となっているマイクロコントローラ又は他の装置は、メッセージ又はデータフレームをＣＡＮバスで送り、又はメッセージ又はデータフレームをＣＡＮバスから受け取り、こうして、ＣＡＮバスを介して他のその様な装置とデータをやり取りすることができる。より具体的には、ホスト２０３がデータを送りたい時、データは、ＣＡＮエンジン２０７及びＣＡＮバス２０９を介する送信が可能になるまで、メッセージ又はデータフレームとしてＲＡＭ２０５の中の待ち行列に入れられる。同様に、メッセージ又はデータフレームがＣＡＮバスからＣＡＮエンジンに受信された時、これらのメッセージ又はデータフレームは、ＲＡＭの中の待ち行列に入れられる。データの送出／送信及びデータの受信／読取は、基本的に同時に着手され、また、複数の装置（１つ又は複数のＣＡＮチャネル、ホストなど）は多少の差はあっても同時にＲＡＭにアクセスすることが必要であると理解して頂きたい。結果的に起こる競合の問題又は同問題に起因して起こる可能性のある問題を排除するため、動的メモリ割り付けを含めた、データフレームの行列待ちに関係する工程（ＲＡＭアクセス、読み出し、書き込みなど）は、ホストインターフェース２０１によって取り扱われ又は円滑化される。
【００１５】
ホストインターフェース２０１は、ホスト２０３（ＤＭＡ機能を備えた他の装置を含む）に連結されているＣＰＵインターフェース２１１を含んでいる。ＣＰＵインターフェース２１１は、このインターフェースに関する全ての物理的及び論理的必要条件を取り扱っており、１つ又は複数のデータバス、並びに、論理通信リンク、例えば、割り込み回線など、を含んでいる。ＣＰＵインターフェースは、メモリ割り付けユニット２１３、並びにメモリアクセスコントローラ２１５に連結されている。メモリ割り付けユニットとメモリアクセスコントローラは、共同で、動的に割り付けるか又は動的割り付けを円滑化すると共に、ホスト２０３とＣＡＮエンジン２０７によるメモリ２０５へのアクセスを制御する。ホストが、ＣＡＮバスの１つを介して送信される１つ又は複数のメッセージ又はデータフレームを持った時、メモリ割り付けユニットは、メッセージを待ち行列に入れるためにメモリを割り付けるか又は割り付けを円滑化し、メモリアクセスコントローラは、ホストがメッセージをメモリへ書き込むことができるように、メモリへのアクセスを制御するが、これについては下で更に詳しく論じることにする。
【００１６】
追加的及び随意的に、ホストインターフェース２０１には、１つ又は複数のメッセージフィルタユニット２１７が含まれており、それらは、ＣＡＮエンジン２０７に連結されており、メッセージ又はデータフレームがＣＡＮバスの１つから受信されると、それらをフィルタに掛ける働きをする。フィルタリング処理とは、着信メッセージを各種判定基準、例えば、メッセージ識別子（ＩＤ）の特性、タイムスタンプ、内容の特性、ＣＡＮチャネルＩＤなど、に照らして考査することを意味する。メッセージが、所定のフィルタ判定基準のセットと一致していると、フィルタリングユニットが判定すると、割り込みがＣＰＵインターフェース２１１を介してホストに送られる。メッセージフィルタユニット２１７は、受信エンジン２１９に連結されており、同エンジンは、メッセージの受信と、それらメッセージをメモリ２０５の中に記憶することと行列待ちに入れること、を支持している。記憶すること又は行列待ちに入れることは、受信エンジン２１９からメモリ割り付けユニット２１３及びメモリアクセスコントローラ２１５への通信リンクを介して支持される。メッセージが受信されようとしている時、受信エンジン２１９は、メモリ割り付けユニット２１３によるメモリの割り付けを要求し、次いで、メッセージを、メモリアクセスコントローラ２１５からメモリへ書き込むためのアクセスを取得するが、これについては下で更に詳しく論じることにする。更に、ＣＡＮバスを介したメッセージ又はデータフレームの送信を円滑にする働きをする機能が含まれている。これらの機能の１つが、メモリアクセスコントローラ２１５と送信エンジン２２３の間に連結されている送信検索ユニット２２１である。送信検索ユニット２２１は、送信する順序を優先せねばならないメッセージ又はデータフレームＩＤの特性を探して、メモリ２０５内に記憶されているメッセージを検索する。１つ又は複数の実施形態では、データフレーム又はメッセージＩＤは、最小ＩＤを探して検索され、その様なＩＤを持つメッセージは、関連したバスで次に利用できる送信スロットに置かれるように優先順位が付けられる。送信エンジン２２３は、検索ユニット２２１とメモリアクセスコントローラ２１５に連結されており、メッセージ又はデータフレームの内容（検索エンジンにより識別されたメッセージ）を読み取り、これらの内容をＣＡＮエンジンに転送する機能を果たしている。
【００１７】
メモリ２０５、例えば、ローカルＲＡＭの一部分又は同様のメモリは、異なる目的に用いられる各種部分又はセグメントを含んでいる。例えば、メモリの一部分は、設定レジスタ２２５に充てられている。ＣＡＮコントローラが設定又は初期化モードにある間は、幾つかの設定レジスタ又はその部分がホスト２０３にロードされ、ＣＡＮエンジンなどを含めたＣＡＮコントローラの様々な作動特性をセットするのに用いられる。幾つかの実施形態の設定レジスタは、ＣＡＮコントローラの作動モード、即ち、受信及び送信が発生したら割り込みを生成するか否か、並びに他の作動特性、例えば、ＣＡＮエンジンのクロックソース、送信の順序、メモリのオーバーフローやメモリ容量の低下などの場合の割り込み又はフラグ、又はメモリ容量低下の閾値など、を制御するデータを保有しているグローバル設定レジスタを含むことができる。更に、ＣＡＮチャネル毎に、プロトコル設定、自由継続タイマー、エラー計数、及びエラー及び状況レジスタ、を含むことができる。これらのレジスタは、各チャネル毎に、プロトコル作動変数を定め、タイムスタンプ用のタイマーを提供し、送信及び受信のエラーを計数し、これらエラーが発生した場合には、エラーの様々な種類を追跡管理し、作動便法をセットする。
【００１８】
様々な実施形態の他のレジスタとしては、受信及び送信工程の間の様々なメモリ場所及びバッファへの割り込み起動型アクセスを支持する、受信及び送信割り込みレジスタが挙げられる。１つ又は複数の実施形態には、更に、アクセスレジスタが含まれており、同レジスタは、メモリに直接アクセスすること無く、ホスト２０３などに様々なフラグ（読み取り、セット、リセットなど）への間接的なアクセス提供することによって、メモリ割り付けを円滑化する。アクセスレジスタ、而して、間接的メモリアクセス、を使用することにより、多数のエンティティによる直接的なメモリアクセスから生じる恐れのあるデータ可干渉性の問題を回避することができる。例えば、アクセスレジスタの１ビットは、メモリ割り付けを要求するのにホストがセットすることができるメッセージバッファ割り付けビットであり、別のビットは、割り付けが起こったことの認知である。割り付けられたメモリ（可能な幾つかのメッセージバッファ２２７の内の１つであるメッセージバッファ（ＭＢ））、及び対応するＭＢ記述子（幾つかのＭＢ記述子２２９の内の１つ）に対するアクセスポインタも、アクセスレジスタの中に含ませることができる。ＭＢ記述子は、対応するメッセージバッファに対するメッセージポインタを含んでおり、このメッセージバッファは、別のメッセージバッファに対する別のメッセージポインタを含んでいてもよい。メモリ２０５は、更に、割り付け表２３１を含んでおり、同表内の各ビットは、メモリの中の或るエリアが割り付けに利用できるか否かを示すのに用いられている。メモリ２０５は、更に、フィルタデータ２３３を含んでおり、そこには、メッセージフィルタユニット２１７によって使用される情報が記憶される。各種レジスタ、割り付け表、及びフィルタデータが、メモリ２０５の中の静的又は所定の場所に在るのに対して、メッセージバッファ２２７は、それぞれ、必要な時に必要な間だけ、動的に割り付けられるものであり、割り付け表２３１に含まれていることを指摘しておく。
【００１９】
幾つかの実施形態のホストインターフェース２０１は、ホストが直接アドレス指定するよりも広範囲に及ぶメモリを支持することができる。例えば、幾つかの実施形態では、ホストインターフェースは、７２ビットワイドメモリを支持し、なお且つ８、１６、又は３２ビットアクセスに限定されているホストと共に使用するのに適したものになっている。例えば、これは、１つ又は複数のタグメモリを、主メモリと関係付け、主メモリ場所に対し対応する１つ又は複数の固定又は所定の場所に配置した、シャドウメモリ配列を使って達成される。主メモリに嵌り込まないデータは、対応するタグメモリ場所に記憶される。
【００２０】
より詳しく言えば、様々な実施形態のメッセージバッファ２２７は、必要に応じて動的に割り付けられ、１６バイトを記憶するように構成されたメモリオブジェクトであり、前記１６バイトの中には、最大８バイトまでのデータ、タイムスタンプ（自由継続タイマー又はプログラムされた値による）、必要な場合は次のＭＢに対するメッセージポインタ（８ビット）、（１−８）バイトのデータの長さ、ＣＡＮチャネル識別子、標準又は拡張フラグ、受信されたフレーム又は送信予定のフレームのＩＤを保有しており、（フラグに応じて）標準又は拡張形態であるフレーム識別子（ＩＤ）、例えは、１１最上位ビット又は２８ビット、が含まれている。メッセージバッファは、ＭＢ記述子の名称が付けられた設定オブジェクトによって、割り付けられ、設定され、制御される。ＭＢ記述子は、所定のメモリ場所に入れられており、関係付けられたＭＢに対するポインタを含んでいる。ＭＢ記述子は、ホストインターフェースに対する初期化作動モード時に、ホストによって初期化される。各ＭＢは、別のＭＢに対するポインタを含んでおり、而して、ＭＢの連結リストが形成されていくことに注目されたい。ＭＢの連結リストは、ホスト又は他のエンティティが記憶されているデータを読み出す動作が遅い時に、データフレームの受信を取り扱うのに、又は送信用のフレームのリストをステージングするのに、有用である。様々な実施形態のＭＢ記述子は、記述子型式フィールド（受信、受信及び送信、送信、又は無し）、第１及び第２ポインタ及び対応する第１及び第２フラグ、割り込み有効フラグ、ＤＭＡ有効フラグ、設定される最後のＭＢ記述子であることを示す最終識別子フィールド、を含んでいる。上記工程及び各種フィールドの使用は、下で更に詳しく論じることにする。
【００２１】
フィルタデータ２３３は、ローカル揮発性メモリに割り当てられる８バイトのデータ構造を有し、着信データフレームの受け入れ／拒絶に関するフィルタ判定基準を指定している、１つ又は複数の受信フィルタを含んでいる。２つ又はそれ以上の受信フィルタをグループにまとめて、フィルタグループを形成することができる。受信フィルタは、ホストインターフェースの初期化作動モード中に、ホストによって設定される。フィルタは、特定のＩＤ又は或るＩＤ範囲を有するデータフレーム、特定のＣＡＮチャネルからのデータフレーム、又は或る内容を有するデータフレーム、を拒絶するか又は受け入れることができるようになっている。様々な実施形態では、各ＭＢ記述子は、関連付けられた受信フィルタを有しており、而して、初期化では少なくとも１つの受信フィルタが設定されねばならない。
【００２２】
而して、様々な実施形態では、下で更に詳しく論じるが、図２のＣＡＮコントローラは、メモリ割り付けユニット２１３を含んでおり、同ユニットは、集積回路として実装することができ、メモリ２０５内の、或る識別子（ＩＤ）とデータを備えているデータフレームを受け取ったら待ち行列に入れるために使用されている１つ又は複数のメッセージバッファ（ＭＢ）を動的に割り付けるように、そして、ＭＢを指すポインタであって、メモリの中の静的な場所（ＭＢ記述子）を介してアクセスすることができるようになっているポインタを提供するように、構成されている。更に、メモリ割り付けユニット及びメモリに連結されており、メモリへのアクセスを制御して、多数のデータフレームのＣＡＮバスによる送信及び受信を円滑化するように構成されている、メモリアクセスコントローラが含まれている。様々な実施形態では、ＣＡＮコントローラは、更に、識別子（ＩＤ）とデータを備えているデータフレームを受信し、メモリ割り付けユニットにＭＢを動的に割り付けさせ、メモリの中の静的な場所を割り当てるための、受信エンジン２１９を備えている。
【００２３】
幾つかの実施形態では、ＣＡＮコントローラは、ＣＡＮバスに連結されており、データフレームが受信されたらフィルタリング判定基準に従ってフィルタに掛けるように構成されている、メッセージフィルタリングユニット２１７を含んでおり、静的な場所の割り当てとＭＢの動的割り付けは、データフレームがフィルタリング判定基準を満たしていることに応答している。幾つかの実施形態では、作動中に受信エンジンが、複数のデータフレームを受信すると、メモリ割り付けユニットは、対応する複数のＭＢを動的に割り付け、ポインタがメモリの中の静的な場所に置かれ、次のポインタが同ＭＢの中に置かれて、次に割り付けられるＭＢが指し示されるようになるので、複数のデータフレームの受信された順序によるＭＢの連結リストが構築されていく。メッセージフィルタリングユニットは、ＣＡＮバスに連結されており、複数のデータフレームを、異なるフィルタリング判定基準、例えば、第１フィルタリング判定基準に従って、及び第２フィルタリング判定基準に従って、フィルタに掛けるするように構成されており、複数のデータフレームの内で第１フィルタリング判定基準を満たしている第１の部分からＭＢの第１連結リストが形成され、複数のデータフレームの内で第２フィルタリング判定基準を満たしている第２の部分からＭＢの第２連結リストが形成される。
【００２４】
ＣＡＮコントローラは、ホストＣＰＵ２０３に連結されるように構成されているＣＰＵインターフェース２１１を更に含んでおり、メモリアクセスコントローラとメモリ割り付けユニットとに連結されて、共同で、ホストにポインタを介したＭＢへの読み出しアクセスを提供するように構成されており、ＭＢはホストに読み出された後、メモリ割り付けによって割り付けを取り消されるので、ＭＢに関係付けられているメモリは再利用できるようになる。ホストには、ポーリング作動モード、割り込み起動作動モード、及びＤＭＡ作動モードを含む様々な作動モード時に、ＭＢ又は、ＭＢの１つ又は複数の連結リストへのアクセスが提供される。
【００２５】
要約すれば、ホストインターフェースは、ＣＡＮエンジンと多数のＣＡＮチャネルとホストの間のインターフェース、並びに、それぞれとデータフレームを一時的に記憶するためのローカルメモリとの間のインターフェース、を円滑化するＣＡＮコントローラの一部である。必要な時だけ動的に割り付けられるデータフレーム用の記憶装置として使用されるだけでなく、メモリは、受信及び送信工程を設定し制御するのに使用される各種レジスタとデータ構造に使用されている。
【００２６】
図３を参照しながら、１つ又は複数の実施形態による、ＣＡＮコントローラと関係付けられているメモリの動的割り付けの１つの一般的な態様を例示している代表的な線図を論じ、説明してゆく。図３は、メモリバッファ（ＭＢ）の連結リストを示しており、ホストインターフェース又はＣＡＮコントローラは、１つ又は多くのその様なリストを保持することができると理解して頂きたい。一般的に、ＭＢの連結リストは、同じフィルタリング判定基準に合格し通常は受信された順序で記憶されているデータフレーム、又は、恐らくはホストによってグループにまとめられ送信の待ち行列に入れられているデータフレームなど、理由別にまとめて連結されているＭＢを含んでいる。ＭＢの連結リストを、メールボックス及びＦＩＦＯの待ち行列のモデルの一般化と見なしてもよく、即ち、ＭＢを１つ備えたリストはメールボックスと見なすことができ、一方、複数のＭＢを備えた連結リストはＦＩＦＯの待ち行列と考えることができる。一般には、識別子（ＩＤ）とデータを備えたデータフレームが、受信されるか又は入手可能になる。その時点で、メッセージバッファは、データフレームを待ち行列に入れる際に使用されるために動的に割り付けられ、割り付けられたＭＢを指し示すポインタが、メモリの中の静的又は所定の場所を介してポインタにアクセスできるやり方で、生成される。図３を参照すると、初期データフレームが受信された時、メッセージバッファＭＢ１  ３０７が割り付けられ、（メモリの中の固定又は所定の場所の）ＭＢ記述子３０１がＭＢ１に割り当てられ、（ＭＢ１を指す３０５）ポインタ１  ３０３がＭＢ記述子３０１に書き込まれる。ポインタ２  ３０９は、所定の値として記憶されており、例えば、ＭＢ１が連結リストの最後のＭＢである場合は全てゼロである。グループにまとめられている追加のデータフレームが受信されると、追加のＭＢ、即ち、ＭＢ２（図示せず）−ＭＢｎ  ３１３が順次割り付けられ、ポインタ２  ３０９（ＭＢ２を指している３１１）がＭＢ１に書き込まれ、以下同様に続き、最終的に、最後のデータフレームが受信されると、最後のＭＢ、即ち、ＭＢｎ３１３が割り付けられる。ポインタｎ＋１は、所定の値で書かれ、例えば、全てゼロならＭＢの連結リストの最後であることを表している。
【００２７】
而して、ポインタを生成することは、ポインタを、メモリの中の静的な場所に置くことを含んでおり、例えば、関係付けられているＭＢが連結リストの第１構成員である場合はＭＢ記述子に置く。代わりに、ポインタを生成することは、更に、ポインタを、先のデータフレームを待ち行列に入れるために割り付けられた先のＭＢに置くことを含んでおり、先のＭＢを指すポインタは、メモリの中の静的な場所、例えば、ＭＢ記述子に置かれる。
【００２８】
ホストインターフェースは、メモリ割り付け表２３１を保持している。新しいフレームが受信されると、表が検索され、空いているメモリブロックが見つけ出され、それに使用済みの印が付けられ（表の中には対応するフラグがセットされ）、このメモリブロックに対するポインタは、ＭＢ記述子（ＭＢが連結リストの第１構成員の場合）又は先のＭＢに書きむために利用できるようになる。様々な実施形態は、データフレームが首尾よく受信された後でしかポインタを書くことができず、そうでない場合は、ＭＢは廃棄され、表はクリアされることを指摘しておく。送信工程では、ホストＣＰＵ２０３は、アクセスレジスタ（ＤＡＲ）のＭＢ割り付けビット又はフラグに「１」を書くことによって、メモリブロック又はＭＢの割り付けを要求する。ホストインターフェースは、割り付け表を検索し、ＭＢを割り付け、表に印を付けて、ＭＢ記述子（第１ＭＢの場合）又はリスト上の以前のＭＢの何れかに、新しく割り付けられたＭＢに対するポインタを書く。データフレームの連結リストが使い果たされる（受信リストの場合はホストによって読み取られ、又は送信リストの場合はホストによって送信される）と、メモリからＭＢのリスト全体の割り付けが取り消され、割り付け表の中の対応するフラグはクリアされ、ＭＢ記述子内のポインタは削除されるか又はゼロにセットされるので、ＭＢに関連付けられているメモリは再利用できるようになる。
【００２９】
一般に、データフレームを（ＣＡＮチャネルから又はホストから）受信する段階は、時間経過と共に複数のデータフレームを受信し、対応する複数のＭＢを動的に割り付けて、対応する多数のポインタを生成又は提供することを含んでおり、第１データフレームの第１ポインタは、第２データフレームの第２ＭＢ内に含まれ、それにより、複数のポインタが複数のデータフレームに対応するＭＢの連結リストを提供するようになっている。１つ又は複数の実施形態では、ポインタを生成する段階は、ポインタを、静的な場所、例えば、ＭＢ記述子に置くか又は記憶することを含んでおり、このポインタは、最も以前に割り付けられたＭＢを指し示している。代替実施形態では、ポインタは、メモリ内の静的な場所に置かれ、最も新しく割り付けられたＭＢを指すようになっている。この代替実施形態では、最も以前に割り付けられたＭＢは、連結リストの終端に置かれ、最後の又は最も新しく割り付けられたＭＢは、ＭＢ記述子内のポインタによって指し示され、次に最も新しく割り付けられたＭＢに対するポインタを含むことになっており、以降同様に進む。
【００３０】
図４を参照しながら、１つ又は複数の実施形態による図２のホストインターフェースのバファリング態様を示す代表的な高レベルフローチャートを論じ、説明してゆく。上で指摘したように、ＭＢ記述子は、ＭＢの２つの連結リストを同時にアドレス指定できるように配列された２つのポインタフィールド（ＰＯＩＮＴＥＲ１とＰＯＩＮＴＥＲタ２）を含むことができる。ＭＢ記述子は、更に、対応するポインタと関係付けられ、対応するＭＢリストの状態、即ち、空であるか否かを反映している２つのフラグ（ＦＬＧ１とＦＬＧ２）を含んでいる。２つのポインタとフラグは、ホスト又は他のＤＭＡエンティティ２０３とホストインターフェース２０１との間の二重バファリングインターフェースを提供するために、受信工程と送信工程の両方に使用されている。基本的に、ホスト２０３とホストインターフェースは、同じ連結リストに同時にアクセスすることはない。ＣＡＮチャネルからデータフレームを受信し、それらのフレームをホストで読み出す時、ホストインターフェースは、受信フレームを、ＰＯＩＮＴＥＲ１によってアドレス指定されたリスト（Ｌｉｓｔ１）に記憶し、一方で、ホスト又はＤＭＡエンティティは、以前に受信し記憶されているフレームを、ＰＯＩＮＴＥＲ２によってアドレス指定されたリスト（Ｌｉｓt２）から読み出す。データフレームを送信する時、ホストは、データフレームを待ち行列に入れるためにＬｉｓｔ１にアクセスし、一方で、ホストインターフェースは、先に待ち行列に入れられているデータフレームを送信するためにＬｉｓｔ２にアクセスする。而して、データフレームを消費しているエンティティは、Ｌｉｓｔ１にアクセスし、データフレームが使い果たされたエンティティはＬｉｓｔ２にアクセスする。
【００３１】
４０１では、Ｌｉｓｔ２は空である（ＦＬＧ２＝０）。ＦＬＧ１がチェックされ４０３、「０」であればＬｉｓｔ１は空であり、「１」であればＬｉｓｔ１は空ではない。４０５では、ＦＬＧ２は１にセットされ、ＦＬＧ１は０にセットされ、一方、ＰＯＩＮＴＥＲ２はＰＯＩＮＴＥＲ１の値を取り、ＰＯＩＮＴＥＲ１は０にセットされる。Ｌｉｓｔ２（旧Ｌｉｓｔ１）は、もはや空ではなく（ＦＬＧ２＝１）４０７、消費しているエンティティは、ＦＬＧ２が「０」（Ｌｉｓｔ２が空）になる４０９まで、同リストにアクセスする。一旦リストが空になれば、ＰＯＩＮＴＥＲ２は０にセットされ、Ｌｉｓｔ２から全てのＭＢの割り付けが取り消される４１１。而して、待ち行列に並んでいるエンティティは、待ち行列に並んでいるデータフレームを求めてＬｉｓｔ１にアクセスすることができ、一方、消費しているエンティティはＬｉｓｔ２にアクセスしようとするため、他のやり方では生じる恐れのある対立又は競合の問題は回避することができる。
【００３２】
図５を参照しながら、１つ又は複数の実施形態による、ＣＡＮバスからＣＡＮメッセージを受信する時の、ホストインターフェース２０１の作動を示すフローチャートを論じ、説明してゆく。５０１では、ＣＡＮチャネル（ＣＡＮバスインターフェース２０７）は、データフレームが受信されたことを信号連絡する。１つ又は複数の実施形態では、メッセージバッファは、ホストインターフェース、即ち、メモリ割り付けユニット２１３及びメモリアクセスコントローラ２１５、によって動的に割り付けられる５０３。このＭＢに、データフレームが書き込まれる。データフレームは、関係付けられているフィルタ表からのフィルタリング判定基準に従ってフィルタに掛けられる（メッセージフィルタユニットは、データフレームを、データフレーム識別子、ＣＡＮチャネル、データ内容、タイムスタンプ、又は他のフィルタ標識の内の１つ又はそれ以上に従ってフィルタに掛ける）５０５。一致していなければ、同ＭＢは割り付けが取り消される５０７。
【００３３】
而して、様々な実施形態では、ＭＢを動的に割り付ける段階及びポインタを生成する段階は、データフレームがフィルタリング判定基準を満たしていることに応答するようになっている。ホストインターフェースが、複数のデータフレームを、異なるフィルタリング判定基準に従ってフィルタに掛けている時、異なるフィルタリング判定基準を満たすデータフレームからＭＢの異なる連結リストが形成されていく。例えば、複数のデータフレームを、第１フィルタリング判定基準に従って、及び第２フィルタリング判定基準に従って、フィルタに掛けると、複数のデータフレームの内で第１フィルタリング判定基準を満たしている第１の部分からＭＢの第１連結リストが形成され、複数のデータフレームの内で第２フィルタリング判定基準を満たしている第２の部分からＭＢの第２連結リストが形成されることになる。
【００３４】
一致していれば、ＭＢ記述子が、メモリ割り付けユニット２１３とメモリアクセスコントローラ２１５を介してＭＢに割り当てられる５０８。次に、ＦＬＧ１が、メモリアクセスコントローラによってチェックされる５０９。Ｌｉｓｔ１が空でなければ、割り付けられたばかりのＭＢに対するＭＢアドレス又はポインタが、リストの中の最も新しいＭＢに加えられる５１３。Ｌｉｓｔ１が空の場合は、割り付けられたばかりのＭＢに対するＭＢアドレス又はポインタは、ＭＢ記述子のＰＯＩＮＴＥＲ１にロードされ、ＦＬＧ１は１にセットされる５１１。工程は５０１で、追加の受信されたデータフレームに対して続行される。
【００３５】
図６を参照しながら、１つ又は複数の実施形態による、ＣＡＮメッセージ読み出し中のホストインターフェースの作動を、ホスト側から見て説明しているフローチャートを論じ、説明してゆく。工程は、６０１で反映されているように、ホストＣＰＵ２０１の作動モードに対応している。ＣＰＵ又はホストが、ＣＰＵインターフェース２１１及びメモリアクセスコントローラ２１５を介して、ホストインターフェースをポーリングしている場合は、ポーリングされようとしているＭＢ記述子毎に、先ず、ＦＬＧ２がチェックされる６０５。これにより、Ｌｉｓｔ２が空（０）であることが示された場合は、ポーリングは続行される。Ｌｉｓｔ２が空でない場合、即ち、データフレームがリストの中で利用可能になっている場合は、ホストＣＰＵには、メモリアクセスコントローラ２１５とＭＢ記述子ＰＯＩＮＴＥＲ２を介して各ＭＢへのアクセスが提供され、Ｌｉｓｔ２が読み出され、次いでＦＬＧ２がクリアされる。ホストが割り込み起動型モードで作動している場合は、割り込み要求が受信されて６０９、少なくとも１つのデータフレームが利用可能であることが表示される。割り込み受信レジスタは、割り込みフラグとＦＬＧ２がセットされた、受信型式のＭＢ記述子に関する情報を保有することになる。割り込みレジスタの中の受信ベクトルは、Ｌｉｓｔ２の第１ＭＢのアドレスを保有することになる。ホストは、Ｌｉｓｔ２を読み出した後、フラグ（ＲＤＮビット）を割り込みレジスタの中にセットし、ホストインターフェース（メモリアクセスコントローラとメモリ割り付けユニット）に、ＦＬＧ２をクリアし、Ｌｉｓｔ２の中の全てのＭＢの割り付けを取り消すように命令する６１１。
【００３６】
作動モードがＤＭＡであり、且つＭＢ記述子がＤＭＡモードで作動するように構成されている場合は、リストの各ＭＢ毎にＤＭＡ要求が生成される６１２。ＤＭＡトランザクションによって１つのＭＢが読み出され６１３、このＭＢは割り付けを取り消され、ＦＬＧ２がチェックされる。Ｌｉｓｔ２が空でない場合は、ＰＯＩＮＴＥＲ２が次のＭＢに対してセットされ、ホストインターフェースは、新しいＤＭＡ要求を生成する６１９。Ｌｉｓｔ２は、一旦、空（ＦＬＧ２＝０）になる。ホストインターフェースはＦＬＧ２をクリアして、このリストへの全てのＤＭＡ要求を終了する６１７。
【００３７】
図７を参照しながら、１つ又は複数の実施形態による、ＣＡＮバスで送信中のホストインターフェースの作動を説明しているフローチャートを論じ、説明していゆく。これは、各チャネルが、優先順位が一番高いデータフレーム、例えば、最も低いＩＤ、最も低いタイムスタンプ、及び送信が開始されたら入手可能になる他の優先順位標識、を送信することが保証されるように、ホストインターフェース２０１が作動することから、アービトレーション工程と見なすことができる。送信又はアービトレーション工程は、１つ又は複数の新しいＭＢ、又は送信型式の対応するＭＢ記述子を有する連結されたＭＢのリストが送信に使えるようになったこと（ＦＬＧ２の変化による信号連絡）、又は先に予定されていたＭＢの送信の完了、を含む各種事象によって開始される。図示のように、工程それぞれの繰り返しは、１つのＣＡＮチャネルに限定されているので、ホストインターフェースは、他のチャネルに対して工程を同時に実行してもよいことが理解頂けるであろう。
【００３８】
ＭＢ記述子の１つでＦＬＧ２の変化が検出されると７０１、ＣＡＮチャネルのＩＤが、Ｌｉｓｔ２内の第１ＭＢから読み出される７０３。次に、送信型式のＭＢ記述子には、送信検索エンジン２２１を使って、このチャネルの全てのその様なＭＢ記述子をスパンし、各個別のＬｉｓｔ２の第１ＭＢから該当する優先順位付け情報を読み出すことによって、優先順位が付けられる７０５。優先順位が最も高いＭＢ、例えば、最も低いＩＤを有するものが、送信するべきものとして選択され、選択されたＭＢは、バス又はＣＡＮ上の現在の何らかの活動の後に送信されるように待ち行列に入れられる７０７。ＣＡＮチャネルがＭＢの送信を終える７０９と、このＭＢは、割り付けが取り消され、リストの中の次のＭＢに対するポインタが、ホストインターフェースによって読み出される７１１。７１３で、割り付けが取り消されたＭＢは最後のＭＢであった（次のＭＢに対するポインタが全てゼロなど）か否かが判定される。最後のＭＢでなかった場合は、ＰＯＩＮＴＥＲ２はＭＢのリスト内の次のＭＢにセットされ７１５、最後のＭＢであった場合は、現在のＭＢ記述子（ＭＢの連結リスト）のＦＬＧ２とＰＯＩＮＴＥＲ２がクリアされ７１７、工程は７０５で、現在か又は目標のチャネルに対応する別の連結リストに対して続行される。別のＦＬＧ２が表示されると、工程が７０１から再開される。ホストインターフェースは、メモリアクセス及びメモリ割り付け機能を取り扱い、又は円滑化しており、このインターフェースは、先に指摘したように、集積回路の形態で具現化できることが理解頂けるであろう。
【００３９】
図８を参照しながら、１つ又は複数の実施形態による、ＣＡＮバスで送信されるＣＡＮメッセージを転送中のホストインターフェースの作動を、ホスト側から見て説明しているフローチャートを論じ、説明してゆく。８０１で判定されたホストＣＰＵ２０３又は他のＤＭＡエンティティの作動モードに対応して、異なる工程が用いられる。ホストがポーリングモードで作動している場合は、送信型式のＭＢ記述子をポーリングし、各ＦＬＧ１をチェックすることになる８０５。ＬＩＳＴ１が空でない（ＦＬＧ１が１である）場合は、ポーリングが続行される。ＬＩＳＴ１が空である（ＦＬＧ１が０である）場合は、ＣＰＵは、記述子アクセスレジスタ（ＤＡＲ）を使ってＭＢの割り付けを要求し、ＭＢの連結リストを構築する８０７。ホストは、ＦＬＧ１をクリアして０にし、而して、ＭＢ及び対応するデータフレームがリストに加えられてもＬｉｓｔ１を安定した状態に保持する。ＭＢが割り付けられると、ホストはデータ及びＩＤ情報などをそのＭＢに書き込むことができる。一旦、ＭＢのリストが構成されてしまえば、ホストＣＰＵは、ＤＡＲを使ってＦＬＧ１を１にセットし８０９、而して、得られたリストが送信できるようになる。
【００４０】
ホストは、割り込みモードで作動している場合は、送信型式の少なくとも１つのＭＢ記述子でＬｉｓｔ１が空いていることを表す割り込みを受信する８１１。送信割り込みレジスタは、割り込みフラグ並びにＦＬＧ１はクリアされているという第１ＭＢ記述子に関する情報を、例えば、記述子の昇順に、含むことになる。割り込みレジスタは、ホストが書き込むのに利用できる、既に割り付けられているＭＢのベクトル（アドレス）を含むことになる。ホストは、割り込みレジスタの割り込みフラグをクリアし、割り付けられたＭＢに対するベクトルを読み出す８１３。別のデータフレームをリストに追加する必要が生じた場合、ホストＣＰＵは、ＤＡＲを使って、別のＭＢが割り付けられることを要求する８１５。ホストは、各データフレームを割り付けられたＭＢに書き込み、フラグをＤＡＲ内にセットして、リストは送信できる状態にあることを示す８１７。ホストインターフェースは、ＦＬＧ１を自動的にセットし、リストを送信できるようにする。
【００４１】
ホストがＤＭＡモードで作動し、ＭＢ記述子がＤＭＡ作動に合わせてプログラムされている場合は、対応するＬｉｓｔ１が空になった時、ＤＭＡ要求が生成される８１９。事前に割り付けられているＭＢは、データフレームのＤＭＡ転送を受信するのに利用することができるようになる８２１。ＤＭＡトランザクションが終了すると、ＦＬＧ１ビットが、ホストインターフェースによって自動的にセットされ、そのＭＢを送信できるようになる８２３。２つ以上のＭＢ記述子がＤＭＡ要求を生成することができる場合は、優先順位は、昇順の様なＭＢ記述子の順序に従う。
【００４２】
以上、これまでの論議で、ＣＡＮコントローラを説明してきた。ＣＡＮコントローラは、コントローラエリアネットワーク（ＣＡＮ）コントローラのためのホストインターフェース２０１を含んでおり、ホストインターフェースは、集積回路（ＩＣ）の回路構成に実装され、ホスト２０３とＣＡＮバスインターフェース２０７に連結されるように構成されている。様々な実施形態のホストインターフェースは、データフレームをメッセージバッファ（ＭＢ）の１つ又は複数の連結リストの中で待ち行列に入れるために、ＭＢを動的に割り付けるため、例えば、ハードウェアベースの機械として実装されている、メモリ割り付けユニット２１３を含むことができ、ＭＢの連結リスト毎に、第１ＭＢに対する第１ポインタは所定のメモリ場所内に記憶され、第２ＭＢに対する第２ポインタは第１ＭＢに記憶され、後続のＭＢに対する後続のポインタは、それぞれに、直前のＭＢに記憶される。更に、データフレームをＣＡＮバスから受信し、受信されたデータフレームを、受信型式のＭＢの１つ又は複数の連結リストに記憶するために、ＣＡＮバスインターフェースに連結されている受信エンジン２１９と、送信型式のＭＢの１つ又は複数の連結リストに記憶されている送信データフレームを送信するために、ＣＡＮバスインターフェースに連結されている送信エンジン２２３と、受信エンジン、送信エンジン、及びホストによる、１つ又は複数のＭＢの連結リストへのアクセスを制御するために、例えば、ハードウェアベースの状態機械として実装されているメモリアクセスコントローラ２１５と、が含まれている。幾つかの実施形態のホストインターフェースは、更に、受信されたデータフレームをフィルタリング判定基準に従ってフィルタに掛けるために、ＣＡＮバスインターフェースと受信エンジンに連結されているメッセージフィルタユニット２１７を備えており、第１のフィルタリング判定基準を満たしている受信データフレームは、ＭＢの第１連結リストに記憶され、第２のフィルタリング判定基準を満たしている受信データフレームは、ＭＢの第２連結リストに記憶される。ホストの読み出し動作又は送信動作を介して消費されたＭＢは、割り付けが取り消され、他のデータフレームを待ち行列に入れるのに利用できるようになる。
【００４３】
先に述べた機能と構造は、１つ又は複数の集積回路内に実装してもよいと理解頂きたい。例えば、機能の多く又は全ては、図２で提案されている集積回路又は他の同様に構成され及び配列された構造として、ホストインターフェース機能に実装することができる。上で論じた方法は、図１及び図２に関連して説明した発明概念及び原理の多くを使用しており、各種詳細事項は、概ね、先の説明から得ることができると理解頂きたい。
【００４４】
上で論じた工程、装置、システム、及び発明原理は、不適当なメモリ使用法の問題、又は、先行技術の技法によって引き起こされる、消費前にメモリが上書きされた場合のデータ損失という問題、を軽減することを目的としており、また軽減することができる。例えば、ハードウェアベースの構造を使用して、必要な時に必要な間だけＭＢを動的に割り付けるというこれらの原理を使えば、利用可能な大量のメモリ又は類似物を必要とすること無く、比較的僅かな費用で、効率的にメモリを利用することができるようになる。
【００４５】
本開示は、本発明の真の意図された適正な範囲及び精神を限定するのではなく、本発明による様々な実施形態をどの様に構築し使用するかを説明することを目的としている。以上の説明は、本発明を包括するものでも、本発明を開示されている厳密な形態に限定するものでもない。上記教示に鑑み、修正又は変更が可能である。（単数又は複数の）実施形態は、本発明の原理及びその実際の用途をできる限り分かり易く例示し、当業者が、本発明を、様々な実施形態で、及び考えられる特定の使用に適切である様々な修正を加えて、利用できるようにするために、選定し、説明してきた。全てのその様な修正及び変更は、特許請求の範囲、但しこれは本特許出願の係属中に補正される可能性もあるものとしての特許請求の範囲、並びにその全ての等価物を、公平に、合法的に、公正に権利を与えられる範囲に照らし解釈して、判断される本発明の範囲内に含まれるものと見なすこととする。
【符号の説明】
【００４６】
１０１  コントローラホストインターフェース（ＣＨＩ）
１０３  ホストＣＰＵインターフェース
１０５ＤＭＡインターフェース
１０７システムクロック
１０９ローカルＲＡＭ
１１１クロックインターフェース
１１３ＣＡＮエンジン（ＣＥ）
２０１  コントローラホストインターフェース
２０３  ホストＣＰＵ
２０７  ＣＡＮバスインターフェース又はエンジン
２０９  ＣＡＮバス
２１１  ＣＰＵインターフェース
２１３  メモリ割り付け
２１５  メモリアクセスコントローラ
２１７  メッセージフィルタ
２１９  受信エンジン
２２１  送信検索エンジン
２２３  送信エンジン
２０５メモリ
２２５  設定レジスタ
２２７  メッセージバッファ
２２９  メッセージバッファ記述子
２３１  割り付け表
２３３  フィルタデータ
３０３  ポインタ１
３０９  ポインタ２
３１５  ポインタｎ＋１
【図１】
2010515370.tif 000003
【図２】
2010515370.tif 000004
【図３】
2010515370.tif 000005
【図４】
2010515370.tif 000006
【図５】
2010515370.tif 000007
【図６】
2010515370.tif 000008
【図７】
2010515370.tif 000009
【図８】
2010515370.tif 000010
【国際調査報告】
2010515370.tif 000011