(57)【特許請求の範囲】
【請求項１】
予め設定された監視許容期間内の間隔で入力されるウォッチドッグ信号が途切れた場合に異常検出信号を出力する監視装置に対して前記ウォッチドッグ信号を出力し、前記監視装置の監視対象となる制御装置にて実行されるプログラム群であって、
各種アプリケーションプログラムの実行を制御する機能を少なくとも有する基本プログラムと、
前記制御装置の起動時に、前記基本プログラムを起動する処理を実行するブートプログラムと、
からなり、
前記ブートプログラムおよび前記基本プログラムは、いずれも、前記監視許容期間内の間隔で前記ウォッチドッグ信号を送信する処理を少なくとも実行し、
前記基本プログラムは、起動時に、少なくとも前記ウォッチドッグ信号の次回の送信タイミングに関わるタイミング情報を前記ブートプログラムから引き継ぐことを特徴とするプログラム群。
【請求項２】
前記タイミング情報は、前記ウォッチドッグ信号を最後に送信してからの経過時間、または次回送信するまでの残り時間のいずれかを表す情報であることを特徴とする請求項１に記載のプログラム群。
【請求項３】
前記ブートプログラムから前記基本プログラムに引き継ぐ情報には、前記監視許容期間を特定する情報が含まれていることを特徴とする請求項１または請求項２に記載のプログラム群。
【請求項４】
前記監視装置は、前記ウォッチドッグ信号の信号レベルが前記監視許容期間以上継続して同一レベルである場合に、前記ウォッチドッグ信号が途切れたものと判断し、
前記ブートプログラムから前記基本プログラムに引き継ぐ情報には、前記ウォッチドッグ信号の信号レベルを表す情報が含まれていることを特徴とする請求項１乃至請求項３のいずれか一項に記載のプログラム群。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウォッチドッグ機能での監視対象となる制御装置にて実行されるプログラム群に関する。
【背景技術】
【０００２】
従来、プログラムの暴走等を監視する技術として、ウォッチドッグタイマ（ＷＤＴ）が知られている（例えば、特許文献１参照。）。
ウォッチドッグタイマは、一定時間（上限許容時間）が経過するとタイムアップするように構成されたタイマであり、監視対象となる制御装置からのウォッチドッグ（ＷＤ）信号によってタイマがリセットされ、ウォッチドッグ信号が途絶えてタイマがタイムアップすると、外部にその旨を出力する。
【０００３】
また、近年、マイクロコンピュータに搭載するソフトウェアとして、各種アプリケーションプログラムと、そのアプリケーションプログラムの実行を制御する基本プログラム（ＯＳ等）とを分離した構造を有するものが知られている。
【０００４】
例えば、車載プログラムの分野では、自動車のソフトウェアを部品化して共通化するために、ＡＵＴＯＳＡＲ（AUTomotive Open System ARchitecture ）によってＡＵＴＯＳＡＲソフトウェアプラットフォームが提案されている。
【０００５】
このＡＵＴＯＳＡＲソフトウェアプラットフォームでは、ハードウェアに依存しないアプリケーションプログラム（AUTOSAR Software）は、アプリケーションプログラムに対して各種機能（ＯＳ，通信，メモリ管理，診断，ＥＣＵ状態管理等）を提供するＢＳＷ（Basic Software ）上で動作するように構成されている。このようなシステムにおいて、ＷＤ信号を出力する処理は、通常、基本プログラム（ＢＳＷ等）の一機能として実現される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平４−１９０４３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、このような基本プログラム上でアプリケーションプログラムが動作するシステムでは、基本プログラムを起動する前に、基本プログラムを前提とすることなく動作し、ハードウェアの初期化やＢＳＷの起動等を実行するブートプログラムを動作させる必要がある。
【０００８】
そして、ブートプログラムの実行時間が、ウォッチドッグタイマの上限許容時間を超えるような場合は、ブートプログラムにおいても、ＷＤ信号を出力する処理を実行する必要がある。
【０００９】
しかし、ブートプログラムが提供するＷＤ処理は、基本プログラムが提供するＷＤ処理から独立したものとなるため、ブートプログラムから基本プログラムに切り替わる時に、監視装置に対して、継続的なＷＤ信号を送出することができないという問題があった。
【００１０】
特に、ＷＤ信号の送出間隔について下限許容時間が規定されている場合には、下限許容時間以下の間隔でＷＤ信号を送出すると、そのＷＤ信号が無視されることによって、上限許容時間内の間隔でＷＤ信号を送出しているにも拘わらず、ウォッチドッグタイマがタイムアウトしてしまう可能性があった。
【００１１】
なお、特許文献１に記載の従来装置は、基本プログラムの存在を想定していないため、その技術を適用しても、上述の問題を解決することはできなかった。
本発明は、上記問題点を解決するために、ブートプログラムから基本プログラムに切り替わる時にも、規定されたウォッチドッグ信号を確実に供給できるようにすることを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するためになされた本発明は、予め設定された監視許容期間内の間隔で入力されるウォッチドッグ信号が途切れた場合に異常検出信号を出力する装置を監視装置、この監視装置に対してウォッチドッグ信号を出力することで監視装置の監視対象となる装置を制御装置として、この制御装置にて実行されるプログラム群に関するものである。
【００１３】
本発明のプログラム群は、各種アプリケーションプログラムの実行を制御する機能を少なくとも有する基本プログラムと、制御装置の起動時に、基本プログラムを起動する処理を実行するブートプログラムとからなり、いずれも、監視許容期間内の間隔でウォッチドッグ信号を送信する処理を少なくとも実行する。
【００１４】
そして、基本プログラムは、起動時に、少なくともウォッチドッグ信号の次回の送信タイミングに関わるタイミング情報をブートプログラムから引き継ぐように構成されている。
【００１５】
このように構成された本発明のプログラム群によれば、基本プログラムは、ブートプログラムから引き継いだタイミング情報に基づいて、最初に出力するウォッチドッグ信号の出力タイミング決定することにより、ブートプログラムの処理によって最後に出力されたウォッチドッグ信号から、監視許容期間内の間隔で、ウォッチドッグ信号を出力することができる。
【００１６】
なお、タイミング情報は、具体的には、ウォッチドッグ信号を最後に送信してからの経過時間を表す情報であってもよいし、次回送信するまでの残り時間を表す情報であってもよい。
【００１７】
また、基本プログラムは、任意の監視許容期間に対応可能であるように構成されている場合、ブートプログラムから基本プログラムに引き継ぐ情報には、監視許容期間を特定する情報が含まれていてもよい。
【００１８】
更に、監視装置が、ウォッチドッグ信号の信号レベルが監視許容期間以上継続して同一レベルである場合に、ウォッチドッグ信号が途切れたものと判断するように構成されている場合、ブートプログラムが基本プログラムに引き継ぐ情報には、ウォッチドッグ信号の信号レベルを表す情報が含まれていてもよい。
【図面の簡単な説明】
【００１９】
【図１】車載制御装置の主要部の構成を示すブロック図。
【図２】ダウンカウンタのカウント値と各種パラメータとの関係を示す説明図。
【図３】ＲＡＭに確保される領域の内容を示す説明図。
【図４】ウォッチドッグ処理の内容を示すフローチャート。
【図５】ブート処理の内容を示すフローチャート。
【図６】ブート処理から通常処理への切替時におけるＷＤ信号およびタイマ割込の状態を示す説明図。
【図７】ブート処理から通常処理への切替時におけるＷＤカウント値の変化を示す説明図。
【図８】変形例におけるブート処理から通常処理への切替タイミングとＷＤ信号の波形との関係を示す説明図。
【図９】変形例におけるブート処理の内容を示すフローチャート。
【発明を実施するための形態】
【００２０】
以下に本発明の実施形態を図面と共に説明する。
＜全体構成＞
図１は、本発明が適用された車載制御装置１の主要部の構成を示すブロック図である。
【００２１】
図１に示すように、車載制御装置１は、当該装置に割り当てられた各種処理を実行する制御部３と、制御部３から供給されるウォッチドッグ信号（以下「ＷＤ信号」という）に基づいて制御部３の動作状態を監視する監視部５とを備えている。
【００２２】
＜監視部＞
監視部５は、自走するダウンカウンタで構成されたウォッチドッグタイマからなる。
ここで、図２は、ダウンカウンタのカウント値と、各種パラメータとの関係を示す説明図である。以下、図２を参照して、監視部５の動作を説明する。
【００２３】
監視部５（ウォッチドッグタイマ）にＷＤ信号が入力されると、ダウンカウンタのカウント値が、予め設定された上限許容時間Ｔｕに対応する値Ｍ（Ｍ＝Ｔｕ／Ｔcy，Ｔcyはダウンカウンタのクロック周期）にプリセットされると共に、ダウンカウンタのカウント値がゼロになると、即ち、ウォッチドッグタイマがタイムアウトすると、異常検出信号（警告通知）を出力するように構成された周知のものである。
【００２４】
但し、本実施形態では、予め設定された下限許容時間Ｔｌ（＜Ｔｕ）より短い間隔で入力されたＷＤ信号を無視する、即ち、そのＷＤ信号によるカウント値のプリセットを禁止するように構成されている。
【００２５】
つまり、下限許容時間Ｔｌから上限許容時間Ｔｕまでの期間を監視許容期間として、ＷＤ信号の入力間隔が監視許容期間内である場合だけ、ダウンカウンタはプリセットされる。
【００２６】
また、下限許容時間Ｔｌと上限許容時間Ｔｕとの中間値が、制御部３から送出されるＷＤ信号の送出間隔を規定するＷＤ周期Ｔｗ（＝（Ｔｌ＋Ｔｕ）／２）となるように設定されている。
【００２７】
＜制御部＞
次に、制御部３は、ＣＰＵ，ＲＯＭ，ＲＡＭを中心に構成された周知のマイクロコンピュータからなり、ＣＰＵに対するタイマ割込を発生させるための割込用タイマを少なくとも備えている。
【００２８】
また、制御部３において実行されるソフトウェアは、図１に示すように、ＡＵＴＯＳＡＲ（AUTomotive Open System ARchitecture ）ソフトウェアプラットフォームとして標準化された、ＢＳＷ（Basic Ｓoftware ），ＲＴＥ（Run Time Environment）上で各種アプリケーションプログラム（AUTOSAR Software）を動作させるように構成されている。
【００２９】
また、制御部３の起動時（車載制御装置１への電源投入時）には、ハードウェアの初期化等を行うブートプログラムが起動し、このブートプログラムによってＢＳＷを起動するように構成されている。
【００３０】
なお、ＲＡＭには、図３に示すように、ブートプログラムからＢＳＷに引き継ぐ引継情報を格納する領域（以下「引継情報格納領域」という）、およびＷＤ信号送信用のカウント値（以下「ＷＤカウント値」という）を格納する領域（以下「ＷＤカウント値格納領域」という）が少なくとも確保される。更に、引継情報格納領域には、ＷＤ信号の送信周期を指定するＷＤ周期、ＷＤ信号の信号レベルの初期値を指定する初期信号レベル、初回のＷＤ信号を送信するタイミングを指定する初期オフセット時間を格納する領域が少なくとも存在する。
【００３１】
＜ＷＤ処理＞
ここでタイマ割込によって起動するＷＤ処理の内容を、図４に示すフローチャートに沿って説明する。以下では、タイマ割込の割込周期をＴｐで表す。但し、ブートプログラムによって設定されるタイマ割込と、ＢＳＷによって設定されるタイマ割込とでは、割込周期Ｔｐが異なっていてもよい。また、ＷＤ処理を起動するためのタイマ割込を発生させる割込用タイマは、ブートプログラムの時とＢＳＷの時とで異なっていてもよい。
【００３２】
本処理が起動すると、まず、Ｓ１１０では、ＷＤカウント値をインクリメントし、続くＳ１２０では、ＷＤカウント値が、ＷＤ周期Ｔｗに対応した閾値（ＷＤ閾値）ＴＨｗ（＝Ｔｗ／Ｔｐ）より大きいか否かを判断し、ＷＤカウント値がＷＤ閾値ＴＨｗ以下であれば、そのまま本処理を終了する。
【００３３】
一方、ＷＤカウント値が閾値より大きければ、Ｓ１３０にてエラーチェックを実行する。
このエラーチェックでは、具体的には、記憶装置（ＲＯＭやＲＡＭ）の異常（記憶装置に保存する情報を異常確認のために冗長化していて、その整合が取れない場合等）、ＣＰＵの異常（未定義命令によるＣＰＵ暴走等）、負荷の異常（ＣＰＵの処理負荷を計測できる機構を持ち、負荷が想定を超えている場合等）、シーケンス異常（正常動作とは異なる処理順序で命令が実施された場合等）などを行う。
【００３４】
Ｓ１４０では、エラーチェックの結果、エラーが検出されたか否かを判断し、エラーが検出されなければ、Ｓ１５０にてＷＤ信号の信号レベルを反転させる（ＷＤ信号を送出する）と共に、Ｓ１６０にてＷＤ信号の信号レベルを記憶して、Ｓ１７０に進む。一方、Ｓ１４０にて、エラーが検出されたと判断した場合は、Ｓ１５０，Ｓ１６０を実行することなくＳ１７０に移行する。
【００３５】
Ｓ１７０では、ＷＤカウント値をリセットして、本処理を終了する。
つまり、本処理によって、ＷＤ周期Ｔｗ毎にエラーチェックが実施され、エラーが検出されなかった場合にはＷＤ信号が出力（信号レベルを反転）され、エラーが検出された場合、または何等かの原因でＷＤ処理自体が実施さない状況に陥っている場合には、ＷＤ信号の出力が停止することになる。
【００３６】
＜ブート処理＞
次に、ブートプログラムによって実現される処理（ブート処理）の内容を、図５に示すフローチャートに沿って説明する。
【００３７】
図５に示すように、本処理が起動すると、まずＳ２１０では、制御部３を構成するハードウェアを初期化する初期化処理を実行する。この初期化処理では、メモリチェックの他、ＣＰＵや各種周辺機器（図示せず）の初期設定を行う。その初期設定の中には、ＷＤ信号を出力するポートの初期化（ここでは信号レベルをハイレベルに設定）、ＷＤカウント値の初期化（ここではゼロクリア）、割込用タイマ（タイマ割込の割込周期Ｔｐ）の設定およびタイマ割込の許可が少なくとも含まれており、これらの初期設定により、ＷＤ処理が一定周期Ｔｐで起動されることになる。
【００３８】
ここでは、Ｓ２１０で実行する初期化処理が全て終了するまでに、タイマ割込は１回以上発生し、これに伴ってＷＤ処理も１回以上実行されているものとする。
続くＳ２２０では、ブートプログラムよって実行されるＷＤ処理から、ＢＳＷによって実行されるＷＤ処理に引き継ぐ情報を設定する引継情報設定処理を実行する。
【００３９】
具体的には、ＷＤ周期Ｔｗとしては予め設定された固定値を、初期信号レベルとしてはＷＤ処理のＳ１６０にて記憶された信号レベルを、初期オフセット時間としてはＷＤカウント値にタイマ割込周期を乗じることで求めた経過時間（最後にＷＤ信号を送信してからの経過時間）をＷＤ周期Ｔｗから減算することで求めた値を、それぞれ引継情報格納領域に格納する。
【００４０】
最後にＳ２３０では、ＢＳＷを起動して本処理を終了する。
＜ＢＳＷ初期化処理＞
次に、ＢＳＷの起動時に、実行されるＢＳＷ初期化処理について説明する。
【００４１】
ＢＳＷ初期化処理では、ＢＳＷの動作環境を設定する処理を行う。その処理の中には、割込用タイマ（タイマ割込の割込周期Ｔｐ）の再設定、引継情報格納領域に格納された引継情報に基づき、ＷＤ処理に必要な情報の初期設定が少なくとも含まれる。
【００４２】
また、ＷＤ処理に必要な情報の初期設定では、初期オフセット時間と割込周期とに基づく、ＷＤカウント値の初期値（＝初期オフセット時間／割込周期）の設定、ＷＤ周期Ｔｗと割込周期Ｔｐとに基づくＷＤ閾値ＴＨｗ（＝Ｔｗ／Ｔｐ）の設定や、初期信号レベルをＷＤ信号の現在の信号レベルとして記憶すること等が行われる。
【００４３】
このようなＢＳＷ初期化処理後に、各種アプリケーションプログラムの動作を制御する通常処理が開始されることになる。
＜作用効果＞
図６は、ブート処理から通常処理（ＢＳＷによる処理）への切替時におけるＷＤ信号およびタイマ割込の状態を示す説明図、図７は、同じく処理の切替時におけるＷＤカウント値の変化を示す説明図である。
【００４４】
なお、ここでは、ブートプログラムで設定されるタイマ割込の割込周期をＴp1、ＢＳＷ初期化処理で設定されるタイマ割込の割込周期をＴp2で表し、また、割込周期Ｔp1に基づくＷＤ閾値ＴＨｗをＴＨw1（＝Ｔｗ／Ｔp1）、割込周期Ｔp2に基づくＷＤ閾値ＴＨｗをＴＨw2（＝Ｔｗ／Ｔp2）で表すものとする。
【００４５】
図６，７に示すように、ブート処理が実行されている間は、ＷＤカウント値がＷＤ閾値ＴＨw1に達する（即ち、ＷＤ周期が経過する）毎にＷＤ信号の信号レベルを反転させ、通常処理が実行されている間は、ＷＤカウント値がＷＤ閾値ＴＨw2に達する（即ち、ＷＤ周期が経過する）毎にＷＤ信号の信号レベルを反転させている。
【００４６】
但し、ブート処理から通常処理に切り替わる時には、引継情報に基づいて、ＷＤカウント値を、初期オフセット時間が経過するとＷＤ閾値ＴＨw2に達するような値に再設定することで、処理の切替があっても、ＷＤカウント値がＷＤ閾値ＴＨw2に達した時点で、前回のＷＤ信号の出力（信号レベルの反転）からＷＤ周期が経過しているようにされている。
【００４７】
従って、車載制御装置１によれば、ブート処理から通常処理に切り替わる時にも、規定されたＷＤ周期でＷＤ信号を出力することができる。
＜発明との対応＞
上記実施形態において、監視部５が監視装置、制御部３が制御装置、ＢＳＷが基本プログラム、初期オフセット時間がタイミング情報，ＷＤ周期が監視許容期間を特定する情報、初期信号レベルがウォッチドッグ信号の信号レベルを表す情報に相当する。
【００４８】
＜他の実施形態＞
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において様々な態様にて実施することが可能である。
【００４９】
例えば、本実施形態では、監視部５において上限許容時間Ｔｕおよび下限許容時間Ｔｌの両方が規定されているが、下限許容時間Ｔｌの規定がない場合は、ブート処理から通常処理への切替後、直ちにＷＤ信号を出力し、ＷＤカウント値はリセットするように構成してもよい。この場合、引継情報から初期オフセット時間を省略することができる。なお、図８は、この場合における、処理の切替タイミングとＷＤ信号の波形との関係を示す説明図である。
【００５０】
また、上記実施形態では、ブート処理によってタイマ割込を許可し、そのタイマ割込でＷＤ処理を実行しているが、例えば、ブート処理の実行時間に変動がなく、常に一定時間で処理を実行することができるような場合には、タイマ割込を用いることなくブート処理の中でＷＤ信号を出力するようにしてもよい。
【００５１】
この場合、図９に示すように、図５に示したブート処理におけるＳ２１０の代わりに、Ｓ２１１〜Ｓ２１３の処理を実行するように構成すればよい。
即ち、Ｓ２１１では、初期化処理Ａを実行し、その後、Ｓ２１２ではＷＤ信号を出力し、続くＳ２１３では、初期化処理Ｂを実行する。以下、Ｓ２２０、Ｓ２３０は、上記実施形態と同様である。
【００５２】
但し、初期化処理Ａ，Ｂは、Ｓ２１０の処理を分割したものであり、初期化処理Ａは、その処理時間がＷＤ周期Ｔｗとなるように設定される。ここでは、初期化処理Ｂの処理時間が、ＷＤ周期Ｔｗより短い場合を想定しているが、（Ｋ−１）×Ｔｗ＜（初期化処理全体の処理時間）＜Ｋ×Ｔｗ、（但し、Ｋは２以上の正整数）である場合は、初期化処理をＫ分割して、分割した各処理の間でＷＤ信号を出力するように構成すればよい。
【００５３】
上記実施形態では、次にＷＤ信号を送信するタイミングを特定するための情報として、初期オフセット時間、即ち、次回送信するまでの残り時間を用いたが、ＷＤ信号を最後に送信してからの経過時間を用いるようにしてもよい。
【符号の説明】
【００５４】
１…車載制御装置  ３…制御部  ５…監視部
【図１】
0005533777.tif 000002
【図２】
0005533777.tif 000003
【図３】
0005533777.tif 000004
【図４】
0005533777.tif 000005
【図５】
0005533777.tif 000006
【図６】
0005533777.tif 000007
【図７】
0005533777.tif 000008
【図８】
0005533777.tif 000009
【図９】
0005533777.tif 000010