JP5534466B2 - プログラム異常検出装置及びプログラム異常検出方法 - Google Patents

プログラム異常検出装置及びプログラム異常検出方法 Download PDF

Info

Publication number
JP5534466B2
JP5534466B2 JP2011147000A JP2011147000A JP5534466B2 JP 5534466 B2 JP5534466 B2 JP 5534466B2 JP 2011147000 A JP2011147000 A JP 2011147000A JP 2011147000 A JP2011147000 A JP 2011147000A JP 5534466 B2 JP5534466 B2 JP 5534466B2
Authority
JP
Japan
Prior art keywords
program
operation state
state information
comparison
timing
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
JP2011147000A
Other languages
English (en)
Other versions
JP2013015940A (ja
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.)
NEC Engineering Ltd
Original Assignee
NEC Engineering 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 NEC Engineering Ltd filed Critical NEC Engineering Ltd
Priority to JP2011147000A priority Critical patent/JP5534466B2/ja
Publication of JP2013015940A publication Critical patent/JP2013015940A/ja
Application granted granted Critical
Publication of JP5534466B2 publication Critical patent/JP5534466B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、プログラム異常検出装置及びプログラム異常検出方法に関し、特に、検出結果に応じて異常を自己復旧することが可能な装置及び方法に関する。
近年、加速度的な技術の進歩により、PC(Personal Computer)や通信機器等の電子機器の多機能化や、それに伴うファームウェアの複雑化・大規模化が進んでいる。また、電子機器の低消費電力化のため、電子機器を構成するデバイスのコア電圧の低電圧化や、デバイス構造の微細化が進んでいる。その一方では、電子機器の開発期間の短縮が求められている。
このような開発環境においては、十分な試験期間を設けることができないため、ファームウェアに内在するバグを取り切れず、装置動作上の不具合となるプログラム誤動作が発生することが多い。
また、最近では、デバイス構造の微細化により中性子線等の影響が深刻化しており、この中性子線等がソフトエラーを発生させる原因となっている。ソフトエラーは、プログラム誤動作やデータ領域のビット反転といった問題の原因となっており、設計完了後の電子機器の動作に大きな影響を及ぼす。特に、高所に設置される無人無線局等のマイクロ波無線装置では、地上や地下よりも中性子線等の影響をより多く受けるため、上述した問題の発生確率が上昇する。
ソフトエラーによる不具合としては、例えば、ファームウェアの基本部分にプログラム誤動作が発生し、CPU(Central Processing Unit)全体が動作しなくなることが考えられる。この不具合の対策としては、例えば、ウォッチドッグタイマを用いてCPUのリセットを実行することにより、自己復旧させる方法が一般的に用いられる(例えば、特許文献1)。
また、ソフトエラーによる他の不具合としては、例えば、データ領域にビット反転が発生し、ファームウェア自体は動作しているが、期待する動作とならないことが考えられる。この不具合の対策としては、例えば、データ領域に対してパリティチェックを実施することにより、エラー箇所を検出する方法が一般的に用いられる(例えば、特許文献2及び3)。
特開2003−67220号公報 特開平4−373045号公報 特開昭63−142449号公報
ここで、中性子線等の影響によりプログラム格納領域にソフトエラーが発生し、プログラムが誤動作する場合について考える。この場合、プログラムの誤動作により、ファームウェアや一部のプログラムが不正ループに陥るなど、外部からの制御が不可能になる可能性がある。
このとき、ファームウェアとしては、内部プログラムが動作していると判断する可能性が高く、一部のプログラムが動作していると判断した場合には、ウォッチドッグタイマへのリセットパルスの発出が続けられる。そのため、ウォッチドッグタイマによるCPUのリセットを期待することができないという問題があった。
また、データ領域だけでなく、プログラム格納領域全体に対するパリティチェックは、ファームウェアの負荷が大きく現実的ではない。そのため、プログラムの誤動作を有効的に検出することができないという問題があった。
そこで、本発明は、上記従来の技術における問題点に鑑みてなされたものであって、プログラムの動作異常を検出することができ、信頼性を向上させることが可能なプログラム異常検出装置及びプログラム異常検出方法を提供することを目的とする。
上記目的を達成するため、本発明は、所定の周期で動作する1つ又は複数のプログラムの異常を検出するプログラム異常検出装置であって、1つ又は複数のプログラムの動作状態が変化した際に生成される、該プログラムの動作状態を示す動作状態情報を格納する実行値格納部と、所定のタイミングにおける前記プログラムの動作予定を示す予定動作状態情報を格納する設計値格納部と、前記所定のタイミングで、前記動作状態情報及び前記予定動作状態情報を比較する比較部とを備え、前記比較部は、前記比較の結果、前記動作状態情報及び前記予定動作状態情報が一致しない場合に、前記プログラムの動作が異常であると判断し、前記所定のタイミングは、前記プログラムの動作開始予定直後である第1のタイミングと、前記プログラムの動作終了予定直後である第2のタイミングとであることを特徴とする。
そして、本発明によれば、1つ又は複数のプログラムの動作状態が変化した際に生成される、プログラムの動作状態を示す動作状態情報と、所定のタイミングである第1及び第2のタイミングにおけるプログラムの動作予定を示す予定動作状態情報とを比較するため、第1及び第2のタイミングにおいて、プログラムが正常に動作しているか否かを判断することができる。
上記プログラム異常検出装置において、前記所定のタイミングを示す比較トリガを生成するトリガ発生部をさらに備え、前記比較部は、前記比較トリガに基づき前記所定のタイミングで前記比較を行うことができる。これにより、比較部は、予め設定された任意のタイミングで、プログラムの動作異常を検出することができる。
上記プログラム異常検出装置において、前記実行値格納部は、前記プログラムの動作開始の際に、前記プログラムの動作開始を示すプログラム開始情報を前記動作状態情報として格納し、前記プログラムの動作終了の際に、前記プログラムの動作終了を示すプログラム終了情報を前記動作状態情報として格納し、前記設計値格納部は、前記第1及び第2のタイミングにおける前記プログラムの動作予定を示す第1及び第2の予定動作状態情報を前記予定動作状態情報として格納し、前記比較部は、前記第1のタイミングで前記動作状態情報及び前記第1の予定動作状態情報を比較し、前記第2のタイミングで前記動作状態情報及び前記第2の予定動作状態情報を比較することができる。これにより、プログラムの動作開始予定及び動作終了予定のタイミングで、プログラムの動作異常を検出することができる。
上記プログラム異常検出装置において、前記所定のタイミングを、複数のプログラムが互いに関連して動作する場合に、前記第1及び第2のタイミングに代えて、前記複数のプログラムのうち所定のプログラムの動作が開始される第3のタイミングと、前記所定のプログラムの動作が終了する第4のタイミングとすることができる。
上記プログラム異常検出装置において、前記実行値格納部は、前記プログラムの動作開始の際に、前記プログラムの動作開始を示すプログラム開始情報を前記動作状態情報として格納し、前記プログラムの動作終了の際に、前記プログラムの動作終了を示すプログラム終了情報を前記動作状態情報として格納し、前記設計値格納部は、前記第3及び第4のタイミングにおける前記複数のプログラムの動作予定を示す第3及び第4の予定動作状態情報を前記予定動作状態情報として格納し、前記比較部は、前記第3のタイミングで、前記所定のプログラムからの前記プログラム開始情報を受け取り、該プログラム開始情報に基づき前記動作状態情報及び前記第3の予定動作状態情報を比較し、前記第4のタイミングで、前記所定のプログラムからの前記プログラム終了情報を受け取り、該プログラム終了情報に基づき前記動作状態情報及び前記第4の予定動作状態情報を比較することができる。これにより、所定のプログラムの動作開始及び動作終了のタイミングで、互いに関連して動作する複数のプログラムの動作異常を検出することができる。
また、本発明は、所定の周期で動作する1つ又は複数のプログラムの異常を検出するプログラム異常検出方法であって、1つ又は複数のプログラムの動作状態が変化した際に生成される、該プログラムの動作状態を示す動作状態情報と、前記プログラムの動作開始予定直後である第1のタイミング、及び前記プログラムの動作終了予定直後である第2のタイミングにおける前記プログラムの動作予定を示す予定動作状態情報とを前記第1及び第2のタイミングで比較し、前記動作状態情報及び前記予定動作状態情報が一致しない場合に、前記プログラムの動作が異常であると判断することを特徴とする。本発明によれば、前記発明と同様に、第1及び第2のタイミングにおいて、プログラムが正常に動作しているか否かを判断することができる。
以上のように、本発明によれば、プログラムの動作異常を検出することができ、信頼性を向上させることが可能になる。
本発明にかかるプログラム異常検出装置の第1の実施形態を示すブロック図である。 実行予定値テーブルの一例を示す略線図である。 プログラムが正常に動作する場合におけるプログラム異常検出処理について説明するためのシーケンス図である。 プログラムの動作に異常が発生した場合におけるプログラム異常検出処理について説明するためのシーケンス図である。 プログラム異常検出処理について説明するためのタイミングチャートであり、(a)はプログラムが正常に動作する場合、(b)はプログラムの動作に異常が発生した場合を示す図である。 本発明にかかるプログラム異常検出装置の第2の実施形態を示すブロック図である。 実行予定値テーブルの一例を示す略線図である。 プログラムが正常に動作する場合におけるプログラム異常検出処理について説明するためのシーケンス図である。 プログラムの動作に異常が発生した場合におけるプログラム異常検出処理について説明するためのシーケンス図である。 プログラム異常検出処理について説明するためのタイミングチャートであり、(a)はプログラムが正常に動作する場合、(b)はプログラムの動作に異常が発生した場合を示す図である。
次に、本発明を実施するための形態について、図面を参照しながら詳細に説明する。
図1は、本発明にかかるプログラム異常検出装置の第1の実施形態を示し、このプログラム異常検出装置10は、1つ又は複数のプログラム1A、1B、・・・、1N、実行値格納部2、設計値格納部3、比較部4及びトリガ発生部5で構成される。
プログラム1A、1B、・・・、1N(以下、各プログラムを特に区別する必要がない場合には、「プログラム1」とする)は、例えば、ファームウェア上で動作するプログラムであり、予め設定された所定のプログラム実行周期で開始及び/又は終了を繰り返すプログラムである。
プログラム1は、例えば、このプログラム異常検出装置10全体を起動させた際のリセット信号に応じて動作を開始する。そして、プログラム1は、予め設定されたプログラム実行時間経過後に動作を終了すると共に、動作終了後、予め設定されたプログラム待機時間経過後に動作を開始する。
また、プログラム1は、自身の動作状態に応じて、動作状態を示す動作状態レポートを生成する。具体的には、プログラム1は、プログラムの開始及び/又は終了を検出し、プログラムの開始を示すプログラム開始レポート及び/又は終了を示すプログラム終了レポートを生成する。プログラム1で生成された動作状態レポートは、実行値格納部2に対して出力される。
実行値格納部2は、各プログラム1から出力された動作状態レポートを受け取り、各プログラム1の実行状態を示す実行実測値テーブルを生成して記録する。実行実測値テーブルには、動作状態レポートを受け取った時点における各プログラム1の実行状態を示す値が格納される。
各プログラム1の実行状態を示す値としては、例えば、各プログラム1に対して1ビットが割り当てられ、割り当てられた1ビットの値「0」又は「1」に対して、プログラム1の状態を対応させる。この例において、値「1」は、プログラム1が実行中であることを示し、値「0」は、プログラム1が待機中であることを示す。この実行実測値テーブルに格納される値は、動作状態レポートを受け取る毎に上書きされて更新される。
設計値格納部3は、予め設定された各プログラム1の実行状態の予定を示す実行予定値テーブルを保持する。実行予定値テーブルには、図2に示すように、所定のタイミングを示す項目「タイミング」と、項目「タイミング」に記述されたタイミングにおける各プログラム1の実行状態の予定を示す項目「プログラム」とが記述される。
項目「タイミング」は、後述する比較部4における比較処理を行うタイミングを示す。例えば、「比較A」は、予定としてプログラムが実行中であるタイミングを示し、「比較B」は、予定としてプログラムが待機中であるタイミングを示す。
項目「プログラム」は、項目「タイミング」に記述されたタイミングにおけるプログラム1の実行状態の予定を示し、この実行状態の予定を示す値が格納される。各プログラム1の実行状態の予定を示す値としては、実行実測値テーブルと同様に、例えば、各プログラム1に対して1ビットが割り当てられ、割り当てられた1ビットの値「0」又は「1」に対して、プログラム1の状態を対応させる。この例において、値「1」は、プログラム1が実行中であることを示し、値「0」は、プログラム1が待機中であることを示す。
説明は図1に戻り、比較部4は、後述するトリガ発生部5から供給される比較トリガを受け取り、この比較トリガを受けたタイミングで、実行値格納部2に格納された実行実測値テーブルと設計値格納部3に格納された実行予定値テーブルとを参照し、各々のテーブルに格納された値を比較する。
比較部4は、比較の結果、動作が異常である判断した場合に、異常状態を示すエラーレポートを出力する。この場合、プログラム1は、比較部4から出力されたエラーレポートに基づき、CPUに対してリセット処理を実行し、プログラムの動作を正常な状態に復旧させる処理を行う。
トリガ発生部5は、比較部4における比較処理を行うタイミングを決定するための比較トリガを生成し、比較部4に対して出力する。トリガ発生部5は、例えばタイマを備え、プログラム1の動作が開始されるタイミングでタイマによるカウントを開始し、カウント値が予め設定された値になった時点で比較トリガを出力する。
尚、プログラム1は、上述したように、プログラム異常検出装置10全体の起動時におけるリセット信号に基づき動作を開始する予定であるので、トリガ発生部5は、このリセット信号によりプログラム1の動作開始を検出し、タイマによるカウントを開始する。
比較トリガは、例えば、タイマによるカウントが開始されてから第1の比較待機時間経過後と、第1の比較待機時間経過後からさらに第2の比較待機時間経過後と、第2の比較待機時間経過後からさらに第3の比較待機時間経過後とにおける時点で出力される。
具体的には、第1の比較待機時間は、比較トリガがプログラム1の動作開始予定後、且つ動作終了予定前に出力されるように設定される。また、第2の比較待機時間は、比較トリガがプログラム1の動作終了予定後、且つ次のプログラム1の動作開始予定前に出力されるように設定される。さらに、第3の比較待機時間は、比較トリガが次のプログラム1の動作開始予定後、且つ動作終了予定前に出力されるように設定される。
尚、プログラム1の動作異常をより早く検出できるようにするため、比較トリガがプログラム1の動作に変化が生じる時点により近いタイミングで出力されるように、各々の比較待機時間を設定すると好ましい。すなわち、比較トリガがプログラム1の動作開始予定直後、動作終了予定直後、及び次のプログラム1の動作開始予定直後に出力されるように、第1、第2及び第3の比較待機時間を設定する。
次に、上記構成を有するプログラム異常検出装置10の動作について、図3〜図5を参照して説明する。ここでは、説明を容易とするため、1つのプログラム1の実行状態に基づく動作を例にとって説明する。また、この例において、設計値格納部3に格納された実行予定値テーブルは、図2に示すように設定されたものとし、実行値格納部2に格納された実行実測値テーブルに記述されたプログラム1の実行状態を示す値の初期値は、プログラムが待機中であることを示す値「0」とする。
まず、プログラム1が正常に動作する場合の異常検出処理について、図3及び図5(a)を参照して説明する。正常動作時において、プログラム1は、図5(a)に示すように、動作開始からプログラム実行時間t4経過後に動作を終了し、プログラム待機時間t5経過後に動作を開始する。そして、プログラム実行時間t4及びプログラム待機時間t5で表されるプログラム実行周期t6毎に、この動作が繰り返し行われる。
図3に示すように、ステップS1において、プログラム1は、プログラム異常検出装置10全体のリセット信号に基づき動作を開始すると、プログラム開始レポートを生成し、実行値格納部2に対して通知する(シーケンスSEQ1)。実行値格納部2は、プログラム1からのプログラム開始レポートの通知に基づき、実行実測値テーブルに記述された値を初期値である値「0」から値「1」に更新する(ステップS2)。また、トリガ発生部5は、リセット信号に基づき、プログラム1の動作開始と同時にタイマによるカウントを開始する(ステップS3)。
次に、トリガ発生部5は、プログラム1の動作開始(カウント開始)から予め設定された第1の比較待機時間t1(図5(a))経過後に比較パルスを生成し、比較部4に対して出力する(シーケンスSEQ2)。比較部4は、第1の比較待機時間t1経過後にトリガ発生部5から供給される比較トリガに基づき、実行値格納部2に格納された実行実測値テーブルと、設計値格納部3に格納された実行予定値テーブルとを参照し(シーケンスSEQ3、SEQ4)、実行実測値テーブルに記述された現在のプログラム1の実行状態を示す値と、実行予定値テーブルの「比較A」の欄に記述された値とを比較する(ステップS4)。
このとき、実行実測値テーブルに記述された値が「1」であり、且つ、実行予定値テーブルに記述された値が「1」であるため、比較の結果が一致する。従って、比較部4は、エラーレポートを出力せず、次の比較トリガがトリガ発生部5から供給されるまで待機する。
次に、ステップS5において、プログラム1は、動作開始からプログラム実行時間t4経過後に動作を終了すると、プログラム終了レポートを生成し、実行値格納部2に対して通知する(シーケンスSEQ5)。実行値格納部2は、プログラム1からのプログラム終了レポートの通知に基づき、実行実測値テーブルに記述された値を値「1」から値「0」に更新する(ステップS6)。
一方、トリガ発生部5は、第1の比較待機時間経過後から予め設定された第2の比較待機時間t2(図5(a))経過後に比較パルスを生成し、比較部4に対して出力する(シーケンスSEQ6)。
比較部4は、ステップS4における比較から第2の比較待機時間t2経過後にトリガ発生部5から供給される比較トリガに基づき、実行値格納部2に格納された実行実測値テーブルと、設計値格納部3に格納された実行予定値テーブルとを参照し(シーケンスSEQ7、SEQ8)、実行実測値テーブルに記述された値と、実行予定値テーブルの「比較B」の欄に記述された値とを比較する(ステップS7)。
このとき、実行実測値テーブルに記述された値が「0」であり、且つ、実行予定値テーブルに記述された値が「0」であるため、比較の結果が一致する。従って、比較部4は、エラーレポートを出力せず、次の比較トリガがトリガ発生部5から供給されるまで待機する。
次に、トリガ発生部5は、第2の比較待機時間t2経過後から予め設定された第3の比較待機時間t3(図5(a))経過後に比較トリガを生成し、比較部4に対して出力する。以下、上述したステップS1〜S6、及びシーケンスSEQ1〜SEQ8に示す処理を繰り返し、プログラム1の異常検出処理を行う。
尚、初めてプログラム1の動作が開始される場合以外においては、ステップS3におけるトリガ発生部5のカウント開始処理は行われず、ステップS4における比較処理は、第3の比較待機時間t3経過後にトリガ発生部5から供給される比較トリガに基づき行われる。
次に、プログラム1の動作に異常が発生した場合の異常検出処理について、図4を参照して説明する。プログラム1の動作異常としては、以下に示す(1)〜(4)の場合が考えられる。
(1)プログラム1が終了しない
(2)プログラム1が開始しない
(3)プログラム1が予定より早く終了する
(4)プログラム1が予定より早く開始する
ここでは、プログラム1の動作開始後に不正ループ等が発生し、(1)に示すプログラム1が終了しない場合を例にとって説明する。尚、図4において、上述した図3に示す動作と共通する部分には、同一の符号を付し、詳細な説明を省略する。
図4に示すステップS1〜S4、及びシーケンスSEQ1〜SEQ4に示すプログラム1の動作開始からステップS4における比較までの処理については、図3に示す処理と同一であるため、説明を省略する。
次に、プログラム1に不正ループが発生し、プログラムが終了しない場合、プログラム1は、図5(b)に示すように、動作開始からプログラム実行時間t4が経過しても動作を終了せず、プログラムが実行され続ける。そのため、プログラム1は、プログラム終了レポートを生成できず、実行値格納部2に対するプログラム終了レポートの通知が行われない。
この場合、比較部4は、図4に示すように、ステップS7において、ステップS4における比較から第2の比較待機時間経過後にトリガ発生部5から供給される比較トリガに基づき、実行値格納部2に格納された実行実測値テーブルと、設計値格納部3に格納された実行予定値テーブルとを参照し(シーケンスSEQ7、SEQ8)、実行実測値テーブルに記述された値と、実行予定値テーブルの「比較B」の欄に記述された値とを比較する。
このとき、実行実測値テーブルに記述された値は、プログラムの不正ループによりプログラム1の動作が終了していないため、「1」である。一方、実行予定値テーブルに記述された値は、「0」である。従って、ステップS7における比較の結果が一致しないため、比較部4は、エラーレポートを出力する(シーケンスSEQ9)。このように出力されたエラーレポートにより、CPUのリセットが実行され、プログラム1の動作が正常に復旧する。
尚、上述した(2)の動作異常は、第1の比較待機時間t1経過後に行われる比較処理(図3のステップS4)において、実行実測値テーブルに記述された値「0」と実行予定値テーブルに記述された値「1」とが一致しないため、プログラム1の動作異常を検出することができる。
また、(3)及び(4)の動作異常は、1回のプログラム実行周期t6内で動作異常を検出することができない。しかしながら、この場合には、プログラム1の実行時間又は待機時間が短くなるため、実際のプログラム実行周期t6が予定の周期と比較して短くなる。従って、プログラムの実行を複数回繰り返して行うことで、ステップS4又はステップS7における比較処理の際に、実行実測値テーブルに記述された値と実行予定値テーブルに記述された値とが一致しなくなる。これにより、プログラム1の動作異常を検出することができる。
以上のように、第1の実施形態によれば、プログラムの予定動作に応じて比較待機時間を予め設定し、比較待機時間経過後に出力される比較トリガに基づき、プログラムの実行状態を示す実行実測値テーブルに記述された値と、プログラムの実行状態の予定を示す実行予定値テーブルに記述された値とを比較するため、比較結果に応じて実際のプログラムの実行状態を判断し、プログラムの動作異常を検出することができる。また、動作異常を検出した場合には、動作異常を示すエラーレポートを出力するため、エラーレポートに基づいてプログラムを自己復旧させることができる。
次に、第2の実施形態について説明する。上述した第1の実施形態では、プログラムの予定動作の時間に基づいて行われる比較処理に応じた実行予定値テーブルを用いたが、例えば、関数や応答動作によって関連して動作する複数のプログラムに対して、割り込み処理等が発生する場合には、時間による管理だけでは、プログラムの実行予定が計画できないことが考えられる。
そこで、第2の実施形態では、プログラムから出力される動作状態レポートを比較トリガとし、プログラムのシーケンス動作に基づいて設定したプログラム実行予定の設計値を用いることにより、プログラムの動作異常を検出する。
図6は、本発明にかかるプログラム異常検出装置の第2の実施形態を示す。尚、以下の説明において、上述した第1の実施形態と共通する部分については、同一の符号を付し、詳細な説明を省略する。プログラム異常検出装置20は、複数のプログラム1A、1B、・・・、1N、実行値格納部2、設計値格納部3及び比較部14で構成される。
プログラム1A、1B、・・・、1Nは、自身の動作状態に応じた、プログラム開始レポート及び/又はプログラム終了レポートからなる動作状態レポートを生成する。プログラム1で生成された動作状態レポートは、実行値格納部2に対して出力される。また、複数のプログラム1A、1B、・・・、1Nのうち、所定のプログラムの動作状態レポート(プログラム開始レポート及びプログラム終了レポート)は、比較部14に対して出力される。
尚、以下の説明では、複数のプログラム1A、1B、・・・、1Nのうち、2つのプログラム1A及び1B(以下、プログラム1Aを「第1プログラム1A」、プログラム1Bを「第2プログラム1B」とする)を用いた場合を例にとり、第1プログラム1Aの動作状態レポート(第1プログラム開始レポート及び第1プログラム終了レポート)が比較部14に対して出力されるものとする。
また、この例では、第1及び第2プログラム1A、1Bの動作には、互いに関連があり、第1プログラム1Aの動作開始後に第2プログラム1Bの動作が開始され、第2プログラム1Bの動作開始後に第1プログラム1Aの動作が終了し、最後に第2プログラム1Bの動作が終了するものとする。
設計値格納部3に保持される実行予定値テーブルには、図7に示すように、所定のタイミングを示す項目「タイミング」と、項目「タイミング」に記述されたタイミングにおける各プログラム1の実行状態の予定を示す項目「ビット」とが記述される。
項目「タイミング」は、第1の実施形態と同様に、後述する比較部14における比較処理を行うタイミングを示す。例えば、「比較C」は、第1プログラム1Aの動作が開始したタイミングを示し、後述する比較部14において、第1プログラム開始レポートを比較トリガとした場合の比較処理の際に参照される。また、「比較D」は、第1プログラム1Aの動作が終了したタイミングを示し、比較部14において、第1プログラム終了レポートを比較トリガとした場合の比較処理の際に参照される。
ここで、項目「タイミング」に記述されるタイミングは、第1及び第2プログラム1A、1Bの実行状態が互いに反転するタイミング、すなわち、一方のプログラムが実行中であり、他方のプログラムが待機中であるタイミングが設定される。これは、様々なプログラムの動作異常を検出できるようにするためである。この例の場合、設定されるタイミングは、第1プログラム1Aが実行中且つ第2プログラム1Bが待機中であるタイミング、及び第1プログラム1Aが待機中且つ第2プログラム1Bが実行中であるタイミングである。
項目「ビット」は、項目「タイミング」に記述されたタイミングにおける各プログラム1の実行状態の予定を示し、この実行状態の予定を示す値が格納される。各プログラム1の実行状態の予定を示す値としては、第1の実施形態と同様に、例えば、各プログラム1に対して1ビットが割り当てられ、割り当てられた1ビットの値「0」又は「1」に対して、プログラム1の状態を対応させる。
この例では、プログラムとして第1及び第2プログラム1A、1Bを用いるので、第1プログラム1Aに対応する値が項目「上位ビット」に格納され、第2プログラム1Bに対応する値が項目「下位ビット」に格納される。例えば、「比較C」のタイミングは、第1プログラム1Aの動作が開始されたタイミングであるので、第1プログラム1Aのみが実行中の予定である。従って、項目「ビット」の値は、上位ビット及び下位ビットの順に「10」となる。また、「比較D」のタイミングは、第1プログラム1Aの動作が終了したタイミングであるので、第2プログラム1Bのみが実行中の予定である。従って、項目「ビット」の値は、「01」となる。
説明は図6に戻り、比較部14は、プログラム1から供給された動作状態レポートを比較トリガとして受け取り、この比較トリガを受けたタイミングで、実行値格納部2に格納された実行実測値テーブルと設計値格納部3に格納された実行予定値テーブルとを参照し、各々のテーブルに格納された値を比較する。比較部14は、比較の結果、動作が異常であると判断した場合に、異常状態を示すエラーレポートを出力する。
次に、上記構成を有するプログラム異常検出装置20の動作について、図8〜図10を参照して説明する。ここでは、上述したように、第1及び第2プログラム1A、1Bの実行状態に基づく動作を例にとって説明する。また、この例において、設計値格納部3に格納された実行予定値テーブルは、図7に示すように設定されたものとし、実行値格納部2に格納された実行実測値テーブルに記述された第1及び第2プログラム1A、1Bの実行状態を示す値の初期値は、プログラムが待機中であることを示す値「00」とする。
まず、第1及び第2プログラム1A、1Bが正常に動作する場合の異常検出処理について、図8及び図10(a)を参照して説明する。正常動作時において、第1プログラム1Aは、図10(a)に示すように、プログラム異常検出装置20全体のリセット信号に基づく動作開始から第1プログラム実行時間t7経過後に動作を終了し、第1プログラム待機時間t8経過後に動作を開始する。そして、第1プログラム実行時間t7及び第1プログラム待機時間t8で表される第1プログラム実行周期t9毎に、この動作が繰り返し行われる。
また、第2プログラム1Bは、リセット信号に基づく第1プログラム1Aの動作開始から第2プログラム待機時間t10経過後に動作を開始し、動作開始から第2プログラム実行時間t11経過後に動作を終了し、第2プログラム待機時間t12経過後、さらに第2プログラム待機時間t10が経過した後に動作を開始する。そして、第2プログラム待機時間t10、第2プログラム実行時間t11及び第2プログラム待機時間t12で表される第2プログラム実行周期t13毎に、この動作が繰り返し行われる。
図8に示すように、ステップS11において、第1プログラム1Aは、プログラム異常検出装置20全体のリセット信号に基づき動作を開始すると、第1プログラム開始レポートを生成し、実行値格納部2及び比較部14に対して通知する(シーケンスSEQ11、SEQ12)。
実行値格納部2は、第1プログラム1Aからの第1プログラム開始レポートの通知に基づき、実行実測値テーブルに記述された値を初期値である値「0」から値「1」に更新する(ステップS12)。これにより、実行実測値テーブルに記述された値は、上位ビット及び下位ビットの順に「10」となる。
次に、比較部14は、第1プログラム1Aから供給される第1プログラム開始レポートを比較トリガとして、実行値格納部2に格納された実行実測値テーブルと、設計値格納部3に格納された実行予定値テーブルとを参照し(シーケンスSEQ13、SEQ14)、実行実測値テーブルに記述された現在の第1プログラム1Aの実行状態を示す値と、実行予定値テーブルに記述された値とを比較する(ステップS13)。
このとき、比較部14は、第1プログラム開始レポートを比較トリガとするため、実行予定値テーブルを参照する際に、「比較C」の欄に記述された値を参照する。この場合、実行実測値テーブルに記述された値が「10」であり、且つ、実行予定値テーブルに記述された値が「10」であるため、比較の結果が一致する。従って、比較部14は、エラーレポートを出力せず、次の比較トリガが供給されるまで待機する。
次に、ステップS14において、第2プログラム1Bは、リセット信号に基づく第1プログラム1Aの動作開始から第2プログラム待機時間t10経過後に動作を開始すると、第2プログラム開始レポートを生成し、実行値格納部2に対して通知する(シーケンスSEQ15)。
実行値格納部2は、第2プログラム1Bからの第2プログラム開始レポートの通知に基づき、実行実測値テーブルに記述された値を初期値である値「0」から値「1」に更新する(ステップS15)。これにより、実行実測値テーブルに記述された値は、「11」となる。
次に、ステップS16において、第1プログラム1Aは、動作開始から第1プログラム実行時間t7経過後に動作を終了すると、第1プログラム終了レポートを生成し、実行値格納部2及び比較部14に対して通知する(シーケンスSEQ16、SEQ17)。
実行値格納部2は、第1プログラム1Aからの第1プログラム終了レポートの通知に基づき、実行実測値テーブルに記述された値を値「1」から値「0」に更新する(ステップS17)。これにより、実行実測値テーブルに記述された値は、「01」となる。
次に、比較部14は、第1プログラム1Aから供給される第1プログラム終了レポートを比較トリガとして、実行値格納部2に格納された実行実測値テーブルと、設計値格納部3に格納された実行予定値テーブルとを参照し(シーケンスSEQ18、SEQ19)、実行実測値テーブルに記述された値と、実行予定値テーブルに記述された値とを比較する(ステップS18)。
このとき、比較部14は、第1プログラム終了レポートを比較トリガとするため、実行予定値テーブルを参照する際に、「比較D」の欄に記述された値を参照する。この場合、実行実測値テーブルに記述された値が「01」であり、且つ、実行予定値テーブルに記述された値が「01」であるため、比較の結果が一致する。従って、比較部14は、エラーレポートを出力せず、次の比較トリガが供給されるまで待機する。
次に、ステップS19において、第2プログラム1Bは、動作開始から第2プログラム実行時間t11経過後に動作を終了すると、第2プログラム終了レポートを生成し、実行値格納部2に対して通知する(シーケンスSEQ20)。その後、第2プログラム1Bは、次の第1プログラム1Aの動作開始までの第2プログラム待機時間t12が経過するまで待機する。
実行値格納部2は、第2プログラム1Bからの第2プログラム終了レポートの通知に基づき、実行実測値テーブルに記述された値を値「1」から値「0」に更新する(ステップS20)。これにより、実行実測値テーブルに記述された値は、「00」となる。
以下、上述したステップS11〜S20、及びシーケンスSEQ11〜SEQ20に示す処理を繰り返し、第1及び第2プログラム1A、1Bの異常検出処理を行う。
次に、第1及び第2プログラム1A、1Bの動作に異常が発生した場合の異常検出処理について、図9を参照して説明する。第1及び第2プログラム1A、1Bの動作異常としては、以下に示す(1)〜(4)の場合が考えられる。
(1)第1プログラム1Aが第2プログラム1B開始前に終了する
(2)第1プログラム1Aが第2プログラム1B終了後に終了する
(3)第1プログラム1Aが第2プログラム1B開始後に開始する
(4)第1プログラム1Aが第2プログラム1B終了後に開始する
ここでは、(1)に示す第1プログラム1Aが第2プログラム1B開始前に終了する場合を例にとって説明する。尚、図9において、上述した図8に示す動作と共通する部分には、同一の符号を付し、詳細な説明を省略する。
図9に示すステップS11〜S13、及びシーケンスSEQ11〜SEQ14に示す第1プログラム1Aの動作開始からステップS13における比較までの処理については、図8に示す処理と同一であるため、説明を省略する。
次に、第1プログラム1Aが第2プログラム1Bの動作開始前に終了する場合、第1プログラム1Aは、図10(b)に示すように、第2プログラム1Bの第2プログラム待機時間t10が経過する前に、第1プログラム実行時間t7’経過後に動作を終了する(図9のステップS16)。この場合、第1プログラム1Aは、第1プログラム終了レポートを生成し、実行値格納部2及び比較部14に対して通知する(シーケンスSEQ16、SEQ17)。
実行値格納部2は、第1プログラム1Aからの第1プログラム終了レポートの通知に基づき、実行実測値テーブルに記述された値を値「1」から値「0」に更新する(ステップS17)。このとき、第2プログラム1Bは、動作を開始していないので、第2プログラム1Bの動作に対応する下位ビットの値は「0」である。従って、実行実測値テーブルに記述された値は、「00」となる。
次に、比較部14は、第1プログラム1Aから供給される第1プログラム終了レポートを比較トリガとして、実行値格納部2に格納された実行実測値テーブルと、設計値格納部3に格納された実行予定値テーブルとを参照し(シーケンスSEQ18、SEQ19)、実行実測値テーブルに記述された値と、実行予定値テーブルに記述された値とを比較する(ステップS18)。
このとき、比較部14は、第1プログラム終了レポートを比較トリガとするため、実行予定値テーブルを参照する際に、「比較D」の欄に記述された値を参照する。この場合、実行実測値テーブルに記述された値が「00」であり、且つ、実行予定値テーブルに記述された値が「01」であるため、比較の結果が一致しない。従って、比較部14は、エラーレポートを出力する(シーケンスSEQ21)。このように出力されたエラーレポートにより、CPUのリセットが実行され、第1プログラム1Aの動作が正常に復旧する。
尚、上述した(2)及び(4)の動作異常は、第1プログラム1Aの動作終了後に行われる比較処理において、実行実測値テーブルに記述された値「00」と実行予定値テーブルに記述された値「01」とが一致しないため、プログラム1の動作異常を検出することができる。
また、(3)の動作異常は、第1プログラム1Aの動作開始後に行われる比較処理において、実行実測値テーブルに記述された値「11」と実行予定値テーブルに記述された値「10」とが一致しないため、プログラム1の動作異常を検出することができる。
以上のように、第2の実施形態によれば、プログラムのシーケンス動作に基づき出力される動作状態レポートを比較トリガとし、この比較トリガに基づき、実行実測値テーブルに記述された値と、実行予定値テーブルに記述された値とを比較するため、比較結果に応じて実際のプログラムの実行状態を判断し、プログラムの動作異常を検出することができる。また、動作異常を検出した場合には、第1の実施形態と同様に、動作異常を示すエラーレポートを出力するため、エラーレポートに基づいてプログラムを自己復旧させることができる。
以上、本発明の第1及び第2の実施形態について説明したが、本発明は、上述した本発明の第1及び第2の実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
例えば、第1の実施形態では、1つのプログラムが動作する場合を例にとって説明したが、これはこの例に限られない。例えば、複数のプログラムが動作する場合についても、動作する複数のプログラムの各々について比較待機時間を設定すると共に、複数のプログラムについての実行予定値テーブルを準備することで適用可能である。
また、第1の実施形態では、プログラムの開始予定及び終了予定のタイミングでプログラムの実行状態を判断するように比較待機時間を設定したが、これに限られず、例えば、プログラム異常検出装置が搭載されたシステム毎に最適なタイミングでプログラムの実行状態を判断できるように、比較待機時間を任意に設定してもよい。これにより、プログラムの動作異常をより早く検出することができるので、異常発生から復旧までに要する時間を短縮することができる。
さらに、第2の実施形態では、比較トリガとして第1プログラム1Aの動作状態レポートを用いたが、これに限られず、さらに、第2プログラム1Bの動作状態レポートをも比較トリガとし、比較処理の回数を増加させてもよい。こうすることにより、プログラムの動作異常より確実に検出することができる。ただし、比較処理の回数を増加させることにより、異常検出処理による負荷が増大するため、システムの状態を考慮して比較トリガとする動作状態レポートを決定すると好ましい。
さらにまた、第1及び第2の実施形態では、実行予定値テーブルに記述される値として、各プログラム1に対して1ビットを割り当てるように説明したが、これに限られず、例えば2ビット以上のビットを割り当ててもよい。このように、各プログラム1に対して割り当てるビット数を増やし、多くの情報を持たせることにより、異常検出処理の精度を向上させることができる。
さらにまた、第1及び第2の実施形態を組み合わせ、予め設定された比較待機時間と、プログラムのシーケンス動作に基づく動作状態レポートとの両方を比較トリガとして用いてもよい。
1 プログラム
1A 第1プログラム
1B 第2プログラム
2 実行値格納部
3 設計値格納部
4、14 比較部
5 トリガ発生部
10、20 プログラム異常検出装置

