(57)【要約】【課題】優先順位を変更することなく、外部からの実行要求に応じて、特定のプログラムを高速に実行することが可能な電子制御装置を提供する。【解決手段】電子制御装置１０は、外部からの実行要求に応じて実行される特定のプログラムを、マルチコアマイコン１２の複数のコア１４、１５で実行可能な共通プログラム１９ｂ，２０ｂとしている。そして、外部からの実行要求に基づいて、共通プログラムの実行が必要であることを示す要求情報を設定するＤＭＡコントローラ２３を設けている。複数のコア１４、１５は、それぞれに割り当てられた個別プログラムが終了したときに要求情報を参照する。従って、複数のコアが個別プログラムを実行している最中に実行要求が設定された場合、先に個別プログラムの実行を終了したコアが共通プログラムを実行する。このため、処理の優先順位を変更せずとも、最も早いタイミングで共通プログラムの実行を開始することができる。【選択図】図１
2019212032.tif 000002
【特許請求の範囲】
【請求項１】
マルチコアマイコン（１２）を備える電子制御装置であって、
前記マルチコアマイコンは、複数のコア（１４、１５）にそれぞれに割り当てられた個別プログラム（１９ｃ、２０ｃ）と、前記複数のコアの中の少なくとも２個のコアで実行可能な共通プログラム（１９ｂ、２０ｂ）とを有し、
外部から入力される信号に基づいて、前記共通プログラムの実行が必要であることを示す要求情報を設定する設定部（２３）を備え、
前記複数のコアの中の少なくとも２個のコアは、少なくとも実行中の前記個別プログラムが終了したときに前記要求情報を参照し、前記要求情報が設定されていれば、前記共通プログラムを実行することを特徴とする電子制御装置。
【請求項２】
前記複数のコアの中の少なくとも２個のコアは、前記個別プログラム又は前記共通プログラムを実行していないアイドル状態の間、定期的に前記要求情報を参照し、前記要求情報が設定されていれば、前記共通プログラムを実行することを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記複数のコアの中の少なくとも２個のコアは、前記要求情報を参照する際に、他のコアに対して前記要求情報の参照の禁止を通知して、前記要求情報をロックすることを特徴とする請求項１又は２に記載の電子制御装置。
【請求項４】
前記複数のコアの中の少なくとも２個のコアは、前記要求情報が設定されていない場合、もしくは、前記要求情報が設定されていたことに基づき、前記共通プログラムの実行を決定するか又は実行した場合に、他のコアに対して前記要求情報の参照の禁止解除を通知して、前記要求情報をアンロックすることを特徴とする請求項３に記載の電子制御装置。
【請求項５】
前記設定部は、前記要求情報がロックされている間も、前記要求情報を設定することが可能であることを特徴とする請求項３又は４に記載の電子制御装置。
【請求項６】
前記設定部は、前記要求情報の設定として、要求フラグ（２２）をセットし、
前記複数のコアの中の少なくとも２個のコアは、前記共通プログラムの実行に伴い、前記要求フラグをリセットすることを特徴とする請求項１乃至５のいずれかに記載の電子制御装置。
【請求項７】
前記複数のコアの中の少なくとも２個のコアは、前記共通プログラムの実行前に、前記要求フラグをリセットすることを特徴とする請求項６に記載の電子制御装置。
【請求項８】
前記複数のコアの中の少なくとも２個のコアは、前記共通プログラムの実行後に前記要求フラグを参照し、前記要求フラグがセットされていれば、続けて、前記共通プログラムを実行することを特徴とする請求項７に記載の電子制御装置。
【請求項９】
前記複数のコアの中の少なくとも２個のコアは、前記共通プログラムの実行後に、前記要求フラグをリセットすることを特徴とする請求項６に記載の電子制御装置。
【請求項１０】
前記設定部は、前記要求情報の設定として、外部からの信号に基づく実行要求の回数をカウントするカウンタ（２２ａ）をインクリメントし、
前記複数のコアの中の少なくとも２個のコアは、前記共通プログラムの実行に伴い、前記カウンタをデクリメントすることを特徴とする請求項１乃至５のいずれかに記載の電子制御装置。
【請求項１１】
前記複数のコアの中の少なくとも２個のコアは、前記共通プログラムの実行後に前記カウンタを参照し、前記カウンタの実行要求回数がゼロでなければ、続けて、前記共通プログラムを実行することを特徴とする請求項１０に記載の電子制御装置。
【請求項１２】
前記複数のコアの中の少なくとも２個のコアは、前記カウンタの実行要求回数を参照する際に、他のコアに対して前記カウンタの実行要求回数の参照の禁止を通知して、前記カウンタの実行要求回数をロックした状態で、当該実行要求回数をデクリメントした後、前記共通プログラムの実行前に、他のコアに対して前記カウンタの実行要求回数の参照の禁止解除を通知して、前記カウンタの実行要求回数をアンロックすることを特徴とする請求項１０又は１１に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアマイコンを備える電子制御装置に関する。
【背景技術】
【０００２】
例えば、特許文献１には、マルチコアマイコンの処理速度を向上できるようにした電子制御装置が開示されている。この特許文献１の電子制御装置では、複数のコアの中の第１のコアで実行される複数のタスクの内の第１のタスクが、他のコア（第２のコア）で実行される第２のタスクの完了まで実行を待機する必要がある場合には、第１のタスクの優先順位を、第１のコアにて実行される他のタスク（第３のタスク）よりも低下させる。その結果、第１のコアは、第１のタスクの待機期間中に、第３のタスクを実行することが可能となる。このため、特許文献１の電子制御装置によれば、第１のコアが待機状態となる期間を回避又は減少させることができ、それにより、全タスクの実行完了時間を早めることが可能となる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−２０６８１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、例えば車両のエンジンの燃料噴射や点火時期を制御する用途に、特許文献１に開示されるような電子制御装置を適用した場合、外部からの実行要求（例えば、エンジンの回転角度に基づく燃料噴射指令や点火指令）に応じて、インジェクタや点火コイルへの駆動信号を出力するための特定のプログラムを実行する必要が生じる場合がある。
【０００５】
しかしながら、特許文献１の電子制御装置では、複数のタスクは、予め実行されるコアが定められ、各コアに割り振られている。このため、外部からの実行要求があったときに、特定のプログラムが割り振られたコア以外のコアがプログラムを実行していないアイドル状態であったとしても、特定のプログラムが割り振られたコアが他のプログラムを実行中であった場合には、即座に特定のプログラムの実行を開始することができない。
【０００６】
また、特許文献１の電子制御装置では、優先順位の変更により実行順序を入れ替える場合、待機中のタスクの優先順位を、実行するタスクの優先順位よりも低下させる必要がある。さらに、待機中のタスクの優先順位を低下させた場合、他のコアで実行中のタスクが完了したタイミングなどで、低下させた優先順位を元の優先順位に戻すことも必要となる。このように、優先順位の変更処理は煩雑なものとなる虞がある。
【０００７】
本発明は、上述した点に鑑みてなされたものであり、優先順位を変更することなく、外部から入力される信号に基づく実行要求に応じて、特定のプログラムを高速に実行することが可能な電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明による電子制御装置はマルチコアマイコン（１２）を備え、
マルチコアマイコンは、複数のコア（１４、１５）にそれぞれに割り当てられた個別プログラム（１９ｃ、２０ｃ）と、複数のコアの中の少なくとも２個のコアで実行可能な共通プログラム（１９ｂ、２０ｂ）とを有し、
外部から入力される信号に基づいて、共通プログラムの実行が必要であることを示す要求情報を設定する設定部（２３）を備え、
複数のコアの中の少なくとも２個のコアは、少なくとも実行中の個別プログラムが終了したときに要求情報を参照し、要求情報が設定されていれば、共通プログラムを実行することを特徴とする。
【０００９】
本発明による電子制御装置では、まず、外部からの信号に基づく実行要求に応じて実行される特定のプログラムを、マルチコアマイコン（１２）の複数のコア（１４，１５）の内、少なくとも２個のコアで実行可能な共通プログラム（１９ｂ，２０ｂ）としている。そして、外部からの信号に基づいて、共通プログラムの実行が必要であることを示す要求情報を設定する設定部（２３）を設けている。複数のコアの中の少なくとも２個のコアは、少なくとも実行中の個別プログラムが終了したときに要求情報を参照する。従って、例えば少なくとも２個のコアが個別プログラムを実行中に、実行要求が設定された場合、先に個別プログラムの実行を終了したコアが共通プログラムを実行する。このため、処理の優先順位を変更せずとも、最も早いタイミングで共通プログラムの実行を開始することができ、特定プログラム（共通プログラム）のリアルタイム性を向上することができる。
【００１０】
上記括弧内の参照番号は、本開示の理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら発明の範囲を制限することを意図したものではない。
【００１１】
また、上述した特徴以外の、特許請求の範囲の各請求項に記載した技術的特徴に関しては、後述する実施形態の説明及び添付図面から明らかになる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態の電子制御装置の構成を示す構成図である。
【図２】第１実施形態の電子制御装置の第１コア及び第２コアにて実行される制御処理を示すフローチャートである。
【図３】図２のフローチャートの制御処理による、各部の動作の一例を示すタイミングチャートである。
【図４】第２実施形態の電子制御装置の第１コア及び第２コアにて実行される制御処理を示すフローチャートである。
【図５】図４のフローチャートの制御処理による、各部の動作の一例を示すタイミングチャートである。
【図６】第３実施形態の電子制御装置の第１コア及び第２コアにて実行される制御処理を示すフローチャートである。
【図７】図６のフローチャートの制御処理による、各部の動作の一例を示すタイミングチャートである。
【図８】第４実施形態の電子制御装置の構成を示す構成図である。
【図９】第４実施形態の電子制御装置の第１コア及び第２コアにて実行される制御処理を示すフローチャートである。
【図１０】図９のフローチャートの制御処理による、各部の動作の一例を示すタイミングチャートである。
【図１１】第５実施形態の電子制御装置の第１コア及び第２コアにて実行される制御処理を示すフローチャートである。
【図１２】図１１のフローチャートの制御処理による、各部の動作の一例を示すタイミングチャートである。
【発明を実施するための形態】
【００１３】
（第１実施形態）
以下、本発明の第１実施形態について、図面を参照しつつ説明する。図１は、第１実施形態の電子制御装置１０を含む制御システム全体を示す構成図である。
【００１４】
電子制御装置１０は、例えば車両のエンジンの燃料噴射や点火時期を制御する用途に適用される。この場合、電子制御装置１０は、信号発生源３０からのエンジンの回転角度に基づく燃料噴射指令や点火指令に応じて、外部負荷３１としてのインジェクタや点火コイルへの駆動信号を出力するための特定プログラム（共通プログラム）を実行する。すなわち、信号発生源３０からの燃料噴射指令や点火指令が、特定プログラムの実行要求となる。特定プログラムが実行されることにより、外部負荷３１の駆動信号が生成され、この駆動信号は、出力ドライバ１３を介して外部負荷３１に与えられる。
【００１５】
信号発生源３０は、例えば、電子制御装置１０とは別の電子制御装置からなり、エンジンの回転角度及び回転速度を検出するクランク角センサ及びカム角センサの検出信号、アクセルペダルの踏み込み量を検出するアクセルセンサの検出信号、エンジンの水温を検出する水温センサの検出信号、車両の走行速度を検出する速度センサの検出信号などに基づき、最適なタイミングで燃料噴射や点火が行われるように、特定プログラムの実行要求としての燃料噴射指令や点火指令を生成して電子制御装置１０に出力する。
【００１６】
ただし、信号発生源３０は、上述した各種のセンサとし、電子制御装置１０が、それら各種のセンサの検出信号を入力し、入力した検出信号に基づき、燃料噴射タイミングや点火タイミングを決定してもよい。この場合、電子制御装置１０は、決定したタイミングに即して特定プログラムを実行すべく、そのタイミングの到来に応じて後述する共通プログラム実行要求フラグ２２をセットすればよい。
【００１７】
また、信号発生源３０が出力する燃料噴射指令に、噴射すべき燃料量を示す情報が含まれてもよい。あるいは、信号発生源３０から燃料噴射指令を受けた電子制御装置１０において、エンジンの運転状態や燃料圧力などに基づき、噴射すべき燃料量を算出してもよい。特定プログラムがインジェクタに対する駆動信号を生成するものである場合、指示もしくは算出された燃料量がインジェクタから噴射されるように、特定プログラムにより、インジェクタ内の燃料圧力に基づき、インジェクタへの駆動信号の出力期間が算出される。そして、電子制御装置１０は、算出した出力期間に渡って、インジェクタへ駆動信号を出力する。
【００１８】
電子制御装置１０は、図１に示すように、入力回路１１、マルチコアマイコン１２、及び出力ドライバ１３を有する。入力回路１１は、信号発生源３０から入力される入力信号に対して、フィルタ処理、増幅処理、及び／又は波形整形処理などの入力処理を施した上で、入力信号をマルチコアマイコン１２に受け渡す。出力ドライバ１３は、マルチコアマイコン１２から出力された駆動信号を、外部負荷３１を駆動可能なレベルの駆動信号に増幅する。
【００１９】
マルチコアマイコン１２は、第１コア１４、第２コア１５、ＲＯＭ１８、共有ＲＡＭ２１、ダイレクトメモリアクセス（ＤＭＡ）コントローラ２３、入出力インターフェースを提供するＩ／Ｏ回路２４、２５、及び、これらの各構成を相互に接続する内部バス２６を備えている。なお、図１には、マルチコアマイコン１２として、第１及び第２コア１４，１５を備えたデュアルコアマイコンを示しているが、マルチコアマイコン１２のコアの数は３個以上であってもよい。
【００２０】
第１及び第２コア１４、１５は、それぞれローカルＲＡＭ１６、１７を有している。第１及び第２コア１４、１５は、演算処理の結果をローカルＲＡＭ１６，１７などに一時的に記憶しつつ、ＲＯＭ１８に記憶されたプログラムに応じた演算処理を実行する。これにより、第１及び第２コア１４，１５は、上述した外部負荷３１としてのインジェクタや点火コイルへの駆動信号を生成して出力したり、噴射すべき燃料量を算出したりするための処理を実施する。
【００２１】
ＲＯＭ１８は、第１及び第２コア１４、１５にて実行されるプログラムを記憶している。本実施形態では、図１に示すように、ＲＯＭ１８は、第１コア用ＯＳ１９ａ、共通プログラム１９ｂ、及び第１コア用個別プログラム１９ｃを含む、第１コア１４にて実行される第１コア用プログラム１９と、第２コア用ＯＳ２０ａ、共通プログラム２０ｂ、及び第２コア用個別プログラム２０ｃを含む、第２コア１５にて実行される第２コア用プログラム２０とを個別に保存している。ここで、共通プログラム１９ｂと共通プログラム２０ｂとは同じものであり、ともに、信号発生源３０からの特定プログラム実行要求に応じて実行され、外部負荷３１への駆動信号を出力するためのものである。一方、第１コア用個別プログラム１９ｃと第２コア用個別プログラム２０ｃとは異なるものであり、第１及び第２コア１４、１５の並列処理によって全体の処理速度が向上するように、第１及び第２コア１４，１５にそれぞれ割り振られたものである。
【００２２】
しかしながら、第１コア用プログラム１９と第２コア用プログラム２０とは、第１及び第２コア１４，１５のそれぞれに割り振られた個別プログラム１９ｃ、２０ｃだけを含み、ＯＳ及び／又は共通プログラムについては、第１及び第２コア１４、１５で共用されるプログラムがＲＯＭ１８に記憶されてもよい。
【００２３】
共有ＲＡＭ２１は、第１及び第２コア１４、１５がともにアクセス可能なもので、上述したローカルＲＡＭ１６，１７と同様に、一時的な記憶領域として利用される。この共有ＲＡＭ２１には、例えば、第１及び第２コア１４，１５の双方で利用されるデータなどが保存される。そのデータには、図１に示す共通プログラム実行要求フラグ２２も含まれる。共通プログラム実行要求フラグ２２は、電子制御装置１０が信号発生源３０から特定プログラムの実行要求を入力したとき「１」にセットされる。そして、第１及び第２コア１４、１５のいずれかで共通プログラムが実行されることに伴い「０」にリセットされる。
【００２４】
本実施形態では、ＤＭＡコントローラ２３が、設定部として、信号発生源３０からの特定プログラムの実行要求に応じて、共有ＲＡＭ２１内の共通プログラム実行要求フラグ２２を「１」にセットする。一方、共通プログラム実行要求フラグ２２の「０」へのリセットは、共通プログラム１９ｂ、２０ｂを実行した第１コア１４もしくは第２コア１５によって行われる。ただし、共通プログラム実行要求フラグ２２の「１」へのセットも、第１コア１４又は第２コア１５によって行われてもよい。この場合、共通プログラム実行要求フラグ２２のセットを行うコアを、第１コア１４と第２コア１５のいずれかに固定しつつ、共通プログラム実行要求フラグ２２のセット処理を最も優先度の高い処理として割り込み処理してもよいし、処理状況に応じて第１コア１４と第２コア１５のいずれかにおいて選択的にセット処理を行うようにしてもよい。
【００２５】
共通プログラム実行要求フラグ２２が「１」にセットされると、第１コア１４と第２コア１５の内、プログラムを実行していないアイドル状態にあるコア、もしくは、個別プログラムにおける高優先度処理を先に終了したコアが、共通プログラム実行要求フラグ２２の参照結果に基づき、共通プログラム１９ｂ、２０ｂを実行して駆動信号を生成し、外部負荷３１に出力する。
【００２６】
なお、第１コア用個別プログラム１９ｃ及び／又は第２コア用個別プログラム２０ｃが共通プログラムよりも優先度の低い低優先度処理を含み、第１及び第２コア１４、１５の少なくとも一方がその低優先度処理を実行している場合には、共通プログラム実行要求フラグ２２が「１」にセットされたときに、低優先度処理に対して共通プログラム１９ｂ、２０ｂを割込処理してもよい。
【００２７】
次に、上述した構成を備えた電子制御装置１０において、第１及び第２コア１４、１５の内、より早期に共通プログラム１９ｂ、２０ｂを実行可能となったコアにより、共通プログラムを実行させるための処理について、図２のフローチャート及び図３のタイミングチャートを参照して説明する。なお、図２のフローチャートに示す処理は、第１コア用ＯＳ１９ａ及び第２コア用ＯＳ２０ａにより、第１及び第２コア１４、１５において定期的に実行される。以下においては、図２のフローチャートに示す処理が第１コア１４にて実行される場合を例として説明する。
【００２８】
図２のフローチャートのステップＳ１００では、第１コア１４は、個別プログラムの高優先度処理を実行中であるか否かを判定する。この判定処理において、個別プログラムの高優先度処理の実行中ではないと判定した場合、共通プログラムの実行が可能な状態であるとみなして、ステップＳ１１０の処理に進む。一方、個別プログラムの高優先度処理の実行中であると判定した場合、ステップＳ１００の処理を繰り返すことにより、高優先度処理の終了を待機する。なお、第１コア１４が共通プログラムの実行可能状態となるのは、高優先度処理の実行を終了したときに加え、プログラムを実行していないアイドル状態であるとき、及び個別プログラムの低優先度処理を実行しているときである。第１コア１４が、これらの中のいずれかの状態であるとき、ステップＳ１００において、第１コア１４は、高優先度処理の実行中ではないと判定する。
【００２９】
ステップＳ１１０では、第２コア１５が第１コア１４よりも先に共通プログラムの実行可能な状態となり、第２コア１５が共通プログラム実行要求フラグ２２をロックしているか否かを判定する。この判定処理において、共通プログラム実行要求フラグ２２がロックされていると判定した場合、図２のフローチャートに示す処理を終了する。例えば、図３のタイミングチャートに示すように、時間Ｂのときに、第２コア１５が個別プログラムを終了し、共通プログラムの実行が可能な状態となると、第２コア１５は、共通プログラム実行要求フラグ２２をロックする。これにより、第１コア１４は、ステップＳ１１０にて、共通プログラム実行要求フラグ２２がロックされていると判定することになる。一方、共通プログラム実行要求フラグ２２がロックされていないと判定した場合、ステップＳ１２０の処理に進む。ステップＳ１２０では、第１コア１４は、他のコアである第２コア１５に対して、共通プログラム実行要求フラグ２２の参照を禁止するように通知して、共通プログラム実行要求フラグ２２をロックする。
【００３０】
本実施形態では、上述したように、第１及び第２コア１４、１５とも、共通プログラムを実行可能に構成される。このため、第１及び第２コア１４、１５がほぼ同時期に共通プログラムを実行可能な状態となったときに、重複して共通プログラムを実行してしまう可能性が生じる。このような重複実行を回避するため、本実施形態では、先に共通プログラムを実行可能な状態となった第１又は第２コア１４、１５は、共通プログラム実行要求フラグ２２を参照する前に、他のコアに対して、共通プログラム実行要求フラグ２２の参照を禁止するように通知して、共通プログラム実行要求フラグ２２をロックするのである。このように、先に共通プログラムを実行可能な状態となったコアが共通プログラム実行要求フラグ２２をロックすることで、上述したステップＳ１１０の処理により、遅れて共通プログラムを実行可能な状態となったコアは、共通プログラム実行要求フラグ２２を参照することなく、ひいては、共通プログラムを実行することなく、図２のフローチャートに示す処理を終了する。
【００３１】
続くステップＳ１３０では、共通プログラム実行要求フラグ２２が「１」にセットされているか否かを判定する。例えば、図３のタイミングチャートに示すように、時間Ｄのときに、信号発生源３０から共通プログラム実行要求があり、共有ＲＡＭ２１内の共通プログラム実行要求フラグ２２が「１」にセットされている場合、時間Ｅのときに、第１コア１４が共通プログラム実行要求フラグ２２を参照すると、第１コア１４は、共通プログラム実行要求フラグ２２は「１」にセットされていると判定する。共通プログラム実行要求フラグ２２が「１」にセットされていると判定した場合、ステップＳ１４０の処理に進む。一方、共通プログラム実行要求フラグ２２が「１」にセットされていないと判定した場合、ステップＳ１６０の処理に進む。
【００３２】
ステップＳ１４０では、第１コア１４は、共通プログラム実行要求フラグ２２を「０」にリセットする。これにより、図３のタイミングチャートに示すように、共通プログラム実行要求フラグ２２が、時間Ｅのときに、「１」から「０」に変化する。そして、第１コア１４は、ステップＳ１５０において、共通プログラムを実行する。これにより、図３のタイミングチャートに示すように、第１コア１４において、共通プログラムが時間Ｅから時間Ｆまで実行される。この共通プログラムの実行により出力すべき駆動信号が生成される。駆動信号は、例えば図３に示すように、共通プログラムの実行終了後の時間Ｆから出力が開始される。その後、処理はステップＳ１６０に進む。ただし、外部負荷３１への駆動信号の出力タイミングは、共通プログラムの実行が終了した直後に限らず、例えば、共通プログラムの実行が終了した時点より任意のディレイ時間を設け、そのディレイ時間後であってもよい。
【００３３】
ステップＳ１６０では、第１コア１４は、他のコアである第２コア１５に対して共通プログラム実行要求フラグ２２の参照の禁止解除を通知して、共通プログラム実行要求フラグ２２をアンロックする。つまり、第１コア１４は、共通プログラム実行要求フラグ２２が「１」にセットされていない場合、及び共通プログラム実行要求フラグ２２がセットされていたことに基づき、共通プログラムを実行した場合に、共通プログラム実行要求フラグ２２をアンロックする。
【００３４】
以上説明したように、本実施形態の電子制御装置１０では、信号発生源３０からの実行要求に応じて実行される共通プログラムを、マルチコアマイコン１２の第１及び第２コア１４，１５で実行可能としている。そして、信号発生源３０からの実行要求に応じて、ＤＭＡコントローラ２３が、共通プログラムの実行が必要であることを示す共通プログラム実行要求フラグ２２をセットするようにしている。そして、第１及び第２コア１４，１５は、少なくとも実行中の個別プログラムの高優先度処理が終了したときに共通プログラム実行要求フラグ２２を参照する。従って、例えば第１及び第２コア１４，１５が高優先度処理を実行中に、共通プログラム実行要求フラグ２２がセットされた場合、先に高優先度処理の実行を終了したコアが共通プログラムを実行する。このため、処理の優先順位を変更せずとも、最も早いタイミングで共通プログラムの実行を開始することができ、共通プログラムのリアルタイム性を向上することができる。
【００３５】
（第２実施形態）
次に、本発明の第２実施形態について、図面を参照しつつ説明する。なお、本実施形態の電子制御装置１０は、第１実施形態の電子制御装置１０と同様に構成されるので、説明を省略する。
【００３６】
上述した第１実施形態の電子制御装置１０では、図２のフローチャートのステップＳ１４０で共通プログラム実行要求フラグ２２が「０」にリセットされる。このため、例えば、その直後（共通プログラムの実行中）に、ＤＭＡコントローラ２３が、信号発生源３０からの共通プログラム実行要求に応じて、共通プログラム実行要求フラグ２２を「１」にセットした場合であっても、共通プログラムが実行可能か否かの判断は、図２のフローチャートが起動される次回以降まで待たなければならない。なお、ＤＭＡコントローラ２３は、第１コア１４によって共通プログラム実行要求フラグ２２がロックされている間も、共通プログラム実行要求フラグ２２を「１」にセットすることが可能である。
【００３７】
そこで、第２実施形態の電子制御装置１０では、図４のフローチャートに示すように、上述した第１実施形態の図２のフローチャートのステップＳ１５０の後に、ステップＳ１５２の処理を追加した。具体的には、ステップＳ１５０の共通プログラムの実行中に、ＤＭＡコントローラ２３が共通プログラム実行要求フラグ２２を「１」にセットする場合に備えて、共通プログラムの実行後に、ステップＳ１５２において、再度、共通プログラム実行要求フラグ２２が「１」にセットされているか否かを判定するようにした。この判定処理において、共通プログラム実行要求フラグ２２が「１」にセットされていると判定されると、第１コア１４は、ステップＳ１４０及びステップＳ１５０の処理を再実行する。なお、図４のフローチャートの他のステップにおける処理は、第１実施形態と同様であるため、説明を省略する。
【００３８】
以上のようなステップＳ１５２の処理の追加により、例えば、図５のタイミングチャートに示すように、第２コア１５による共通プログラムの実行中の時間Ｄのときに、ＤＭＡコントローラ２３が共通プログラム実行要求フラグ２２を「１」にセットした場合、第２コア１５は、共通プログラムの実行が終了した後の時間Ｅのときに、ステップＳ１４０及びＳ１５０の処理を再度実行する。これにより、第２コア１５において、共通プログラム実行要求フラグ２２のリセット処理と、共通プログラムの実行処理が行なわれる。このように、本実施形態の電子制御装置１０では、第２コア１５により、共通プログラムが連続して実行されることを可能としたので、共通プログラムのリアルタイム性をさらに向上することができる。
【００３９】
（第３実施形態）
次に、本発明の第３実施形態について、図面を参照しつつ説明する。なお、本実施形態の電子制御装置１０は、第１実施形態の電子制御装置１０と同様に構成されるので、説明を省略する。
【００４０】
上述した第２実施形態では、共通プログラムの実行期間中に、ＤＭＡコントローラ２３が共通プログラム実行要求フラグ２２を「１」にセットした場合、連続して、共通プログラムを実行することができるように構成した。しかしながら、共通プログラムの実行中に発生した共通プログラムの実行要求は無視するようにしてもよい。第３実施形態の電子制御装置１０は、共通プログラムの実行期間中に発生した共通プログラムの実行要求を無視できるようにしたものである。
【００４１】
そのため、第３実施形態の電子制御装置１０では、図６のフローチャートに示すように、上述した第１実施形態の図２のフローチャートのステップＳ１５０の後に、共通プログラム実行要求フラグ２２を「０」にリセットするステップＳ１５４の処理を追加した。これにより、ステップＳ１５０の共通プログラムの実行中に、ＤＭＡコントローラ２３が共通プログラム実行要求フラグ２２を「１」にセットしても、共通プログラムの実行後に、再度、共通プログラム実行要求フラグ２２が「０」にリセットされる。このため、共通プログラムの実行中に発生した共通プログラムの実行要求は無視される。なお、図６のフローチャートの他のステップにおける処理は、第１実施形態と同様であるため、説明を省略する。また、共通プログラムを実行する前に、共通プログラム実行要求フラグ２２を「０」にリセットするステップＳ１４０の処理は省略されてもよい。
【００４２】
以上のようなステップＳ１５４の処理の追加により、例えば、図７のタイミングチャートに示すように、第２コア１５による共通プログラムの実行中の時間Ｄのときに、ＤＭＡコントローラ２３が共通プログラム実行要求フラグ２２を「１」にセットしても、第２コア１５は、共通プログラムの実行が終了した時間Ｅのときに、単に、その共通プログラム実行要求フラグ２２を「０」にリセットする。このため、第２コア１５は、連続的に共通プログラムを実行せず、共通プログラムの実行回数は、共通プログラム実行要求の回数よりも少なくなる。
【００４３】
（第４実施形態）
次に、本発明の第４実施形態について、図面を参照しつつ説明する。図８は、本実施形態の電子制御装置１０を含む制御システム全体の構成を示す構成図である。
【００４４】
上述した第１〜第３実施形態の電子制御装置１０では、共有ＲＡＭ２１に共通プログラム実行要求フラグ２２を設けていた。それに対して、本実施形態の電子制御装置１０は、図８に示すように、共通プログラム実行要求カウンタ２２ａを設けた点が異なる。本実施形態の電子制御装置１０のその他の構成は、第１実施形態の電子制御装置１０と同様であるので、説明を省略する。
【００４５】
共通プログラム実行要求カウンタ２２ａは、信号発生源３０から共通プログラム実行要求が電子制御装置１０に入力されると、ＤＭＡコントローラ２３によってインクリメントされる。一方、共通プログラム実行要求カウンタ２２ａは、第１及び第２コア１４、１５によって共通プログラムが実行されることに伴い、第１及び第２コア１４、１５によってデクリメントされる。
【００４６】
このように、共通プログラム実行要求フラグ２２に代えて、共通プログラム実行要求カウンタ２２ａを用いることで、信号発生源３０から入力された共通プログラム実行要求の回数を記憶しておくことができる。その結果、共通プログラム実行要求の回数分だけ、確実に共通プログラムを実行することが可能となる。
【００４７】
図９は、第４実施形態の電子制御装置１０が、第１及び第２コア１４、１５の内、より早期に共通プログラム１９ｂ、２０ｂを実行可能となったコアにより、共通プログラムを実行させるための処理を示すフローチャートである。図９のフローチャートに示す処理も、図２のフローチャートの処理と同様に、第１コア用ＯＳ１９ａ及び第２コア用ＯＳ２０ａにより、第１及び第２コア１４、１５において定期的に実行される。また、図１０は、図９のフローチャートが実行されたときの各部の動作を示すタイミングチャートである。以下においては、図９のフローチャートに示す各処理が第２コア１５にて実行される場合を例として説明する。
【００４８】
図９のフローチャートのステップＳ２００では、図２のフローチャートのステップＳ１００と同様に、第２コア１５は、個別プログラムの高優先度処理を実行中であるか否かを判定する。この判定処理において、個別プログラムの高優先度処理の実行中ではないと判定した場合、共通プログラムの実行が可能な状態であるとみなして、ステップＳ２１０の処理に進む。一方、個別プログラムの高優先度処理の実行中であると判定した場合、ステップＳ２００の処理を繰り返すことにより、高優先度処理の終了を待機する。
【００４９】
ステップＳ２１０では、第１コア１４が第２コア１５よりも先に共通プログラムの実行可能な状態となり、第１コア１４が共通プログラム実行要求カウンタ２２ａをロックしているか否かを判定する。この判定処理において、共通プログラム実行要求カウンタ２２ａがロックされていると判定した場合、図９のフローチャートに示す処理を終了する。例えば、図１０のタイミングチャートに示すように、時間Ｃのときに、第２コア１５が個別プログラムを終了し、共通プログラムの実行が可能な状態となると、第２コア１５は、共通プログラム実行要求カウンタ２２ａをロックする。これにより、第１コア１４は、ステップＳ２１０にて、共通プログラム実行要求カウンタ２２ａがロックされていると判定することになる。一方、共通プログラム実行要求カウンタ２２ａがロックされていないと判定した場合、ステップＳ２２０の処理に進む。ステップＳ２２０では、第２コア１５は、他のコアである第１コア１４に対して、共通プログラム実行要求カウンタ２２ａの参照を禁止するように通知して、共通プログラム実行要求カウンタ２２ａをロックする。
【００５０】
このように、第１実施形態と同様に、先に共通プログラムを実行可能な状態となったコアが共通プログラム実行要求カウンタ２２ａをロックすることで、上述したステップＳ２１０の処理により、遅れて共通プログラムを実行可能な状態となったコアは、共通プログラム実行要求カウンタ２２ａを参照することなく、ひいては、共通プログラムを実行することなく、図９のフローチャートに示す処理を終了する。
【００５１】
続くステップＳ２３０では、共通プログラム実行要求カウンタ２２ａのカウント値が「０」以外の値であるか否かを判定する。例えば、図１０のタイミングチャートに示すように、共通プログラム実行要求カウンタ２２ａのカウント値は、時間Ａのときの信号発生源３０から共通プログラム実行要求に応じて「０」から「１」へ変化し、さらに、時間Ｂのときの信号発生源３０から共通プログラム実行要求に応じて「１」から「２」へ変化する。このように、共通プログラム実行要求カウンタ２２ａのカウント値が「０」以外の値である場合、ステップＳ２３０の判定結果が「Ｙｅｓ」となり、ステップＳ２４０の処理に進む。一方、共通プログラム実行要求カウンタ２２ａのカウント値が「０」である場合、ステップＳ２３０の判定結果が「Ｎｏ」となり、ステップＳ２６０の処理に進む。
【００５２】
ステップＳ２４０では、第２コア１５は、共通プログラム実行要求カウンタ２２ａをデクリメントする。これにより、たとえば図１０のタイミングチャートに示すように、共通プログラム実行要求カウンタ２２ａが、時間Ｃのときに、「２」から「１」に変化する。そして、第２コア１５は、ステップＳ２５０において、共通プログラムを実行する。これにより、図１０のタイミングチャートに示すように、第２コア１５において、共通プログラムが時間Ｃから時間Ｄまで実行される。この共通プログラムの実行により出力すべき駆動信号が生成される。駆動信号は、例えば図１０に示すように、共通プログラムの実行終了後の時間Ｄから出力が開始される。
【００５３】
そして、第２コア１５は、ステップＳ２５２において、再度、共通プログラム実行要求カウンタ２２ａのカウント値が「０」以外の値であるか否かを判定する。例えば図１０に示すように、時間Ｃで共通プログラム実行要求カウンタ２２ａが「２」から「１」に変化した場合、共通プログラムの実行後の時間Ｄで実施されるステップＳ２５２において、共通プログラム実行要求カウンタ２２ａのカウント値は「０」以外の値と判定される。すると、第２コア１５は、再びステップＳ２４０及びＳ２５０の処理を実行する。これにより、図１０に示すように、時間Ｄで共通プログラム実行要求カウンタ２２ａのカウント値は「１」から「０」に変化し、さらに、時間Ｄから時間Ｅまで共通プログラムが実行される。
【００５４】
ステップＳ２６０では、第２コア１５は、他のコアである第１コア１４に対して共通プログラム実行要求カウンタ２２ａの参照の禁止解除を通知して、共通プログラム実行要求カウンタ２２ａをアンロックする。
【００５５】
以上のように、本実施形態の電子制御装置１０では、信号発生源３０から入力される共通プログラムの実行要求の回数をカウントする共通プログラム実行要求カウンタ２２ａを用いているので、共通プログラム実行要求の回数分だけ、確実に共通プログラムを実行することが可能となる。
【００５６】
（第５実施形態）
次に、本発明の第５実施形態について、図面を参照しつつ説明する。なお、本実施形態の電子制御装置１０は、第４実施形態の電子制御装置１０と同様に構成されるので、説明を省略する。
【００５７】
上述した第４実施形態の電子制御装置１０では、図９のフローチャートのステップＳ２６０で共通プログラム実行要求カウンタ２２ａがアンロックされる。このため、一方のコアで共通プログラムを実行する場合、他のコアでは、一方のコアにおける共通プログラムの実行の終了まで、共通プログラムを実行することができない。それに対して、本実施形態の電子制御装置１０では、一方のコアにおける共通プログラムの実行の終了を待たずに、他のコアにおいて共通プログラムの実行が開始できるようにしたものである。
【００５８】
そのため、本実施形態の電子制御装置１０では、図１１のフローチャートに示すように、ステップＳ２４０にて共通プログラム実行要求カウンタ２２ａをデクリメントした後、かつステップＳ２５０にて共通プログラムを実行する前に、ステップＳ２４２において、他のコアに対して共通プログラム実行要求カウンタ２２ａのカウント値の参照の禁止解除を通知して、共通プログラム実行要求カウンタ２２ａをアンロックする。この結果、例えば図１２のタイミングチャートに示すように、第２コア１５にて時間Ｃから開始された共通プログラムが時間Ｅで終了する前に、時間Ｄより第１コア１４が共通プログラムの実行を開始することが可能となる。これにより、共通プログラム実行要求カウンタ２２ａに複数回の共通プログラムの実行要求が記憶されている場合に、複数のコアを用いて、効率的に共通プログラムを実行させることができる。
なお、図１１のフローチャートでは、ステップＳ２５０で共通プログラムの実行が完了すると、ステップＳ２１０の処理に戻り、共通プログラム実行要求カウンタ２２ａがロックされているかどうかを確認する。共通プログラム実行要求カウンタ２２ａがロックされていなければ、ステップＳ２２０にて、共通プログラム実行要求カウンタ２２ａをロックした上で、ステップＳ２３０において、まだ共通プログラム実行要求カウンタ２２ａが「０」以外の値であるかどうかを確認する。この際、共通プログラム実行要求カウンタ２２ａの値が「０」であれば、ステップＳ２６２にて共通プログラム実行要求カウンタ２２ａをアンロックして、図１１のフローチャートに示す処理を終了する。一方、共通プログラム実行要求カウンタ２２ａの値が「０」以外であれば、再度、ステップＳ２４０以降の処理を実行する。
【００５９】
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
【００６０】
例えば、上述した第１〜第５実施形態では、マルチコアマイコン１２としてのデュアルコアマイコンに含まれるすべてのコアが共通プログラムを実行可能に構成されていた。しかしながら、例えば、マルチコアマイコン１２のコア数が３以上である場合、必ずしもすべてのコアが共通プログラムを実行可能である必要はなく、少なくとも２個のコアで共通プログラムが実行可能に構成されてもよい。このような構成であっても、共通プログラムのリアルタイム性の向上を図ることができるためである。
【符号の説明】
【００６１】
１０：電子制御装置、１１：入力回路、１２：マルチコアマイコン、１３：出力ドライバ、１４：第１コア、１５：第２コア、１６、１７：ローカルＲＡＭ、１８：ＲＯＭ、１９：第１コア用プログラム、１９ａ：第１コア用ＯＳ、１９ｂ：共通プログラム、１９ｃ：第１コア用個別プログラム、２０：第２コア用プログラム、２０ａ：第２コア用ＯＳ、２０ｂ：共通プログラム、２０ｃ：第２コア用個別プログラム、２１：共有ＲＡＭ、２２：共通プログラム実行要求フラグ、２２ａ：共通プログラム実行要求カウンタ、２３：ＤＭＡコントローラ、２４、２５：Ｉ／Ｏ回路、２６：内部バス、３０：信号発生源、３１：外部負荷
【図１】
2019212032.tif 000003
【図２】
2019212032.tif 000004
【図３】
2019212032.tif 000005
【図４】
2019212032.tif 000006
【図５】
2019212032.tif 000007
【図６】
2019212032.tif 000008
【図７】
2019212032.tif 000009
【図８】
2019212032.tif 000010
【図９】
2019212032.tif 000011
【図１０】
2019212032.tif 000012
【図１１】
2019212032.tif 000013
【図１２】
2019212032.tif 000014