JP2006252388A - ソフトウェア異常検出方法 - Google Patents
ソフトウェア異常検出方法 Download PDFInfo
- Publication number
- JP2006252388A JP2006252388A JP2005070634A JP2005070634A JP2006252388A JP 2006252388 A JP2006252388 A JP 2006252388A JP 2005070634 A JP2005070634 A JP 2005070634A JP 2005070634 A JP2005070634 A JP 2005070634A JP 2006252388 A JP2006252388 A JP 2006252388A
- Authority
- JP
- Japan
- Prior art keywords
- wdt
- time
- software
- control
- reset
- 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
【課題】
解決しようとする課題は、短時間でWDTタイムアウトするWDT搭載のCPUで所望のWDT機能を実現させることで、つまり優先度の高い割り込みレベルにてWDTリセット制御を定期的に行っているためにタスクレベルで発生しているソフトウェアの異常検出が行えないという課題を解決することである。
【解決手段】
プログラムの暴走または異常動作を検出するためウォッチ・ドッグ・タイマを備えた制御装置のソフトウェア異常検出方法であって、ウォッチ・ドッグ・タイマのタイムアウト回数を検出し、タイムアウト回数が予め定められた回数に達した場合に、プログラムの暴走または異常動作と判断することで実現した。
【選択図】図1
解決しようとする課題は、短時間でWDTタイムアウトするWDT搭載のCPUで所望のWDT機能を実現させることで、つまり優先度の高い割り込みレベルにてWDTリセット制御を定期的に行っているためにタスクレベルで発生しているソフトウェアの異常検出が行えないという課題を解決することである。
【解決手段】
プログラムの暴走または異常動作を検出するためウォッチ・ドッグ・タイマを備えた制御装置のソフトウェア異常検出方法であって、ウォッチ・ドッグ・タイマのタイムアウト回数を検出し、タイムアウト回数が予め定められた回数に達した場合に、プログラムの暴走または異常動作と判断することで実現した。
【選択図】図1
Description
本発明は、短時間でタイムアウトしてしまうウォッチ・ドッグ・タイマ(以下、WDT)を搭載した制御装置(Central Proccessing Unit:以下、CPU)でのソフトウエア異常時の監視・検出方法に関する。
WDTは、本来プログラムの暴走や異常動作を検出するための機能である。ソフトウェアは実行処理中、定期的にWDTリセット処理をおこなうことでCPUや外部に装備されたWDT−ICにソフトウェアが正常に動作している通知制御をおこなう。ここでハードウェア・ブロック図を図2に示す。ここで問題となるのは、WDTタイムアウトの時間が短いWDTの機能の場合、WDTリセット制御箇所によってはWDT本来の適切な検出ができない。例えば、WDTリセット処理を割り込み処理部へ埋め込んだ場合の問題点を示す。
WDTタイムアウト時間が数十ミリ秒、数百ミリ秒と短時間の場合、定期的に入る割り込み処理(例えばタイマ割り込み等)にWDTリセット処理を埋め込む。そうすることにより、マルチタスクのタスクレベルあるいは、ラウンドロビン方式の何処かで無限ループ等に陥った場合でもタスクレベルよりも優先度の高い割り込みレベルにて定期的にWDTリセット制御を行ってしまう。当然ではあるが、これではWDTタイムアウトを正常に検出できない。つまり優先度の高い割り込みレベルにてWDTリセット制御を定期的に行っているためにタスクレベルで発生しているソフトウェアの異常検出が行えないという課題があった。
WDTタイムアウト時間が数十ミリ秒、数百ミリ秒と短時間の場合、定期的に入る割り込み処理(例えばタイマ割り込み等)にWDTリセット処理を埋め込む。そうすることにより、マルチタスクのタスクレベルあるいは、ラウンドロビン方式の何処かで無限ループ等に陥った場合でもタスクレベルよりも優先度の高い割り込みレベルにて定期的にWDTリセット制御を行ってしまう。当然ではあるが、これではWDTタイムアウトを正常に検出できない。つまり優先度の高い割り込みレベルにてWDTリセット制御を定期的に行っているためにタスクレベルで発生しているソフトウェアの異常検出が行えないという課題があった。
解決しようとする課題は、短時間でWDTタイムアウトするWDT搭載のCPUで所望のWDT機能を実現させることで、つまり優先度の高い割り込みレベルにてWDTリセット制御を定期的に行っているためにタスクレベルで発生しているソフトウェアの異常検出が行えないという課題を解決することである。
本発明は、上記課題を鑑みて為されたものであり、プログラムの暴走または異常動作を検出するためウォッチ・ドッグ・タイマを備えた制御装置のソフトウェア異常検出方法であって、ウォッチ・ドッグ・タイマのタイムアウト回数を検出し、タイムアウト回数が予め定められた回数に達した場合に、プログラムの暴走または異常動作と判断することを特徴とする。
本発明のソフトウェア異常検出方法は、短時間でタイムアウトしてしまうハードウェア構成(WDT)でもソフトウェアの異常を監視及び検出が可能となり、また、WDTタイムアウト時間が短時間であることを理由に、外部に別途WDTリセット時間の長いWDT−ICを付加する必要性が無いため装置としての構成の追加が不要となる点である。
ウォッチ・ドッグ・タイマのタイムアウト回数を検出し、タイムアウト回数が予め定められた回数に達した場合に、プログラムの暴走または異常動作と判断することで実現した。
以下に本発明の実施の形態について図を用いて一実施例を説明する。
図1は、本発明の実施の形態におけるWDT制御のフロー図である。WDTは、あらかじめ設定した時間毎に発生する割込処理としてソフト制御をおこなう(S1)。通常、WDTは一度スタートを行うとソフトウェアでは停止が不可能である。従って設定している周期毎にWDTタ イムアウトでの割り込みハンドラのエントリポイントへジャンプしてくる。割り込みハンドラではWDTタ イムアウトの回数を記憶するカウンタAを+1する加算制御を行う(S2)。ハードウェアの接続構成は図示しないが、WDTタイムアウトがN回(固定値A)発生したら(S3、S4)、ハードリセット端子を制御し自己リセット(S6)を行えるようなマニュアルリセット制御といった仕組みとする。
例えば、WDTタイムアウト(割り込み間隔)の時間が100msecの場合、ラウンドロビン方式では、割り込み等の外部イベントが発生後にユーザタスクが一回りする時間を算出し、その時間をWDTタイムアウト時間と設定し、ユーザタスクの何れかのメイン処理部でWDTリセット処理をおこなうこととするユーザタスク一回りが1secとした場合は、WDTの割り込みが10回以上(100msec×10回=1sec)発生した場合(この回数値を固定値Aとする)にWDTリセット制御としてハードリセット端子を制御し自己リセットをおこなう。また、イベントドリブン・マルチタスク方式では、最低位優先順位のタスクをエントリして、その他のユーザタスクの処理時間を合算した時間をWDTタイムアウト時間と設定し、最低位のタスクにてWDTリセット処理をおこなうこととする。ユーザタスク処理の合算が1secとした場合は、WDTの割り込みが10回以上(100msec×10回=1sec)発生した場合(この回数値を固定値Aとする)にWDTリセット制御としてハードリセット端子を制御し自己リセットをおこなう。
上記により、WDTリセット処理を1ヶ所に集約できる。この1ヵ所でカウンタAをクリアすることで、ラウンドロビン方式では同一優先度のタスクが一回り、イベントドリブン・マルチタスク方式では何らかのイベント発生後の処理後に最低位のタスクへ戻ることで、ソフトウェアが正常に動作していることを監視できる。
図1は、本発明の実施の形態におけるWDT制御のフロー図である。WDTは、あらかじめ設定した時間毎に発生する割込処理としてソフト制御をおこなう(S1)。通常、WDTは一度スタートを行うとソフトウェアでは停止が不可能である。従って設定している周期毎にWDTタ イムアウトでの割り込みハンドラのエントリポイントへジャンプしてくる。割り込みハンドラではWDTタ イムアウトの回数を記憶するカウンタAを+1する加算制御を行う(S2)。ハードウェアの接続構成は図示しないが、WDTタイムアウトがN回(固定値A)発生したら(S3、S4)、ハードリセット端子を制御し自己リセット(S6)を行えるようなマニュアルリセット制御といった仕組みとする。
例えば、WDTタイムアウト(割り込み間隔)の時間が100msecの場合、ラウンドロビン方式では、割り込み等の外部イベントが発生後にユーザタスクが一回りする時間を算出し、その時間をWDTタイムアウト時間と設定し、ユーザタスクの何れかのメイン処理部でWDTリセット処理をおこなうこととするユーザタスク一回りが1secとした場合は、WDTの割り込みが10回以上(100msec×10回=1sec)発生した場合(この回数値を固定値Aとする)にWDTリセット制御としてハードリセット端子を制御し自己リセットをおこなう。また、イベントドリブン・マルチタスク方式では、最低位優先順位のタスクをエントリして、その他のユーザタスクの処理時間を合算した時間をWDTタイムアウト時間と設定し、最低位のタスクにてWDTリセット処理をおこなうこととする。ユーザタスク処理の合算が1secとした場合は、WDTの割り込みが10回以上(100msec×10回=1sec)発生した場合(この回数値を固定値Aとする)にWDTリセット制御としてハードリセット端子を制御し自己リセットをおこなう。
上記により、WDTリセット処理を1ヶ所に集約できる。この1ヵ所でカウンタAをクリアすることで、ラウンドロビン方式では同一優先度のタスクが一回り、イベントドリブン・マルチタスク方式では何らかのイベント発生後の処理後に最低位のタスクへ戻ることで、ソフトウェアが正常に動作していることを監視できる。
WDT割り込みは通常の割込処理のイメージで、割り込み処理内ではWDTタイムアウト時間として設定した固定値A、またWDTタイムアウト割り込みが発生した回数をカウンタAとして持ち、WDTタイムアウト割り込みが入るたびにカウンタAの回数を+1加算し、固定値AとカウンタAを比較する。
カウンタAは、ラウンドロビン方式、イベントドリブン・マルチタスク方式のそれぞれで記載したWDTリセット時にゼロにクリアする。カウンタAが 固定値Aより大きい場合は、プログラムが異常状態に陥った可能性があるため、ハードリセット端子を制御し、ハードウェアリセット制御をおこなう。カウンタAより 固定値Aが大きい場合は、WDTタイムアウトに設定した時間(回数)に未達のためWDT割り込み前処理へのリターン(S5)を行う。上記に記載した構成および制御方法にて、短時間でタイムアウトしてしまうハードウェア構成であってもソフトウェアの異常検出が可能となる。
カウンタAは、ラウンドロビン方式、イベントドリブン・マルチタスク方式のそれぞれで記載したWDTリセット時にゼロにクリアする。カウンタAが 固定値Aより大きい場合は、プログラムが異常状態に陥った可能性があるため、ハードリセット端子を制御し、ハードウェアリセット制御をおこなう。カウンタAより 固定値Aが大きい場合は、WDTタイムアウトに設定した時間(回数)に未達のためWDT割り込み前処理へのリターン(S5)を行う。上記に記載した構成および制御方法にて、短時間でタイムアウトしてしまうハードウェア構成であってもソフトウェアの異常検出が可能となる。
101…CPU、102…ROM及びRAM、103…リセット端子
Claims (1)
- プログラムの暴走または異常動作を検出するためウォッチ・ドッグ・タイマを備えた制御装置のソフトウェア異常検出方法であって、前記ウォッチ・ドッグ・タイマのタイムアウト回数を検出し、当該タイムアウト回数が予め定められた回数に達した場合に、プログラムの暴走または異常動作と判断することを特徴とする制御装置のソフトウェア異常検出方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005070634A JP2006252388A (ja) | 2005-03-14 | 2005-03-14 | ソフトウェア異常検出方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005070634A JP2006252388A (ja) | 2005-03-14 | 2005-03-14 | ソフトウェア異常検出方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006252388A true JP2006252388A (ja) | 2006-09-21 |
Family
ID=37092796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005070634A Pending JP2006252388A (ja) | 2005-03-14 | 2005-03-14 | ソフトウェア異常検出方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006252388A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7975188B2 (en) | 2007-03-13 | 2011-07-05 | Nec Corporation | Restoration device for BIOS stall failures and method and computer program product for the same |
JP2012190186A (ja) * | 2011-03-09 | 2012-10-04 | Nec System Technologies Ltd | 自動リセット回路、自動リセット方法、プログラム、自動リセット装置および情報端末 |
JP2012208923A (ja) * | 2011-03-29 | 2012-10-25 | Denso Corp | アプリケーション実行方法及び実行装置 |
WO2012147168A1 (ja) * | 2011-04-26 | 2012-11-01 | 富士通株式会社 | システム、および検出方法 |
CN109739675A (zh) * | 2018-12-24 | 2019-05-10 | 深圳航天东方红海特卫星有限公司 | 一种利用硬件看门狗捕捉程序异常的方法 |
-
2005
- 2005-03-14 JP JP2005070634A patent/JP2006252388A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7975188B2 (en) | 2007-03-13 | 2011-07-05 | Nec Corporation | Restoration device for BIOS stall failures and method and computer program product for the same |
JP2012190186A (ja) * | 2011-03-09 | 2012-10-04 | Nec System Technologies Ltd | 自動リセット回路、自動リセット方法、プログラム、自動リセット装置および情報端末 |
JP2012208923A (ja) * | 2011-03-29 | 2012-10-25 | Denso Corp | アプリケーション実行方法及び実行装置 |
WO2012147168A1 (ja) * | 2011-04-26 | 2012-11-01 | 富士通株式会社 | システム、および検出方法 |
CN103493023A (zh) * | 2011-04-26 | 2014-01-01 | 富士通株式会社 | 系统以及检测方法 |
CN109739675A (zh) * | 2018-12-24 | 2019-05-10 | 深圳航天东方红海特卫星有限公司 | 一种利用硬件看门狗捕捉程序异常的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105550057B (zh) | 嵌入式软件系统故障检测恢复方法和系统 | |
JP2006252388A (ja) | ソフトウェア異常検出方法 | |
US7444450B2 (en) | Method and system for detecting excessive interrupt processing for a processor | |
JPH10214208A (ja) | ソフトウェアの異常監視方式 | |
JP4757237B2 (ja) | 時間監視装置、方法、およびプログラム | |
JP5438667B2 (ja) | マイクロプロセッサの間欠異常検出方法 | |
JP2008225807A (ja) | 制御装置およびそのプログラム暴走監視方法 | |
JP2006227962A (ja) | アプリケーションタスク監視システムおよび方法 | |
JP3859564B2 (ja) | イベント通知タスク制御処理方式及び方法並びにプログラム | |
JPS63163932A (ja) | 制御用計算機のシステム監視方式 | |
CN103678095A (zh) | 一种告警检测方法 | |
JPS5920061A (ja) | ウオツチ・ドツグ・タイマ | |
JPH04280329A (ja) | プログラム異常検出方式 | |
JP4313858B2 (ja) | 計算機 | |
JP2009053752A (ja) | ウォッチドッグ処理方法および異常検出回路 | |
JP2005293164A (ja) | タスク監視方式 | |
CN111813073B (zh) | 节点预警方法和装置 | |
JP2011008493A (ja) | ウォッチドッグタイマーによるシステム異常検出方式 | |
JPH0581080A (ja) | マイクロプロセツサの暴走監視装置 | |
JPS62145336A (ja) | 計算機システムのプログラムル−プ検出方式 | |
KR100497893B1 (ko) | 교환기의 장애 처리 방법 및 장치 | |
JPH02293939A (ja) | スタックオーバーフロー検出時処理方式 | |
JPH04155543A (ja) | マイコン誤動作自己検知方式 | |
JPH02212940A (ja) | 計算機システムの障害検出方式 | |
JPH0991170A (ja) | 障害検出装置 |