Claims (6)

  1. 所定の周期で動作する1つ又は複数のプログラムの異常を検出するプログラム異常検出装置であって、
    1つ又は複数のプログラムの動作状態が変化した際に生成される、該プログラムの動作状態を示す動作状態情報を格納する実行値格納部と、
    所定のタイミングにおける前記プログラムの動作予定を示す予定動作状態情報を格納する設計値格納部と、
    前記所定のタイミングで、前記動作状態情報及び前記予定動作状態情報を比較する比較部とを備え、
    前記比較部は、前記比較の結果、前記動作状態情報及び前記予定動作状態情報が一致しない場合に、前記プログラムの動作が異常であると判断し、
    前記所定のタイミングは、前記プログラムの動作開始予定直後である第1のタイミングと、前記プログラムの動作終了予定直後である第2のタイミングとであることを特徴とするプログラム異常検出装置。
  2. 前記所定のタイミングを示す比較トリガを生成するトリガ発生部をさらに備え、
    前記比較部は、前記比較トリガに基づき前記所定のタイミングで前記比較を行うことを特徴とする請求項1に記載のプログラム異常検出装置。
  3. 前記実行値格納部は、前記プログラムの動作開始の際に、前記プログラムの動作開始を示すプログラム開始情報を前記動作状態情報として格納し、前記プログラムの動作終了の際に、前記プログラムの動作終了を示すプログラム終了情報を前記動作状態情報として格納し、
    前記設計値格納部は、前記第1及び第2のタイミングにおける前記プログラムの動作予定を示す第1及び第2の予定動作状態情報を前記予定動作状態情報として格納し、
    前記比較部は、前記第1のタイミングで前記動作状態情報及び前記第1の予定動作状態情報を比較し、前記第2のタイミングで前記動作状態情報及び前記第2の予定動作状態情報を比較することを特徴とする請求項に記載のプログラム異常検出装置。
  4. 前記所定のタイミングは、複数のプログラムが互いに関連して動作する場合に、前記第1及び第2のタイミングに代えて、前記複数のプログラムのうち所定のプログラムの動作が開始される第3のタイミングと、前記所定のプログラムの動作が終了する第4のタイミングとであることを特徴とする請求項1に記載のプログラム異常検出装置。
  5. 前記実行値格納部は、前記プログラムの動作開始の際に、前記プログラムの動作開始を示すプログラム開始情報を前記動作状態情報として格納し、前記プログラムの動作終了の際に、前記プログラムの動作終了を示すプログラム終了情報を前記動作状態情報として格納し、
    前記設計値格納部は、前記第3及び第4のタイミングにおける前記複数のプログラムの動作予定を示す第3及び第4の予定動作状態情報を前記予定動作状態情報として格納し、
    前記比較部は、
    前記第3のタイミングで、前記所定のプログラムからの前記プログラム開始情報を受け取り、該プログラム開始情報に基づき前記動作状態情報及び前記第3の予定動作状態情報を比較し、
    前記第4のタイミングで、前記所定のプログラムからの前記プログラム終了情報を受け取り、該プログラム終了情報に基づき前記動作状態情報及び前記第4の予定動作状態情報を比較することを特徴とする請求項に記載のプログラム異常検出装置。
  6. 所定の周期で動作する1つ又は複数のプログラムの異常を検出するプログラム異常検出方法であって、
    1つ又は複数のプログラムの動作状態が変化した際に生成される、該プログラムの動作状態を示す動作状態情報と、前記プログラムの動作開始予定直後である第1のタイミング、及び前記プログラムの動作終了予定直後である第2のタイミングにおける前記プログラムの動作予定を示す予定動作状態情報とを前記第1及び第2のタイミングで比較し、
    前記動作状態情報及び前記予定動作状態情報が一致しない場合に、前記プログラムの動作が異常であると判断することを特徴とするプログラム異常検出方法。
