[go: up one dir, main page]

JP3713977B2 - Real-time distributed system - Google Patents

Real-time distributed system Download PDF

Info

Publication number
JP3713977B2
JP3713977B2 JP26595098A JP26595098A JP3713977B2 JP 3713977 B2 JP3713977 B2 JP 3713977B2 JP 26595098 A JP26595098 A JP 26595098A JP 26595098 A JP26595098 A JP 26595098A JP 3713977 B2 JP3713977 B2 JP 3713977B2
Authority
JP
Japan
Prior art keywords
message
network
transmission
priority
processing
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
Application number
JP26595098A
Other languages
Japanese (ja)
Other versions
JP2000099481A (en
Inventor
崇明 今井
孝典 横山
渉 永浦
昭二 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP26595098A priority Critical patent/JP3713977B2/en
Priority to US09/370,152 priority patent/US7103646B1/en
Publication of JP2000099481A publication Critical patent/JP2000099481A/en
Priority to US11/167,137 priority patent/US20050267953A1/en
Application granted granted Critical
Publication of JP3713977B2 publication Critical patent/JP3713977B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)

Description

【0001】
【発明の属する技術分野】
本発明はネットワーク接続されたリアルタイム分散システムに係り、特に、メッセージの送受信処理を、メッセージが与えられた優先度に従って処理を行うのに好適なリアルタイム分散システムに関する。
【0002】
【従来の技術】
ネットワークによりメッセージを送受信する場合、ネットワーク通信をハードウェアで実現するネットワークコントローラと、ネットワークコントローラを用いてネットワーク通信を行うネットワークドライバを用いる。いま、ネットワークコントローラに設けられた送受信メッセージを格納するバッファをメールボックスと呼ぶことにする。例えば送信の場合、アプリケーションからネットワークドライバへの送信要求は送信要求キューに並べられる。ネットワークドライバは送信要求キューから送信要求を1つずつ取り出して、送信メッセージをメールボックスへ格納してネットワーク送信処理を行う。通常、送信要求キューはFIFO でキューイングされるため、送信要求時間順にネットワーク送信処理が行われる。しかし、リアルタイム分散システムでは、メッセージに優先順位を付加し、優先順位に応じたネットワーク通信処理を行うことが望まれる。そこで、例えば、CQ出版社刊、インターフェース(1994年,第12号)、72頁〜148頁に記載されているように、キューイングされている送信要求をアプリケーションが送信するメッセージの優先順位にしたがって入れ替えることにより、ネットワーク通信の優先順位制御を行う方式がある。これにより、ネットワークドライバは送信要求時間順ではなく、ネットワークドライバが送信要求キューから送信要求を取り出す時点での送信データの優先順位にしたがってネットワーク送信処理が行える。
【0003】
【発明が解決しようとする課題】
しかしながら上記従来技術では、一旦ネットワークドライバが起動されて、ネットワーク送信処理が開始されると、現在ネットワーク送信処理中のデータよりも高い優先順位のメッセージに対して送信要求がなされても、現在のネットワーク送信処理が完了するまで、高い優先順位のメッセージはネットワーク送信処理が行えないという問題がある。
【0004】
例えば、ネットワークコントローラが複数接続されたリアルタイム分散システムを考える。このリアルタイム分散システムは、メッセージに付加された優先順位によりネットワークの優先順位制御を行うネットワークを用いるとする。複数のネットワークコントローラがネットワークへメッセージを送信する場合、メッセージに付加された優先順位によりネットワークの優先順位制御が行われ、送信要求のなされたメッセージで最も高い優先順位のメッセージの送信要求を行ったネットワークコントローラがネットワークへメッセージを送信することができる。このとき、低い優先順位のメッセージの送信要求を行ったネットワークコントローラはネットワークへのメッセージ送信が遅れてしまう。このため、低い優先順位のメッセージのネットワーク送信処理が完了するまで、このネットワークコントローラが高い優先順位のメッセージのネットワーク送信処理を行えない場合、高い優先順位のメッセージのネットワーク送信処理はさらに遅れ、システムのリアルタイム性の保証に問題を生じる。
【0005】
そこで本発明は、ネットワークドライバ処理の開始後においても送信要求のなされたメッセージで最も優先順位の高いメッセージを送信できる分散処理システムを提供することを目的とする。
【0006】
【課題を解決するための手段】
上記目的は、複数の送受信メッセージを格納したネットワークコントローラによって複数のメッセージ送受信処理を実行してネットワーク通信を行うネットワークドライバと、扱う送受信メッセージのネットワーク通信の優先順位と、該送受信メッセージのネットワーク通信の優先順位に対応したネットワークドライバの処理の優先順位を決定するネットワークドライバ優先順位管理部と、ネットワークドライバの処理の優先順位にしたがって上記ネットワークドライバの処理を実行するスケジューリング部とを有するリアルタイム分散システムによって達成することができる。
【0007】
また、上記目的は複数の送受信メッセージを記憶するメッセージ記憶部と、メッセージ記憶部に記憶された複数のメッセージの送受信処理を、ネットワークコントローラを用いて、実行してネットワーク通信を行うネットワークドライバと、扱う送受信メッセージのネットワーク通信の優先順位と、該送受信メッセージのネットワーク通信の優先順位に対応したネットワークドライバの処理の優先順位を決定するネットワークドライバ優先順位管理部と、ネットワークドライバの処理の優先順位にしたがってネットワークドライバの処理を実行するスケジューリング部とを有するリアルタイム分散システムによって達成することができる。
【0008】
また、複数の送受信メッセージを記憶する記憶部と、ネットワークコントローラを用いて、ネットワーク通信を行うネットワークドライバと、メッセージ記憶部に記憶された複数のメッセージの送受信処理を、ネットワークドライバ手段を用いて実行する通信処理ライブラリと、扱う送受信メッセージのネットワーク通信の優先順位と、該送受信メッセージのネットワーク通信の優先順位に対応したネットワークドライバの処理の優先順位を決定するネットワークドライバ優先順位管理部と、ネットワークドライバの処理の優先順位にしたがってネットワークドライバの処理を実行するスケジューリング部とを有するリアルタイム分散システムによって達成することができる。
【0009】
このような構成により、一旦ネットワークドライバが起動されてメッセージ送信処理のタスクが開始されても、現在送信処理中のメッセージよりも高い優先順位のメッセージに対して送信要求がなされた場合は、現在のネットワーク送信処理完了を待たずに、並列により優先順位の高いネットワークドライバの送信処理タスクを起動して、優先順位の高いメッセージの送信処理を先に行う。これにより、送信要求のなされたメッセージで最も優先順位の高いメッセージを送信できる。受信についても同様に、あるメッセージ受信タスクの処理中に、より優先順位の高いメッセージを受信したときは、より優先順位の高いネットワークドライバの受信処理タスクを起動して、先に受信処理を行う。これにより最も優先順位の高いメッセージから順に受信できる。
【0010】
【発明の実施の形態】
(1)本発明の一実施例
(a)本発明の一実施例の全体構成
図1は本発明の一実施例であるリアルタイム分散システムの構成を示したものである。リアルタイム分散システムは制御ユニット2000および2060がネットワーク2005で接続されている。本発明のネットワークは、例えば、オープン・デバイスネット・ベンダー・アソシエーション(Open DeviceNet Vendor Association)社発行、デバイスネット(DeviceNet )仕様書(ボリューム1(Volume 1),リリース2.0(Release2.0 ),1998年)、第2章2.1〜2.8に記載されているCAN(Controller Area Network)を用いる。制御ユニット2000は、CPU2001 ,メモリ2002,CANコントローラ2003で構成され、それらはバス2004で接続されている。CANコントローラ2003は、ネットワーク2005を介して、他の制御ユニット2060に内蔵される CANコントローラと接続されている。メモリ2002には、アプリケーションプログラム2006,OSEK−COM2008,CANドライバ2009,OS2050が記憶されている。ここで、OSEK−COMは、オー・エス・イー・ケイ(OSEK)発行、オー・エス・イー・ケイ/ブイ・ディー・エックスコミュニケーション(OSEK/VDX Communication)仕様書(バージョン 2.1(Version2.1),リビジョン1(revision1)、1998年)に記載されているOSEK−COMプロトコルを処理するプログラムである。CPU2001 は、メモリ2002に記憶されているプログラムを読み出して、プログラム処理を実行する。OS2050は複数のタスクを並列して実行できるマルチタスク機能を持つ。 CANコントローラ2003は、ネットワーク2005を介して、他の制御ユニット2060とのメッセージ送信,メッセージ受信を行うハードウェアである。以下、CANコントローラ2003,アプリケーションプログラム2006,OSEK−COM2008,CANドライバ2009,OS2050 の順に詳細に説明する。
【0011】
(b)CANコントローラ
まず、CANコントローラについて詳細に説明する。CANコントローラ2003が使用する通信プロトコルはCANプロトコルである。CANプロトコルは、各メッセージに固有なメッセージIDを持たせる。メッセージIDには優先順位が割り当てられ、ネットワーク2005の優先順位制御(バスアービトレーション)はメッセージIDの優先順位に基づいて行われる。メッセージIDによるバスアービトレーションについて説明する。例えば、制御ユニット2000が、ネットワーク2005を介して、制御ユニット2000と同様な構成を持つ、複数の制御ユニットに接続された場合を考える。各制御ユニットが同時に、ネットワーク2005へメッセージを送信する場合、各メッセージの内で、最も優先順位の高いメッセージIDを持つメッセージを送信する制御ユニットだけが、ネットワーク2005の使用権を獲得して(バスアービトレーションに勝つ)、優先的にネットワーク2005へメッセージを送信することができる。
【0012】
次にCANコントローラの構成について詳細に説明する。CANコントローラ2003は、コントロールレジスタ2022,送信・受信メールボックス2023,優先順位制御部2024,送信バッファ2025,受信フィルタ2027,受信バッファ2026で構成される。以下、これらについて詳細に説明する。
【0013】
送信・受信メールボックス2023について説明する。送信・受信メールボックス2023は、メールボックスa2028,メールボックスb2029,メールボックスc2030等の複数のメールボックスで構成され、送信メッセージ,受信メッセージを格納する。図2は、メールボックスa2028の詳細な構成図である。メールボックスa2028は、メールボックス番号6004,
MessageID6001,DataSize6002,Data6003 で構成される。メールボックス番号 6004は、送信・受信メールボックス2023の各メールボックスごとに固有に与えられるもので、メールボックス番号を記憶する領域である。
【0014】
MessageID6001 は、送信メッセージ,受信メッセージのメッセージIDを記憶する領域である。メールボックスa2028は、MessageID6001 を持つ送信メッセージ,受信メッセージのみを格納する。DataSize6002は、格納する送信メッセージ,受信メッセージのデータサイズを記憶する領域である。Data6003は、送信メッセージ,受信メッセージのデータ格納領域である。メールボックスb2029,メールボックスc2030の詳細な構成は、メールボックスa2028と同様である。
【0015】
図3は、コントロールレジスタ2022の詳細な構成図である。コントロールレジスタ2022は、メールボックス番号5001,TXPR5002,TXACK5003,
RXPR5004,MBIMR5005 で構成される。メールボックス番号5001は、各メールボックスごとに、メールボックス番号を記憶する領域である。TXPR5002は、各メールボックス番号ごとに、メッセージ送信要求を記憶する領域であり、CANコントローラ2003にメッセージ送信を要求するときに、ビットセットする。 TXACK5003 は、各メールボックス番号ごとに、メッセージ送信完了を記憶する領域であり、CANコントローラ2003がメッセージ送信を完了したときに、ビットセットされる。RXPR5004は、各メールボックス番号ごとに、メッセージ受信完了を記憶する領域であり、CANコントローラ2003がメッセージ受信を完了したときに、ビットセットされる。MBIMR5005 は、各メールボックス番号ごとに、メッセージ送信完了時、または、メッセージ受信完了時の割り込み禁止を記憶する領域であり、メッセージ送信完了時、または、メッセージ受信完了時の、CANコントローラ2003からCPU2001 への割り込みを禁止するときに、ビットセットする。
【0016】
優先順位制御部2024は、メッセージ送信要求が発生したときに、対応するメールボックスのメッセージを、送信バッファ2025へ転送する。また、同時に複数のメッセージ送信要求が発生したとき、対応する各メールボックスに格納されているメッセージIDを比較して、最も優先順位の高いメッセージIDを格納しているメールボックスのメッセージを、送信バッファ2025へ転送する。送信バッファ2025は、優先順位制御部2024から転送されたメッセージを格納する。格納されたメッセージは、メッセージIDによるバスアービトレーションに参加する。メッセージIDによるバスアービトレーションに勝った場合、メッセージはネットワーク2005へ送信される。メッセージIDによるバスアービトレーションに負けた場合、メッセージはネットワーク2005へ送信されず、次のバスアービトレーションの機会を待つ。メッセージIDによるバスアービトレーションに負けた場合、かつ、より優先順位の高いメッセージIDを持つメッセージに対してメッセージ送信要求が発生している場合、優先順位制御部2024は、より優先順位の高いメッセージIDを格納しているメールボックスのメッセージを、送信バッファ2025へ転送する。
【0017】
受信バッファ2026は、ネットワーク2005からの受信メッセージを格納する。
【0018】
受信フィルタ2027は、受信バッファ2026に格納されたメッセージのメッセージIDと、各メールボックスに登録されたメッセージIDを比較して、同一のメッセージIDがあれば対応するメールボックスヘメッセージを格納する。
次に、メモリ2002に記憶されている、アプリケーションプログラム2006,OSEK−COM2008 ,CANドライバ2009,OS2050について詳細に説明する。
【0019】
(c)アプリケーションプログラム
アプリケーションプログラムについて説明する。アプリケーションプログラム2006は、図1に示すように、APa2012,APb2013,APc2014 等の複数のアプリケーションプログラムで構成される。本実施例ではこれらのアプリケーションプログラムはそれぞれ別のタスクとして実行される。
【0020】
(d)OSEK−COM
次にOSEK−COMの構成について詳細に説明する。OSEK−COM2008 は、メッセージオブジェクトa2015,メッセージオブジェクトb2016,メッセージオブジェクトc2017等の複数のメッセージオブジェクト,メッセージ送信処理2010,メッセージ受信処理2011で構成される。なお、本実施例で用いられるメッセージには、Queuedメッセージ,Unqueuedメッセージの2種類がある。Queuedメッセージは、キューイングが必要で上書き不可能なメッセージである。Unqueuedメッセージは、キューイングが不要で、上書き可能なメッセージである。
【0021】
図4は、メッセージオブジェクトa2015の詳細な構成図を示したものである。メッセージオブジェクトa2015は、sMsgObj3001,Status3007,Data3008,Buffer3009,sMsgNetParams3013,sQueuedMsgInfo3018,sQueuedMsgObjA3022 ,sQueuedMsgObjB3030等の複数のsQueuedMsgObj,Status3024,Status3032等の複数のStatus,FIFOBufferA3029,FIFOBufferB3037等の複数のFIFOBuffer,NULL3011,NULL3038等の複数のNULL、で構成される。
【0022】
Status3007は、sMsgObj の状態(送信状態,バッファの空き状態)を記憶する領域である。Status3024は、sQueuedMsgObjA3022の状態(バッファの空き状態)を記憶する領域である。Status3032は、sQueuedMsgObjB3030の状態(バッファの空き状態)を記憶する領域である。Data3008は、メッセージのデータを記憶する領域である。Buffer3009は、メッセージがUnqueuedメッセージの場合(3012)、Data3008のバッファである。FIFOBufferA3029は、メッセージがQueued メッセージの場合(3012)、Data3008のバッファである。FIFOBufferB3037 は、メッセージがQueuedメッセージの場合(3012)、Data3008のバッファである。
sMsgObj3001は、Size3002,StatusRef3003,DataRef3004,
sQueuedMsgInfoRef3005,sMsgNetParamsRef3006で構成される。Size3002 は、メッセージのデータサイズを記憶する領域である。StatusRef3003は、Status3007 へのポインタである。DataRef3004は、Data3008へのポインタである。
【0023】
sQueuedMsgInfoRef3005は、メッセージがQueuedメッセージの場合、
sQueuedMsgInfo3018へのポインタである。sQueuedMsgInfoRef3005 は、メッセージがUnqueuedメッセージの場合、NULL3011へのポインタである。
【0024】
sMsgNetParamsRef3006は、メッセージ送信、または、メッセージ受信が、ネットワーク2005経由の場合、sMsgNetParams3013 へのポインタである。
【0025】
sMsgNetParamsRef3006は、メッセージ送信、または、メッセージ受信が、ネットワーク2005経由でない場合、NULL3011へのポインタである。
【0026】
sMsgNetParams3013は、TransferDir3014,TransferMode3015,TimePeriod3016,Handle3017で構成される。TransferDir3014 は、メッセージが送信メッセージであるか、メッセージが受信メッセージであるかを記憶する領域である。
【0027】
TransferMode3015は、Periodicalメッセージ送信を利用するか、Periodicalメッセージ送信を利用しないかを記憶する領域である。Periodicalメッセージ送信を利用すると、アプリケーションプログラムは周期時間ごとにメッセージ送信が行える。TimePeriod3016は、Periodicalメッセージ送信を利用する場合、その周期時間を記憶する領域である。Handle3017は、メッセージのメッセージIDを記憶する領域である。
【0028】
sQueuedMsgInfo3018は、QueueDepth3019,NRec3020,sQueuedMsgObjRef3021で構成される。QueueDepth3019は、FIFOBufferのキューイング深さつまり、メモリの使用領域を記憶する領域である。NRec3020は、メッセージオブジェクト利用者数を記憶する領域である。例えば、APa2012,APb2013の2つのアプリケーションプログラムが、1つのメッセージオブジェクトa2015を利用する場合、
NRec3020は2となる。図4は、NRec3020が2の場合を示しており、メッセージオブジェクトa2015は、2つのsQueuedMsgObj(3022,3030)、2つのStatus(3024,3032)、2つのFIFOBuffer(3029,3037)を持つ構成となる。sQueuedMsgObjRef3021は、sQueuedMsgObjへのポインタである。 sQueuedMsgObjの構成について、sQueuedMsgObjA3022を例として説明する。sQueuedMsgObjA3022は、StatusRef3023,BoundaryDataRef3025,
WriteDataRef3026,ReadDataRef3027,sQueuedMsgObjRef3028で構成される。
【0029】
StatusRef3023は、Status3024へのポインタである。BoundaryDataRef3025は、FIFOBufferA3029の先頭アドレスである。WriteDataRef3026は、FIFOBufferA3029の書き込みアドレスである。ReadDataRef3027は、FIFOBufferA3029の読み出しアドレスである。sQueuedMsgObjRef3028は、sQueuedMsgObjB3030へのポインタである。sQueuedMsgObjB3030の構成は、sQueuedMsgObjA3022の構成と同様である。ただし、sQueuedMsgObjRef3036はNULL3038へのポインタである。
【0030】
次にOSEK−COMの動作について説明する。まずOSEK−COMのメッセージ送信処理2010について詳細に説明する。メッセージ送信処理2010は、各アプリケーションプログラムが、OSEK−COM2008 を用いて実際のメッセージ送信を行うためのプログラムである。本実施例では、OSEK−COMのメッセージ送信処理は、それを呼び出したアプリケーションプログラムのタスクで実行される。図5は、メッセージ送信処理2010の流れを示すフローチャートである。図5を用いて、メッセージ送信処理2010について説明する。例えば、APa2012 が、メッセージオブジェクトa2015,メールボックスa2028を利用して、メッセージ送信を行うとする。
【0031】
まずステップ100で、APa2012 は、メッセージ送信で利用するメッセージオブジェクトa2015を決定する。
【0032】
ステップ101では、sMsgNetParamsRef3006を参照して、メッセージ送信がユニット内の通信か、ネットワーク2005経由であるかを判定する。
【0033】
ユニット内の通信の場合、ステップ102で、APa2012 が送信するメッセージのデータを、Data3008に書き込む。
【0034】
送信するメッセージがUnqueuedメッセージの場合、Data3008をBuffer3009に書き込む。
【0035】
送信するメッセージがQueuedメッセージの場合、Data3008をFIFOBuffer(3029,3037)に書き込む。
【0036】
メッセージ送信がユニット内の通信でない場合、すなわち、ネットワーク経由の通信の場合、ステップ103で、TransferDir3014 を参照して、送信するメッセージが送信メッセージであるか判定する。
【0037】
次にステップ104で、送信するメッセージがQueuedメッセージであるか判定する。
【0038】
送信するメッセージがQueuedメッセージの場合、ステップ105で、Queuedメッセージ送信処理を行う。
【0039】
送信するメッセージがUnqueuedメッセージの場合、ステップ106で、
Unqueuedメッセージ送信処理を行う。
【0040】
図6は、図5のステップ102の処理詳細を示すフローチャートである。図6を用いて、ステップ102を説明する。
【0041】
まずステップ200で、APa2012 が送信するメッセージのデータを、Data3008に書き込む。
【0042】
ステップ201では、送信するメッセージがUnqueuedメッセージの場合、
Data3008をBuffer3009に書き込む。
【0043】
送信するメッセージがQueuedメッセージの場合、Data3008をFIFOBuffer(3029,3037)に書き込む。
【0044】
図7は、図6のステップ201の処理詳細を示すフローチャートである。図7を用いて、ステップ201を説明する。
【0045】
まずステップ300で、送信するメッセージがQueuedメッセージであるか判定する。
【0046】
送信するメッセージがQueuedメッセージである場合、ステップ301で、
Data3008をFIFOBuffer(3029,3037)へ書き込む。
【0047】
送信するメッセージがQueuedメッセージでない場合、まずステップ302で DataRef3004,Size3002 を参照して、Buffer3009の書き込みアドレスを決定する。次にステップ303で、Data3008をBuffer3009へ書き込む。
【0048】
図8は、図7のステップ301の処理詳細を示すフローチャートである。図8を用いて、ステップ301を説明する。
【0049】
まずステップ400で、Size3002を参照して、送信するメッセージのデータサイズを決定する。
【0050】
ステップ401では、DataRef3004を参照して、Data3008 のアドレスを決定する。
【0051】
ステップ402では、sQueuedMsgObjRef3021を参照して、sQueuedMsgObjA3022のアドレスを決定する。
【0052】
次にステップ403の条件が成立する間、すなわち、上記決定したアドレスがNULLでない間、ステップ404からステップ411の手順を繰り返し、
Data3008をFIFOBuffer(3029,3037)へ書き込む。Data3008から
FIFOBufferA3029 への書き込みを例に、ステップ404からステップ411を説明する。
【0053】
ステップ404では、FIFOBufferA3029があふれているか判定する。
【0054】
あふれている場合は、ステップ405で、Status3024に、
FIFOBufferA3029があふれていることを示す値を書き込む。
【0055】
あふれていない場合は、まずステップ406で、WriteDataRef3026を参照して、Data3008をFIFOBufferA3029へ書き込む。
【0056】
次にステップ407で、WriteDataRef3026を更新する。
【0057】
ステップ408では、LIMIT4007 を参照して、バッファa2018があふれているか判定する。
【0058】
あふれている場合はステップ409で、Status3024に、バッファa2018があふれていることを示す値を書き込む。
【0059】
あふれていない場合はステップ410で、Status3024に、バッファa2018があふれていないことを示す値を書き込む。
【0060】
ステップ411では、sQueuedMsgObjRef3028を参照して、sQueuedMsgObjB3030のアドレスを決定する。
【0061】
図9は、図5のステップ105の処理詳細を示すフローチャートである。図9を用いて、ステップ105を説明する。
【0062】
まずステップ500で、TransferMode3015を参照して、Periodicalメッセージ送信を利用するか判定する。
【0063】
Periodicalメッセージ送信を利用する場合は、ステップ501で
TimePeriod3016を参照して、Periodicalメッセージ送信を行う。
【0064】
Periodicalメッセージ送信を利用しない場合は、まずステップ502で、
Size3002を参照して、送信するメッセージのデータサイズを決定する。
【0065】
次にステップ503で、DataRef3004 を参照して、Data3008のアドレスを決定する。
【0066】
ステップ504では、Handle3017を参照して、送信するメッセージのメッセージIDを決定する。
【0067】
ステップ505では、CANドライバの送信処理2032を呼び出し、CANコントローラ2003を用いて、ネットワーク2005へメッセージを送信する。この呼び出しにより、CANドライバの送信処理のタスクが起動されるが、その処理内容については後述する。
【0068】
ステップ506では、ステップ505のリターンパラメータから、Data6003に送信するメッセージを書き込めたか判定する。
【0069】
書き込めた場合には、まずステップ507で、APa2012 が送信するメッセージのデータを、Data3008に書き込む。
【0070】
次にステップ508で、Data3008をFIFOBuffer(3029,3037)へ書き込む。
【0071】
図10は、図5のステップ106の処理詳細を示すフローチャートである。図10を用いて、ステップ106を説明する。
【0072】
まずステップ700で、TransferMode3015を参照して、Periodicalメッセージ送信を利用するか判定する。
【0073】
Periodicalメッセージ送信を利用する場合には、ステップ701で、
TimePeriod3016を参照して、Periodicalメッセージ送信を行う。
【0074】
Periodicalメッセージ送信を利用しない場合には、まずステップ702で、 Size3002を参照して、送信するメッセージのデータサイズを決定する。
【0075】
次にステップ703で、DataRef3004を参照して、Data3008 のアドレスを決定する。
【0076】
ステップ704では、Handle3017を参照して、送信するメッセージのメッセージIDを決定する。
【0077】
ステップ705では、CANコントローラ2003を用いて、ネットワーク 2005へメッセージを送信する。
【0078】
ステップ706では、ステップ705のリターンパラメータから、Data6003に送信するメッセージを書き込めたか判定する。
【0079】
書き込めた場合には、まずステップ707で、APa2012 が送信するメッセージのデータを、Data3008に書き込む。
【0080】
次にステップ708で、Data3008をBuffer3009へ書き込む。
【0081】
次に、OSEK−COMのメッセージ受信処理2011について詳細に説明する。メッセージ受信処理2011は、各アプリケーションプログラムが、OSEK−COM2008 を用いて実際のメッセージ受信を行うためのプログラムである。本実施例では、OSEK−COMのメッセージ受信処理は、それを呼び出したアプリケーションプログラムのタスクで実行されるものとする。図11は、メッセージ受信処理2011の流れを示すフローチャートである。図11を用いて、メッセージ受信処理2011について説明する。例えば、APa2012 が、メッセージオブジェクトa2015,バッファa2018,メールボックスa2028を利用して、メッセージ受信を行うとする。また、APa2012が受信するメッセージは、CANコントローラ2003によって、メールボックスa2028へ格納され、CANドライバのメッセージ送信・受信完了割り込み処理2034によって、バッファ a2018へ格納されているとする。
【0082】
まず、ステップ900で、APa2012 は、メッセージ受信で利用するメッセージオブジェクトa2015を決定する。
【0083】
次にステップ901で、TransferDir3014 を参照して、受信するメッセージが受信メッセージであるか判定する。
【0084】
受信メッセージの場合、まずステップ902で、DataRef3004 を参照して、
Data3008のアドレスを決定する。
【0085】
ステップ903では、Handle3017を参照して、受信するメッセージのメッセージIDを決定する。
【0086】
ステップ904は、CANドライバの受信処理2033を呼び出し、この呼び出しにより、CANドライバの受信処理のタスクが起動されるが、その処理内容については後述する。バッファa2018からData3008へ受信するメッセージのデータを書き込む。
【0087】
ステップ905では、ステップ904のリターンパラメータから、バッファ a2018からData3008へ受信するメッセージのデータを書き込めたか判定する。
【0088】
書き込めた場合には、ステップ906で、受信するメッセージがUnqueuedメッセージの場合(3012)、Data3008をBuffer3009へ書き込む。
【0089】
受信するメッセージがQueuedメッセージの場合(3012)、Data3008をFIFOBuffer(3029,3037)へ書き込む。
【0090】
最後にステップ907で、メッセージオブジェクトa2015からAPa2012 へデータを読み込む。
【0091】
図12は、図11のステップ907の処理詳細を示すフローチャートである。図12を用いて、ステップ907を説明する。
【0092】
まずステップ1100で、Size3002を参照して、受信メッセージのデータサイズを決定する。
【0093】
次にステップ1101で、受信するメッセージがQueuedメッセージであるか判定する。
【0094】
Queuedメッセージである場合、まずステップ1102で、
sQueuedMsgObjRef3021を参照して、sQueuedMsgObjA3022のアドレスを決定する。
次にステップ1103で、Status3024を参照して、FIFOBufferA3029 に受信メッセージがあるか判定する。
【0095】
受信メッセージがある場合、まずステップ1104で、ReadDataRef3027 を参照して、FIFOBufferA3029からAPa2012へ受信データを読み込む。
【0096】
次にステップ1105で、ReadDataRef3027を更新する。
【0097】
そしてステップ1106で、FIFOBufferA3029は空か判定する。
【0098】
空であればステップ1107で、Status3024に、FIFOBufferA3029 は空であることを示す値を格納する。
【0099】
空でなければステップ1108で、Status3024 に、FIFOBufferA3029は空でないことを示す値を格納する。
【0100】
ステップ1101の判定で、Queuedメッセージでない場合、まずステップ1109で、DataRef3004,Size3002 を参照して、Buffer3009の読み込みアドレスを決定する。
【0101】
次にステップ1110で、Buffer3009からAPa2012 へ受信データを読み込む。
そしてステップ1111で、Status3007に、Buffer3009は空であることを示す値を格納する。
【0102】
(e)CANドライバ
次にCANドライバ2009について詳細に説明する。まずCANドライバの構成について説明する。CANドライバ2009は、図1に示すように、バッファ2031,メッセージ属性テーブル2021,メッセージ送信処理2032,メッセージ受信処理2033,メッセージ送信・受信完了割り込み処理2034で構成される。
【0103】
バッファ2031は、バッファa2018,バッファb2019,バッファ c2020等の複数のバッファで構成される。バッファ2031を構成するバッファの数は、送信・受信メールボックス2023を構成するメールボックスの数だけ用意し、各バッファは、各メールボックスの専用バッファとする。例えば、メールボックスa2028の専用バッファをバッファa2018とした場合、バッファは、Data6003と同様の、メッセージのデータ格納領域である。
【0104】
図13は、メッセージ属性テーブル2021の詳細な構成図である。メッセージ属性テーブル2021は、メールボックス番号4001,MessageID4002,DataSize4003,QUEUED4004,LOCKED4005,NOMSG4006,LIMIT4007で構成される。メールボックス番号4001は、各メールボックスのメールボックス番号を記憶する領域である。MessageID4002 は、各メールボックス番号ごとに、メールボックスに登録されたメッセージIDを記憶する領域である。DataSize4003は、各メールボックス番号ごとに、メールボックスに登録されたメッセージのデータサイズを記憶する領域である。MessageID4002,DataSize4003 は、例えば、メールボックスa2028を構成するMessageID6001,DataSize6002 と同様の記憶領域である。QUEUED4004は、各メールボックス番号ごとに、メッセージがQueuedメッセージであるか、Unqueuedメッセージであるかを記憶する領域である。メッセージがQueuedメッセージである場合にビットセットされる。LOCKED4005は、各メールボックス番号ごとに、メールボックスに格納されたメッセージが、メッセージ送信要求を受けて、ネットワーク2005へのメッセージ送信を実行中であるか、メッセージ送信要求を受けておらず、ネットワーク2005へのメッセージ送信を行っていないかを記憶する領域である。LOCKED4005は、メールボックスに格納されたメッセージが、メッセージ送信要求を受けて、ネットワーク2005へのメッセージ送信を実行中である場合にビットセットされる。NOMSG4006 は、各メールボックス番号ごとに、バッファ2031に受信メッセージが貯まっているか、受信メッセージが貯まっていないかを記憶する領域である。NOMSG4006 は、バッファ2031に受信メッセージが貯まっていない場合にビットセットされる。LIMIT4007 は、各メールボックス番号ごとに、バッファ2031に受信メッセージが限度まで貯まっているか、受信メッセージが限度まで貯まっていないかを記憶する領域である。LIMIT4007 は、バッファ2031の各バッファに受信メッセージが限度まで貯まっている場合にビットセットされる。本実施例ではQueuedメッセージ,Unqueuedメッセージを扱うため、例えば、バッファ2031にQueuedメッセージをキューイングするFIFOバッファ等を設ける必要がある。
【0105】
Unqueuedメッセージは、キューイングが不要なメッセージである。バッファ2031の各バッファをFIFOバッファとして実装した場合、FIFOバッファあふれのときにLIMIT4007 はビットセットされる。
【0106】
次にCANドライバの動作について説明する。CANドライバの処理は、アプリケーションプログラムやOSEK−COMとは別のタスクで実行される。まずCANドライバのメッセージ送信処理2032について詳細に説明する。本実施例では、OSEK−COMが、図9のステップ505により、CANドライバのメッセージ送信処理を呼び出すと、CANドライバのメッセージ送信処理タスクが起動される。CANドライバのメッセージ送信処理の呼び出しが複数発生すると、それらに対応して複数のタスクが起動される。
【0107】
図14は、CANドライバのメッセージ送信処理2032の処理詳細を示すフローチャートである。図14を用いて、CANドライバの送信処理を説明する。まずステップ600で、メッセージ属性テーブル2021を用いて、送信するメッセージのメッセージIDから、メールボックス番号を決定する。
【0108】
次にステップ601で、LOCKED4005にビットセットされているか判定する。ビットセットされている場合は、ステップ602で、リターンパラメータに、
Data6003に送信するメッセージを書き込めなかったことを示す値を格納する。
【0109】
ビットセットされていない場合は、まずステップ603で、LOCKED4005にビットセットする。
【0110】
次にステップ604で、APa2012が送信するメッセージのデータをData6003 に書き込む。
【0111】
そしてステップ605で、TXPR5002にビットセットして、CANコントローラ2003にネットワーク2005へのメッセージ送信を要求する。
【0112】
ステップ606では、リターンパラメータに、Data6003に送信するメッセージを書き込めたことを示す値を格納する。
【0113】
以上の処理が終了すると、CANドライバのメッセージ送信タスクは終了する。
【0114】
次にCANドライバのメッセージ受信処理2033について詳細に説明する。本実施例では、OSEK−COMが図11のステップ904によりCANドライバのメッセージ受信処理を呼び出すと、CANドライバの受信処理タスクが起動される。CANドライバのメッセージ受信処理の呼び出しが複数発生すると、それらに対応して複数のタスクが起動される。
【0115】
図15は、CANドライバのメッセージ受信処理2033の処理詳細を示すフローチャートである。図15を用いて、CANドライバの受信処理を説明する。
まずステップ1000で、メッセージ属性テーブル2021を用いて、受信するメッセージのメッセージIDから、メールボックス番号を決定する。
【0116】
ステップ1001では、MBIMR5005にビットセットする。
【0117】
ステップ1002では、NOMSG4006にビットセットされているか判定する。
【0118】
ステップ1002の判定においてビットセットされている場合は、ステップ 1003で、リターンパラメータに、バッファa2018に受信するメッセージが書き込まれていないことを示す値を格納する。
【0119】
ステップ1002の判定においてビットセットされていない場合は、まずステップ1004で、LIMIT4007 にビットセットされているか判定する。
【0120】
ステップ1004の判定においてビットセットされている場合は、まずステップ1005で、リターンパラメータには、バッファa2018があふれていることを示す値を格納する。
【0121】
次にステップ1006で、LIMIT4007をクリアする。
【0122】
ステップ1004の判定においてビットセットされていない場合は、ステップ1007で、リターンパラメータには、バッファa2018があふれていないことを示す値を格納する。
【0123】
そしてステップ1008では、バッファa2018からData3008へ受信するメッセージのデータを書き込む。
【0124】
ステップ1009では、NOMSG4006 にビットセットする。
【0125】
ステップ1010では、MBIMR5005 をクリアする。
【0126】
以上の処理が終了すると、CANドライバのメッセージ受信タスクは終了する。
【0127】
次に、CANドライバのメッセージ送信・受信完了割り込み処理2034について詳細に説明する。図16は、メッセージ送信・受信完了割り込み処理2034の処理詳細を示すフローチャートである。図16を用いて、メッセージ送信・受信完了割り込み処理について説明する。
【0128】
まずステップ800で、CANコントローラ2003は、メッセージ送信完了割り込みか判定する。
【0129】
メッセージ送信完了割り込みである場合は、ステップ801の条件が成立する間、すなわち、CANコントローラ2003のメールボックス数だけ、メールボックス番号の小さいものから順番に、ステップ802からステップ804の手順を繰り返して実行する。
【0130】
ステップ802で、TXACK5003 にビットセットされているか判定する。
【0131】
ビットセットされている場合は、まずステップ803で、LOCKED4005をクリアする。
【0132】
次にステップ804で、TXACK5003 をクリアする。
【0133】
ステップ805では、メッセージ送信完了割り込みフラグをクリアする。
【0134】
ステップ806で、CANコントローラ2003は、メッセージ受信完了割り込みか判定する。
【0135】
メッセージ受信完了割り込みである場合は、ステップ807の条件が成立する間、すなわち、CANコントローラ2003のメールボックス数だけ、メールボックス番号の小さいものから順番に、ステップ808からステップ815の手順を繰り返して実行する。
【0136】
ステップ808で、RXPR5004にビットセットされているか判定する。
【0137】
ビットセットされている場合は、ステップ809で、QUEUED4004にビットセットされているか判定する。
【0138】
ステップ809の判定で、ビットセットされている場合は、ステップ810で、NOMSG4006にビットセットされているか判定する。
【0139】
ステップ810の判定で、ビットセットされている場合は、ステップ811で、メールボックスa2028からバッファa2018へ受信メッセージを書き込む。
【0140】
ステップ810の判定で、ビットセットされていない場合は、ステップ812で、LIMIT4007にビットセットする。
【0141】
ステップ809の判定で、ビットセットされていない場合は、ステップ813で、メールボックスa2028からバッファa2018へ受信メッセージを書き込む。
【0142】
ステップ814では、NOMSG4006をクリアする。
【0143】
ステップ815では、RXPR5004をクリアする。
【0144】
(f)OS
次にOS2050について詳細に説明する。OS2050は、タスク優先順位管理テーブル2051とタスクのスケジューリングを行うスケジューラ2052を持つ。タスク優先順位管理テーブル2051を用いたスケジューラ2052のタスクスケジューリングの方法について説明する。
【0145】
図17は、タスク優先順位管理テーブルの構成図である。図17を用いて、タスク優先順位管理テーブルの構成について説明する。タスク優先順位管理テーブルは、メッセージのメッセージID1200とタスク優先順位1201で構成される。例えば、メッセージIDの優先順位が100,200,300の順で高いとすると、メッセージIDの優先順位に対応して、そのメッセージを処理するタスクの優先順位も1,2,3の順で高くなるように、タスク優先管理テーブルをあらかじめ設定しておく。スケジューラ2052は、タスク優先順位管理テーブル2051を参照して、タスク優先順位が高いタスクを優先的に起動する。
【0146】
本実施例では、OSEK−COM2008 からの呼び出しにより、CANドライバ2009のメッセージ送信処理2032やメッセージ受信処理2033のタスクが起動される。CANドライバ2009のメッセージ送信処理2032のタスク起動により、送信・受信メールボックス2023に送信メッセージを格納して、CANコントローラ2003にネットワーク2005への送信要求ができるとする。
【0147】
メッセージIDが300のメッセージを送信する、CANドライバのメッセージ送信処理タスクを起動する場合、スケジューラ2052は、タスク優先順位管理テーブル2051を参照して、そのタスクを優先順位3で起動する。起動されたタスクは、CANドライバ2009を用いて、送信・受信メールボックス2023に送信メッセージを格納して、CANコントローラ2003にネットワーク2005への送信を要求する。
【0148】
メッセージIDが300のメッセージを送信する、CANドライバのメッセージ送信処理タスクが起動中に、メッセージIDが100のメッセージを送信する、CANドライバのメッセージ送信処理タスクを後から起動する場合、スケジューラ2052は、タスク優先順位管理テーブル2051を参照して、そのタスクを優先順位1で起動すると同時に、優先順位3で起動中のタスクを一時待機させる。これにより、メッセージIDが300のメッセージより先に、メッセージ IDが100のメッセージを送信・受信メールボックス2023に格納して、 CANコントローラ2003にネットワーク2005への送信を要求できる。
【0149】
CANドライバのメッセージ受信処理タスクも同様に、受信したメッセージ IDに応じた優先順位で起動される。
【0150】
本発明によれば、あるCANドライバのメッセージ送信処理タスクが、CANコントローラのメールボックスへメッセージを格納して、ネットワークへのメッセージ送信要求を実行中であっても、後から起動された別のCANドライバのメッセージ送信処理タスクが、優先順位の高いメッセージをCANコントローラのメールボックスへ格納して、ネットワークへのメッセージ送信要求を実行することができる。これにより、最高優先順位のメッセージを常に最高優先順位で送信することができ、メッセージ送信のリアルタイム性を向上させることができる。また本発明によれば、あるCANドライバのメッセージ受信処理タスクが、 CANコントローラのメールボックスからOSEK−COMのメッセージオブジェクトへメッセージを格納中であっても、後から起動された別のCANドライバのメッセージ受信処理タスクが、優先順位の高いメッセージをCANコントローラのメールボックスからOSEK−COMのメッセージオブジェクトへメッセージを格納することができる。これにより、最高優先順位のメッセージを常に最高優先順位で受信することができ、メッセージ受信のリアルタイム性を向上させることができる。
【0151】
(2)本発明の他の実施例
これまでの説明では、CANドライバに、受信メッセージを一時記憶するバッファを設けたが、バッファを設けずにCANコントローラから受信メッセージを直接OSEK−COMのメッセージオブジェクトに書き込んでもよい。これにより、メッセージ受信処理実行時間の削減やメモリ資源の節約ができる。
【0152】
また、複数のメールボックスを有するCANコントローラを用い、各メールボックスには特定のメッセージIDを1つだけ割り当てたが、1つのメールボックスに複数のメッセージIDを割り当てることもできる。これにより、CANコントローラが有するメールボックスの数に関係なく、メッセージIDの異なる多種類のメッセージを送信,受信することができる。
【0153】
更に、CANドライバに、受信メッセージを一時記憶するバッファを1つのメールボックスに対して1つずつ設けたが、1つのメールボックスに対して複数のバッファを設けることができる。これにより、1つのメールボックスに複数のメッセージを受信した場合、受信メッセージのメッセージIDごとにバッファリングすることができ、メッセージの優先順位に応じてCANドライバのメッセージ受信処理タスクを起動することで、メッセージ受信のリアルタイム性を向上させることができる。
【0154】
また、CANドライバに、受信メッセージを一時記憶するバッファを設けたが、送信メッセージを一時記憶するバッファを設けてもよい。またバッファは、1つのメールボックスに対して複数のバッファを設けてもよい。これにより、1つのメールボックスを用いて複数のメッセージを送信する場合、送信メッセージのメッセージIDごとにバッファリングすることができ、メッセージの優先順位に応じてCANドライバのメッセージ送信処理タスクを起動することで、メッセージ送信のリアルタイム性を向上させることができる。
【0155】
CANプロトコルを使用したが、他の通信プロトコルを使用してもよい。これにより、CANプロトコルだけでなく、他のプロトコルへ対応できる。
【0156】
通信ライブラリとしてOSEK−COMを使用したが、メッセージ送信処理,メッセージ受信処理を行う他の通信ライブラリを使用してもよい。これにより、OSEK−COMだけでなく、他の通信ライブラリへ対応できる。
【0157】
【発明の効果】
本発明によれば、最高優先順位のメッセージを常に最高優先順位で送信することができ、メッセージ送信のリアルタイム性を向上させる効果がある。
【図面の簡単な説明】
【図1】リアルタイム分散システムの構成図である。
【図2】リアルタイム分散システムの制御ユニット中のCANコントローラを構成する、メールボックスの詳細な構成図である。
【図3】CANコントローラの、コントロールレジスタの詳細な構成図である。
【図4】リアルタイム分散システムの制御ユニット中のOSEK−COMを構成する、メッセージオブジェクトの詳細な構成図である。
【図5】メッセージ送信処理の流れを示すフローチャートである。
【図6】メッセージ送信処理の、メッセージオブジェクトのデータおよびバッファ更新の流れを示すフローチャートである。
【図7】メッセージ送信処理の、メッセージオブジェクトのバッファ更新の流れを示すフローチャートである。
【図8】メッセージ送信処理の、メッセージオブジェクトのFIFOバッファ更新の流れを示すフローチャートである。
【図9】メッセージ送信処理の、Queuedメッセージの送信の流れを示すフローチャートである。
【図10】メッセージ送信処理の、Unqueuedメッセージの送信の流れを示すフローチャートである。
【図11】メッセージ受信処理の流れを示すフローチャートである。
【図12】メッセージ受信処理の、メッセージオブジェクトからのメッセージ受信の流れを示すフローチャートである。
【図13】リアルタイム分散システムの制御ユニット中のCANドライバを構成する、メッセージ属性テーブルの詳細な構成図である。
【図14】ローラによるメッセージ送信の流れを示すフローチャートである。
【図15】CANドライバ内バッファからのメッセージ受信の流れを示すフローチャートである。
【図16】メッセージ送信・受信完了割り込み処理の流れを示すフローチャートである。
【図17】リアルタイム分散システムの制御ユニット中のOSを構成する、タスク優先順位管理テーブルの詳細な構成図である。
【符号の説明】
2000…制御ユニット、2001…CPU、2002…メモリ、2003…CANコントローラ、2004…バス、2005…ネットワーク、2006…アプリケーションプログラム、2008…OSEK−COM、2009…CANドライバ、2010…OSEK−COMのメッセージ送信処理、2011…OSEK−COMのメッセージ受信処理、2021…メッセージ属性テーブル、2022…コントロールレジスタ、2023…送信・受信メールボックス、2024…優先順位制御部、2025…送信バッファ、2026…受信バッファ、2027…受信フィルタ、2031…バッファ、2032…CANドライバのメッセージ送信処理、2033…CANドライバのメッセージ受信処理、2034…CANドライバのメッセージ送信・受信完了割り込み処理、2050…OS、2051…タスク優先順位管理テーブル、2052…スケジューラ。
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a network-connected real-time distributed system, and more particularly to a real-time distributed system suitable for performing message transmission / reception processing according to a priority given to a message.
[0002]
[Prior art]
When transmitting and receiving messages via a network, a network controller that implements network communication by hardware and a network driver that performs network communication using the network controller are used. Now, a buffer for storing transmission / reception messages provided in the network controller is called a mailbox. For example, in the case of transmission, transmission requests from the application to the network driver are arranged in a transmission request queue. The network driver extracts transmission requests one by one from the transmission request queue, stores transmission messages in the mailbox, and performs network transmission processing. Normally, since the transmission request queue is queued by FIFO, network transmission processing is performed in the order of transmission request time. However, in a real-time distributed system, it is desired to add a priority to a message and perform network communication processing according to the priority. Therefore, for example, as described in CQ Publisher, Interface (1994, No. 12), pages 72 to 148, queued transmission requests are processed according to the priority of messages transmitted by the application. There is a method of performing priority control of network communication by switching. Thereby, the network driver can perform the network transmission processing according to the priority order of the transmission data at the time when the network driver takes out the transmission request from the transmission request queue, not in the order of the transmission request time.
[0003]
[Problems to be solved by the invention]
However, in the above prior art, once the network driver is activated and the network transmission process is started, even if a transmission request is made for a message having a higher priority than the data currently being processed in the network transmission process, Until the transmission process is completed, there is a problem that a message having a high priority cannot be subjected to the network transmission process.
[0004]
For example, consider a real-time distributed system in which a plurality of network controllers are connected. This real-time distributed system uses a network that performs network priority control according to the priority added to a message. When a plurality of network controllers transmit a message to the network, the network priority control is performed according to the priority added to the message, and the transmission request for the highest priority message among the messages requested for transmission is performed. The controller can send a message to the network. At this time, the network controller that has made a transmission request for a low priority message delays message transmission to the network. Therefore, if this network controller cannot perform network transmission processing of high priority messages until the network transmission processing of low priority messages is completed, the network transmission processing of high priority messages is further delayed, Problems arise in guaranteeing real-time properties.
[0005]
Therefore, an object of the present invention is to provide a distributed processing system capable of transmitting a message having the highest priority among messages requested for transmission even after the start of network driver processing.
[0006]
[Means for Solving the Problems]
The above purpose is to execute a plurality of message transmission / reception processes by a network controller storing a plurality of transmission / reception messages and perform network communication, and a transmission / reception message to be handled. network The communication priority and the transmission / reception message network A real-time distributed system having a network driver priority management unit that determines a network driver processing priority corresponding to a communication priority, and a scheduling unit that executes the network driver processing according to the network driver processing priority Can be achieved.
[0007]
In addition, the object is to handle a message storage unit that stores a plurality of transmission / reception messages, and a network driver that performs a network communication by executing transmission / reception processing of a plurality of messages stored in the message storage unit using a network controller. For sending and receiving messages network The communication priority and the transmission / reception message network By a real-time distributed system having a network driver priority management unit that determines the priority of network driver processing corresponding to the communication priority and a scheduling unit that executes network driver processing according to the network driver processing priority Can be achieved.
[0008]
In addition, a network driver that performs network communication using a storage unit that stores a plurality of transmission / reception messages and a network controller, and transmission / reception processing of a plurality of messages stored in the message storage unit are executed using network driver means. Communication processing library and handling of sent / received messages network The communication priority and the transmission / reception message network By a real-time distributed system having a network driver priority management unit that determines the priority of network driver processing corresponding to the communication priority and a scheduling unit that executes network driver processing according to the network driver processing priority Can be achieved.
[0009]
With such a configuration, even if the network driver is started once and the task of message transmission processing is started, if a transmission request is made for a message having a higher priority than the message currently being transmitted, the current Without waiting for the completion of the network transmission processing, the network driver transmission processing task with a higher priority is activated in parallel, and the transmission processing of the message with the higher priority is performed first. As a result, it is possible to transmit a message having the highest priority among the messages requested to be transmitted. Similarly, when a message with a higher priority is received during the processing of a certain message reception task, the reception processing task of the network driver with a higher priority is activated and the reception process is performed first. As a result, messages can be received in order from the highest priority message.
[0010]
DETAILED DESCRIPTION OF THE INVENTION
(1) One embodiment of the present invention
(A) Overall configuration of one embodiment of the present invention
FIG. 1 shows a configuration of a real-time distributed system according to an embodiment of the present invention. In the real-time distributed system, control units 2000 and 2060 are connected by a network 2005. The network of the present invention is, for example, issued by the Open DeviceNet Vendor Association, DeviceNet specification (Volume 1 (Volume 1), Release 2.0 (Release 2.0), 1998), the CAN (Controller Area Network) described in Chapter 2 2.1-2.8 is used. The control unit 2000 includes a CPU 2001, a memory 2002, and a CAN controller 2003, which are connected by a bus 2004. The CAN controller 2003 is connected to a CAN controller built in another control unit 2060 via the network 2005. The memory 2002 stores application programs 2006, OSEK-COM 2008, a CAN driver 2009, and an OS 2050. Here, OSEK-COM is an OSEK / VDX Communication specification (version 2.1 (Version 2.)) issued by OSEK (OSEK). 1), revision 1 (revision 1), 1998), which is a program for processing the OSEK-COM protocol. The CPU 2001 reads a program stored in the memory 2002 and executes program processing. OS2050 has a multitasking function that can execute multiple tasks in parallel. The CAN controller 2003 is hardware that performs message transmission and message reception with another control unit 2060 via the network 2005. The CAN controller 2003, application program 2006, OSEK-COM2008, CAN driver 2009, and OS 2050 will be described in detail below.
[0011]
(B) CAN controller
First, the CAN controller will be described in detail. The communication protocol used by the CAN controller 2003 is the CAN protocol. In the CAN protocol, each message has a unique message ID. A priority is assigned to the message ID, and priority control (bus arbitration) of the network 2005 is performed based on the priority of the message ID. Bus arbitration by message ID will be described. For example, consider a case where the control unit 2000 is connected to a plurality of control units having the same configuration as the control unit 2000 via the network 2005. When each control unit transmits a message to the network 2005 at the same time, only the control unit that transmits the message having the highest priority message ID among the messages acquires the right to use the network 2005 (bus Messages can be preferentially sent to the network 2005.
[0012]
Next, the configuration of the CAN controller will be described in detail. The CAN controller 2003 includes a control register 2022, a transmission / reception mailbox 2023, a priority control unit 2024, a transmission buffer 2025, a reception filter 2027, and a reception buffer 2026. Hereinafter, these will be described in detail.
[0013]
The transmission / reception mailbox 2023 will be described. The transmission / reception mailbox 2023 includes a plurality of mailboxes such as a mailbox a 2028, a mailbox b 2029, and a mailbox c 2030, and stores transmission messages and reception messages. FIG. 2 is a detailed configuration diagram of the mailbox a2028. Mailbox a2028 has mailbox number 6004
Consists of MessageID6001, DataSize6002, and Data6003. A mailbox number 6004 is uniquely given to each mailbox of the transmission / reception mailbox 2023, and is an area for storing a mailbox number.
[0014]
MessageID6001 is an area for storing message IDs of transmission messages and reception messages. Mailbox a2028 stores only transmitted messages and received messages having MessageID6001. DataSize 6002 is an area for storing the data size of transmission messages and reception messages to be stored. Data 6003 is a data storage area for transmission messages and reception messages. The detailed configuration of the mailbox b2029 and the mailbox c2030 is the same as that of the mailbox a2028.
[0015]
FIG. 3 is a detailed configuration diagram of the control register 2022. The control register 2022 has mailbox numbers 5001, TXPR5002, TXACK5003,
It consists of RXPR5004 and MBIMR5005. Mailbox number 5001 is an area for storing a mailbox number for each mailbox. The TXPR 5002 is an area for storing a message transmission request for each mailbox number, and is set when a message transmission is requested to the CAN controller 2003. TXACK 5003 is an area for storing message transmission completion for each mailbox number, and is set when CAN controller 2003 completes message transmission. The RXPR 5004 is an area for storing message reception completion for each mailbox number, and is set when the CAN controller 2003 completes message reception. The MBIMR 5005 is an area for storing interrupt prohibition upon completion of message transmission or completion of message reception for each mailbox number. From the CAN controller 2003 to the CPU 2001 upon completion of message transmission or completion of message reception. Set a bit to disable interrupts.
[0016]
The priority control unit 2024 transfers the message in the corresponding mailbox to the transmission buffer 2025 when a message transmission request is generated. Further, when a plurality of message transmission requests are generated at the same time, the message ID stored in each corresponding mailbox is compared, and the message in the mailbox storing the message ID with the highest priority is sent to the transmission buffer. Transfer to 2025. The transmission buffer 2025 stores the message transferred from the priority control unit 2024. The stored message participates in bus arbitration based on the message ID. If the bus arbitration by the message ID is won, the message is transmitted to the network 2005. If the bus arbitration by the message ID is lost, the message is not transmitted to the network 2005 and waits for the next bus arbitration opportunity. When the bus arbitration by the message ID is lost and when a message transmission request is generated for a message having a message ID with a higher priority, the priority control unit 2024 assigns a message ID with a higher priority. The stored mailbox message is transferred to the transmission buffer 2025.
[0017]
The reception buffer 2026 stores a reception message from the network 2005.
[0018]
The reception filter 2027 compares the message ID of the message stored in the reception buffer 2026 with the message ID registered in each mailbox, and stores the message in the corresponding mailbox if there is the same message ID.
Next, the application program 2006, OSEK-COM2008, CAN driver 2009, and OS2050 stored in the memory 2002 will be described in detail.
[0019]
(C) Application program
The application program will be described. As shown in FIG. 1, the application program 2006 includes a plurality of application programs such as APa2012, APb2013, and APc2014. In this embodiment, these application programs are executed as separate tasks.
[0020]
(D) OSEK-COM
Next, the configuration of OSEK-COM will be described in detail. OSEK-COM2008 includes a plurality of message objects such as a message object a2015, a message object b2016, and a message object c2017, a message transmission process 2010, and a message reception process 2011. There are two types of messages used in the present embodiment: queued messages and unqueued messages. A Queued message is a message that requires queuing and cannot be overwritten. The Unqueued message is a message that does not require queuing and can be overwritten.
[0021]
FIG. 4 is a detailed configuration diagram of the message object a2015. Message object a2015 includes sMsgObj3001, Status3007, Data3008, Buffer3009, sMsgNetParams3013, sQueuedMsgInfo3018, sQueuedMsgObjA3022, sQueuedMsgObjB3030, multiple sQueuedMsgObj, Status3032 NULL.
[0022]
Status 3007 is an area for storing the status of sMsgObj (transmission status, buffer availability). Status 3024 is an area for storing the status of sQueuedMsgObjA3022 (buffer free status). Status 3032 is an area for storing the status of sQueuedMsgObjB3030 (buffer free status). Data 3008 is an area for storing message data. Buffer 3009 is a buffer of Data 3008 when the message is an Unqueued message (3012). FIFOBufferA3029 is a Data3008 buffer when the message is a Queued message (3012). FIFOBuffer B3037 is a buffer of Data3008 when the message is a queued message (3012).
sMsgObj3001 has Size3002, StatusRef3003, DataRef3004,
It consists of sQueuedMsgInfoRef3005 and sMsgNetParamsRef3006. Size 3002 is an area for storing the data size of the message. StatusRef3003 is a pointer to Status3007. DataRef3004 is a pointer to Data3008.
[0023]
If the message is a Queued message, sQueuedMsgInfoRef3005
Pointer to sQueuedMsgInfo3018. sQueuedMsgInfoRef3005 is a pointer to NULL 3011 when the message is an Unqueued message.
[0024]
The sMsgNetParamsRef 3006 is a pointer to the sMsgNetParams3013 when message transmission or message reception is via the network 2005.
[0025]
The sMsgNetParamsRef 3006 is a pointer to the NULL 3011 when message transmission or message reception is not via the network 2005.
[0026]
The sMsgNetParams 3013 includes TransferDir 3014, TransferMode 3015, TimePeriod 3016, and Handle 3017. TransferDir 3014 is an area for storing whether the message is a transmission message or a message is a reception message.
[0027]
TransferMode 3015 is an area for storing whether Periodic message transmission is used or Periodic message transmission is not used. When using periodicical message transmission, an application program can send a message every periodic time. The TimePeriod 3016 is an area for storing the period time when using Periodical message transmission. Handle 3017 is an area for storing the message ID of the message.
[0028]
The sQueuedMsgInfo3018 includes QueueDepth3019, NRec3020, and sQueuedMsgObjRef3021. The QueueDepth 3019 is an area for storing the FIFO buffer queuing depth, that is, the memory use area. The NRec 3020 is an area for storing the number of message object users. For example, when two application programs APa2012 and APb2013 use one message object a2015,
NRec3020 is 2. FIG. 4 shows a case where NRec3020 is 2, and the message object a2015 has two sQueuedMsgObj (3022, 3030), two Status (3024, 3032), and two FIFOBuffers (3029, 3037). . sQueuedMsgObjRef3021 is a pointer to sQueuedMsgObj. The configuration of sQueuedMsgObj will be described using sQueuedMsgObjA3022 as an example. sQueuedMsgObjA3022 is StatusRef3023, BoundaryDataRef3025,
It consists of WriteDataRef3026, ReadDataRef3027, and sQueuedMsgObjRef3028.
[0029]
StatusRef3023 is a pointer to Status3024. BoundaryDataRef3025 is the start address of FIFOBufferA3029. WriteDataRef3026 is a write address of FIFOBuffer A3029. ReadDataRef3027 is a read address of FIFOBufferA3029. sQueuedMsgObjRef3028 is a pointer to sQueuedMsgObjB3030. The configuration of sQueuedMsgObjB3030 is the same as the configuration of sQueuedMsgObjA3022. However, sQueuedMsgObjRef3036 is a pointer to NULL3038.
[0030]
Next, the operation of OSEK-COM will be described. First, the OSEK-COM message transmission processing 2010 will be described in detail. The message transmission process 2010 is a program for each application program to perform actual message transmission using OSEK-COM2008. In the present embodiment, the OSEK-COM message transmission process is executed by the task of the application program that called it. FIG. 5 is a flowchart showing the flow of the message transmission process 2010. The message transmission process 2010 will be described with reference to FIG. For example, it is assumed that APa2012 uses the message object a2015 and the mail box a2028 to send a message.
[0031]
First, in step 100, APa2012 determines a message object a2015 to be used for message transmission.
[0032]
In step 101, the sMsgNetParamsRef 3006 is referenced to determine whether the message transmission is in-unit communication or via the network 2005.
[0033]
In the case of intra-unit communication, in step 102, the data of the message transmitted by APa2012 is written in Data3008.
[0034]
When the message to be transmitted is an Unqueued message, Data3008 is written to Buffer3009.
[0035]
When the message to be transmitted is a Queued message, Data 3008 is written in FIFOBuffer (3029, 3037).
[0036]
If the message transmission is not communication within the unit, that is, communication via a network, it is determined in step 103 whether the message to be transmitted is a transmission message with reference to TransferDir3014.
[0037]
Next, in step 104, it is determined whether the message to be transmitted is a queued message.
[0038]
If the message to be transmitted is a queued message, in step 105, queued message transmission processing is performed.
[0039]
If the message to send is an Unqueued message, at step 106,
Performs Unqueued message transmission processing.
[0040]
FIG. 6 is a flowchart showing details of the processing in step 102 of FIG. Step 102 will be described with reference to FIG.
[0041]
First, in step 200, the data of the message transmitted by APa2012 is written in Data3008.
[0042]
In step 201, if the message to be transmitted is an Unqueued message,
Write Data3008 to Buffer3009.
[0043]
When the message to be transmitted is a Queued message, Data3008 is written in FIFOBuffer (3029, 3037).
[0044]
FIG. 7 is a flowchart showing details of the processing in step 201 of FIG. Step 201 will be described with reference to FIG.
[0045]
First, in step 300, it is determined whether the message to be transmitted is a queued message.
[0046]
If the message to be sent is a queued message, in step 301,
Write Data3008 to FIFOBuffer (3029, 3037).
[0047]
If the message to be transmitted is not a queued message, first, in step 302, the dataref 3004 and size3002 are referenced to determine the write address of the buffer 3009. Next, in step 303, Data3008 is written into Buffer3009.
[0048]
FIG. 8 is a flowchart showing details of the processing in step 301 of FIG. Step 301 will be described with reference to FIG.
[0049]
First, in step 400, referring to Size 3002, the data size of the message to be transmitted is determined.
[0050]
In step 401, the address of Data3008 is determined with reference to DataRef3004.
[0051]
In step 402, the address of sQueuedMsgObjA3022 is determined with reference to sQueuedMsgObjRef3021.
[0052]
Next, while the condition of step 403 is satisfied, that is, while the determined address is not NULL, the procedure from step 404 to step 411 is repeated,
Write Data3008 to FIFOBuffer (3029, 3037). From Data3008
Steps 404 to 411 will be described by taking writing to FIFOBufferA3029 as an example.
[0053]
In step 404, it is determined whether the FIFOBuffer A3029 is overflowing.
[0054]
If it is overflowed, in Step 405, Status 3024 is set.
Write a value indicating that FIFOBufferA3029 is overflowing.
[0055]
If not, first, in step 406, referring to WriteDataRef3026, Data3008 is written to FIFOBufferA3029.
[0056]
Next, in step 407, WriteDataRef3026 is updated.
[0057]
In step 408, it is determined whether or not the buffer a2018 is overflowed by referring to LIMIT4007.
[0058]
If it is overflowed, a value indicating that the buffer a2018 is overflowed is written in the Status 3024 in step 409.
[0059]
If there is no overflow, a value indicating that the buffer a 2018 is not overflowed is written in the Status 3024 in Step 410.
[0060]
In step 411, the address of sQueuedMsgObjB3030 is determined with reference to sQueuedMsgObjRef3028.
[0061]
FIG. 9 is a flowchart showing details of the processing in step 105 of FIG. Step 105 will be described with reference to FIG.
[0062]
First, in step 500, it is determined whether Periodic message transmission is used with reference to TransferMode3015.
[0063]
When using Periodical message transmission, in step 501,
Referring to TimePeriod3016, Periodic message transmission is performed.
[0064]
If you do not use Periodical message transmission, first in step 502,
Referring to Size3002, the data size of the message to be transmitted is determined.
[0065]
Next, in step 503, the address of Data3008 is determined with reference to DataRef3004.
[0066]
In step 504, with reference to Handle 3017, the message ID of the message to be transmitted is determined.
[0067]
In step 505, the CAN driver transmission process 2032 is called, and a message is transmitted to the network 2005 using the CAN controller 2003. This call activates a task of CAN driver transmission processing, which will be described later.
[0068]
In step 506, it is determined from the return parameter in step 505 whether the message to be transmitted to Data 6003 has been written.
[0069]
If it can be written, first, in step 507, the data of the message transmitted by APa2012 is written in Data3008.
[0070]
Next, in step 508, Data3008 is written into FIFOBuffer (3029, 3037).
[0071]
FIG. 10 is a flowchart showing details of the processing in step 106 in FIG. Step 106 will be described with reference to FIG.
[0072]
First, in step 700, it is determined whether Periodic message transmission is used with reference to TransferMode3015.
[0073]
In the case of using Periodical message transmission, in step 701,
Referring to TimePeriod3016, Periodic message transmission is performed.
[0074]
When periodic message transmission is not used, first, in step 702, the size of the message to be transmitted is determined with reference to Size3002.
[0075]
Next, in step 703, the address of Data3008 is determined with reference to DataRef3004.
[0076]
In step 704, with reference to Handle 3017, the message ID of the message to be transmitted is determined.
[0077]
In step 705, a message is transmitted to the network 2005 using the CAN controller 2003.
[0078]
In step 706, it is determined from the return parameter in step 705 whether the message to be transmitted to Data 6003 has been written.
[0079]
If it can be written, first, in step 707, the data of the message transmitted by APa2012 is written in Data3008.
[0080]
Next, in step 708, Data3008 is written into Buffer3009.
[0081]
Next, the OSEK-COM message reception processing 2011 will be described in detail. The message reception process 2011 is a program for each application program to receive an actual message using OSEK-COM2008. In the present embodiment, the OSEK-COM message reception process is executed by the task of the application program that called it. FIG. 11 is a flowchart showing the flow of the message reception process 2011. The message reception process 2011 will be described with reference to FIG. For example, it is assumed that APa2012 receives a message using a message object a2015, a buffer a2018, and a mailbox a2028. The message received by APa2012 is stored in the mailbox a2028 by the CAN controller 2003, and stored in the buffer a2018 by the message transmission / reception completion interrupt processing 2034 of the CAN driver.
[0082]
First, in step 900, APa2012 determines the message object a2015 used for message reception.
[0083]
Next, in step 901, it is determined whether or not the received message is a received message with reference to TransferDir3014.
[0084]
In the case of a received message, first, in step 902, refer to DataRef3004,
Determine the address of Data3008.
[0085]
In step 903, with reference to Handle 3017, the message ID of the message to be received is determined.
[0086]
In step 904, the CAN driver reception process 2033 is called, and this call activates the task of the CAN driver reception process. Details of the process will be described later. The data of the message received from the buffer a2018 is written to Data3008.
[0087]
In step 905, it is determined from the return parameter in step 904 whether the data of the message received from the buffer a2018 to Data3008 has been written.
[0088]
If it can be written, in step 906, if the received message is an Unqueued message (3012), Data 3008 is written to Buffer 3009.
[0089]
When the received message is a queued message (3012), Data3008 is written into FIFOBuffer (3029, 3037).
[0090]
Finally, in step 907, data is read from message object a2015 to APa2012.
[0091]
FIG. 12 is a flowchart showing details of the processing in step 907 of FIG. Step 907 will be described with reference to FIG.
[0092]
First, in step 1100, the size of the received message is determined with reference to Size3002.
[0093]
Next, in step 1101, it is determined whether the received message is a queued message.
[0094]
If it is a Queued message, first in step 1102,
The address of sQueuedMsgObjA3022 is determined with reference to sQueuedMsgObjRef3021.
Next, in step 1103, with reference to Status3024, it is determined whether there is a received message in FIFOBufferA3029.
[0095]
If there is a received message, first, in step 1104, with reference to ReadDataRef3027, the received data is read from FIFOBuffer A3029 to APa2012.
[0096]
Next, in step 1105, ReadDataRef3027 is updated.
[0097]
In step 1106, it is determined whether FIFOBuffer A3029 is empty.
[0098]
If it is empty, in Step 1107, a value indicating that FIFOBufferA3029 is empty is stored in Status 3024.
[0099]
If it is not empty, in Step 1108, a value indicating that FIFOBuffer A3029 is not empty is stored in Status3024.
[0100]
If it is determined in step 1101 that the message is not a Queued message, first, in step 1109, the reading address of Buffer 3009 is determined with reference to DataRef 3004 and Size 3002.
[0101]
Next, in step 1110, received data is read from Buffer 3009 to APa2012.
In step 1111, a value indicating that Buffer 3009 is empty is stored in Status 3007.
[0102]
(E) CAN driver
Next, the CAN driver 2009 will be described in detail. First, the configuration of the CAN driver will be described. As shown in FIG. 1, the CAN driver 2009 includes a buffer 2031, a message attribute table 2021, a message transmission process 2032, a message reception process 2033, and a message transmission / reception completion interrupt process 2034.
[0103]
The buffer 2031 includes a plurality of buffers such as a buffer a2018, a buffer b2019, and a buffer c2020. The number of buffers constituting the buffer 2031 is the same as the number of mailboxes constituting the transmission / reception mailbox 2023, and each buffer is a dedicated buffer for each mailbox. For example, when the dedicated buffer for the mailbox a2028 is the buffer a2018, the buffer is a message data storage area similar to the Data 6003.
[0104]
FIG. 13 is a detailed configuration diagram of the message attribute table 2021. The message attribute table 2021 includes a mailbox number 4001, MessageID 4002, DataSize 4003, QUEUED4004, LOCKED4005, NOMSG4006, and LIMIT4007. Mailbox number 4001 is an area for storing the mailbox number of each mailbox. MessageID 4002 is an area for storing the message ID registered in the mailbox for each mailbox number. DataSize4003 is an area for storing the data size of the message registered in the mailbox for each mailbox number. MessageID4002 and DataSize4003 are storage areas similar to, for example, MessageID6001 and DataSize6002 constituting the mailbox a2028. The QUEUED 4004 is an area for storing whether the message is a queued message or an unqueued message for each mailbox number. Bit set if the message is a queued message. The LOCKED 4005 indicates that the message stored in the mailbox for each mailbox number has received a message transmission request and is currently transmitting a message to the network 2005 or has not received the message transmission request. This is an area for storing whether or not a message is being transmitted to. LOCKED4005 is set when the message stored in the mailbox receives a message transmission request and is currently performing message transmission to the network 2005. NOMSG4006 is an area for storing whether a received message is stored in the buffer 2031 or not for each mailbox number. NOMSG4006 is set when no received message is stored in the buffer 2031. LIMIT4007 is an area for storing, for each mailbox number, whether the received message is stored up to the limit in the buffer 2031 or whether the received message is not stored up to the limit. LIMIT4007 is set when the received message is stored up to the limit in each buffer of buffer 2031. In this embodiment, in order to handle queued messages and unqueued messages, it is necessary to provide, for example, a FIFO buffer for queuing queued messages in the buffer 2031.
[0105]
An Unqueued message is a message that does not require queuing. When each buffer of the buffer 2031 is implemented as a FIFO buffer, the LIMIT 4007 is set when the FIFO buffer overflows.
[0106]
Next, the operation of the CAN driver will be described. The CAN driver process is executed by a task different from the application program and OSEK-COM. First, the CAN driver message transmission processing 2032 will be described in detail. In this embodiment, when the OSEK-COM calls the CAN driver message transmission process in step 505 of FIG. 9, the CAN driver message transmission processing task is activated. When a plurality of CAN driver message transmission processing calls occur, a plurality of tasks are activated in response to them.
[0107]
FIG. 14 is a flowchart showing details of the CAN driver message transmission processing 2032. The CAN driver transmission process will be described with reference to FIG. First, in step 600, the mailbox number is determined from the message ID of the message to be transmitted using the message attribute table 2021.
[0108]
Next, in step 601, it is determined whether the bit is set in LOCKED4005. If the bit is set, in step 602, the return parameter is
Stores a value indicating that the message to be sent to Data6003 could not be written.
[0109]
If the bit is not set, first, in step 603, the bit is set to LOCKED4005.
[0110]
Next, in step 604, the data of the message transmitted by APa2012 is written in Data6003.
[0111]
In step 605, the bit is set in the TXPR 5002, and the CAN controller 2003 is requested to send a message to the network 2005.
[0112]
In step 606, a value indicating that the message to be transmitted to Data 6003 has been written is stored in the return parameter.
[0113]
When the above process ends, the CAN driver message transmission task ends.
[0114]
Next, the message reception processing 2033 of the CAN driver will be described in detail. In this embodiment, when the OSEK-COM calls the CAN driver message reception process in step 904 of FIG. 11, the CAN driver reception process task is activated. When a plurality of CAN driver message reception processing calls occur, a plurality of tasks are activated in response to them.
[0115]
FIG. 15 is a flowchart showing details of the message reception processing 2033 of the CAN driver. The CAN driver reception process will be described with reference to FIG.
First, in step 1000, the mailbox number is determined from the message ID of the received message using the message attribute table 2021.
[0116]
In step 1001, the bit is set in MBIMR5005.
[0117]
In step 1002, it is determined whether the bit is set in NOMSG4006.
[0118]
If the bit is set in the determination in step 1002, in step 1003, a value indicating that the message to be received is not written in the buffer a2018 is stored in the return parameter.
[0119]
If it is determined in step 1002 that the bit is not set, it is first determined in step 1004 whether the bit is set in LIMIT4007.
[0120]
If the bit is set in the determination in step 1004, first, in step 1005, a value indicating that the buffer a2018 is overflowing is stored in the return parameter.
[0121]
Next, at step 1006, LIMIT4007 is cleared.
[0122]
If the bit is not set in the determination in step 1004, a value indicating that the buffer a2018 is not overflowed is stored in the return parameter in step 1007.
[0123]
In step 1008, the data of the message received from the buffer a2018 is written to the data 3008.
[0124]
In step 1009, the bit is set in NOMSG4006.
[0125]
In step 1010, MBIMR5005 is cleared.
[0126]
When the above process ends, the CAN driver message reception task ends.
[0127]
Next, the message transmission / reception completion interrupt processing 2034 of the CAN driver will be described in detail. FIG. 16 is a flowchart showing details of the message transmission / reception completion interrupt processing 2034. The message transmission / reception completion interrupt process will be described with reference to FIG.
[0128]
First, in step 800, the CAN controller 2003 determines whether it is a message transmission completion interrupt.
[0129]
If it is a message transmission completion interrupt, the procedure from step 802 to step 804 is repeated while the condition of step 801 is satisfied, that is, from the smallest mailbox number by the number of mailboxes of the CAN controller 2003. To do.
[0130]
In step 802, it is determined whether the bit is set in TXACK5003.
[0131]
If the bit is set, first, in step 803, LOCKED4005 is cleared.
[0132]
In step 804, TXACK5003 is cleared.
[0133]
In step 805, the message transmission completion interrupt flag is cleared.
[0134]
In step 806, the CAN controller 2003 determines whether it is a message reception completion interrupt.
[0135]
If it is a message reception completion interrupt, the procedure from step 808 to step 815 is repeatedly executed while the condition of step 807 is satisfied, that is, from the smallest mailbox number by the number of mailboxes of the CAN controller 2003. To do.
[0136]
In step 808, it is determined whether the bit is set in RXPR5004.
[0137]
If the bit is set, it is determined in step 809 whether the bit is set in QUEUED4004.
[0138]
If it is determined in step 809 that the bit is set, it is determined in step 810 whether the bit is set in NOMSG4006.
[0139]
If it is determined in step 810 that the bit is set, the received message is written from the mailbox a2028 to the buffer a2018 in step 811.
[0140]
If it is determined in step 810 that the bit is not set, the bit is set in LIMIT 4007 in step 812.
[0141]
If it is determined in step 809 that the bit is not set, the received message is written from the mailbox a2028 to the buffer a2018 in step 813.
[0142]
In step 814, NOMSG4006 is cleared.
[0143]
In step 815, RXPR5004 is cleared.
[0144]
(F) OS
Next, OS2050 will be described in detail. The OS 2050 has a task priority management table 2051 and a scheduler 2052 that performs task scheduling. A task scheduling method of the scheduler 2052 using the task priority management table 2051 will be described.
[0145]
FIG. 17 is a configuration diagram of a task priority order management table. The configuration of the task priority order management table will be described with reference to FIG. The task priority order management table includes a message ID 1200 of a message and a task priority order 1201. For example, if the priority order of message IDs is high in the order of 100, 200, and 300, the priority order of tasks that process the message also becomes high in the order of 1, 2, and 3 in accordance with the priority order of message IDs. As described above, the task priority management table is set in advance. The scheduler 2052 refers to the task priority management table 2051 and preferentially activates a task with a higher task priority.
[0146]
In this embodiment, the task of the message transmission process 2032 and the message reception process 2033 of the CAN driver 2009 is activated by a call from OSEK-COM2008. Assume that the CAN driver 2009 stores the transmission message in the transmission / reception mailbox 2023 by the task activation of the message transmission processing 2032 of the CAN driver 2009, and can request the CAN controller 2003 to transmit to the network 2005.
[0147]
When a CAN driver message transmission processing task that transmits a message with a message ID of 300 is activated, the scheduler 2052 refers to the task priority management table 2051 and activates the task with priority 3. The activated task uses the CAN driver 2009 to store a transmission message in the transmission / reception mailbox 2023 and requests the CAN controller 2003 to transmit to the network 2005.
[0148]
When the message transmission processing task of the CAN driver that transmits a message with a message ID of 300 is activated and the message transmission processing task of the CAN driver that transmits a message with a message ID of 100 is activated later, the scheduler 2052 With reference to the task priority management table 2051, the task is activated with priority 1, and the task activated with priority 3 is temporarily held. As a result, the message ID 100 is stored in the transmission / reception mailbox 2023 before the message ID 300 message, and the CAN controller 2003 can be requested to transmit to the network 2005.
[0149]
Similarly, the message reception processing task of the CAN driver is activated in the priority order corresponding to the received message ID.
[0150]
According to the present invention, even if a message transmission processing task of a certain CAN driver stores a message in the mailbox of the CAN controller and is executing a message transmission request to the network, another CAN started later The message transmission processing task of the driver can store a high priority message in the mailbox of the CAN controller and execute a message transmission request to the network. As a result, the highest priority message can always be transmitted with the highest priority, and the real-time property of message transmission can be improved. Further, according to the present invention, even if a message reception processing task of a CAN driver is storing a message from the mailbox of the CAN controller to the message object of OSEK-COM, the message of another CAN driver activated later. The reception processing task can store a high priority message from the CAN controller mailbox to the OSEK-COM message object. As a result, the highest priority message can always be received with the highest priority, and the real-time property of message reception can be improved.
[0151]
(2) Other embodiments of the present invention
In the above description, the CAN driver is provided with the buffer for temporarily storing the received message. However, the received message may be directly written to the OSEK-COM message object from the CAN controller without providing the buffer. As a result, the message reception processing execution time can be reduced and memory resources can be saved.
[0152]
Further, a CAN controller having a plurality of mailboxes is used, and only one specific message ID is assigned to each mailbox. However, a plurality of message IDs can be assigned to one mailbox. Thereby, regardless of the number of mailboxes that the CAN controller has, various types of messages with different message IDs can be transmitted and received.
[0153]
Further, the CAN driver is provided with one buffer for temporarily storing received messages, one for each mailbox. However, a plurality of buffers can be provided for one mailbox. Thereby, when a plurality of messages are received in one mailbox, it can be buffered for each message ID of the received message, and by starting the message reception processing task of the CAN driver according to the priority of the message, The real-time property of message reception can be improved.
[0154]
Further, although the CAN driver is provided with a buffer for temporarily storing received messages, a buffer for temporarily storing transmission messages may be provided. A plurality of buffers may be provided for one mailbox. Thus, when a plurality of messages are transmitted using a single mailbox, the message can be buffered for each message ID of the transmitted message, and the message transmission processing task of the CAN driver is started according to the priority of the message. Thus, the real-time property of message transmission can be improved.
[0155]
Although the CAN protocol is used, other communication protocols may be used. As a result, not only the CAN protocol but also other protocols can be supported.
[0156]
Although OSEK-COM is used as a communication library, other communication libraries that perform message transmission processing and message reception processing may be used. Thereby, not only OSEK-COM but other communication libraries can be supported.
[0157]
【The invention's effect】
According to the present invention, a message having the highest priority can always be transmitted with the highest priority, and the real-time property of message transmission is improved.
[Brief description of the drawings]
FIG. 1 is a configuration diagram of a real-time distributed system.
FIG. 2 is a detailed block diagram of a mailbox that constitutes a CAN controller in a control unit of a real-time distributed system.
FIG. 3 is a detailed configuration diagram of a control register of the CAN controller.
FIG. 4 is a detailed configuration diagram of message objects that constitute OSEK-COM in the control unit of the real-time distributed system.
FIG. 5 is a flowchart showing a flow of message transmission processing.
FIG. 6 is a flowchart showing a flow of message object data and buffer update in message transmission processing;
FIG. 7 is a flowchart showing a flow of message object buffer update in message transmission processing;
FIG. 8 is a flowchart showing a flow of updating a message object FIFO buffer in message transmission processing;
FIG. 9 is a flowchart showing a flow of sending a Queued message in the message sending process.
FIG. 10 is a flowchart showing a flow of sending an Unqueued message in the message sending process.
FIG. 11 is a flowchart showing a flow of message reception processing.
FIG. 12 is a flowchart showing a flow of message reception from a message object in message reception processing.
FIG. 13 is a detailed configuration diagram of a message attribute table that constitutes a CAN driver in the control unit of the real-time distributed system.
FIG. 14 is a flowchart showing a flow of message transmission by a roller.
FIG. 15 is a flowchart showing a flow of message reception from the buffer in the CAN driver.
FIG. 16 is a flowchart showing a flow of message transmission / reception completion interrupt processing;
FIG. 17 is a detailed configuration diagram of a task priority management table that constitutes an OS in the control unit of the real-time distributed system.
[Explanation of symbols]
2000 ... Control unit, 2001 ... CPU, 2002 ... Memory, 2003 ... CAN controller, 2004 ... Bus, 2005 ... Network, 2006 ... Application program, 2008 ... OSEK-COM, 2009 ... CAN driver, 2010 ... OSEK-COM message transmission Processing, 2011 ... OSEK-COM message reception processing, 2021 ... Message attribute table, 2022 ... Control register, 2023 ... Transmission / reception mailbox, 2024 ... Priority control unit, 2025 ... Transmission buffer, 2026 ... Reception buffer, 2027 ... Reception filter, 2031 ... buffer, 2032 ... CAN driver message transmission processing, 2033 ... CAN driver message reception processing, 2034 ... CAN driver message transmission Reception completion interrupt processing, 2050... OS, 2051... Task priority management table, 2052.

Claims (14)

ネットワーク通信を行うネットワークコントローラと、
プログラムを記憶するメモリと、
上記メモリに記憶されたプログラムを実行するCPUとを有し、
上記メモリに記憶されたプログラムを上記CPUで実行しながら、上記ネットワークコントローラを用いて、通信の優先順位を持ったメッセージの送受信処理を実行するリアルタイム分散システムにおいて、
複数の送受信メッセージを格納した前記ネットワークコントローラによって複数のメッセージ送受信処理を実行してネットワーク通信を行うネットワークドライバと、
扱う送受信メッセージのネットワーク通信の優先順位と、該送受信メッセージのネットワーク通信の優先順位に対応した上記ネットワークドライバの処理の優先順位を決定するネットワークドライバ優先順位管理部と、
上記ネットワークドライバの処理の優先順位にしたがって上記ネットワークドライバの処理を実行するスケジューリング部とを有するリアルタイム分散システム。
A network controller for network communication;
A memory for storing the program;
A CPU for executing a program stored in the memory,
In a real-time distributed system that executes transmission / reception processing of messages having communication priorities using the network controller while executing the program stored in the memory with the CPU,
A network driver for performing network communication by executing a plurality of message transmission / reception processes by the network controller storing a plurality of transmission / reception messages;
The priority of the network communication sending and receiving messages to be handled, and the network driver priority management unit which determines the priority of processing of the network driver corresponding to the priority of the network communication said transmission received message,
A real-time distributed system comprising: a scheduling unit that executes the processing of the network driver according to the priority of processing of the network driver.
ネットワーク通信を行うネットワークコントローラと、
プログラムを記憶するメモリと、
メモリに記憶されたプログラムを実行するCPUとを有し、
上記メモリに記憶されたプログラムを上記CPUで実行しながら、上記ネットワークコントローラを用いて、通信の優先順位を持ったメッセージの送受信処理を実行するリアルタイム分散システムにおいて、
複数の送受信メッセージを記憶するメッセージ記憶部と、
上記メッセージ記憶部に記憶された複数のメッセージの送受信処理を、
上記ネットワークコントローラを用いて、実行してネットワーク通信を行うネットワークドライバと、
扱う送受信メッセージのネットワーク通信の優先順位と、該送受信メッセージのネットワーク通信の優先順位に対応した上記ネットワークドライバの処理の優先順位を決定するネットワークドライバ優先順位管理部と、
上記ネットワークドライバの処理の優先順位にしたがってネットワークドライバの処理を実行するスケジューリング部とを有するリアルタイム分散システム。
A network controller for network communication;
A memory for storing the program;
A CPU for executing a program stored in a memory;
In a real-time distributed system that executes transmission / reception processing of messages having communication priorities using the network controller while executing the program stored in the memory with the CPU,
A message storage unit for storing a plurality of transmission / reception messages;
Sending / receiving processing of a plurality of messages stored in the message storage unit,
A network driver that performs network communication by using the network controller;
The priority of the network communication sending and receiving messages to be handled, and the network driver priority management unit which determines the priority of processing of the network driver corresponding to the priority of the network communication said transmission received message,
A real-time distributed system comprising: a scheduling unit that executes network driver processing in accordance with the network driver processing priority.
ネットワーク通信を行うネットワークコントローラと、
プログラムを記憶するメモリと、
メモリに記憶されたプログラムを実行するCPUとを有し、上記メモリに記憶されたプログラムを上記CPUで実行しながら、上記ネットワークコントローラを用いて、通信の優先順位を持ったメッセージの送受信処理を実行するリアルタイム分散システムにおいて、
複数の送受信メッセージを記憶するメッセージ記憶部と、
前記ネットワークコントローラを用いて、ネットワーク通信を行うネットワークドライバと、
上記メッセージ記憶部に記憶された複数のメッセージの送受信処理を、上記ネットワークドライバ手段を用いて実行する通信処理ライブラリと、
扱う送受信メッセージのネットワーク通信の優先順位と、該送受信メッセージのネットワーク通信の優先順位に対応した上記ネットワークドライバの処理の優先順位を決定するネットワークドライバ優先順位管理部と、
上記ネットワークドライバの処理の優先順位にしたがってネットワークドライバの処理を実行するスケジューリング部とを有するリアルタイム分散システム。
A network controller for network communication;
A memory for storing the program;
A CPU that executes a program stored in the memory, and executes a message transmission / reception process with communication priority using the network controller while the CPU stores the program stored in the memory. Real-time distributed system
A message storage unit for storing a plurality of transmission / reception messages;
A network driver for performing network communication using the network controller;
A communication processing library for executing transmission / reception processing of a plurality of messages stored in the message storage unit using the network driver means;
The priority of the network communication sending and receiving messages to be handled, and the network driver priority management unit which determines the priority of processing of the network driver corresponding to the priority of the network communication said transmission received message,
A real-time distributed system comprising: a scheduling unit that executes network driver processing in accordance with the network driver processing priority.
上記ネットワークコントローラは複数のメッセージを記憶するための複数のメールボックスを有し、該複数のメールボックスに記憶されたメッセージを、上記メッセージの優先順位に応じてネットワーク通信を実行できる請求項1,請求項2または請求項3記載のリアルタイム分散システム。  The network controller has a plurality of mailboxes for storing a plurality of messages, and can perform network communication of the messages stored in the plurality of mailboxes according to the priority order of the messages. The real-time distributed system according to claim 2 or claim 3. 上記複数のメールボックスに対して、それぞれひとつの優先順位のメッセージを記憶する請求項4記載のリアルタイム分散システム。  5. The real-time distributed system according to claim 4, wherein a message having one priority order is stored for each of the plurality of mailboxes. 上記複数のメールボックスのひとつに対して、複数の優先順位のメッセージを記憶する請求項4記載のリアルタイム分散システム。  5. The real-time distributed system according to claim 4, wherein a message having a plurality of priorities is stored for one of the plurality of mailboxes. 上記ネットワークコントローラは、CANプロトコルを処理するCANコントローラであり、上記ネットワーク通信の優先順位は上記メッセージのメッセージIDで指定される請求項1,請求項2または請求項3記載のリアルタイム分散システム。4. The real-time distributed system according to claim 1, wherein the network controller is a CAN controller that processes a CAN protocol, and the priority of the network communication is specified by a message ID of the message. 上記ネットワークドライバ手段は、メッセージ送信処理を行うメッセージ送信タスクと、メッセージ受信処理を行うメッセージ受信タスクとを有し、上記スケジューリング部は、上記ネットワークドライバの処理の優先順位にしたがって、上記メッセージ送信タスクとメッセージ受信タスクを実行する請求項1,請求項2または請求項3記載のリアルタイム分散システム。  The network driver means includes a message transmission task for performing a message transmission process and a message reception task for performing a message reception process, and the scheduling unit includes the message transmission task according to a priority of the network driver processing. The real-time distributed system according to claim 1, wherein the message reception task is executed. 上記メッセージ記憶部は、OSEK−COMプロトコルのメッセージを記憶する、メッセージオブジェクトである請求項2または請求項3記載のリアルタイム分散システム。  4. The real-time distributed system according to claim 2, wherein the message storage unit is a message object that stores an OSEK-COM protocol message. 前記ネットワークドライバは、送信メッセージまたは受信メッセージを一時記憶するメッセージバッファを有し、
送信したメッセージまたは受信したメッセージは一旦該メッセージバッファに記憶した後、上記メッセージ記憶手段に記憶する請求項3乃至請求項5記載のリアルタイム分散システム。
The network driver has a message buffer for temporarily storing a transmission message or a reception message,
6. The real-time distributed system according to claim 3, wherein the transmitted message or the received message is temporarily stored in the message buffer and then stored in the message storage means.
上記ネットワークドライバ手段は、送信メッセージまたは受信メッセージを一時記憶するメッセージバッファを有し、上記メールボックスのひとつに記憶されるメッセージは、上記メッセージバッファのひとつに記憶する請求項4乃至請求項6記載のリアルタイム分散システム。  7. The network driver means includes a message buffer for temporarily storing a transmission message or a reception message, and a message stored in one of the mailboxes is stored in one of the message buffers. Real-time distributed system. 上記ネットワークドライバ手段は、送信メッセージまたは受信メッセージを一時記憶するメッセージバッファを有し、上記メールボックスの複数に記憶されるメッセージを、上記メッセージバッファのひとつに記憶する請求項4乃至請求項6記載のリアルタイム分散システム。  The network driver means has a message buffer for temporarily storing a transmission message or a reception message, and stores messages stored in a plurality of the mailboxes in one of the message buffers. Real-time distributed system. 前記通信処理ライブラリ手段は、OSEK−COMプロトコルにしたがい、メッセージ送信処理と、メッセージ受信処理を行うことを特徴とする請求項3記載のリアルタイム分散システム。  4. The real-time distributed system according to claim 3, wherein the communication processing library means performs message transmission processing and message reception processing according to the OSEK-COM protocol. 前記ネットワークドライバ手段は、メッセージ送信処理を行うメッセージ送信タスクと、メッセージ受信処理を行うメッセージ受信タスクとを含み、
前記スケジューリング手段は、前記ネットワークドライバの処理の優先順位にしたがって、前記メッセージ送信タスクとメッセージ受信タスクを、前記通信処理ライブラリ手段のメッセージ送信処理やメッセージ受信処理を実行するタスクとは別のタスクとして実行することを特徴とする請求項13に記載のリアルタイム分散システム。
The network driver means includes a message transmission task for performing message transmission processing, and a message reception task for performing message reception processing,
The scheduling means executes the message sending task and the message receiving task as tasks different from the task for executing the message sending process and the message receiving process of the communication processing library means according to the priority of the processing of the network driver. The real-time distributed system according to claim 13, wherein:
JP26595098A 1998-08-07 1998-09-21 Real-time distributed system Expired - Fee Related JP3713977B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP26595098A JP3713977B2 (en) 1998-09-21 1998-09-21 Real-time distributed system
US09/370,152 US7103646B1 (en) 1998-08-07 1999-08-09 Distributed control system and information processing system
US11/167,137 US20050267953A1 (en) 1998-08-07 2005-06-28 Distributed control system and information system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP26595098A JP3713977B2 (en) 1998-09-21 1998-09-21 Real-time distributed system

Publications (2)

Publication Number Publication Date
JP2000099481A JP2000099481A (en) 2000-04-07
JP3713977B2 true JP3713977B2 (en) 2005-11-09

Family

ID=17424328

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26595098A Expired - Fee Related JP3713977B2 (en) 1998-08-07 1998-09-21 Real-time distributed system

Country Status (1)

Country Link
JP (1) JP3713977B2 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020058688A (en) * 2000-12-30 2002-07-12 이계안 Method for constituting a message to communicate data in a controller area network
JP2006236047A (en) * 2005-02-25 2006-09-07 Renesas Technology Corp Semiconductor integrated circuit device
JP4721741B2 (en) * 2005-03-25 2011-07-13 ルネサスエレクトロニクス株式会社 Data processing module and message receiving method thereof
JP4708901B2 (en) * 2005-07-29 2011-06-22 ルネサスエレクトロニクス株式会社 Data processing module and method for preparing message transmission
JP5050653B2 (en) * 2007-05-28 2012-10-17 株式会社デンソー Electronic control device
JP4766160B2 (en) 2009-07-29 2011-09-07 株式会社デンソー Communication system and communication node
CN114726676A (en) * 2022-04-25 2022-07-08 宁波天擎航天科技有限公司 Method for processing redundant message in CAN bus dual-channel backup

Also Published As

Publication number Publication date
JP2000099481A (en) 2000-04-07

Similar Documents

Publication Publication Date Title
US5428781A (en) Distributed mechanism for the fast scheduling of shared objects and apparatus
US7295565B2 (en) System and method for sharing a resource among multiple queues
US7356739B2 (en) System and program for controlling a distributed processing system
JPH03130863A (en) Control-element transfer system
JPH0727503B2 (en) Data transfer control method and interface system
US4982187A (en) Low-end high-performance switch subsystem architecture
CN112395067A (en) Task scheduling method, system, device and medium
US8761190B2 (en) Message loss prevention by using sender and receiver buffers in event-triggered distributed embedded real-time systems
JP3713977B2 (en) Real-time distributed system
US8732374B2 (en) Subscriber node of a communication system having a functionally separate transmission event memory
CN113157465B (en) Message sending method and device based on pointer linked list
JPH117434A (en) System for processing quick arrival message in ansyncronous data communication system for plural nodes
US6792513B2 (en) System, method, and computer program product for high speed backplane messaging
EP1139228A2 (en) An intelligent bus interconnect unit
CN113518082B (en) Message processing method, electronic equipment and storage medium
CN113626216B (en) Method and system for optimizing network application performance based on remote direct data access
CN116016349B (en) Message scheduling method, device and system
JPH1196108A (en) Computer system and bus control device
Di Natale et al. Reference Architecture of a CAN-Based System
JPS6226745B2 (en)
JPH09259051A (en) Alarm notification processing method
CN118827579A (en) Communication service processing method, device, electronic equipment, medium and program product
WO2001048620A1 (en) System, method, and computer program product for high speed backplane messaging
JPH1011382A (en) System for sharing realtime distribution data
JP2006031592A (en) Message communication method, apparatus and program

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041019

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050315

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050516

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050712

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: 20050802

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050815

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080902

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090902

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090902

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100902

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100902

Year of fee payment: 5

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100902

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110902

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120902

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130902

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees