(57)【要約】【課題】ＣＰＵ監視装置に関し、ＲＯＭに蓄えられたプログラムを読み込んで処理を行うＣＰＵの異常発生原因を容易に特定することができるようにし、かつ、ＣＰＵが実行したプログラムをモニタするためのメモリの容量を大幅に削減する。【解決手段】ＣＰＵ１３−１がアクセス中の各プログラムのＲＯＭ１３−２におけるアドレスをアドレス／処理番号変換部１−１により処理番号に変換し、アドレス／処理番号変換部１−１から出力される処理番号の変化を処理番号変化検出部１−２により検出し、アドレス／処理番号変換部１−１から出力される処理番号をメモリ１−３に記憶する。異常検出部１３−４からの異常発生検出信号により、書込みアドレス生成部１−４からの書込みアドレスの送出を停止して処理番号の書込みを停止し、メモリ１−３に保存されたプログラムの処理番号情報を読み出すことにより、異常発生までの処理動作を再現する。【選択図】      図１
2006085516.tif 000002
【特許請求の範囲】
【請求項１】
リードオンリメモリに格納されたプログラムを読み出して実行するＣＰＵの動作中に発生する異常の発生箇所を特定するＣＰＵ監視回路において、
前記リードオンリメモリ内のプログラムの処理単位毎のアドレス範囲を登録し、ＣＰＵのアクセス中のプログラムのアドレスから、該プログラムの処理番号へ変換するアドレス／処理番号変換部と、
前記アドレス／処理番号変換部から出力される処理番号の変化を検出し、変化した処理番号のみを出力する処理番号変化検出部と、
前記処理番号変化検出部から出力される処理番号を記憶するメモリと、
前記ＣＰＵの異常を検出し、ＣＰＵの異常検出時に異常検出信号を出力する異常検出部とを備え、
ＣＰＵの動作中、前記処理番号変化検出部から出力される処理番号を常時メモリに書込み、前記異常検出部からの異常検出信号の出力により、該処理番号のメモリへの書込みを停止することを特徴とするＣＰＵ監視回路。
【請求項２】
前記異常検出部の異常検出信号の入力により、前記メモリに保存された処理番号を順々に読み出し、正常状態のＣＰＵにより必ず実行される処理に割り当てた特定の処理番号が該メモリから読み出された場合に、前記ＣＰＵに対する処理再開のリセット信号を発生する手段を備えたことを特徴とする請求項１に記載のＣＰＵ監視回路。
【請求項３】
前記メモリに保存された一連の処理番号を、外部装置からの要求によって読出し、特定のフォーマットに変換して外部装置へ通知する手段を、前記ＣＰＵとは別の独立した機能手段として備えたことを特徴とする請求項１に記載のＣＰＵ監視回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Central Processing Unit：中央処理装置）監視装置に関し、特に、リードオンリメモリ（ＲＯＭ）に格納されたプログラムを読み出して実行するＣＰＵの動作中に発生する異常の発生箇所を特定する監視回路に関する。
【背景技術】
【０００２】
従来のＣＰＵ監視回路を図１３に示す。ＲＯＭ（リードオンリメモリ）１３−２に蓄えられたプログラムを読み込んで処理するＣＰＵ（中央処理装置）１３−１を監視する従来の監視回路は、個々のプログラムの動作をモニタするために、ＣＰＵ（中央処理装置）１３−１で実行される各プログラムのアドレスを保存するメモリ１３−３を備え、ＣＰＵ（中央処理装置）１３−１で実行される各プログラムのアドレスを該メモリ１３−３に常時書き込んでおく。
【０００３】
各プログラムのアドレスをメモリ１３−３に書込むときのアドレスは、書込みアドレス生成部１３−５により生成される。異常検出部１３−４は、ウォッチドッグタイマ（ＷＤＴ）により異常発生を判断し、異常発生検出時に書込みアドレス生成部１３−５に対してアドレスの生成を停止させ、メモリ１３−３へのプログラムアドレスの書込みを停止する。保守者は、メモリ１３−３に保存されたプログラムのアドレス情報を読み出すことにより、異常発生までの処理動作を再現する。
【０００４】
本発明に関連する先行技術として、プログラム上の各処理に処理ごとに番号を割り当てておき、マイクロコンピュータのＣＰＵは、プログラム上の処理を実行するごとに、その処理の番号を処理経路保存エリアに書き込むプログラム機器及びその不具合検出方法について下記の特許文献１に記載されている。また、ソースプログラムを処理用プログラムに変換する際、処理用プログラムに、変換の際に参照したソースプログラムの命令を特定する行番号を設定し、処理用プログラムの実行の結果、エラーが発生した場合、処理用プログラムに設定された行番号を用いて、エラーに対応するソースプログラム上の位置を把握するプログラムのデバッグ方法について下記の特許文献２に記載されている。
【特許文献１】特開２００１−１２５８０９号公報
【特許文献２】特開平０４−２６６１３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のＣＰＵ監視回路では、ウォッチドッグタイマ（ＷＤＴ）により異常発生を判断する際に、実際に異常が発生してからその異常を検出するまでに所定の時間が経過してしまうため、ウォッチドッグタイマ（ＷＤＴ）における判定のタイムアウト発生時にＣＰＵ（中央処理装置）１３−１がアクセスしていたＲＯＭ（リードオンリメモリ）１３−２のアドレスを取得することができても、異常の発生原因を特定することができない場合が多い。また、ＣＰＵ（中央処理装置）１３−１で実行されたプログラムの全てのアドレスを保存することはデータ量が膨大になり、困難である。
【０００６】
本発明は、ＲＯＭ（リードオンリメモリ）に蓄えられたプログラムを読み込んで処理を行うＣＰＵ（中央処理装置）の異常発生原因を容易に特定することができ、かつ、ＣＰＵ（中央処理装置）がアクセスしたプログラムをモニタするためのメモリの容量を大幅に削減することができるＣＰＵ監視回路を提供する。また、ハードウェアの自律動作により異常検出後の動作を決定し、更に、外部装置から異常の発生原因を特定することができるＣＰＵ監視回路を提供する。
【課題を解決するための手段】
【０００７】
本発明のＣＰＵ監視回路は、（１）リードオンリメモリに格納されたプログラムを読み出して実行するＣＰＵの動作中に発生する異常の発生箇所を特定するＣＰＵ監視回路において、前記リードオンリメモリ内のプログラムの処理単位毎のアドレス範囲を登録し、ＣＰＵのアクセス中のプログラムのアドレスから、該プログラムの処理番号へ変換するアドレス／処理番号変換部と、前記アドレス／処理番号変換部から出力される処理番号の変化を検出し、変化した処理番号のみを出力する処理番号変化検出部と、前記処理番号変化検出部から出力される処理番号を記憶するメモリと、前記ＣＰＵの異常を検出し、ＣＰＵの異常検出時に異常検出信号を出力する異常検出部とを備え、ＣＰＵの動作中、前記処理番号変化検出部から出力される処理番号を常時メモリに書込み、前記異常検出部からの異常検出信号の出力により、該処理番号のメモリへの書込みを停止することを特徴とする。
【０００８】
また、（２）前記異常検出部の異常検出信号の入力により、前記メモリに保存された処理番号を順々に読み出し、正常状態のＣＰＵにより必ず実行される処理に割り当てた特定の処理番号が該メモリから読み出された場合に、前記ＣＰＵに対する処理再開のリセット信号を発生する手段を備えたことを特徴とする。
【０００９】
また、（３）前記メモリに保存された一連の処理番号を、外部装置からの要求によって読出し、特定のフォーマットに変換して外部装置へ通知する手段を、前記ＣＰＵとは別の独立した機能手段として備えたことを特徴とする。
【発明の効果】
【００１０】
本発明は、ＣＰＵがアクセスしたプログラムの処理単位毎に、該プログラムのＲＯＭ上のアドレスから変換した処理番号をメモリに保存し、該処理番号にてＣＰＵ動作状況を保存することにより、プログラムの処理単位でＣＰＵを監視することができるため、異常の発生原因をプログラムの処理単位で特定することができ、また、ＣＰＵ動作状況を保存するデータ量を、従来のプログラムの個々のアドレスを保存するのに比べて大幅に減らすことができる。
【００１１】
また、異常発生時に、メモリに保存された処理番号を順々に読み出し、正常状態のＣＰＵにより必ず実行される処理に割り当てた特定の処理番号の有無を判定することにより、該異常がＣＰＵの一過性の異常か否かを判定することができ、一過性の異常の場合の再開処理を、ハードウェアの自律動作により行わせることができる。
【００１２】
また、ＣＰＵのプログラムの処理を、処理単位毎にＣＰＵとは独立した機能手段で特定し、外部装置に送信する手段を備えることにより、開発初期段階のプログラムのように正常に起動する前のプログラム等に対する異常箇所の特定が可能になる。
【発明を実施するための最良の形態】
【００１３】
図１は本発明によるＣＰＵ監視回路の第１の構成例を示す。同図に示すように本発明のＣＰＵ監視回路は、ＣＰＵ（中央処理装置）１３−１がアクセス中の各プログラムのＲＯＭ（リードオンリメモリ）１３−２におけるアドレスを処理番号に変換するアドレス／処理番号変換部１−１と、該アドレス／処理番号変換部１−１から出力される処理番号の変化を検出する処理番号変化検出部１−２と、該アドレス／処理番号変換部１−１から出力される処理番号を記憶するメモリ１−３と、該メモリ１−３の書込みアドレスを生成する書込みアドレス生成部１−４とを備える。
【００１４】
ＣＰＵ（中央処理装置）１３−１がアクセスした各プログラムのアドレスから変換した処理番号をメモリ１−３に常に書込み、異常発生検出時に該処理番号の書込みを停止し、メモリ１−３に保存されたプログラムの処理番号情報を読み出すことにより、異常発生までの処理動作を再現する。
【００１５】
図２に本発明によるアドレス／処理番号変換部１−１の構成を示す。アドレス／処理番号変換部１−１は、プログラムの各処理単位対応に各プログラムが格納されているＲＯＭ（リードオンリメモリ）１３−２のアドレスの開始アドレス（Ａ１１，Ａ２１，・・・）と終了アドレス（Ａ１２，Ａ２２，・・・）とを記憶し、該記憶した開始アドレスと実行中のプログラムのアドレスとを比較器２−１により比較し、また、該記憶した終了アドレスと実行中のプログラムのアドレスとを比較器２−２により比較し、各比較器２−１，２−２の比較結果の論理積演算をＡＮＤ回路２−３により行い、実行中プログラムのアドレスが、処理単位対応の各プログラムのどの開始アドレスと終了アドレスとの間のプログラムであるかを判断する。
【００１６】
例えば、処理Ｐ１のプログラムの開始アドレス［Ａ１１］と終了アドレス［Ａ１２］と実行中のプログラムアドレス［Ａ］との関係が、
［Ａ１１］≦［Ａ］≦［Ａ１２］
の関係であれば、実行中のプログラムは処理Ｐ１であると判断し、その判断結果に応じて処理番号符号化部２−４への出力信号を有効にする。処理Ｐ２以降のプログラムについても同様に判定処理を行い、その判定結果により処理番号符号化部２−４への出力信号を有効にする。
【００１７】
処理番号符号化部２−４では、各処理単位対応部から出力される有効化信号から実行中の処理プログラムを識別し、該処理プログラムに対応した処理番号をバイナリ符号化信号により出力する。なお、処理番号符号化部２−４に異常検出部１３−４から異常検出信号が入力されたときは、各処理プログラムに対応した処理番号以外の処理番号、例えば（０）を出力する。
【００１８】
図３にアドレス／処理番号変換部１−１のフローチャートを示す。同図に示すように、アドレス／処理番号変換部１−１は、異常検出部１３−４から異常検出信号が入力されたかを判定し、異常検出信号が入力されたときは処理番号として停止番号（０）を出力する。異常検出信号が入力されていなければ、ＣＰＵ（中央処理装置）１３−１がアクセスしているＲＯＭ（リードオンリメモリ）１３−２のアドレスを各処理単位対応に判定して処理番号に変換し、該処理番号（１〜２Ｎ−１）を出力する。なお、停止番号（０）は各プログラムの処理番号（１〜２Ｎ−１）と一致しない番号とする。
【００１９】
図４に処理番号変化検出部１−２の構成を示す。処理番号変化検出部１−２は、レジスタ４−１と比較器４−２とから構成され、アドレス／処理番号変換部１−１から入力される処理番号をレジスタ４−１にラッチし、比較器４−２において、次に入力される処理番号とレジスタ４−１にラッチされた処理番号とを比較する。比較器４−２における比較の結果、処理番号の変化が検出されたとき、書込みアドレス生成部１−４及びメモリ１−３に対してタイミング信号を出力する。
【００２０】
図５に書込みアドレス生成部１−４の構成を示す。書込みアドレス生成部１−４はカウンタ５−１により構成される。カウンタ５−１は、電源オン時等のリセット信号が入力されると、書込み開始アドレスを与えるカウント初期値（０）にカウント値をセットし、処理番号変化検出部１−２からタイミング信号が入力されると、カウント値（即ち書込みアドレス）を１ずつ増加させる。カウント値がメモリ１−３の最終アドレス値に達した後は、カウント値を開始アドレス（０）に戻す。また、異常検出部１３−４からの停止信号が入力されたとき、カウントを停止して書込みアドレスが変化しないようにする。
【００２１】
図６に処理番号を記憶するメモリ１−３の構成を示す。処理番号を記憶するメモリ１−３はデュアルポートメモリ６−１により構成される。デュアルポートメモリ６−１は、Ｌ側から書込みを行い、Ｒ側から読出しを行う。デュアルポートメモリ６−１は、アドレス／処理番号変換部１−１から出力される処理番号が開始アドレス（０）から順に記録され、書込み側（Ｌ側）のアドレスが最終アドレスに達すると次の書込みアドレスは開始アドレス（０）に戻り、以前に記録した処理番号を上書きする。また、異常検出部１３−４からの停止信号の発生によって停止番号（０）が記録される。読出し側（Ｒ側）のアドレスには、記録された処理番号を順に読み出すアドレスが与えられ、最終アドレスに達するとそこで読出しを停止する。
【００２２】
図７に本発明によるＣＰＵ監視回路の第２の構成例を示す。第２の構成例は、前述の第１の構成例に、読出しアドレス生成部７−１及び動作モード設定部７−２を追加したものである。図８に読出しアドレス生成部７−１の構成を示す。読出しアドレス生成部７−１は、カウンタ８−１により構成され、異常検出部１３−４からの異常検出信号が入力されると、メモリ１−３の読出しアドレスを開始アドレス（０）にセットする。また、動作モード設定部７−２からのタイミング信号が入力されると、読出しアドレスを１ずつ増加させ、メモリ１−３の最終アドレスで停止する。
【００２３】
第２の構成例において、ＣＰＵ（中央処理装置）１３−１の正常動作時に必ず実行されるプログラムの処理番号例えば（１）を予め動作モード設定部７−２に登録しておく。動作モード設定部７−２は、異常検出後に、メモリ１−３に保存された処理番号を読出し、そのとき、メモリ１−３に処理番号（１）が保存されていることを検出した場合は、ＣＰＵ（中央処理装置）１３−１が正常に動作しており、今回の異常検出は一過性の異常であると判断し、動作モード設定部７−２はリセット信号を発生する。
【００２４】
また、メモリ１−３に処理番号（１）が保存されていないことを検出した場合は、ＣＰＵ（中央処理装置）１３−１が正常に動作しておらず、ソフトウェアによる起動ができないと判断し、リセット信号を発生しない。図９に動作モード設定部７−２の動作のフローチャートを示す。
【００２５】
動作モード設定部７−２は、異常検出後、メモリ１−３に保存された処理番号を、開始アドレスから順に書込みを停止した箇所（処理番号＝０）まで読み出す。読出し中に、処理番号（１）が読み出された場合は、レジスタを１にセットする。メモリ１−３の読出し終了後、レジスタに１がセットされていれば、リセット信号を出力する。
【００２６】
メモリ１−３から読み出した処理番号が番号（０）以外であれば、タイミング信号を読出しアドレス生成部７−１及びメモリ１−３に出力する。そして、メモリ１−３の全体の読出し終了後、レジスタに１がセットされておらず、レジスタの内容が初期化時の０のままであるときは、リセット信号を出力することなく停止（ＨＡＬＴ）する。
【００２７】
図１０に本発明によるＣＰＵ監視回路の第３の構成例を示す。第３の構成例は、前述の第１の構成例に、読出しアドレス生成部１０−１、シリアル通信部１０−２及びパーソナルコンピュータ等の外部装置１０−３を追加したものである。
【００２８】
図１１に読出しアドレス生成部１０−１の構成を示す。読出しアドレス生成部１０−１はカウンタ１１−１により構成される。該カウンタ１１−１は、シリアル通信部１０−２からの初期化信号により０にセットされ、メモリ１−３の読出し開始アドレスをセットする。また、シリアル通信部１０−２からタイミング信号が入力されると、カウント値（即ち読出しアドレス）を１ずつ増加させる。カウント値がメモリ１−３の最終アドレスに達すると、該最終アドレス位置で停止する。
【００２９】
図１２にシリアル通信部１０−２のフローチャートを示す。シリアル通信部１０−２は、外部装置１０−３からの受信を待ち、外部装置１０−３からの要求による通信開始が入力されると、読出しアドレス生成部１０−１に初期化信号を出力する。また、処理番号の読出し指示の受信により、メモリ１−３に保存された処理番号を読出し、読出しアドレス生成部１０−１及びメモリ１−３にタイミング信号を出力する。
【００３０】
読み出した処理番号は、特定のフォーマットのシリアル信号に変換し、外部装置１０−３へ送信する送信処理を行い、次の処理番号読出しのためにタイミング信号を読出しアドレス生成部１０−１及びメモリ１−３に出力する。メモリ１−３から読出した処理番号が（０）のときは処理を終了する。この読出しアドレス生成部１０−１及びシリアル通信部１０−２は、ＣＰＵ１３−１とは独立した別個のハードウェアとして構成する。
【図面の簡単な説明】
【００３１】
【図１】本発明によるＣＰＵ監視回路の第１の構成例を示す図である。
【図２】アドレス／処理番号変換部の構成を示す図である。
【図３】アドレス／処理番号変換部のフローチャートである。
【図４】処理番号変化検出部の構成を示す図である。
【図５】書込みアドレス生成部の構成を示す図である。
【図６】処理番号を記憶するメモリの構成を示す図である。
【図７】本発明によるＣＰＵ監視回路の第２の構成例を示す図である。
【図８】読出しアドレス生成部の構成を示す図である。
【図９】動作モード設定部の動作のフローチャートである。
【図１０】本発明によるＣＰＵ監視回路の第３の構成例を示す図である。
【図１１】読出しアドレス生成部の構成を示す図である。
【図１２】シリアル通信部のフローチャートである。
【図１３】従来のＣＰＵ監視回路を示す図である。
【符号の説明】
【００３２】
１−１  アドレス／処理番号変換部
１−２  処理番号変化検出部
１−３  メモリ
１−４  書込みアドレス生成部
１３−１  ＣＰＵ（中央処理装置）
１３−２  ＲＯＭ（リードオンリメモリ）
１３−４  異常検出部
【図１】
2006085516.tif 000003
【図２】
2006085516.tif 000004
【図３】
2006085516.tif 000005
【図４】
2006085516.tif 000006
【図５】
2006085516.tif 000007
【図６】
2006085516.tif 000008
【図７】
2006085516.tif 000009
【図８】
2006085516.tif 000010
【図９】
2006085516.tif 000011
【図１０】
2006085516.tif 000012
【図１１】
2006085516.tif 000013
【図１２】
2006085516.tif 000014
【図１３】
2006085516.tif 000015