JP2011147000A 2011-07-01 2011-07-01 プログラム異常検出装置及びプログラム異常検出方法 Expired - Fee Related JP5534466B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011147000A JP5534466B2 (ja) 2011-07-01 2011-07-01 プログラム異常検出装置及びプログラム異常検出方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011147000A JP5534466B2 (ja) 2011-07-01 2011-07-01 プログラム異常検出装置及びプログラム異常検出方法

Publications (2)

Publication Number Publication Date
JP2013015940A JP2013015940A (ja) 2013-01-24
JP5534466B2 true JP5534466B2 (ja) 2014-07-02

Family

ID=47688593

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011147000A Expired - Fee Related JP5534466B2 (ja) 2011-07-01 2011-07-01 プログラム異常検出装置及びプログラム異常検出方法

Country Status (1)

Country Link
JP (1) JP5534466B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2595733B2 (ja) * 1989-11-30 1997-04-02 富士通株式会社 タスク異常検出方式
JPH0512205A (ja) * 1991-07-08 1993-01-22 Nec Corp コンピユータシステム
JPH0635756A (ja) * 1992-07-21 1994-02-10 Nec Corp プログラムの動作状態監視方式
JPH09212389A (ja) * 1996-01-31 1997-08-15 Sumitomo Electric Ind Ltd コンピュータシステムの異常状態検出方法および装置

