(57)【要約】  ＣＰＵ（２０１）は、故障検出プログラムを実行すると、故障検出プログラムの実行開始から検出時間後のプログラムカウンタ（２０１）が記憶するアドレスの期待値をプログラムカウンタ期待値レジスタ（２０５）に記憶させ、検出時間カウンタ（２０３）に検出時間のカウントを開始させる。第１の比較器（２０７）は、検出時間カウンタ（２０３）が検出時間のカウントを終了すると、プログラムカウンタ（２０２）に記憶されているアドレスとプログラムカウンタ期待値レジスタ（２０５）に記憶されている期待値との比較結果を故障検出結果として出力する。
2010055562.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの命令が実行される毎に次に実行すべきプログラムの命令のアドレスを更新して記憶するプログラムカウンタを含み、前記プログラムカウンタに記憶されているアドレスのプログラムの命令を順番に実行するＣＰＵと、
前記プログラムカウンタが記憶するアドレスの期待値を記憶するプログラムカウンタ期待値レジスタと、
前記プログラムカウンタに記憶されているアドレスと前記プログラムカウンタ期待値レジスタに記憶されている期待値とを比較する第１の比較器と、
検出時間のカウントを行う検出時間カウンタとを有し、
前記ＣＰＵは、故障検出プログラムを実行すると、前記故障検出プログラムの実行開始から検出時間後の前記プログラムカウンタが記憶するアドレスの期待値を前記プログラムカウンタ期待値レジスタに記憶させ、前記検出時間カウンタに前記検出時間のカウントを開始させ、
前記第１の比較器は、前記検出時間カウンタが前記検出時間のカウントを終了すると、前記プログラムカウンタに記憶されているアドレスと前記プログラムカウンタ期待値レジスタに記憶されている期待値との比較結果を故障検出結果として出力することを特徴とするマイクロコンピュータ。
【請求項２】
前記ＣＰＵは、前記第１の比較器により不一致の比較結果が出力されると、前記ＣＰＵの故障が検出されたと判断し、故障対策処理を行うことを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
さらに、検出時間を記憶する検出時間レジスタと、
前記検出時間レジスタに記憶されている検出時間と前記検出時間カウンタのカウント値とを比較する第２の比較器とを有し、
前記検出時間カウンタは、前記ＣＰＵによりカウントの開始を指示されると、カウント値のアップカウントを開始し、
前記ＣＰＵは、前記故障検出プログラムを実行すると、前記検出時間レジスタに前記検出時間を記憶させ、
前記第１の比較器は、前記第２の比較器が前記検出時間レジスタに記憶されている検出時間と前記検出時間カウンタのカウント値とが一致する比較結果を出力すると、前記プログラムカウンタに記憶されているアドレスと前記プログラムカウンタ期待値レジスタに記憶されている期待値との比較結果を故障検出結果として出力することを特徴とする請求項１記載のマイクロコンピュータ。
【請求項４】
前記ＣＰＵは、前記故障検出プログラムを実行すると、前記検出時間カウンタに０からのアップカウントを開始させることを特徴とする請求項３記載のマイクロコンピュータ。
【請求項５】
前記検出時間カウンタは、前記ＣＰＵによりカウントの開始を指示されると、カウント値のダウンカウントを開始することを特徴とする請求項１記載のマイクロコンピュータ。
【請求項６】
前記ＣＰＵは、前記故障検出プログラムを実行すると、前記検出時間カウンタに前記検出時間からのダウンカウントを開始させ、
前記第１の比較器は、前記検出時間カウンタのカウント値が０になると、前記プログラムカウンタに記憶されているアドレスと前記プログラムカウンタ期待値レジスタに記憶されている期待値との比較結果を故障検出結果として出力することを特徴とする請求項５記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータに関する。
【背景技術】
【０００２】
近年、自動車向けのＬＳＩに対して、故障検出を行い、重大な事故を招く前に、システムで事故を防ぐ事が求められている。故障を検出する機能としては、ウォッチドッグタイマが良く知られている。ウォッチドッグタイマは、ＣＰＵが定期的にタイマをクリアし、タイマがオーバーフローすると、ＣＰＵが故障したと判断するものである。しかし、ウォッチドッグタイマでは、直接的にＣＰＵの故障を検出するわけでは無い為、故障を見逃す可能性がある。【０００３】
また、検出用に演算をさせて、その演算結果を確認する手段が有る。しかし、命令のフローを制御する回路に不具合が発生した場合は、検出用のプログラム実行時に、暴走してしまい、演算結果が得られない可能性がある。【０００４】
また、特開平５−２６５４号公報には、簡単な構成でマイクロコンピュータの故障検出率を向上させ、さらに故障発生から検知までの時間を短縮することを目的とするマイクロコンピュータの故障検知方法が開示されている。【０００５】
また、特開２００１−１８８６８８号公報には、誤った命令コードが処理されたことを検知することを目的とするマイクロコンピュータの暴走検知回路が開示されている。【０００６】
【特許文献１】特開平５−２６５４号公報
【特許文献２】特開２００１−１８８６８８号公報
【発明の開示】
【０００７】
本発明の目的は、プログラムの命令フローを制御する回路の故障を検出することができるマイクロコンピュータを提供することである。
【０００８】
本発明のマイクロコンピュータは、プログラムの命令が実行される毎に次に実行すべきプログラムの命令のアドレスを更新して記憶するプログラムカウンタを含み、前記プログラムカウンタに記憶されているアドレスのプログラムの命令を順番に実行するＣＰＵと、前記プログラムカウンタが記憶するアドレスの期待値を記憶するプログラムカウンタ期待値レジスタと、前記プログラムカウンタに記憶されているアドレスと前記プログラムカウンタ期待値レジスタに記憶されている期待値とを比較する第１の比較器と、検出時間のカウントを行う検出時間カウンタとを有し、前記ＣＰＵは、故障検出プログラムを実行すると、前記故障検出プログラムの実行開始から検出時間後の前記プログラムカウンタが記憶するアドレスの期待値を前記プログラムカウンタ期待値レジスタに記憶させ、前記検出時間カウンタに前記検出時間のカウントを開始させ、前記第１の比較器は、前記検出時間カウンタが前記検出時間のカウントを終了すると、前記プログラムカウンタに記憶されているアドレスと前記プログラムカウンタ期待値レジスタに記憶されている期待値との比較結果を故障検出結果として出力することを特徴とする。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の第１の実施形態によるマイクロコンピュータシステムの構成例を示すブロック図である。
【図２】図２は、第１の実施形態によるマイクロコンピュータの構成例を示すブロック図である。
【図３】図３は、マイクロコンピュータの処理例を示すフローチャートである。
【図４】図４は、図３のフローチャートの処理例を示すタイミングチャートである。
【図５】図５は、本発明の第２の実施形態によるマイクロコンピュータの構成例を示すブロック図である。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明の第１の実施形態によるマイクロコンピュータシステムの構成例を示すブロック図である。マイクロコンピュータシステムは、ＣＰＵボード１０８、モータ１０６及び他のＣＰＵボード１０７を有する。ＣＰＵボード１０８は、バス１００、マイクロコンピュータ１０１、タイマ１０２、シリアル入出力インターフェース１０３、ＲＯＭ１０４、及びＲＡＭ１０５を有する。バス１００には、マイクロコンピュータ１０１、タイマ１０２、シリアル入出力インターフェース１０３、ＲＯＭ１０４、及びＲＡＭ１０５が接続される。モータ１０６は、タイマ１０２に接続される。ＣＰＵボード１０７は、ＣＰＵボード１０８と同様の構成を有し、シリアル入出力インターフェース１０３に接続される。ＲＯＭ１０４又はＲＡＭ１０５は、故障検出プログラムを記憶する。マイクロコンピュータ１０１は、ＲＯＭ１０４又はＲＡＭ１０５内の故障検出プログラムを読み出して実行することにより、マイクロコンピュータ１０１内のＣＰＵの故障を検出することができる。【００１１】
図２は、マイクロコンピュータ１０１の構成例を示すブロック図である。マイクロコンピュータ１０１は、ＣＰＵ（中央処理装置）２０１、検出時間カウンタ２０３、検出時間レジスタ２０４、プログラムカウンタ（ＰＣ）期待値レジスタ２０５、第１の比較器２０７、及び第２の比較器２０６を有する。ＣＰＵ２０１は、プログラムカウンタ２０２を有する。バス１００には、ＣＰＵ２０１、検出時間カウンタ２０３、検出時間レジスタ２０４及びプログラムカウンタ期待値レジスタ２０５が接続される。【００１２】
プログラムカウンタ２０２は、プログラムの命令が実行される毎に次に実行すべきプログラムの命令のアドレスを更新して記憶する。ＣＰＵ２０１は、プログラムカウンタ２０２に記憶されているアドレスのプログラムの命令を順番に実行する。プログラムカウンタ期待値レジスタ２０５は、プログラムカウンタ２０２が記憶するアドレスの期待値を記憶する。検出時間レジスタ２０４は、検出時間を記憶する。検出時間カウンタ２０３は、検出時間のカウントを行う。第２の比較器２０６は、検出時間レジスタ２０４に記憶されている検出時間と検出時間カウンタ２０３のカウント値とを比較する。第１の比較器２０７は、第２の比較器２０６が検出時間レジスタ２０４に記憶されている検出時間と検出時間カウンタ２０３のカウント値とが一致する比較結果を出力すると、プログラムカウンタ２０２に記憶されているアドレスとプログラムカウンタ期待値レジスタ２０５に記憶されている期待値との比較結果を故障検出結果としてＣＰＵ２０１に出力する。ＣＰＵ２０１は、第１の比較器２０７により不一致の比較結果が出力されると、ＣＰＵ２０１の故障が検出されたと判断し、故障対策処理を行う。【００１３】
図３はマイクロコンピュータ１０１の処理例を示すフローチャートであり、図４は図３のフローチャートの処理例を示すタイミングチャートである。ＣＰＵ２０１は、ＲＯＭ１０４又はＲＡＭ１０５内の故障検出プログラムを実行すると、故障検出プログラムに従って図３のフローチャートの処理を行う。ステップＳ１〜Ｓ３は、故障検出プログラムの前処理部である。ステップＳ４は、故障検出プログラムの実体部である。ステップＳ６及びＳ７は、故障検出プログラムの後処理部である。故障検出プログラムは、上記のように、前処理部、実体部及び後処理部を有する。【００１４】
ステップＳ１では、ＣＰＵ２０１は、故障検出プログラムの実行開始から検出時間後のプログラムカウンタ２０２が記憶するアドレスの期待値をプログラムカウンタ期待値レジスタ２０５に設定記憶させる。例えば、上記の期待値は、故障検出プログラムの実体部の終了時にプログラムカウンタ２０２が記憶するアドレスの期待値である。図４のステップＳ１において、プログラムカウンタ期待値レジスタ２０５には、アドレスの期待値として例えば「ａ」が記憶される。【００１５】
次に、ステップＳ２では、ＣＰＵ２０１は、検出時間レジスタ２０４に上記の検出時間を記憶させる。例えば、検出時間は、故障検出プログラムの実体部の実行開始から終了までにかかる時間であり、クロック数で表現される。すなわち、検出時間レジスタ２０４には故障検出プログラムの実体部の終了時の時間が記憶され、プログラムカウンタ期待値レジスタ２０５には故障検出プログラムの実体部の終了時にプログラムカウンタ２０２に記憶されるアドレスの期待値が記憶される。ＣＰＵ２０１が正常に故障検出プログラムを実行すれば、検出時間レジスタ２０４内の検出時間が経過すると、プログラムカウンタ期待値レジスタ２０５内の期待値のアドレスがプログラムカウンタ２０２に記憶されていることになる。これを検証することにより、ＣＰＵ２０１の故障を検出することができる。図４のステップＳ２において、検出時間レジスタ２０４には、例えば検出時間として例えば「ｂ」が記憶される。【００１６】
次に、ステップＳ３では、ＣＰＵ２０１は、検出時間カウンタ２０３に上記の検出時間のカウントを開始させる。具体的には、ＣＰＵ２０１は、検出時間カウンタ２０３に０からのアップカウントを開始させる。検出時間カウンタ２０３は、０からアップカウントを開始し、そのカウント値を時間経過に応じて増加させる。図４のステップＳ３において、検出時間カウンタ２０３は０からのカウントアップを開始する。【００１７】
次に、ステップＳ４では、ＣＰＵ２０１は、故障検出プログラムの実体部を実行する。例えば、故障検出プログラムの実体部は、演算処理を行うプログラムである。故障検出プログラムの実体部の終了後のステップＳ６において、ＣＰＵ２０１は、その演算結果が正しいか否かを検証することにより、ＣＰＵ２０１の故障を検出することができる。図４のステップＳ４では、ステップＳ３の終了時からステップＳ５の開始時までの期間において故障検出プログラムの実体部の処理が行われる。【００１８】
次に、ステップＳ５では、検出時間カウンタ２０３のカウント値が増加し、やがて検出時間カウンタ２０３のカウント値と検出時間レジスタ２０４に記憶されている検出時間とが一致する。第２の比較器２０６は、検出時間レジスタ２０４に記憶されている検出時間と検出時間カウンタ２０３のカウント値とを比較し、両者が一致すると一致の比較結果を第１の比較器２０７に出力する。第１の比較器２０７は、第２の比較器２０６が検出時間レジスタ２０４に記憶されている検出時間と検出時間カウンタ２０３のカウント値とが一致する比較結果を出力すると、プログラムカウンタ２０２に記憶されているアドレスとプログラムカウンタ期待値レジスタ２０５に記憶されている期待値との比較結果を故障検出結果としてＣＰＵ２０１に出力する。【００１９】
図４のステップＳ５において、検出時間カウンタ２０３のカウント値が検出時間レジスタ２０４に記憶されている検出時間「ｂ」と同じ値になる。この時、プログラムカウンタ２０２に記憶されているアドレスは例えば「ｃ」であり、プログラムカウンタ期待値レジスタ２０５に記憶されている期待値「ａ」と異なる値になっている。その結果、第１の比較器２０７は、不一致の信号を出力する。【００２０】
ＣＰＵ２０１は、第１の比較器２０７から故障検出結果として一致の信号を入力するとステップＳ６へ進み、第１の比較器２０７から故障検出結果として不一致の信号を入力するとステップＳ７へ進む。【００２１】
ステップＳ６では、ＣＰＵ２０１は、ＣＰＵ２０１の故障が検出されなかったと判断し、故障検出プログラムを終了する。【００２２】
ステップＳ７では、ＣＰＵ２０１は、ＣＰＵ２０１の故障が検出されたと判断し、例外処理ルーチンとして故障対策処理（故障に対応した処理プログラム）を実行する。例えば、故障対策処理は、ＣＰＵ２０１の処理を止め、その代わりに他のＣＰＵボード１０７内のＣＰＵに処理させる処理である。また、故障対策処理は、マイクロコンピュータシステム全体の動作を安全に終了する処理、又は機能を限定して安全に走行させる等の処理である。図４のステップＳ７では、ＣＰＵ２０１は、第１の比較器２０７から不一致の信号を入力し、例外ルーチンとして故障対策処理を行う。【００２３】
なお、他のＣＰＵボード１０７内ＣＰＵが、第１の比較器２０７の不一致の出力信号を入力し、例外ルーチンとして故障対策処理を行ってもよい。【００２４】
図５は、本発明の第２の実施形態によるマイクロコンピュータ１０１の構成例を示すブロック図である。本実施形態のマイクロコンピュータ１０１（図５）は、第１の実施形態のマイクロコンピュータ１０１（図２）に対して、検出時間レジスタ２０４及び第２の比較器２０６を削除したものである。以下、本実施形態が第１の実施形態と異なる点を説明する。【００２５】
本実施形態では、図３のステップＳ２が削除される。図３のステップＳ３では、検出時間カウンタ２０３は、ＣＰＵ２０１によりカウントの開始を指示されると、カウント値のダウンカウントを開始する。ダウンカウントにより、検出時間カウンタ２０３のカウント値は時間経過と共に減少する。具体的には、ＣＰＵ２０１は、故障検出プログラムを実行すると、検出時間カウンタ２０３に上記の検出時間からのダウンカウントを開始させる。例えば、図４において、検出時間「ｂ」からのダウンカウントを開始させる。図３のステップＳ５では、第１の比較器２０７は、検出時間カウンタ２０３のカウント値が０になると、プログラムカウンタ２０２に記憶されているアドレスとプログラムカウンタ期待値レジスタ２０５に記憶されている期待値との比較結果を故障検出結果として出力する。【００２６】
ＣＰＵ２０１は、第１の比較器２０７から故障検出結果として一致の信号を入力するとステップＳ６へ進み、第１の比較器２０７から故障検出結果として不一致の信号を入力するとステップＳ７へ進む。ステップＳ６及びＳ７の処理は、第１の実施形態と同じである。【００２７】
以上のように、第１及び第２の実施形態によれば、第１の比較器２０７は、プログラムカウンタ２０２に記憶されているアドレスとプログラムカウンタ期待値レジスタ２０５に記憶されている期待値とを比較する。検出時間カウンタ２０３は、検出時間のカウントを行う。具体的には、ＣＰＵ２０１は、故障検出プログラムを実行すると、故障検出プログラムの実行開始から検出時間後のプログラムカウンタ２０２が記憶するアドレスの期待値をプログラムカウンタ期待値レジスタ２０５に記憶させ、検出時間カウンタ２０３に上記の検出時間のカウントを開始させる。第１の実施形態では検出時間カウンタ２０３はアップカウントを行い、第２の実施形態では検出時間カウンタ２０３はダウンカウントを行う。第１の比較器２０７は、検出時間カウンタ２０３が上記の検出時間のカウントを終了すると、プログラムカウンタ２０２に記憶されているアドレスとプログラムカウンタ期待値レジスタ２０５に記憶されている期待値との比較結果を故障検出結果として出力する。【００２８】
上記のように、故障検出プログラムがＣＰＵ２０１の故障を検出する。故障検出プログラムを実行した際の、プログラムカウンタ２０２の期待値と、その期待値が出現する予定の検出時間を予め設定し、その予定の検出時間に、プログラムカウンタ２０２の期待値とプログラムカウンタ２０２の値を比較する。両者が不一致であれば、ＣＰＵ２０１の故障が検出されたことになる。【００２９】
第１及び第２の実施形態によれば、プログラムの命令のフロー制御を直接的に検査することができるので、プログラムの命令フローを制御する回路の故障を検出することができる。【００３０】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【産業上の利用可能性】
【００３１】
プログラムの命令のフロー制御を直接的に検査することができるので、プログラムの命令フローを制御する回路の故障を検出することができる。
【図１】
2010055562.tif 000003
【図２】
2010055562.tif 000004
【図３】
2010055562.tif 000005
【図４】
2010055562.tif 000006
【図５】
2010055562.tif 000007
【国際調査報告】
2010055562.tif 000008
2010055562.tif 000009
2010055562.tif 000010
2010055562.tif 000011