(57)【特許請求の範囲】
【請求項１】
多重割り込みシステムにおいて、割り込み処理に起因する異常動作を検知する方法であって、
割り込みの優先度毎に、所定のタイムアウト値を有するウォッチドッグタイマ（ＷＤＴ）を準備するステップと、
各ＷＤＴを対応する優先度の割り込み要求があった時点で起動させるステップと、
少なくとも１つの前記ＷＤＴがタイムアウトした場合、当該ＷＤＴに対応する優先度よりも少なくとも１レベル以上高い優先度の割り込み要求を受け入れるステップと、を含み、
前記割り込み要求を受け入れるステップにおいて、前記割り込みの優先度の１つに複数の割り込み要因が割り当てられている場合、当該優先度よりも下位レベルのＷＤＴのタイムアウトに起因する割り込み要求を優先させることにより、当該下位レベルの優先度の割り込み処理において異常動作があったことを検知する、方法。
【請求項２】
前記各ＷＤＴを対応する優先度の割り込み要求があった時点で起動させるステップは、前記割り込みの優先度の１つに複数の割り込み要因が割り当てられている場合、当該割り込み要因中の最初の割り込み要求があった時点で対応するＷＤＴを起動させるステップを含む、請求項１の方法。
【請求項３】
各々の前記ＷＤＴを、対応する割り込み要求が受け入れられプロセッサによって当該割り込み処理が開始された時点でリセットするステップを含む、請求項１または２の方法。
【請求項４】
前記割り込み要求を受け入れるステップは、前記ＷＤＴに対応する優先度よりも少なくとも１レベル以上高い複数の優先度の割り込み要求を受け入れる、請求項１〜３のいずれか１項の方法。
【請求項５】
前記優先度が最上位の割り込みに対応するＷＤＴがタイムアウトした場合、前記システムをリセットするステップをさらに含む、請求項１〜４のいずれか１項の方法。
【請求項６】
多重割り込みシステムにおいて、割り込み処理を制御するコントローラであって、
割り込みの優先度毎に設けられ、それぞれ所定のタイムアウト値を有する複数のウォッチドッグタイマ（ＷＤＴ）と、
デバイスから割り込み要求信号を受け取り、各割り込み要求信号が有する優先度に応じて対応する前記ＷＤＴに起動信号を出力する割り込み優先度セレクタと、
少なくとも１つの前記ＷＤＴがタイムアウトした場合、当該ＷＤＴに対応する優先度よりも少なくとも１レベル以上高い優先度の割り込み要求信号をプロセッサへ出力する割り込み処理回路と、を備え、
前記割り込み処理回路は、前記割り込みの優先度の１つに複数の割り込み要因が割り当てられている場合、当該優先度よりも下位レベルのＷＤＴのタイムアウトに起因する割り込み要求信号を優先させることにより、当該下位レベルの優先度の割り込み処理において異常動作があったことを検知するように構成されている、コントローラ。
【請求項７】
前記割り込み処理回路は、前記割り込み要求信号の出力に際して、対応する優先度以下のレベルの優先度を有する他の割り込み要求信号の出力を抑制するように構成されている、請求項６のコントローラ。
【請求項８】
各々の前記ＷＤＴは、対応する割り込み要求が受け入れられ前記プロセッサによって当該割り込み処理が開始された時点でリセットされる、請求項６または７のコントローラ。
【請求項９】
前記割り込みの優先度が最上位のＷＤＴがタイムアウトした場合、当該優先度が最上位のＷＤＴは前記システムをリセットする信号を出力する、請求項６〜８のいずれか１項のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多重割り込みシステムに関し、より具体的には、多重割り込みシステムにおける割り込み処理に起因する異常動作の検知に関する。
【背景技術】
【０００２】
組み込みシステムなどにおいて、リアルタイム性の保障などのため、割り込みの処理中であっても、処理中の割り込みの優先度（レベル）よりも高い優先度の割り込み要求があった場合、処理中の割り込み処理を中断し、高い優先度の割り込み処理を行い、その完了後に、中断された割り込み処理を再開するように構築されたシステムがある。いわゆる多重割り込みシステム、あるいは割り込みを優先度によってネストさせるシステムである。【０００３】
また、多重割り込みシステムか否かに関わらず、システムが動作していることをハードウェアによって監視するためのウォッチドッグタイマ（Watchdog Timer、以下「ＷＤＴ」と表記する）を備えているシステムがある。【０００４】
組み込みシステムなどにおいて、ＷＤＴがタイムアウト（エクスパイア）しないにも関わらず、システムが正常に動作しなくなることがある。異常動作の原因は多様であるが、割り込み処理に関連する異常動作も多く、多重割り込みシステムの場合には、自動復旧や原因解析が困難な場合が多い。【０００５】
異常動作の検知が不十分な場合の一例として、（通常のシステムではＷＤＴが１つしかないこともあり）ＷＤＴのリセットが、タイマ割り込みによって（あるいはすべての割り込みによって）行われる場合が挙げられる。この場合、ＷＤＴはＣＰＵ（とその周辺のＨ／Ｗ）が動作していることの確認しか行えない。つまり、周辺回路が割り込み要求を出していて、ＣＰＵがそれを受け付けていることの確認である。その際、システムが期待している動作を実行できているかの確認は行われていない。【０００６】
公開特許公報の62-175840号は、最高レベル（実行優先順位）の処理プログラムの実行の合間に、複数の処理プログラムをレベルに応じて実行するデータ処理システムを開示する。このシステムでは、処理プログラムのレベルに応じた異なるオーバーフロー値を有しかつ対応する処理理プログラムの実行終了後にリセットされるＷＤＴを複数設けて、そのいずれか１つのＷＤＴのオーバーフローに基づきデータ処理システムの障害発生を検出する。【０００７】
公開特許公報の10-275097は、複数の処理プログラムをレベルに応じた優先順位のもとに実行するデータ処理システムを開示する。このシステムでは、複数の処理プログラムのそれぞれに個別に対応する複数のＷＤＴを配置し、これら複数のＷＤＴのオーバーフローに基づきデータ処理システムの暴走発生を検出する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開昭６２−１７５８４０号公報
【特許文献２】特開平１０−２７５０９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１のデータ処理システムは、タイマによって起動される最高レベルの処理プログラムの実行を前提としており、最高レベルより下位レベル間での割り込み処理、あるいは１つのレベルに複数の処理プログラムが割り当てられている場合の割り込み処理などについて対応していない。また、ＷＤＴの起動タイミング等についての開示もない。【００１０】
特許文献２のデータ処理システムでは、複数のＷＤＴが並行して起動することがないので、優先度の異なる複数の割り込みを並行して処理（管理）することができない。【００１１】
したがって、本発明の目的は、優先度の異なる複数の割り込みが並行して発生する場合や、１つのレベル（優先度）に複数の割り込みが並行して発生する場合などにおいても、割り込み処理に起因する異常動作の検知をすることができる、多重割り込み処理を可能にすることである。
【課題を解決するための手段】
【００１２】
本発明は、多重割り込みシステムにおいて、割り込み処理に起因する異常動作を検知する方法を提供する。その方法は、割り込みの優先度毎に、所定のタイムアウト値を有するＷＤＴを準備するステップと、各ＷＤＴを対応する優先度の割り込み要求があった時点で起動させるステップと、少なくとも１つのＷＤＴがタイムアウトした場合、当該ＷＤＴに対応する優先度よりも少なくとも１レベル以上高い優先度の割り込み要求を受け入れるステップとを含み、割り込み要求を受け入れるステップにおいて、割り込みの優先度の１つに複数の割り込み要因が割り当てられている場合、当該優先度よりも下位レベルのＷＤＴのタイムアウトに起因する割り込み要求を優先させることにより、当該下位レベルの優先度の割り込み処理において異常動作があったことを検知する。【００１３】
本発明の一態様では、多重割り込みシステムにおいて、割り込み処理を制御するコントローラを提供する。そのコントローラは、割り込みの優先度毎に設けられ、それぞれ所定のタイムアウト値を有する複数のＷＤＴと、デバイスから割り込み要求信号を受け取り、各割り込み要求信号が有する優先度に応じて対応するＷＤＴに起動信号を出力する割り込み優先度セレクタと、少なくとも１つのＷＤＴがタイムアウトした場合、当該ＷＤＴに対応する優先度よりも少なくとも１レベル以上高い優先度の割り込み要求信号をプロセッサへ出力する割り込み処理回路と、を備えている。さらに、その割り込み処理回路は、割り込みの優先度の１つに複数の割り込み要因が割り当てられている場合、当該優先度よりも下位レベルのＷＤＴのタイムアウトに起因する割り込み要求信号を優先させることにより、当該下位レベルの優先度の割り込み処理において異常動作があったことを検知するように構成されている。【００１４】
本発明およびその一態様によれば、割り込みの優先度が同一あるいは異なる複数の割り込みがあった場合において、いずれの優先度での割り込み処理に異常があったかを検知することができる。また、本発明では、優先度の下位レベルのＷＤＴのタイムアウトに起因する割り込み要求を優先させて、言い換えれば、割り込みの処理を開始した時点（下位の優先度の割り込み処理が開始されないことが判明した時点）割り込み処理の異常を検知するので、従来のＷＤＴのタイムアウト時での検知よりもその異常検知の確度（精度）を向上させることが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の割り込み処理に起因する異常動作を検知する方法の流れを説明する図である。
【図２】本発明の割り込み処理を制御するコントローラの構成を示す図である。
【発明を実施するための形態】
【００１６】
図面を参照しながら本発明の実施の形態を説明する。図１は、多重割り込みシステムにおいて、割り込み処理に起因する異常動作を検知する方法の流れを説明する図である。なお、本方法は後述する本発明の割り込み処理を制御するコントローラを一例として基本的にハードウェアで実装可能であるが、プログラム（ソフトウェア）による実施を排除するものではなく、両者の協業の形態で実装される場合があることは言うまでもない。
【００１７】
ステップＳ１１において、複数のＷＤＴを準備する。各ＷＤＴは、割り込みの優先度（レベル）毎に、所定のタイムアウト値を有するに構成される。所定のタイムアウト値は、優先度、割り込み要因に応じて設定される。ここで、割り込み要因とは、処理されるプログラム、Ｉ／Ｏを介した各種の入出力などのＣＰＵが処理する内容を意味する。一般に、割り込みの優先度が上がるほどタイムアウト値は短く設定される。
【００１８】
ステップＳ１２において、割り込み要求があった優先度のＷＤＴをその割り込み要求を受けた時点で起動させる。その際、割り込みの優先度の１つに複数の割り込み要因が割り当てられている場合、その割り込み要因中での最初の割り込み要求があった時点で対応するＷＤＴを起動させる。起動したＷＤＴは、その優先度の割り込みの受付時、すなわち対応する割り込み要求が受け入れられプロセッサによって当該割り込み処理が開始された時点で（割り込みハンドラの実行開始時に）リセットされる。
【００１９】
ステップＳ１３において、少なくとも１つのＷＤＴがタイムアウト（エクスパイア）したか否かを判定する。具体的にはＷＤＴのカウント値が所定のタイムアウト値以上になったか（オーバーフローしたか）否かを判定する。この判定がＮｏの場合、割り込み要求が順調に処理されているので、ステップＳ１２の前に戻り、次の割り込み要求を待つ状態となる。
【００２０】
ステップＳ１３の判定がＹｅｓの場合、次のステップＳ１４において、そのタイムアウトしたＷＤＴの優先度よりも少なくとも１レベル以上高い（上位の）優先度の割り込み要求を受け入れる。同時にその上位のＷＤＴを起動させる。その際、選択される優先度はタイムアウトしたＷＤＴの１レベル上のみならず、２レベル以上上の優先度であってもよい。また、選択される優先度は１つとは限らず、２以上の複数の優先度を選択してもよい。すなわち、割り込み要求を受け入れるステップＳ１４においては、ＷＤＴに対応する優先度よりも少なくとも１レベル以上高い複数の優先度の割り込み要求を受け入れることができる。
【００２１】
ステップＳ１４において、割り込みの優先度の１つに複数の割り込み要因が割り当てられている場合、当該優先度よりも下位レベルのＷＤＴのタイムアウトに起因する割り込み要求を優先させる。例えば、レベルＮの優先度の割り込み要因が複数あったとしても、１つ下の（Ｎ−１）レベルの優先度のＷＤＴのタイムアウトがあった場合、その（Ｎ−１）レベルの優先度の割り込み要求を優先させて（あたかも新たなＮレベルとみなして）割り込ませる。この仕組みを採用するのは、後述するステップＳ１６において、当該下位レベル（上の例では（Ｎ−１）レベル）の優先度の割り込み処理において異常動作があったことを検知させるためである。
【００２２】
ステップＳ１５において、ステップＳ１４で選択された少なくとも１つ上位の優先度のＷＤＴが、タイムアウト（エクスパイア）したか否かを判定する。具体的な判定は、ステップＳ１３の場合と同様に、ＷＤＴのカウント値が所定のタイムアウト値以上になったか（オーバーフローしたか）否かを判定する。
【００２３】
ステップＳ１５の判定がＮｏの場合、すなわちステップＳ１４で選択された少なくとも１つの上位の優先度の割り込み要求が受け入れられてその割り込み処理が順調に進んだ場合、ステップＳ１６において、下位の優先度での割り込みの異常が検知される。具体的には、上述したステップＳ１４において説明したように、下位レベルのＷＤＴのタイムアウトに起因した割り込み要求が採用された場合、そのＷＤＴがタイムアウトした優先度の割り込み処理に異常があったことが検知される。このように、本発明では、優先度の下位レベルのＷＤＴのタイムアウトに起因する割り込み要求を優先させて、言い換えれば、割り込みの処理を開始した時点（下位の優先度の割り込み処理が開始されないことが判明した時点）割り込み処理の異常を検知するので、後述する各実施例の記載からも明らかなように、従来のＷＤＴのタイムアウト時での検知よりもその異常検知の確度（精度）を向上させることが可能となる。
【００２４】
ステップＳ１５の判定がＹｅｓの場合、ステップＳ１７において、優先度が最上位の割り込みに対応するＷＤＴがタイムアウト（エクスパイア）したか否かを判定する。具体的な判定は、ステップＳ１３の場合と同様に、ＷＤＴのカウント値が所定のタイムアウト値以上になったか（オーバーフローしたか）否かを判定する。この判定がＮｏの場合、ステップＳ１４に戻り、ステップＳ１５でタイムアウトしたＷＤＴの優先度よりも少なくとも１レベル以上さらに高い（上位の）優先度の割り込み要求を受け入れる。同時にその上位のＷＤＴを起動させる。
【００２５】
ステップＳ１７の判定がＹｅｓの場合、ステップＳ１８においてシステムをリセットする。このシステムのリセットにより割り込み処理の異常が検知される。
【００２６】
次に、図２を参照しながら、本発明の割り込み処理を制御するコントローラについて説明する。図２はそのコントローラ１００の一実施形態である構成を示す図である。コントローラ１００は、多重割り込みシステムの一部として、あるいは外部のコントローラとして構成される。なお、図２では、例として３つの割り込みの優先度（レベルＬ１、Ｌ２、Ｌ３）についての構成を示しているが、これはあくまで一例であって、４以上の数の任意の優先度の場合は、以下に述べる各構成要素を増やして拡張していけばよい。
【００２７】
図２において、コントローラ１００は、優先度セレクタ１１、１２、１３、優先度ラインＬ１、Ｌ２、Ｌ３、ＷＤＴ２１、２２、２３、および割り込み処理回路３１を含む。優先度セレクタ１１、１２、１３の出力は、それぞれ優先度ラインＬ１、Ｌ２、Ｌ３に接続される。優先度セレクタ１１、１２、１３は、各デバイス（図示なし）から割り込み要求信号Ｒ１、Ｒ２、Ｒ３を受け取り、各割り込み要求信号が有する優先度に応じて対応する優先度ラインＬ１、Ｌ２、Ｌ３に各要求信号を出力する。より具合的には、優先度セレクタ１１、１２、１３は、割り込み要求信号Ｒ１、Ｒ２、Ｒ３が有する割り込み要因に応じて予め設定した優先度に各要求信号を振り分ける。この要求信号は、ＷＤＴ２１、２２、２３の起動信号ともなる。なお、優先度セレクタの数は３つに限られず少なくとも２以上の任意の数でよい。
【００２８】
ＷＤＴ２１は、優先度Ｌ１に対応したＷＤＴであり、その入力が優先度ラインＬ１に接続し、その出力は優先度ラインＬ２に接続する。ＷＤＴ２１は、所定のタイムアウト値Ｔ１を有する。所定のタイムアウト値は、既に図１のステップＳ１１で説明したように、優先度や割り込み要因に応じて設定される。同様に、ＷＤＴ２２、２３は、それぞれ優先度Ｌ２、Ｌ３に対応したＷＤＴであり、各入力が優先度ラインＬ２、Ｌ３に接続する。ＷＤＴ２２の出力は優先度ラインＬ３に接続する。ＷＤＴ２３の出力は、後述するように、システムをリセットする信号として出力される。ＷＤＴ２２、２３は、それぞれ所定のタイムアウト値Ｔ２、Ｔ３を有する。図２の例では、優先度はＬ１＜Ｌ２＜Ｌ３のように高くなるので、タイムアウト値は、逆にＴ１＞Ｔ２＞Ｔ３のように小さくなる。各ＷＤＴは、対応する割り込み要求がＣＰＵへ送られてその割り込み処理が開始された時点で、ＣＰＵあるいは別のリセット回路（図示なし）からのリセット信号ＲＳ１によってリセットされる。
【００２９】
ＷＤＴのうち割り込みの優先度が最上位のＷＤＴは、自らがタイムアウトした場合、システムをリセットする信号をＣＰＵ内蔵のあるいは外付けのリセット回路（図示なし）へ向けて出力するように構成される。図２の例では、最上位のＷＤＴ２３がタイムアウトした場合、システムのリセット信号ＲＳ２を出力する。このシステムのリセットにより割り込み処理の異常が検知される。
【００３０】
割り込み処理回路３１は、優先度ラインＬ１、Ｌ２、Ｌ３から優先度で割り振られた割り込み要求信号ＲＬ１、ＲＬ２、ＲＬ３を受け取り、ＣＰＵへ向けて選択的に割り込み要求信号を送信する。ここで選択的な送信とは、割り込み要求信号の出力に際して、対応する優先度以下のレベルの優先度を有する他の割り込み要求信号の出力を抑制することを意味する。例えば、優先度レベル（Ｎ−１）の割り込み要求信号を出力する場合、上位の優先度レベルＮ以上の割り込み要求信号を除いて、優先度レベル（Ｎ−１）以下の他の割り込み要求信号の出力を抑制する。
【００３１】
割り込み処理回路３１は、少なくとも１つのＷＤＴがタイムアウトした場合、当該ＷＤＴに対応する優先度よりも少なくとも１レベル以上高い優先度の割り込み要求信号をプロセッサへ出力するように構成される。例えば、図２において、ＷＤＴ２１がタイムアウトした場合、１つ上位の優先度ラインＬ２からの要求信号ＲＬ２をＣＰＵへ向けて選択的に送信する。その際、優先度Ｌ２の要求信号ＲＬ２のみならず、２レベル上の優先度Ｌ３の要求信号ＲＬ３を選択して送信してもよい。また、２つの要求信号ＲＬ２、ＲＬ３を選択して順次送信するようにしてもよい。
【００３２】
割り込み処理回路３１は、割り込みの優先度の１つに複数の割り込み要因が割り当てられている場合、当該優先度よりも下位レベルのＷＤＴのタイムアウトに起因する割り込み要求信号を優先させるように構成される。例えば、図２において、レベルＬ２の優先度の割り込み要因が複数（例えばＲ１とＲ３）あったとしても、１つ下のレベルＬ１の優先度のＷＤＴ２１のタイムアウトがあった場合、そのレベルＬ１の優先度の割り込み要求ＲＬ１を優先させて（あたかもＬ２レベルの要求ＲＬ２とみなして）割り込ませる。この仕組みを採用するのは、当該下位レベル（上の例ではレベルＬ１）の優先度の割り込み処理において異常動作があったことを検知させるためである。
【００３３】
次に、本発明の方法、コントローラによる割り込み処理の異常検知例を実施例として以下に説明する。
【実施例１】
【００３４】
＜優先度レベルＮの割り込み処理が間違っていて割り込み要因をクリアしないため、優先度レベルＮの割り込み要求が出続ける（異常動作）場合＞
（１）優先度レベル（Ｎ−１）の割り込み要求は、無限に受け付けられない。このため、優先度レベル（Ｎ−１）のＷＤＴはタイムアウトし、上位の優先度レベルＮの割り込み要求が行われる。この優先度レベルＮの割り込み要求は受け付けられる。その際、（異常動作の割り込み要求を含めて）複数の割り込み要因に対して、既に上述したように、タイムアウトした下位の優先度レベルのＷＤＴに対応する割り込み処理が最優先されるので、割り込み処理の異常が検知される。仮に優先順位の判定を間違った場合でも、下記の実施例２の（１）の場合と同様に処理されて異常が検知される。【００３５】
（２）（Ｎ−２）以下の優先度レベルの割り込み要求が発端の場合、それぞれの優先度レベルのＷＤＴがタイムアウトし、順次上位の優先度レベルのＷＤＴが起動されてタイムアウトするので、上記（１）の場合と同様に異常が検知される（以下の実施例でも同様）。
【実施例２】
【００３６】
＜優先度レベルＮの割り込み処理が無限ループ（異常動作）をしている場合＞
（１）優先度レベル（Ｎ−１）の割り込み要求は、無限に受け付けられない。このため、優先度レベル（Ｎ−１）のＷＤＴはタイムアウトし、上位の優先度レベルＮの割り込み要求を行う。優先度レベルＮの割り込み要求も無限に受け付けられない。このため、優先度レベルＮのＷＤＴはタイムアウトし、上位の優先度レベル（Ｎ＋１）の割り込み要求を行う。この優先度レベル（Ｎ＋１）の割り込み要求は受け付けられるので、割り込み処理の異常が検知される。【００３７】
（２）優先度レベルＮの（新たな）割り込み要求が発端であっても、優先度レベルＮのＷＤＴがタイムアウトするので、上記（１）の場合と同様に異常が検知される。
【実施例３】
【００３８】
＜１つ１つの割り込み処理は正常に処理されているが、ＣＰＵの処理能力と比べ割り込み要求が多いため、優先度低レベルＮの割り込み処理が行われない（異常動作）場合＞
優先度レベルＮの割り込み要求が受け付けられず、ＷＤＴがタイムアウトし、優先度レベル（Ｎ＋１）の割り込み要求が行われる。その後、上記各実施例の場合と同様に動作し、異常が検知される。
【実施例４】
【００３９】
＜割り込み処理中に、全ての割り込みを長時間禁止してしまう（異常動作）場合＞
いずれかの優先度レベルのＷＤＴがタイムアウトし、順次上位の優先度レベルの割り込み要求が行われる。最終的には、最上位のＷＤＴがタイムアウトし、システムのリセットが行われて異常が検知される。システムのリセット以前に割り込みが許可された場合でも、その時点で最上位となっているＷＤＴに対応する割り込みによって、異常が検知される。【００４０】
本発明の実施形態について、図を参照しながら説明をした。しかし、本発明はこれらの実施形態に限られるものではない。本発明はその趣旨を逸脱しない範囲で当業者の知識に基づき種々なる改良、修正、変形を加えた態様で実施できるものである。
【符号の説明】
【００４１】
１１、１２、１３  優先度セレクタ
２１、２２、２３  ＷＤＴ
３１  割り込み処理回路
１００  コントローラ
【図１】
0005579935.tif 000002
【図２】
0005579935.tif 000003