Also Published As

Publication number Publication date
JP2013015940A (ja) 2013-01-24

Similar Documents

Publication Publication Date Title
CN100578462C (zh) 降低时钟同步双模冗余系统中错误率的装置、方法和系统
KR101358776B1 (ko) 장비의 리부트 이유를 기록하는 장치 및 방법
US8250543B2 (en) Software tracing
CN110286281B (zh) 一种智能设备老化测试的方法与设备
US11263081B2 (en) Checkpointing
US7589558B1 (en) Method and apparatus for configuring an integrated circuit
CN103415840A (zh) 跨硬件层和软件层的错误管理
JP2017517060A (ja) 障害処理方法、関連装置、およびコンピュータ
US20140068350A1 (en) Self-checking system and method using same
WO2014200551A1 (en) Identifying the introduction of a software failure
US20160179577A1 (en) Method of Managing the Operation of an Electronic System with a Guaranteed Lifetime
KR20100010390A (ko) 마이크로컴퓨터와 마이크로컴퓨터의 제어방법
US20140156975A1 (en) Redundant Threading for Improved Reliability
JP2009129301A (ja) 自己診断回路及び自己診断方法
US20080209254A1 (en) Method and system for error recovery of a hardware device
CN103890713A (zh) 用于管理处理系统内的寄存器信息的装置及方法
CN113917385A (zh) 一种面向电能表的自检测方法及系统
JP5534466B2 (ja) プログラム異常検出装置及びプログラム異常検出方法
US11520653B2 (en) System and method for controlling faults in system-on-chip
US8024168B2 (en) Detecting X state transitions and storing compressed debug information
CN103514071A (zh) 非破坏性的内存在线测试方法
US20140372837A1 (en) Semiconductor integrated circuit and method of processing in semiconductor integrated circuit
Beningo A review of watchdog architectures and their application to Cubesats
JP6318976B2 (ja) デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法
JP5838103B2 (ja) 電子装置、ソフトエラー耐性評価システム及び評価方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131022

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131119

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140116

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140417

R150 Certificate of patent or registration of utility model

Ref document number: 5534466

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees