(57)【要約】【課題】実行されるプログラムの取るべき新たな状態の作成が容易で、プログラムのタスクの起動順だけでなく、そのループ処理が適正に処理されたか否かを判定することが可能なマイクロプロセッサ動作監視システムを提供することを目的とする。【解決手段】プログラムを構成するタスク毎に次に起動されるタスク番号を予め対応付けして自タスクを構成し、予告されたタスクと起動されたタスクとが一致しているか否かを比較判定し、マイクロプロセッサの動作の異常を検出するようにしたことを特徴とするマイクロプロセッサ動作監視システム。【選択図】  図１
2012088815.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサと、前記マイクロプロセッサの動作監視装置とを備え、
前記マイクロプロセッサは、前記プログラムを実行する演算部と、
複数のタスクから構成される前記プログラムを記憶する記憶部と、
前記演算部が実行する前記プログラムの前記タスクの実行に同期して前記動作監視装置に対して、起動される第１のタスク番号と次に起動される第２のタスク番号とを予め通告する遷移予告信号と、当該遷移予告信号に続いて起動されるタスクを通告する起動信号とを生成するタスク情報通信部と
を備え、
前記タスクは、自タスクの先頭に配置され、自タスクの起動を通知する起動命令と、前記自タスクの処理プログラムと、前記自タスクの末尾に配置され、前記自タスクの次に起動されるタスクを通知する遷移予告命令とを備え、
前記タスク情報通信部は、前記起動命令を受信して前記起動信号を、前記遷移予告命令を受信して前記遷移予告信号を生成し、
前記動作監視装置は、前記遷移予告信号に含まれる前記第２のタスク番号と前記起動信号に含まれる第１のタスク番号とを比較して、前記プロプログラムの前記タスクの起動順の一致、または不一致を判定し、
さらに、
前記プログラムにループ処理がある場合には、ループ処理の開始基点となる前記第２のタスクについては予めループ回数を付与した前記遷移予告命令とし、前記タスク情報通信部は、当該遷移予告命令に対応する遷移予告信号に前記ループ回数を付与し、
前記動作監視装置は、前記遷移予告信号に付与された前記第１のタスク番号の前記ループ回数を記憶するとともに、以降に起動される前記起動信号に前記第１のタスク番号が検出される毎に前記ループ回数を計数し、この計数値が記憶した前記ループ回数と一致、または不一致を判定し、
プログラムを構成するタスク毎に次に起動されるタスク番号を予め対応付けして自タスクを構成し、予告されたタスクと起動されたタスクとが一致しているか否かを比較判定し、マイクロプロセッサの動作の異常を検出するようにしたことを特徴とするマイクロプロセッサ動作監視システム。
【請求項２】
前記タスク情報通信部と前記動作監視装置との通信は、シリアル通信とし、生成する前記起動信号及び前記遷移予告信号は、パケットで送信することを特徴とする請求項１に記載のマイクロプロセッサ動作監視システム。
【請求項３】
前記動作監視装置は、さらに、受信した前記起動信号の受信ログを記憶する受信ログ記憶部を含み、前記マイクロプロセッサに送信する受信ログ処理部を備え、
前記マイクロプロセッサは、さらに、送信した前記起動信号のログを記憶する送信ログ記憶部を含み、前記受信ログ処理部から送信された受信ログと、送信ログ記憶部に記憶された送信ログとを比較してログデータの一致、不一致を判定し、マイクロプロセッサ動作監視システムの動作の異常を判定するログ比較監視部を備えた請求項１に記載のマイクロプロセッサ動作監視システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサが実行するプログラムの動作状態を監視するマイクロプロセッサ動作監視システムに関する。
【背景技術】
【０００２】
マイクロプロセッサ（Micro Processing Unit）の故障検出は、一般に、ウォッチドッグタイマを使用してその動作の異常を監視している。
【０００３】
このウォッチドッグタイマは、マイクロプロセッサが通常動作を実行中に異常が発生した場合に、マイクロプロセッサを適切にリセットさせるものであるが、この動作以外に、起動処理を実行中に異常が発生した場合にもマイクロプロセッサを適切にリセットさせることができるようにリセットの精度を高めたウォッチドッグタイマを備えた制御装置がある(例えば、特許文献１参照。)。
【０００４】
マイクロプロセッサの故障には、プログラムのバグや、改竄、及びソフトエラーなどが原因となるもの以外に、マイクロプロセッサの種々の回路構成要素の故障が原因となるものがある。
【０００５】
近年、高度の安全性を要求される制御装置等の安全装置においては、マイクロプロセッサ備える装置が正常に動作していることを検証できる動作監視装置が要求されている。
【０００６】
そこで、マイクロプロセッサから出力される、該マイクロプロセッサの状態の遷移を表す状態切替信号の入力を受け付ける状態切替信号入力手段と、マイクロプロセッサから出力される、該マイクロプロセッサの現在の状態を表す状態信号の入力を受け付ける状態信号入力手段と、プロセッサの状態を記憶する状態記憶手段と、状態記憶手段に記憶されたマイクロプロセッサの状態及び状態切替信号から、マイクロプロセッサが取るべき新たな状態を算出する状態算出手段と、状態算出手段によって算出されたマイクロプロセッサが取るべき新たな状態及び状態信号入力手段を介して入力されたマイクロプロセッサの状態を比較して、プロセッサの動作を検査する検査手段と、を有することを特徴とするマイクロプロセッサ動作検査システムがある（例えば、特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−２２６５２７号公報
【特許文献２】特許第４３５９６３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献２に開示されたマイクロプロセッサ動作検査システムは、動作検査回路には、予めマイクロプロセッサによって実行されるプログラムを模擬する回路がステートマシンとして組み込まれる必要があり、マイクロプロセッサが本来取るべき新たな状態を算出しておく必要があるため、このための動作検査回路の構成が複雑になる問題がある。
【０００９】
また、プログラムが変更されるごとに模擬する回路を変更する必要があるので、保守が複雑で面倒になる問題がある。
【００１０】
また、この方式では、プログラムのタスクの起動順が正常であるか否かを検出することは可能であるが、ループの起動順が正しくてもループの回数が検出できないので、予め設定された回数のループ処理が適正に処理されているか否かを検出することが出来ない問題がある。
【００１１】
また、タスクの起動順に異常が発生した場合、マイクロプロセッサの異常か、または動作検査回路の異常かが判定できない問題もある。
【００１２】
本発明は上述した問題を解決するためになされたもので、実行されるプログラムの
取るべき新たな状態の作成が容易で、プログラムのタスクの起動順だけでなく、そのループ処理が適正に処理されたか否かを判定することが可能なマイクロプロセッサ動作監視システムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、本発明によるマイクロプロセッサ監視システムは、マイクロプロセッサと、前記マイクロプロセッサの動作監視装置とを備え、前記マイクロプロセッサは、前記プログラムを実行する演算部と、複数のタスクから構成される前記プログラムを記憶する記憶部と、前記演算部が実行する前記プログラムの前記タスクの実行に同期して前記動作監視装置に対して、起動される第１のタスク番号と次に起動される第２のタスク番号とを予め通告する遷移予告信号と、当該遷移予告信号に続いて起動されるタスクを通告する起動信号とを生成するタスク情報通信部とを備え、前記タスクは、自タスクの先頭に配置され、自タスクの起動を通知する起動命令と、前記自タスクの処理プログラムと、前記自タスクの末尾に配置され、前記自タスクの次に起動されるタスクを通知する遷移予告命令とを備え、前記タスク情報通信部は、前記起動命令を受信して前記起動信号を、前記遷移予告命令を受信して前記遷移予告信号を生成し、前記動作監視装置は、前記遷移予告信号に含まれる前記第２のタスク番号と前記起動信号に含まれる第１のタスク番号とを比較して、前記プロプログラムの前記タスクの起動順の一致、または不一致を判定し、さらに、前記プログラムにループ処理がある場合には、ループ処理の開始基点となる前記第２のタスクについては予めループ回数を付与した前記遷移予告命令とし、前記タスク情報通信部は、当該遷移予告命令に対応する遷移予告信号に前記ループ回数を付与し、前記動作監視装置は、前記遷移予告信号に付与された前記第１のタスク番号の前記ループ回数を記憶するとともに、以降に起動される前記起動信号に前記第１のタスク番号が検出される毎に前記ループ回数を計数し、この計数値が記憶した前記ループ回数と一致、または不一致を判定し、プログラムを構成するタスク毎に次に起動されるタスク番号を予め対応付けして自タスクを構成し、予告されたタスクと起動されたタスクとが一致しているか否かを比較判定し、マイクロプロセッサの動作の異常を検出するようにしたことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、実行されるプログラムの取るべき新たな状態の作成が容易で、プログラムのタスクの起動順だけでなく、そのループ処理が適正に処理されたか否かを判定することが可能なマイクロプロセッサ動作監視システムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例１のマイクロプロセッサ動作監視システムの構成図。
【図２】複数のタスクからなるプログラムの例。
【図３】本発明のタスクの構成とタスクの起動、遷移予告命令を説明する図。
【図４】本発明のタスクと動作監視装置への起動、遷移予告信号の説明図。
【図５】動作監視装置のレジスタ部の構成を説明する図。
【図６】本発明の起動順の判定動作を説明する図。
【図７】本発明のループ回数判定動作を説明する図。
【図８】本発明の実施例２のマイクロプロセッサ動作監視システムの構成図。
【発明を実施するための形態】
【００１６】
以下、図面を参照して、本実施例について説明する。
【実施例１】
【００１７】
以下、図１乃至図７を参照して実施例１を説明する。先ず、図１を参照して、本実施例の構成について説明する。マイクロプロセッサ動作監視システム１００は、マイクロプロセッサ１と、マイクロプロセッサ１の動作を監視する動作監視装置２とを備える。
【００１８】
マイクロプロセッサ１は、複数のタスクから構成されるプログラムを記憶する記憶部１２と、記憶部１２からプログラムを抽出して実行する演算部１１と、プログラムの実行に同期して動作監視装置２に対して、起動される第１のタスク番号と次に起動される第２のタスク番号とを予め通告する遷移予告信号と、当該遷移予告信号に続いて起動されるタスクを通告する起動信号とを生成するタスク情報通信部１３とを備える。
【００１９】
次に、図２及び図３を参照して、本実施例のプログラムの構成の特徴を説明する。図２は本実施例を説明するためのプログラムの１例で、タスク単位の処理をフローチャートにしたものである。タスクＡ、タスクＤ、タスクＧ、及びタスクＦは処理タスクを示し、タスクＢ、タスクＣ、及びタスクＥは分岐タスクを示す。
【００２０】
図３は、夫々のタスクの構成の一部を示すもので、例えば、最初に起動されるタスクＡは、自タスクの先頭に配置され、タスクＡの起動を通知する起動命令３１ａと、このタスクＡの処理プログラム３１ｂと、タスクＡの末尾に配置され、タスクＡの次に起動される、タスクを通知する遷移予告命令３１ｃとで構成される。
【００２１】
また、この遷移予告命令３１ｃで通知された次に起動されたタスクＢは、同様に、タスクの先頭に配置され、タスクＢの起動を通知する起動命令３２ａと、タスクＢの処理プログラム３２ｂと、タスクＢの末尾に配置され、処理プログラム３２ｂの処理結果で選択されるタスクＢの次に起動される、例えば、タスクＣを通知する遷移予告命令３２ｃとで構成される。
【００２２】
以下、同様に、夫々のタスクは、自タスクの先頭に配置され、自タスクの起動を通知する起動命令と、自タスクの処理プログラムと、自タスクの末尾に配置され、自タスクの次に起動されるタスクを通知する遷移予告命令とを予め備える。
【００２３】
このように構成されたタスクを備えるプログラムを演算部１１が実行すると、夫々のタスクから起動命令に対応する起動信号ｓｓが、また遷移予告命令に対応する遷移予告信号ｓｐが夫々タスク情報通信部１３に順次送られる。
【００２４】
そして、タスク情報通信部１３では、この起動信号ｓｓ、及び遷移予告信号ｓｐを受信すると、例えば、シリアル通信で図４に示すようなデータ構造のパケット信号（ｓｔｏ)に変換して動作監視装置２に伝送する。
【００２５】
このパケットのデータ構造は、例えば、起動信号ｓｓと遷移予告信号ｓｐとを識別するファイルＩＤＦ１と、起動する自タスク（第１のタスク）情報Ｆ２、自タスク次に起動される次タスク（第２のタスク）情報Ｆ３、及び詳細を後述する第２のタスクを基点とするループ処理がある場合のループ回数情報Ｆ４から構成される。
【００２６】
図４（ａ）に示すように、例えば、遷移予告信号ｓｐを受信した場合に対応する遷移予告パケット信号ｓｔｏ１は、００１（Ｆ１）、タスクＡ（Ｆ２）、タスクＢ（Ｆ３）、０（Ｆ４）のように生成し、図４（ｂ）に示すように、起動信号ｓｓを受信した場合に対応する起動パケット信号ｓｔｏ２は、００２（Ｆ１）、タスクＡ（Ｆ２）、０（Ｆ３）、０（Ｆ４）のように生成し、タスクの情報が存在しない場合は、０を記述しておく。
【００２７】
次に、このような２種のパケット信号ｓｔｏ１、２から起動する第１のタスク情報とこの第１のタスク情報の次に遷移する第２のタスク情報を受信して、実行されるタスクの起動順とループ処理が正しく動作していることを監視する動作監視装置２について説明する。
【００２８】
図１及び図３に示すように、動作監視装置２は、遷移予告パケット信号ｓｔｏ１を受信して、そのデータを抽出するデータ抽出部２１と、データ抽出部２１が抽出したタスク情報を一時記憶するレジスタ部２２と、次に起動されるタスクの起動パケット信号ｓｔｏ２をデータ抽出部２２から受信して、起動された第１のタスク情報と、レジスタ部２２に記憶した第２のタスクと比較して、タスクの起動順の予告と起動されたタスクの一致・不一致からタスクの起動順の異常を判定するタスク起動順監視部２３と、起動されたタスクのループ回数の異常を監視するループ監視部２４と、タスク起動順監視部２３とループ監視部２４とが検出した異常に対して、マイクロプロセッサ１に対してプログラムの再起動またはリセットを、データ抽出部２１を介して通知する異常処理部２５とを備える。
【００２９】
図５に示すように、レジスタ部２２は、少なくとも３つのタスク情報を記憶する。夫々のレジスタは、第１のタスク情報を記憶するレジスタ２２Ａ、第２のタスク情報を記憶するレジスタ２２Ｂ、及び第２のタスク情報がループ処理の基点となっている場合、そのループ処理の回数情報を記憶するレジスタ２２Ｃを備える。
【００３０】
次に、このように構成された、本実施例のタスク起動順を監視するタスク起動順監視部２３の動作について、図２に示すフローチャートのプログラムを例にして説明する。
【００３１】
図６は、図２のフローチャートに基づいて、タスク情報通信部１３から動作監視装置２に送信されたパケット信号の履歴の１例を示す。
【００３２】
最初に、タスクＡが起動され、これに対応する図６（ａ）に示す起動パケット信号ｓｔｏ２が送信される。次に、このタスクＡの処理プログラムを実行して、次に実行されるタスクＢが判明し、図６(ｂ)に示す遷移予告パケット信号ｓｔｏ１が送信され、タスクＡの次に実行されるタスクＢへの遷移が予告される。
【００３３】
動作監視装置２では、この遷移予告パケットｓｔｏ１を受信すると、レジスタ部２２のレジスタ２２ａに、第１のタスク情報としてタスクＡを、また、第２のタスク情報としてタスクＢを書き込む。
【００３４】
そして、次に、タスクＢが起動され、これに対応する図６（ｃ）に示す起動パケット信号ｓｔｏ２が送信される。
【００３５】
ここで、タスク起動順監視部２３は、レジスタ部２２ｂに記憶したタスクＡの第１のタスク情報と、起動されたタスクＢの第１のタスク情報とを比較し、一致または不一致を判定して異常処理部２５に判定結果を送る。
【００３６】
同様にして、次に、タスクＢの処理プログラムを実行して、次に実行されるタスクＣが判明し、図６(ｄ)に示す遷移予告パケット信号ｓｔｏ１が送信され、タスクＢの次に実行されるタスクＣへの遷移が予告される。
【００３７】
以下、同様にしてプログラムの実行に基づいて順次タスク処理を実行し、予告された第２のタスク情報と、起動された第１のタスク情報を比較判定して、タスクの起動順が正しいか否かを判定することで、リアルタイムに判定結果を、データ抽出部２１を介してマイクロプロセッサ１に返信する。
【００３８】
このようなタスクの起動順の判定方法に拠れば、マイクロプロセッサ１のタスク情報通信部１３は、予めタスク毎に組み込まれた起動命令を受信して起動信号を、遷移予告命令を受信して遷移予告信号を容易に生成し、動作監視装置２は、遷移予告信号に含まれる第２のタスク番号と起動信号に含まれる第１のタスク番号とを比較して、プロプログラムのタスクの起動順の一致、または不一致を簡単構成で判定することが出来る。
【００３９】
次に、このように構成された、本実施例のループ処理回路のループ回数を判定するループ監視部２４の動作について、図２の破線に示す部分のループ回路を例にして説明する。
【００４０】
先ず、ループ監視部２４は、ループ回数が正常であるか否かを判定する監視部２４ａと第２のタスク情報とそのループ回数情報とを記憶するループ記憶部２２ｂとを備える。
【００４１】
そして、データ抽出部２１が、図７（ａ）に示す遷移予告信号ｓｔｏ１を受信し、レジスタ部２２ｃにタスクＥとそのループ回数情報が書き込まれると、ループ監視部２４は、レジスタ部２２ｃからこの第２のタスク情報とループ回数情報を抽出し、ループ記憶部２４ｂに書き込む。
【００４２】
次に、図７（ｂ）に示す起動信号ｓｔｏ２を受信してタスクＥのプログラムを実行する。そして、タスクＥの処理の結果、次に遷移するタスクＦが判明すると、図７（ｃ）に示す遷移予告信号ｓｔｏ１を受信する。
【００４３】
次に、図７（ｄ）に示す起動信号ｓｔｏ２を受信してタスクＦのプログラムを実行する。そして、タスクＦの処理の結果、次に遷移するタスクＥが判明すると、図７（ｅ）に示す遷移予告信号ｓｔｏ１を受信する。
【００４４】
次に、図７（ｅ）に示す起動信号ｓｔｏ２を受信すると、監視部２４ａは、ループ記憶部２４ｂに記憶したループの基点となるタスク情報とを比較して、記憶したタスクＥのループ回数を１つ減じる。その結果、図７（ｆ）に示すように、予め記憶したループ回数情報が０となった場合にループ記憶部２４ｂに書き込んだループＥの情報を消去する。
【００４５】
そして、ループ回数が不一致の状態で他のタスクに遷移した場合には、異常と判定し、その結果を、データ抽出部２１を介してマイクロプロセッサ１に返信する。
【００４６】
このようなループ監視部２４に拠れば、プログラムにループ処理がある場合に、ループ処理の開始基点となる第２のタスクについては予めループ回数を予め付与した遷移予告命令とし、タスク情報通信部１３は、遷移予告命令に対応する遷移予告信号にループ回数を付与し、動作監視装置２は、遷移予告信号に付与された第１のタスク番号のループ回数を記憶するとともに、以降に起動される起動信号に第１のタスク番号が検出される毎にループ回数を計数し、この計数値が記憶した前記ループ回数と一致、または不一致を判定し、ループ処理の動作を監視することが出来る。
【００４７】
以上説明したように、実施例１に拠れば、プログラムを構成するタスク処理プログラムの先頭に起動命令を、そして末尾に、タスクを処理した結果遷移する次のタスクを予告する遷移予告命令を付与することで、マイクロプロセッサの動作に負担を与えることなく、マイクロプロセッサの外部において、タスクの起動順とループ処理とを独立して監視することが容易に行えるマイクロプロセッサの動作監視システムを提供することが出来る。
【実施例２】
【００４８】
次に、図８及を参照して、実施例２のマイクロプロセッサ動作監視システムについて説明する。実施例２の各部について図１に示す実施例１の各部と同一部分は同一符号で示しその説明を省略する。
【００４９】
図８及に示すように、実施例２が、実施例１と異なる点は、実施例１の構成について、さらに、起動されたタスクのログ情報をマイクロプロセッサ１と動作監視装置２の夫々で記録し、双方のログ情報を比較照合し、相違の有無から異常を自動的に判定するようにしたことにある。
【００５０】
このような実施例２に拠れば、タスク起動順やループ回数が不一致と判定された場合、動作監視装置に異常がないかをマイクロプロセッサ側で確認することが出来る。
【００５１】
本発明のいくつかの実施例を説明したが、これらの実施例は、例として提示したものであり、発明の範囲を限定することを意図していない。これら新規な実施例は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で，種々の省略、置き換え、変更を行うことが出来る。これらの実施例やその変形は、発明の要旨に含まれるとともに、特許請求の範囲に記載された発明と均等の範囲に含まれる。
【符号の説明】
【００５２】
１  マイクロプロセッサ
２  動作監視装置
１１  演算部
１２  記憶部
１３  タスク情報通信部
１４  ログ比較監視部
２１  データ抽出部
２２  レジスタ部
２２ａ  第１のタスク情報
２２ｂ  第２のタスク情報
２２ｃ  ループ回数情報
２３  タスク起動順監視部
２４  ループ監視部
２４ａ  監視部
２４ｂ  ループ記憶部
１００  マイクロプロセッサ動作監視システム
【図１】
2012088815.tif 000003
【図２】
2012088815.tif 000004
【図３】
2012088815.tif 000005
【図４】
2012088815.tif 000006
【図５】
2012088815.tif 000007
【図６】
2012088815.tif 000008
【図７】
2012088815.tif 000009
【図８】
2012088815.tif 000010