(57)【要約】【課題】本発明は、マスタ側コアに異常を検出した場合に基本制御処理動作時にスレーブ側コアによるフェイルセーフ処理を行う際に、基本制御に必要なデータを前記マスタ側コアより引き継ぎ、円滑に制御の切り替えを行う技術を提供する。【解決手段】車載用制御装置は、基本制御処理部と、異常検知処理部と、フェィルセーフ処理制御部と、を備える。前記基本制御処理部は、基本制御を実行している際に基本制御に使用しているデータとスタック警告データをマスタ側コアとスレーブ側コアの両方よりアクセスできる共有記憶領域に格納する。前記異常検知処理部は、マスタ側コアのスタック領域の異常を検知する。前記フェィルセーフ処理制御部は、前記異常検知処理部にて異常を検出した時に前記基本制御処理部にて前記共有記憶領域に格納されたデータの内、正常に動作していた時のデータを使用してスレーブ側コアにてフェイルセーフ処理を行う。【選択図】図２
2018165873.tif 000002
【特許請求の範囲】
【請求項１】
車載用制御装置であって、
基本制御を実行している際に、前記基本制御に使用しているデータとスタック警告データとを、マスタ側コアとスレーブ側コアとの両方よりアクセス可能な共有記憶領域に格納する基本制御処理部と、
前記マスタ側コアのスタック領域の異常を検知する異常検知処理部と、
前記異常検知処理部にて異常を検出した時に、前記基本制御処理部にて前記共有記憶領域に格納された前記データを使用して、前記スレーブ側コアでフェイルセーフ処理を行うフェイルセーフ処理制御部と、を備える、
ことを特徴とする車載用制御装置。
【請求項２】
請求項１に記載の車載用制御装置において、
前記異常検知処理部によりスタック領域の異常を検知した場合、前記フェイルセーフ処理制御部は、初回動作の場合、前記共有記憶領域に格納された前記スタック警告データにて異常が発生していない正常時のデータを取り込む、
ことを特徴とする車両用制御装置。
【請求項３】
請求項２に記載の車載用制御装置において、
前記基本制御処理部は、前記異常検知処理部にて異常が検知されたかどうか判定し、前記スタック警告データをスタック異常検知フラグとして、前記基本制御に使用している前記データと共に、前記共有記憶領域にリングバッファとして順次、格納する、
ことを特徴とする車両用制御装置。
【請求項４】
請求項２に記載の車載用制御装置において、
前記異常検知処理部は前記基本制御処理部より速い周期で動作させ、
前記スタック警告データの判定に使用する閾値を前記スタック領域より小さい値で設定する、
ことを特徴とする車載用制御装置。
【請求項５】
請求項２に記載の車載用制御装置において、
前記フェイルセーフ処理制御部は、前記初回動作にて正常時のデータを使用して、事前に処理負荷が低く、異常が発生しないように設計された異常時走行制御処理へ移行する、
ことを特徴とする車載用制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車載用制御装置に関し、複数の中央処理装置を内蔵したマイクロコンピュータを備える車載用制御装置に適用可能である。
【背景技術】
【０００２】
自動車の車両制御は、車両に複数搭載されている車載用ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）にて行われる。車載用ＥＣＵは演算制御を行う為、内部にマイクロコンピュータ（以後、マイコンと略称する）を備える。
【０００３】
従来、車両制御に用いられるＥＣＵでは、シングルコアのマイコンを複数個搭載する事で、制御機能を実現していたが、近年では複数のコアを持つマルチコアのマイコンが普及しつつある。ここで、コアとは、中央処理装置（ＣＰＵ）を意味している。
【０００４】
マイコンは、演算制御にて、主プログラムからサブプログラムを呼び出した時などに、主プログラムへの戻り位置を示すアドレスをスタック領域に記憶する。マイコンのスタック領域は、一般的に、マイコンに内蔵された揮発性メモリ装置、例えば、スタチック型ランダムアクセスメモリ（ＳＲＡＭ）の一部が用いられる。しかし、スタック領域の記憶容量は有限の為、関数コールの増加などにより、記憶すべきアドレスのデータ量が増加し、スタック領域からあふれる場合がある。この場合、プログラムを実行する際に、一時的に、データを記憶するデータ領域などに、スタック領域に記憶されるべきアドレスのデータを記憶することが行われる。その結果、このデータ領域の記憶容量の一部がスタック領域に記憶されるべきアドレスのデータの記憶領域として割り当てられることになり、プログラムの実行に必要なデータ領域の記憶容量が侵食または減少する。この場合において、プログラムの実行に必要なデータが、スタック領域に記憶されるべきアドレスのデータによって書き換えられてしまうと、プログラムが正常に動作しなくなる虞もある。
【０００５】
特許文献１は、マスタ側コア、スレーブ側コアを有し、前記スレーブ側コアに異常を検出した場合には、前記マスタ側コアは、前記スレーブ側コアにより実行されるべき処理を代行するフェイルセーフ処理を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−２７４５６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１では、前記スレーブ側コアに異常を検出した場合には、前記マスタ側コアによりスレーブ側コアの処理を代行する前記フェイルセーフ処理を、固定の制御値を用いて実行する等して簡易的な演算方法としている。
【０００８】
この場合、フェイルセーフ処理への移行時に、センサ値やレンジ情報などの基本制御に必要なデータを前記スレーブ側コアより引き継がずに、前記マスタ側コアが前記フェイルセーフ処理を行う為、前記基本制御に必要なデータを最初から新たに演算処理を行い生成する必要がある。このことは、車両制御を行えない時間が発生してしまうことを意味する。
【０００９】
本発明は、上記課題に鑑みてなされたものであり、基本制御処理動作時において、マスタ側コアに異常を検出した場合に、スレーブ側コアによるフェイルセーフ処理を行う際に、前記基本制御に必要なデータを、マスタ側コアより引き継ぎ、円滑に制御の切り替えを行う技術を提供する。
【００１０】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１２】
すなわち、車載用制御装置は、基本制御処理部と、異常検知処理部と、フェイルセーフ処理制御部と、を備える。前記基本制御処理部は、基本制御を実行している際に基本制御に使用しているデータとスタック警告データをマスタ側コアとスレーブ側コアの両方よりアクセスできる共有記憶領域に格納する。前記異常検知処理部は、マスタ側コアのスタック領域の異常を検知する。前記フェイルセーフ処理制御部は、前記異常検知処理部にて異常を検出した時に前記基本制御処理部にて前記共有記憶領域に格納されたデータの内、正常に動作していた時のデータを使用してスレーブ側コアにてフェイルセーフ処理を行う。
【発明の効果】
【００１３】
本発明によれば、車両異常時の前記フェイルセーフ処理への移行処理を従来に比べて円滑に行うことを可能とする。
【００１４】
本発明に関連する更なる特徴は、本明細書の記述、添付図面から明らかになるものである。また、上記した以外の、課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１５】
【図１】本発明に係る車載用制御装置の構成の一例を示すブロック図である。
【図２】本発明に係るＣＰＵコアと各記憶領域へのアクセス方法を示すブロック図である。
【図３Ａ】マスタ側コアにより実行される基本制御処理部の処理フローを説明するための図である。
【図３Ｂ】マスタ側コアにより実行される異常検知処理部の処理フローを説明するための図である。
【図３Ｃ】スレーブ側コアにより実行されるフェイルセーフ処理制御部の処理フローを説明するための図である。
【図４】本発明に係るリングバッファの構成図である。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照して本発明の実施例について説明する。添付図面は本発明の原理に則った具体的な実施例を示しているが、これらは本発明の理解のためのものであり、決して本発明を限定的に解釈するために用いられるものではない。また、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。
【００１７】
以下の実施例は、車両の動作を制御する際に利用される、車載用ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）の中のマイコン動作時のスタック領域の異常時の動作モードの切り替えを行う技術に関する。
【００１８】
以下の実施例は、マスタ側コアにて主プログラムからサブプログラムを呼び出した時などに主プログラムへの戻り位置などを記憶するスタック領域に異常があるかをトリガとして、異常を検知したマスタ側コアに変わり、異常を検知したマスタ側コアの正常動作時の基本制御データをスレーブ側に引き継ぐ事で、円滑にフェイルセーフ制御への切り替えを行う事が可能となる。
【００１９】
図１は、本発明に係る車載用制御装置の構成の一例を示すブロック図である。車載用ＥＣＵ１００は、制御対象機器１３０を制御する装置であり、マイコン１１０を備える。マイコン１１０は、２つのＣＰＵコアとして、マスタ側コア１１１とスレーブ側コア１１２とを有する。以降において、マスタ側コア１１１とスレーブ側コア１１２とを総称して、ＣＰＵコアと称する。ＣＰＵコアは、共通バス１１３＿１により、第１記憶領域１２３、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２１に相互に接続される。マスタ側コア１１１はローカルバス１１３＿２により第２記憶領域１２２と接続される。また、スレーブ側コア１１２はローカルバス１１３＿２により第３記憶領域１２４と接続される。
【００２０】
第１記憶領域１２３、第２記憶領域１２２及び第３記憶領域１２３のおのおのは、マイコン１１０に内蔵された揮発性メモリ装置、例えば、スタチック型ランダムアクセスメモリ（ＳＲＡＭ）により構成することが出来る。第１記憶領域１２３は、グローバルＲＡＭとも呼ばれる記憶領域であり、マスタ側コア１１１とスレーブ側コア１１２との両方が共通に利用ないしアクセス可能な共有記憶領域とされる。第２記憶領域１２２は、ローカルＲＡＭとも呼ばれる記憶領域であり、マスタ側コア１１１が利用ないしアクセス可能な専用の記憶領域とされる。第３記憶領域１２３は、グローバルＲＡＭとも呼ばれる記憶領域であり、スレーブ側コア１１２が利用ないしアクセス可能な専用の記憶領域とされる。ＲＯＭ１２１は、マイコン１１０に内蔵された不揮発性メモリ装置、例えば、フラッシュメモリにより構成することが出来る。
【００２１】
ＣＰＵコア１１１、１１２は、ＲＯＭ１２１に格納されている制御プログラムの指示にしたがって、制御対象機器１３０に対する制御演算を実行する演算装置である。ＲＯＭ１２１は、ＣＰＵコア１１１、１１２が実行する制御プログラムを格納する記憶装置である。第１記憶領域１２３は、例えば、ＣＰＵコア１１１、１１２が制御プログラムを実行している間に用いる変数などのデータを格納する記憶装置である。また、第２記憶領域１２２と第３記憶領域１２４のおのおのにはマスタ側コア１１１とスレーブ側コア１１２のおのおののスタック領域などが記憶される。すなわち、第２記憶領域１２２と第３記憶領域１２４には、マスタ側コア１１１とスレーブ側コア１１２とで共有する必要のない変数などのデータを格納する記憶領域である。各記憶領域１２３、１２２、１２４の詳細な使用方法は図２にて説明する。
【００２２】
制御対象機器１３０は、任意の機器でよい。以下では、車両変速機用の制御装置の一例を説明するが、これに限定されない。制御対象機器１３０としては、図１に示されるように、アクチュエータ、他のコントロールユニット、センサ及びスイッチなどでもよい。
【００２３】
図２はＣＰＵコアと各記憶領域へのアクセス方法を示すブロック図である。図２に示されるように、第１記憶領域１２３には、プログラム制御用データ格納領域（第１データ格納領域）２３１と基本制御データ格納領域（第２データ格納領域）２３２とが割り当てられる。第２記憶領域１２２には、動作監視制御データ格納領域（第３データ格納領域）２２１とスタック領域１（第１スタック領域）２２２とが割り当てられる。また、第３記憶領域１２４には、動作監視制御データ格納領域（第４データ格納領域）２４１とスタック領域２（第２スタック領域）２４２とが割り当てられる。
【００２４】
マスタ側コア１１１は演算制御にて、主プログラムからサブプログラムを呼び出した時などに、主プログラムへの戻り位置を示すアドレスのデータなどをスタック領域１ ２２２に記憶する。また、スレーブ側コア１１２も、同様に、スタック領域をスタック領域２ ２４２に設定し演算処理を行う。
【００２５】
マスタ側コア１１１はＲＯＭ１２１に格納されている制御プログラムの指示にしたがって、車両走行制御及び、スレーブ側コア１１２の動作監視制御を行う。マスタ側コア１１１は車両走行制御を実行している間に用いる変数などのデータを第１記憶領域１２３のプログラム制御用データ格納領域２３１と基本制御データ格納領域２３２とに記憶する。また、マスタ側コア１１１はスレーブ側コア１１２の動作監視制御を行う為の変数などのデータを第２記憶領域１２２の動作監視制御データ格納領域２２１に記憶する。
【００２６】
スレーブ側コア１１２はＲＯＭ１２１に格納されている制御プログラムの指示にしたがって、マスタ側コア１１１によるスレーブ側コア１１２の動作監視制御と同様に、スレーブ側コア１１２によるマスタ側コア１１１の動作監視制御を行う。スレーブ側コア１１２は動作監視制御を行う為の変数などのデータを第３記憶領域１２４の動作監視制御データ格納領域２４１に記憶する。また、スレーブ側コア１１２は後述するスタックの異常時に動作するフェイルセーフ処理制御に用いる変数などのデータを第１記憶領域１２３のプログラムデータ格納領域２３１と基本制御データ格納領域２３２とに記憶する。
【００２７】
動作監視制御データ格納領域（２２１、２４１）を第１記憶領域１２３に設けない理由は、例えば、スレーブ側コア１１２の処理が暴走した際でも、機能安全を確保・維持させる為である。第１記憶領域１２３に動作監視制御データ格納領域（２２１、２４１）を設けた場合、暴走したスレーブ側コア１１２が動作監視制御データ格納領域に記憶しているデータを破壊する虞がある。この場合、マスタ側コア１１１によるスレーブ側コア１１２の動作監視制御が正常に動作しなくなる。第１記憶領域１２３に動作監視制御データ格納領域（２２１、２４１）を設けない事により、スレーブ側コア１１２の処理が暴走した場合でも、マスタ側コア１１１によるスレーブ側コア１１２の動作監視制御を正常に動作させることが可能である。同様に、マスタ側コア１１１の処理が暴走した場合でも、スレーブ側コア１１２によるマスタ側コア１１１の動作監視制御を正常に動作させることが可能である。
【００２８】
各ＣＰＵコア１１１、１１２にて行われる、車両走行制御やフェイルセーフ処理制御、各ＣＰＵコア１１１、１１２の動作監視処理制御を実行する際に、主プログラムからサブプログラムを呼び出した時などに主プログラムへの戻り位置を示すアドレスを記憶するスタック領域は、ＣＰＵコア１１１、１１２ごとに、スタック領域１ ２２２、スタック領域２ ２４２にそれぞれ記憶する。
【００２９】
マスタ側コア１１１による車両走行制御において、通常動作を行っている場合、主プログラムからサブプログラムを呼び出した時などに、主プログラムへの戻り位置を示すアドレスのデータなどはスタック領域１ ２２２からあふれることは無い。
【００３０】
ただし、制御プログラムの予期せぬソフト不具合や制御プログラムに対する悪意のあるデータ改ざん等により、主プログラムへの戻り位置を示すアドレスのデータがスタック領域１ ２２２から動作監視制御データ格納領域２２１にあふれることも考えられる。この状態は、スタックオーバーフローと呼ばれる。スタックオーバーフローの状態が発生すると、マスタ側コア１１１によりスレーブ側コア１１２の動作監視制御が実行された際に、主プログラムへの戻り位置を示すアドレスのデータが動作監視制御データにより上書きされ、プログラムが正常に動作しなくなる。
【００３１】
図３Ａは、マスタ側コアにより実行される基本制御処理部の処理フローを説明するための図である。図３Ｂは、マスタ側コアにより実行される異常検知処理部の処理フローを説明するための図である。図３Ｃは、スレーブ側コアにより実行されるフェイルセーフ処理制御部の処理フローを説明するための図である。
【００３２】
マスタ側コア１１１及びスレーブ側コア１１２により実行される制御プログラムは、図３Ａで示される基本制御処理部と、図３Ｂで示される異常検知処理部と、図３Ｃで示されるフェイルセーフ処理制御部とを有している。以下、図３Ａ、図３Ｂ、図３Ｃを用いて、前述のスタック領域１ ２２２から動作監視制御データ格納領域２２１にあふれた際に、スレーブ側コア１１２によるフェイルセーフ処理制御Ｓ３５１に移行する方法を説明する。
【００３３】
図３Ａ及び図３Ｂに示されるように、マスタ側コア１１１は、演算の際に、車両走行制御を行う為の基本制御タスクＳ３０１とスタック領域１ ２２２のスタック検知タスクＳ３２１とを処理する。また、図３Ｃに示されるように、スレーブ側コア１１２はフェイルセーフ処理制御を実行する。
【００３４】
マスタ側コア１１１及びスレーブ側コア１１２の動作説明を車両変速機用の制御装置ＥＣＵを例にして行う。
【００３５】
マスタ側コア１１１による基本制御タスクＳ３０１とスタック検知タスクＳ３２１はマイコン１１０に搭載されている機能であるフリーランカウンタによる割り込み処理にて定時処理で動作する。この際、スタック検知タスクＳ３２１は基本制御タスクＳ３０１より速い周期で動作し、基本制御タスクＳ３０１などの動作にてスタック領域１ ２２２へ記憶されるデータの量を監視する。これにより、スタック領域１ ２２２に異常が発生した場合、基本制御タスクＳ３０１などのタスク動作中に割り込んで、異常を検知する事が可能となる。なお、フリーランカウンタを用いて、スタック検知タスクＳ３２１を基本制御タスクＳ３０１より速い周期で動作させることは、当業者にとって容易に実施可能である。たとえば、同一ビット長の２つのフリーランカウンタを利用する場合、一方のフリーランカウンタのカウントクロックの周波数を、他方のフリーランカウンタのカウントクロックの周波数より低く設定する。これにより、他方のフリーランカウンタのオバーフロー割り込みの周期を、一方のフリーランカウンタのオバーフロー割り込みの周期より、速い周期とすることが可能である。
＜基本制御処理部＞
図３Ａを用いて、基本制御処理部を説明する。
【００３６】
（Ｓ３０１）：基本制御タスクＳ３０１では、車両の走行制御や異常検知処理などが実行される。
【００３７】
（Ｓ３０２）：Ｓ３０１の初めにおいて、図３Ｂに示されるスタック検知タスクＳ３２１によりプログラム制御用データ格納領域２３１に格納されるスタック警告フラグ（スタック警告データ）の有無を確認し、スタック警告フラグがセットされている（有）か、セットされていない（無）かの判断を行う。
【００３８】
（Ｓ３０３）：（Ｓ３０２）にてスタック警告フラグが無し（ＮＯ）と判断された場合、車両走行制御などＳ３０３の処理を実行する。
【００３９】
（Ｓ３０４）：車両走行制御などＳ３０３にて使用した基本走行制御に必要な油圧制御をする為の各種アクチュエータ１３０及びレンジ情報などのセンサ及びスイッチ１３０などの入出力データや、他コントロールユニット１３０より送信されてくるエンジン回転数やブレーキ動作といった情報を図４に示すリングバッファ４００の基本制御データ格納領域４０１に順次格納していく。同時に、（Ｓ３０２）で得られたスタック警告フラグの情報も、リングバッファ４００のスタック異常検知フラグ格納領域４０２に順次格納する。リングバッファ４００は図２に示す基本制御データ格納領域２３２に設けられる記憶領域である。リングバッファ４００へのデータの格納は”n“個までデータを格納した次の周期では、最初の格納領域である”０“番に戻りデータを格納していく。
【００４０】
リングバッファ４００の構成は以下とされている。図４において、番号Ｎｏ．はリングバッファ４００に設けられたバッファ領域の番号を示しており、この番号はデータの格納の順番を示す番号の意味合いも含む。すなわち、最初のデータ（基本制御データ０及びスタック異常検知フラグ０）は”０“番のバッファ領域に格納される。次のデータ（基本制御データ１およびスタック異常検知フラグ１）は”１“番のバッファ領域に格納される。その次のデータ（基本制御データ２及びスタック異常検知フラグ２）は”２“番のバッファ領域に格納される。その次のデータ（基本制御データｎ及びスタック異常検知フラグｎ）は”ｎ“番のバッファ領域に格納される。図４には記載されていないが、その次のデータ（基本制御データｎ＋１およびスタック異常検知フラグｎ＋１）は再度”０“番のバッファ領域に格納され、その次のデータ（基本制御データｎ＋２及びスタック異常検知フラグｎ＋２）は再度”１”番のバッファ領域に格納される。このように、データの格納は、バッファ領域をリング状に順次変更しながら実施される。なお、図４に示されるように、基本制御データは、例示として、基本制御データｎ[データＡｎ、データＢｎ・・・]（ｎ＝０、１、２、ｎ）としている。
【００４１】
（Ｓ３０４）の後、再度、（Ｓ３０１）として割り込み処理による定時処理を待つ状態となる。
【００４２】
（Ｓ３０５）：（Ｓ３０２）により、スタック警告フラグが有り（ＹＥＳ）と判断された場合、スタック領域１ ２２２に異常が発生していると判断し、基本制御タスクを終了する。
＜異常検知処理部＞
図３Ｂを用いて、異常検知処理部を説明する。
【００４３】
（Ｓ３２１）：スタック検知タスクＳ３２１ではスタック領域１ ２２２へ記憶されるデータの量を監視し、異常が発生した場合にスタック警告フラグをセットする処理が実行される。
【００４４】
（Ｓ３２２）：スタック量計測Ｓ３２２では、例えば、マイコン１１０の機能によりセットされる次にプログラムが動作するべき主プログラムへの戻り位置を示すアドレスのデータがどれかを示すスタックポインタの値を監視し、現在スタック領域１ ２２２がどの程度使用されているかを計測する。
【００４５】
これは、制御の初期化時に改めスタック領域を任意の値（例えば、１６進で、ＦＦの値）などで埋め尽くし、主プログラムへの戻り位置を示すアドレスのデータなどにより、スタック領域１ ２２２の内容がＦＦで無くなった箇所までを測定する方法としても良い。
【００４６】
（Ｓ３２３）：スタック量計測Ｓ３２２で測定したスタック量が改め任意の値で設定する閾値を越えるかどうかを判定する。閾値はスタック領域１ ２２２よりも小さい値で設定し、スタック領域１ ２２２に異常が発生した場合でも、動作監視制御データ格納領域２４１への侵食が発生しないようにする。スタック量が閾値を超えていない場合、何もせず次の周期動作を待つ。
【００４７】
（Ｓ３２４）：（Ｓ３２３）によりスタック量が任意の閾値を超えたと判断された場合、スタック警告フラグをセットする。スタック警告フラグはプログラム制御用データ格納領域２３１に格納する。
【００４８】
（Ｓ３２４）の後、再度、（Ｓ３２１）として割り込み処理による定時処理を待つ状態となる。
＜フェイルセーフ処理制御部＞
スレーブ側コア１１２によるフェイルセーフ処理制御Ｓ３５１も、マスタ側コア１１１による基本制御タスクＳ３０１とスタック検知タスクＳ３２１と同様に、マイコン１１０に搭載されている機能であるフリーランカウンタによる割り込み処理にて定時処理で動作する。
【００４９】
図３Ｃを用いて、フェイルセーフ処理制御部を説明する。
【００５０】
（Ｓ３５１）：フェイルセーフ処理制御Ｓ３５１はスタック検知タスクＳ３２１にてスタック警告フラグがセットされた場合、リングバッファ４００に格納された異常が発生していない時の基本制御データを読み出し、異常時の走行制御を行う。これにより、基本制御タスクＳ３０１より各種制御データを引き継ぎ円滑に制御の切り替えを行う
（Ｓ３５２）：フェイルセーフ処理制御Ｓ３５１の初めにスタック検知タスクＳ３２１により格納されるスタック警告フラグの有無を確認し、スタック警告フラグがセットされているかいないかの判断を行う。スタック警告フラグが無し（ＮＯ）の場合、何もせず次の周期動作を待つ。
【００５１】
（Ｓ３５３）：（Ｓ３０２）にてスタック警告フラグが有り（ＹＥＳ）と判断された場合、スタック警告フラグがはじめてセットされたかどうか（初回動作かどうか）の判断を行う。
【００５２】
（Ｓ３５５）：（Ｓ３５３）にて初回動作と判断された場合、基本制御データ格納領域２３２に格納されたリングバッファ４００のデータを取得する。その際、リングバッファ４００には基本制御データと共にスタック異常検知フラグが格納されている為、最新の情報から過去のデータに向けて順次参照を開始し、スタック異常検知フラグがセットされていない箇所のデータ（基本制御データ）を異常時走行制御の初回値としてセットする。また、マスタ側コア１１１により動作を制御されていた各種アクチュエータ１３０及びセンサ及びスイッチ１３０、他コントロールユニット１３０との通信制御をスレーブ側コア１１２で動作可能なように設定を変更する。
【００５３】
（Ｓ３５４）：異常時走行制御Ｓ３５４では、燃費向上のために作動するロックアップ機構の制御処理や坂道などでの速度低下（上昇）を予測してギア比を変更する処理などを省き、スタックの消費量がある一定の値までしか使わない用に設計した制御にて車両制御を行う。すなわち、初回動作にて正常時のデータを使用して、事前に処理負荷が低く、異常が発生しないように設計された異常時走行制御処理へ移行する。ここで、初回制御で使用するデータは（Ｓ３５５）により正常に走行した時の最新のデータとなっている為、円滑に制御の切り替えが可能となる。
【００５４】
（Ｓ３５２及びＳ３５４）の後、再度、（Ｓ３５１）として割り込み処理による定時処理を待つ状態となる。
【００５５】
なお、上記の実施例ではリングバッファ４００の最新データ判断をスタック異常検知フラグの有無としたが、スタック領域の使用量が異常に大きくなっている場合、各タスクの実行時間も増加しているため、リングバッファに各タスクの実行時間を記憶し、そのデータを持って正常データかどうか判断しても良い。
【００５６】
上述の実施例において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【００５７】
１００：車載用制御装置
１１０：マイクロコンピュータ
１１１：マスタ側コア
１１２：スレーブ側コア
１１３：バス
１２１：ＲＯＭ
１２２：第２記憶領域（ローカルＲＡＭ）
１２３：第１記憶領域（共有記憶領域、グローバルＲＡＭ）
１２４：第３記憶領域（ローカルＲＡＭ）
１３０：制御対象機器
２２１：動作監視制御データ格納領域
２２２：スタック領域１
２３１：プログラム制御用データ格納領域
２３２：基本制御データ格納領域
２４１：動作監視制御データ格納領域
２４２：スタック領域２
【図１】
2018165873.tif 000003
【図２】
2018165873.tif 000004
【図３Ａ】
2018165873.tif 000005
【図３Ｂ】
2018165873.tif 000006
【図３Ｃ】
2018165873.tif 000007
【図４】
2018165873.tif 000008