(57)【要約】【課題】マイコンがリセットされた原因を容易に特定すること。【解決手段】実施形態に係る制御装置は、取得部と、検出部と、判定部とを備える。取得部は、マイクロコンピュータの備えるスタックポインタの値を取得する。検出部は、取得部によって取得されたスタックポインタの値が予め定義された異常範囲内に到達した場合に、スタックオーバフローの予兆を検出するとともに、検出履歴を不揮発性メモリ領域へ記録する。判定部は、マイクロコンピュータのリセットからの復帰時において上記検出履歴がある場合に、当該リセットをスタックオーバフローによるものと判定する。【選択図】図２
2020144699.tif 000002
【特許請求の範囲】
【請求項１】
マイクロコンピュータの備えるスタックポインタの値を取得する取得部と、
前記取得部によって取得された前記スタックポインタの値が予め定義された異常範囲内に到達した場合に、スタックオーバフローの予兆を検出するとともに、検出履歴を不揮発性メモリ領域へ記録する検出部と、
前記マイクロコンピュータのリセットからの復帰時において前記検出履歴がある場合に、当該リセットを前記スタックオーバフローによるものと判定する判定部と
を備えることを特徴とする制御装置。
【請求項２】
前記検出部による前記検出履歴の記録後に、所定のフェイルセーフ処理を実行するフェイルセーフ処理実行部
をさらに備える
ことを特徴とする請求項１に記載の制御装置。
【請求項３】
前記フェイルセーフ処理実行部は、
前記フェイルセーフ処理として前記マイクロコンピュータをリセットさせる
ことを特徴とする請求項２に記載の制御装置。
【請求項４】
前記フェイルセーフ処理実行部は、
前記フェイルセーフ処理として、前記マイクロコンピュータにおいて主たる制御プログラムを実行する主処理実行部を当該制御プログラムの実行から強制的に復帰させる
ことを特徴とする請求項２に記載の制御装置。
【請求項５】
前記検出部は、
スタックオーバフロー領域との境界に接したスタック領域の所定量分を指し示すアドレス範囲を前記異常範囲として、前記スタックオーバフローの予兆を検出する
ことを特徴とする請求項１〜４のいずれか一つに記載の制御装置。
【請求項６】
マイクロコンピュータの備えるスタックポインタの値を取得する取得工程と、
前記取得工程によって取得された前記スタックポインタの値が予め定義された異常範囲内に到達した場合に、スタックオーバフローの予兆を検出するとともに、検出履歴を不揮発性メモリ領域へ記録する検出工程と、
前記マイクロコンピュータのリセットからの復帰時において前記検出履歴がある場合に、当該リセットを前記スタックオーバフローによるものと判定する判定工程と
を含むことを特徴とする原因判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の実施形態は、制御装置および原因判定方法に関する。
【背景技術】
【０００２】
従来、車両に搭載され、エンジンやトランスミッション、カーナビゲーションといった車両の各種システムをそれぞれ電子制御する制御装置（ＥＣＵ：Electronic  Control  Unit）が知られている。かかる制御装置では、内蔵されたマイクロコンピュータ（以下、「マイコン」と記載する）が制御プログラムを実行することにより、割り当てられた各種機能を実現する。
【０００３】
なお、かかる制御装置では、たとえば電源ＩＣ（Integrated  Circuit）が、マイコンが正常に動作しているか否かを監視する監視部として機能する。マイコン監視の方式としては、たとえばマイコンから出力されるウォッチドッグカウンタ（以下、「ＷＤＣ」と記載する）信号のパルス間隔を監視するＷＤＣ監視方式が従来から知られている。かかるＷＤＣ監視方式により、マイコンの動作不良が検出された場合、電源ＩＣは、マイコンをリセットさせる。
【０００４】
ところで、マイコンの動作不良の一例として、スタックオーバフローの発生がある。スタックオーバフローの発生は、たとえばサブルーチンの再帰呼び出しによる無限ループ等によって、メモリ領域に確保されたスタック領域（コールスタック）に蓄積されるデータ量が限界を超えることを原因とする。
【０００５】
そこで、スタック領域の先頭のアドレスが格納されるスタックポインタの値の増減値を記憶しておき、前回の値と比較することでマイコンが暴走状態にあるか否かを判定する技術が提案されている（たとえば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２１６０１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術には、マイコンがリセットされた原因を容易に特定するうえで更なる改善の余地がある。
【０００８】
具体的には、上述した制御装置では、スタックオーバフローが発生した場合、電源ＩＣがマイコンをリセットさせることとなるが、車両に搭載される制御装置の場合、起動中のリセットは車両動作に影響するため、同じ原因でのリセットが将来的に再現することのないよう、早期にリセットの原因を特定する必要がある。
【０００９】
しかし、上述した従来技術は、マイコンが暴走状態にあるか否かを判定するものに過ぎず、マイコンがリセットされた原因を容易に特定させるものではない。
【００１０】
実施形態の一態様は、上記に鑑みてなされたものであって、マイコンがリセットされた原因を容易に特定することができる制御装置および原因判定方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
実施形態の一態様に係る制御装置は、取得部と、検出部と、判定部とを備える。前記取得部は、マイクロコンピュータの備えるスタックポインタの値を周期的に取得する。前記検出部は、前記取得部によって取得された前記スタックポインタの値が予め定義された異常範囲内に到達した場合に、スタックオーバフローの予兆を検出するとともに、検出履歴を不揮発性メモリ領域へ記録する。前記判定部は、前記マイクロコンピュータのリセットからの復帰時において前記検出履歴がある場合に、当該リセットを前記スタックオーバフローによるものと判定する。
【発明の効果】
【００１２】
実施形態の一態様によれば、マイコンがリセットされた原因を容易に特定することができる。
【図面の簡単な説明】
【００１３】
【図１Ａ】図１Ａは、車載システムの概要説明図である。
【図１Ｂ】図１Ｂは、比較例に係る原因判定方法の概要説明図である。
【図１Ｃ】図１Ｃは、実施形態に係る原因判定方法の概要説明図である。
【図２】図２は、実施形態に係るＥＣＵのブロック図である。
【図３Ａ】図３Ａは、スタック監視部の処理説明図（その１）である。
【図３Ｂ】図３Ｂは、スタック監視部の処理説明図（その２）である。
【図３Ｃ】図３Ｃは、スタック監視部の処理説明図（その３）である。
【図３Ｄ】図３Ｄは、スタック監視部の処理説明図（その４）である。
【図４Ａ】図４Ａは、実施形態に係るマイコンのスタック監視部が実行する処理手順を示すフローチャートである。
【図４Ｂ】図４Ｂは、実施形態に係るマイコンの判定部が実行する処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して、本願の開示する制御装置および原因判定方法の実施形態を詳細に説明する。なお、以下に示す実施形態によりこの発明が限定されるものではない。
【００１５】
また、以下では、実施形態に係る原因判定方法の概要について図１Ａ〜図１Ｃを用いて説明した後に、実施形態に係る原因判定方法を適用したＥＣＵ１０（「制御装置」の一例に相当）について、図２〜図４Ｂを用いて説明することとする。
【００１６】
まず、実施形態に係る原因判定方法の概要について図１Ａ〜図１Ｃを用いて説明する。図１Ａは、車載システム１の概要説明図である。また、図１Ｂは、比較例に係る原因判定方法の概要説明図である。また、図１Ｃは、実施形態に係る原因判定方法の概要説明図である。なお、図１Ａ中の「ｎ」は、１以上の任意の自然数とする。また、図１Ｂでは、本実施形態との区別のために、構成要素の符号に「’」を付す。
【００１７】
図１Ａに示すように、車両Ｃは、車載システム１を備える。車載システム１は、複数のＥＣＵ１０−１〜１０−ｎを備える。ＥＣＵ１０−１〜１０−ｎは、ＣＡＮ（Controller  Area  Network）等のネットワークＮにより相互通信可能に接続され、それぞれ制御プログラムを実行することによって制御対象２０−１〜２０−ｎを電子制御する。制御対象２０−１〜２０−ｎは、たとえばエンジンやトランスミッション、カーナビゲーションといった各種システムである。
【００１８】
ここで、図１Ｂに示すように、比較例となる従来構成に係るＥＣＵ１０’は、マイコン１１’と、電源ＩＣ１２’とを備える。マイコン１１’は、ＥＣＵ１０’の主処理部であって、制御プログラムを実行することによって、ＥＣＵ１０’それぞれに割り当てられた各種機能を実現する。
【００１９】
かかる各種機能の「通常制御中」において、マイコン１１’から電源ＩＣ１２’に対しては、周期的に「ＷＤＣ出力」、すなわちＷＤＣ信号の出力がなされ、電源ＩＣ１２’はそのパルス間隔を監視することによって、マイコン１１’の動作状況を監視する。
【００２０】
その過程において、図１Ｂに示すように、マイコン１１’に「スタックオーバフロー」が発生したものとする。かかる場合、マイコン１１’は未定義動作を引き起こして暴走状態となるので、たとえば「ＷＤＣ出力」が滞る。すると、電源ＩＣ１２’は、「タイムアウトを検出」して、マイコン１１’を「リセット」させる。
【００２１】
これにより、マイコン１１’は「再起動」し、スタックオーバフローによる暴走状態は解消するが、「リセット原因は不明」のままとなる。したがって、リセットの原因は特定されずに、かかるリセットの再度の発生を防止するうえでは、たとえば不要な部品交換等により対処される可能性がある。すなわち、比較例に係る原因判定方法によれば、不経済であるうえ、リセットの真の原因を特定することが難しい。
【００２２】
そこで、実施形態に係る原因判定方法では、図１Ｃに示すように、マイコン１１による「通常制御中」に並行して、「スタックポインタの値を常時監視」する（ステップＳ１）。「スタックポインタの値」は、すなわちスタック領域において次回にデータが退避される場所のアドレスである。また、ここに言う「常時監視」は、所定の間隔を空けて周期的に監視する場合に含まれる。
【００２３】
なお、実施形態に係る原因判定方法では、予めスタックポインタがとりうる値のうち、スタックオーバフローの予兆を示すデータ範囲を異常範囲として定義付けており、スタックポインタがかかる異常範囲内に到達したことにより、「スタックオーバフローの予兆を検出」する（ステップＳ２）。
【００２４】
そして、実施形態に係る原因判定方法では、ステップＳ２で予兆が検出されたならば、その検出履歴を不揮発性メモリに記憶する（ステップＳ３）。そして、そのうえで、実施形態に係る原因判定方法では、「フェイルセーフ処理を実行」する（ステップＳ４）。
【００２５】
「フェイルセーフ処理」は、たとえばマイコン１１からの要求をトリガとするリセットである。かかるリセットの場合、マイコン１１は、電源ＩＣ１２へ「リセット要求」を送信し、電源ＩＣ１２は、かかる「リセット要求」に応じてマイコン１１を「リセット」させる。
【００２６】
これにより、マイコン１１は「再起動」するが、マイコン１１はその起動時のチェック処理において、リセットされたことと、不揮発性メモリに記憶されたスタックオーバフローの検出履歴が存在することとによって、原因を特定することが可能となる（ステップＳ５）。
【００２７】
このように、実施形態に係る原因判定方法では、マイコン１１が、通常制御に並行して、スタックポインタの値を常時監視する。また、マイコン１１は、かかるスタックポインタの値が、予め定義されたスタックポインタのとりうる値の異常範囲内に到達した場合に、スタックオーバフローの予兆を検出する。また、マイコン１１は、かかる予兆を検出した場合に、その検出履歴を不揮発性メモリに記憶させた後、所定のフェイルセーフ処理を実行する。
【００２８】
これにより、実施形態に係る原因判定方法によれば、マイコン１１がリセットされた原因を容易に特定することができる。
【００２９】
以下、上述した実施形態に係る原因判定方法を適用したＥＣＵ１０について、さらに具体的に説明する。
【００３０】
図２は、実施形態に係るＥＣＵ１０のブロック図である。なお、図２では、本実施形態の特徴を説明するために必要な構成要素のみを機能ブロックで表しており、一般的な構成要素についての記載を省略している。
【００３１】
換言すれば、図２に図示される各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。例えば、各機能ブロックの分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することが可能である。
【００３２】
図２に示すように、ＥＣＵ１０は、マイコン１１と、電源ＩＣ１２とを備える。まず、電源ＩＣ１２から説明する。電源ＩＣ１２は、後述する主処理実行部１１１ａからのＷＤＣ信号の出力に応じ、ＷＤＣ監視方式により、マイコン１１を監視する。監視の結果、マイコン１１の動作不良が検出されれば、電源ＩＣ１２はマイコン１１をリセットさせる。
【００３３】
また、電源ＩＣ１２は、後述するフェイルセーフ処理実行部１１１ｂｃからリセット要求を受け付けたならば、マイコン１１をリセットさせる。
【００３４】
マイコン１１は、制御部１１１と、記憶部１１２とを備える。制御部１１１は、主処理実行部１１１ａと、スタック監視部１１１ｂと、判定部１１１ｃと、ダイアグ出力部１１１ｄとを備える。スタック監視部１１１ｂは、取得部１１１ｂａと、検出部１１１ｂｂと、フェイルセーフ処理実行部１１１ｂｃとを有する。
【００３５】
記憶部１１２は、スタックポインタ１１２ａと、定義情報１１２ｂと、検出履歴１１２ｃと、リセット履歴１１２ｄとを記憶する。なお、スタックポインタ１１２ａは記憶部１１２に含まれるレジスタの一種である。定義情報１１２ｂ、検出履歴１１２ｃおよびリセット履歴１１２ｄは、記憶部１１２の不揮発性メモリ領域に記憶される。なお、ここに言う不揮発性メモリ領域は、リテンションＲＡＭ（Random  Access  Memory）領域を含む。
【００３６】
リテンションＲＡＭ領域は、マイコン１１がリセットされても情報を保持するＲＡＭ領域、言い換えれば装置電源が保たれていれば情報を保持可能なＲＡＭ領域であって、たとえばフリップフロップで構成されたＳＲＡＭ（Static  Random  Access  Memory）である。
【００３７】
制御部１１１は、たとえば、ＣＰＵ（Central  Processing  Unit）であって、マイコン１１の全体制御を行う。主処理実行部１１１ａは、マイコン１１の起動時に、記憶部１１２から図示しない制御プログラムを読み出して実行することにより、ＥＣＵ１０に割り当てられた電子制御機能を実現する。
【００３８】
また、主処理実行部１１１ａは、制御プログラムの実行中にサブルーチン呼び出しまたはサブルーチンからのリターン等が発生するごとに、図示しないスタック領域へデータをプッシュまたはポップし、スタックポインタ１１２ａを適宜更新する。
【００３９】
スタック監視部１１１ｂは、かかるスタックポインタ１１２ａを常時監視し、監視の結果、スタックオーバフローの予兆を検出した場合には、所定のフェイルセーフ処理を実行する。
【００４０】
具体的には、取得部１１１ｂａが、スタックポインタ１１２ａの値を常時取得し、検出部１１１ｂｂへ渡す。検出部１１１ｂｂは、予めスタックポインタ１１２ａのとりうる値のうちの異常範囲が定義された定義情報１１２ｂに対し、直近に取得したスタックポインタ１１２ａの値を照らす。
【００４１】
そして、検出部１１１ｂｂは、かかるスタックポインタ１１２ａの直近の値が異常範囲内に到達したならば、スタックオーバフローの予兆を検出したとしてかかる検出の履歴を検出履歴１１２ｃへ記憶させる。そのうえで、検出部１１１ｂｂは、フェイルセーフ処理実行部１１１ｂｃに所定のフェイルセーフ処理を実行させる。
【００４２】
また、検出部１１１ｂｂは、かかるスタックポインタ１１２ａの直近の値が異常範囲内に到達したことを検出したならば、かかる到達の検出の履歴を検出履歴１１２ｃへ記憶させてもよい。この場合、スタックオーバフローの予兆の検出処理を省略しつつ、フェイルセーフ処理実行部１１１ｂｃに所定のフェイルセーフ処理を実行させることができる。
【００４３】
フェイルセーフ処理実行部１１１ｂｃは、所定のフェイルセーフ処理を実行する。フェイルセーフ処理実行部１１１ｂｃは、たとえば所定のフェイルセーフ処理としてマイコン１１をリセットさせるために、電源ＩＣ１２へリセット要求を送信する。
【００４４】
なお、所定のフェイルセーフ処理はリセットに限らず、たとえば主処理実行部１１１ａに制御プログラムを強制リターンさせてもよい。かかる場合、スタックオーバフローの予兆の段階で強制リターンさせることとなるので、少なくともスタック領域のオーバフローには至らず、未定義動作を引き起こして制御プログラムを暴走させることがない。
【００４５】
また、所定のフェイルセーフ処理は、ＲＯＢ機能と呼ばれる異常状態発生時に所定の異常コードを不揮発性メモリに記憶させる機能を用いたものであってもよい。
【００４６】
ここで、スタック監視部１１１ｂが実行する処理の処理内容について、図３Ａ〜図３Ｄを用いてより具体的に説明する。図３Ａ〜図３Ｄは、スタック監視部１１１ｂにおける処理説明図（その１）〜（その４）である。
【００４７】
図２の記憶部１１２には図示していなかったが、主処理実行部１１１ａによる制御プラグラムの実行時には、記憶部１１２に含まれるメモリ空間に、図３Ａに示す各領域が確保される。「スタック領域」は、同図に示すように、たとえば「変数データ領域」に隣接して確保される。
【００４８】
一般に知られているが、かかる「スタック領域」は、図３Ｂに示すように、データを後入れ先出し（ＬＩＦＯ:Last  In  First  Out）の構造で保持する領域であって、２つの基本操作であるプッシュとポップを持つ。プッシュは、データをスタック領域の先頭（トップ）に追加し、既存のデータはその下にそのまま置いておく。ポップは、スタックの現在のトップのデータを外して取り出す。したがって、スタック領域に保持されるデータは、同図に示すように下に行くほど古い。
【００４９】
そして、スタックポインタ１１２ａは、かかるスタック領域において次にデータを退避する場所のアドレスが値として格納される。たとえば、図３Ｃに示すように、プッシュによりスタック領域のアドレス０ｘ０ＦＦＦが指す領域にデータが退避されると、スタック領域で次にデータを退避する場所を指すとともにアドレス０ｘ０ＦＦＦより小さいアドレス０ｘ０ＦＦＥがスタックポインタ１１２ａに格納される。ポップの場合はアドレスの大小関係は逆である。すなわち、同図に示すように、プッシュ（またはポップ）によりスタックの先頭が更新される。
【００５０】
このようなスタック領域のデータ構造およびスタックポインタ１１２ａの更新のされ方を前提として、図３Ｄに示すように、実施形態に係るＥＣＵ１０は、定義情報１１２ｂにスタックポインタ１１２ａがとりうる値のうちの「異常範囲を定義」している（ステップＳ１１）。なお、ここでは、スタック領域とスタックオーバフロー領域との境界において、アドレス０ｘ０ＦＦＢ〜０ｘ０ＦＦＥが異常範囲とされている例を示している。
【００５１】
そして、このような定義情報１１２ｂを参照しつつ、スタック監視部１１１ｂは、スタックポインタ１１２ａを「常時監視」する（ステップＳ１２）。ここで、同図に示すように、スタックポインタ１１２ａに異常範囲内の値である０ｘ０ＦＦＥが格納されたものとする。
【００５２】
すると、スタック監視部１１１ｂは、スタックポインタ１１２ａの値の「異常範囲内への到達を検出」する（ステップＳ１３）。そして、スタック監視部１１１ｂは、かかる検出結果に基づき、「スタックオーバフローの予兆ありと判定」することとなる（ステップＳ１４）。
【００５３】
図２の説明に戻る。判定部１１１ｃは、たとえばマイコン１１がリセットされた後の再起動時に、検出履歴１１２ｃおよびリセット履歴１１２ｄを参照して、スタックオーバフローの予兆の検出履歴およびリセットの履歴がある場合に、スタックオーバフローによるリセットが行われたと判定する。また、判定部１１１ｃは、かかる判定結果をダイアグ出力部１１１ｄへ通知する。
【００５４】
ダイアグ出力部１１１ｄは、判定部１１１ｃから通知された判定結果をダイアグノシス信号として出力する。これにより、リセットの原因がスタックオーバフローであったことをダイアグノシス診断によって検知することが可能となる。
【００５５】
次に、実施形態に係るマイコン１１のスタック監視部１１１ｂおよび判定部１１１ｃがそれぞれ実行する処理手順について、図４Ａおよび図４Ｂを用いて説明する。図４Ａは、実施形態に係るマイコン１１のスタック監視部１１１ｂが実行する処理手順を示すフローチャートである。また、図４Ｂは、実施形態に係るマイコン１１の判定部１１１ｃが実行する処理手順を示すフローチャートである。
【００５６】
なお、図４Ａに示す処理手順とは並行して、主処理実行部１１１ａによってＥＣＵ１０の主たる制御プラグラムが実行され、ＥＣＵ１０は通常制御中であるものとする。
【００５７】
図４Ａに示すように、まずスタックポインタ１１２ａの値の異常範囲が予め定義される（ステップＳ１０１）。そのうえで、スタック監視部１１１ｂの取得部１１１ｂａが、スタックポインタ１１２ａの値を取得する（ステップＳ１０２）。
【００５８】
そして、スタック監視部１１１ｂの検出部１１１ｂｂが、取得部１１１ｂａによって取得されたスタックポインタ１１２ａの値が異常範囲内であるか否かを判定する（ステップＳ１０３）。ここで、異常範囲外である場合（ステップＳ１０３，Ｎｏ）、スタック監視部１１１ｂは、ステップＳ１０２からの処理を繰り返す。
【００５９】
また、異常範囲内である場合（ステップＳ１０３，Ｙｅｓ）、検出部１１１ｂｂは、スタックオーバフローの予兆を検出する（ステップＳ１０４）。そして、検出部１１１ｂｂは、かかる検出結果を反映した検出履歴１１２ｃを不揮発性メモリに記憶させる（ステップＳ１０５）。
【００６０】
そして、フェイルセーフ処理実行部１１１ｂｃが、所定のフェイルセーフ処理を実行し（ステップＳ１０６）、処理を終了する。なお、ここではフェイルセーフ処理として、マイコン１１がリセットされたものとする。
【００６１】
かかるリセットにより、図４Ｂに示すように、まずマイコン１１が起動する（ステップＳ２０１）。そして、判定部１１１ｃが、たとえばかかる起動時のチェック処理において、検出履歴１１２ｃ、かつ、リセット履歴１１２ｄがあるか否かを判定する（ステップＳ２０２）。
【００６２】
ここで、これら履歴がある場合（ステップＳ２０２，Ｙｅｓ）、判定部１１１ｃは、スタックオーバフローによるリセットと判定し（ステップＳ２０３）、かかる判定結果を必要に応じてダイアグ出力して、処理を終了する。
【００６３】
上述してきたように、実施形態に係るＥＣＵ１０（「制御装置」の一例に相当）は、取得部１１１ｂａと、検出部１１１ｂｂと、判定部１１１ｃとを備える。取得部１１１ｂａは、マイコン１１（「マイクロコンピュータ」の一例に相当）の備えるスタックポインタ１１２ａの値を取得する。検出部１１１ｂｂは、取得部１１１ｂａによって取得されたスタックポインタの値が予め定義された異常範囲内に到達した場合に、スタックオーバフローの予兆を検出するとともに、検出履歴を不揮発性メモリ領域へ記録する。判定部１１１ｃは、マイコン１１のリセットからの復帰時において上記検出履歴がある場合に、当該リセットをスタックオーバフローによるものと判定する。
【００６４】
したがって、実施形態に係るＥＣＵ１０によれば、マイコン１１がリセットされた原因を容易に特定することができる。
【００６５】
また、実施形態に係るＥＣＵ１０は、フェイルセーフ処理実行部１１１ｂｃをさらに備える。フェイルセーフ処理実行部１１１ｂｃは、検出部１１１ｂｂによる検出履歴の記録後に、所定のフェイルセーフ処理を実行する。
【００６６】
したがって、実施形態に係るＥＣＵ１０によれば、スタックオーバフローの予兆段階で、フェイルセーフ処理を実行することができる。
【００６７】
また、フェイルセーフ処理実行部１１１ｂｃは、フェイルセーフ処理としてマイコン１１をリセットさせる。
【００６８】
したがって、実施形態に係るＥＣＵ１０によれば、検出部１１１ｂｂによる検出履歴の記録後に、フェイルセーフ処理としてマイコン１１をリセットさせるので、リセットからの復帰時において、容易に当該リセットがスタックオーバフローによるものと判定させることができる。
【００６９】
また、フェイルセーフ処理実行部１１１ｂｃは、フェイルセーフ処理として、マイコン１１において主たる制御プログラムを実行する主処理実行部１１１ａをかかる制御プログラムの実行から強制的に復帰させる。
【００７０】
したがって、実施形態に係るＥＣＵ１０によれば、スタックオーバフローを予兆段階で留めつつ、マイコン１１のリセットを回避することができる。
【００７１】
また、検出部１１１ｂｂは、スタックオーバフロー領域との境界に接したスタック領域の所定量分を指し示すアドレス範囲を上記異常範囲として、スタックオーバフローの予兆を検出する。
【００７２】
したがって、実施形態に係るＥＣＵ１０によれば、スタックオーバフローの予兆段階で異常と判定することができるので、スタックオーバフローの発生を予防することができる。
【００７３】
なお、上述した実施形態では、ＥＣＵ１０は車両Ｃに設けられることとしたが、無論、車両Ｃに限られるものではなく、たとえば船舶や航空機等に設けられてもよい。
【００７４】
また、上述した実施形態では、マイコン１１はマイクロコンピュータの一例であることとしたが、マイコロコントローラまたはマイクロプロセッサであってもよい。
【００７５】
さらなる効果や変形例は、当業者によって容易に導き出すことができる。このため、本発明のより広範な態様は、以上のように表しかつ記述した特定の詳細および代表的な実施形態に限定されるものではない。したがって、添付の特許請求の範囲およびその均等物によって定義される総括的な発明の概念の精神または範囲から逸脱することなく、様々な変更が可能である。
【符号の説明】
【００７６】
１０    ＥＣＵ
１１    マイコン
１２    電源ＩＣ
２０    制御対象
１１１    制御部
１１１ａ  主処理実行部
１１１ｂ  スタック監視部
１１１ｂａ  取得部
１１１ｂｂ  検出部
１１１ｂｃ  フェイルセーフ処理実行部
１１１ｃ    判定部
１１１ｄ    ダイアグ出力部
１１２      記憶部
１１２ａ    スタックポインタ
１１２ｂ    定義情報
１１２ｃ    検出履歴
１１２ｄ    リセット履歴
Ｃ      車両
Ｎ      ネットワーク
【図１Ａ】
2020144699.tif 000003
【図１Ｂ】
2020144699.tif 000004
【図１Ｃ】
2020144699.tif 000005
【図２】
2020144699.tif 000006
【図３Ａ】
2020144699.tif 000007
【図３Ｂ】
2020144699.tif 000008
【図３Ｃ】
2020144699.tif 000009
【図３Ｄ】
2020144699.tif 000010
【図４Ａ】
2020144699.tif 000011
【図４Ｂ】
2020144699.tif 000012