【手続補正書】
【提出日】平成15年9月8日(2003.9.8)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の名称】リアルタイムオペレーティングシステムを用いたタスク起動制御装置
【特許請求の範囲】
【請求項１】イベントの発生から要求時間内にデータを処理するリアルタイムオペレーティングシステムを用いてタスクを起動する起動制御装置において、
イベントフラグの制御を記述したイベントハンドラのプログラムソースと、それぞれのタスクの処理を開始する条件となる起動タイミングをそれぞれ記述した複数のタスクのプログラムソースと、該起動タイミングに与えられたイベントフラグの定義を記述したタスクヘッダファイルとから生成されるプログラムコードに従って動作するリアルタイミングオペレーティングシステムを用いたタスク起動制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は種々のイベントで複数のグループのタスクを起動処理するリアルタイムオペレーティングシステムに関し、タスクの接続形態の変更に対する仕様変更を容易にできるタスク起動制御装置に関する。
【０００２】
【従来の技術】
図１３は従来のリアルタイムオペレーティングシステムを用いたコンピュータ用のプログラムソースから生成されるプログラムコードに従って動作するタスク起動制御装置の一例を示す図である。本図に示すイベントハンドラａ、ｂ、ｃは、外部イベントからイベントフラグを形成して、リアルタイムオペレーティングシステムを介して、タスクの実質的な処理を起動する。つまり、イベントハンドラａにより、先ず、タスク１の実質的な処理が起動され、次に、タスク１がタスク２及びタスク４を起動し、タスク２がタスク３を起動し、タスク４はタスク５及び６を起動する。同様に、イベントハンドラｂのイベントフラグにより、先ず、タスク７及び１０が起動され、タスク７がタスク８を起動し、タスク８がタスク９及び１１を駆動する。同様に、イベントハンドラｃはタスク１２を起動する。リアルタイムオペレーティングシステム（ＲＴＯＳ）は、イベントの発生から要求される時間内にデータを処理し、外部情報ファイルから生成されたデータを基に、タスクの起動タイミングが重複した場合処理優先度パラメータによりその起動タイミングの調整を行う。
【０００３】
しかしながら、タスクが上記のように連鎖上に連結されているため、すなわち、各タスクのプログラムソースにそのタスクが待ち受けるべきイベントの種別が記述されているため、仕様変更時にタスクの接続形態の変更が必要になると、タスク自体（起動タスク及び起動元タスク）のプログラムソースの変更が必要になるという問題がある。
また、別の例として、後述する図１２（ｂ）に示すように、ウェークアップ命令によりタスクを起動することができる。この場合には、イベントハンドラのプログラムソースには、外部イベントに対してスリープ状態からウェークアップ状態にする複数のタスクが記述されている。このため、上記のような仕様変更に対して、タスクの接続形態の変更の要請があると、前者の例のように、タスク自体のプログラムソースの変更は不要であるが、イベントハンドラのプログラムソースを変更する必要がある。また、１つのイベントハンドラに属するタスク数が多くなると、イベントハンドラの処理時間が大きくなるという問題がある。これに対して、前者のイベントフラグによるタスク起動の処理に関しては、イベントハンドラでは処理するイベントは１つであるので、処理時間は小さい。
【０００４】
【発明が解決しようとする課題】
したがって、本発明は、上記問題点に鑑み、前者のイベントハンドラの処理時間が本来的に少ないイベントフラグによるタスク起動の長所を生かして、タスクの接続形態の変更を伴う仕様変更が容易にできる、リアルタイムオペレーティングシステムを用いたタスク起動制御装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
本発明は、前記問題点を解決するために、イベントの発生から要求時間内にデータを処理するリアルタイムオペレーティングシステムを用いてタスクを起動する起動制御装置において、タスク起動制御装置の動作を定めるプログラムコードを、イベントフラグの制御を記述したイベントハンドラのプログラムソースと、それぞれのタスクの処理を開始する条件となる起動タイミングをそれぞれ記述した複数のタスクのプログラムソースと、該起動タイミングに与えられたイベントフラグの定義を記述したタスクヘッダファイルとから生成するように構成する。この構成によれば、タスクの接続形態の変更に対してプログラムソースの変更をせずに、タスクヘッダファイルの変更により、仕様変更が容易に可能になる。
【０００６】
【発明の実施の形態】
以下本発明の実施の形態について図面を参照して説明する。
図１は本発明に係る車両のエンジンシステムを示す図である。本図に示すように、エンジンシステムは、種々の計測器からの出力信号を入力するエンジンコントロールコンピュータを有し、これを用いてエンジンの制御を行う。
【０００７】
図２は図１のエンジンコントロールコンピュータの概略を説明する図である。本図に示すように、種々の計測器として、例えば、水温センサー、バッテリー、バキュームセンサー、吸気温センサー、Ｏ2 センサー、ノックセンサ等からの出力信号を入力する入力インタフェース回路と、この入力インタフェース回路の出力に接続されるＡ／Ｄ変換器と、さらにスロットルポジションセンサー、スタータ、ディストリビューター、エアコンディショナ、スピードセンサー、ニュートラルスタートスイッチ等の出力信号、電気負荷信号を入力する別のインタフェース回路と、Ａ／Ｄ変換器及び別のインタフェース回路に接続されるメモリを具備するＣＰＵと、ＣＰＵ用の定電圧電源と、ＣＰＵに接続される出力インタフェース回路とを具備し、出力インタフェース回路に接続されるアクチュエータとして、ＩＳＣＶ、＃１、２、３、４インジェクター、サーキットオープニングルー、イグナイタ（スパークプラグを含む）等及び警告灯がある。
【０００８】
図３は本発明に係るリアルタイムオペレーティングシステムを用いたコンピュータ用のプログラムソースから生成されるコードに従って動作するタスク起動制御装置の一例を示す図である。本図には、アプリケーション処理を行う複数のタスク１〜１２と、複数のタスク１〜１２に共通のヘッダファイルに、イベントとタスクの起動タイミングとの関係を定義するタスクヘッダファイル２０と、リアルタイムオペレーティングシステム３０と、イベント毎にタイミングフラグを形成し、リアルタイムオペレーティングシステム３０を介して、複数のタスク１〜２０を順次起動するイベントハンドラ４０とが示される。リアルタイムオペレーティングシステム３０は、外部情報ファイル中に与えられたタスクの起動条件パラメータ（図３参照）を基に、タスクの起動タイミングの調整を行う。
【０００９】
なお、イベントには、周期タイマ、エンジン回転数、スピードメータ等から得られるものがある。リアルタイムオペレーティングシステムとして，μＩＴＲＯＮ仕様を用い、イベントフラグ機能を用いる汎用的なリアルタイムシステムのプログラムソースを構成してもよい。
図４は図３のタスクヘッダファイル２０の一例を説明する図である。周知のように、ヘッダファイルとはソースプログラム中のラベルを別のラベルで定義する定義文を含み、プログラムソースをコンパイルする際にこれが参照され、定義文に従ってラベルが別のラベルで置換された後にコンパイルされる。本図に示すように、タスクヘッダファイル２０は、各タスクのプログラム中に記述されている起動タイミング１〜１２をイベントａ〜ｃで定義する。すなわち、タスク１〜６の起動タイミング１〜６はイベントａと定義され、タスク７〜１１の起動タイミング７〜１１はイベントｂと定義され、タスク１２の起動タイミング１２はイベントｃと定義する。このタスクヘッダファイル２０の内容は設定変更が容易に可能である。
【００１０】
リアルタイムオペレーティングシステム３０は、イベントの入力によって起動されるタスクが重複する場合にはいずれのタスクを優先するかを従来の外部情報ファイル中に与えられた処理優先度パラメータ（図３）により判断し、優先すべきタスクの起動を行う。
以下に各部の詳細を説明する。
【００１１】
図５は図３のタスク状態遷移を説明する図である。本図に示すように、リアルタイムオペレーティングシステムは、（１）のディスパッチにより、ＲＥＡＤＹ状態のタスクの中、最も優先度の高いタスクをＲＵＮ状態に移す。
さらに、リアルタイムオペレーティングシステムは、（２）のプリエンプトにより、現在実行中のタスクより優先度の高い別タスクの起動要求を発行（ＲＥＡＤＹ状態に移行）した場合、実行中タスクの処理を中断しＲＥＡＤＹ状態に移す。
【００１２】
ＷＡＩＴ状態のタスクがそれぞれ実行条件（＝イベントフラグの状態）をもっているが、リアルタイムオペレーティングシステムは、（３）のように、イベントフラグの状態の変化によりその条件が成立したタスクをＲＥＡＤＹ状態に移して、待ち（ＷＡＩＴ）を解除する。
タスクは実行中に、自身の実行条件（＝イベントフラグの状態）を、リアルタイムオペレーティングシステムに対して発行する。リアルタイムオペレーティングシステムは、イベントフラグの状態をチェックし、条件不成立時はそのタスクを、（４）のように、ＷＡＩＴ状態に移して、待ち（ＷＡＩＴ）状態にする。
【００１３】
下表にイベントフラグ機能を説明する。
【００１４】
【表１】
1998105416.tif 000001
【００１５】
さらに、前述したＣＰＵにはさらにイベントハンドラが、以下に説明するように、設けられる。
図６はイベントハンドラのプログラムソースの具体例を説明する図である。本図に示すように、イベントタイミングａ−１の発生タイミングで、リアルタイムオペレーティングシステムに対して、システムコールｓｅｔ ｆｌｇ（ａ−１）を発行する。この発行により、リアルタイムオペレーティングシステムは、イベントタイミングフラグａ−１をセットし、後述する制御ソフトプログラムのタスクはイベントタイミングフラグａ−１の待ち状態タスクをＲＥＡＤＹ状態に起動する。起動後に、システムコールｃｌｒ ｆｌｇ（ａ−１）を発行して、イベントフラグａ−１をクリアする。
【００１６】
図７はタスクのプログラムソースの具体例を説明する図である。本図に示すように、タスクｔｓｋ−１は、システムコールｗａｉ ｆｌｇ（ＦＬＡＧ−１）をリアルタイムオペレーティングシステムに通知し、ＦＬＡＧ−１の待ち状態に入るように記述されている。プログラムソースのコンパイル時にはヘッダファイル中の定義ＦＬＡＧ−１＝ｆｌｇ−ａ−１（図７）によりＦＬＡＧ−１がｆｌｇ−ａ−１に置換されるので、実際にはイベントフラグａ−１の待ち状態となる。イベントハンドラによりイベントフラグａ−１がセットされるとリアルタイムオペレーティングシステムのディスパッチによりタスクｔｓｋ−１が起動（実行再開）され、次のステップのアプリケーション処理モジュールに実行が移る。なお、このタスクにはリアルタイムオペレーティングシステムの処理に資するためにタスク情報として優先度、ＩＤ、タスク状態等が設定されている。また、タスクｔｓｋ−１の情報、ＦＬＡＧ−１の定義（ヘッダファイル内の定義）等は外部情報ファイルに、以下のように、設定される。
【００１７】
図８は外部情報ファイルの構成を説明する図である。本図に示すように、外部情報ファイルには、タスクの定義として、タスク状態の初期値、タスクスタック領域、優先度、タスク関数、タスクＩＤ等が設定され、タイミングパラメータ定義として、例えばｔｓｋ−１のタイミングパラメータラベルＦＬＡＧ−１はイベントタイミングフラグｆｌｇ（ａ−１）であると定義される。
【００１８】
図９は電源投入時の各タスクの初期状態からの動作例を説明するタイミングチャートである。本図に示すように、リセット時にイベントハンドラはイニシャル処理を行なう。ｔｓｋ−１、ｔｓｋ−２、等はＲＥＡＤＹ状態になる。リアルタイムオペレーティングシステムはディスパッチにより、ｔｓｋ−１をＲＵＮ状態にする。ｔｓｋ−１はリアルタイムオペレーティングシステムに次のイベントフラグｆｌｇ（ａ−１）待ちを通知する。リアルタイムオペレーティングシステムはｔｓｋ−１を待ち状態にして、ディスパッチによりｔｓｋ−２をＲＵＮ状態にする。ｔｓｋ−２はリアルタイムオペレーティングシステムに次のイベントタイミングフラグｆｌｇ（２）待ちを通知する。リアルタイムオペレーティングシステムはｔｓｋ−２を待ち状態にしてディスパッチによりｔｓｋ−３をＲＵＮ状態にする。以下同様の手順を繰り返す。
【００１９】
図１０はｔｓｋ−７実行中にイベントａが発生しｔｓｋ−１を開始する例を説明するタイミングチャートである。本図に示すように、イベントａの発生による割り込みがあると、イベントハンドラはシステムコールｓｅｔ ｆｌｇ（ａ−１）を発行する。同時にｔｓｋ−７の処理を中断する。リアルタイムオペレーティングシステムはイベントタイミングフラグｆｌｇ（ａ−１）を設定して、ｔｓｋ−１をＲＥＡＤＹ状態にする。その後イベントハンドラはシステムコールｃｌｒ ｆｌｇ（ａ−１）を発行する。リアルタイムオペレーティングシステムはイベントタイミングフラグｆｌｇ（ａ−１）をクリアして、イベントハンドラの処理を終了する。リアルタイムオペレーティングシステムは、
ｔｓｋ−１＞ｔｓｋ−７
の場合には、ｔｓｋ−１をＲＵＮ状態にする。ｔｓｋ−１はシステムコールｗａｉ ｆｌｇ（ａ−１）を発行する。リアルタイムオペレーティングシステムはｔｓｋ−１を待ち状態にする。ディスパッチはｔｓｋ−７をＲＵＮ状態にして処理を再開する。ｔｓｋ−７はシステムコールｗａｉ ｆｌｇ（ｂ−１）を発行する。以下は図９と同様な手順を取る。
【００２０】
図１１はｔｓｋ−７実行中にイベントａが発生しｔｓｋ−１を開始する別の例を説明するタイミングチャートである。図９との相違は、
ｔｓｋ−１＜ｔｓｋ−７
の場合には、ｔｓｋ−７を再開して、その後にｔｓｋ−１をＲＵＮ状態にすることである。
【００２１】
したがって、本発明によれば、タスクヘッダファイルの設定を変更することにより、タスクの接続形態の変更を伴う仕様変更が容易になる。
図１２は本発明に係るタスク起動制御（ａ）とウェークアップ命令によりタスクを起動するタスク起動制御（ｂ）とでタスクを起動するのに要する時間を比較する図である。本図に示すように、ウェークアップ命令によりタスクを起動するタスク起動制御（ｂ）では、タスクを起動すべき時間は、１つのイベントで起動すべきタスク数のほぼ比例してし大きくなるが、本発明に係るタスク起動制御（ａ）では、これに比較して小さく、所期の目的通り、イベントハンドラの処理時間が本来的に少ないイベントフラグによるタスク起動の長所を生かすることができている。
【図面の簡単な説明】
【図１】本発明に係る車両のエンジンシステムを示す図である。
【図２】図１のエンジンコントロールコンピュータの概略を説明する図である。
【図３】本発明に係るリアルタイムオペレーティングシステムを用いたコンピュータのプログラムソースにより構成されるタスク起動制御装置の一例を示す図である。
【図４】図３のタスクヘッダファイル２０に一例を説明する図である。
【図５】図３のタスク状態遷移を説明する図である。
【図６】イベントハンドラのプログラム構成の具体例を説明する図である。
【図７】タスクのプログラム構成の具体例を説明する図である。
【図８】外部情報ファイルのプログラム構成を説明する図である。
【図９】電源投入時の各タスクの初期状態からの動作例を説明するタイミングチャートである。
【図１０】ｔｓｋ−７実行中にイベントａが発生しｔｓｋ−１を開始する例を説明するタイミングチャートである。
【図１１】ｔｓｋ−７実行中にイベントａが発生しｔｓｋ−１を開始する別の例を説明するタイミングチャートである。
【図１２】本発明に係るタスク起動制御（ａ）とウェークアップ命令によりタスクを起動するタスク起動制御（ｂ）とでタスクを起動するのに要する時間を比較する図である。
【図１３】従来のリアルタイムオペレーティングシステムを用いたコンピュータのプログラムソースにより構成されるタスク起動制御装置の一例を示す図である。
【符号の説明】
１〜１２…タスク
２０…タスクヘッダファイル
３０…リアルタイムオペレーティングシステム
４０…イベントハンドラ


【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図９
【補正方法】変更
【補正の内容】
【図９】
1998105416.tif 000002