JP2012141794A - 暴走検出装置 - Google Patents
暴走検出装置 Download PDFInfo
- Publication number
- JP2012141794A JP2012141794A JP2010294162A JP2010294162A JP2012141794A JP 2012141794 A JP2012141794 A JP 2012141794A JP 2010294162 A JP2010294162 A JP 2010294162A JP 2010294162 A JP2010294162 A JP 2010294162A JP 2012141794 A JP2012141794 A JP 2012141794A
- Authority
- JP
- Japan
- Prior art keywords
- function
- runaway
- determination value
- processing
- detection device
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】プログラムの暴走を精度良く検出可能な暴走検出装置を提供する。
【解決手段】複数の関数から構成されたプログラムの暴走を検出する暴走検出装置であって、前記プログラムの各関数に従って所定の処理を実行する処理部と、前記処理部による制御に応じて暴走判定値を記憶する記憶部と、を備え、前記処理部は、各関数の処理実行前に、前記記憶部に記憶されている暴走判定値に基づいて、本関数が正規の順序で呼出された関数か否かを判定し、否の場合に前記プログラムが暴走していると判断する。
【選択図】図1
【解決手段】複数の関数から構成されたプログラムの暴走を検出する暴走検出装置であって、前記プログラムの各関数に従って所定の処理を実行する処理部と、前記処理部による制御に応じて暴走判定値を記憶する記憶部と、を備え、前記処理部は、各関数の処理実行前に、前記記憶部に記憶されている暴走判定値に基づいて、本関数が正規の順序で呼出された関数か否かを判定し、否の場合に前記プログラムが暴走していると判断する。
【選択図】図1
Description
本発明は、暴走検出装置に関する。
従来では、WDT(Watch Dog Timer)や下記特許文献1に記載された技術のように、タイマのカウントとプログラムによるタイマのクリア処理を利用してプログラムの暴走を検出する技術が知られている。
上記従来技術では、プログラムが暴走した状態で、不正にクリア処理用の関数が実行されてしまった場合にはタイマがクリアされてしまうため、精度良くプログラムの暴走を検出することができなかった。
本発明は、上述した事情に鑑みてなされたものであり、プログラムの暴走を精度良く検出可能な暴走検出装置を提供することを目的とする。
上記課題を解決するために、本発明に係る暴走検出装置は、複数の関数から構成されたプログラムの暴走を検出する暴走検出装置であって、前記プログラムの各関数に従って所定の処理を実行する処理部と、前記処理部による制御に応じて暴走判定値を記憶する記憶部と、を備え、前記処理部は、各関数の処理実行前に、前記記憶部に記憶されている暴走判定値に基づいて、本関数が正規の順序で呼出された関数か否かを判定し、否の場合に前記プログラムが暴走していると判断することを特徴とする。
また、上記の暴走検出装置において、前記処理部は、前記本関数が正規の順序で呼出された関数であると判定した場合、前記本関数の処理実行前と処理実行後において、前記記憶部に記憶されている暴走判定値と前記本関数の固有値との排他的論理和を演算し、その演算結果を新たな暴走判定値として前記記憶部に記憶させることを特徴とする。
また、上記の暴走検出装置において、前記処理部は、前記本関数の処理実行中に、他の関数の呼出しが必要となった場合、前記他の関数の呼出し前と呼出し元である前記本関数への復帰後において、前記記憶部に記憶されている暴走判定値と前記本関数の固有値との排他的論理和を演算し、その演算結果を新たな暴走判定値として前記記憶部に記憶させることを特徴とする。
また、上記の暴走検出装置において、前記固有値は、各関数の先頭アドレスであることを特徴とする。
また、上記の暴走検出装置において、前記複数の関数に割込み処理用の割込み関数が含まれている場合、前記割込み関数のそれぞれに対応して個別に前記記憶部を備えることを特徴とする。
また、上記の暴走検出装置において、前記複数の関数に割込み処理用の割込み関数が含まれている場合、前記割込み関数のそれぞれに対応して個別に前記記憶部を備えることを特徴とする。
本発明によれば、プログラムが暴走して、正規の順序から外れた関数処理が不正に実行されてしまった場合、次に呼出される関数の処理実行前において、本関数が正規の順序で呼出された関数ではないと判定されるため、例えばWDTのクリア処理用の関数が不正に実行されてしまうような場合であっても、精度良くプログラムの暴走を検出することが可能となる。
以下、図面を参照しながら、本発明の一実施形態について説明する。
図1は、本実施形態における暴走検出装置1のブロック構成図である。この図1に示すように、本実施形態における暴走検出装置1は、ROM(Read Only Memory)1aと、暴走検出レジスタ(記憶部)1bと、CPU(Central Processing Unit:処理部)1cとを備えている。なお、図1中において、符号2はCPU1cが制御する制御ポートであり、符号3は制御ポート2によって点灯制御されるヒータランプである。
図1は、本実施形態における暴走検出装置1のブロック構成図である。この図1に示すように、本実施形態における暴走検出装置1は、ROM(Read Only Memory)1aと、暴走検出レジスタ(記憶部)1bと、CPU(Central Processing Unit:処理部)1cとを備えている。なお、図1中において、符号2はCPU1cが制御する制御ポートであり、符号3は制御ポート2によって点灯制御されるヒータランプである。
ROM1aは、複数の関数から構成されたプログラムを予め記憶している不揮発性メモリである。暴走検出レジスタ1bは、CPU1cによる制御に応じて暴走判定値(初期値は「0」)を記憶するレジスタである。CPU1cは、ROM1aに記憶されているプログラムの各関数に従って所定の処理を実行するものであり、例えば制御ポート2を介してヒータランプ3の点灯制御を行う。
また、CPU1cは、各関数の処理実行前に、暴走検出レジスタ1bに記憶されている暴走判定値に基づいて、本関数(実行すべき関数として現在ROM1aから読込まれている関数)が正規の順序で呼出された関数か否かを判定し、否の場合にプログラムが暴走していると判断する機能を有している。
以下では、図2のフローチャートを参照しながら、CPU1cによるプログラムの暴走判断動作について詳細に説明する。
以下では、図2のフローチャートを参照しながら、CPU1cによるプログラムの暴走判断動作について詳細に説明する。
図2に示すように、CPU1cは、まずメイン関数を含む各関数の処理実行前に、暴走検出レジスタ1bに記憶されている暴走判定値が「0」か否かを判定する(ステップS1)。なお、詳細は後述するが、本関数が正規の順序で呼出された関数であれば、暴走判定値は「0」になり、一方、本関数が正規の順序で呼出された関数でなければ、暴走判定値は「0」以外の値となる。
CPU1cは、上記ステップS1において「No」の場合、つまり暴走判定値が「0」以外の値であって、本関数が正規の順序で呼出された関数ではないと判定した場合、プログラムが暴走していると判断して、再起動(リセット)や制御ポート2によりヒータランプ3をオフ制御する等の暴走時処理を行う(ステップS2)。
一方、CPU1cは、上記ステップS1において「Yes」の場合、つまり暴走判定値が「0」であって、本関数が正規の順序で呼出された関数であると判定した場合、本関数の処理実行前において、暴走検出レジスタ1bに記憶されている暴走判定値と本関数の先頭アドレス(固有値)とのEXOR(排他的論理和)を演算し、その演算結果を新たな暴走判定値として暴走検出レジスタ1bに記憶させる(ステップS3)。
そして、CPU1cは、本関数の本来の処理を実行し(ステップS4)、その処理実行後において、再度、暴走検出レジスタ1bに記憶されている暴走判定値と本関数の先頭アドレスとのEXORを演算し、その演算結果を新たな暴走判定値として暴走検出レジスタ1bに記憶させ(ステップS5)、その後、本関数から呼出し元の関数へ復帰する(ステップS6)。
また、CPU1cは、上記ステップS4において、本関数の処理実行中に、他の関数の呼出しが必要となった場合、他の関数の呼出し前に、暴走検出レジスタ1bに記憶されている暴走判定値と本関数の先頭アドレスとのEXORを演算し、その演算結果を新たな暴走判定値として暴走検出レジスタ1bに記憶させ(ステップS4−1)、その後、他の関数の呼出しを行う(ステップS4−2)。CPU1cは、他の関数を呼出すと、その呼出した関数について、同様にステップS1〜S6の処理を行う。
そして、CPU1cは、他の関数から呼出し元である本関数への復帰後において、暴走検出レジスタ1bに記憶されている暴走判定値と呼出し元である本関数の先頭アドレスとのEXORを演算し、その演算結果を新たな暴走判定値として暴走検出レジスタ1bに記憶させる(ステップS4−3)。
以上のような処理が各関数の処理実行時に行われることにより、プログラムが暴走しておらず、本関数(実行すべき関数として現在ROM1aから読込まれている関数)が正規の順序で呼出された関数であれば、ステップS1において暴走判定値は「0」になっているため、CPU1cは正常にヒータランプ3の点灯制御を継続できる。
一方、プログラムが暴走して、正規の順序から外れた関数処理が不正に実行されてしまった場合、次に呼出される関数の処理実行前(つまりステップS1)において暴走判定値は「0」以外の値になり、本関数が正規の順序で呼出された関数ではないと判定されるため、例えばWDTのクリア処理用の関数が不正に実行されてしまうような場合であっても、精度良くプログラムの暴走を検出することが可能となる。
従って、本実施形態によれば、例えばヒータランプ3を点灯した状態でプログラムが暴走し、WDTのクリア処理用の関数が不正に実行されて、WDTによる暴走検出が不可能な状況であっても、ヒータランプ3の組み込み機器(例えばプリンタやコピー機、複合機などの画像形成装置)に深刻なダメージを与える前に暴走を検出することができ、その暴走検出結果に基づいてCPU1cのリセットや制御ポート2によりヒータランプ3をオフ制御する等の暴走時処理を行うことができる。
なお、本発明は上記実施形態に限定されず、以下のような変形例が挙げられる。
(1)CPU1cが実行すべきプログラムに割込み処理用の割込み関数が含まれている場合には、割込み関数のそれぞれに対応して個別に暴走検出レジスタ1bを設け、各割込み関数毎に暴走判定値のEXOR演算を行うようにしても良い。
(1)CPU1cが実行すべきプログラムに割込み処理用の割込み関数が含まれている場合には、割込み関数のそれぞれに対応して個別に暴走検出レジスタ1bを設け、各割込み関数毎に暴走判定値のEXOR演算を行うようにしても良い。
(2)上記実施形態では、ヒータランプ3を制御するために用いられるプログラム(言い換えれば、ヒータランプ3を制御するCPU1c)の暴走を検出する暴走検出装置1を例示して説明したが、本発明はこれに限定されず、様々なシステムで用いられるプログラムの暴走(つまりCPUの暴走)を検出する場合に広く適用することができる。
(3)上記実施形態では、暴走判定値とのEXORを演算するために用いる本関数の固有値として、本関数の先頭アドレスを用いる場合を例示したが、この固有値は本関数と他の関数とを識別可能な値であれば他を使用しても良い。
(4)上記実施形態では、各関数の処理実行過程において、所定のタイミングで暴走判定値と本関数の先頭アドレス(固有値)とのEXORを演算することにより、本関数の処理実行前に、本関数が正規の順序で呼出された関数か否かを判定するのに使用可能な暴走判定値を得る場合を例示したが、暴走判定値の演算手法はこれに限定されるものではなく、本関数が正規の順序で呼出された関数か否かを判定することができるような暴走判定値が得られれば、どのような演算手法を用いても良い。
1…暴走検出装置、1a…ROM(Read Only Memory)、1b…暴走検出レジスタ(記憶部)、1c…CPU(Central Processing Unit:処理部)、2…制御ポート、3…ヒータランプ
Claims (5)
- 複数の関数から構成されたプログラムの暴走を検出する暴走検出装置であって、
前記プログラムの各関数に従って所定の処理を実行する処理部と、
前記処理部による制御に応じて暴走判定値を記憶する記憶部と、を備え、
前記処理部は、各関数の処理実行前に、前記記憶部に記憶されている暴走判定値に基づいて、本関数が正規の順序で呼出された関数か否かを判定し、否の場合に前記プログラムが暴走していると判断することを特徴とする暴走検出装置。 - 前記処理部は、前記本関数が正規の順序で呼出された関数であると判定した場合、前記本関数の処理実行前と処理実行後において、前記記憶部に記憶されている暴走判定値と前記本関数の固有値との排他的論理和を演算し、その演算結果を新たな暴走判定値として前記記憶部に記憶させることを特徴とする請求項1に記載の暴走検出装置。
- 前記処理部は、前記本関数の処理実行中に、他の関数の呼出しが必要となった場合、前記他の関数の呼出し前と呼出し元である前記本関数への復帰後において、前記記憶部に記憶されている暴走判定値と前記本関数の固有値との排他的論理和を演算し、その演算結果を新たな暴走判定値として前記記憶部に記憶させることを特徴とする請求項2に記載の暴走検出装置。
- 前記固有値は、各関数の先頭アドレスであることを特徴とする請求項2または3に記載の暴走検出装置。
- 前記複数の関数に割込み処理用の割込み関数が含まれている場合、前記割込み関数のそれぞれに対応して個別に前記記憶部を備えることを特徴とする請求項1〜4のいずれか一項に記載の暴走検出装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010294162A JP2012141794A (ja) | 2010-12-28 | 2010-12-28 | 暴走検出装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010294162A JP2012141794A (ja) | 2010-12-28 | 2010-12-28 | 暴走検出装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012141794A true JP2012141794A (ja) | 2012-07-26 |
Family
ID=46678032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010294162A Pending JP2012141794A (ja) | 2010-12-28 | 2010-12-28 | 暴走検出装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012141794A (ja) |
-
2010
- 2010-12-28 JP JP2010294162A patent/JP2012141794A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4060322B2 (ja) | アプリケーション管理装置およびそのソフトウェアを格納した記憶媒体 | |
JP4770602B2 (ja) | 電子機器 | |
JP2012203519A (ja) | 制御装置およびプログラム | |
JP2019159729A (ja) | 故障予測システム | |
JP5653332B2 (ja) | 周期エラー検出方法および周期エラー検出回路 | |
JP4213181B2 (ja) | 分岐予測装置、その方法、及びプロセサ | |
JP2012141794A (ja) | 暴走検出装置 | |
JP2007249663A (ja) | トランザクション装置、遅延障害検出装置及び方法、並びにプログラム | |
JP2008225807A (ja) | 制御装置およびそのプログラム暴走監視方法 | |
JP5676664B2 (ja) | リソース管理装置、リソースの管理方法、及びプログラム | |
JP2008204013A (ja) | スレッド動作異常検知方法、マルチスレッドシステム | |
JP2008305238A (ja) | 計測装置 | |
JP2009140130A (ja) | データ処理装置及びデータ処理装置の制御方法 | |
JP2005293164A (ja) | タスク監視方式 | |
US9553975B2 (en) | Portable terminal and method for controlling portable terminal | |
JP2005107757A (ja) | プログラムの暴走検出方法およびプログラムの暴走検出装置 | |
JP6555761B2 (ja) | 情報処理装置、プログラム更新方法およびプログラム更新用プログラム | |
JP5906807B2 (ja) | 演算処理装置及びストール監視方法 | |
JP4357489B2 (ja) | ポーリング処理装置 | |
JP2007323256A (ja) | 割込制御方法および情報処理装置 | |
JP2008197599A (ja) | 画像形成装置 | |
JP2015121953A (ja) | マイクロコンピュータ及び電子制御装置 | |
JP2868501B1 (ja) | 処理停止回避方法 | |
JP6477216B2 (ja) | 演算装置、スレッド切替方法、及びマルチスレッドプログラム | |
JP2007114945A (ja) | リアルタイム処理装置 |