(57)【要約】【課題】              ＣＡＮモジュールに履歴機能を実装する。【解決手段】          ＣＡＮモジュールは、送信するメッセージ及び受信したメッセージを複数バッファ可能なメッセージバッファ３と、メッセージバッファ３上の更新が行われたバッファの位置を示す履歴情報を所定回数分格納可能なリングバッファ６と、メッセージバッファ３上のメッセージの管理を行うメッセージハンドリング部２とを備える。メッセージハンドリング部２は、任意のバッファの更新を行った際にその位置情報を、リングバッファの次書き込み位置に記録するとともに、ＣＰＵからのリードアクセスに応じて、リングバッファのうちＣＰＵから未参照の履歴情報の位置を示す未読ポインタを逐次更新する。リングバッファの直近書き込み位置と未読ポインタは、ＣＰＵから参照可能とし、最新メッセージや最古の未読メッセージを読み出す際に用いられる。【選択図】            図２
2006222627.tif 000002
【特許請求の範囲】
【請求項１】
マルチマスタ方式のネットワークに接続され、メッセージバッファ上の更新メッセージの位置を示す履歴情報を所定回数分格納可能な履歴バッファを有するデータ処理モジュールにおける送受信メッセージの管理方法であって、
前記データ処理モジュールのメッセージハンドリング部が、メッセージバッファ上の更新が行われたバッファの位置情報を、前記履歴バッファの次書き込み位置に格納する工程と、
前記メッセージハンドリング部が、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からのリードアクセスに応じて、前記履歴バッファのうちＣＰＵから未参照の履歴情報の位置を示す未読ポインタを逐次更新する工程と、を含み、
少なくとも前記履歴バッファの直近書き込み位置と、前記未読ポインタを、前記ＣＰＵから参照可能に保持すること、
を特徴とするデータ処理モジュールにおける送受信メッセージの管理方法。
【請求項２】
マルチマスタ方式のネットワークに接続され、メッセージバッファ上の更新メッセージの位置を示す履歴情報を所定回数分格納可能なリングバッファを有するデータ処理モジュールにおける送受信メッセージの管理方法であって、
前記データ処理モジュールのメッセージハンドリング部が、メッセージバッファ上の更新が行われたバッファの位置情報を、前記リングバッファの次書き込み位置に格納する工程と、
前記メッセージハンドリング部が、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からのリードアクセスに応じて、前記リングバッファのうちＣＰＵから未参照の履歴情報の位置を示す未読ポインタを逐次更新する工程と、を含み、
少なくとも前記リングバッファの直近書き込み位置と、前記未読ポインタを、前記ＣＰＵから参照可能に保持すること、
を特徴とするデータ処理モジュールにおける送受信メッセージの管理方法。
【請求項３】
前記メッセージハンドリング部は、前記リングバッファへの書き込み位置より一つ前の位置を示す最新履歴情報ポインタを有し、
前記最新履歴情報ポインタを前記ＣＰＵから参照可能としたこと、
を特徴とする請求項２に記載のデータ処理モジュールにおける送受信メッセージの管理方法。
【請求項４】
前記メッセージハンドリング部は、前記リングバッファへの履歴情報の格納有無を示す履歴無効フラグを有し、
前記メッセージハンドリング部は、前記リングバッファの次書き込み位置と未読ポインタが一致する初期状態で前記履歴無効フラグをオン状態に設定し、前記リングバッファの次書き込み位置と未読ポインタが不一致となった段階で前記履歴無効フラグをオフ状態に設定し、
前記ＣＰＵは、前記履歴無効フラグを参照して前記リングバッファへの履歴情報の格納有無を判定すること、
を特徴とする請求項２又は３に記載のデータ処理モジュールにおける送受信メッセージの管理方法。
【請求項５】
前記メッセージハンドリング部は、前記リングバッファが空き領域が無くなったことを示すオーバーフローフラグを有し、
前記メッセージハンドリング部は、前記リングバッファの次書き込み位置と未読ポインタより一つ前の位置が一致する状態で前記オーバーフローフラグをオン状態に設定し、
前記オーバーフローフラグがオン状態である場合は、前記メッセージハンドリング部は、前記リングバッファの直近書き込み位置に、爾後の履歴情報を上書きすること、
を特徴とする請求項２乃至４いずれか一に記載のデータ処理モジュールにおける送受信メッセージの管理方法。
【請求項６】
複数のバッファによって構成されるメッセージバッファと、
メッセージを受信したとき前記受信メッセージの識別子（ＩＤ）に基づき前記メッセージバッファ内を走査し、前記受信メッセージを記憶するバッファを前記複数のバッファの中から選択するメッセージハンドリング部と、
前記複数のバッファのうち、受信メッセージが記憶されているバッファの番地を保持し、前記受信メッセージが受信された順番を管理する履歴バッファとを備えること、
を特徴とするデータ処理モジュール。
【請求項７】
前記履歴バッファに管理された前記受信メッセージの受信された順番に基づいて前記メッセージバッファからデータを読み出すデータ処理回路を備えること、
を特徴とする請求項６に記載のデータ処理モジュール。
【請求項８】
前記履歴バッファに記憶された受信メッセージを管理するための最古のバッファを示す最古履歴情報ポインタと、
前記メッセージハンドリング部によって選択されたバッファの番地を記憶する位置を示す書き込みポインタと、を備えること、
を特徴とする請求項６又は７に記載のデータ処理モジュール。
【請求項９】
前記履歴バッファの空き容量が所定値以下になった場合に、前記書き込みポインタの番地を所定番地戻すことによって、前記履歴バッファに書き込まれた順番を先頭から所定順位まで保護するデータ保護回路を備えること、
を特徴とする請求項８に記載のデータ処理モジュール。
【請求項１０】
前記履歴バッファは、リングバッファによって構成されていること、
を特徴とする請求項９に記載のデータ処理モジュール。
【請求項１１】
マルチマスタ方式のネットワークに接続されるデータ処理モジュールにおいて、
送信するメッセージ及び受信したメッセージを複数バッファ可能なメッセージバッファと、
前記メッセージバッファ上の更新が行われたバッファの位置を示す履歴情報を所定回数分格納可能な履歴バッファと、
前記メッセージバッファ上のメッセージの管理を行うメッセージハンドリング部とを備え、
前記メッセージハンドリング部は、前記履歴バッファ上の前記履歴情報の書き込み位置を示す書き込み位置ポインタと、
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からのリードアクセスに応じて、前記履歴バッファのうちＣＰＵから未参照の履歴情報の位置を示す未読ポインタと、を備え、
少なくとも前記履歴バッファの直近書き込み位置と、前記未読ポインタを、前記ＣＰＵから参照可能に保持すること、
を特徴とするデータ処理モジュール。
【請求項１２】
請求項１１に記載のデータ処理モジュールにおいて、
少なくとも前記履歴バッファ、書き込み位置ポインタ、未読ポインタを送信メッセージ管理用と受信メッセージ管理用にそれそれ個別に備えていること、
を特徴とするデータ処理モジュール。
【請求項１３】
送信するメッセージ及び受信したメッセージを複数バッファ可能なメッセージバッファと、
前記メッセージバッファ上の更新が行われたバッファの位置を示す履歴情報を所定回数分格納可能なリングバッファと、
前記メッセージバッファ上のメッセージの管理を行うメッセージハンドリング部とを備え、
前記メッセージハンドリング部は、前記リングバッファ上の前記履歴情報の書き込み位置を示す書き込み位置ポインタと、
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からのリードアクセスに応じて、前記リングバッファのうちＣＰＵから未参照の履歴情報の位置を示す未読ポインタと、を備え、
少なくとも前記リングバッファの直近書き込み位置と、前記未読ポインタを、前記ＣＰＵから参照可能に保持すること、
を特徴とするデータ処理モジュール。
【請求項１４】
請求項１３に記載のデータ処理モジュールにおいて、更に、
前記リングバッファへの書き込み位置より一つ前の位置を示す最新履歴情報ポインタを有し、
前記最新履歴情報ポインタを前記ＣＰＵから参照可能としたこと、
を特徴とするデータ処理モジュール。
【請求項１５】
請求項１３又は１４に記載のデータ処理モジュールにおいて、更に、
前記メッセージハンドリング部は、前記リングバッファの次書き込み位置と未読ポインタが一致する初期状態でオン状態に設定され、前記リングバッファの次書き込み位置と未読ポインタが不一致となった段階でオフ状態に設定される履歴無効フラグを有し、
前記ＣＰＵは、前記履歴無効フラグを参照して前記リングバッファへの履歴情報の格納有無を判定すること、
を特徴とするデータ処理モジュール。
【請求項１６】
請求項１３乃至１５いずれか一に記載のデータ処理モジュールにおいて、更に、
前記メッセージハンドリング部は、前記リングバッファの次書き込み位置と未読ポインタより一つ前の位置が一致する状態でオン状態に設定されるオーバーフローフラグを有し、
前記メッセージハンドリング部は、
前記オーバーフローフラグがオン状態である場合は、前記リングバッファの直近書き込み位置に爾後の履歴情報を上書きすること、
を特徴とするデータ処理モジュール。
【請求項１７】
請求項１３乃至１６いずれか一に記載のデータ処理モジュールにおいて、
少なくとも前記リングバッファ、書き込み位置ポインタ、未読ポインタ、履歴無効フラグ、オーバーフローフラグを、送信メッセージ管理用と受信メッセージ管理用にそれぞれ個別に備えていること、
を特徴とするデータ処理モジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理モジュール及びその送受信メッセージの管理方法に関する。
【背景技術】
【０００２】
近年、通信プロトコルとして、マルチマスタの通信プロトコルが注目されている。マルチマスタのプロトコルでは、バスが解放されているとき、バスに接続されている複数の通信ノードのいずれもがデータをバス上に送信することができ、システムの柔軟性が高い等の特徴を持っている。このようなマルチマスタの通信プロトコルとして、自動車内のＥＣＵ（電子制御ユニット）間のシリアル通信プロトコルとして用いられている、特開昭６１−１９５４５３号公報に記載されたマルチマスタのＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ、以下、ＣＡＮという）プロトコル（ＩＳＯ１１８９８、ＩＳＯ１１５１９シリーズで規格化）が知られている。このようなマルチマスタの通信プロトコルは、通信ノードの増減が簡単にできる等システムの柔軟性が高いため、上記した自動車分野に止まらず、ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）、船舶、医療機器といった分野の通信プロトコルとしても有望視されている。
【０００３】
図１２は、通信ノードとしてのＣＡＮの概略構成を表した図である。サブネットワークを構成するＣＡＮバス（図示せず）に接続されるＣＡＮトランシーバ６０を有するＣＡＮモジュール１１、１ｎ、１６を接続することが可能となっており、各ＣＡＮモジュール１１、１ｎ、１６がＣＰＵ  Ｉ／Ｆ（インタフェース）４０を介して、メッセージを送受信することが可能となっている。また、図１２のＣＡＮモジュール１９は、メッセージの受信のみを行うことが可能となっている。
【特許文献１】特開昭６１−１９５４５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＣＡＮプロトコルでは、特許文献１の３０頁左下欄５）−１．１．４送信されるべきであるメッセージの待ち行列、及び同文献３５頁左下欄５）−３．６  探索プロセス以下に示されたとおりメッセージ送信に先だって、送信要求ビットがセットされたバッファの中から送信候補メッセージを決定する送信サーチプロセスが行われる。また、メッセージを受信した場合も、特許文献１の３０頁左下欄５）−１．１．５受信メッセージの待ち行列及び同文献３５頁右上欄５）−３  データ交換ＤＰＲＡＭ以下に示されたとおり受信メッセージの識別子がメッセージバッファ（同公報でいうＤＰＲＡＭ）に格納されているかどうか、を判定するため受信サーチプロセスが行われ、メッセージバッファに記憶する場合は割り込み要求ビットがセットされる。
【０００５】
図１３は、ＣＡＮモジュールに備えられるメッセージバッファの構成を表した図であり、図１４は、メッセージを受信した際の受信割り込み発生以降の動作を表したフローチャートである。従来は、図１４に示されたとおり、受信割り込みの発生後（ステップＳ１０１）、ＣＰＵがすべての受信バッファにリードアクセスし（ステップＳ１０２）、各バッファが更新されたか否かを表すＤＮビット（データ更新ビット）の状態を確認して受信バッファの特定を行っていた（ステップＳ１０３）。また、送信プロセスも同様であり、すべてのバッファの探索を行って、ＴＲＱビット（送信要求ビット）の状態を確認して送信したバッファの特定を行っていた。
【０００６】
図１５上段の（Ａ）は、ＣＡＮによる受信書き込み（Ｒｘ）終了後の受信完了割込信号にＣＰＵが追従できている場合のタイミングチャートであり、同図下段の（Ｂ）は、ＣＡＮによる受信書き込み（Ｒｘ）終了後の受信完了割込信号にＣＰＵが追従できなくなった状態のタイミングチャートである。同図（Ａ）に表されたように、従来の方式は、その都度すべてのバッファをリードする必要があるため、バッファの特定に時間がかかり、ＣＰＵへの負荷も高い。更に同図（Ｂ）に表されたように、受信が先行しバッファの特定が遅れた場合には、複数のバッファでＤＮビット＝１が検知され、送受信された順番がＣＰＵからわからなくなってしまうという問題点があった。
【０００７】
また、ＣＡＮでは、予め送信／受信サーチを行ってからメッセージバッファの位置を指定しメッセージのリード／ライトを行っており、メッセージバッファ上のバッファ位置から、送受信が行われた順序を特定することができないという事情がある。また、上記した問題点は、送信のメッセージの順序を把握する際にも生じるものであり、複数の送信バッファないし受信バッファを備え、ダイレクトに位置を指定してリード／ライトを行う構成であれば、少なからず発生するものであるといえる。
【課題を解決するための手段】
【０００８】
本発明の第１の視点によれば、上述したＣＡＮに代表されるマルチマスタ方式のネットワークに接続されたデータ処理モジュールに、メッセージバッファ上の更新メッセージの位置を示す履歴情報を所定回数分格納可能な履歴バッファを備えて、メッセージの送受信順序を特定可能な送受信メッセージの管理方法が提供される。この方法によれば、まず、データ処理モジュール（ＣＡＮモジュール）のメッセージハンドリング部は、まず任意のメッセージバッファの任意のバッファの更新を行った際に、該更新が行われたバッファの位置情報を、前記履歴バッファの次書き込み位置に格納（記録）する。また、前記メッセージハンドリング部は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からのリードアクセスに応じて、前記履歴バッファのうちＣＰＵから未参照の履歴情報の位置を示す未読ポインタを逐次更新する。前記履歴バッファの直近書き込み位置と未読ポインタは、ＣＰＵから参照可能であり、それぞれ、最新メッセージや最古の未読メッセージの格納位置を特定することが可能となる。
【０００９】
また、本発明の第２の視点によれば、上述の送受信メッセージの管理方法を実施するために適した構成、回路構成を備えたデータ処理モジュール（ＣＡＮモジュール）が提供される。即ち、このデータ処理モジュール（ＣＡＮモジュール）は、複数のバッファによって構成されて、送信するメッセージ及び受信したメッセージを複数バッファ可能なメッセージバッファと、少なくとも、受信メッセージが記憶されているバッファの番地と前記受信メッセージが受信された順番を保持・管理する履歴バッファと、メッセージバッファ上のメッセージの管理を行うメッセージハンドリング部とを備える。
【発明の効果】
【００１０】
本発明によれば、処理すべきバッファを速やかに特定可能となり、ＣＰＵへの負荷及び、バッファの特定に遅れが生じる可能性を減ずることができる。また仮に、バッファの特定に遅れが生じた場合にも、送受信の順序を履歴バッファによって追跡し、処理漏れを無くすことが可能となる。
【発明を実施するための最良の形態】
【００１１】
続いて、本発明を実施するための最良の形態について図面を参照して詳細に説明する。図１は、本実施の形態に係るＣＡＮモジュール（データ処理モジュール）とＣＰＵ５１、ＲＡＭ５２、周辺回路５３を１チップで構成したＣＡＮデバイス１００の概略構成を表した図である。例えば、周辺回路５３は、Ｉ／Ｏ回路を含み、ＣＡＮデバイス１００の外部に設けられた各種センサ及び表示装置と接続され外部と内部との間のインターフェースを行い、ＣＰＵ５１は、各種センサからのデータをＩ／Ｏを介して取り出すと共にＲＡＭを利用して所望の処理を実行してメッセージバッファに書き込む処理及びメッセージバッファに書き込まれたメッセージを取り出し所望の処理を実行した後Ｉ／Ｏを介して外部に接続された表示装置にデータを送信する処理等を行う。
【００１２】
ＣＡＮモジュールは、メッセージハンドリング部２と、メッセージバッファ３と、ＣＡＮプロトコル送信層４、マスクセット５、後述するＣＡＮ書き込みポインタにてリング状に書き込み制御されるリングバッファ６で構成された履歴バッファを備えている。
【００１３】
図２は、上述したＣＡＮモジュールのメッセージハンドリング部２の詳細構成を表した図である。図２を参照すると、メッセージハンドリング部２は、メッセージの送受信に必要な構成のほか、履歴情報提供機能を実現すべく、メッセージバッファ３及びリングバッファ６と接続され、メッセージバッファ３からデータを読み出すためのデータ処理回路、データを破壊されないようにするデータ保護回路として、フリップフロップ回路で構成されたＣＡＮ書き込みポインタ２１、最古（未読）履歴情報ポインタ２３を備え、更に、前記各ポインタの内容に従属する最新履歴情報ポインタ２２、履歴無効フラグ２４、オーバーフローフラグ２５とを含んで構成される。また、図中２重線で囲まれた最新履歴情報ポインタ２２、最古（未読）履歴情報ポインタ２３、履歴無効フラグ２４、オーバーフローフラグ２５が、ＣＰＵ５１から見える状態に保持される。
【００１４】
メッセージハンドリング部２は、メッセージバッファ３の所定バッファにメッセージ書き込みが完了すると、ＣＡＮ書き込みポインタ２１の値に基づいて、リングバッファ６に履歴情報（当該バッファのメッセージ番号）を記録する。最新履歴情報ポインタ２２は、ＣＡＮ書き込みポインタ２１が示す位置の一つ前の位置を示し、直近に（一番最近に）書き込みが行われたバッファのメッセージ番号が格納される。また、最古（未読）履歴情報ポインタ２３は、初期状態においては、ＣＡＮ書き込みポインタ２１と一致するが、ＣＰＵ５１からのリードアクセスと連動し、常に最も古く未読の履歴情報が示されるように遷移していく。
【００１５】
また、履歴無効フラグ２４は、リングバッファ６の資源が全く使われていない状態を示す。例えば、履歴無効フラグ２４は、ＣＡＮ書き込みポインタ２１＝最古（未読）履歴情報ポインタ２３である場合にオン状態レベル「１」に設定され、ＣＡＮ書き込みポインタ２１≠最古（未読）履歴情報ポインタ２３である場合にオフ状態レベル「０」に設定される。また、オーバーフローフラグ２５は、リングバッファ６の資源が使われた状態を示す。例えば、オーバーフローフラグ２５は、ＣＡＮ書き込みポインタ２１が最古（未読）履歴情報ポインタ２３から一つ前の位置と一致する場合にオン状態レベル「１」に設定され、それ以外の場合にオフ状態レベル「０」に設定される。
【００１６】
図３は、メッセージバッファとリングバッファの構成を表した図である。図３を参照すると、メッセージバッファ３は、メッセージ優先度を表す識別子（ＩＤ）、送信要求メッセージであるか否かやメッセージ本文長を指定するコントロールフィールド（制御セグメント）、メッセージ本文の順で所定数（ｎ個）のメッセージをバッファ可能となっている。
【００１７】
また、リングバッファ６は、ＲＨＬ０からＲＨＬ２３までのアドレスに２４個の受信履歴情報（Ｒｅｃｅｐｔｉｏｎ  Ｈｉｓｔｏｒｙ  Ｌｉｓｔ）を格納可能な構成であり、リングバッファ６は、ＴＨＬ０からＴＨＬ７までのアドレスに８個の送信履歴情報（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｈｉｓｔｏｒｙ  Ｌｉｓｔ）を格納可能な構成となっている。例えば、リングバッファ６のＲＨＬ０にメッセージ番号＃１、ＲＨＬ１にメッセージ番号＃ｍ、ＲＨＬ２にメッセージ番号＃３が記録されているとすると、同図矢線に示された通り、メッセージバッファ３のメッセージ番号＃１、メッセージ番号＃ｍ、メッセージ番号＃３の順にメッセージが受信されたことを意味している。
【００１８】
ＣＡＮプロトコル送信層４は、ＣＡＮプロトコルに従ってＣＡＮトランシーバとデータの送受信を行う。マスクセット５は、メッセージの所定部分（例えばＩＤの一部）をマスクする際に用いられ、例えば、ＩＤが２進数４ビットのデータであるとして、０〜３１番地のメッセージバッファのｎ番地のメッセージバッファ３にＩＤの１１００が割り振られていた場合において、上位２ビットにマスクをかけることによって１１００以外に００００、０１００、１０００が番地のメッセージバッファに格納されることになるよう用いられる。
【００１９】
図４は、本実施の形態に係るＣＡＮモジュールにおいて、受信割り込みが発生した場合の動作を表した図である。図４を参照すると、ＣＡＮモジュールによってメッセージバッファへの書き込みが行われ、受信割り込み信号がＣＰＵに送信されると（ステップＳ００１）、ＣＰＵ５１は、最古（未読）履歴情報ポインタ２３で示された位置の最古（未読）履歴情報ポインタで示されるリングバッファの情報を読み出す（ステップＳ００２）。上述のとおり、リングバッファ６は所定回数分（本実施の形態では２３個）の履歴情報を記録可能であり、最古（未読）履歴情報ポインタの内容は、ＣＰＵ５１のリードアクセスと連動し、ＣＰＵは、最古（未読）履歴情報ポインタ２３の内容にて、メッセージバッファ３の中で未だ参照されていない最古のバッファを特定することが可能となる（ステップＳ００３）。
【００２０】
図５は、本実施の形態のメッセージ受信時の動作を表したタイミングチャートである。同図上段（Ａ）ＣＰＵがＣＡＮモジュールの受信動作に追従できている状態においても、多数のＤＮビットを読み出す処理が不要となるため、ＣＰＵ処理時間を大幅に短縮し負荷を低減することが可能となっている。また、同図下段（Ｂ）ＣＰＵがＣＡＮモジュールの受信動作に追従できていない状態になると、図１５（Ｂ）で説明したとおり従来であればメッセージの格納順序が不定となるところであるが、本発明では、メッセージの到着順序で整理した情報をＣＰＵに与えることができる。従って、ＣＰＵにメッセージバッファに先に格納されたメッセージから順に着実に処理させることや、最新履歴情報を用いて、最後に受信したメッセージを最初に処理させることも可能となる。
【００２１】
また、本実施の形態では、図６に示したとおり、受信用のリングバッファ６１、送信用のリングバッファ６２、そして、ＣＡＮ読み出しポインタ、最新履歴情報ポインタ、最古（未読）履歴情報ポインタ、履歴無効フラグ、オーバフローフラグに対応するポインタ（送信の場合はＣＡＮ書き込みポインタはＣＡＮ読み出しポインタとなる）、フラグをそれぞれ備えることによって、ＣＰＵが、ＣＡＮモジュールが送信したメッセージの順序をＣＰＵに提供可能な構成も採用可能である。
【００２２】
［実施例］
【００２３】
続いて、上記した本発明の作用効果をより具体的に説明すべく、上述した構成による動作例について順を追って説明する。図７は、初期状態、即ち、リングバッファ６に履歴情報が格納されていない状態を表した図である。リングバッファ６のＲＨＬ０〜２３は不定であり、ＣＡＮ書き込みポインタ２１及び最古（未読）履歴情報ポインタ２３は、初期位置ＲＨＬ０を指した状態となっている。また、最新履歴情報ポインタ２２は、ＣＡＮ書き込みポインタ２１より一つ戻った位置ＲＨＬ２３を指している。この状態では、ＣＡＮ書き込みポインタ２１と最古（未読）履歴情報ポインタ２３が一致するため履歴無効フラグ２４が立てられている。
【００２４】
図８は、図７の初期状態の後で、ＣＡＮモジュールが２つのメッセージを受信し、最初のメッセージをバッファ＃３１に、次のメッセージをバッファ＃１に格納した状態を表した図である。メッセージハンドリング部２によって、メッセージを格納したバッファの位置を示すメッセージ番号ｍｓｇ#３１、ｍｓｇ#１がそれぞれＲＨＬ０、ＲＨＬ１に記録されている。ＣＡＮ書き込みポインタ２１は、次に書き込むＲＨＬを指しており、ＣＰＵのリードアクセスが行われていない現段階では最古（未読）履歴情報ポインタ２３は、初期位置ＲＨＬ０を指したままとなっている。また、最新履歴情報ポインタ２２は、ＣＡＮ書き込みポインタ２１より一つ戻った位置ＲＨＬ１を指している。この状態では、ＣＡＮ書き込みポインタ２１と最古（未読）履歴情報ポインタ２３が一致しなくなったため履歴無効フラグ２４はレベル「０」に変更される。従って、ＣＰＵとしては、履歴無効フラグ２４により履歴情報が有効であることを確認し、最古（未読）履歴情報ポインタ２３からメッセージ番号ｍｓｇ＃３１を、最新履歴情報ポインタ２２からは、メッセージ番号ｍｓｇ＃１を確認することが可能となっている。
【００２５】
図９は、図８のＣＡＮモジュールが２つのメッセージを受信した状態からＣＰＵが一つのメッセージを読み出した状態を表した図である。ＣＰＵのリードアクセスが行われた結果、最古（未読）履歴情報ポインタ２３が初期位置ＲＨＬ０からＲＨＬ１に一つ移動している。一方、新たな履歴情報が書き込まれた訳ではないので、ＣＡＮ書き込みポインタ２１、最新履歴情報ポインタ２２は移動していない。また、履歴無効フラグ２４やオーバーフローフラグ２５もレベル「０」のままである。この状態では、ＣＰＵは、履歴無効フラグ２４により履歴情報が有効であることを確認し、最古（未読）履歴情報ポインタ２３、最新履歴情報ポインタ２２から、メッセージ番号ｍｓｇ＃１を確認することが可能となっている。
【００２６】
図１０は、ＣＰＵのリードアクセスに対し、ＣＡＮモジュールのメッセージ受信が多数先行した結果、リングバッファ６の空きが無くなった直後の状態を表した図である。同図では、ＣＡＮ書き込みポインタ２１がＲＨＬ８を指しているので、ＣＡＮモジュールがＲＨＬ７にメッセージ番号ｍｓｇ＃９を書き込んだ直後の状態を表している。また、最古（未読）履歴情報ポインタ２３はＲＨＬ９を指しており、ＲＨＬ９〜２３、及び、ＲＨＬ０〜７までの履歴情報が未だリードされていない状態（最古（未読）履歴情報ポインタ２３に対し、ＣＡＮ書き込みポインタ２１が約一周先行している）となっている。履歴無効フラグ２４はレベル「０」のままであり、ＣＰＵは、履歴情報が有効であることを確認し、最古（未読）履歴情報ポインタ２３から、メッセージ番号ｍｓｇ＃５、最新履歴情報ポインタ２２からメッセージ番号ｍｓｇ＃９を確認することが可能となっている。また、この状態となると、ＣＡＮ書き込みポインタ２１（＝ＲＨＬ８）と最古（未読）履歴情報ポインタ２３から一つ戻った位置（＝（ＲＨＬ９−１）＝ＲＨＬ８）が一致するためオーバーフローフラグ２５が立てられている。
【００２７】
図１１は、図１０のオーバーフローが成立した状態から新たにメッセージを受信し、メッセージバッファに格納した状態を表した図である。オーバーフローフラグ２５がレベル「１」の状態では、ＣＡＮ書き込みポインタ２１は現在の値（ＲＨＬ８）保持し、ＣＡＮ書き込みポインタ２１の現在の位置から一つ戻った位置に履歴情報を上書きする特定制御が開始される。例えば、図１１では、ＣＡＮ書き込みポインタ２１はＲＨＬ８を指したままであるが、一減されてＲＨＬ７にｍｓｇ＃２７が上書きされている。このような特定制御は、オーバフローフラグがクリアされるまで継続される。このような特定制御を行うことによって、最古（未読）履歴情報ポインタ２３の値を保護するとともに、最新履歴情報ポインタ２２に指定される位置に常に最新の履歴情報が格納される状態が保持される。
【００２８】
以上のように、リングバッファ６の内容が更新されるため、ＣＰＵは、未参照であって最先に受信したメッセージが格納されたバッファや最新のメッセージが格納されたバッファを即時に特定することが可能となる。
【００２９】
以上、本発明の一実施の形態及び実施例を説明したが、その原理からも明らかなとおり、本発明の技術的範囲は、上述した実施の形態に限定されるものではなく、履歴情報を参照可能とし、処理すべきメッセージを即座に決定できるようにしておくという本発明の要旨を逸脱しない範囲で、各種の変形・置換をなしうることが可能であることはいうまでもない。
【００３０】
例えば、上述した実施の形態及び実施例では、ＣＰＵから読み出し可能とするポインタの例を示したが、追加のポインタを設けて、参照できるようにしておいてもよい。また、リングバッファのサイズ（履歴情報格納可能数）も特に限定されるものではなく、ＣＰＵの処理能力やメッセージバッファのサイズに応じて変更可能である。
【００３１】
また、上記した実施の形態及び実施例では、履歴情報が全く無い状態（初期状態）とオーバーフロー状態を簡単に区別すべく、ＣＡＮ書き込みポインタ２１と最古（未読）履歴情報ポインタ２３の関係の判定基準（Ａ＝ＢとＡ＝Ｂ−１）を区別して設けたが、直前の状態を保存するなどして、実質的なオーバーフロー状態を判断できるようにしても良い。
【００３２】
また、上述した実施の形態及び実施例では、リングバッファを採用し、オーバーフロー時に特定制御が行われるものとして説明したが、その他当業者がなしうる修正を加えることが可能である。また、オーバーフロー状態が発生しないという前提の下では、通常のリングバッファリング制御を行うことで足りることになる。また例えば、リングバッファ以外のバッファ構成も採用可能であり、履歴情報の格納・読み出し手順もその他よく知られているのものを採用可能である。
【図面の簡単な説明】
【００３３】
【図１】本発明の第１の実施の形態に係るＣＡＮデバイスの概略構成を表した図である。
【図２】本発明の第１の実施の形態に係るメッセージハンドリング部の構成を説明するための図である。
【図３】本発明の第１の実施の形態に係るメッセージバッファ及びリングバッファの構成を表した図である。
【図４】本発明の第１の実施の形態にＣＡＮデバイスにおける受信割り込み時の処理の流れを表した図である。
【図５】本実施の形態の動作を表したタイミングチャートである。
【図６】本発明の第１の実施の形態に係るメッセージバッファ及びリングバッファの別の構成を表した図である。
【図７】本発明の一実施例の動作を説明するための図である。
【図８】本発明の一実施例の動作を説明するための図である。
【図９】本発明の一実施例の動作を説明するための図である。
【図１０】本発明の一実施例の動作を説明するための図である。
【図１１】本発明の一実施例の動作を説明するための図である。
【図１２】ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）の概略構成を表した図である。
【図１３】ＣＡＮモジュールに備えられるメッセージバッファの構成を表した図である。
【図１４】メッセージを受信した際の受信割り込み発生以降の動作を表したフローチャートである。
【図１５】従来技術を説明するためのタイミングチャートである。
【符号の説明】
【００３４】
２  メッセージハンドリング部
３  メッセージバッファ
４  ＣＡＮプロトコル送信層
５  マスクセット
６、６１、６２  リングバッファ
１１、１ｎ、１６、１９  ＣＡＮモジュール（ＣＡＮ  コントローラ）
２０  サーチ用共通アドレス生成部
２１  ＣＡＮ書き込みポインタ
２２  最新履歴情報ポインタ
２３  最古（未読）履歴情報ポインタ
２４  履歴無効フラグ
２５  オーバーフローフラグ
４０  ＣＰＵ  Ｉ／Ｆ
５１  ＣＰＵ
５２  ＲＡＭ
５３  周辺回路
６０  ＣＡＮトランシーバ
１００  ＣＡＮデバイス
【図１】
2006222627.tif 000003
【図２】
2006222627.tif 000004
【図３】
2006222627.tif 000005
【図４】
2006222627.tif 000006
【図５】
2006222627.tif 000007
【図６】
2006222627.tif 000008
【図７】
2006222627.tif 000009
【図８】
2006222627.tif 000010
【図９】
2006222627.tif 000011
【図１０】
2006222627.tif 000012
【図１１】
2006222627.tif 000013
【図１２】
2006222627.tif 000014
【図１３】
2006222627.tif 000015
【図１４】
2006222627.tif 000016
【図１５】
2006222627.tif 000017