(57)【特許請求の範囲】
【請求項１】
プロセッサコア（２２）を備えるＣＡＮ装置（２０）内で用いられるアクノレッジメッセージを自動的に送信するための方法であって、この方法が：
オブジェクト番号ｎをもつ第一のメッセージオブジェクトを受信メッセージオブジェクトとして設定するステップと、
前記受信メッセージオブジェクトを起動するステップと、
オブジェクト番号ｎ＋１をもつ第二のメッセージオブジェクトを前記受信メッセージオブジェクトに対応する伝送メッセージオブジェクトとして設定するステップと、
前記アクノレッジメントメッセージを前記伝送メッセージオブジェクトと関連する応答メッセージバッファ内に格納するステップと、
マルチフレームフラグメントメッセージのフレームを受信するステップと、
前記受信されたフレームの受入れ濾波を行なうことで、前記受信されたフレームが前記起動された受信メッセージオブジェクトと一致するか決定するステップと、
前記伝送メッセージオブジェクトを起動するステップと、
前記アクノレッジメントメッセージを、前記プロセッサコアの介在を要求することなく、自動的に送信するステップと、
を含むことを特徴とする方法。
【請求項２】
前記自動的に送信するステップがプロセッサコアにとって外部のハードウエアによって遂行されることを特徴とする請求項１記載の方法。
【請求項３】
前記プロセッサコアにとって外部のハードウエアが、ＣＡＮ/ＣＡＬモジュールを備えることを特徴とする請求項２記載の方法。
【請求項４】
前記ＣＡＮ装置が前記アクノレッジメントメッセージの送信を要求するＣＡＬプロトコルの下で動作を起動（イネーブル）されることを特徴とする請求項１記載の方法。
【請求項５】
前記ＣＡＬプロトコルがＣＡＮｏｐｅｎプロトコルから成ることを特徴とする請求項４記載の方法。
【請求項６】
前記アクノレッジメントメッセージがある指定された伝送メッセージオブジェクトと関連する応答メッセージバッファ内に格納されることを特徴とする請求項１記載の方法。
【請求項７】
前記アクノレッジメントメッセージが管理ＣＡＬプロトコルによって定義されるアクノレッジメントバイトを含むことを特徴とする請求項６記載の方法。
【請求項８】
前記アクノレッジメントバイトが前記応答メッセージバッファ内に前記コアプロセッサ上でランするアプリケーションによって格納されることを特徴とする請求項７記載の方法。
【請求項９】
前記アクノレッジメントバイトが前記応答メッセージバッファ内にユーザーによってオブジェクト設定手続きの際に格納されることを特徴とする請求項７記載の方法。
【請求項１０】
前記管理ＣＡＬプロトコルがＣＡＮｏｐｅｎプロトコルから成ることを特徴とする請求項７記載の方法。
【請求項１１】
さらに、前記受信されたフレーム内に含まれるトグルビットを前記アクノレッジメントバイトの対応するビット位置内にコピーするステップを含むことを特徴とする請求項１０記載の方法。
【請求項１２】
前記伝送メッセージオブジェクトが、オブジェクト設定手続きの際にユーザーによってオブジェクト番号ｎをもつ受信メッセージオブジェクトに割当てられたオブジェクト番号ｎ＋１をもつメッセージオブジェクトから成ることを特徴とする請求項６記載の方法。
【請求項１３】
前記アクノレッジメントメッセージが管理ＣＡＬプロトコルによって定義されるアクノレッジメントバイトを含むことを特徴とする請求項１記載の方法。
【請求項１４】
前記管理ＣＡＬプロトコルがＣＡＮｏｐｅｎプロトコルから成ることを特徴とする請求項１３記載の方法。
【請求項１５】
さらに、前記受信されたフレーム内に含まれるトグルビットを前記アクノレッジメントバイトの対応するビット位置内にコピーするステップを含むことを特徴とする請求項１４記載の方法。
【請求項１６】
請求項１記載の方法を実行するＣＡＮ装置。
【請求項１７】
前記ＣＡＮ装置がＣＡＮマイクロコントローラから成ることを特徴とする請求項１６記載のＣＡＮ装置。
【発明の詳細な説明】
【０００１】
この出願は１９９９年９月１５日に出願された米国仮出願シリアル番号６０／１５４，０２２の利益および優先権の全てを請求するものである。それの開示はあらゆる目的のために全てここに含まれている。
【０００２】
発明の背景
本発明は全体としてデータ通信の分野に関するものであり、更に詳しくいえば、直列通信バスコントローラ、およびそれを包含しているマイクロコントローラの分野に関するものである。
【０００３】
ＣＡＮ（制御エリアネットワーク（Ｃｏｎｔｒｏｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ））は、自動車制御応用、産業制御応用、医療装置、アビオニクス、オフイスオートメーション機器、消費者機器、およびその他の多くの製品や応用において広く使用されている産業標準、２線チャネル通信バスである。ＣＡＮコントローラは、マイクロコントローラとインタフェースするようにされている独立型装置として、またはマイクロコントローラに集積化されている回路、またはマイクロコントローラに組み込まれているモジュールとして現在利用できる。１９８６年以来、ＣＡＮユーザー（ソフトウエアプログラマ）は，ＣＡＮ物理層およびＣＡＮフレーム・フォーマットを採用して、ＣＡＮ仕様に追従する、ＣＡＮの性能を拡張する数多くの高レベルＣＡＮアプリケーション層（ＣＡＬ）を開発してきた。ＣＡＬはこれまで主としてソフトウエアで実現されており、ハードウェアによるＣＡＬサポートは非常に僅かであった。したがって、ＣＡＬはこれまで多くのホストＣＰＵ介在を要しており、そのために処理費用が増加し、ホストＣＰＵの性能が低下する。
【０００４】
したがって、ＣＰＵの行うタスクをＣＰＵからＣＡＮハードウェアへ移すことにより、ホストＣＰＵ処理資源を大幅に節約し、ホストＣＰＵの性能をそれに相応して向上させるために、ソフトウエアで通常実現されるＣＡＬ機能のＣＡＮハードウェア実現に対する需要がこの技術にある。最も求められる、ＣＰＵ資源集約ＣＡＬ機能の１つがメッセージ管理である。これには、ＣＡＮ直列通信バスを介して受信された、入来するＣＡＬ／ＣＡＮメッセージと、ＣＡＮ直列通信バスを介して送信された、出て行くＣＡＬ／ＣＡＮメッセージとの少なくとも一方の取扱い、保存、および処理を要する。ＤｅｖｉｃｅＮｅｔ、ＣＡＮｏｐｅｎ、およびＯＳＥＫなどのＣＡＬプロトコルが多数のＣＡＮフレームにわたって分布されている長いメッセージを供給する。この方法はＡｆｒａｇｍｅｎｔｅｄ＠またはＡｆｒａｇｍｅｎｔｅｄ＠メッセージングと時に呼ばれる。そのような断片化された、マルチフレームメッセージの組立てはこれまで多数のホストＣＰＵの介在を要した。とくに、ホストＣＰＵで実行するＣＡＬソフトウエアは、メッセージの断片またはセグメントの完全なメッセージへの組立てを容易にするために、メッセージデータのバッファリングおよび処理を積極的に監視し、管理する。
【０００５】
上記したことおよび前記したことを基にして、ＣＰＵの行うタスクをＣＰＵからＣＡＮハードウェアへ移すことにより、ホストＣＰＵ処理資源を大幅に節約し、ホストＣＰＵの性能をそれに相応して向上させるために、ソフトウエアで通常実現されるＣＡＬ機能のＣＡＮハードウェア実現に対する需要がこの技術にあることがわかる。
【０００６】
本発明の譲渡人は、この技術におけるこの需要を満たす、「ＸＡ−Ｃ３」と名付けられた、新しいマイクロコントローラ製品を最近開発した。ＸＡ−Ｃ３は高性能１６ビット１チップマイクロコントローラのフィリップスＸＡ（ｅＸｔｅｎｄｅｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）ファミリイの最新のものである。ＸＡ−Ｃ３はハードウェアＣＡＬサポートを特徴とする最初のチップであると確信している。
【０００７】
ＸＡ−Ｃ３は、本発明を含めて、いくつかの異なる発明を具体化するＣＭＯＳ１６ビットＣＡＬ／ＣＡＮ２．０Ｂマイクロコントローラである。これらの発明は、マルチフレームに断片化されたメッセージのＣＰＵによる自動組立てを含めて、ＣＡＬ／ＣＡＮメッセージの濾波、バッファリング、取扱い、および処理のため、およびメッセージデータの保存と検索のための管理用の新規な技術およびハードウェアと、それのために利用されるメモリ資源とを含んでいる。
【０００８】
本発明は３状態セマフォーコードを所与のメッセージバッファに書込んで、その所与のメッセージバッファのアクセス状態を指示するための方法に関するものである。その後で、ＣＰＵで実行しているアプリケーション（ソフトウエア）がこの３状態セマフォーコードを読出して、所与のメッセージバッファがＣＰＵを読出す用意ができたかどうか、所与のメッセージバッファがＤＭＡエンジンにより現在アクセスされている（したがってＣＰＵが読出す用意ができていない）かどうか、または所与のメッセージバッファがＣＰＵにより現在読出されているかどうかを判定できる。このようにして、ＣＰＵ読出しが進行中にＤＭＡエンジンが所与のメッセージバッファをアクセスするとしても、所与のメッセージバッファに保存されているデータの完全性が確保される。
【０００９】
発明の概要
本発明は、アクノレッジメッセージを自動的に送信するためのプロセッサコアを備えるＣＡＮ装置（例えば、ＣＡＮマイクロコントローラ）内で用いられる方法に関する。この方法は、マルチフレームフラグメントメッセージのフレームを受信するステップ、およびこの受信ステップに応答して、プロセッサコアの介在を要求することなく、アクノレッジメントメッセージを自動的に送信するステップを含む。この自動的に送信するステップは、好ましくは、プロセッサコアにとって外部のハードウエア、例えば、ＣＡＮ装置のＣＡＮ/ＣＡＬモジュールによって遂行される。
【００１０】
一つの好ましい実施例においては、オブジェクト番号ｎをもつ第一のメッセージオブジェクトを受信メッセージオブジェクトとして設定するステップ、受信メッセージオブジェクトを起動するステップ、オブジェクト番号ｎ＋１をもつ第二のメッセージオブジェクトを受信メッセージオブジェクトに対応する伝送メッセージオブジェクトとして設定するステップ、アクノレッジメントメッセージを伝送メッセージオブジェクトと関連する応答メッセージバッファ内に格納するステップ、マルチフレームフラグメントメッセージのフレームを受信するステップ、受信されたフレームを受入れ濾波することで、受信されたフレームが起動された受信メッセージオブジェクトと一致するか決定するステップ、伝送メッセージオブジェクトを起動するステップ、およびアクノレッジメントメッセージを、プロセッサコアの介在を要求することなく、自動的に送信するステップを含む。
【００１１】
一つの特定の実現においては、アクノレッジメントメッセージは、管理ＣＡＬプロトコル、例えば、ＣＡＮｏｐｅｎプロトコルによって定義されるアクノレッジメントバイトを含み、この方法は、さらに、自動的に送信するステップの前に、受信されたフレーム内に含まれるトグルビットをアクノレッジメントバイトの対応するビット位置内にコピーするステップを含む。
【００１２】
本発明は、それの別の面では、上記方法を実施するＣＡＮ装置、たとえば、ＣＡＮマイクロコントローラを含む。
【００１３】
好適な実施例の詳細な説明
本発明の種々の他の面、特徴、および利点は添付図面とともに本発明の詳細な説明を参照して容易に理解されるであろう。
【００１４】
本発明をそれの特定の実現の背景で、すなわち、フィリップス・セミコンダクタス（Ｐｈｉｌｉｐｓ  Ｓｅｍｉｃｏｎｄａｕｃｔｏｒｓ）により製造されたＸＡ−Ｃ３マイクロコントローラの背景に関して以下に説明する。もちろん、ここに開示する本発明の種々の面および特徴の１つまたは複数の任意のものを、所望の任意の応用で、たとえば、独立型ＣＡＮコントローラにおいて、または他の任意のマイクロコントローラまたはシステムの一部として、個々にまたは組合わせて利用できるので、本発明はこの特定の実現に限定されないことを明らかに理解すべきである。
【００１５】
本発明の好適な実施例（たとえば、ＸＡ−Ｃ３マイクロコントローラ）で個々で用いられる下記の用語を次のように定義する。
標準ＣＡＮフレーム：      標準ＣＡＮフレームのフォーマットが図１に示され
ている。
拡張ＣＡＮフレーム：      拡張ＣＡＮフレームのフォーマットが図１に示さ
れている。
受入れ濾波：              ＣＡＮフレームを受けるか、無視するかを判定す
るためにＣＡＮ装置が実現するプロセス、もし受
入れるならば、そのフレームを予め割り当てられて
いるメッセージ・オブジェクトに保存する。
メッセージ・オブジェクト：予め指定されたサイズ（ＣＡＬメッセージでは２
５６バイトまで）で、特定の受入れフィルタに組合
わされている受信ＲＡＭバッファ、または完全な
データフレームを伝送するためにユーザーが全て
の必要なデータを予めロードする伝送ＲＡＭバッ
ファ。メッセージ・オブジェクトは、それを介し
て完全なメッセージ、または一連のメッセージを
伝送することができるような通信チャネルである
と考えることができる。
ＣＡＮ調停ＩＤ：          ＣＡＮフレーム・ヘッダ内に置かれた１１ビット
（標準ＣＡＮ２．０フレーム）または２９ビット
（拡張ＣＡＮ２．０Ｂフレーム）識別子フィール
ド。このＩＤフィールドＣＡＮバスに対するフ
レームアクセスを調停するために使用される。
またＣＡＮフレーム受入れおよび前調停伝送の
ために受入れ濾波で使用される。
選別器ＩＤ：                入来メッセージから取り出された３０ビットフィ
ールドでその後で受入れ濾波で使用される。選別
器ＩＤはＣＡＮ調停ＩＤとＩＤＥビットを含み、
２データバイトまで含むことができる。それら３
０の取り出されたビットは受入れ濾波により修飾
された情報である。
一致ＩＤ：                  入来する選別器ＩＤと比較される、ユーザーによ
り予め指定された３０ビットフィールド。３２の
メッセージ・オブジェクトのおのおのに対する
個々の一致ＩＤはユーザーによりプログラムさ
れて、指定されたメモリマップされたレジスタ
（ＭＭＲ）に入れられる。
マスク：                    ユーザーにより予め指定された２９ビットフィー
ルドであって、受入れフィルタにおいて特定の任
意のビット（またはビットの組合わせ）で一致
ＩＤ比較を被覆する（マスクする）ことができ
る。個々のマスク、各メッセージ・オブジェクト
に１つ、がユーザーによりプログラムされて指
定されたＭＭＲに入れられる。個々のマスク
パターンは、１つの受けオブジェクトが多数の
確認応答されたＣＡＬ／ＣＡＮフレームを選別
でき、したがってそのような低い優先度のフレ
ームに専用しなければならない受けオブジェク
トの数を最少にする。個々のメッセージ・オブ
ジェクトをマスクするこの性能は重要な新しい
ＣＡＬ特徴である。
ＣＡＬ： ＣＡＮアプリケーション層。ＣＡＮ物理層とＣＡ
Ｎフレームフォーマットを採用しながらＣＡＮの
性能を拡大する任意の高レベルプロトコルについ
ての一般的な用語であって、ＣＡＮ仕様に追従す
る。とくに、ＣＡＬによって、ＣＡＮフレーム固
有の８バイトデータ限度を超えるメッセージの伝
送を許す。これは各メッセージを多数のパケット
に分割することにより行われる。各パケットは、
最大８データバイトで構成されている単一のＣＡ
Ｎフレームとして送られる。そのようなメッセー
ジは「区分化された」メッセージまたは「断片化
された」メッセージと一般に呼ばれている。完全
な断片化されたメッセージを構成している個々
のＣＡＮフレームは切れ目のないやり方で通常
は送られず、それよりも、異なる、関連されて
いないメッセージの個々のＣＡＮフレームが、
図２に示されているように、ＣＡＮバス上でイ
ンタリーブされている。
断片化されたメッセージ：    データパケットに分割され、一連の個々のＣＡ
Ｎフレームを用いて送られる長いメッセージ（
８バイトを超える）。ＣＡＮフレームの列がそ
れらの長いメッセージを構成する特定のやり方
は特定のＣＡＬの状況の中で定められる。ＸＡ
−Ｃ３マイクロコントローラはそれらのパケット
をハードウェア内の元の長いメッセージに自動的
に再組み立てされ、完成された（再組み立てられ
た）メッセージを関連する受けメッセージ・オ
ブジェクトとして利用できることを報告する。
メッセージ・バッファ：      入来（受信）メッセージが保存される場所、
または出て行く（伝送）メッセージが段階
付けられる場所である、ＸＡデータメモリ内の
場所のブロック。
ＭＭＲ： Ｍｅｍｏｒｙ  Ｍａｐｐｅｄ  Ｒｅｇｉｓｔｅ
ｒ。ＸＡデータメモリスペースにマップされる
アドレスを有し、ＸＡプロセッサによりデータ
メモリとしてアクセスされるオンチップコマン
ド／制御／状態レジスタ。ＸＡ−Ｃ３マイクロ
コントローラで、８個１組の専用ＭＭＲが各メッ
セージ・オブジェクトに関連させられる。また、
全てのメッセージ・オブジェクトに適用される
グローバル・パラメータを制御するビットを有
するいくつかのＭＭＲｓがある。
【００１６】
ここで図３を参照する。この図にはＸＡ−Ｃ３マイクロコントローラ２０の高レベルブロック図が示されている。ＸＡ−Ｃ３マイクロコントローラ２０は、４４ピンＰＬＣＣパッケージまたは４４ピンＬＱＦＰパッケージに収められた単一集積回路（ＩＣ）チップ上に製造されている下記の機能ブロックを含んでいる。
【００１７】
ＸＡ  ＣＰＵコア２２。これは２４ビットプログラムおよびデータアドレス範囲を有する１６ビット完全スタチックＣＰＵとして現在実現されており、８０Ｃ５１アーキテクチャと上位互換性を持ち、かつ動作周波数が３０ＭＨｚまでである。
【００１８】
プログラムまたはコードメモリ２４。これは３２Ｋ  ＲＯＭ／ＥＰＲＯＭとして現在実現されており、内部プログラムバス２５を介してＸＡ  ＣＰＵコア２２に双方向結合されている。コードメモリ・スペースのマップが図４に示されている。
【００１９】
データＲＡＭ２６（内部メモリまたはスクラッチパッド・データメモリ）。これは全体のＸＡ−Ｃ３データメモリ・スペースの１０２４バイト部分として現在実現されており、内部データバス２７を介してＸＡ  ＣＰＵコア２２に双方向結合されている。
【００２０】
オンチップ、メッセージバッファＲＡＭまたはＸＲＡＭ２８。これは、ＣＡＮ／ＣＡＬ（オブジェクト伝送／受信）メッセージバッファの一部または全てを含むことができる全体のＸＡ−Ｃ３データメモリ・スペースの５１２バイト部分として現在実現されている。
【００２１】
メモリインタフェース（ＭＩＦ）ユニット。これは、外部アドレス／データバス３２、内部コアデータバス３４、および内部ＭＭＲバス３６を介して、ＳＲＡＭ、ＤＲＡＭ、フラッシュ、ＲＯＭ、およびＥＰＲＯＭといった特有のメモリ装置とのインタフェースを与える。
【００２２】
３２のＣＡＬ  ＤＭＡチャネルを提供するＤＭＡエンジン３８。
【００２３】
全体のＸＡ−Ｃ３データメモリ・スペースにマップされる複数のオンチップメモリ・マップされたレジスタ（ＭＭＲ）４０−−全体のＸＡ−Ｃ３データメモリ・スペースの４Ｋバイト部分がＭＭＲのために受けられる。それらのＭＭＲは、３２のＣＡＬメッセージ・オブジェクトに対応する、３２の（メッセージ）オブジェクトまたはアドレス・ポインタおよび３２のＩＤ選別器または一致ＩＤを含む。全てのＭＭＲの完全な一覧表が図５に示されている表で与えられている。
【００２４】
２．０ＢＣＡＮ／ＤＬＬコア４２。これはフィリップスＳＪＡ１０００ＣＡＮ２．０Ａ／Ｂ）データリンク層（Ｄａｔａ  Ｌｉｎｋ  Ｌａｙｅｒ）（ＣＤＬＬ）デバイスからのＣＡＮコントローラコア（以後「ＣＡＮコアブロック（ＣＡＮ  Ｃｏｒｅ  Ｂｌｏｃｋ）」と呼ぶ）である。
【００２５】
特殊機能レジスタ（Ｓｐｅｃｉａｌ  Ｆｕｎｃｔｉｏｎ  Ｒｅｇｉｓｔｅｒ）（ＳＦＲ）を介してＸＡ  ＣＰＵ２２に双方向に結合されている標準マイクロコントローラ周辺装置のアレイ。それらの標準マイクロコントローラ周辺装置はユニバーサル非同期受信機送信機（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ  Ｔｒａｎｓｍｉｔｔｅｒ）（ＵＡＲＴ）４９と、ＳＰＩ直列インタフェース（ポート）５１と、トグル出力性能を持つ３つの標準タイマ／カウンタ、すなわち、タイマブロック５３に含まれているタイマ０およびタイマ１と、タイマブロック５４に含まれているタイマ２と、見張りタイマ５５と、４つの８ビットＩ／Ｏポート、すなわち、ブロック６１に含まれているポート０〜３である。各ポートは４つのプログラム可能な出力構成を持つ。
【００２６】
ＤＭＡエンジン３８と、ＭＭＲｓ４０と、ＣＣＢ４２とはまとめてＣＡＮ／ＣＡＬモジュール７７を構成するものと考えることができ、以後の説明ではしばしばそう呼ぶことにする。更に、「メッセージ管理」機能と「メッセージ取扱い」機能を実行するＣＡＮ／ＣＡＬモジュール７７内の特定の論理素子のことを、以後の説明ではそれぞれ「メッセージ管理エンジン」および「メッセージハンドラ」としばしばそう呼ぶことにする。その他の用語については以後の説明ではそれらが現れた時に定義することにする。
【００２７】
前記のように、ＸＡ−Ｃ３マイクロコントローラ２０は、３２までの同時、インタリーブされた、マルチフレーム、断片化されたＣＡＬメッセージの透過、自動再アセンブリを含めて、ホストＣＰＵで実行されているソフトウエアで以前は実現されていただけであった（または全く実現されなかった）多数のメッセージ管理およびその他の機能を、ハードウェアで、自動的に実現する。ホストＣＰＵ（すなわち、ＸＡ  ＣＰＵコア２２）で実行するためにインストールされている各アプリケーションに対して、ユーザー（ソフトウエア・プログラマ）はＭＭＲとＳＦＲのあるものをＸＡ−Ｃ３機能仕様およびＸＡ−Ｃ３ＣＡＮトランスポート層コントローラユーザーマニュアルに述べられているやり方でプログラムすることにより、それらの機能を実行するためにハードウェアを設定しなければならない。本発明の理解に最も関連するレジスタのプログラミング手順を以下に説明し、その後で、ＸＡ−Ｃ３マイクロコントローラ２０がユーザーにより適切に設定された後でそのマイクロコントローラが動作している間に、ＣＡＮ／ＣＡＬモジュール７７により自動的に実行される種々のメッセージ管理およびその他の機能についての説明が続く。それらの部分に続いて、この出願が向けられている特定の発明のより詳細な説明を行う。
【００２８】
設定／プログラミング手順
最初の問題として、ユーザーは、図５に示されているように、全体のＸＡ−Ｃ３データメモリスペースをマップしなければならない。とくに、ある制約に従って、ユーザーはＸＲＡＭ２８のスタートアドレスすなわちベースアドレスと、ＭＭＲ４０のスタートアドレスすなわちベースアドレスとを指定しなければならない。ＭＭＲ４０のベースアドレスは特殊機能レジスタ（Ｓｐｅｃｉａｌ  Ｆｕｎｃｔｉｏｎ  Ｒｅｇｉｓｔｅｒｓ）（ＳＦＲ）ＭＲＢＬおよびＭＲＢＨを適切にプログラミングすることにより指定できる。ＸＲＡＭ２８のベースアドレスはＭＭＲが指示したＭＢＸＳＲおよびＸＲＡＭＢ（図４参照）を適切にプログラミングすることにより指定できる。
【００２９】
ユーザーは４Ｋバイトスペースを、ＭＭＲ４０のために保留されている、ＸＡアーキテクチャによりサポートされている全体の１６バイトデータメモリ・スペース内の、メリスペースの１番下（すなわち、最初の１Ｋバイト部分、スタートアドレス００００００ｈ）以外の全１６Ｍバイトデータメモリ内のどこにでも置くことができる。その１番下の場所で内部メモリすなわちスクラッチパッドメモリとして機能するオンチップデータＲＡＭ２６と衝突する。ＭＭＲスペースの４Ｋバイトは４Ｋ境界で常にスタートする。ＭＲＢＨとＭＲＢＬについてのリセット値はそれぞれ０ＦｈおよびＦ０ｈである。したがって、リセットの後では、ＭＭＲスペースはデータセグメント０Ｆｈの１番上の４Ｋバイトにマップされるが、ＭＭＲ４０へのアクセスは不能にされる。ＭＭＲｓスペースの最初の５１２バイト（オフセット０００ｈ〜１ＦＦｈ）が、図６に示されているように、オブジェクトｎ＝０−３１に対するメッセージ・オブジェクト・レジスタ（メッセージ・オブジェクト当り８）である。
【００３０】
ＸＲＡＭ２８のベースアドレスは、図７および図８に示されているように、ＭＭＲが指示したＭＢＸＳＲおよびＸＲＡＭＢの内容により決定される。前記のように、５１２バイトＸＲＡＭ２８は３２の（Ｒｘ／Ｔｘ）メッセージバッファ（メッセージ・オブジェクトｎ＝０〜３１に対応する）のいくつか（または全て）が存在する場所である。メッセージバッファはチップから最大８Ｋバイトまで拡張できる。このチップからの拡張性能は３２の２５６バイトメッセージバッファまで適応できる。全てのメッセージバッファ・アドレスの最も上の８ビットはＭＢＸＳＲの内容により形成されるので、ＸＲＡＭ２８と全部で３２のアドレスは同じ４Ｋバイトデータメモリ・セグメント内に常駐しなければならない。ＸＡ−Ｃ３コントローラ２０は外部メモリをアクセスするためにアドレス線Ａ０〜Ａ１９を提供するだけであるので、全ての外部メモリアドレスはアドレススペースの１番下の１Ｍバイト内になければならない。したがって、３２のメッセージバッファのいずれかがマップされる外部メモリがシステム内にあるとすると、３２のメッセージバッファの全てとＸＲＡＭ２８も同じ６４Ｋバイトセグメント内に完全にマップしなければならない。そのセグメントは１Ｍバイトアドレス限界の下になければならない。
【００３１】
メモリスペースがマップされた後で、ユーザーは３２の別々のメッセージ・オブジェクトまでセットアップすなわち定めることができる。各メッセージ・オブジェクトは送信（Ｔｘ）メッセージ・オブジェクトまたは受信（Ｒｘ）メッセージ・オブジェクトにできる。Ｒｘメッセージ・オブジェクトは独自のＣＡＮ  ＩＤに組合わせることができ、または、あるＩＤビットフィールドを共用する１組のＣＡＮ  ＩＤに組合わせることができる。前記のように、各メッセージ・オブジェクトはデータメモリスペースのそれ自身の留保されたブロック（２５６バイトまで）を有する。それはそのメッセージ・オブジェクトのメッセージバッファと呼ばれる。後で分かるように、各メッセージ・オブジェクトのメッセージバッファのサイズおよびベースアドレスはプログラム可能である。
【００３２】
前記したように、各メッセージ・オブジェクトはそのメッセージ・オブジェクトに専用される８つのＭＭＲ４０のセットに結び付けられる。それらのレジスタのいくつかはＴｘメッセージ・オブジェクトに対しては、Ｒｘメッセージ・オブジェクトに対して機能するのとは、異なって機能する。それら８つのＭＭＲ４０は「メッセージ・オブジェクト・レジスタ」と名付けられている（図４参照）。それら８つのＭＭＲ４０の名称は、
１．ＭｎＭＩＤＨ      メッセージｎ一致ＩＤ高
２．ＭｎＭＩＤＬ      メッセージｎ一致ＩＤ低
３．ＭｎＭＳＫＨ      メッセージｎマスク高
４．ＭｎＭＳＫＬ      メッセージｎマスク低
５．ＭｎＣＴＬ        メッセージｎ制御
６．ＭｎＢＬＲ        メッセージｎバッファ場所レジスタ
７．ＭｎＢＳＺ        メッセージｎバッファサイズ
８．ＭｎＦＣＲ        メッセージｎ断片カウント・レジスタ
である。ここにｎは０から３１までの範囲である（すなわち、３２の独立メッセージ・オブジェクトに対応する）。
【００３３】
一般に、ユーザーは、下で説明するように、メッセージ・オブジェクトに専用されている８つのＭＭＲのいくつかまたは全てを構成（プログラミング）することによりメッセージ・オブジェクトを定めるすなわち設定する。また、下で説明するように、ユーザーは大域ＧＣＴＬレジスタを構成（プログラム）せねばならない。それのビットが全てのメッセージ・オブジェクトに適用する大域パラメータを制御する。
【００３４】
特に、ユーザーは、受入れ濾波のために入来ＣＡＮフレームから取り出された選別器ＩＤと比較すべき各メッセージオブジェクトに対する一致ＩＤを指定できる。各メッセージオブジェクトｎに対する一致ＩＤは、そのメッセージオブジェクトｎに関連するＭｎＭＩＤＨレジスタおよびＭｎＭＩＤＬレジスタで指定される。ユーザーは、特定の各メッセージオブジェクトｎに関連するＭｎＭＩＤＨレジスタおよびＭｎＭＩＤＬレジスタの少なくとも一方の所望の（マスクすべき）ビット位置に論理「１」を書込むことにより、受入れ濾波に使用することを意図されていない任意の選別器ＩＤをオブジェクトごとにマスクできる。ユーザーは、設定時に、独自のメッセージバッファ場所を各メッセージオブジェクトｎに割り当てる責任を負う。とくに、ユーザーは、特定の各メッセージオブジェクトｎに関連するＭｎＢＬＲレジスタをプログラミングすることにより、そのメッセージオブジェクトｎに対してメッセージバッファのベースアドレスの最下位の１６ビットを指定できる。全てのメッセージオブジェクトに対するメッセージバッファが同じ６４Ｋバイトメモリセグメント内に常駐するように、全てのメッセージオブジェクトに対する、２４ビットアドレスの上位８ビットが、前記のように、ＭＢＸＳＲレジスタの内容により指定される。また、ユーザーは、設定時に、各メッセージオブジェクトｎにメッセージバッファのサイズを指定する責任を負う。とくに、ユーザーは、特定の各メッセージオブジェクトｎに関連するＭｎＢＳＺレジスタをプログラミングすることにより、そのメッセージオブジェクトｎに対してメッセージバッファのサイズを指定できる。各メッセージオブジェクトｎに対するメッセージバッファのトップ場所は、対応するＭｎＢＳＺレジスタにおいて指定されたメッセージバッファのサイズにより決定される。
【００３５】
特定の各メッセージオブジェクトｎを使用可能または使用不能にするため、そのメッセージオブジェクトｎをＴｘメッセージオブジェクトまたはＲｘメッセージオブジェクトとして定めるすなわち指示するため；そのメッセージオブジェクトｎのための断片化されているＲｘメッセージの自動ハードウェア組立て（すなわち、断片化されているメッセージの自動取扱い）を可能または不能にするため；そのメッセージオブジェクトｎのためのメッセージ終了割り込みの自動発生を可能または不能にするため；および遠方伝送要求（Ｒｅｍｏｔｅ  Ｔｒａｎｓｍｉｔ  Ｒｅｑｕｅｓｔ）（ＲＴＲ）取扱いのためにそのメッセージオブジェクトｎを可能にするため、または可能でなくするために、ユーザーはそのメッセージオブジェクトｎに関連するＭｎＣＴＬレジスタを構成（プログラム）できる。ＣＡＮｏｐｅｎシステムおよびＯＳＥＫシステムでは、ユーザーは各メッセージオブジェクトｎに関連するＭｎＦＣＲレジスタの初期化もしなければならない。
【００３６】
前記したように、設定時には、ユーザーは大域ＧＣＴＬレジスタを構成（プログラム）しなければならない。そのレジスタのビットは、全てのメッセージオブジェクトに適用される大域パラメータを制御する。とくに、使用されている高レベルＣＡＬプロトコル（もしあれば）（たとえば、ＤｅｖｉｃｅＮｅｔ、ＣＡＮｏｐｅｎ、またはＯＳＥＫ）を指定するため；ＣＡＮｏｐｅｎフレームの自動確認応答（ＣＡＮｏｐｅｎ自動確認応答）を可能または不能にするため；および２つの伝送（Ｔｘ）前調停スキーム／ポリシーのいずれを利用すべきかを指定する（すなわち、第２のタイ‐ブレーカ（ｔｉｅ‐ｂｒｅａｋｅｒ）として使用されているオブジェクト番号で、ＣＡＮ  ＩＤを基にしてＴｘ前調停、またはオブジェクト番号のみを基にしてＴｘ前調停）ために、ユーザーはＧＣＴＬレジスタを構成（プログラム）しなければならない。
【００３７】
受信メッセージオブジェクトおよび受信プロセス
受信中は（すなわち、入来ＣＡＮフレームがＸＡ−Ｃ３マイクロコントローラ２０により受信されている時）、ＣＡＮ／ＣＡＬモジュール７７は入来ＣＡＮフレームを一時的（１３バイト）バッファに保存し、完全な、誤りのないＣＡＮフレームが受信に成功したかどうかを判定する。誤りのないＣＡＮフレームが受信に成功したことが判定されたとすると、ＣＡＮ／ＣＡＬモジュール７７は、そのＣＡＮフレームを受けて保存するか、またはそのＣＡＮフレームを無視／捨てるかを判定するために、受入れ濾波を開始する。
【００３８】
受入れ濾波
一般に、前記したように、ＸＡ−Ｃ３コントローラ２０は、３２の独立メッセージオブジェクトに対して別々の一致ＩＤおよびマスクフィールドをオブジェクトごとにプログラムする能力をユーザーに提供するので、ＸＡ−Ｃ３コントローラ２０により実行される受入れ濾波プロセスは「一致およびマスク」技術として特徴付けることができる。この受入れ濾波プロセスの基本的な目的は、受信したＣＡＮフレームの選別器ＩＤ（各メッセージオブジェクトごとにマスクフィールドによりマスクされる「気にしない」ビットを除く）が、受信メッセージオブジェクトを指示された３２のメッセージオブジェクトのうちの可能状態にされた任意の１つの一致ＩＤに一致するかどうかを判定することである。受けたＣＡＮフレームと２つ以上のメッセージオブジェクトが一致したとすると、受けたＣＡＮフレームは最低のオブジェクト番号（ｎ）にメッセージオブジェクトを一致させたとみなされる。
【００３９】
受入れ濾波はＸＡ−Ｃ３コントローラ２０により次のようにして実行される：（１）  選別器ＩＤフィールドは入来する（受信した）ＣＡＮフレームから取り出される。これに関して、入来ビットストリームから組立てられる選別器ＩＤフィールドは標準ＣＡＮフレームと拡張されたＣＡＮフレームとで異なる。とくに、図９に示されているように、標準ＣＡＮフレームに対する選別器ＩＤフィールドは２８ビットである。この２８ビットは、受信したＣＡＮフレームのヘッダから取り出された１１ＣＡＮ  ＩＤビット＋受信したＣＡＮフレームの第１のデータバイトおよび第２のデータバイト（データバイト１とデータバイト２）からの２×８（１６）ビット＋ＩＤＥビットで構成されている。したがって、ユーザーは、標準ＣＡＮフレーム・メッセージオブジェクトのためのマスクフィールド（ＭｎＭＳＫＬレジスタ）内にＭｓｋ１ビットとＭｓｋ０ビットをセットすること、すなわち、「気にしない（ｄｏｎ’ｔ  ｃａｒｅ）」ことを求められる。また、標準ＣＡＮフレームを基にした多くのアプリケーションでは、データバイト１とデータバイト２または両方は受入れ濾波に関与しない。それらのアプリケーションでは、ユーザーは使用されていないデータバイトのマスクを外すこともしなければならない。ＩＤＥビットはマスクできない。図１０に示されているように、拡張されたＣＡＮフレームのための選別器ＩＤフィールドは３０ビットであって、入来ＣＡＮフレームのヘッダから取り出された２９ＣＡＮ  ＩＤビット＋ＩＤＥビットで構成されている。また、ＩＤＥビットはマスクできない。
【００４０】
（２）  その後で、受信したＣＡＮフレームの組立てられた選別器ＩＤフィールドは、現在可能状態にされている受信メッセージオブジェクトの全てに対するＭｎＭＩＤＨレジスタおよびＭｎＭＩＤＬレジスタ内の指定された対応する一致ＩＤ値と順次比較される。もちろん、特定のメッセージオブジェクトによりマスクされている選別器ＩＤフィールド内の任意のビットは比較に含まれない。すなわち、特定のメッセージオブジェクトに対するＭｎＭＳＫＨレジスタおよびＭｎＭＳＫＬレジスタ内の指定されたマスクフィールドのビット位置に「１」が存在するものとすると、その特定のメッセージオブジェクトに対する一致ＩＤフィールド内の対応するビット位置が「気にしない（ｄｏｎ’ｔ  ｃａｒｅ）」になる、すなわち、受信したＣＡＮフレームの選別器ＩＤの対応するビットとの一致を常に生ずる。
【００４１】
（３）  上の比較過程が２つ以上のメッセージオブジェクトとの一致が生じたとすると、受信したＣＡＮフレームは最低のオブジェクト番号（ｎ）を持つメッセージオブジェクトと一致したとみなされる。
【００４２】
メッセージの保存：
受入れ濾波を通る各入来（受けた）ＣＡＮフレームは、特定のＣＡＮフレームが一致したことが判明した受信メッセージオブジェクトのためのメッセージバッファに、ＤＭＡエンジン３８を介して自動的に保存される。実現の例では、全てのメッセージオブジェクトのためのメッセージバッファはＸＲＡＭ２８に含まれている。
【００４３】
メッセージの組立：
一般に、ＤＭＡエンジン３８は１３バイト・プリバッファから受けた各ＣＡＮフレームを適切なメッセージバッファ（たとえば、ＸＲＡＭ２８内の）へ、ＭＢＸＳＲレジスタの内容およびＭｎＢＬＲの内容により示されたアドレスから始まって、１度に１語ずつ、転送する。ＤＭＡエンジン３８がバイトまたはワードを転送するたびに、それはバスを要求しなければならない。これに関して、ＭＩＦ装置３０はＸＡ  ＣＰＵコア２２からのアクセスとＤＭＡエンジン３８からのアクセスとを調停する。一般に、バス調停は「交互」のやり方で行われる。ＤＭＡバスアクセスの後で、もし要求されたならば、ＸＡ  ＣＰＵコア２２はバスアクセスを認められる。（しかし、ＸＡ  ＣＰＵコア２２によるバーストアクセスはＤＭＡバスアクセスにより割り込むことはできない）。
【００４４】
ＭＩＦ装置３０によりアクセスがひとたび認められると、ＤＭＡエンジン３８は１３バイト・プレバッファからデータを適切なメッセージバッファ場所に書込む。ＤＭＡエンジン３８は、アクセスされたＣＡＮフレームの全てが転送されるまで、メッセージデータを適切なメッセージバッファ場所に順次書込むことをバスに要求し続ける。ＤＭＡエンジン３８が適切なメッセージバッファ場所への受けられたＣＡＮフレームの転送に成功した後では、メッセージバッファの内容は、ＣＡＮフレームが属しているメッセージが断片化されていない（単一フレーム）メッセージであるか、断片化されているメッセージであるかに依存する。各場合について以下に説明する。
【００４５】
断片化されていないメッセージ・アセンブリ：
自動的に断片化されたメッセージの取扱いが不能（ｄｉｓａｂｌｅ）にされている（可能にされていない−−すなわち、そのメッセージオブジェクトに対するＭｎＣＴＬレジスタ内のＦＲＡＧビットが「０」にセットされている）ように設定されているメッセージオブジェクトに対しては、受信したＣＡＮフレームの完全なＣＡＮ  ＩＤ（これは、受信したＣＡＮフレームが標準ＣＡＮフレームであるか、拡張されたＣＡＮフレームであるかに応じて１１ビットまたは２９ビット）が、一致を構成すると見なされていたメッセージオブジェクトに関連させられているメッセージバッファへの受信したＣＡＮフレームの転送にＤＭＡエンジン３８がひとたび成功すると、そのメッセージオブジェクトに関連させられているＭｎＭＩＤＨレジスタおよびＭｎＭＩＤＬレジスタに書込まれる。これによってユーザーアプリケーションが、ＣＡＮ  ＩＤの一部が受取り濾波のためにマスクされたとしても、一致をもたらした正確なＣＡＮ  ＩＤを見ることができるようにする。このメカニズムの結果として、入来ＣＡＮフレームが受信されるたびにＭｎＭＩＤＨレジスタおよびＭｎＭＩＤＬレジスタの内容を変更できる。入来ＣＡＮフレームを受信することができる前にそれは受入れ濾波を通らなければならないので、マスクされないビットのみが変化する。したがって、一致およびマスク受入れ濾波の基準は、適切なメッセージバッファへ転送されている受信された入来ＣＡＮフレームに応答して変更されるＭｎＭＩＤＨレジスタおよびＭｎＭＩＤＬレジスタの内容の結果として変更はしない。
【００４６】
断片化されたメッセージ・アセンブリ：
自動的に断片化されたメッセージの取扱いが可能（ｅｎａｂｌｅ）にされている（すなわち、そのメッセージオブジェクトに対するＭｎＣＴＬレジスタ内のＦＲＡＧビットが  「１」にセットされている）ように設定されたメッセージオブジェクトに対しては、１１または２９ビットＣＡＮ  ＩＤフィールドのマスキングは許されない。したがって、受信されたＣＡＮフレームのＣＡＮ  ＩＤはあいまいでなく知られており、一致を構成すると見なされていたメッセージオブジェクトに関連させられているＭｎＭＩＤＨレジスタおよびＭｎＭＩＤＬレジスタに含まれている。したがって、一致を構成すると見なされていたメッセージオブジェクトに関連させられているＭｎＭＩＤＨレジスタおよびＭｎＭＩＤＬレジスタに、受けられたＣＡＮフレームのＣＡＮ  ＩＤを書込む必要はない。
【００４７】
断片化されたメッセージの以後のＣＡＮフレームが受信されるにつれて、新しいデータバイトが、以前に受信されて保存されたデータバイトの終わりに付せらられる。このプロセスは、完全なマルチフレームメッセージが受信されて、適切なメッセージバッファに保存される。
【００４８】
ＣＡＬプロトコルＤｅｖｉｃｅＮｅｔ、ＣＡＮｏｐｅｎ、およびＯＳＥＫの下で、メッセージオブジェクトが可能状態にされた受信メッセージオブジェクトであり、かつそれの関連するＭｎＣＴＬレジスタのＦＲＡＧビットが「１」にセットされる（すなわち、その特定のメッセージオブジェクトに対して自動断片化されたメッセージアセンブリが可能状態にされる）とすると、その特定の受けメッセージオブジェクトに一致する受信された各ＣＡＮフレームの第１のデータバイト（データバイト１）が断片情報のみを符号化するために用いられ、したがって、その特定の受信メッセージオブジェクトのためのメッセージバッファに保存されない。したがって、そのような「ＦＲＡＧ可能にされた」受信メッセージオブジェクトに対するメッセージ保存は第２のデータバイト（データバイト２）で開始し、完全なマルチフレームメッセージが受信されて適切なメッセージバッファに保存されるまで、上述したようにして進行する。このメッセージ保存のフォーマットが図１１に示されている。メッセージハンドラー・ハードウェアは各ＣＡＮフレームのデータバイト１に含まれている断片化情報を使用してこのプロセスを容易にする。
【００４９】
ＣＡＮプロトコルの下で、メッセージオブジェクトが可能にされた受信メッセージオブジェクトであるとし、それに関連するＭｎＣＴＬレジスタのＦＲＡＧビットが「１」にセットされる（すなわち、その特定の受信メッセージオブジェクトに対して自動断片化されたメッセージアセンブリが可能にされた）とすると、その特定の受信メッセージオブジェクトに一致するＣＡＮフレームが、図１２に示されているフォーマットを用いてその特定の受信メッセージオブジェクトに対するメッセージバッファに順次保存される。
【００５０】
メッセージオブジェクトｎに関連するメッセージバッファにメッセージデータを書込む時は、ＤＭＡエンジン３８は、そのメッセージバッファのベースアドレス（そのメッセージオブジェクトｎに関連するＭｎＢＬＲレジスタで指定されている）から始まってアドレスを自動的に発生する。そのメッセージバッファのサイズはそのメッセージオブジェクトｎに関連するＭｎＢＳＺレジスタで指定されるので、ＤＭＡエンジン３８がそのメッセージバッファの１番上の場所に到達した時をＤＭＡエンジン３８は判定できる。ＤＭＡエンジン３８がそのメッセージバッファの１番上の場所に到達したこと、およびそのメッセージバッファに書込まれているメッセージがまだ完全には転送されていないことをＤＭＡエンジン３８が判定したとすると、ＤＭＡエンジン３８はそのメッセージバッファのベースアドレスから始まるアドレスの発生を再び行うことによりラップアラウンドする。これが起きるある時間前に、ユーザーアプリケーションがデータ喪失を阻止するために必要な動作を行うことができるように警報割り込みが発生される。
【００５１】
ＤＭＡエンジン３８により書込まれているメッセージバッファの現在のアドレス場所と、指示されているメッセージバッファ内で組立てられている各ＣＡＬメッセージのバイトの数とを見失わないようにする。ＣＡＬメッセージの「メッセージの終り」が解読された後で、メッセージハンドラは完全なＣＡＬメッセージとバイトカウントの指示されたメッセージバッファ内へのＤＭＡエンジン３８を介する移動を終了し、その後で、完全なメッセージが受けられたことを示すＸＡ  ＣＰＵコア２２への割り込みを発生する。
【００５２】
各ＣＡＮフレームのデータバイト１は断片化情報を含んでいるので、そのＣＡＮフレームに対する指示されたメッセージバッファには決して保存されない。したがって、各ＣＡＮフレームの７データバイトまでが保存される。全体のメッセージが保存された後で、指示されたメッセージバッファは受けられた実際の情報データ（断片化情報バイトを除く）の全てプラス、保存されている情報データバイトの総数を含む場所００におけるバイトカウントを含む。
【００５３】
断片化されたＯＳＥＫおよびＣＡＮｏｐｅｎメッセージの自動ハードウェア・アセンブリを呼出す時に追従せねばならない、いくつかの特定のユーザー設定手順／プログラミング手順があることに注目すべきである。それらの特定の手順およびその他の特定の手順は、親の仮出願シリアル番号６０／１５４，００２の一部であるＸＡ−Ｃ３  ＣＡＮトランスポート層コントローラユーザーマニュアルに見出すことができる。全ての目的のためにその出願の開示がここに完全に含まれている。
【００５４】
伝送メッセージオブジェクトおよび伝送プロセス
メッセージを伝送するために、ＸＡアプリケーション・プログラムはまず完全なメッセージを組立てて、適切な伝送メッセージオブジェクトｎのための指示されたメッセージバッファにそれを保存する。メッセージヘッダ（ＣＡＮ  ＩＤおよびフレーム情報）をその伝送メッセージオブジェクトｎに関連するＭｎＭＩＤＨレジスタ、ＭｎＭＩＤＬレジスタ、およびＭｎＭＳＫＨレジスタに書込まなければならない。それらのステップが終了した後では、ＸＡアプリケーション・プログラムはメッセージを伝送できる状態になる。伝送を開始するためには、その伝送メッセージオブジェクトｎに関連するＭｎＣＴＬレジスタのオブジェクト可能化ビット（ＯＢＪ ＥＮビット）を、ＣＡＮｏｐｅｎ内の自動確認応答フレームを伝送する時を除き、セットしなければならない。これにより、このメッセージ伝送可能状態が前調停プロセス（ｐｒｅ−ａｒｂｉｔｒａｔｉｏｎ  ｐｒｏｃｅｓｓ）に関与できるようにされる。これに関連して、２つ以上のメッセージが伝送可能状態になったとすると（すなわち、２つ以上の伝送メッセージオブジェクトが可能状態にされたとすると）、Ｔｘ前調停プロセスが実行されて、可能状態にされたどの伝送メッセージオブジェクトが伝送のために選択されるかを判定する。ユーザーがＧＣＴＬ内のＰｒｅ Ａｒｂビットの設定とクリヤとの間で選択できる２つのＴｘ前調停ポリシーがある。
【００５５】
完成されたメッセージの伝送に成功したとのメッセージ・ハンドラーにより行われた判定に応答してＴｘメッセージ終了割り込みが発生された後で、Ｔｘ前調停プロセスは「リセット」され、再び開始する。また、「獲得する（ｗｉｎｎｉｎｇ）」伝送メッセージオブジェクトがＣＡＮバスにおける調停をその次に失敗したとすると、Ｔｘ前調停プロセスはリセット」され、再開する。セットされているＯＢＪ ＥＮビットを有する伝送メッセージオブジェクトがただ１つあるならば、選択されたＴｘ前調停ポリシーとは無関係にそれが選択される。
【００５６】
可能状態にされた伝送メッセージオブジェクトが伝送のためにひとたび選択されると、ＤＭＡエンジン３８は伝送メッセージオブジェクトに関連するメッセージバッファからの伝送メッセージデータの検索を開始し、伝送のために、検索された伝送メッセージのＣＣＢ４２への転送を開始する。同じＤＭＡエンジンおよびアドレスポインタ論理が、前に説明したように、受取りメッセージのメッセージ保存のために用いられたようにして伝送メッセージのメッセージ検索のために用いられる。更に、メッセージバッファの場所およびサイズの情報が前に説明したのと同じようにして指定される。要するに、伝送メッセージが検索されると、それはＤＭＡエンジン３８によりＣＣＢ４２に順次書込まれる。このプロセス中に、ＤＭＡエンジン３８はバス要求を保ち、バスアクセスが許されると、ＤＭＡエンジン３８は伝送メッセージデータをメッセージバッファ内の、アドレスポインタ論理により現在指されている場所から順次読出し、ＤＭＡエンジン３８は検索された伝送メッセージデータをＣＣＢ４２に順次書込む。伝送するメッセージを用意している時は、ユーザーアプリケーションはＣＡＮ  ＩＤおよびフレーム情報フィールドを、指示されているメッセージバッファ内に書込まれている伝送メッセージデータ内に含んではならないことに注目すべきである。その理由は、伝送（Ｔｘ）論理はこの情報を適切なＭｎＭＩＤＨレジスタ、ＭｎＭＩＤＬレジスタ、およびＭｎＭＳＫＨレジスタから直接検索するからである。
【００５７】
ＸＡ−Ｃ３マイクロコントローラ２０は断片化されたメッセージの伝送をハードウェアでは取り扱わない。断片化されたメッセージの各ＣＡＮフレームを適切なメッセージバッファに書込むこと、関連する伝送メッセージオブジェクトを伝送可能にすること、およびその断片化されたメッセージの次のＣＡＮフレームを適切なメッセージバッファに書込むことを待つことはユーザーの責任である。したがって、ユーザーアプリケーションは、マルチフレーム、断片化された伝送メッセージの全ての伝送が成功するまで、多数のＣＡＮフレームを１度に１つずつ伝送しなければならない。しかし、順次大きくなるオブジェクト番号を持ち、かつ同一に構成されたＣＡＮ  ＩＤを持つ多数の伝送メッセージオブジェクトを使用することにより、断片化された伝送メッセージのいくつかのＣＡＮフレームを待ち行列に並べて可能状態にし、その後で順次伝送できる。
【００５８】
メッセージを伝送する際にデータが破損を避けるために、３つの可能なやり方がある。
１．伝送メッセージのためにＴｘメッセージ終了割り込みが可能にされたとす
ると、ユーザーアプリケーションは次の伝送メッセージを、Ｔｘメッセー
ジ終了割り込みを受けた時に、指示された伝送メッセージバッファに次の
伝送メッセージを書込む。割り込みフラッグがひとたびセットされると、
係属中の伝送メッセージが既に伝送されたことが確実に知られる。
２．関連する伝送メッセージオブジェクトのＭｎＣＴＬレジスタのＯＢＪ Ｅ
Ｎビットが、関連する伝送メッセージバッファ書込み前にクリヤするまで
待つ。これは関連する伝送メッセージオブジェクトのＭｎＣＴＬレジスタ
のＯＢＪ ＥＮビットをポーリングすることにより行うことができる。
３．伝送メッセージオブジェクトがＴｘ前調停に依然としてある間に関連する
伝送メッセージオブジェクトのＭｎＣＴＬレジスタのＯＢＪ ＥＮビット
をクリヤする。
【００５９】
上の初めの２つの場合では、次の伝送メッセージが伝送される前に係属中の伝送メッセージは完全に伝送される。第３の場合、伝送メッセージは伝送されない。代わりに新しい内容を有する伝送メッセージがＴｘ前調停に入る。
【００６０】
伝送されているメッセージの変造を防止する付加された構造がある。とくに、伝送メッセージオブジェクトに対して伝送が続行されているならば、ユーザーはその特定の関連する伝送メッセージオブジェクトのＭｎＣＴＬレジスタのＯＢＪ ＥＮビットをクリヤすることを阻止される。
【００６１】
ＣＡＮ／ＣＡＬに関連する割り込み
ＸＡ−Ｃ３マイクロコントローラ２０のＣＡＮ／ＣＡＬは、ＸＡ  ＣＰＵコア２２に対する下記の５種類の事象割り込みを発生するために、現在構成される。
１．  Ｒｘメッセージ完了
２．  Ｔｘメッセージ完了
３．  Ｒｘバッファ一杯
４．  メッセージ誤り
５．  フレーム誤り
【００６２】
単一フレームメッセージの場合には、単一フレームの終りに「メッセージ完了」状態が起きる。マルチフレーム（断片化された）メッセージの場合には、最後のフレームが受けられて、保存された後で、「メッセージ完了」状態が起きる。ＸＡ−Ｃ３マイクロコントローラ２０ハードウェアは伝送メッセージのための断片化を認識せずまたは取り扱わないので、伝送に成功した各フレームの終りにＴｘメッセージ完了状態が常に発生される。
【００６３】
先に説明したように、メッセージ完了状態が割り込みを発生すべきか、割り込みを発生することなく「メッセージ完了状態フラッグ」をまさに設定すべきかを指示する各メッセージオブジェクトに関連する制御ビットがある。これは各メッセージオブジェクトｎに関連するＭｎＣＴＬレジスタ内のＩＮＴ ＥＮビットである。
【００６４】
２つの１６ビットＭＭＲ４０、ＭＣＰＬＨとＭＣＰＬＬ、がある。それらは全部で３２個のメッセージオブジェクトに対するメッセージ完了状態フラッグを含む。特定のメッセージオブジェクトに対してメッセージ完了（ＴｘまたはＲｘ）状態が検出されると、ＭＣＰＬＨまたはＭＣＰＬＬレジスタ内の対応するビットがセットされる。これは、ＩＮＴ ＥＮビットがその特定のメッセージオブジェクト（それの関連するＭｎＣＴＬレジスタ内の）に対してセットされるかどうか、またはメッセージ完了状態フラッグが他の任意のメッセージオブジェクトに対してすでにセットされていたかどうかにかかわらず起きる。
【００６５】
それらの３２個のメッセージ完了状態フラッグに加えて、ＮＭＲ４０が指示したＣＡＮＩＮＴＦＬＧのビット［１］および［０］にそれぞれ対応するＴｘメッセージ完了割り込みフラッグおよびＲｘメッセージ完了割り込みフラッグがある。ＣＡＮＩＮＴＦＬＧは実際の事象割り込み要求をＸＡ  ＣＰＵコア２２に対して発生する。メッセージ完了状態フラッグがセットされたと同じ時刻に、メッセージの終わり状態が生ずると、ＩＮＴ ＥＮ＝１であるか、および割り込みが既にセットされておらずに係属中であるならば、関連するメッセージオブジェクトに対して適切なＴｘまたはＲｘメッセージ完了割り込みフリップフロップがセットされる。
【００６６】
割り込みおよび関連するレジスタの発生に関するそれ以上の詳細は、ＸＡ−Ｃ３機能仕様およびＸＡ−Ｃ３ＣＡＮトランスポート層コントローラユーザーマニュアルに見ることができる。両方とも親の仮出願シリアル番号６０／１５４，０２２の一部であり、全ての目的のためにその出願の開示がここに完全に含まれている。
【００６７】
本発明
幾つかのＣＡＬプロトコル、とりわけ、ＣＡＮｏｐｅｎプロトコルは、ＣＡＮｏｐｅｎプロトコ ルがマルチフレームフラグメントメッセージ（multi-frame fragmented message）をサポートするのにもかかわらず、受信ＣＡＮ装置に対して、受信ＣＡＮ装置によって受信される各ＣＡＮｏｐｅｎフレームに応答して、アクノレッジメントを送信することを要求する。要求されたアクノレッジメントの送信のためにマルチフレームフラグメントＣＡＮｏｐｅｎメッセージの各ＣＡＮｏｐｅｎフレームが受信される度に、ＸＡ−Ｃ３  ＣＰＵコア２２（以降、しばしば、単に、"プロセッサコア"と呼ばれる）に対して割り込みを発行することは、ＸＡ−Ｃ３マイクロコントローラ２０によって提供されるマルチフレームフラグメントメッセージの自動ハードウエアアセンブリによってもたらせられる大きな利点を著しく害なう。この点を改善するために、本発明によるＸＡ−Ｃ３マイクロコントローラ２０は、ハードウエアが、ＣＡＮｏｐｅｎプロトコルの下で要求されるアクノレッジメントを、プロセッサコア２２に割り込みむことなく、また、大幅なダイコストの増加を伴うことなく、自動的に発行できるように構成される。ここで、このいわゆる"自動（"automatic"あるいは"auto"）アクノレッジメント"機能は、断片化（フラグメント化）されたメッセージとこのアクノレッジメントの発行を要求する上位ＣＡＬプロトコル、例えば、ＣＡＮｏｐｅｎに対してのみ有効であり、単一のＣＡＮフレーム内に一つの完全な形で含まれるメッセージに対しては、いずれにしてもプロセッサコア２２に対してメッセージ終了割り込み（End-of-Message interrupts）が発行されるために、ハードウエアにアクノレッジメントを自動的に発行させても、特段の価値あるいは利益はもたらせられないことに注意する。
【００６８】
概要的には、自動アクノレッジメント機能を実現するための基本スキームは、以下のような過程を伴う。最初に、ソフトウエア（つまり、プロセッサコア２２上でランするアプリケーション）によって、アクノレッジメントの発行を要求される各受信メッセージオブジェクト（Receive Message Object）に対応する専用の"応答"メッセージオブジェクト（"Response "Message Object）が設定される。これら各"応答"メッセージオブジェクトは、伝送メッセージオブジェクト（Transmit Message Object）として指定され、それと関連する受信メッセージオブジェクトのオブジェクト番号に直ちに後のオブジェクト番号を割当てられる。例えば、メッセージオブジェクトｎ＝１３が、アクノレッジメントの発行を要求するフラグメントメッセージに対する受信メッセージオブジェクトである場合、ソフトウエアは、メッセージオブジェクトｎ＝１４を、メッセージオブジェクトｎ＝１３に対する必要な応答コードを含む伝送メッセージオブジェクトとして設定する。
【００６９】
より詳細には、自動アクノレッジメント機能は、ＸＡ−Ｃ３マイクロコントローラ２０内に以下のようなやり方にて実装される。ＣＡＬプロトコルが、グローバルコントロール(GCTL)レジスタ内で（[Prtcl1およびPrtcl0]ビットを00にセットすることで）ＣＡＮｏｐｅｎに指定され、自動アクノレッジメント機能がユーザ（アプリケーション）によってグローバルコントロール（GCTL）レジスタ内のAuto_Ackビットを'１'にセットすることで起動されたものと想定する。
【００７０】
さらに、起動された受信メッセージオブジェクトｎは、フラグメントメッセージの自動ハードウエアアセンブリが起動された状態に設定されるものと想定する（つまり、この受信メッセージオブジェクトｎと関連するＭｎＣＴＬレジスタ内のＦＲＡＧビットが'１'に設定されているものと想定する）。メッセージオブジェクトｎ＋１は、このメッセージオブジェクトｎ＋１と関連するＭｎ＋１  ＣＴＬレジスタ内のＯＢＪ  ＥＮビットは'１'にセットされてない、このＯＢＪ  ＥＮビットは'０'にクリアされた、つまり、不能にされた状態にて設定される。ユーザー（ソフトウエア）は、適当な"アクノレッジメントバイト（Acknowledgment Byte）"を、ＣＡＬｏｐｅｎプロトコル仕様にて定義されるやり方にて、このメッセージオブジェクトｎ＋１と関連するメッセージバッファのバイトオフセット０内に格納する。ビット位置［４］は、ＣＡＮ/ＣＡＬモジュール７７は、以下に説明するように、入りＣＡＮｏｐｅｎフレームからのトグルビット値を自動的に出自動アクノレッジフレームのトグルビット位置［４］内に挿入するために、"don't care"に設定される。
【００７１】
自動アクノレッジ機能が起動されており、入りＣＡＮｏｐｅｎフレームが正常に受信され、受入れ濾波（Acceptance Filtering）過程に通され、起動された受信メッセージオブジェクトｎと一致するとみなされるものと想定する。上述のような設定（想定）においては、以下のステップが、ＣＡＮ/ＣＡＬモジュールによって、ハードウエアにて、自動的に実現される。
【００７２】
より具体的には、ＣＡＮ/ＣＡＬモジュール７７は、一致したメッセージオブジェクト（Message Object）ｎ＋１と関連するＭｎ＋１  ＣＴＬレジスタ内のＯＢＪ  ＥＮおよびＴｘビットを自動的に'１'にセットし、これによって、このメッセージオブジェクト（Message Object）を伝送メッセージオブジェクト（Transmit Message Object）として起動する。これによって、この伝送メッセージオブジェクトｎ＋１が起動され、これが上述の伝送前調停（Transmit Pre-Arbitration）過程内に含められる。その後、順番が来ると直ちに、この伝送メッセージオブジェクトｎ＋１と関連するメッセージバッファ内に格納されたアクノレッジメントフレームが自動的に検索・送信される。上述のように、ＣＡＮｏｐｅｎプロトコルは、入りＣＡＮｏｐｅｎフレームの識別子欄内に含まれる"トグルビット（toggle bit）"と呼ばれる制御ビットの状態がアクノレッジメントフレーム内に反映されることを要求する。これを達成するために、ＸＡ−Ｃ３マイクロコントローラ２２のＣＡＮ/ＣＡＬモジュール７７は、入りＣＡＮｏｐｅｎフレームのトグルビットをこの伝送メッセージオブジェクトｎ＋１と関連するメッセージバッファ内に格納されたアクノレッジメントフレームの対応するビット位置［４］に、これが送信（Ｔｘ）のために起動される前に、自動的にコピーする論理を含む。
【００７３】
上では、本発明が一つの特定の好ましい実施例／実現の文脈内で説明されたが、当業者においてはここに開示された基本的な発明の概念の多くの変形、修正、および／あるいは代替の形態／実現が可能であると考えられ、これらもクレームによって定義される本発明の精神および範囲に入るものである。
【図面の簡単な説明】
【図１】  標準ＣＡＮフレームのフォーマットと拡張ＣＡＮフレームのフォーマットを示す図。
【図２】  種々の関連していないメッセージのＣＡＮデータフレームのインターリーブを示す図。
【図３】  ＸＡ−Ｃ３マイクロコントローラの高レベル機能ブロック図。
【図４】  ＸＡ−Ｃ３マイクロコントローラにより提供されたメモリマップされたレジスタ（ＭＭＲｓ）の全てを示す図。
【図５】  ＸＡ−Ｃ３マイクロコントローラのデータメモリスペースの全体のマッピングを示す図。
【図６】  ＸＡ−Ｃ３マイクロコントローラのデータメモリスペースの全体に含まれているＭＭＲスペースの全体に含まれているＭＭＲスペースを示す図。
【図７】  オブジェクトｎメッセージバッファがオフチップデータメモリにマップされている、ＸＡ−Ｃ３マイクロコントローラのオンチップＸＲＡＭのベースアドレスの形成を示す図。
【図８】  オブジェクトｎメッセージバッファがオンチップＸＲＡＭにマップされている、ＸＡ−Ｃ３マイクロコントローラのオンチップＸＲＡＭのベースアドレスの形成を示す図。
【図９】  標準ＣＡＮフレームのための選別器ＩＤフィールドと、対応する一致ＩＤおよびマスクフィールドを示す図。
【図１０】  拡張ＣＡＮフレームのための選別器ＩＤフィールドと、対応する一致ＩＤおよびマスクフィールドを示す図。
【図１１】  断片化されたＣＡＬメッセージのためのメッセージ保存フォーマットを示す図。
【図１２】  断片化されたＣＡＬメッセージのためのメッセージ保存フォーマットを示す図。
【符号の説明】
２０  ＣＮＮ装置
２２  プロセッサコア
２８  メッセージバッファ
３８  ＤＭＡエンジン
４０  ＭＭＲ
【図１】
0004722357.tif 000002
【図２】
0004722357.tif 000003
【図３】
0004722357.tif 000004
【図４】
0004722357.tif 000005
【図５】
0004722357.tif 000006
【図６】
0004722357.tif 000007
【図７】
0004722357.tif 000008
【図８】
0004722357.tif 000009
【図９】
0004722357.tif 000010
【図１０】
0004722357.tif 000011
【図１１】
0004722357.tif 000012
【図１２】
0004722357.tif 000013