(57)【要約】【課題】車両用電子制御装置においてプロセッサの再起動を行うときに、当該プロセッサを動作状態に応じた適切な状態とする。【解決手段】第１コア３１及び第２コア３２を備えた車両用電子制御装置において、第１コア３１が、自装置の動作状態を示す第１コア動作情報４１を第２コア３２に伝送する。第２コア３２は、第１コア動作情報４１の伝送状況に基づき第１コア起動モードを決定する。そして、第２コア３２は、第１コア３１が再起動を行うときに、第１コア起動モード指示情報４２を第１コア３１に伝送し、第１コアは、これに基づいて起動モードを選択する。同様に、第１コア３１は、第２コア３２の動作情報４３の伝送状況に基づいた第２コア起動モード指示情報４４を決定して第２コア３２に伝送し、第２コア３２は、これに基づいて起動モードを選択する。【選択図】図２
2014186454.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを備えた車両用電子制御装置において、
前記複数のプロセッサのうち１つのプロセッサが、自装置の動作状態を示す動作情報を他のプロセッサに伝送し、
前記１つのプロセッサが再起動を行うときに、前記他のプロセッサが、前記１つのプロセッサからの動作情報の伝送状況に応じた起動モードの指示情報を前記１つのプロセッサに伝送する、車両用電子制御装置。
【請求項２】
前記他のプロセッサが複数であり、
前記１つのプロセッサが、複数の前記他のプロセッサから夫々伝送された複数の起動モードの指示情報に基づいて自装置の起動モードを選択する、請求項１記載の車両用電子制御装置。
【請求項３】
少なくとも前記他のプロセッサからの動作情報の伝送状況に基づいて前記他のプロセッサの動作状態を監視し、前記他のプロセッサの動作状態が異常であるときに前記複数のプロセッサ全体に対してリセットを行う機能を備えた外部監視装置をさらに備え、
前記他のプロセッサは、前記１つのプロセッサの動作状態が異常であるときに、前記外部監視装置に対する動作情報の伝送を停止する又は前記外部監視装置に対して自装置の動作状態が異常であることを示す動作情報を伝送する、請求項１又は２記載の車両用電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両用電子制御装置におけるプロセッサの動作監視技術に関する。
【背景技術】
【０００２】
車両用電子制御装置のマイクロコンピュータ（以下、マイコンという）では、様々な要因によりプロセッサの動作に異常が発生することがある。このような異常発生に対応する技術として、例えば特許文献１には、複数のマイコンが相互監視をしながら動作するシステムにおいて、一方のマイコンに異常が発生してリセットが行われたときに、正常に動作しているマイコン内部に実装した代替の監視機能により当該マイコンの監視を実行する技術について記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１１／１１４４９３号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、例えば複数のプロセッサ間において動作状態の相互監視ができたとしても、いずれかのプロセッサに異常が発生し、当該プロセッサがリセットされて再起動を行う場合、プロセッサの動作状態によっては必ずしも正常に起動できるとは限らない。このため、異常が発生したプロセッサが、リセット後に再起動しても再びリセットを繰り返す等の問題が発生することがあった。
【０００５】
本発明は上記問題点に鑑みなされたものであり、車両用電子制御装置においてプロセッサの再起動を行うときに、当該プロセッサを動作状態に応じた適切な状態とすることを目的とする。
【課題を解決するための手段】
【０００６】
そのため、本願発明は、複数のプロセッサを備えた車両用電子制御装置において、前記複数のプロセッサのうち１つのプロセッサが、自装置の動作状態を示す動作情報を他のプロセッサに伝送し、前記１つのプロセッサが再起動を行うときに、前記他のプロセッサが、前記１つのプロセッサからの動作情報の伝送状況に応じた起動モードの指示情報を前記１つのプロセッサに伝送するようにした。
【発明の効果】
【０００７】
上記発明によると、車両用電子制御装置においてプロセッサの再起動を行うときに、当該プロセッサを動作状態に応じた適切な状態とすることが可能になる。
【図面の簡単な説明】
【０００８】
【図１】実施形態における電子制御装置の構成の一例を示すブロック図である（実施例１）。
【図２】実施形態における電子制御装置で伝送される情報及び処理の概要の一例を示す説明図である（実施例１）。
【図３】実施形態における動作状態の判定方式の例を示す説明図である（実施例１）。
【図４】実施形態における動作状態の判定方式における信号やデータの具体例を示す説明図である（実施例１）。
【図５】実施形態における動作情報伝送処理及び動作状態判定処理の一例を示すフローチャートである（実施例１）。
【図６】実施形態における起動モード指示処理及び起動モード選択処理の一例を示すフローチャートである（実施例１）。
【図７】実施形態における電子制御装置の構成の一例を示すブロック図である（実施例２）。
【図８】実施形態における電子制御装置で伝送される情報及び処理の概要の一例を示す説明図である（実施例２）。
【図９】実施形態における起動モード選択処理の一例を示すフローチャートである（実施例２）。
【図１０】実施形態における電子制御装置で伝送される情報及び処理の概要の一例を示す説明図である（実施例３）。
【図１１】実施形態における動作状態判定処理の一例を示すフローチャートである（実施例３）。
【図１２】実施形態における電子制御装置の構成の一例を示すブロック図である（実施例１の変形例）。
【発明を実施するための形態】
【０００９】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
［実施例１］
〔１．電子制御装置の構成〕
図１は、本実施例における車両用の電子制御装置の構成の一例を示すブロック図である。
【００１０】
電子制御装置１は、車両に搭載された各種装置（例えば、エンジン、自動変速機、燃料ポンプ等）をマイコン２によって電子制御する装置である。マイコン２は、マルチコアのＣＰＵ３（Central Processing Unit）を備え、ＣＰＵ３内ではプロセッサコアである第１コア３１及び第２コア３２が動作している。なお、本明細書において「プロセッサ」とは、ソフトウェアプログラムを実行するハードウェアの総称であり、例えばＣＰＵ自体を指す場合とプロセッサコアを指す場合とがあるものとする。本実施例では、第１コア３１及び第２コア３２がそれぞれプロセッサの一例である。
【００１１】
また、マイコン２は、第１コア３１及び第２コア３２の両方からアクセス可能なＲＡＭ（Random Access Memory）４、ＥＥＰＲＯＭ５、ＲＯＭ（Read Only Memory）６及びインタフェース（Ｉ／Ｆ）７を備える。第１コア３１及び第２コア３２が相互にバス（信号線）で接続されるとともに、第１コア３１及び第２コア３２の夫々とＲＡＭ４、ＥＥＰＲＯＭ５、ＲＯＭ６及びインタフェース７がバスで相互に接続されている。
【００１２】
ＲＡＭ４は揮発性メモリの一例であり、第１コア３１及び第２コア３２による共有メモリである。なお、本実施例では、第１コア３１及び第２コア３２が、かかる共有メモリに情報（データ）を格納してその情報を共有することによって各種情報の受け渡しを行う構成とするが、例えば、第１コア３１及び第２コア３２がバスを介した通信によって各種データの受け渡しを行うことも可能である（他の実施例でも同様である）。ここで、本明細書における、情報の「伝送」という文言は、共有メモリ等を用いた情報の受け渡しとバス等を用いた通信による情報の受け渡しとの両方を含むものとする。
【００１３】
ＥＥＰＲＯＭ５は、不揮発性メモリの一例であって、書き替え可能であり且つ電源遮断後でも記録内容を保持可能な記憶手段である。ＲＯＭ６は、第１コア３１及び第２コア３２が実行する各種プログラム等を格納する。なお、本実施例では、第１コア３１及び第２コア３２が１つのＥＥＰＲＯＭ５及び１つのＲＯＭ６を用いるハードウェア構成としているが、例えば、第１コア３１及び第２コア３２がそれぞれ別個のＥＥＰＲＯＭ５やＲＯＭ６を用いるハードウェア構成としてもよい（他の実施例でも同様である）。インタフェース７は、電子制御装置１による制御対象装置や表示装置等との間で、各種情報を送受信する。
【００１４】
さらに、電子制御装置１は、第１コア３１の動作を監視する外部監視回路８を備える。この外部監視回路８は、動作信号（例えばＰ−ＲＵＮ（プログラムラン）信号等）を第１コア３１から受信し、ウォッチドッグタイマ（図示省略）によって第１コア３１の動作を監視する。そして、例えば第１コア３１からの動作信号が停止するなど、第１コア３１の動作が異常であることを検出すると、マイコン２のＣＰＵ３に異常が発生しているものとして、ＣＰＵ３をリセットする機能を備えている。
【００１５】
〔２．第１コア及び第２コア間で伝送される情報及び処理の概要〕
次に、第１コア３１及び第２コア３２で伝送される情報及び処理の概要について、図２を参照しながら説明する。なお、図２では説明の都合上、ＥＥＰＲＯＭ５を２箇所に分けて図示している。また、外部監視回路８等については図示を省略している。
【００１６】
まず、第１コア３１の動作状態に応じた起動モードを第２コア３２が第１コア３１に指示し、第１コア３１がこれに基づいて起動モードを選択する処理について説明する。なお、本明細書において「起動モード」とは、プロセッサが起動する際における動作設定であり、これにはプロセッサの起動自体をさせずに強制停止させることも含まれる。
【００１７】
第１コア３１は、第１コア３１の動作情報伝送処理３１１を行う。具体的には、第１コア３１は、第１コア３１の動作状態を示す（その伝送状況により第１コアの動作状態を判定するのに用いることが可能である）第１コア動作情報４１をＲＡＭ４に格納する。換言すれば、第１コア３１は、第１コア動作情報４１を第２コア３２に伝送する。
【００１８】
一方、第２コア３２は、第１コア３１の動作状態判定処理３２１を行う。具体的には、第２コア３２は、第１コア３１がＲＡＭ４に格納した第１コア動作情報４１を読み出すことで、第１コア３１から伝送された第１コア動作情報４１を受け取り、第１コア動作情報４１の伝送状況に基づいて、第１コア３１の動作状態を判定する（なお、動作状態の具体的な判定方法については後述する）。そして、第２コア３２は、第１コア３１の動作状態の判定結果に基づいて第１コア３１の起動モードを決定し、第１コア３１の起動モードを示す第１コア起動モード情報５１をＥＥＰＲＯＭ５に格納（バックアップ）する。
【００１９】
そして、次回に例えば第１コア３１に対してリセットがかけられ、第１コア３１が再起動するとき（リセットから復帰するとき）に、第２コア３２は、第１コア３１の起動モード指示処理３２２を行う。なお、本明細書において、「再起動」とは、意図せぬリセットからの復帰時の起動や意図的な起動等、いったん動作していたプロセッサを再び起動する場合の全てを含むものとする。具体的には、第２コア３２は、ＥＥＰＲＯＭ５にバックアップした第１コア起動モード情報５１を読み出し、当該第１コア起動モード情報５１に基づいて、第１コア３１の起動モードを選択する。さらに、第２コア３２は、選択した起動モードを示す第１コア起動モード指示情報４２を、ＲＡＭ４に格納する。換言すれば、第２コア３２は、第１コア起動モード指示情報４２を第１コア３１に伝送する。
【００２０】
一方、第１コア３１は、第１コア３１の起動モード選択処理３１２を行う。具体的には、第１コア３１は、第２コア３２がＲＡＭ４に格納した第１コア起動モード指示情報４２に基づいて、起動モードを選択する。
【００２１】
第２コア３２の動作状態に応じた起動モードを第１コア３１が第２コア３２に指示し、第２コア３２がこれに基づいて起動モードを選択する処理も、前述した処理と原則として同様である。
第２コア３２は、第２コア３２の動作情報伝送処理３２３を行い、第２コア動作情報４３をＲＡＭ４に格納する。
【００２２】
一方、第１コア３１は、第２コア３２の動作状態判定処理３１３を行い、第２コア３２の起動モードを示す第２コア起動モード情報５２をＥＥＰＲＯＭ５に格納する。
そして、次回に例えば第２コア３２に対してリセットがかけられ、第２コア３２が再起動するときに、第１コア３１は、第２コア３２の起動モード指示処理３１４を行い、第２コア起動モード指示情報４４をＲＡＭ４に格納する。
一方、第２コア３２は、第２コア３２の起動モード選択処理３２４を行う。
【００２３】
〔３．プロセッサの動作状態の判定方法の詳細〕
ここで、第１コア３１及び第２コア３２が行う動作状態判定処理において、相手側プロセッサの動作状態を、動作情報の伝送状況に基づいて判定する方式の具体例について、図３を参照しながら説明する。また、図４は、各判定方式において用いる信号やデータの具体例を示す。なお、ここでは、第１コア３１の動作状態を第２コア３２で判定する例を示して説明するが、第２コア３２の動作状態を第１コア３１で判定する場合も同様である。
【００２４】
（例１：Ｐ−ＲＵＮ方式）第１コア３１の信号生成部３１Ａは、Ｐ−ＲＵＮ信号を第２コア３２に継続的に伝送する。第２コア３２の信号解析部３２Ａでは受信したＰ−ＲＵＮ信号を解析し、異常判定部３２Ｂでは、Ｐ−ＲＵＮ信号が反転している（例えば一定時間以内において反転している）ことを以って、第１コア３１が正常に動作していると判定することができる。このＰ−ＲＵＮ方式では、例えば図４に示すように、第１コア３１から送信されるＰ−ＲＵＮ信号が「０」と「１」との反転を繰り返していることで、第１コア３１が正常に動作していると判定することができる。
【００２５】
（例２：クロック方式）第１コア３１のデータ生成部３１Ｂは、データ（クロック）を第２コア３２に継続的に伝送する。第２コア３２のデータ受信部３２Ｃでは当該クロックを受信し、異常判定部３２Ｄでは、この受信したクロックによって、第１コア３１が正常に動作していると判定することができる。このクロック方式では、例えば図４に示すように、第１コア３１から送信されるクロックが正常にインクリメントされていることで、第１コア３１が正常に動作していると判定することができる。
【００２６】
（例３：例題演算方式）第２コア３２の出題部３２Ｅは、データテーブル３２Ｇに格納された値（ｘ，ｙ）を用いて、演算の例題（ｘ１，ｙ１）を第１コア３１に伝送する。第１コア３１の例題演算部３１Ｃでは、例題内容について演算し、回答部３１Ｄが、演算結果の回答（ans）を第２コア３２に伝送する。第２コア３２の異常判定部３２Ｆでは、演算結果が正しい（データテーブル３２Ｇの回答（ans）と一致している）ことを以って、第１コア３１が正常に動作していると判定することができる。第１コア３１及び第２コア３２は、この処理を継続的に繰り返す。この例題演算方式では、例えば図４に示すように、第２コア３２から送信された［ｘ＋ｙ］の例題（ｘ＝１２，ｙ＝６）に対して第１コア３１が返信した回答（ans =１８）が正しいことを以って、第１コア３１が正常に動作していると判定することができる。
なお、プロセッサの動作状態の判定方法はこれらの具体例に限定されず、いかなる方法であってもよい。
【００２７】
〔４．第１コア及び第２コアで実行される処理の詳細〕
次に、第１コア３１及び第２コア３２で実行される処理について、図５及び図６に示すフローチャートを参照しながら説明する。
【００２８】
（４．１．動作情報伝送処理及び動作状態判定処理）
まず、図５において破線で囲われたブロックの処理、すなわち、第１コア３１が実行する第１コア３２の動作情報伝送処理３１１及び第２コア３２が実行する第１コア３１の動作状態判定処理３２１について説明する。当該処理により、第１コア３１の動作状態に応じた起動モードが第２コア３２によって選択され、ＥＥＰＲＯＭ５に格納される。当該処理は、例えば所定時間毎に継続的に実行される。
【００２９】
（第１コアが実行する第１コアの動作情報伝送処理）
ステップＳ１０１で、第１コア３１は、第２コア３２へ渡す第１コア動作情報４１を決定する。なお、動作情報の具体例については前述したとおりである。
ステップＳ１０２で、第１コア３１は、第２コア３２に第１コア動作情報４１を渡す。具体的には、第１コア３１は、ＲＡＭ４に第１コア動作情報４１を格納することにより、第２コア３２に第１コア動作情報４１を伝送する。
【００３０】
（第２コアが実行する第１コアの動作状態判定処理）
ステップＳ２０１で、第２コア３２は、第１コア動作情報４１をＲＡＭ４から読み出す。
ステップＳ２０２で、第２コア３２は、第１コア動作情報４１の伝送状況に基づき、第１コア３１の動作状態を判定する。第１コア３１の動作状態が正常な場合はステップＳ２０３に進み、軽度の異常であると判定した場合（例えば、第１コア動作情報４１の伝送が不規則に正常でない状態になり、動作状態が不安定な場合など）はステップＳ２０４に進み、重度の異常であると判定した場合（例えば第１コア動作情報４１の伝送自体が停止されている場合など）はステップＳ２０５に進む。なお、動作状態が軽度の異常か重度の異常かの判定基準については、例えば、動作情報が正常に伝送される回数が所定回数（又は所定時間）連続しているか否かなどの基準を用いることができる。
【００３１】
ステップＳ２０３で、第２コア３２は、第１コア３１の起動モードを、通常制御で起動を行う起動モードＡにすることを決定する。
ステップＳ２０４で、第２コア３２は、第１コア３１の起動モードを、より安全にプログラムを実行させる起動モードＢにすることを決定する。なお、このような起動モードとしては、例えば、優先順位の低い機能（例えば、学習制御や診断処理等）を一部制限させて、プログラムを実行するプロセッサの負荷を軽減する起動モードなどがある。また例えば、フェールセーフ制御を行う起動モードとしてもよい。
【００３２】
ステップＳ２０５で、第２コア３２は、第１コア３１の起動モードを、起動モードＢよりもさらに安全にプログラムを実行させる起動モードＣ（例えば、プログラムを実行するために最小限必要なドライバ等を有効にして起動を行うなど、プロセッサの負荷をさらに軽減するモード）にすることを決定する。
ステップＳ２０６で、第２コア３２は、ステップＳ２０３〜ステップＳ２０５のいずれかで選択した第１コア３１の起動モードを示す第１コア起動モード情報５１を、ＥＥＰＲＯＭ５に格納する。
【００３３】
次に、図５において一点鎖線で囲われたブロックの処理、すなわち、第２コア３２が実行する第２コア３２の動作情報伝送処理３２３及び第１コア３１が実行する第２コア３２の動作状態判定処理３１３について説明する。当該処理も、前述した第１コア３１の動作情報伝送処理３１１及び第１コア３１の動作状態判定処理３２１と同様である。第２コア３２の動作状態に応じた起動モードが第１コア３１によって選択され、ＥＥＰＲＯＭ５に格納される。当該処理は、例えば所定時間毎に継続的に実行される。
【００３４】
（第２コアが実行する第２コアの動作情報伝送処理）
ステップＳ３０１で、第２コア３２は、第１コア３１へ渡す第２コア動作情報４３を決定する。
ステップＳ３０２で、第２コア３２は、第１コア３１に第２コア動作情報４３を渡す。具体的には、第２コア３２は、ＲＡＭ４に第２コア動作情報４３を格納することにより、第１コア３１に第２コア動作情報４３を伝送する。
【００３５】
（第１コアが実行する第２コアの動作状態判定処理）
ステップＳ４０１で、第１コア３１は、第２コア動作情報４３をＲＡＭ４から読み出す。
ステップＳ４０２で、第１コア３１は、第２コア動作情報４３の伝送状況に基づき、第２コア３２の動作状態を判定する。第２コア３２の動作状態が正常な場合はステップＳ４０３に進み、軽度の異常であると判定した場合はステップＳ４０４に進み、重度の異常であると判定した場合はステップＳ４０５に進む。
【００３６】
ステップＳ４０３で、第１コア３１は、第２コア３２の起動モードを、起動モードＡにすることを決定する。
ステップＳ４０４で、第１コア３１は、第２コア３２の起動モードを、起動モードＢにすることを決定する。
ステップＳ４０５で、第１コア３１は、第２コア３２の起動モードを、起動モードＣにすることを決定する。
ステップＳ４０６で、第１コア３１は、ステップＳ４０３〜ステップＳ４０５のいずれかで選択した第２コア３２の起動モードを示す第２コア起動モード情報５２を、ＥＥＰＲＯＭ５に格納する。
【００３７】
（４．２．起動モード指示処理及び起動モード選択処理）
まず、図６において破線で囲われたブロックの処理、すなわち、第２コア３２が実行する第１コア３１の起動モード指示処理３２２及び第１コア３１が実行する第１コア３１の起動モード選択処理３１２について説明する。当該処理により、第１コア３１の動作状態に応じた起動モードが第２コア３２から第１コア３１に指示され、第１コア３１において選択される。当該処理は、第１コア３１が再起動されるときに実行される。
【００３８】
（第２コア３２が実行する起動モード指示処理）
ステップＳ５０１で、第２コア３２は、動作状態判定処理３２１においてＥＥＰＲＯＭ５に格納した第１コア起動モード情報５１を読み出す。
ステップＳ５０２で、第２コア３２は、第１コア起動モード情報５１に基づき、第１コア３１の起動モードを判定する。第１コア起動モード情報が、起動モードＡである場合はステップＳ５０３に進み、起動モードＢである場合はステップＳ５０４に進み、起動モードＣである場合にはステップＳ５０５に進む。
【００３９】
ステップＳ５０３で、第２コア３２は、起動モードＡを示す第１コア起動モード指示情報４２をＲＡＭ４に格納することで、第１コア３１に対して起動モードの指示を行う。
ステップＳ５０４で、第２コア３２は、起動モードＢを示す第２コア起動モード指示情報４２をＲＡＭ４に格納することで、第１コア３１に対して起動モードの指示を行う。
ステップＳ５０５で、第２コア３２は、起動モードＣを示す第２コア起動モード指示情報４２をＲＡＭ４に格納することで、第１コア３１に対して起動モードの指示を行う。
【００４０】
（第１コア３１が実行する起動モード選択処理）
ステップＳ６０１で、第１コア３１は、第２コア３２によって格納された第１コア起動モード指示情報４２をＲＡＭ４から読み出す。
ステップＳ６０２で、第１コア３１は、第１コア起動モード指示情報４２に基づき、第１コア３１の起動モードを判定する。第１コア起動モード指示情報４２が、起動モードＡである場合はステップＳ６０３に進み、起動モードＢである場合はステップＳ６０４に進み、起動モードＣである場合にはステップＳ６０５に進む。
【００４１】
ステップＳ６０３で、第１コア３１は、起動モードＡを選択する。
ステップＳ６０４で、第１コア３１は、起動モードＢを選択する。
ステップＳ６０５で、第１コア３１は、起動モードＣを選択する。
【００４２】
次に、図６において一点鎖線で囲われたブロックの処理、すなわち、第１コア３１が実行する第２コア３２の起動モード指示処理３１４及び第２コア３２が実行する第２コア３２の起動モード選択処理３２４について説明する。当該処理も、前述した第１コア３１の起動モード指示処理３２２及び第１コア３１の起動モード選択処理３１２と同様である。当該処理により、第２コア３２の動作状態に応じた起動モードが第１コア３１から第２コア３２に指示され、第２コア３２において選択される。当該処理は、第２コア３２が再起動されるときに実行される。
【００４３】
（第１コアが実行する起動モード指示処理）
ステップＳ７０１で、第１コア３１は、動作状態判定処理３１３においてＥＥＰＲＯＭ５に格納した第１コア起動モード情報５２を読み出す。
ステップＳ７０２で、第１コア３１は、第２コア起動モード情報５２に基づき、第２コア３２の起動モードを判定する。第２コア起動モード情報５２が、起動モードＡである場合はステップＳ７０３に進み、起動モードＢである場合はステップＳ７０４に進み、起動モードＣである場合にはステップＳ７０５に進む。
【００４４】
ステップＳ７０３で、第１コア３１は、起動モードＡを示す第１コア起動モード指示情報４４をＲＡＭ４に格納することで、第２コア３２に対して起動モードの指示を行う。
ステップＳ７０４で、第１コア３１は、起動モードＢを示す第１コア起動モード指示情報４４をＲＡＭ４に格納することで、第２コア３２に対して起動モードの指示を行う。
ステップＳ７０５で、第１コア３１は、起動モードＣを示す第１コア起動モード指示情報４４をＲＡＭ４に格納することで、第２コア３２に対して起動モードの指示を行う。
【００４５】
（第２コアが実行する起動モード選択処理）
ステップＳ８０１で、第２コア３２は、第１コア３１によって格納された第２コア起動モード指示情報４４をＲＡＭ４から読み出す。
ステップＳ８０２で、第２コア３２は、第２コア起動モード指示情報４４に基づき、第２コア３２の起動モードを判定する。第２コア起動モード指示情報４４が、起動モードＡである場合はステップＳ８０３に進み、起動モードＢである場合はステップＳ８０４に進み、起動モードＣである場合にはステップＳ８０５に進む。
【００４６】
ステップＳ８０３で、第２コア３２は、起動モードＡを選択する。
ステップＳ８０４で、第２コア３２は、起動モードＢを選択する。
ステップＳ８０５で、第２コア３２は、起動モードＣを選択する。
【００４７】
〔５．本実施例による効果等〕
本実施例によれば、第１コア３１及び第２コア３２は相互に相手プロセッサの動作状態を監視し、相手プロセッサが再起動を行うときには、相手プロセッサの動作状態に応じた適切な起動モードを相手プロセッサに指示することができる。このため、第１コア３１及び第２コア３２はいずれも、動作状態に応じた適切な起動モードで再起動することができ、再起動後にリセットが繰り返し生じるなどの状態の発生を抑制することができる。
【００４８】
また、第１コア３１及び第２コア３２が、相手プロセッサの動作状態に応じた起動モードをＥＥＰＲＯＭ５に格納しておくことで、例えば第１コア３１に対して外部監視回路８によってリセットがかけられた後においても、第２コア起動モード情報５２が消去されずに維持される。第２コア３２において意図せぬリセットがかかった場合でも、第１コア起動モード情報５１が消去されずに維持される。
なお、本実施例における各処理は、前述した電子制御装置１の構成のみならず、例えば外部監視回路８がない構成においても実現することが可能である。
【００４９】
［実施例２］
実施例２では、メインプロセッサとして機能する１つのプロセッサが複数のプロセッサとの間で相互に処理を行う構成について説明する。
以下、実施例１と同様の内容については原則として説明を省略する。
【００５０】
〔１．電子制御装置の構成〕
図７は、本実施例における車両用の電子制御装置の一例を示すブロック図である。
電子制御装置１のマイコン２は、マルチコアのＣＰＵ３を備え、ＣＰＵ３内ではメインプロセッサである第１コア３１が動作するとともに、第２コア３２、第３コア３３及び第４コア３４が動作している。
【００５１】
また、マイコン２は、第１コア３１、第２コア３２、第３コア３３及び第４コア３４からアクセス可能なＲＡＭ４、ＥＥＰＲＯＭ５及びＲＯＭ６を備える。ＲＡＭ４は、第１コア３１、第２コア３２、第３コア３３及び第４コア３４による共有メモリである。さらにマイコン２は、ＥＥＰＲＯＭ５及びＲＯＭ６を備える。また、電子制御装置１は、第１コア３１の動作を監視する外部監視回路８を備える。これらの各構成要素は図７に示すように相互にバスで接続されている。
【００５２】
〔２．第１コア及び第２コア〜第４コア間で伝送される情報及び処理の概要〕
次に、第１コア３１並びに第２コア３２、第３コア３３及び第４コア３４で伝送される情報及び処理の概要について、図８を参照しながら説明する。なお、外部監視回路８等については図示を省略している。
【００５３】
本実施例では、第１コア３１が、第２コア３２、第３コア３３及び第４コア３４との間で相互に動作情報伝送処理、動作状態判定処理、起動モード指示処理及び起動モード選択処理を行う。なお、図８では、第１コア３１の動作状態に応じた起動モードを第２コア３２〜第３コア３４が第１コア３１に指示し、第１コア３１がこれらに基づいて起動モードを選択する処理についてのみ図示している。本実施例の説明では、第２コア３２〜第４コア３４の動作状態に応じた起動モードを第１コア３１が第２コア３２〜第４コア３４に夫々指示し、第２コア３２〜第４コア３４がこれに基づいて夫々起動モードを選択する処理については、実施例１における、第２コア３２の動作情報伝送処理３２３、動作状態判定処理３１３、起動モード指示処理３１４及び起動モード選択処理３２４と同様であるため、説明を省略する。
【００５４】
まず、第１コア３１と第２コア３２との間で行われる処理について説明する。
第１コア３１は、第２コア３２に対して第１コア３１の動作情報伝送処理３１１２を行い、第１コア動作情報４１２をＲＡＭ４に格納する。
一方、第２コア３２は、第１コア３１の動作状態判定処理３２１２を行い、第１コア３１の起動モードを示す第１コア起動モード情報５１２をＥＥＰＲＯＭ５に格納する。
そして、次回に第１コア３１が再起動するときに、第２コア３２は、第１コア３１の起動モード指示処理３２２２を行い、第１コア起動モード指示情報４２２をＲＡＭ４に格納する。
また、第１コア３１は、第３コア３３及び第４コア３４との間でも、図８に示すように、前述した第２コア３２との間の処理と同様の処理を行う。
【００５５】
ここで、第１コア３１が再起動するときに、第１コア３１は、起動モード選択処理３１２１を行う。具体的には、第１コア３１は、第２コア３２、第３コア３３及び第４コア３４が夫々ＲＡＭ４に格納した第１コア起動モード指示情報４２２、第１コア起動モード指示情報４２３及び第１コア起動モード指示情報４２４を読み出す。そして、第１コア３１は、これら複数の情報に基づいて（総合して）、起動モードを選択する。このとき、第１コア起動モード指示情報４２２、第１コア起動モード指示情報４２３及び第１コア起動モード指示情報４２４の指示内容の全部又は一部が一致していない場合、第１コア３１は、最も安全に動作することが可能な起動モード（換言すれば、第１コア３１の動作状態がより重度の異常であると判定した判定結果に基づく起動モード）を選択する。
【００５６】
〔３．第１コアにおける起動モード選択処理の詳細〕
次に、本実施例における各処理のうち、特に、第１コア３１が実行する起動モード選択処理３１２１について、図９に示すフローチャートを参照しながら説明する。
ステップＳ９０１で、第１コア３１は、第２コア３２によって格納された第１コア起動モード指示情報４２２をＲＡＭ４から読み出す。
ステップＳ９０２で、第１コア３１は、第３コア３３によって格納された第１コア起動モード指示情報４２３をＲＡＭ４から読み出す。
【００５７】
ステップＳ９０３で、第１コア３１は、第４コア３４によって格納された第１コア起動モード指示情報４２４をＲＡＭ４から読み出す。
ステップＳ９０４で、第１コア３１は、ステップＳ９０１〜ステップＳ９０３で読み出した第１コア起動モード指示情報４２２、第１コア起動モード指示情報４２３及び第１コア起動モード指示情報４２４に基づき、第１コア３１の起動モードを判定する。これらの３つの第１コア起動モード指示情報の内訳が起動モードＡのみの場合はステップＳ９０５に進み、起動モードＡ又は起動モードＢの場合はステップＳ９０６に進み、起動モードＣが存在する場合にはステップＳ９０７に進む。
【００５８】
ステップＳ９０５で、第１コア３１は、起動モードＡを選択する。
ステップＳ９０６で、第１コア３１は、起動モードＢを選択する。
ステップＳ９０７で、第１コア３１は、起動モードＣを選択する。
【００５９】
〔４．本実施例による効果等〕
本実施例によれば、実施例１で説明した効果に加え、第１コア３１が再起動するときに、第２コア３２〜第４コア３４の複数の他のプロセッサによる動作状態の判定結果に基づく起動モード指示情報を総合して、起動モードを選択することが可能となる。このため、メインプロセッサである第１コア３１が選択する起動モードがより適切なものとなり、再起動後にリセットが繰り返し生じるなどの状態が発生することをさらに抑制することができる。特に、これらの複数の起動モード指示情報のうち、安全に動作することが可能な起動モードを選択することで、異常が発生したプロセッサをより安全にリセットから復帰させることが可能となる。
【００６０】
ここで、例えば、起動モードを「通常時起動モード」及び「異常時起動モード」の２種類とし、第２コア３２〜第４コア３４による起動モード指示情報で指示された起動モードが１つでも「異常時起動モード」であれば、第１コア３１が「異常時起動モード」を選択するようにしてもよい。
【００６１】
なお、起動モードの選択方法は、上記のような方法に限定されるものではない。例えば、第１コア３１が起動モードを選択する際に、最も多数の第１コア起動モード指示情報で指示された起動モードを選択するようにしてもよい。
【００６２】
また、第１コア３１が第２コア３２〜第４コア３４との間で行う動作状態の判定方法は、必ずしも全て同一でなくてもよい。例えば第１コア３１は、第２コア３２との間ではＰ−ＲＵＮ方式で動作状態を判定する一方で、第３コア３３との間では例題演算方式で動作状態を判定するようにしてもよい。このようにメインプロセッサの動作状態の判定を複数のプロセッサで多面的に行うことで、メインプロセッサで発生した異常をより高い精度で検出し、適切な動作状態を指示することが可能となる。
【００６３】
なお、本実施例における各処理も実施例１と同様に、前述した電子制御装置１の構成のみならず、例えば外部監視回路８がない構成においても実現することが可能である。また、本実施例で示したプロセッサの数は一例に過ぎない。
【００６４】
［実施例３］
実施例３では、複数のプロセッサのうち１つのプロセッサのみを外部監視回路が監視している構成において、外部監視回路による監視対象のプロセッサが外部監視回路による監視対象外のプロセッサの異常を検出したときに、外部監視回路によるプロセッサ全体に対するリセット機能を利用し、異常が発生したプロセッサに対して意図的にリセットを行う構成について説明する。
【００６５】
〔１．電子制御装置の構成〕
本実施例における電子制御装置１の構成は、実施例１と同様であるため、説明を省略する。
【００６６】
〔２．第１コア及び第２コア間で伝送される情報及び処理の概要〕
次に、第１コア３１及び第２コア３２によって実行される処理の概要について、図１０を参照しながら説明する。図１０は、第２コア３２の動作状態に応じた起動モードを第１コア３１が第２コア３２に指示し、第２コア３２がこれに基づいて起動モードを選択する処理について示している。なお、本実施例の説明では、第１コア３１の動作状態に応じた起動モードを第２コア３２が第１コア３１に指示し、第１コア３１がこれに基づいて起動モードを選択する処理については、実施例１で示した動作情報伝送処理３１１、動作状態判定処理３２１、起動モード指示処理３２２及び起動モード選択処理３１２と同様であるため説明を省略する。
【００６７】
第２コア３２は、第２コア３２の動作情報伝送処理３２３を行い、第２コア動作情報４３をＲＡＭ４に格納する。
一方、第１コア３１は、第２コア３２の動作状態判定処理３１５を行う。ここで、第２コア３２の動作状態が異常であると判定した場合、第１コア３１は、第２コア起動モード情報５２をＲＡＭ４に格納した後、次の処理を行う。すなわち、第１コア３１は、外部監視装置８が第１コア３１及び第２コア３２の両方にリセットを行うことができることを利用して外部監視装置８に第２コア３２をリセットさせるため、外部監視装置８に対する動作信号の送信を停止する。（なお、図１０では図示を省略しているが、このとき第１コア３１は第２コア３２に対しては正常な動作情報を渡し続けている（あるいはＣＰＵ３を意図的にリセットする旨の情報を明示的に渡してもよい）ため、第２コア３２では、第１コア３１の動作状態に異常が発生したという判定はしない。）
【００６８】
そして、外部監視回路８に対する第１コア３１の動作信号の送信が停止された結果、外部監視回路８は、第１コア３１の動作に異常が発生したと判定する（８１）。このため、外部監視回路８は、ＣＰＵ３全体、すなわち第１コア３１及び第２コア３２の両方に対してリセットを行う（８２）。
そして、第２コア３２が再起動するときに、第１コア３１は、ＥＥＰＲＯＭ５にバックアップした第２コア起動モード情報５２を読み出して第２コア３２の起動モード指示処理３１４を行い、第２コア起動モード指示情報４４をＲＡＭ４に格納する。
一方、第２コア３２は、第２コア３２の起動モード選択処理３２４を行う。
【００６９】
〔３．第１コアにおける動作状態判定処理のフローチャート〕
ここで、本実施例における各処理のうち、特に、第１コア３１が実行する第２コア３２の動作状態判定処理３１５について、図１１に示すフローチャートを参照しながら説明する。
ステップＳ１００１で、第１コア３１は、第２コア動作情報４３をＲＡＭ４から読み出す。
ステップＳ１００２で、第１コア３１は、第２コア動作情報４３の伝送状況に基づき、第２コア３２の動作状態を判定する。第２コア３２の動作状態が正常な場合はステップＳ１００３に進み、軽度の異常であると判定した場合はステップＳ１００４に進み、重度の異常であると判定した場合はステップＳ１００５に進む。
【００７０】
ステップＳ１００３で、第１コア３１は、起動モードＡを選択する。
ステップＳ１００４で、第１コア３１は、起動モードＢを選択する。
ステップＳ１００５で、第１コア３１は、ステップＳ１００３又はステップＳ１００４のいずれかで選択した第２コア３２の起動モードを示す第２コア起動モード情報５２を、ＥＥＰＲＯＭ５に格納する。
【００７１】
ステップＳ１００６で、第１コア３１は、起動モードＣを選択する。
ステップＳ１００７で、第１コア３１は、ステップＳ１００６で選択した起動モードＣを示す第２コア起動モード情報５２を、ＥＥＰＲＯＭ５に格納する。
ステップＳ１００７で、第１コア３１は、外部監視回路８に対する動作信号の送信を停止する。
【００７２】
〔４．本実施例による効果等〕
本実施例によれば、実施例１で説明した効果に加え、さらに、外部監視回路８による監視対象の第１コア３１が外部監視回路による監視対象外の第２コア３２の異常を検出したときに、外部監視回路８によるＣＰＵ３全体に対するリセット機能を利用し、異常が発生した第２コア３２に対して意図的にリセットを行うことができる。このため、第２コア３２に対してさらに外部監視回路による監視を行う構成にしなくても、第２コア３２に対する意図的なリセットが可能となり、ハードウェア構成が複雑化することを回避することができる。しかも、第２コア３２がリセット後に再起動するときには、第２コア３２の動作状態に応じた適切な起動モードで再起動することができる。
【００７３】
なお、本実施例では、第２コア３２において重度の異常が発生しているときにのみ外部監視回路８によるリセットを行う例について説明したが、かかるリセットを行う判定基準は任意であり、例えば、軽度の異常が発生している場合にもリセットを行うようにしてもよい。
【００７４】
また、本実施例では、第１コア３１が外部監視回路８に対する動作信号を停止させたが、停止に限らず、外部監視回路８が異常を検出してリセットを行うことができれば、いかなる態様で動作信号を送信するようにしてもよい。
なお、本実施例の構成は、実施例２に記載したような構成、すなわち、外部監視回路８による監視対象外のプロセッサが複数存在する構成においても適用可能である。
【００７５】
［その他］
前述した各実施例では、１つのＣＰＵ内のプロセッサコア間において動作状態の判定や起動モードの指示を行うことについて説明したが、本発明の実施形態はかかる構成に限定されない。例えば、図１２に示す電子制御装置１のように、図１で示した第１コア３１及び第２コア３２の代わりに、マイコン２１及びマイコン２２を備えたハードウェア構成の電子制御装置１において、マイコン２１及びマイコン２２が夫々備える第１ＣＰＵ３３１及び第２ＣＰＵ３３２間で本実施形態の処理をさせることも可能である。この図１２の例の場合、第１ＣＰＵ３３１及び第２ＣＰＵ３３２がそれぞれプロセッサの一例であり、夫々前述した実施例における第１コア３１及び第２コア３２が実行した処理を実行する。また、実施例２のように、１つのメインプロセッサとして機能するＣＰＵが、他の複数のＣＰＵとの間で相互に処理を行うことも同様に可能である。
【００７６】
また、動作状態判定処理及び起動モード指示処理において、どのような動作状態のときにどのような起動モードを選択して相手側のプロセッサに指示するかは、前述した実施例で示した内容に限定されず、任意である。起動モードの種類や数も、前述した内容に限定されるものではない。ここで例えば、プロセッサの動作状態が重度の異常である場合には、相手側のプロセッサの起動自体をさせずに停止させる設定にすることも可能である。そうすることで、重度の故障が発生しているプロセッサに対し、不要な処理負荷をかける状態が発生することをさらに抑制することができる。
【００７７】
また、起動モード指示処理において、ＥＥＰＲＯＭに格納された起動モード情報の読み出しに失敗した場合などには、再起動するプロセッサに再びリセットがかけられるリスクをより低減するべく、例えば、最も重度の異常が発生している状態における起動モードを選択するようにしてもよい。一方、起動モード選択処理において、起動モード指示情報が特に伝送されていない場合などには、特に異常が発生していないものとして、正常な動作状態における起動モードを選択するようにしてもよい。
【００７８】
さらに、前述した各実施例では、複数のプロセッサが相互に動作状態の判定や起動モードの指示を行うことについて説明したが、当然に、相互処理ではなく１つのプロセッサが他のプロセッサの動作状態を判定して起動モードの指示を行うだけでもよい。この場合であっても、動作状態を判定される側のプロセッサが次回再起動するときに、適切な状態となる効果を奏することができる。
【００７９】
また、異常が発生したプロセッサを、一部の機能を制限した状態で動作させたり停止させたりする場合には、例えば車両が備える表示装置にその旨を表示させてユーザが認識できるようにしてもよい。
【００８０】
その他、本実施形態で説明した機能的構成及び物理的構成は、前述の態様に限定されるものではなく、例えば、各機能や物理資源を統合して実装したり、逆に、さらに分散して実装したりすることも可能である。
【００８１】
ここで、上記実施形態から把握し得る請求項以外の技術的思想について、以下に効果と共に記載する。
（イ）前記他のプロセッサが、自装置の動作情報を前記１つのプロセッサに伝送し、
前記他のプロセッサが再起動を行うときに、前記１つのプロセッサが、前記他のプロセッサからの動作情報の伝送状況に応じた起動モードの指示情報を前記他のプロセッサに伝送する、請求項１〜３のいずれか１項に記載の車両用電子制御装置。
上記発明によると、複数のプロセッサが、相互に相手プロセッサの動作状態を監視し、相手プロセッサが再起動を行うときには、相手プロセッサの動作状態に応じた適切な起動モードを相手プロセッサに指示することができる。
【００８２】
（ロ）複数の前記他のプロセッサから夫々伝送された複数の起動モードの指示情報のうち全部又は一部が一致していないとき、前記１つのプロセッサが、最も多数の前記指示情報で指示された起動モードを自装置の起動モードとして選択する、請求項２記載の車両用電子制御装置。
上記発明によると、再起動するプロセッサが、多くのプロセッサによって指示された起動モードにしたがって起動モードを選択するため、選択される起動モードがより適切なものとなる。
【００８３】
（ハ）複数の前記他のプロセッサから夫々伝送された複数の起動モードの指示情報のうち全部又は一部が一致していないとき、前記１つのプロセッサが、前記指示情報で指示された起動モードのうち最も安全に動作することが可能な起動モードを選択する、請求項２記載の車両用電子制御装置。
上記発明によると、プロセッサに異常が発生している場合に、プロセッサをより安全にリセットから復帰させることが可能となる。
【００８４】
（ニ）前記複数のプロセッサのうち１つのプロセッサが、複数の前記他のプロセッサに対して夫々異なる動作情報を伝送し、
前記１つのプロセッサが再起動を行うときに、前記他のプロセッサが、夫々異なる動作情報の伝送状況に応じた起動モードの指示情報を前記１つのプロセッサに伝送する、請求項２記載の車両用電子制御装置。
上記発明によると、プロセッサの動作状態の判定を複数のプロセッサで多面的に行うことで、プロセッサで発生した異常をより高い精度で検出し、適切な動作状態を指示することが可能となる。
【００８５】
（ホ）前記他のプロセッサが、前記１つのプロセッサからの動作情報の伝送状況に応じた起動モードを示す情報を不揮発性メモリに格納し、前記１つのプロセッサが再起動するときに前記不揮発性メモリに格納した起動モードを示す情報に基づいた起動モードの指示情報を前記１つのプロセッサに伝送する、請求項１記載の車両用電子制御装置。
上記発明によると、例えば他のプロセッサにおいて意図せぬリセットがかかった場合でも、起動モードの指示情報が消去されずに維持される。
【符号の説明】
【００８６】
１…電子制御装置、２…マイコン、３…ＣＰＵ、４…ＲＡＭ、５…ＥＥＰＲＯＭ、６…ＲＯＭ、７…インタフェース、８…外部監視回路、３１…第１コア、３２…第２コア、３３…第３コア、３４…第４コア
【図１】
2014186454.tif 000003
【図２】
2014186454.tif 000004
【図３】
2014186454.tif 000005
【図４】
2014186454.tif 000006
【図５】
2014186454.tif 000007
【図６】
2014186454.tif 000008
【図７】
2014186454.tif 000009
【図８】
2014186454.tif 000010
【図９】
2014186454.tif 000011
【図１０】
2014186454.tif 000012
【図１１】
2014186454.tif 000013
【図１２】
2014186454.tif 000014