(57)【要約】      （修正有）【課題】故障しているコアの数によらずに、初期化を正常時と同等の時間で実施することが可能な自動車用電子制御装置を提供する。【解決手段】コア１１１０がコア１１２０に問題データを送信する。受信した問題データを元に、予め決められた計算式で回答データを算出し、コア１１１０に返信する。コア１１１０はコア１１２０から回答データを受信する。コア１１１０は予めプログラムに埋め込まれた正解データを用い、コア１１２０から返信されたデータと照合する。コア１１２０の算出したデータと正解データが一致すれば正常と判断しコア１１２０は通常制御行う。一方コア１１２０の算出した回答データと正解データが一致しない場合はコア１１２０を停止する。前記ロジックにおいて、コア１１１０とコア１１２０を入れ替えることで、コア１１２０の診断を行う。【選択図】図５
2018151717.tif 000002
【特許請求の範囲】
【請求項１】
車両機能を制御するＣＰＵを有し、
前記CPU内部の演算部であるコアを複数有し、
前記複数のコアにより共通部の初期化を行う自動車用電子制御装置であって、
ECU起動後、コアの故障判定を行う前に、複数のコアで同一の初期化プログラムを実行することを特徴とする自動車用電子制御装置
【請求項２】
前記コアを３個以上有し、
初期化処理前に予めペアとなるコアを決めておき、そのペアごとに同一の機能の初期化を実施することを特徴とする請求項１に記載の自動車用電子制御装置。
【請求項３】
あるコアAがあるコアBに優先して前記初期化プログラムを開始し、途中で前記初期化の順位を入れ替えて、前記コアBが前記コアAに優先して初期化を行うことを特徴とする請求項１に記載の自動車用電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動車用電子制御装置の初期化技術に関する。
【背景技術】
【０００２】
近年、自動車用電子制御装置では複数の演算ユニット（以下、コア）を有する１つのＣＰＵ（以下、マルチコアＣＰＵという）を備えた自動車用電子制御装置が普及しつつある。マルチコアCPUの目的の一つに、あるコアの故障に対する堅牢制があげられる。すなわち、あるコアが故障し、これを他コアが検知した場合に、正常なコアにより故障したコアの処理を代替して行う。多くの場合、処理量を減らして縮退運転を行う。装置が完全に停止するよりも、機能を限定して縮退運転を行う方が、安全である。縮退運転時においても、正常時の通常制御と同等の安全性を確保する。そのためには、処理時間の長期化を避け、簡素な処理を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２００６０２特許文献１では、マルチコアCPUにおいて、独立にあるコアAとあるコアBが初期化処理を行うことで起動時間の短縮を可能にする。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
初期化時点でマルチコアCPUのコアAが故障している場合においても、コアBによる縮退運転を行うため、電子制御装置の初期化を行い起動する。このとき、コアAで初期化している機能は初期化されないという課題がある。
【０００５】
また、初期化は、必ずしも均等に並列化できない課題がある。たとえば、起動後、コアAがCPUクロックの設定を行っている間、コアBは他機能の初期化を行うことが出来ない。あるいは、機能によって初期化量の大小があり、コアAの初期化中にコアBに待ちが発生する場合がある。このように、コアAが初期化中にコアBに待ちが発生する場合がある。
【０００６】
また、正常時よりも異常時の初期化完了時間が遅くなる課題がある。初期化が完了した後にコアの正常判定を行った時点でコアAについて故障を検知したとする。この場合、前記故障したコアAが初期化した機能に関しては、コアBが初期化をやり直す必要がある。すべての機能の初期化をコアBが行うことになり、コアAの初期化処理時間とコアBの初期化処理時間の差、すなわち、コアBの待ち時間分だけ、正常時よりも異常時の方が初期化時間は長くなる。
【０００７】
本発明は、これらの課題を解決するための手段である。
【課題を解決するための手段】
【０００８】
上記課題を解決するために本発明の自動車用電子制御装置は、複数のコアで同時に初期化処理を開始し、複数のコアで同じ機能に対して重複して初期化処理をする。
【発明の効果】
【０００９】
本発明によれば、故障しているコアの数によらずに、初期化を正常時と同等の時間で実施することが可能である。これにより、運転者に違和感を与えない。また、ソフトウェア制御の開始時刻がハードウェアの起動時間に対して一定となり、ハードウェア制御の制御ロジックを、正常時と異常時で切り替える必要が無くなる。
【図面の簡単な説明】
【００１０】
【図１】自動車用電子制御装置の概略図である。
【図２】２つの正常なコアによる初期化処理を示す図である。
【図３】コアの相互監視による故障判定方法を示す図である。
【図４】制御用個別部初期化を含む初期化処理を示す図である。
【図５】コア異常時の初期化処理を示す図である。
【図６】初期化時にRAMの設定と故障判定を行う図である。
【図７】初期化時にRAMの設定と故障判定を行う処理手順を示す図である。
【図８】他方のコアの初期化が正しく実施されているかを判定する図である。
【図９】3つ以上のコアによる初期化処理後に通常制御実施を示す図である。
【発明を実施するための形態】
【００１１】
以下に本発明の実施形態について、図面を用いて説明する。
【実施例１】
【００１２】
本発明の実施例１について、図１から図３を用いて説明する。
【００１３】
図１に示すように、自動車用電子制御装置１０（以下、ＥＣＵ）には、外部バッテリから電源が供給され電源ＩＣによって電源制御される。ユーザがイグニッションスイッチをＯＮすると、電源ＩＣは外部接続ポートからマイコン１００に電源が供給されると共にリセット信号をマイコン１００に入力する。リセット信号により、マイコン１００に内蔵されているＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１００の内にあるコア１１１０、コア１１２０、コア１１３０、コア１１４０までのコアが同時に演算を開始する。
【００１４】
実施例１として、コア数Nが２の場合について、初期化手順を図２に示す。
【００１５】
実施例1においては、各コアで使用する初期化プログラムはROM１３００に格納されており、CPU１１１０はROM1300からプログラムを読み出して実行する。
【００１６】
初期化手順を図２に示す。
【００１７】
リセット信号により演算を開始するタイミングがt1000である。タイミングt1000において、コア1110は初期化プログラム1500に従い、マイコン100の各機能の初期化を開始する。たとえば、クロックやタイマ、外部出力、共有メモリであり、コア1110とコア1120で共通に使用する機能である。
【００１８】
一方、コア1120も初期化プログラム1500に従い、マイコン100の各機能の初期化を開始する。すなわち、コア1110とコア1120は同一のプログラムを用いる。これにより、プログラムの作成および管理が容易となる。
【００１９】
コア1110とコア1120が同時にプログラムを実行する場合、演算はそれぞれのコアで独立しているため、時間的に同時刻に実行可能である。ところが、共有機能、たとえば図１の共有レジスタ1101にアクセスする場合、資源競合が発生する。CPUではこのような競合を調停するため、バス1190に調停機能がある。すなわち、コア1110とコア1120が同時に実行開始しても、共有機能の設定を行う際に、ハードウェアの調停機能により、たとえばコア1110が優先されてコア1120が待たされ、競合を起こすことなく、初期化は正常に行われる。この副作用として、コア1110とコア1120の実行時間がずれることになる。この時間は、資源共有待ち時間t212であり、自動車の挙動に影響が及ぶことや、運転者が気づく時間ではない。いずれにせよ、コア1110が初期化処理10011を完了した時点t1001において、コア1120の初期化処理10021は実行中である。そのため、この時点でコア1110がコア1120の故障判定を行うと、コア1120が返答できずに判断ミスを起こす可能性がある。そこで、初期化処理と故障判定の間に明示的に待ち処理を行う。これらの待ち処理が10012と10022である。
【００２０】
その後、相互にコアの故障判定を行う。コアの相互監視による故障判定方法を図３に示す。
【００２１】
Ｓ３４００において、コア１１１０がコア１１２０に問題データを送信する。コア１１２０はＳ３５００でコア１１１０から送信された問題データを受信する。Ｓ３５０１で受信した問題データを元に、予め決められた計算式で回答データを算出し、Ｓ３５０２でコア１１１０に返信する。コア１１１０はＳ３４０１でコア１１２０から回答データを受信する。
【００２２】
Ｓ３４０２において、コア１１１０は予めプログラムに埋め込まれた正解データを用い、コア1120から返信されたデータと照合する。コア１１２０の算出したデータと正解データが一致すれば正常と判断しコア１１２０は通常制御行うＳ３０４３。一方コア１１２０の算出した回答データと正解データが一致しない場合はＳ３４０４にてコア１１２０を停止する。
【００２３】
前記ロジックにおいて、コア１１１０とコア1120を入れ替えることで、コア1120の診断を行う。
【００２４】
故障判定により両方のコアの正常が確認されれば、制御2015と2025を行う。正常時の制御は各コアで機能分配された、最適な制御である。
【００２５】
一方、コア1110がコア1120の異常を検知した場合、縮退運転モードに切り替える。この場合、コア1110のみで運転するため、制御2015は縮退運転用となる。
【００２６】
この場合においても機能の初期化は完了しているため、やり直す必要は無い。すなわち、正常時と同じ時間で機能の初期化が完了し、縮退運転モードへの移行開始が可能である。
【００２７】
本実施例ではコア１１１０とコア１１２０に同一の初期化プログラムを用いるため、プログラムの作成及び管理が容易となる。
【実施例２】
【００２８】
本発明の実施例２について、図４と図５を用いて説明する。なお、実施例１と同様の構成については説明を省略する。
【００２９】
実施例２においては、図４に示すように、故障判定を行うための最低限の初期化である共通部初期化と、制御のための初期化である個別部初期化に分けて、初期化を実施する。
【００３０】
実施例１と同様に共通部初期化１１０１１と共通部初期化１１０２１は、同一のプログラムである。あるいは、共通部初期化１１０１１でレジスタ1101を初期化中に、資源競合を避けるため、共通部初期化１１０２１は共有RAM1200の初期化を行い、その後、共通部初期化11011で共有RAM1200を初期化中に、共通部初期化１１０２１がレジスタ1101の初期化を行っても良い。これにより、資源競合待ちが発生せずに高速化が見込める。
【００３１】
故障判定は実施例１と同様である。
【００３２】
故障判定の結果、正常な場合、コア１１１０は、制御11015に合わせて個別部初期化 11014を行う。例えば、ローカルRAM1150の初期化である。また、コア１１２０は、制御11025に合わせて個別部初期化 11024を行う。
【００３３】
一方、故障判定11013にてコア１１２０の故障を検知した場合、図５に示すように縮退運転モードへ切り替える12015。
【００３４】
個別部初期化 12014は縮退運転用の初期化であり、例えば、個別部初期化 11014とは、ローカルRAM1150の値が異なる。また、停止処理１２０２４は、例えば無限ループ処理やコア1110によるコア１１２０クロック停止処理であり、故障したコア１１２０が共有機能に対してアクセスしないようにする。
【００３５】
実施例２では、起動から故障判定までの時間を、正常時とコア故障時で同等とすることが可能である。
【実施例３】
【００３６】
本発明の実施例３について、図６から図８を用いて説明するなお、先の実施例と同様の構成については説明を省略する。
【００３７】
実施例3においては、初期化時にRAMの設定と故障判定を行う。初期化処理を図６に示す。
【００３８】
リセット信号により演算を開始するタイミングがｔ２１０である。タイミングｔ２１０において、コア１１１０は共通部初期化プログラム２１１１に従い、マイコン１００の共有メモリ１２００の初期化を開始する。
【００３９】
一方、コア１１２０も共通部初期化プログラム２１２２に従い、マイコン１００の各機能の初期化を開始する。
【００４０】
このときの共通初期化プログラム２１１１の処理を図７に示す。
【００４１】
すなわち、Ｇｌｏｂａｌ  ＲＡＭ１２００に格納される変数ａの初期化Ｓ３０００、変数ｂの初期化Ｓ３００１、変数ｃの初期化Ｓ３００２を実施する。
【００４２】
この間にコア１１２０は、共通部初期化プログラム２1２１を実施するが、この処理を図８に示す。すなわち、Ｓ３１００でコア１１２０は、コア１１１１０が行った初期化が正しく実施されているかを初期化変数ａの読み出し、書き込み予定のデータと照合して正確性を確認するS3100。
【００４３】
初期化が正常に実施されていないと判断するとコア１１１０のコア正常フラグをＯＦＦにするS3101。ちなみに、コア正常フラグは、Ｓ３１００以前にONとしておく。この場合、コア１１１０で初期化が正常に実施できなかったので、Ｓ３１０２にてコア１１２０が変数ａの初期化を実施する。この手順を変数ｂ及びｃにも実施する。
【００４４】
本処理により、コア１１１０の故障判定が可能である。この時点でコア１１２０の診断は完了していない。次に、コア１１２０の診断を行うために、実行順番を入れ替える。処理2111と処理2121では、処理2121に判定処理があるので、処理時間が長くなる。そこで、コア1110は待ち処理2112を行い、コア1120が共通部初期化2123を開始するまで待つ。共通部初期化2123の処理を図７に示す。また、共通部初期化2113の処理を図８に示す。先行するコア1120のRAM初期化をコア1110が読み出し診断することで、コア1120が異常な場合にコア1120正常フラグによる診断を行う。
【００４５】
コア１１２０は処理時間差の調整のため、待ち処理２１２２を行う。
【００４６】
最後に、故障判定２１１４および故障判定２１２４で、コア正常フラグを判定して、相互にコア故障を検知する。
【００４７】
例えば、コア1120が停止している場合、コア1120正常フラグはOFFとなる。コア1120の正常時と故障時でコア1110の処理は変わらないため、起動完了t215の時間は同等である。
【００４８】
本実施例により、コアの初期化完了とともにコア故障の検知が可能である。
【実施例４】
【００４９】
本発明の実施例４について、図９を用いて説明する。なお、先の実施例と同様の構成については説明を省略する。
【００５０】
本実施例では、コア数Nが３以上のCPUの場合の初期化手順を図９を用いて示す。
【００５１】
リセット信号により演算を開始するタイミングがｔ２２０である。タイミングｔ２２０において、コア１１１０は共通部初期化プログラム２２１１に従い、マイコン１００の各機能の初期化を開始する。
【００５２】
一方、コア１１２０、コア１１３０、コア１１４０も各共通部初期化プログラムに従い、マイコン１００の各機能の初期化を開始する。
【００５３】
コア数が、３以上の場合は、予めペアとなるコアを決めておき、そのペアによって故障判定を実施する。例えばコア１１１０とコア１１２０、コア１１３０とコア１１４０とする。
【００５４】
このように予めペアとなるコアを用いて、実施例１で示した共通部初期化、故障判定、個別部初期化をペアのコア同士で実施する。つまりコア１１１０はペアではないコア１１３０やコア１１４０の共通部初期化処理を待つ必要がなく、ペアのコア１１２０の共通部初期化処理2221が完了するのを待つだけで良い。
【００５５】
但し、通常制御を開始するタイミングである通常制御開始ｔ２２６は全てのコアで揃える必要があるため、各コアで個別部初期化処理完了後にコア１１１０の待ち処理２２１５、コア１１２０の待ち処理２２２５、コア１１３０の待ち処理２２３５、コア１１４０の待ち処理２２４５を実施する。
【００５６】
本実施例において、どのコアが故障したとしても、起動時間は正常時と同等である。
【図１】
2018151717.tif 000003
【図２】
2018151717.tif 000004
【図３】
2018151717.tif 000005
【図４】
2018151717.tif 000006
【図５】
2018151717.tif 000007
【図６】
2018151717.tif 000008
【図７】
2018151717.tif 000009
【図８】
2018151717.tif 000010
【図９】
2018151717.tif 000011