(57)【要約】【課題】マスタコアとチェッカコアの何れが故障コアかを特定可能なマイクロコンピュータを提供する。【解決手段】実施形態に係るマイクロコンピュータ（１０）は、マスタコア（１２）と、チェッカコア（１４）と、前記マスタコアと前記チェッカコアとを比較する比較部（１６）と、通常の処理を実行する通常プログラム（２３ａ、２４ａ）と、コアの故障診断用プログラム（２３ｂ、２４ｂ）を備える記憶部（２２、２３、２４）と、を備え、前記マスタコアと前記チェッカコアのそれぞれで前記故障診断用プログラムを実行することにより故障コアを特定する。【選択図】図３
2018136676.tif 000002
【特許請求の範囲】
【請求項１】
マスタコア（１２）と、チェッカコア（１４）と、前記マスタコアと前記チェッカコアとを比較する比較部（１６）と、
通常の処理を実行する通常プログラム（２３ａ、２４ａ）と、コアの故障診断用プログラム（２３ｂ、２４ｂ）と、を備える記憶部（２２、２３、２４）と、を備え、
前記マスタコアと前記チェッカコアのそれぞれで前記故障診断用プログラムを実行することにより故障コアを特定するマイクロコンピュータ（１０）。
【請求項２】
前記記憶部はさらに前記マスタコアと前記チェッカコアの正常時の故障診断用プログラムの実行結果（２３ｃ、２４ｃ）を記憶しており、
前記マスタコアと前記チェッカコアのそれぞれのコアの前記故障診断用プログラムの実行結果と、前記正常時の実行結果とを比較することにより、故障コアを特定する請求項１に記載のマイクロコンピュータ。
【請求項３】
前記マスタコアと前記チェッカコアのそれぞれのコアの前記故障診断用プログラムの実行結果と、前記正常時の実行結果とを比較し、比較結果が一致したコアを非故障コアと判定することにより非故障コアを特定し、比較結果が不一致であったコアを故障コアと判定することにより故障コアを特定する請求項２に記載のマイクロコンピュータ。
【請求項４】
故障コアを特定した後に、故障が発生していないコアを選択し、前記故障が発生していないコアにおいて前記通常プログラムの実行を継続する請求項１から３のいずれか一項に記載のマイクロコンピュータ。
【請求項５】
前記マスタコアと前記チェッカコアのそれぞれのコアの前記故障診断用プログラムの実行結果と、前記正常時の実行結果とを比較した結果、どちらの比較結果も不一致だった場合には、両コアにおいて故障が発生したと判定する請求項２に記載のマイクロコンピュータ。
【請求項６】
前記マスタコアと前記チェッカコアのそれぞれのコアの前記故障診断用プログラムの実行結果と、前記正常時の実行結果とを比較した結果、どちらの比較結果も一致であった場合には、リセットするかどうかをユーザが任意に選択して切換えることができる請求項２に記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、故障コアの特定を行うマイクロコンピュータに関する。
【背景技術】
【０００２】
従来、マイクロコンピュータ（以下、「マイコン」と表記する）のコアの異常検出方法としてロックステップ方式がある。これは、マイコンに同一のコアを二つ搭載し、一方をマスタコア、他方をチェッカコアとして、マスタコアとチェッカコアの双方に同じ命令を実行させ、その実行結果を比較する事により故障検知を行う手法である。同一のコアが同一の命令を実行するため正常であれば実行結果が同一になるはずであるが、一方のコアに異常があった場合、実行結果が異なることになる。この実行結果が異なった場合に異常発生を検知し、どちらか一方のコアに異常が発生したと判断するものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−４２３３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上記技術はあくまでマスタコアとチェッカコアの実行結果を比較するだけなので、コアの異常検知は可能なもののマスタコアとチェッカコアの何れに異常が発生したかを特定することができないという問題がある。そのため、上記手法ではマスタコアとチェッカコアの何れか一方が正常で動作に支障がないといった場合でも、どちらのコアが正常であるかを特定できないためマイコンの全体をリセットするしかないという問題があった。
【０００５】
本発明は、上記課題に鑑みてなされたものであり、その目的は、マスタコアとチェッカコアの何れが故障コアかを特定可能なマイクロコンピュータを提供することにある。
【課題を解決するための手段】
【０００６】
請求項１に記載した発明によれば、マイクロコンピュータ（１０）は、マスタコア（１２）と、チェッカコア（１４）と、前記マスタコアと前記チェッカコアとを比較する比較部（１６）と、通常の処理を実行する通常プログラム（２３ａ、２４ａ）と、コアの故障診断用プログラム（２３ｂ、２４ｂ）を備える記憶部（２２、２３、２４）と、を備え、前記マスタコアと前記チェッカコアのそれぞれで前記故障診断用プログラムを実行することにより故障コアを特定する。
【０００７】
この構成によれば、マイコンのマスタコアとチェッカコアの何れが故障コアであるか、及び何れが非故障コアであるかを特定することができる。非故障コアでの通常プログラム２４ａの実行結果を選択することができるため、マイコン１０をリセットすることによる無駄を回避しつつ、マイコン１０の通常動作を継続することができる。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態に係るマイコンの概略構成を示す図
【図２】第１実施形態に係る記憶部の概略構成図
【図３】第１実施形態における故障コアの判定を行う際のシーケンス図
【図４】第１実施形態における故障コアの判定の処理フロー図
【図５】第２実施形態に係るマイコンの概略構成図
【図６】第２実施形態に係る記憶部の概略構成図
【発明を実施するための形態】
【０００９】
以下、本発明の複数の実施形態について図面を参照して説明する。
（第１実施形態）
第１実施形態について図１から図４を用いて説明する。図１は、第１実施形態に係るマイコン１０の概略構成を示す図である。マイコン１０は、ＣＰＵ、メモリ、Ｉ／Ｏ、バス等を備える。図１の場合、マスタコア１２及びチェッカコア１４の２つのコアがＣＰＵを構成している。マスタコア１２及びチェッカコア１４は同一の機能を備えており、正常時に同一のプログラムを実行すれば同一の結果を得る。
【００１０】
マイコン１０は、さらに、比較器（Comparator、以下「ＣＯＭＰ」と表記する）１６、エラー・コントロール・モジュール（Error Control module、以下「ＥＣＭ」と表記する）１８、及びマルチプレクサ（Multiplexer、以下「ＭＵＸ」と表記する）２０を備えている。
【００１１】
ＣＯＭＰ１６は、プログラムの実行結果等を比較し、比較結果を出力する機能を備えている。ＥＣＭ１８は、ＣＯＭＰ１６での比較結果の入力を受け、ＭＵＸに出力する。ＭＵＸ２０は、マスタコア１２の実行結果を出力するか、又は、チェッカコア１４の実行結果を出力するかを切換える機能を備えている。ＥＣＭ１８は、ＣＯＭＰ１６からのエラー信号の入力を受け、エラー信号をエラー・アウト（Error OUT）端子に出力する。
【００１２】
また、マイコン１０は、ＲＡＭ２２、及びＲＯＭ２４を備える。ＲＡＭ２２は例えばＤＲＡＭ（Dynamic Random Access Memory）等のような揮発性メモリにより構成されている。ＲＯＭ２４は例えばフラッシュメモリ、ＥＰＲＯＭ、ＥＥＰＲＯＭ等のような不揮発性メモリにより構成されている。ＲＯＭ２４は、マイコン１０が制御対象を制御する通常プログラム２４ａ、マスタコア１２及びチェッカコア１４の故障診断を行う際に用いられるコアの故障診断用プログラム２４ｂ、及び、正常時におけるマスタコア１２及びチェッカコア１４において故障診断用プログラム２４ｂを実行した際の実行結果（以下、「正常実行結果」と表記する）２４ｃを記憶し格納している。通常プログラム２４ａは例えば車両の通常走行用制御のためのプログラムである。
【００１３】
ＲＡＭ２２は通常プログラム２４ａを記憶し格納している。これは例えばマイコン１０の立上時にチェッカコア１４から読み出されたものであり、ＣＰＵが頻繁にアクセスする通常プログラム２４ａについてはＲＡＭ２２に格納することとしてマイコン１０の動作速度を向上させるのに貢献している。
【００１４】
ＲＡＭ２２はマスタコア１２とチェッカコア１４に接続されている。ＲＯＭ２４はフラッシュバス（Flash Bus）２８を介してマスタコア１２とチェッカコア１４の双方に接続されている。マスタコア１２又はチェッカコア１４におけるプログラムの実行結果はＭＵＸ２０によって選択され、ＭＵＸ２０から出力されるインターコネクト２６を介してマイコン１０の各種周辺機能、及びＲＯＭ２４に出力される。
【００１５】
ＭＵＸ２０から出力されるプログラムの実行結果は正常時にはマスタコア１２側が選択されている。なお、第１実施形態におけるマイコン１０はマスタコア１２とチェッカコア１４の２つのコアを備えているが、チェッカコア１４はあくまでマスタコア１２の動作を確認するための機構のため、一般的にこの構成のマイコンを指してデュアルコアとは呼ばない。
【００１６】
図２は、ＲＯＭ２４に格納される内容構成を示したものである。ＲＯＭ２４には、通常プログラム２４ａ、故障診断用プログラム２４ｂ、及び正常実行結果２４ｃが記憶されている。図２に示すように、ＲＯＭ２４には、通常プログラム２４ａを構成する命令Ｉ１〜Ｉｎ、故障診断用プログラム２４ｂを構成する命令Ｉ´１〜Ｉ´ｎ、正常実行結果２４ｃを構成するデータｘｘｘｘ〜ｖｖｖｖを備えている。
【００１７】
通常プログラム２４ａ及び故障診断用プログラム２４ｂは適宜マスタコア１２及びチェッカコア１４に読み込まれて実行される。また、正常実行結果２４ｃは、故障診断用プログラム２４ｂの実行時に、ＣＯＭＰ１６に読み込まれて、故障診断用プログラム２４ｂの実行結果との比較に用いられる。
【００１８】
故障診断用プログラム２４ｂの具体例としては、例えば単純な加減算、乗算・除算処理や、マイコン１０が備えている命令セットを全て実行する、などが考えられる。故障診断用プログラム２４ｂの容量が大きくなれば、故障診断自体に要する時間も大きくなるため、故障診断用プログラム２４ｂの内容自体は用途に応じて最適な物を選択するようにする。
【００１９】
図３は第１実施形態における故障コアの判定を行う際のシーケンス図である。図３に示すように、まずマイコン１０では通常プログラム２４ａが実行されており、マスタコア１２とチェッカコア１４での命令実行結果はＣＯＭＰ１６に出力される。その後、ロックステップ方式による異常検知処理を実施し、ＣＯＭＰ１６での比較結果が不一致であった場合は不一致である旨がＥＣＭ１８に通知される。以下、ロックステップ方式による異常検知処理を実施し、ＣＯＭＰ１６での比較結果が不一致であった場合を、ロックステップエラーと称する。
【００２０】
次に、ＥＣＭ１８に、比較結果が不一致であった旨が通知されると、ＥＣＭ１８は、次回の命令実行をＲＯＭ２４に保存された故障診断用プログラム２４ｂを読み出して実行するように、マスタコア１２及びチェッカコア１４の各コアに指示を出す。マスタコア１２及びチェッカコア１４はＲＯＭ２４から故障診断用プログラム２４ｂを読み出してこれを実行し、その実行結果をＣＯＭＰ１６に出力する。また、ＲＯＭ２４に記憶されている正常出力結果２４ｃが読み出されてＣＯＭＰ１６に出力される。
【００２１】
ＣＯＭＰ１６はマスタコア１２及びチェッカコア１４の故障診断用プログラム２４ｂの実行結果とＲＯＭ２４から読み出された正常出力結果２４ｃを比較し、その比較結果をＥＣＭ１８に入力する。ＥＣＭ１８は、比較結果が不一致であったコアを故障コアと判定することにより故障コアを特定し、一致であったコアを非故障コアすなわち正常コアと判定することにより非故障コアを特定する。以下この判定結果を、「故障判定結果」と称する。
【００２２】
ＥＣＭ１８は故障判定結果をＭＵＸ２０に入力し、これに基づいてＭＵＸ２０は特定された正常コアの出力結果を選択する。ＥＣＭ１８は、それ以降は通常プログラム２４ａを実行するようにマスタコア１２及びチェッカコア１４に指示を出す。マスタコア１２及びチェッカコア１４はＲＯＭ２４から通常プログラム２４ａを読み出し、その実行結果をＭＵＸ２０に出力する。ＭＵＸ２０はマスタコア１２及びチェッカコア１４から出力された実行結果に対し、ＥＣＭ１８から通知されていた非故障コアの実行結果のみを選択し、インターコネクト２６に出力する。以上の処理はマイコン１０が主体的に実行している。なお、後述する図４のステップＳ１５においては、上述の通常プログラム２４ａの実行について、フェイルセーフモードに移行して通常プログラム２４ａを実行させる例として説明している。
【００２３】
上記構成により、マイコン１０は、ロックステップエラーが発生した場合にマスタコア１２及びチェッカコア１４のどちらが故障コアかを特定し、それ以降は非故障コアの実行結果を選択することにより正常にマイコン１０を動作させる事ができる。
【００２４】
ＥＣＭ１８は、ロックステップエラーが発生した場合、マスタコア１２及びチェッカコア１４の両方のコアに故障診断用プログラム２４ｂを実行するよう通知する。マスタコア１２及びチェッカコア１４の両コアで故障診断用プログラム２４ｂを実行させ、ＣＯＭＰ１６で両コアの実行結果と、正常実行結果２４ｃとを比較する。
【００２５】
その結果、正常実行結果２４ｃと異なる結果を出力したコアは故障が発生していると判断する事ができ、正常実行結果２４ｃと一致する結果を出力したコアは故障が発生していないと判断する事ができるため非故障コアを特定することができる。従って、いずれのコアが故障コアであるか、非故障コアであるかを特定する事で、ロックステップエラーが発生した後も、マイコン１０のリセットを実施することなく、非故障コアでの処理継続を可能とすることができる。
【００２６】
また、故障コアの判定時に故障診断用プログラム２４ｂの実行結果と正常実行結果２４ｃとを比較した結果、両コアで比較結果が不一致であった場合、もしくは両コアで比較結果が一致となる場合があり得る。両コアで比較結果が不一致であった場合は、マスタコア１２及びチェッカコア１４の両方が故障していると考えられるため、マイコン１０をリセットする。両コアで比較結果が一致の場合、マイコン１０において通常プログラムの動作を継続するか、又は、マイコン１０のリセットを実行するかをユーザが選択できるように構成されている。
【００２７】
図４は、上記構成において、故障診断用プログラム２４ｂの実行による故障コア判定の処理フローである。図４に示すように、マイコン１０は、通常プログラム２４ａの実行時にロックステップ処理を実行している。ロックステップ処理の実行により、ロックステップエラーが発生した場合には（Ｓ１０）、マイコン１０、故障診断用プログラム２４ｂを実行することにより故障コアの判定を行う（Ｓ１１）。
【００２８】
故障コアの判定は、マスタコア１２とチェッカコア１４において故障診断用プログラム２４ｂを実行し、ＣＯＭＰ１６において故障診断用プログラム２４ｂの実行結果と正常実行結果２４ｃを比較し、実行結果に不一致があったか否かで行う（Ｓ１２）。実行結果に不一致があった場合は（Ｓ１２：ＹＥＳ）、不一致となったコアは片方のコアだけであるかを判定する（Ｓ１３）。不一致となったのが片方のコアだけの場合は（Ｓ１３：ＹＥＳ）、故障コア、及び、非故障コアを特定する。
【００２９】
次に、マイコン１０は、ＭＵＸ２０で非故障コアを選択する（Ｓ１４）。ここで、例えば車載用途を想定すると、この後の処理は、マイコン１０をリセットすることとするよりフェイルセーフモードでマイコン１０を動作させ、車両を路肩のような安全な場所に移動させて停車させるなどの退避走行等を実施するほうが得策である。そこで、マイコン１０のリセットは行わず、フェイルセーフ（Fail Safe）モードで通常プログラム２４ａを実行し、マイコン１０の動作を継続させることにしている（Ｓ１５）。
【００３０】
ステップＳ１３において、不一致となったのが片方のコアだけでない場合、すなわち両コアが不一致の場合（Ｓ１３：ＮＯ）は、マイコン１０は、マスタコア１２及びチェッカコア１４の両コアにおいて故障が発生したと判定し、マイコン１０をリセットする（Ｓ１６）。
【００３１】
ステップＳ１２で、ＣＯＭＰ１６において故障診断用プログラム２４ｂの実行結果と正常実行結果２４ｃを比較し、実行結果が一致した場合は（Ｓ１２：ＮＯ）、マイコン１０は、フェイルセーフモードに移行する（Ｓ１５）。
【００３２】
上記のように、図４においては、実行結果が一致していた場合は（Ｓ１２：ＮＯ）、フェイルセーフモードに移行する（Ｓ１５）こととした例を示している。この場合は、そもそもロックステップ処理における判定が間違っていた（すなわち実際はエラーではなかったが誤検出してしまった）か、実行された故障診断用プログラム２４ｂでは今回のコアの故障モードを検知できなかった場合が想定される。
【００３３】
そこで、ステップＳ１５では以下のような処理を実行してもよい。すなわち、マイコン１０のユースケースに応じてマイコン１０をリセットするかどうかをユーザが任意に選択して切換えることができるように構成してもよい。あるいは、マイコン１０をリセットするか、又は、通常プログラム２４ａを実行させるようにするかどうかをユーザが任意に選択して切換えることができるように構成してもよい。
【００３４】
例えば車載用途を想定した場合、マイコン１０に対する安全要求レベルに応じて、マイコン１０のリセット可否を決定するようにして、状況に応じた設定を行うことでその後の処理を切り替えられるようにする、等が考えられる。また、安全性に問題が無いなどの場合は、通常プログラム２４ａによる通常動作を行うようにユーザに選択させてもよい。
【００３５】
以上に説明した第１実施形態に係るマイコン１０によれば以下の効果を奏する。
第１実施形態に係るマイコン１０によれば、マスタコア１２とチェッカコア１４において故障診断用プログラム２４ｂを実行させ、予め準備しておいた正常実行結果２４ｃと、マスタコア１２及びチェッカコア１４の故障診断用プログラム２４ｂの実行結果とを比較することで、故障コア及び非故障コアを特定することができる。その後、非故障コアでの通常プログラム２４ａの実行結果を選択することができるため、マイコン１０のリセットを実行することなく、マイコン１０の通常動作を継続することができる。
【００３６】
また、マイコン１０をリセットすることなく、非故障コアを選択して通常プログラム２４ａを実行させることにより通常動作を実行する制御や、フェイルセーフモードに移行して退避走行を実行する制御を実施するなどの選択を行うことが可能である。これにより、マイコン１０をリセットすることによる無駄を回避することができる。また、例えば車両を安全に退避させることが可能となる。
【００３７】
（第２実施形態）
次に、第２実施形態について図５及び図６を用いて説明する。図５に示すように、第２実施形態は、通常プログラム２３ａ、故障診断用プログラム２３ｂ及び正常実行結果２３ｃの格納場所をＲＡＭ２３に変更した場合の構成例である。第２実施形態においては、マイコン１０は、通常プログラム２３ａ、故障診断用プログラム２３ｂ及び正常実行結果２３ｃをＲＡＭ２３から呼び出して実行等を行う。
【００３８】
第１実施形態の構成を示す図１では、マイコン１０は、通常プログラム２４ａ、故障診断用プログラム２４ｂ及び正常実行結果２４ｃをＲＯＭ２４に記憶し格納していたが、第２実施形態では図５に示すように、ＲＡＭ２３に記憶し格納している。故障診断用プログラム２４ｂによる故障診断の実行自体には通常プログラム２４ａ、故障診断用プログラム２４ｂ及び正常実行結果２４ｃはＲＡＭ２２又はＲＯＭ２４のどちらに格納されていても良いが、ＲＡＭ２３はＲＯＭ２４に比べて高速にアクセス可能であるため、故障診断用プログラム２４ｂ及び正常実行結果２４ｃをＲＡＭ２２に格納しておいた方が故障診断を迅速に実行できる。
【００３９】
第２実施形態の場合は、例えば、マイコン１０は、その立ち上げ時などに、これら通常プログラム２４ａ、故障診断用プログラム２４ｂ及び正常実行結果２４ｃをＲＯＭ２４から読み出してＲＡＭ２３にコピーして格納するという処理を行う。従って、通常プログラム２３ａ、故障診断用プログラム２３ｂ及び正常実行結果２３ｃの中身は、通常プログラム２４ａ、故障診断用プログラム２４ｂ及び正常実行結果２４ｃと同じである。また、ＲＡＭ２３に格納される内容構成は、図６に示されるように、第１実施形態におけるＲＯＭ２４の内容構成と同じである。その他の構成も第１実施形態と同様である。
【００４０】
第２実施形態に係るマイコン１０によれば、第１実施形態と同様の効果を奏する。さらに、第２実施形態によれば、通常プログラム２３ａ、故障診断用プログラム２３ｂ、正常実行結果２３ｃをＲＡＭ２３に格納することとしたため、マイコン１０の高速動作が可能となり、迅速に故障診断を実施することが可能となる。
【００４１】
上記第１、又は第２実施形態の説明において、１つのマスタコア１２に対して一つのチェッカコア１４を備える構成としたが、これに限定されない。複数のマスタコア１２に対して、複数のチェッカコア１４を備える構成としてもよいし、複数のマスタコア１２に対して一つのチェッカコア１４を備える構成としてもよい。
【００４２】
本開示は、実施例に準拠して記述されたが、本開示は当該実施例や構造に限定されるものではないと理解される。本開示は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、さらには、それらに一要素のみ、それ以上、あるいはそれ以下、を含む他の組み合わせや形態をも、本開示の範疇や思想範囲に入るものである。
【符号の説明】
【００４３】
１０…マイクロコンピュータ、１２…マスタコア、１４…チェッカコア、１６…比較器、１８…ＥＣＭ、２０…ＭＵＸ、２２、２３…ＲＡＭ、２４…ＲＯＭ、２３ａ、２４ａ…通常プログラム、２３ｂ、２４ｂ…故障診断用プログラム、２３ｃ、２４ｃ…正常実行結果
【図１】
2018136676.tif 000003
【図２】
2018136676.tif 000004
【図３】
2018136676.tif 000005
【図４】
2018136676.tif 000006
【図５】
2018136676.tif 000007
【図６】
2018136676.tif 000008