(57)【要約】【課題】異常が生じた場合であってもシステムの動作を継続できる電子制御装置を提供すること。【解決手段】電子制御装置は、複数のコアと、各コアに対応するプログラムが個別に格納された複数の記憶領域を含む記憶部と、複数のコアと複数の記憶領域の異常を診断する自己診断回路とを備えたＥＣＵと、プログラム管理システムとを備えている。電子制御装置は、コアとメモリに異常があるか否かを判定する。そして、電子制御装置は、一部のコアのみが異常と診断された場合、新規プログラムをダウンロードし、一部の記憶領域のみが異常と診断された場合、プログラムのダウンロード先を変更する（Ｓ１０１〜Ｓ１０６）。また、電子制御装置は、一部のコアのみが異常と診断され、且つ、一部の記憶領域のみが異常と診断された場合、新規プログラムをダウンロードするとともに、プログラムのダウンロード先を変更する（Ｓ１０７）。【選択図】図３
2020030536.tif 000002
【特許請求の範囲】
【請求項１】
複数のコア（２１、２１ｂ１〜２１ｂｎ、２２、２２ｂ１〜２２ｂｎ、２ｎ、２ｎｂ１〜２ｎｂｎ）と、
各コアに対応するプログラムが個別に格納された複数の記憶領域を含む記憶部（３０、３０ａ、３１ｂ〜３ｎｂ）と、
複数の前記コアと複数の前記記憶領域の少なくとも一方の異常を診断する自己診断部（４０、４１〜４ｎ）と、を備え、複数の前記コアが前記プログラムに基づいて処理を実行して指令を出力することでシステムを動作させるものであり、
前記自己診断部にて、一部の前記コアのみが異常と診断されるか、一部の前記記憶領域のみが異常と診断されるかの少なくとも一方の場合、正常な前記コアで前記システムの動作を継続できるように、正常な前記コアに対応する前記プログラムを取得するとともに、取得した前記プログラムに基づいた前記処理を正常な前記コアが実行可能な状態で正常な前記記憶領域に格納するプログラム管理部（２００）を備えている電子制御装置。
【請求項２】
前記プログラム管理部は、前記自己診断部にて、一部の前記コアのみが異常と診断された場合、正常な前記コアに対応する前記プログラムとして、前記記憶部に格納されている前記プログラムとは異なる新規プログラムを取得する請求項１に記載の電子制御装置。
【請求項３】
前記プログラム管理部は、異常と診断される前に前記記憶部に記憶されている前記プログラムよりも機能が制限されている前記新規プログラムを取得する請求項２に記載の電子制御装置。
【請求項４】
前記プログラム管理部は、前記車両を退避走行させるプログラムを含んでいる前記新規プログラムを取得する請求項２又は３に記載の電子制御装置。
【請求項５】
前記プログラム管理部は、前記自己診断部にて、一部の前記記憶領域のみが異常と診断された場合、取得した前記プログラムを正常な前記記憶領域に再配置して格納することで、取得した前記プログラムに基づいた前記処理を正常な前記コアが実行可能な状態とする請求項１乃至４のいずれか１項に記載の電子制御装置。
【請求項６】
前記プログラム管理部は、前記自己診断部にて、一部の前記記憶領域のみが異常と診断された場合、異常と診断される前に前記記憶部に記憶されている前記プログラムを再度取得する請求項５に記載の電子制御装置。
【請求項７】
それぞれ異なる前記処理を行う複数の処理部（１１〜１ｎ、１０１〜１０ｎ）を備え、
各処理部は、複数の前記コアと、前記記憶部と、前記自己診断部とを含み、前記コアが前記プログラムに基づいた前記処理を実行して指令を出力することで前記システムを動作させるものであり、
各処理部は、一部の前記コアのみが異常と診断されるか、一部の前記記憶領域のみが異常と診断されるかの少なくとも一方の場合、異常によって実行することができない前記処理の代行依頼を他の前記処理部に対して行い、
前記代行依頼を受けた他の前記処理部は、前記処理を代行して前記処理の実行結果を返信し、
前記代行依頼をした前記処理部は、返信された前記実行結果を用いて指令を出力する請求項１乃至６のいずれか１項に記載の電子制御装置。
【請求項８】
複数の前記コアと、前記記憶部と、前記自己診断部と、前記プログラム管理部とを一体的に内蔵している請求項１乃至７のいずれか１項に記載の電子制御装置。
【請求項９】
前記プログラム管理部は、複数の前記コアと、前記記憶部と、前記自己診断部と別体に設けられている請求項１乃至７のいずれか１項に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、電子制御装置に関する。
【背景技術】
【０００２】
従来、複数のコアでシステムを動作させている電子制御装置の一例として、特許文献１に開示されたマイコンがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１３３４５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示されているマイコンでは、あるコアに異常が発生した場合、システム全体が止まってしまう可能性がある。
【０００５】
本開示は、上記問題点に鑑みなされたものであり、異常が生じた場合であってもシステムの動作を継続できる電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本開示は、
複数のコア（２１、２１ｂ１〜２１ｂｎ、２２、２２ｂ１〜２２ｂｎ、２ｎ，２ｎｂ１〜２ｎｂｎ）と、
各コアに対応するプログラムが個別に格納された複数の記憶領域を含む記憶部（３０，３０ａ，３１ｂ〜３ｎｂ）と、
複数のコアと複数の記憶領域の少なくとも一方の異常を診断する自己診断部（４０、４１〜４ｎ）と、を備え、複数のコアがプログラムに基づいて処理を実行して指令を出力することでシステムを動作させるものであり、
自己診断部にて、一部のコアのみが異常と診断されるか、一部の記憶領域のみが異常と診断されるかの少なくとも一方の場合、正常なコアでシステムの動作を継続できるように、正常なコアに対応するプログラムを取得するとともに、取得したプログラムに基づいた処理を正常なコアが実行可能な状態で正常な記憶領域に格納するプログラム管理部（２００）を備えていることを特徴とする。
【０００７】
電子制御装置は、一部のコアのみが異常の場合や、一部の記憶領域のみが異常の場合、正常なコアと正常な記憶領域が存在することになる。そこで、本開示は、一部のコアのみが異常と診断されるか、一部の記憶領域のみが異常と診断されるかの少なくとも一方の場合、正常なコアでシステムの動作を継続できるように、正常なコアに対応するプログラムを取得する。そして、本開示は、取得したプログラムを正常なコアが実行可能な状態で正常な記憶領域に格納する。このため、本開示は、一部のコアのみが異常の場合や、一部の記憶領域のみが異常の場合であっても、残りの正常なコアでプログラムを実行することができ、システムの動作を継続できる。
【０００８】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態における電子制御装置の概略構成を示すブロック図である。
【図２】第１実施形態における電子制御装置の処理動作を示すフローチャートである。
【図３】第１実施形態における電子制御装置の診断結果判定ロジックを示すフローチャートである。
【図４】第１実施形態における第１コアが異常の場合の概略構成を示すブロック図である。
【図５】第１実施形態における第１記憶領域が異常の場合の概略構成を示すブロック図である。
【図６】変形例１における電子制御装置の概略構成を示すブロック図である。
【図７】第２実施形態における電子制御装置の概略構成を示すブロック図である。
【図８】第２実施形態における電子制御装置の処理動作を示すフローチャートである。
【図９】第２実施形態における電子制御装置の診断結果判定ロジックを示すフローチャートである。
【図１０】第２実施形態における異常有りのＭＣＵの処理再配置ロジックを示すフローチャートである。
【図１１】第２実施形態における異常なしのＭＣＵの処理再配置ロジックを示すフローチャートである。
【図１２】第２実施形態における電子制御装置の処理の流れを示す図面である。
【図１３】第３実施形態における電子制御装置の概略構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下において、図面を参照しながら、本開示を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
【００１１】
（第１実施形態）
本実施形態は、一例として、ＥＣＵ（Electronic Control Unit）１００とプログラム管理システム２００（以下、管理システム２００）とを含む電子制御装置を採用している。また、電子制御装置は、車両に搭載されているシステムを例としている。しかしながら、本開示は、これに限定されず、車載システムとは異なるシステムを動作させる電子制御装置であっても採用できる。
【００１２】
ＥＣＵ１００は、少なくとも一つの演算処理装置と、プログラムとデータとを記憶する記憶媒体としての少なくとも一つのメモリ装置とを有する。ＥＣＵ１００は、コンピュータによって読み取り可能な記憶媒体を備えるマイクロコンピュータ（ＭＣＵ）によって提供される。記憶媒体は、コンピュータによって読み取り可能なプログラムを非一時的に格納している。記憶媒体は、半導体メモリ又は磁気ディスクなどによって提供されうる。なお、記憶媒体は、プログラムやデータを一時的に格納する揮発性記憶部を含んでいてもよい。
【００１３】
ＥＣＵ１００は、一つのコンピュータ、又はデータ通信装置によってリンクされた一組のコンピュータ資源によって提供されうる。プログラムは、ＥＣＵ１００によって実行されることによって、ＥＣＵ１００をこの明細書に記載される装置として機能させ、この明細書に記載される方法を実行するようにＥＣＵ１００を機能させる。ＥＣＵ１００は、多様な要素を提供する。それらの要素の少なくとも一部は、機能を実行するための手段と呼ぶことができ、別の観点では、それらの要素の少なくとも一部は、構成的なブロック、又はモジュールと呼ぶことができる。
【００１４】
なお、ＥＣＵ１００が提供する手段及び／又は機能は、実体的なメモリ装置に記録されたソフトウェア及びそれを実行するコンピュータ、ソフトウェアのみ、ハードウェアのみ、あるいはそれらの組み合わせによって提供することができる。例えば、ＥＣＵ１００がハードウェアである電子回路によって提供される場合、それは多数の論理回路を含むデジタル回路、又はアナログ回路によって提供することができる。
【００１５】
図１、図４、図５に示すように、具体的には、ＥＣＵ１００は、ＭＣＵ１０を備えている。
【００１６】
ＭＣＵ１０は、演算処理装置としての複数のコア２１〜２ｎ、メモリ装置としての記憶部３０、自己診断回路４０、診断結果格納部５０を備えている。ここでのｎは、３以上の自然数とする。よって、本実施形態では、三個以上のコア２１〜２ｎを備えたＭＣＵ１０を採用している。しかしながら、本開示は、これに限定されず、複数のコアを備えていればよく、コアが二個であってもよい。
【００１７】
第１コア２１、第２コア２２、第ｎコア２ｎは、後程説明する記憶部３０に記憶された、それぞれに対応したプログラムに基づいた処理を実行する。このため、各コア２１〜２ｎは、互いに異なる演算処理を実行する。また、各コア２１〜２ｎは、走行システムを動作させる際の機能として、互いに異なる機能を有しているとも言える。ＭＣＵ１０は、複数のコア２１〜２ｎがプログラムに基づいた処理を実行することで走行システムを動作させる。詳述すると、ＭＣＵ１０は、複数のコア２１〜２ｎがプログラムに基づいた処理を実行して指令を出力することで走行システムを動作させるものである。
【００１８】
また、複数のコア２１〜２１ｎのうち少なくとも一つは、例えば、管理システム２００に対して、プログラムのダウンロード（取得）を要求する機能を備えている。ダウンロード要求は、複数のコア２１〜２１ｎにおける正常なコア、もしくは、全てのコア２１〜２ｎから行う。複数のコア２１〜２１ｎのうち少なくとも一つは、診断結果格納部５０の記憶された診断結果に基づいてダウンロードを要求する。
【００１９】
ダウンロードを要求するプログラムは、記憶部３０に記憶されているプログラムとは異なる別のプログラム（新規プログラム）、もしくは、記憶部３０に記憶されているプログラムと同じプログラム（現プログラム）である。後程説明するが、管理システム２００に要求するプログラムは、自己診断回路４０によって、コア２１〜２ｎに異常があると診断された場合と、記憶領域３１〜３ｎに異常があると診断された場合とで異なる。
【００２０】
図１、図５に示すように、記憶部３０は、第１記憶領域３１、第２記憶領域３２、第３記憶領域３３、第ｎ記憶領域３ｎのように複数の記憶領域を含んでいる。詳述すると、記憶部３０は、各コア２１〜２ｎに対応するプログラムが個別に格納された複数の記憶領域３１〜３ｎを含んでいる。しかしながら、あるコアが異常と診断された場合、そのコアに対応するプログラムは、記憶領域３１〜３ｎに格納されなくなる。
【００２１】
図１は、各記憶領域３１〜３ｎが正常である場合の記憶部３０を示している。図４は、第１コア２１が異常である場合の記憶部３０を示している。つまり、図４は、第１コア２１が異常であるために、ダウンロードした新規プログラムを各記憶領域に格納した後の記憶部３０を示している。図５は、第１記憶領域３１が異常である場合の記憶部３０を示している。つまり、図５は、プログラムの再配置を行った後の記憶部３０を示している。プログラムの再配置は、各コア２１〜２ｎが実行する処理の再配置とも言える。
【００２２】
図１に示すように、各記憶領域３１〜３ｎが正常である場合、記憶部３０は、第１記憶領域３１に第１コア用プログラム、第２記憶領域３２に第２コア用プログラム、第ｎ記憶領域３ｎに第ｎコア用プログラムが格納されている。一方、図５に示すように、第１記憶領域３１が異常である場合、記憶部３０は、第２記憶領域３２に第１コア用プログラム、第３記憶領域３３に第２コア用プログラム、第ｎ記憶領域３ｎに第ｎコア用プログラムが格納されている。
【００２３】
なお、第１コア用プログラムは、第１コア２１に対応するプログラムであり、以下では第１プログラムとも称する。同様に、第２コア用プログラムは、第２コア２２に対応するプログラムであり、以下では第２プログラムとも称する。第ｎコア用プログラムは、第ｎコア２ｎに対応するプログラムであり、以下では第ｎプログラムとも称する。
【００２４】
自己診断回路４０は、自己診断部に相当し、複数のコア２１〜２ｎと複数の記憶領域３１〜３ｎの異常を診断する。自己診断回路４０は、各コア２１〜２ｎを個別に診断するとともに、各記憶領域３１〜３ｎを個別に診断する。なお、本実施形態では、一例として、第１コア２１が異常の場合と、第１記憶領域３１が異常の場合とを採用する。自己診断回路４０は、複数のコア２１〜２ｎと複数の記憶領域３１〜３ｎの少なくとも一方の異常を診断するものであってもよい。
【００２５】
そして、自己診断回路４０は、異常診断の診断結果を診断結果格納部５０に記憶する。このため、診断結果格納部５０には、異常と診断されたコアや記憶領域が記憶される。また、診断結果格納部５０は、複数のコア２１〜２ｎ、及び複数の記憶領域３１〜３ｎそれぞれに対して、異常の有無が記憶されてもよい。なお、診断結果格納部５０は、記憶部３０の一部に設けられていてもよい。
【００２６】
なお、自己診断回路４０は、例えば、各コア２１〜２ｎに演算させ、その演算結果によって異常を診断する。自己診断回路４０は、例えば、チェックサム、パリティ、誤り訂正符号などを用いて各記憶領域３１〜３ｎの異常を診断する。しかしながら、本開示は、これに限定されず、各コア２１〜２ｎを個別に異常診断でき、且つ、各記憶領域３１〜３ｎを個別に異常診断できるものであれば採用できる。
【００２７】
管理システム２００は、プログラム管理部に相当し、記憶部３０に記憶されているプログラムの管理を行う。管理システム２００は、ＥＣＵ１００の外部に設けられ、且つ、ＥＣＵ１００とともに車両に設けられている。つまり、管理システム２００は、複数のコア２１〜２ｎと、記憶部３０と、自己診断回路４０と別体に設けられている。
【００２８】
また、管理システム２００は、車両の外部に設けられたセンターやディーラなどのプログラム配信設備と通信可能に構成されている。管理システム２００は、複数のコア２１〜２ｎの少なくとも一つからの指示（要求）に応じて、プログラム配信設備からプログラムをダウンロードする。管理システム２００は、車両が駐車中もしくは停車中にプログラムをダウンロードしてもよいし、車両が走行中にプログラムをダウンロードしてもよい。
【００２９】
管理システム２００は、自己診断回路４０にて、一部のコアのみが異常と診断されるか、一部の記憶領域のみが異常と診断されるかの少なくとも一方の場合にプログラムをダウンロードする。そして、管理システム２００は、正常なコアで走行システムの動作を継続できるように、正常なコアに対応するプログラムを取得するとともに、ダウンロードしたプログラムに基づいた処理を正常なコアが実行可能な状態で正常な記憶領域に格納する。
【００３０】
なお、本実施形態では、管理システム２００がＥＣＵ１００の外部に設けられている例を採用している。しかしながら、本開示は、これに限定されず、管理システム２００がＥＣＵ１００内に設けられていてもよい。つまり、ＥＣＵ１００は、複数のコア２１〜２ｎと、記憶部３０と、自己診断回路４０と、管理システム２００とを一体的に内蔵しているものであってもよい。
【００３１】
次に、電子制御装置の処理動作に関して説明する。ＥＣＵ１００は、例えば、電源の供給が開始されると図２のフローチャートに示す処理を実行するとともに、所定時間毎に図２のフローチャートに示す処理を実行する。ＥＣＵ１００は、例えば車両のイグニッションスイッチがオフからオンに切り替わると電源が供給される。
【００３２】
ステップＳ１０では、ＭＣＵの初期設定を行う。ＥＣＵ１００は、ＭＣＵ１０の初期設定（初期化）を行う。
【００３３】
ステップＳ２０では、自己診断を実施する。自己診断回路４０は、複数のコア２１〜２ｎと複数の記憶領域３１〜３ｎの異常診断を行う。また、自己診断回路４０は、診断結果を診断結果格納部５０に格納する。
【００３４】
ステップＳ３０では、診断結果判定ロジックを行う。複数のコア２１〜２ｎにおける少なくとも一つは、診断結果判定ロジックを行う。この診断結果判定ロジックに関しては、後程、図３を用いて説明する。
【００３５】
ステップＳ４０では、プログラムを実行する。各コア２１〜２ｎは、プログラムに基づいた処理を実行する。このとき、各コア２１〜２ｎは、各コア２１〜２ｎに対応するプログラムに基づいた処理を実行する。しかしながら、複数のコア２１〜２ｎのうち、異常と診断されたコアは、プログラムに基づいた処理を実行することができない。
【００３６】
ここで、図３を用いて、診断結果判定ロジックに関して説明する。この診断結果判定ロジックは、複数のコア２１〜２１ｎにおける正常なコア、もしくは、全てのコア２１〜２ｎが行う。ここでは、一例として、異常と診断されていない第ｎコア２ｎが判定ロジックを行う例を採用する。この場合、ＥＣＵ１００は、異常ありと診断されてないコア（ここでは第ｎコア２ｎ）に対して、ハード的に判定ロジックの実行を示す信号が入力されるように構成されている。これによって、第ｎコア２ｎは、判定ロジックを実行することができる。
【００３７】
ステップＳ１０１では、コアと記憶領域に異常があるか否かを判定する。第ｎコア２ｎは、診断結果格納部５０を確認して、複数のコア２１、２２と、複数の記憶領域３１〜３ｎに異常があるか否かを判定する。つまり、第ｎコア２ｎは、自己診断回路４０にて異常と診断されたコアもしくは記憶領域があるか否かを判定する。そして、第ｎコア２ｎは、異常ありと判定した場合はステップＳ１０２へ進み、異常ありと判定しなかった場合は図２に戻る。
【００３８】
ステップＳ１０２では、異常内容を確認する。第ｎコア２ｎは、診断結果格納部５０に格納されている診断結果から異常内容を確認する。第ｎコア２ｎは、一部のコアのみが異常と診断されているか、一部の記憶領域のみが異常と診断されているか、もしくは、一部のコアと一部の記憶両機が異常と診断されているかを確認する。
【００３９】
ステップＳ１０３では、コアのみ異常であるか否かを判定する。第ｎコア２ｎは、一部のコアのみが異常と診断されていると判定した場合はステップＳ１０４に進み、一部のコアのみが異常と診断されていると判定しなかった場合はステップＳ１０５に進む。例えば、第ｎコア２ｎは、第１コア２１のみが異常と診断されていた場合、ステップＳ１０４に進むことになる。
【００４０】
ステップＳ１０５では、記憶領域のみ異常であるか否かを判定する。第ｎコア２ｎは、一部の記憶領域のみが異常と診断されていると判定した場合はステップＳ１０６に進み、一部の記憶領域のみが異常と診断されていると判定しなかった場合はステップＳ１０７に進む。例えば、第ｎコア２ｎは、第１記憶領域３１のみが異常と診断されていた場合、ステップＳ１０６に進むことになる。また、第ｎコア２ｎは、第１コア２１と第１記憶領域３１のみが異常と診断されていた場合、ステップＳ１０７に進むことになる。
【００４１】
例えば、第ｎコア２ｎは、複数のコア２１〜２ｎのうち第１コア２１のみが異常と診断されており、且つ、記憶領域３１〜３ｎが異常と診断されてない場合、ステップＳ１０４に進むことになる。この場合、残りのコア２２〜２ｎ、及び記憶領域３１〜３ｎは、正常とみなすことができる。
【００４２】
ステップＳ１０４では、新規プログラムのダウンロードを実行する。第ｎコア２ｎは、例えば、第１コア２１のみが異常であると診断されていることを管理システム２００に通知することで、プログラムのダウンロードを要求する。管理システム２００は、第ｎコア２ｎからの通知に応じて、プログラム配信設備からプログラムをダウンロードする。
【００４３】
このとき、管理システム２００は、第１コア２１のみが異常と診断されているため、正常なコア２２〜２ｎで走行システムの動作を継続できるように、正常なコア２２〜２ｎに対応するプログラムをダウンロードする。そして、管理システム２００は、ダウンロードしたプログラムに基づいた処理を正常なコア２２〜２ｎが実行可能な状態で正常な記憶領域３１〜３ｎに格納する。
【００４４】
このように、管理システム２００は、異常診断の診断結果に基づいてダウンロードするプログラムを判断して、そのプログラムをプログラム配信設備からダウンロードするとも言える。さらに、管理システム２００は、異常診断の診断結果に基づいて、ダウンロードしたプログラムの格納先（記憶領域３１〜３ｎ）を判断して、適切な記憶領域３１〜３ｎにダウンロードしたプログラムを格納するとも言える。
【００４５】
ところで、複数のコア２１〜２ｎにおける一部のコア２１のみが異常と診断された場合、ＥＣＵ１００は、残りのコア２２〜２ｎで走行システムの動作を継続させることになる。現プログラムは、全コア２１〜２ｎのそれぞれに対応している。これに対して、新規プログラムは、残りのコア２２〜２ｎのそれぞれに対応している。このため、管理システム２００は、残りの正常なコア２２〜２ｎで走行システムの動作を継続させるために、現プログラムとは異なる新規プログラムをダウンロードすると好ましい。
【００４６】
そして、図４に示すように、管理システム２００は、新規プログラムにおける第２プログラムを第２記憶領域３２に格納し、新規プログラムにおける第ｎプログラムを第ｎ記憶領域３ｎに格納する。これによって、ＥＣＵ１００は、残りの正常なコア２２〜２ｎにおける処理能力の範囲内でシステム（ここでは走行システム）を動作させることができる。なお、新規プログラムは、異常と診断された第１コア２１に対応する第１プログラムを含んでいない。このため、第１記憶領域３１は、正常であるにかかわらず、第１プログラムが格納されていない。
【００４７】
さらに、複数のコア２１〜２ｎにおける一部のコア２１のみが異常と診断された場合、ＥＣＵ１００は、全てのコア２２〜２ｎが正常な場合よりも処理能力が低下する。このため、ＥＣＵ１００は、全てのコア２１〜２ｎが正常な場合と同等の処理を行なうことができない可能性がある。
【００４８】
そこで、管理システム２００は、残りの正常なコア２２〜２ｎで走行システムの動作を継続させるために、機能が制限されている新規プログラムをダウンロードすると好ましい。よって、この場合の新規プログラムは、現プログラムと異なるだけでなく、現プログラムよりも機能が制限されている。このため、ＥＣＵ１００は、正常なコア２２〜２ｎが新規プログラムに基づいた処理を実行する場合、全コア２１〜２ｎで現プログラムに基づいた処理を実行する場合よりも、実効できる機能が少ない。これによって、ＥＣＵ１００は、残りの正常なコア２２〜２ｎにおける処理負荷が高くなることを抑制しつつ、システム（ここでは走行システム）を動作させることができる。
【００４９】
また、管理システム２００は、現プログラムと異なる新規プログラムをダウンロードする場合、車両を退避走行させるプログラムを含んでいる新規プログラムをダウンロードすると好ましい。これによって、ＥＣＵ１００は、一部のコア２１のみが異常と診断された場合であっても、少なくとも車両を退避走行させることができる。
【００５０】
しかしながら、本開示は、上記の内容に限定されない。本開示は、一部のコアのみが異常と診断された場合、正常なコアで走行システムの動作を継続できるように、正常なコアに対応するプログラムを取得するとともに、取得したプログラムに基づいた処理を正常なコアが実行可能な状態で正常な記憶領域に格納するものであればよい。
【００５１】
また、例えば、第ｎコア２ｎは、複数の記憶領域３１〜３ｎのうち第１記憶領域３１のみが異常と診断されており、且つ、コア２１〜２ｎが異常と診断されてない場合、ステップＳ１０６に進むことになる。この場合、残りの記憶領域３２〜３ｎ、及びコア２１〜２ｎは、正常とみなすことができる。
【００５２】
ステップＳ１０６では、プログラムのダウンロード先を変更する。第ｎコア２ｎは、例えば、唯一異常と診断されている記憶領域３１のアドレスを管理システム２００に通知することで、プログラムのダウンロードを要求する。管理システム２００は、第ｎコア２ｎからの通知に応じて、プログラム配信設備からプログラムをダウンロードする。
【００５３】
このとき、管理システム２００は、第１記憶領域３１のみが異常と診断されているため、全コア２１〜２ｎで走行システムの動作を継続できるように、正常なコア２１〜２ｎに対応するプログラムをダウンロードする。そして、管理システム２００は、ダウンロードしたプログラムに基づいた処理を正常なコア２１〜２ｎが実行可能な状態で正常な記憶領域３２〜３ｎに再配置して格納する。
【００５４】
この場合、複数のコア２１〜２ｎは、全て正常である。このため、複数のコア２１〜２ｎは、現プログラムに基づいた処理を実行することができる。よって、管理システム２００は、上記のように現プログラムにかえて新規プログラムをダウンロードする必要がない。しかしながら、第１プログラムは、第１記憶領域３１が異常と診断されているため、正常に実行することができない可能性がある。
【００５５】
そこで、管理システム２００は、プログラム配信設備から、現プログラムを再度ダウンロードする。そして、図５に示すように、管理システム２００は、現プログラムにおける第１プログラムを第２記憶領域３２に格納し、現プログラムにおける第２プログラムを第３記憶領域３３に格納し、現プログラムにおける第ｎプログラムを第ｎ記憶領域３ｎに格納する。
【００５６】
このように、管理システム２００は、ダウンロードした現プログラムを、記憶部３０の正常な記憶領域３２〜３ｎに再配置して格納する。このようにすることで、管理システム２００は、取得した現プログラムに基づいた処理を正常なコア２１〜２ｎが実行可能な状態とする。なお、ダウンロードする現プログラムは、異常と診断される前に記憶部３０に記憶されているプログラムに相当する。
【００５７】
しかしながら、本開示は、上記の内容に限定されない。本開示は、一部の記憶領域のみが異常と診断された場合、正常なコアで走行システムの動作を継続できるように、正常なコアに対応するプログラムを取得するとともに、取得したプログラムに基づいた処理を正常なコアが実行可能な状態で正常な記憶領域に格納するものであればよい。
【００５８】
例えば、第ｎコア２ｎは、第１コア２１と第１記憶領域３１のみが異常と診断されており、且つ、他のコア２２〜２ｎと他の記憶領域３２〜３ｎが異常と診断されてない場合、ステップＳ１０７に進むことになる。この場合、残りのコア２２〜２ｎ、及び記憶領域３２〜３ｎは、正常とみなすことができる。
【００５９】
ステップＳ１０７では、新規プログラムのダウンロードを実行するとともに、プログラムのダウンロード先を変更する。第ｎコア２ｎは、例えば、複数のコア２１〜２ｎのうち第１コア２１のみが異常であると診断されていること、及び唯一異常と診断されている記憶領域３１のアドレスを管理システム２００に通知することで、プログラムのダウンロードを要求する。管理システム２００は、第ｎコア２ｎからの通知に応じて、プログラム配信設備からプログラムをダウンロードする。
【００６０】
このとき、管理システム２００は、複数のコア２１〜２ｎのうち第１コア２１のみが異常と診断されているため、正常なコア２２〜２ｎで走行システムの動作を継続できるように、正常なコア２２〜２ｎに対応するプログラムをダウンロードする。そして、管理システム２００は、ダウンロードしたプログラムに基づいた処理を正常なコア２２〜２ｎが実行可能な状態で正常な記憶領域３２〜３ｎに格納する。この場合、管理システム２００は、上記のような新規プログラムをダウンロードしてもよい。
【００６１】
以上のように、管理システム２００は、ダウンロード要求を受けた場合、異常状態に応じたプログラム、すなわち、現プログラムあるいは新規プログラムをダウンロードして、正常な記憶領域に格納する。
【００６２】
ここで、ＥＣＵ１００の効果に関して説明する。ＥＣＵ１００は、一部のコア２１のみが異常の場合や、一部の記憶領域３１のみが異常の場合、正常なコア２２〜２ｎと正常な記憶領域３２〜３ｎが存在することになる。そこで、ＥＣＵ１００は、一部のコア２１のみが異常と診断されるか、一部の記憶領域３１のみが異常と診断されるかの少なくとも一方の場合、正常なコア２２〜２ｎで走行システムの動作を継続できるように、正常なコア２２〜２ｎに対応するプログラムをダウンロードする。そして、ＥＣＵ１００は、ダウンロードしたプログラムに基づいた処理を正常なコア２２〜２ｎが実行可能な状態で正常な記憶領域３１〜３ｎに格納する。このため、ＥＣＵ１００は、一部のコア２１のみが異常の場合や、一部の記憶領域３１のみが異常の場合であっても、残りの正常なコア２２〜２ｎでプログラムに基づいた処理を実行することができ、走行システムの動作を継続できる。
【００６３】
なお、本実施形態では、一例として、第１コア２１、第１記憶領域３１が異常と診断された場合を採用している。しかしながら、本開示は、これに限定されない。
【００６４】
（変形例１）
ここで、図６を用いて、変形例１のＥＣＵ１００ａに関して説明する。ＥＣＵ１００ａは、記憶部３０ａの構成とプログラムの取得先がＥＣＵ１００と異なる。本変形例では、上記実施形態と同様の構成に対して、上記実施形態と同じ符号を付与している。
【００６５】
記憶部３０ａは、ＲＯＭ３０ｒｏとＲＡＭ３０ｒａとを含んでいる。ＲＡＭ３０ｒａは、上記記憶部３０に相当し、第１記憶領域３１ａ、第２記憶領域３２ａ、第ｎ記憶領域３ｎａを含んでいる。各記憶領域３１ａ〜３ｎａは、上記記憶領域３１〜３ｎと同様である。
【００６６】
管理システム２００は、プログラム配信設備のかわりにＲＯＭ３０ｒｏから現プログラムや新規プログラムを取得して、各記憶領域３１ａ〜３ｎａに格納する。管理システム２００は、プログラムの取得先が上記実施形態と異なるが、処理内容は上記実施形態と同様である。このように構成されたＥＣＵ１００ａは、ＥＣＵ１００と同様の効果を奏することができる。
【００６７】
以上、本開示の好ましい実施形態について説明した。しかしながら、本開示は、上記実施形態に何ら制限されることはなく、本開示の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本開示のその他の形態として、第２実施形態、第３実施形態に関して説明する。上記実施形態、第２実施形態、及び第３実施形態は、それぞれ単独で実施することも可能であるが、適宜組み合わせて実施することも可能である。本開示は、実施形態において示された組み合わせに限定されることなく、種々の組み合わせによって実施可能である。
【００６８】
（第２実施形態）
ここで、図７〜図１２を用いて、第２実施形態の電子制御装置に関して説明する。本実施形態は、図７に示すように、ＥＣＵ１００ｂとプログラム管理システム２００とを含む電子制御装置を採用している。
【００６９】
ＥＣＵ１００ｂは、複数のＭＣＵ１１〜１ｎを備えている点、各ＭＣＵ１１〜１ｎ間で通信連携する点がＥＣＵ１００と異なる。本変形例では、上記実施形態と同様の構成に対して、上記実施形態と同じ符号を付与している。
【００７０】
ＥＣＵ１００ｂは、複数のＭＣＵ１１〜１ｎを備えている。なお、ここでのｎは、３以上の自然数とする。よって、本実施形態では、三個以上のＭＣＵ１１〜１ｎを備えたＥＣＵ１００ｂを採用している。しかしながら、本開示は、これに限定されず、複数のＭＣＵを備えていればよく、ＭＣＵが二個であってもよい。各ＭＣＵ１１〜１ｎは、処理部に相当する。
【００７１】
ＥＣＵ１００ｂは、各ＭＣＵ１１〜１ｎに設けられた複数のコアがプログラムに基づいた処理を実行して指令を出力することで走行システムを動作させる。複数のコアは、第１ＭＣＵ１１の第１コア２１ｂ１、第２コア２２ｂ１、第ｎコア２ｎｂ１、第２ＭＣＵ１２の第１コア２１ｂ２、第２コア２２ｂ２、第ｎコア２ｎｂ２、第ｎＭＣＵ１ｎの第１コア２１ｂｎ、第２コア２２ｂｎ、第ｎコア２ｎｂｎである。このように、ＥＣＵ１００ｂは、ＥＣＵ１００と異なり、複数のコアが複数のＭＣＵ１１〜１ｎに分割して配置されていると言える。
【００７２】
各ＭＣＵ１１〜１ｎは、ＭＣＵ１０と同様の構成を有している。また、各ＭＣＵ１１〜１ｎは、それぞれ異なる処理を行う。つまり、各ＭＣＵ１１〜１ｎは、走行システムを動作させる際の機能として、互いに異なる機能を有している。
【００７３】
第１ＭＣＵ１１は、演算処理装置としての複数のコア２１ｂ１〜２ｎｂ１、メモリ装置としての記憶部３１ｂ、自己診断回路４１、診断結果格納部５１を備えている。
【００７４】
各コア２１ｂ１〜２ｎｂ１は、記憶部３１ｂに記憶されている、それぞれに対応したプログラムに基づいた処理を実行して指令を出力する。また、複数のコア２１ｂ１〜２ｎｂ１のうち少なくとも一つは、上記実施形態と同様、管理システム２００に対して、プログラムのダウンロード（取得）を要求する機能を備えている。
【００７５】
さらに、複数のコア２１ｂ１〜２ｎｂ１のうち少なくとも一つは、他のＭＣＵ１２、１ｎと通信連携して、他のＭＣＵ１２、１ｎから、プログラムに基づいた処理の実行結果（演算結果）を取得する機能を備えている。さらに、複数のコア２１ｂ１〜２ｎｂ１のうち少なくとも一つは、取得した実行結果に基づいて指令を出力する機能を備えている。なお、複数のコア２１ｂ１〜２ｎｂ１のうち少なくとも一つは、第２ＭＣＵ１２と第ｎＭＣＵ１ｎの少なくとも一方から実行結果を取得するものであればよい。
【００７６】
取得する実行結果は、本来であれば、複数のコア２１ｂ１〜２ｎｂ１のいずれかがプログラムに基づいて処理を実行することで得られる実行結果である。つまり、取得する実行結果は、複数のコア２１ｂ１〜２ｎｂ１の一部、複数の記憶領域３１ｂ１〜３１ｂｎの一部の少なくとも一方の異常によって、複数のコア２１ｂ１〜２ｎｂ１のいずれかが処理を実行することができなかった実行結果である。このように、ＥＣＵ１００ｂは、異常と診断されたコアを含む処理部が、他の処理部からプログラムに基づいた処理の実行結果を取得して、取得した実行結果に基づいて指令を出力する。
【００７７】
記憶部３１ｂは、第１コア２１ｂ１用の第１プログラムが格納された第１記憶領域３１ｂ１、第２コア２２ｂ１用の第２プログラムが格納された第２記憶領域３２ｂ１、第ｎコア２ｎｂ１用の第ｎプログラムが格納された第ｎ記憶領域３ｎｂ１を含んでいる。自己診断回路４１は、自己診断回路４０と同様の診断を行う。診断結果格納部５１は、診断結果格納部５０と同様、診断結果を格納する。
【００７８】
第２ＭＣＵ１２は、演算処理装置としての複数のコア２１ｂ２〜２ｎｂ２、メモリ装置としての記憶部３２ｂ、自己診断回路４２、診断結果格納部５２を備えている。各コア２１ｂ２〜２ｎｂ２は、記憶部３２ｂに記憶されている、それぞれに対応したプログラムに基づいた処理を実行して指令を出力する。また、複数のコア２１ｂ２〜２ｎｂ２のうち少なくとも一つは、上記実施形態と同様、管理システム２００に対して、プログラムのダウンロード（取得）を要求する機能を備えている。さらに、複数のコア２１ｂ２〜２ｎｂ２のうち少なくとも一つは、第１ＭＣＵ１１と同様、他のＭＣＵ１１、１ｎから、プログラムに基づいた処理の実行結果を取得して、取得した実行結果に基づいて指令を出力する機能を備えている。
【００７９】
記憶部３２ｂは、第２コア２２ｂ２用の第２プログラムが格納された第２記憶領域３２ｂ２、第ｎコア２ｎｂ２用の第ｎプログラムが格納された第ｎ記憶領域３ｎｂ２を含んでいる。自己診断回路４２は、自己診断回路４０と同様の診断を行う。診断結果格納部５２は、診断結果格納部５０と同様、診断結果を格納する。
【００８０】
なお、本実施形態では、一例として、第２ＭＣＵ１２の第１コア２１ｂ２が異常と診断された例を採用している。このため、図７に示すように、記憶部３２ｂは、第１コア２１ｂ２に対応する第１プログラムが格納されていない。しかしながら、記憶部３２ｂは、第１コア２１ｂ２が異常と診断されていない場合、第１コア２１ｂ２用の第１プログラムが格納された第１記憶領域を含んでいる。このように、第２ＭＣＵ１２は、異常と診断されたコアを含む処理部に相当する。また、本実施形態では、一例として、第ｎＭＣＵ１ｎの複数のコア２１ｂｎ〜２ｎｂｎ、及び複数の記憶領域３１ｂｎ〜３ｎｂｎが異常と診断されていない例を採用する。
【００８１】
本実施形態では、異常と診断されたコアを含む第２ＭＣＵ１２が、管理システム２００によってプログラムが格納された他のＭＣＵ１１、１ｎからプログラムに基づいた処理の実行結果を取得して、取得した実行結果に基づいて指令を出力するＥＣＵ１００ｂを採用している。しかしながら、本開示は、これに限定されない。ＥＣＵ１００ｂは、異常と診断された記憶領域を含む処理部が、管理システム２００によってプログラムが格納された他の処理部からプログラムに基づいた処理の実行結果を取得して、取得した実行結果に基づいて指令を出力してもよい。
【００８２】
第ｎＭＣＵ１ｎは、演算処理装置としての複数のコア２１ｂｎ〜２ｎｂｎ、メモリ装置としての記憶部３ｎｂ、自己診断回路４ｎ、診断結果格納部５ｎを備えている。各コア２１ｂｎ〜２ｎｂｎは、記憶部３ｎｂに記憶されている、それぞれに対応したプログラムに基づいた処理を実行して指令を出力する。また、複数のコア２１ｂｎ〜２ｎｂｎのうち少なくとも一つは、上記実施形態と同様、管理システム２００に対して、プログラムのダウンロード（取得）を要求する機能を備えている。さらに、複数のコア２１ｂｎ〜２ｎｂｎのうち少なくとも一つは、第１ＭＣＵ１１と同様、他のＭＣＵ１１、１２から、プログラムに基づいた処理の実行結果（演算結果）を取得して、取得した実行結果に基づいて指令を出力する機能を備えている。
【００８３】
記憶部３ｎｂは、第１コア２１ｂｎ用の第１プログラムが格納された第１記憶領域３１ｂｎ、第２コア２２ｂｎ用の第２プログラムが格納された第２記憶領域３２ｂｎ、第ｎコア２ｎｂｎ用の第ｎプログラムが格納された第ｎ記憶領域３ｎｂｎを含んでいる。自己診断回路４ｎは、自己診断回路４０と同様の診断を行う。診断結果格納部５ｎは、診断結果格納部５０と同様、診断結果を格納する。
【００８４】
なお、各ＭＣＵ１１〜１ｎは、上記実施形態と同様、複数のコアを備えていればよい。また、各ＭＣＵ１１〜１ｎは、互いにコアの個数が異なっていてもよい。また、各記憶部３１ｂ〜３ｎｂは、変形例１の記憶部３０ａと同様の構成を適用することもできる。
【００８５】
管理システム２００は、上記実施形態と同様に構成されており、上記実施形態と同様の処理を行う。つまり、管理システム２００は、一部のコアのみが異常と診断されるか、一部の記憶領域のみが異常と診断されるかの少なくとも一方の場合、プログラム配信設備からプログラムをダウンロードする。さらに、管理システム２００は、ダウンロードしたプログラムを、異常と診断されたコア及び記憶領域を含まない他のＭＣＵの記憶領域に格納する。
【００８６】
ここで、電子制御装置の処理動作に関して説明する。ＥＣＵ１００ｂは、電源の供給が開始されると図８のフローチャートに示す処理を実行するとともに、所定時間毎に図８のフローチャートに示す処理を実行する。詳述すると、ＥＣＵ１００ｂは、各ＭＣＵ１１〜１ｎが個別に、図８のフローチャートに示す処理を実行する。なお、ＥＣＵ１００ｂは、例えば車両のイグニッションスイッチがオフからオンに切り替わると電源が供給される。図８、図９では、図２、図３と同じ処理に同じステップ番号を付与している。
【００８７】
ステップＳ２０ｂでは、自己診断を実施する。自己診断回路４１〜４ｎは、同じＭＣＵに設けられている複数のコアと複数の記憶領域の異常診断を行う。つまり、自己診断回路４１は、複数のコア２１ｂ１〜２ｎｂ１と、複数の記憶領域３１ｂ１〜３ｎｂ１の異常診断を行う。自己診断回路４２は、複数のコア２１ｂ２〜２ｎｂ２と、複数の記憶領域３２ｂ２〜３ｎｂ２の異常診断を行う。自己診断回路４２は、第１コア２１ｂ２が異常と診断される前は、記憶部３２ｂにおける第１プログラムが格納された記憶領域の異常診断も行う。自己診断回路４ｎは、複数のコア２１ｂｎ〜２ｎｂｎと、複数の記憶領域３１ｂｎ〜３ｎｂｎの異常診断を行う。また、各自己診断回路４１〜４ｎは、診断結果を診断結果格納部５１〜５ｎに格納する。
【００８８】
ステップＳ３０ｂでは、診断結果判定ロジックを行う。各ＭＣＵ１１〜１ｎは、診断結果判定ロジックを行う。診断結果判定ロジックは、各ＭＣＵ１１〜１ｎの全コア、もしくは少なくとも一つのコアが行う。
【００８９】
ここで、図９を用いて、診断結果判定ロジックに関して説明する。この診断結果判定ロジックは、例えば、各ＭＣＵ１１〜１ｎの第ｎコア２ｎｂ１、２ｎｂ２、２ｎｂｎが行う。
【００９０】
ステップＳ１０１ｂでは、全ＭＣＵのコアと記憶領域に異常があるか否かを判定する。第１ＭＣＵ１１の第ｎコア２ｎｂ１は、各診断結果格納部５１を確認して、複数のコア２１ｂ１〜２ｎｂ１と、複数の記憶領域３１ｂ１〜３ｎｂ１に異常があるか否かを判定する。第２ＭＣＵ１２の第ｎコア２ｎｂ２は、各診断結果格納部５２を確認して、複数のコア２１ｂ２〜２ｎｂ２と、複数の記憶領域３１ｂ２〜３ｎｂ２に異常があるか否かを判定する。第ｎＭＣＵ１ｎの第ｎコア２ｎｂｎは、各診断結果格納部５ｎを確認して、複数のコア２１ｂｎ〜２ｎｂｎと、複数の記憶領域３１ｂｎ〜３ｎｂｎに異常があるか否かを判定する。
【００９１】
各第ｎコア２ｎｂ１は、異常ありと判定した場合はステップＳ１０２へ進み、異常ありと判定しなかった場合は図８のステップＳ５０に戻る。つまり、ＥＣＵ１００ｂは、全ＭＣＵ１１〜１ｎで異常ありと判定しなかった場合は図８のステップＳ５０へ戻る。このようにして、ＥＣＵ１００ｂは、全ＭＣＵ１１〜１ｎを対象として、コアと記憶領域の異常有無を判定する。
【００９２】
ステップＳ１０３ｂでは、あるコアに異常があるか否かを判定する。第１ＭＣＵ１１の第ｎコア２ｎｂ１は、コアのみが異常と診断されていると判定した場合はステップＳ１０４に進み、コアのみが異常と診断されていると判定しなかった場合はステップＳ１０５ｂに進む。第２ＭＣＵ１２の第ｎコア２ｎｂ２は、コアのみが異常と診断されていると判定した場合はステップＳ１０４に進み、コアのみが異常と診断されていると判定しなかった場合はステップＳ１０５ｂに進む。第ｎＭＣＵ１ｎの第ｎコア２ｎｂｎは、コアのみが異常と診断されていると判定した場合はステップＳ１０４に進み、コアのみが異常と診断されていると判定しなかった場合はステップＳ１０５ｂに進む。このようにして、ＥＣＵ１００ｂは、あるコアに異常があるか否かを判定する。
【００９３】
ステップＳ１０５ｂでは、ある記憶領域に異常があるか否かを判定する。第１ＭＣＵ１１の第ｎコア２ｎｂ１は、ある記憶領域が異常と診断されていると判定した場合はステップＳ１０６に進み、ある記憶領域が異常と診断されていると判定しなかった場合はステップＳ１０７に進む。第２ＭＣＵ１２の第ｎコア２ｎｂ２は、ある記憶領域が異常と診断されていると判定した場合はステップＳ１０６に進み、ある記憶領域が異常と診断されていると判定しなかった場合はステップＳ１０７に進む。第ｎＭＣＵ１ｎの第ｎコア２ｎｂｎは、ある記憶領域が異常と診断されていると判定した場合はステップＳ１０６に進み、ある記憶領域が異常と診断されていると判定しなかった場合はステップＳ１０７に進む。このようにして、ＥＣＵ１００ｂは、ある記憶領域に異常があるか否かを判定する。
【００９４】
そして、ステップＳ１０４、Ｓ１０６、Ｓ１０７の処理が終了すると図８のステップＳ５０に戻る。なお、ステップＳ１０４では、どのＭＣＵ１１〜１ｎのどのコアが異常かを確認し、異常箇所に応じた新規プログラムを、異常コアを含むＭＣＵにダウンロードする。また、ステップＳ１０６では、どのＭＣＵ１１〜１ｎのどの記憶領域が異常かを確認し、異常記憶領域を含むＭＣＵに現プログラムをダウンロードして再配置する。さらに、ステップＳ１０７では、異常箇所に応じた新規プログラムを、異常コア及び異常記憶領域を含むＭＣＵにダウンロードして再配置する。
【００９５】
その後、図８のフローチャートに戻る。そして、ステップＳ５０では、ＭＣＵ間の処理再配置ロジックを行う。処理再配置ロジックは、異常と診断されたコアもしくは記憶領域を含んでいるＭＣＵと、異常と診断されたコア及び記憶領域を含んでいないＭＣＵとが実行する。本実施形態では、第１コア２１ｂ２が異常と診断された第２ＭＣＵ１２と、複数のコア２１ｂｎ〜２ｎｂｎ、及び複数の記憶領域３１ｂｎ〜３ｎｂｎが異常と診断されていない第ｎＭＣＵ１ｎが処理再配置ロジックを実行する。
【００９６】
なお、本開示は、異常と診断されたコア及び記憶領域を含んでいないＭＣＵとして、第ｎＭＣＵ１ｎに加えて、第１ＭＣＵ１１を採用することもできる。この場合、第１ＭＣＵ１１は、第ｎＭＣＵ１ｎと同様の処理を行う。
【００９７】
ここで、図１０〜図１２を用いて、処理再配置ロジックに関して説明する。第２ＭＣＵ１２は、処理再配置ロジックとして、図１０のフローチャートに示す処理を行う。一方、第ｎＭＣＵ１ｎは、処理再配置ロジックとして、図１１のフローチャートに示す処理を行う。
【００９８】
処理再配置ロジックでは、図１２に示すように、まず、第２ＭＣＵ１２がステップＳ２０１の処理開始要求を行う。第２ＭＣＵ１２は、一部のコア２１ｂ２のみが異常と診断されているため、この異常によって実行することができない処理の代行を他の第ｎＭＣＵ１ｎに対して行う。ここでは、第２ＭＣＵ１２は、第１コア２１ｂ２が異常でなければ実行する処理を、第ｎＭＣＵ１ｎにかわりに行なってもらうように依頼する。このように、本実施形態では、第２ＭＣＵ１２が代行依頼をした処理部に相当する。
【００９９】
なお、第２ＭＣＵ１２に実行してもらう処理は、第１コア２１ｂ２が異常でなければ実行する全ての処理であってもよいし、一部に処理であってもよい。また、第２ＭＣＵ１２は、正常なコアである第２コア２２ｂ２と、第ｎコア２ｎｂ２の少なくとも一方がステップＳ２０１を実行する。
【０１００】
処理再配置ロジックでは、第ｎＭＣＵ１ｎがステップＳ２１１の処理開始要求を受信する。第ｎＭＣＵ１ｎは、第２ＭＣＵ１２から送信された処理開始要求を受信する。なお、第ｎＭＣＵ１ｎは、処理開始要求を受信すると、ステップＳ２１２以降の処理を開始してもよい。このように、本実施形態では、第ｎＭＣＵ１ｎが代行依頼を受けた他の処理部に相当する。
【０１０１】
ステップＳ２１２では、処理実行が可能であるか否かを判定する。第ｎＭＣＵ１ｎは、第２ＭＣＵ１２から依頼があった処理を実行できるか否か判定する。
【０１０２】
ステップＳ２１３では、判定結果を通知する。第ｎＭＣＵ１ｎは、図１２に示すように、第２ＭＣＵ１２に対して、判定結果を通知する。つまり、第ｎＭＣＵ１ｎは、第２ＭＣＵ１２から依頼があった処理を実行できるか否かを、第２ＭＣＵ１２に通知する。
【０１０３】
ステップＳ２１４では、実行可能である否かを判定する。第ｎＭＣＵ１ｎは、ステップＳ２１２の判定結果に基づいて、第２ＭＣＵ１２から依頼があった処理を実行できるか否かを確認する。そして、第ｎＭＣＵ１ｎは、実行可能と判定した場合はステップＳ２１５へ進み、実行可能と判定しなかった場合は図８に戻る。
【０１０４】
ステップＳ２１５では、処理を実行する。第ｎＭＣＵ１ｎは、第２ＭＣＵ１２から依頼があった処理を実行する。つまり、第ｎＭＣＵ１ｎは、各コア２１ｂｎ〜２ｎｂｎが実行する処理に加えて、２ＭＣＵ１２から依頼があった処理を実行する。
【０１０５】
ステップＳ２１６では、実行結果を通知する。第ｎＭＣＵ１ｎは、図１２に示すように、第２ＭＣＵ１２に対して、実行結果を通知する。つまり、第ｎＭＣＵ１ｎは、第２ＭＣＵ１２から依頼があった処理を実行した実行結果を、第２ＭＣＵ１２に通知（返信）する。
【０１０６】
なお、第ｎＭＣＵ１ｎは、正常なコアである第１コア２１ｂｎ〜第ｎコア２ｎｂｎの少なくとも一つがステップＳ２１１〜Ｓ２１６を実行する。
【０１０７】
ステップＳ２０２では、判定結果を受信する。第２ＭＣＵ１２は、図１２に示すように、第ｎＭＣＵ１ｎがステップＳ２１３で通知した判定結果を受信する。
【０１０８】
ステップＳ２０３では、実行可能か否かを判定する。第２ＭＣＵ１２は、受信した判定結果に基づいて、依頼した処理の実行を、第ｎＭＣＵ１ｎが実行できるか否かを判定する。そして、第２ＭＣＵ１２は、実行可能と判定した場合はステップＳ２０４へ進み、実行可能と判定しなかった場合はステップＳ２０５へ進む。
【０１０９】
ステップＳ２０４では、実行結果を受信する。第２ＭＣＵ１２は、第ｎＭＣＵ１ｎから実行結果を受信する。これによって、第２ＭＣＵ１２は、第１コア２１ｂ２が異常であるにもかかわらず、第１コア２１ｂ２が実行する処理の実行結果を得ることができる。
【０１１０】
ステップＳ２０５では、代替処理を実行する。第２ＭＣＵ１２は、第ｎＭＣＵ１ｎから実行結果を受信することができない場合、第１コア２１ｂ２が実行する処理の代替処理を実行する。なお、第２ＭＣＵ１２は、代替処理を実行するかわりに、第１コア２１ｂ２が処理を実行することで得られる実行結果のかわりとして用いる初期値などの固定値を取得してもよい。
【０１１１】
第２ＭＣＵ１２は、ステップＳ２０４もしくはステップＳ２０５が終了すると、図８のステップＳ４０へ戻る。
【０１１２】
そして、第２ＭＣＵ１２は、ステップＳ２０４を経てステップＳ４０へ戻る場合、返信された実行結果を用いて指令を出力する。つまり、ステップＳ４０では、第２ＭＣＵ１２の第２コア２２ｂ２と第ｎコア２ｎｂ２は、自身に対応したプログラムに基づいて処理を実行するとともに、第ｎＭＣＵ１ｎから取得した実行結果を用いて、指令を出力する。
【０１１３】
一方、第２ＭＣＵ１２は、ステップＳ２０５を経てステップＳ４０へ戻る場合、ステップＳ２０５の代替処理で得られた実行結果を用いて指令を出力する。つまり、ステップＳ４０では、第２ＭＣＵ１２の第２コア２２ｂ２と第ｎコア２ｎｂ２は、自身に対応したプログラムに基づいて処理を実行するとともに、代替処理で得られた実行結果を用いて、指令を出力する。
【０１１４】
このように構成されたＥＣＵ１００ｂは、ＥＣＵ１００と同様の効果を奏することができる。
【０１１５】
（第３実施形態）
ここで、図１３を用いて、第３実施形態の電子制御装置に関して説明する。本実施形態は、複数のＥＣＵ１０１〜１０ｎとプログラム管理システム２００とを含む電子制御装置を採用している。
【０１１６】
本実施形態の電子制御装置は、複数の処理部として複数のＥＣＵ１０１〜１０ｎを備えている点が第２実施形態の電子制御装置と異なる。本変形例では、上記実施形態と同様の構成に対して、上記実施形態と同じ符号を付与している。なお、ここでのｎは、３以上の自然数とする。よって、本実施形態では、三個以上のＥＣＵ１０１〜１０ｎを備えた電子制御装置を採用している。しかしながら、本開示は、これに限定されず、複数のＥＣＵを備えていればよく、ＥＣＵが二個であってもよい。
【０１１７】
第１ＥＣＵ１０１は、第１ＭＣＵ１１を備えている。第２ＥＣＵ１０２は、第２ＭＣＵ１２を備えている。そして、第ｎＥＣＵ１０ｎは、第ｎＭＣＵ１ｎを備えている。各ＭＣＵ１１〜１ｎの構成は、第２実施形態と同様である。
【０１１８】
各ＥＣＵ１０１〜１０ｎは、処理部に相当し、第２実施形態のＭＣＵ１１〜１ｎと同様の処理を行う。このため、各ＥＣＵ１０１〜１０ｎの処理動作は、第２実施形態におけるＭＣＵ１１〜１ｎの処理動作を参照して適用できる。例えば、電子制御装置は、各ＥＣＵ１０１〜１０ｎ間で通信連携する。
【０１１９】
このように構成された電子制御装置は、ＥＣＵ１００と同様の効果を奏することができる。
【符号の説明】
【０１２０】
１０…ＭＣＵ、１１〜１ｎ…第１〜第ｎＭＣＵ、２１，２１ｂ１〜２１ｂｎ…第１コア、２２，２２ｂ１〜２２ｂｎ…第２コア、２ｎ，２ｎｂ１〜２ｎｂｎ…第ｎコア、３０，３０ａ，３１ｂ〜３ｎｂ…記憶部、３１，３１ａ，３１ｂ１，３１ｂｎ…第１記憶領域、３２，３２ａ，３２ｂ１〜３２ｂｎ…第２記憶領域、３３…第３記憶領域、３ｎ，３ｎａ，３ｎｂ１〜３ｎｂｎ…第ｎ記憶領域、３０ｒｏ…ＲＯＭ、３０ｒａ…ＲＡＭ、４０〜４ｎ…自己診断回路、５０〜５ｎ…診断結果格納部、１００、１００ａ、１００ｂ…ＥＣＵ、１０１〜１０ｎ…第１〜第ｎＥＣＵ、２００…プログラム管理システム
【図１】
2020030536.tif 000003
【図２】
2020030536.tif 000004
【図３】
2020030536.tif 000005
【図４】
2020030536.tif 000006
【図５】
2020030536.tif 000007
【図６】
2020030536.tif 000008
【図７】
2020030536.tif 000009
【図８】
2020030536.tif 000010
【図９】
2020030536.tif 000011
【図１０】
2020030536.tif 000012
【図１１】
2020030536.tif 000013
【図１２】
2020030536.tif 000014
【図１３】
2020030536.tif 000015