(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-08
(45)【発行日】2024-04-16
(54)【発明の名称】車載ECU、プログラム、及び情報処理方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20240409BHJP
B60R 16/02 20060101ALI20240409BHJP
G06F 9/455 20180101ALI20240409BHJP
【FI】
G06F9/50 120A
B60R16/02 660T
G06F9/455 150
(21)【出願番号】P 2020189749
(22)【出願日】2020-11-13
【審査請求日】2023-03-30
(73)【特許権者】
【識別番号】000183406
【氏名又は名称】住友電装株式会社
(74)【代理人】
【識別番号】100114557
【氏名又は名称】河野 英仁
(74)【代理人】
【識別番号】100078868
【氏名又は名称】河野 登夫
(72)【発明者】
【氏名】野口 康彦
(72)【発明者】
【氏名】宮田 秀俊
(72)【発明者】
【氏名】堀 広生
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2010-170320(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
B60R 16/02
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
車両に搭載される車載ECUであって、
複数のプログラムを実行する制御部と、
前記制御部によって起動される仮想化オペレーティングシステムが記憶されている記憶部とを備え、
前記仮想化オペレーティングシステムを起動することにより複数の仮想環境が生成され、前記プログラムは前記仮想環境を動作環境とするものであり、
前記仮想化オペレーティングシステムを管理する管理部は、前記複数の仮想環境の内のいずれかの仮想環境にて実行されるプログラムにおけるタスク完了通知に基づき、前記いずれかの仮想環境に割り当てられていた前記制御部の割当時間帯を、他の仮想環境に割り当て
、
前記記憶部には、前記複数の仮想環境に対する前記制御部の割当時間帯を定める割当時間情報が記憶されており、
前記割当時間情報は、前記いずれかの仮想環境の割当時間帯と、前記いずれかの仮想環境に対し次位の仮想環境の割当時間帯とを含み、
前記他の仮想環境に割り当てられる割当時間帯は、前記管理部がタスク完了通知を取得した以降から、前記次位の仮想環境の割当時間帯の開始時点までであり、
前記管理部は、
前記タスク完了通知を取得した時点から、前記次位の仮想環境の割当時間帯の開始時点までの残余時間を算出し、
前記残余時間が、前記他の仮想環境を動作環境とするプログラムに対し予め定められている設定時間以上である場合、前記いずれかの仮想環境に割り当てられていた前記制御部の割当時間帯を、前記他の仮想環境に割り当てる
車載ECU。
【請求項2】
前記管理部は、
前記タスク完了通知を取得した時点から、前記次位の仮想環境の割当時間帯の開始時点までの残余時間を算出し、
前記残余時間が、前記他の仮想環境を動作環境とするプログラムに対し予め定められている設定時間未満である場合、前記いずれかの仮想環境に割り当てられていた前記制御部の割当時間帯を、前記他の仮想環境に割り当てることなく、前記いずれかの仮想環境への割り当てを継続する
請求項
1に記載の車載ECU。
【請求項3】
前記割当時間情報において定められる仮想環境それぞれに対する割当時間帯に基づく割当周期は、前記いずれかの仮想環境にて実行されるプログラムにおけるタスクの開始周期よりも、短い
請求項1又は請求項2に記載の車載ECU。
【請求項4】
前記いずれかの仮想環境を動作環境とするプログラムの優先度は、前記他の仮想環境を動作環境とするプログラムの優先度よりも高く、
前記優先度は、ISO26262のASIL(Automotive Safety Integrity Level)に基づき決定される
請求項1から請求項
3のいずれか1項に記載の車載ECU。
【請求項5】
車両に搭載され、複数のプログラムを実行するコンピュータに、
前記コンピュータの記憶部に記憶されている仮想化オペレーティングシステムを起動することにより、複数の仮想環境を生成し、
前記仮想環境を、前記プログラムを実行するにあたっての動作環境とし、
前記複数の仮想環境の内のいずれかの仮想環境にて実行されるプログラムにおけるタスク完了通知に基づき、前記いずれかの仮想環境に割り当てられていた前記コンピュータの制御部の割当時間帯を、他の仮想環境に割り当て
、
前記記憶部には、前記複数の仮想環境に対する前記制御部の割当時間帯を定める割当時間情報が記憶されており、
前記割当時間情報は、前記いずれかの仮想環境の割当時間帯と、前記いずれかの仮想環境に対し次位の仮想環境の割当時間帯とを含み、
前記他の仮想環境に割り当てられる割当時間帯は、タスク完了通知を取得した以降から、前記次位の仮想環境の割当時間帯の開始時点までであり、
前記タスク完了通知を取得した時点から、前記次位の仮想環境の割当時間帯の開始時点までの残余時間を算出し、
前記残余時間が、前記他の仮想環境を動作環境とするプログラムに対し予め定められている設定時間以上である場合、前記いずれかの仮想環境に割り当てられていた前記制御部の割当時間帯を、前記他の仮想環境に割り当てる
処理を実行させるプログラム。
【請求項6】
車両に搭載され、複数のプログラムを実行するコンピュータに、
前記コンピュータの記憶部に記憶されている仮想化オペレーティングシステムを起動することにより、複数の仮想環境を生成し、
前記仮想環境を、前記プログラムを実行するにあたっての動作環境とし、
前記複数の仮想環境の内のいずれかの仮想環境にて実行されるプログラムにおけるタスク完了通知に基づき、前記いずれかの仮想環境に割り当てられていた前記コンピュータの制御部の割当時間帯を、他の仮想環境に割り当て
、
前記記憶部には、前記複数の仮想環境に対する前記制御部の割当時間帯を定める割当時間情報が記憶されており、
前記割当時間情報は、前記いずれかの仮想環境の割当時間帯と、前記いずれかの仮想環境に対し次位の仮想環境の割当時間帯とを含み、
前記他の仮想環境に割り当てられる割当時間帯は、タスク完了通知を取得した以降から、前記次位の仮想環境の割当時間帯の開始時点までであり、
前記タスク完了通知を取得した時点から、前記次位の仮想環境の割当時間帯の開始時点までの残余時間を算出し、
前記残余時間が、前記他の仮想環境を動作環境とするプログラムに対し予め定められている設定時間以上である場合、前記いずれかの仮想環境に割り当てられていた前記制御部の割当時間帯を、前記他の仮想環境に割り当てる
処理を実行させる情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、車載ECU、プログラム、及び情報処理方法に関する。
【背景技術】
【0002】
車両に搭載され、当該車両に搭載された機器の制御や、車外通信、自動運転等の走行制御に関する情報処理を行う電子制御装置が知られている(例えば特許文献1)。特許文献1の電子制御装置は、複数のコアを有するマルチコアCPUを備え、マルチコアCPU上で複数のプログラムシステムが、動作する。電子制御装置は、各プログラムシステムのオペレーティングシステムにおいて、システムの状態の変化に応じて各プログラムシステムに割当てるコアを変更するように構成されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1の電子制御装置は、実行されたタスク処理の終了に応じて、他のタスク処理にCPUコア等のハードウェアリソースを割り当てる点に関する考慮されていないという問題点がある。
【0005】
本開示は、実行されたプログラムの状態に応じて、他のプログラムにCPU等のハードウェアリソースを効率的に割り当てることができる車載ECU等を提供する。
【課題を解決するための手段】
【0006】
本開示の一態様に係る車載ECUは、車両に搭載される車載ECUであって、複数のプログラムを実行する制御部と、前記制御部によって起動される仮想化オペレーティングシステムが記憶されている記憶部とを備え、前記仮想化オペレーティングシステムを起動することにより複数の仮想環境が生成され、前記プログラムは前記仮想環境を動作環境とするものであり、前記仮想化オペレーティングシステムを管理する管理部は、前記複数の仮想環境の内のいずれかの仮想環境にて実行されるプログラムにおけるタスク完了通知に基づき、前記いずれかの仮想環境に割り当てられていた前記制御部の割当時間帯を、他の仮想環境に割り当てる。
【発明の効果】
【0007】
本開示の一態様によれば、実行されたプログラムの状態に応じて、他のプログラムにCPU等のハードウェアリソースを効率的に割り当てることができる車載ECU等を提供する。
【図面の簡単な説明】
【0008】
【
図1】実施形態1に係る車載ECUを含む車載システムの構成を例示する模式図である。
【
図2】車載ECUの物理構成を例示するブロック図である。
【
図3】車載ECUの論理構成(仮想ECU)を例示するブロック図である。
【
図4】仮想ECUにおける機能部を例示する機能ブロック図である。
【
図5】割当時間テーブル(割当時間情報)を例示する説明図である。
【
図6】仮想環境に対する制御部の割当時間帯に関する説明図である。
【
図7】車載ECU(仮想ECU)の制御部(仮想制御部)の処理を例示するフローチャートである。
【
図8】実施形態2に係る割当時間テーブル(割当時間情報)を例示する説明図である。
【
図9】仮想環境に対する制御部の割当時間帯に関する説明図である。
【発明を実施するための形態】
【0009】
[本発明の実施形態の説明]
最初に本開示の実施態様を列挙して説明する。また、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
【0010】
(1)本開示の一態様に係る車載ECU(Electronic Control Unit)は、車両に搭載される車載ECUであって、複数のプログラムを実行する制御部と、前記制御部によって起動される仮想化オペレーティングシステムが記憶されている記憶部とを備え、前記仮想化オペレーティングシステムを起動することにより複数の仮想環境が生成され、前記プログラムは前記仮想環境を動作環境とするものであり、前記仮想化オペレーティングシステムを管理する管理部は、前記複数の仮想環境の内のいずれかの仮想環境にて実行されるプログラムにおけるタスク完了通知に基づき、前記いずれかの仮想環境に割り当てられていた前記制御部の割当時間帯を、他の仮想環境に割り当てる。
【0011】
本態様にあたっては、プログラムにおいて定義(コーディング)されている内容に基づき、単一又は複数のタスク(処理)が実行される。当該タスクは周期的に実行(起動)されるものであり、すなわちタスクは周期的に開始され、予め定められている内容に基づいた情報処理を行うことにより、当該タスクは完了(終了)する。プログラムを実行するにあたり生成されたプロセスは、タスクが完了した際、タスク完了通知を仮想化オペレーティングシステムの管理部に出力する。当該管理部は、仮想化オペレーティングシステムによって生成された仮想環境を管理するための管理プログラムを実行するにあたり生成されたプロセスに相当する。例えば、ハイパーバイザー方式の仮想化オペレーティングシステムを用いた場合、車載機器等の制御を行うプログラムの動作環境となる仮想環境は、仮想ECUに相当する。従って、仮想化オペレーティングシステムを用いることにより、車載ECUにおいて、実行するプログラムの個数又は種類に応じて、複数の仮想ECUを構成することができる。また、仮想環境を管理する管理プログラムの動作環境となる仮想環境についても、仮想ECUに相当するものであってもよい。このような複数の仮想環境(仮想ECU)が構成される車載ECUにおいて、管理部は、仮想環境にて実行されるプログラムからのタスク完了通知を取得した場合、当該仮想環境に割り当てられていた制御部の割当時間帯を、他の仮想環境に割り当てる。すなわち、管理部は、当該タスク完了通知に基づき、仮想環境それぞれに対する制御部の割当時間帯を、再スケジュールする処理を行う。これにより、当該プログラムにおけるタスク完了後の空き時間を、当該プログラム以外の他のプログラムを実行する他の仮想環境に割り当て、当該他の仮想環境を動作環境とする他のプログラムを実行することができる。従って、プログラムにおけるタスク完了後の空き時間を有効活用することにより、複数の仮想環境によって共用される制御部等のハードウェアリソースを効率的に割り当てるスケジューリングを行い、制御部(CPU)における実質的な使用率(CPU使用率)を向上させることができる。
【0012】
(2)本開示の一態様に係る車載ECUは、前記記憶部には、前記複数の仮想環境に対する前記制御部の割当時間帯を定める割当時間情報が記憶されており、前記割当時間情報は、前記いずれかの仮想環境の割当時間帯と、前記いずれかの仮想環境に対し次位の仮想環境の割当時間帯とを含み、前記他の仮想環境に割り当てられる割当時間帯は、前記管理部がタスク完了通知を取得した以降から、前記次位の仮想環境の割当時間帯の開始時点までである。
【0013】
本態様にあたっては、複数の仮想環境に対する制御部の割当時間帯を定める割当時間情報(割当時間テーブル)は、記憶部に記憶されており、仮想化オペレーティングシステムの管理部は、当該割当時間情報を参照することにより、それぞれの仮想環境に対し、制御部の利用時間を割り当てる。これにより、例えば、制御部がシングルコアの単一CPUにて構成されている場合であっても、当該コアによる処理能力を時間分割(タイムシェリング)して、仮想環境それぞれに対する処理時間を確保することができる。また、制御部がマルチコアの単一CPU又は複数CPUにて構成されている場合であっても、各コアに対して同様の時間分割を行い、仮想環境それぞれに対する処理時間を確保することができる。割当時間情報において、いずれかの仮想環境の割当時間帯と、当該いずれかの仮想環境に対し次位の仮想環境の割当時間帯とが、定義されているところ、他の仮想環境に割り当てられる割当時間帯は、管理部がタスク完了通知を取得した以降から、次位の仮想環境の割当時間帯の開始時点までとしてある。従って、他の仮想環境に割り当てられる割当時間帯の終了時点は、当該次位の仮想環境の割当時間帯の開始時点に応じて決定(拘束)されるものとなる。これにより、他の仮想環境による割当時間帯の影響を受けることなく、当該次位の仮想環境の割当時間帯に基づき、当該次位の仮想環境の割当時間帯に対する制御部の利用時間の割当を行うことができる。タスク完了通知に基づき他の仮想環境に制御部の利用時間が割り当てられた場合であっても、当該次位の仮想環境の割当時間帯も含め、割当時間情報によるスケジューリングを変更することなく、当該割当時間情報にて予め定められているとおり、各仮想環境に対し適切に制御部の利用時間を割り当てる。これにより、当該仮想環境を動作環境とするプログラムを効率的に実行することができる。
【0014】
(3)本開示の一態様に係る車載ECUは、前記管理部は、前記タスク完了通知を取得した時点から、前記次位の仮想環境の割当時間帯の開始時点までの残余時間を算出し、前記残余時間が、前記他の仮想環境を動作環境とするプログラムに対し予め定められている設定時間以上である場合、前期いずれかの仮想環境に割り当てられていた前記制御部の割当時間帯を、前記他の仮想環境に割り当てる。
【0015】
本態様にあたっては、管理部は、いずれかの仮想環境にて実行されるプログラムによるタスク完了通知を取得した際、当該取得時点から次位の仮想環境の割当時間帯の開始時点までの残余時間が、他の仮想環境を動作環境とするプログラムに対し予め定められている設定時間以上である場合、他の仮想環境に対し制御部の利用時間を割り当てる。従って、算出した残余時間に応じて、他の仮想環境に対する適切な割り当てを行うことができる。
【0016】
(4)本開示の一態様に係る車載ECUは、前記管理部は、前記タスク完了通知を取得した時点から、前記次位の仮想環境の割当時間帯の開始時点までの残余時間を算出し、前記残余時間が、前記他の仮想環境を動作環境とするプログラムに対し予め定められている設定時間未満である場合、前記いずれかの仮想環境に割り当てられていた前記制御部の割当時間帯を、前記他の仮想環境に割り当てることなく、前記いずれかの仮想環境への割り当てを継続する。
【0017】
本態様にあたっては、管理部は、算出した残余時間が他の仮想環境を動作環境とするプログラムに対し予め定められている設定時間未満である場合、制御部の割当時間帯(利用時間)を他の仮想環境に割り当てることなく、前期いずれかの仮想環境への割り当てを継続する。仮想環境を動作環境とするプログラムに対し予め定められている設定時間は、例えば、当該プログラムにおけるタスクの処理に要すると想定される時間(想定処理時間)であるところ、残余時間が設定時間未満である場合、他の仮想環境に割り当てることなく、いずれかの仮想環境への割り当てを継続することにより、管理部が不要な処理を行うことによるオーバヘッドを抑制することができる。
【0018】
(5)本開示の一態様に係る車載ECUは、前記割当時間情報において定められる仮想環境それぞれに対する割当時間帯に基づく割当周期は、前記いずれかの仮想環境にて実行されるプログラムにおけるタスクの開始周期よりも、短い。
【0019】
本態様にあたっては、割当時間情報にて定められる仮想環境の割当周期は、当該仮想環境を動作環境とするプログラムにおけるタスクの開始周期よりも、短い周期(時間)としてある。従って、いずれかの仮想環境に制御部が割り当てられた際、当該仮想環境を動作環境とするプログラムにおけるタスクが開始されないことも想定されるところ、このような場合であってもタスク完了通知に基づき、管理部は、いずれかの仮想環境に割り当てられていた制御部の割当時間帯を、他の仮想環境に割り当てる。これにより、制御部の空き時間を有効活用し、制御部の使用率(CPU使用率)を向上させることができる。
【0020】
(6)本開示の一態様に係る車載ECUは、前記いずれかの仮想環境を動作環境とするプログラムの優先度は、前記他の仮想環境を動作環境とするプログラムの優先度よりも高く、前記優先度は、ISO26262のASIL(Automotive Safety Integrity Level)に基づき決定される。
【0021】
本態様にあたっては、いずれかの仮想環境を動作環境とするプログラムは、割当時間情報に基づき定常的に実施され、他の仮想環境を動作環境とするプログラムは、当該いずれかの仮想環境を動作環境とするプログラムによるタスク完了通知がされた以降の空き時間を用いて実施される。当該タスク完了通知は、いずれかの仮想環境に対する割当時間帯において常に行われるものではないため、当該他の仮想環境を動作環境とするプログラムは、タスク完了通知に基づき非定常に実施されるものとなる。これに対し、定常的に実施されるプログラムの優先度は、非定常に実施される実施されるプログラムの優先度よりも高いものとしてあり、当該優先度はASIL(Automotive Safety Integrity Level)に基づき決定される。従って、例えば、定常的に実施されるプログラムは、ASIL-DからASIL-Aレベルまでのプログラムとし、非定常に実施されるプログラムは、QMレベルのプログラムとすることにより、個々のプログラムに要求される機能安全を鑑みた制御部の割り当て(スケジューリング)を行いつつ、当該制御部の使用率(CPU使用率)の向上を図ることができる。
【0022】
(7)本開示の一態様に係るプログラムは、車両に搭載され、複数のプログラムを実行するコンピュータに、前記コンピュータの記憶部に記憶されている仮想化オペレーティングシステムを起動することにより、複数の仮想環境を生成し、前記仮想環境を、前記プログラムを実行するにあたっての動作環境とし、前記複数の仮想環境の内のいずれかの仮想環境にて実行されるプログラムにおけるタスク完了通知に基づき、前記いずれかの仮想環境に割り当てられていた前記コンピュータの制御部の割当時間帯を、他の仮想環境に割り当てる。
【0023】
本態様にあたっては、コンピュータを、実行されたプログラムの状態に応じて、他のプログラムにCPU等のハードウェアリソースを効率的に割り当てることができる車載ECUとして機能させることができる。
【0024】
(8)本開示の一態様に係る情報処理方法は、車両に搭載され、複数のプログラムを実行するコンピュータに、前記コンピュータの記憶部に記憶されている仮想化オペレーティングシステムを起動することにより、複数の仮想環境を生成し、前記仮想環境を、前記プログラムを実行するにあたっての動作環境とし、前記複数の仮想環境の内のいずれかの仮想環境にて実行されるプログラムにおけるタスク完了通知に基づき、前記いずれかの仮想環境に割り当てられていた前記コンピュータの制御部の割当時間帯を、他の仮想環境に割り当てる。
【0025】
本態様にあたっては、コンピュータを、実行されたプログラムの状態に応じて、他のプログラムにCPU等のハードウェアリソースを効率的に割り当てることができる車載ECUとして機能させる情報処理方法を提供することができる。
【0026】
[本開示の実施形態の詳細]
本開示をその実施の形態を示す図面に基づいて具体的に説明する。本開示の実施形態に係る車載ECU2を、以下に図面を参照しつつ説明する。なお、本開示はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【0027】
(実施形態1)
以下、実施の形態について図面に基づいて説明する。
図1は、実施形態1に係る車載ECU2を含む車載システムSの構成を例示する模式図である。
図2は、車載ECU2の物理構成を例示するブロック図である。車載システムSは、車両Cに搭載される複数の車載ECU2及び、当該車載ECU2に接続される車載装置3を含む。
【0028】
複数の車載ECU2は、車両Cの全体を制御する統合的な車載ECU2(統合ECU)、及び当該統合的な車載ECU2と通信可能に接続され、車載装置3と直接、接続される個別的な車載ECU2(個別ECU)を含むものであってもよい。統合的な車載ECU2は、車外通信装置1を介して、インターネット等の外部ネットワークに接続される外部サーバ100と、通信可能に接続されるものであってもよい。
【0029】
本実施形態において図示においては、統合的な車載ECU2と、複数の個別的な車載ECU2とは、スター状のネットワークトポロジーを形成する車載ネットワーク4によって通信可能に接続され、当該統合的な車載ECU2は、スター状のネットワークトポロジーの中心(センター)に位置して設けられている。更に、隣接する個々の個別的な車載ECU2同士が接続され、ループ状のネットワークトポロジーを構成し、双方向通信を可能として冗長化を図るものであってもよい。
【0030】
複数の個別的な車載ECU2は、車両Cにおける各エリアに配置され、イルミネーションランプ等のアクチュエータ30、及びセンサ31等の車載装置3が、シリアルケーブル(じか線)等のワイヤーハーネスにて、直接接続されている。個別的な車載ECU2は、例えば、センサから出力された信号(入力信号)を取得(受信)し、取得した入力信号に基づき生成した要求信号を統合的な車載ECU2に送信する。個別的な車載ECU2は、統合的な車載ECU2から送信された制御信号に基づき、自ECUに直接、接続されたイルミネーションランプ等のアクチュエータ30の駆動制御を行う。
【0031】
個別的な車載ECU2は、当該個別的な車載ECU2に接続される複数の車載装置3間の通信、又は車載装置3と他の車載ECU2との通信を中継するゲートウェイ又はイーサスイッチ等の車載中継装置として機能する中継制御ECUであってもよい。個別的な車載ECU2は、通信に関する中継に加え、蓄電装置から出力された電力を分配及び中継し、自ECUに接続される車載装置3に供給する電力分配装置としても機能するPLB(Power Lan Box)であってもよい。
【0032】
統合的な車載ECU2は、個別的な車載ECU2等、他の車載ECU2を介して中継された車載装置3からのデータに基づき、個々の車載装置3への制御信号を生成及び出力するものであり、例えばヴィークルコンピュータ等の中央制御装置である。統合的な車載ECU2は、個別的な車載ECU2等、他の車載ECU2から出力(送信)される要求信号等の情報又はデータに基づき、当該要求信号の対象となるアクチュエータ30を制御するための制御信号を生成し、生成した制御信号を他の車載ECU2に出力(送信)する。本実施形態においては、統合的な車載ECU2(統合ECU)及び個別的な車載ECU2(個別ECU)により車載システムSは構成されるとしたがこれに限定されない。車載システムSは、例えばCAN(Controller Area Network)ゲートウェイ又はイーサスイッチ等の中継装置によってピアツーピアに接続された複数の車載ECU2によって構成されるものであってもよい。
【0033】
車載装置3は、例えばLiDAR(Light Detection and Ranging)、ライトセンサ、CMOSカメラ、赤外線センサ等の各種センサ31及び、ドアSW(スイッチ)、ランプSW等のスイッチ、ランプ、ドア開閉装置、モータ装置等のアクチュエータ30を含む。
【0034】
外部サーバ100は、例えばインターネット又は公衆回線網等の車外ネットワークに接続されているサーバ等のコンピュータであり、RAM(Random Access Memory)、ROM(Read Only Memory)又はハードディスク等による記憶部を備える。統合的な車載ECU2(統合ECU)は、車外通信装置1と通信可能に接続され、車外通信装置1を介して車外ネットワークを介して接続された外部サーバ100と通信し、外部サーバ100と、車両Cに搭載される他の車載ECU2又は車載装置3との間の通信を中継するものであってもよい。
【0035】
車外通信装置1は、車外通信部(図示せず)及び、統合的な車載ECU2(統合ECU)と通信するための入出力I/F(図示せず)を含む。車外通信部は、4G、LTE(Long Term Evolution/登録商標)、5G、WiFi等の移動体通信のプロトコルを用いて無線通信をするための通信装置であり、車外通信部に接続されたアンテナ11を介して外部サーバ100とデータの送受信を行う。車外通信装置1と外部サーバ100との通信は、例えば公衆回線網又はインターネット等の外部ネットワークNを介して行われる。入出力I/F22は、車載ECU2と、例えばシリアル通信するための通信インターフェイスである。車外通信装置1と車載ECU2とは、入出力I/F及び入出力I/Fに接続されたシリアルケーブル等のワイヤーハーネスを介して相互に通信する。本実施形態では、車外通信装置1は、車載ECU2と別装置とし、入出力I/F等によってこれら装置を通信可能に接続しているが、これに限定されない。車外通信装置1は、車載ECU2の一構成部位として、車載ECU2に内蔵されるものであってもよい。
【0036】
車載ECU2(統合EUC、個別ECU)は、制御部20、記憶部21、入出力I/F22、及び車内通信部23を含み、更にHSM(Hardware Security Module)等にて構成される検証部を含むものであってもよい。制御部20は、CPU(Central Processing Unit)又はMPU(Micro Processing Unit)等により構成してあり、記憶部21に予め記憶された制御プログラム及びデータを読み出して実行することにより、種々の制御処理及び演算処理等を行うようにしてある。制御部20は、例えば、シングルコアのシングルCPU、シングルコアのマルチCPU、マルチコアのシングルCPU、及びマルチコアのマルチCPUを含む。制御部20は、CPU等のソフトウェア処理を行うソフトウェア処理部のみに限定されず、FPGA、ASIC又はSOC等のハードウェア処理にて種々の制御処理及び演算処理等を行うハードウェア処理部を含むものであってもよい。
【0037】
記憶部21は、RAM(Random Access Memory)等の揮発性のメモリ素子又は、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable ROM)若しくはフラッシュメモリ等の不揮発性のメモリ素子、又は、これら記憶デバイスの組み合わせにより構成してあり、制御プログラム及び処理時に参照するデータが予め記憶してある。当該制御プログラムは、例えば、各種の車載装置3を制御するためのプログラム(アプリケーション)、又はLiDAR又はCMOSカメラからの出力データ基づき自動化運転を行うための物標認識を行うプログラム(アプリケーション)等の複数のプログラム(アプリケーション)を含む。更に、車載ECU2の記憶部21には、例えば、Hypervisor又はVMware等の仮想オペレーティングシステムが記憶されている。
【0038】
入出力I/F22は、車外通信装置1の入出力I/F22と同様に、例えばシリアル通信するための通信インターフェイスである。入出力I/F22及びシリアルケーブル等のワイヤーハーネスを介して、車載ECU2は、車外通信装置1と通信可能に接続される。
【0039】
車内通信部23は、例えばCAN(Controller Area Network)又はイーサネット(Ethernet/登録商標)の通信プロトコルを用いた入出力インターフェイスであり、制御部20は、車内通信部23を介して車載ネットワーク4に接続されている他の車載ECU2と相互に通信する。
【0040】
図3は、車載ECU2の論理構成(仮想ECU)を例示するブロック図である。本実施形態における図示にて車載ECU2の論理構成を例示するものであり、制御部20等によるハードウェア層(物理基盤)を最下層とし、仮想環境にて実行されるプログラム、及び仮想環境管理プログラム等によるソフトウェア層を最上層とした階層構造を例示するブロック図である。
【0041】
上述のとおり、車載ECU2の記憶部21には、例えば、Hypervisor又はVMware等の仮想オペレーティングシステムが記憶されており、車載ECU2の制御部20は、仮想オペレーティングシステムを用いて起動することにより、仮想オペレーティングシステム上にて複数の仮想環境(仮想ECU)を構築することができる。各種の車載装置3を制御するためのプログラムは、これら複数の仮想環境のうちのいずれかの仮想環境を動作環境として、実行される。すなわち、これらプログラムは、いずれかの仮想環境(仮想ECU)上にて、実行されるものとなる。仮想環境(仮想ECU)にてプログラムが実行されることにより、当該プログラムの処理内容に応じて単一又は複数のタスクが生成される。当該タスクによって、より細分化又は区分化された処理単位が実行されるものとなる。
【0042】
仮想化の方式は、本実施形態の図示のように仮想オペレーティングシステムによって直接的に制御部20等のハードウェアリソースにアクセスするハイパーバイザー方式、又は仮想オペレーティングシステムとハードウェアリソースとの間にLinux(登録商標)等のオペレーティングシステムが介在するホストOS方式であってもよい。又は、コンテナ方式の仮想オペレーティングシステムを用いるものであってもよい。
【0043】
仮想オペレーティングシステムを用いて起動した車載ECU2は、仮想オペレーティングシステムの機能により、複数の仮想環境を構築することができ、複数の仮想環境には、車載ECU2が備える制御部20等のハードウェアリソースが割り当てられる。これらハードウェアリソースが割り当てられた仮想環境それぞれは、仮想的な制御部20(仮想制御部)、記憶部21(仮想記憶部)及び車内通信部23(仮想車内通信部)を備えるものとなり、仮想ECU200として機能する。
【0044】
仮想ECU200それぞれの仮想記憶部それぞれには、例えばUbuntu(登録商標)等のゲストOS(Operation System)が記憶され、仮想ECU200それぞれはゲストOSを起動し、当該ゲストOSの上でプログラムを実行する。当該ゲストOSは、個々の仮想ECU200に応じて、異なる種類のOSであってもよい。上述のごとく仮想記憶部の実体は、仮想ECU200それぞれに割り当てられた記憶部21の記憶領域であるため、ゲストOSも仮想オペレーティングシステムと同様に記憶部21に記憶されていることは、言うまでもない。コンテナ方式の仮想オペレーティングシステムを用いる場合、ゲストOSを不要とし、当該仮想オペレーティングシステムの上でコンテナ(仮想環境)を生成し、当該コンテナ(仮想環境)上にてプログラムを実行するものであってもよい。
【0045】
仮想オペレーティングシステムを用いて起動した車載ECU2の制御部20は、構築したいずれかの仮想環境(仮想ECU200)のうちの一つの仮想ECU200にて、全ての仮想環境を管理するプログラム(仮想環境管理プログラム)を実行する。すなわち、仮想環境管理プログラムを実行する仮想ECU200は、仮想オペレーティングシステムのコントロールパネルとして機能するものであり、管理部210に相当する。又は、仮想オペレーティングシステム自体が、管理部210としての機能を包含するものであってもよい。
【0046】
記憶部21には、後述する割当時間テーブル21A(割当時間情報)が記憶されており、管理部210は当該割当時間テーブル21Aに基づき、個々の仮想環境(仮想ECU)に対する制御部20の利用時間の割当(スケジューリング)を行う。
【0047】
図4は、仮想ECU200における機能部を例示する機能ブロック図である。
図5は、割当時間テーブル21A(割当時間情報)を例示する説明図である。仮想ECU200の仮想制御部(制御部20)は、当該仮想ECU200の仮想記憶部(記憶部21)に記憶されているプログラムを実行することにより、タスク生成部201、及びタスク完了監視部202として機能する。
【0048】
仮想オペレーティングシステムを実行する制御部20又は、当該仮想オペレーティングシステムを管理するための仮想ECU200の仮想制御部(制御部20)は、仮想記憶部(記憶部21)に記憶されている仮想環境管理プログラムを実行することにより、仮想オペレーティングシステムのコントロールパネルとして機能し、本実施形態における管理部210に相当する。当該管理部210は、残余時間導出部211、完了判定部212、及び割当実行部213を含む。制御部20が、例えばマルチコアにて構成される場合、当該管理部210(仮想オペレーティングシステムのコントロールパネル)に対し利用時間が割り当てられるコアと、車載装置3等の制御を行うためのプログラムの動作環境となる仮想環境(仮想ECU200)に対し利用時間が割り当てられるコアとは、異なるコアであってもよい。
【0049】
本実施形態における図示のとおり、割当時間テーブル21Aに基づき、周期的(定常的)に、制御部20の利用時間が割り当てられる仮想ECU200は、例えば、3つ(VM1、VM2、VM3)としている。管理部210は、例えば記憶部21に記憶されている割当時間情報を参照することにより、これら仮想ECU200(VM1、VM2、VM3)に対し、制御部20を構成するいずれかのコアの利用時間を、割り当てる処理(スケジューリング)を継続して行っている。本実施形態における図示のとおり、管理部210が参照する割当時間情報は、例えば割当時間テーブル21Aとして、テーブル形式(ルックアップテーブル)にて記憶部21に記憶されている。
【0050】
割当時間テーブル21Aは、管理項目として、仮想ECU200の項目、割当周期の項目、割当時間の項目、プログラム種別の項目、優先順位を示すASILの項目、タスクの項目、タスクの開始周期の項目、及びタスクの想定処理時間の項目を含む。
【0051】
仮想ECU200の項目には、同一の制御部20(コア)を時分割することにより共用する仮想ECU200の名称又は識別子が格納される。
【0052】
割当周期の項目には、周期的(定常的)に割当が行われる仮想ECU200における割当周期が、格納される。本実施形態においては、VM1、VM2及びVM3には、当該割当周期の実数が格納されており、VM4においては割当周期の実数は格納されていない(格納値が無い旨を示すnull値が格納)。すなわち、割当周期の実数が格納されている仮想ECU200(VM1、VM2及びVM3)は、周期的(定常的)に制御部20の利用時間が割り当てられる仮想ECU200(仮想環境)に相当する。
【0053】
割当周期の実数が格納されていない仮想ECU200(VM4)は、非定常的に制御部20の利用時間が割り当てられる仮想ECU200(仮想環境)に相当する。割当時間の項目には、周期的(定常的)に制御部20の利用時間が割り当てられる仮想ECU200において、それぞれの仮想ECU200に割り当てられる割当時間が格納される。これら割当時間の合算値が、割当周期に相当する。
【0054】
プログラム種別の項目には、対応する(同じレコードに格納される)各仮想ECU200(仮想環境)にて実行されるプログラムの種別が格納されている。ASILの項目には、実行されるプログラムの優先度を示す指標として、ASILのレベルが格納される。すなわち当該優先度は、対応する車載装置3及び実行するプログラムの機能に基づいて決定されるものであり、例えばISO26262のASIL(Automotive Safety Integrity Level)に基づいて決定されるものであってもよい。ASILのレベルは、QM、ASIL-A,ASIL-B,ASIL-C,ASIL-Dのレベルに分類される。QMレベルは、ISO26262による機能安全を適用しなくてもよい通常の品質管理である。ASIL-AからDのレベルにおいては、ISO26262による機能安全の適用が必要となるレベルであり、ASIL-AからASIL-Dになるについて、機能安全要件が厳しくなる。すなわち、QMレベルの優先度が最も低く、ASIL-Dレベルの優先度が最も高いとみなすことができる。当該優先度において、周期的(定常的)な割当がされる仮想ECU200(仮想環境)の優先度(ASILのレベル)は、非定常的な割当がされる仮想ECU200(仮想環境)の優先度(ASILのレベル)よりも、高い優先度(ASILのレベル)としてある。本実施形態において、プログラムの優先度を示す指標としてASILを用いるとしたが、これに限定されない。当該プログラムの優先度は、ASILとは別個の値(優先度設定値)により決定されるものであってもよく、当該優先度設定値は、例えば、車載システムSの利用者、管理者又は製造者によって、個々に変更可能に設定されるものであってもよい。
【0055】
タスクの項目には、対応するプログラムが生成するタスクの名称が格納されている。タスクの開始周期の項目には、対応するタスクの開始周期が格納されている。タスクそれぞれは、当該開始周期に基づき、実行(起動)される。割当時間情報にて定められる仮想ECU200の割当周期は、当該仮想ECU200(仮想環境)を動作環境とするプログラムにおけるタスクの開始周期よりも、短い周期(時間)としてある。従って、いずれかの仮想ECU200(仮想環境)に制御部20(コア)が割り当てられた際、当該仮想ECU200(仮想環境)を動作環境とするプログラムにおけるタスクが開始されないことも想定される。このような場合であっても後述するタスク完了通知に基づき、管理部210は、いずれかの仮想ECU200(仮想環境)に割り当てられていた制御部20の割当時間帯を、他の仮想ECU200(仮想環境)に割り当てることができる。本実施形態において、割当時間情報にて定められる仮想ECU200の割当周期は、当該仮想ECU200(仮想環境)を動作環境とするプログラムにおけるタスクの開始周期よりも、短い周期(時間)としたが、これに限定されず、当該割当周期と開始周期とは、同じ値(周期)であってもよい。
【0056】
タスクの想定処理時間には、対応するタスクを生成し、実行するにあたって必要とされる時間(想定処理時間/コンフィグ設定値)が格納される。当該割当時間テーブル21Aは、管理部210からのみ参照されるものでなく、全ての仮想ECU200の仮想制御部から参照できるように記憶部21にて記憶されており、例えば、全ての仮想ECU200それぞれの仮想記憶部に記憶されているものであってもよい。
【0057】
本実施形態の図示のとおり、現時点において、周期的(定常的)な割当がされる仮想ECU200の内の一つの仮想ECU200(VM1)に対し、例えば単一のコア(シングルコア)等にて構成される制御部20の利用時間が割り当てられている。仮想ECU200(VM1)のタスク生成部201は、例えば割当時間テーブル21Aを参照し、自仮想ECU200(VM1)における個々のタスクに対し定められている開始周期に基づき、タスクを実行(起動)する。タスク生成部201は、当該タスクを実行(起動)するにあたり、サブプロセス又はスレッドを生成するものであってもよい。
【0058】
仮想ECU200(VM1)のタスク完了監視部202は、生成したタスクの実行状態を監視し、当該タスクが完了したか否かを判定する。タスク完了監視部202は、タスクを実行(起動)するために生成したサブプロセス又はスレッドが消滅したことを検知することにより、タスクが完了したと判定するものであってもよい。又は、タスクを実行するためのプロセスから送信される完了シグナルを受信した場合、当該タスクが完了したと判定するものであってもよい。
【0059】
タスク完了監視部202は、タスクが完了したと判定した場合、管理部210に対し、自仮想ECU200に割り当てられている割当時間から、割当が開始された時点から現時点までの経過時間を減算した残余時間の出力を要求する出力要求信号を送信する。タスク完了監視部202は、当該出力要求信号に基づき管理部210が算出した残余時間を取得する。
【0060】
タスク完了監視部202は、例えば割当時間テーブル21Aを参照して、直前に完了したタスク以外のタスク(他のタスク)であって、残余時間内にて、実行(起動)すべきタスクがあるか否かを判定する。すなわち、タスク完了監視部202は、割当時間テーブル21Aを参照して、自仮想ECU200(VM1)にて実行される単一又は複数の他のタスクそれぞれの開始周期に基づき決定される次の開始時点それぞれを算出し、算出した開始時点が残余時間内に含まれるタスクが、存在するか否か(有無)を判定する。
【0061】
残余時間内に、開始時点が含まれるタスクが存在する場合、タスク完了監視部202は、タスク完了通知を管理部210に出力(送信)しない。この場合、残余時間内に開始時点が含まれるタスクは、タスク生成部201によって実行(起動)される。残余時間内に、開始時点が含まれるタスクが存在しない場合、タスク完了監視部202は、タスク完了通知を管理部210に出力(送信)する。
【0062】
管理部210は、上述のとおり残余時間導出部211、完了判定部212、及び割当実行部213を含む。残余時間導出部211は、仮想ECU200からの要求に応じて、残余時間の出力要求を送信した仮想ECU200に割り当てられている割当時間から、割当が開始された時点から現時点までの経過時間を減算した残余時間を算出し、算出した残余時間を、当該仮想ECU200に出力(送信)する。
【0063】
完了判定部212は、仮想ECU200から出力(送信)されるタスク完了通知に応じて、残余時間導出部211が算出した残余時間が他の仮想環境(他の仮想ECU200(VM4))を動作環境とするプログラムの設定時間以上(コンフィグ設定値以上)であるか否かを判定する。完了判定部212は、例えば割当時間テーブル21Aを参照することにより、非定常的に制御部20の利用時間が割り当てられる仮想ECU200(VM4)のプログラムにて実行されるタスクの想定処理時間(プログラムの設定時間:コンフィグ設定値)を抽出し、残余時間が当該想定処理時間以上であるか否かを判定する。残余時間が当該想定処理時間以上である場合、完了判定部212は、割当実行部213に対し、割当指示を示す割当指示信号を出力する。残余時間が当該想定処理時間以上でない場合、完了判定部212は、割当指示信号の出力を行わない。
【0064】
割当実行部213は、完了判定部212から出力された割当指示信号に基づき、現時点において制御部20の利用時間が割り当てられている仮想ECU200(VM1)への割当を中断し、当該仮想ECU200(VM1)よりも優先度の低い(ASILのレベルが低い)、他の仮想ECU200(VM4)に対し、制御部20の利用時間を割り当てる。すなわち、割当実行部213は、割当時間テーブル21Aにて定められているスケジュールにおいて、タスク完了通知を出力した仮想ECU200(VM1)の割当時間内での再スケジュールを行う再スケジュール部として機能する。これにより、当該他の仮想ECU200(VM4)を動作環境とするプログラムにより生成(起動)されるタスクの処理が、実行される。
【0065】
図6は、仮想環境に対する制御部20の割当時間帯に関する説明図である。本実施形態における図示のとおり、周期的(定常的)に制御部20の利用時間が割り当てられる仮想ECU200(VM1、VM2、VM3)に対しては、各仮想ECU200の割当時間(VM1:500μs、VM2:300μs、VM3:200μs)の合算値(1000μs=500μs+300μs+200μs)である割当周期に基づき、制御部20の利用時間の割当が、管理部210によって行われる。また、仮想環境に対する制御部20の割当時間帯を切り替えるにあたり、切替所要時間(マージン)が必要となる場合、当該切替所要時間を加味して、割当周期を設定するものであってもよい。すなわち、割当周期は、合算値に切替所要時間を加算した値(割当周期=合算値+切替所要時間)となるものであってもよい。
【0066】
図示にて、1回目の周期と、2回目の周期において、仮想ECU200(VM1)における残余時間が、仮想ECU200(VM4)の想定処理時間(コンフィグ設定値)以上であるため、当該残余時間に対し、仮想ECU200(VM4)の割当が行われる。これに対し、1回目の周期における仮想ECU200(VM2)の残余時間と、2回目の周期における仮想ECU200(VM3)の残余時間とに対しては、これら残余時間が、仮想ECU200(VM4)の想定処理時間(コンフィグ設定値)未満であるため、これら残余時間に対する仮想ECU200(VM4)の割当は、行われない。
【0067】
図7は、車載ECU2(仮想ECU200)の制御部20(仮想制御部)の処理を例示するフローチャートである。車載ECU2の制御部20は、例えば車両Cが停止状態(IGスイッチがオフ)から起動状態(IGスイッチがオン)に状態遷移するにあたり車載ECU2(自ECU)が起動(ブート)され、自ECUに実装されているHyperVisor等の仮想化オペレーティングシステムを立ち上げた後、以下の処理を行う。又は、車載ECU2は例えばWakeUp信号を取得(受信)した場合、以下の処理を行うものであってもよい。
【0068】
以下の処理が、種々の車載装置3の制御等を行うための仮想ECU200(仮想環境)にて実行される場合、当該仮想ECU200(例えばVM1からVM4)の仮想制御部の実体は、車載ECU2の制御部20である。車載装置3の制御等を行うための仮想ECU200の仮想制御部(制御部20)は、タスクが完了したか否かを判定する(S101)。当該車載装置3の制御等を行うための仮想ECU200は、例えば、割当時間テーブル21Aにおいて割当周期が設定されており、当該割当周期に基づき周期的(定常的)に、制御部20の利用時間が割り当てられる(割当時間が付与される)仮想ECU200である。
【0069】
当該仮想ECU200は、例えば、割当時間テーブル21Aにて予め設定されているとおり、単一又は複数のタスクを所定の開始周期に基づき、実行(起動)する。当該タスクを実行(起動)するにあたり、仮想ECU200の仮想制御部(制御部20)は、サブプロセス又はスレッドを生成して、タスクを実行(起動)するものであってもよい。
【0070】
仮想ECU200の仮想制御部(制御部20)は、実行中(起動中)のタスクがある場合、当該タスクの状態を監視し、タスクが完了したか否かを判定する。タスクの完了判定において、仮想ECU200の仮想制御部(制御部20)は、当該タスクを実行(起動)するために生成したサブプロセス又はスレッドが消滅したことを検知することにより、タスクが完了したと判定するものであってもよい。又は、タスクを実行するためのプロセスから送信される完了シグナルを受信した場合、当該タスクが完了したと判定するものであってもよい。タスクが完了していない場合(S101:NO)、再度S101の処理を実行すべく、ループ処理を行う。
【0071】
タスクが完了した場合(S101:YES)、車載装置3の制御等を行うための仮想ECU200の仮想制御部(制御部20)は、残余時間を取得する(S102)。仮想制御部は、例えば、仮想オペレーティングシステムの管理を担う管理部210と通信(出力要求信号の送信)することにより、自仮想ECU200に割り当てられている割当時間から、割当が開始された時点から現時点までの経過時間を減算した残余時間を、管理部210から取得する。
【0072】
車載装置3の制御等を行うための仮想ECU200の仮想制御部(制御部20)は、残余時間内に他のタスクを実行するか否かを判定する(S103)。仮想ECU200の仮想制御部(制御部20)は、残余時間内にて、他のタスクを実行するか否か、すなわち実行要否を判定する。仮想ECU200の仮想制御部(制御部20)は、例えば割当時間テーブル21Aを参照して、単一又は複数の他のタスクそれぞれの開始周期に基づき決定される次の開始時点それぞれを算出し、算出した開始時点が残余時間内に含まれるタスクが、存在するか否か(有無)を判定する。
【0073】
残余時間内に、開始時点が含まれるタスクが存在する場合、仮想ECU200の仮想制御部(制御部20)は、当該タスク(他のタスク)の実行(起動)を要する(可能である)と判定する。残余時間内に、開始時点が含まれるタスクが存在しない場合、仮想ECU200の仮想制御部(制御部20)は、当該タスク(他のタスク)の実行(起動)は不要である(不可である)と判定する。
【0074】
残余時間内に他のタスクの実行を要する場合(S103:YES)、車載装置3の制御等を行うための仮想ECU200の仮想制御部(制御部20)は、他のタスクを実行(起動)する(S104)。仮想ECU200の仮想制御部(制御部20)は、他のタスクを実行(起動)した後、再度S101の処理を実行すべく、ループ処理を行う。
【0075】
残余時間内に他のタスクの実行を要しない(否)場合(S103:NO)、車載装置3の制御等を行うための仮想ECU200の仮想制御部(制御部20)は、タスク完了通知を出力する(S1031)。残余時間内に他のタスクの実行を要しない(否)場合、当該残余時間は、実施的に制御部20の空き時間に相当するものとなる。これに対し、仮想ECU200の仮想制御部(制御部20)は、タスク完了通知を管理部210に出力(送信)することにより、当該残余時間を他の仮想ECU200に割り当て、制御部20における空き時間を有効活用し、制御部20の使用率を向上させることができる。
【0076】
以下の処理が、仮想オペレーティングシステムのコントロールパネルとして機能する管理部210にて実行される場合、当該管理部210の実体は、車載ECU2の制御部20である。管理部210(制御部20)は、残余時間の出力要求を受けたか否かを判定する(S111)。残余時間の出力要求を受けていない場合(S111:NO)、管理部210(制御部20)は、再度S111の処理を実行すべく、ループ処理を行う。
【0077】
残余時間の出力要求を受けた場合(S111:YES)、管理部210(制御部20)は、残余時間を出力する(S112)。管理部210(制御部20)は、例えば割当時間テーブル21Aを参照して、残余時間の出力要求を送信した仮想ECU200に割り当てられている割当時間から、割当が開始された時点から現時点までの経過時間を減算した残余時間を算出し、算出した残余時間を、当該仮想ECU200に出力(送信)する。
【0078】
管理部210(制御部20)は、タスク完了通知を取得したか否かを判定する(S113)。管理部210(制御部20)は、仮想ECU200の仮想制御部(制御部20)と通信することにより、当該仮想ECU200からタスク完了通知を取得したか否かを判定する。管理部210(制御部20)は、例えば、S111の処理と、S113の処理とを、異なるプロセス又はスレッドによって並行処理するものであってもよい。タスク完了通知を取得していない場合(S113:NO)、管理部210(制御部20)は、再度S113の処理を実行すべく、ループ処理を行う。
【0079】
タスク完了通知を取得した場合(S113:YES)、管理部210(制御部20)は、残余時間が他の仮想環境を動作環境とするプログラムの設定時間以上であるか否かを判定する(S114)。管理部210(制御部20)は、S112で算出した残余時間と、当該残余時間の割当の対象となる他の仮想環境(仮想ECU200)を動作環境とするプログラムの設定時間とを、比較することにより、残余時間が当該設定時間以上であるか否かを判定する。当該プログラムの設定時間とは、例えば、当該プログラムによって実行(起動)されるタスクの想定処理時間(コンフィグ設定値)である。
【0080】
残余時間が設定時間以上である場合(S114:YES)、管理部210は、他の仮想環境に対し、制御部20の利用時間を割当てる(S115)。当該他の仮想環境(仮想ECU200)を動作環境とするプログラムの優先順位は、タスク完了通知を出力した仮想環境(仮想ECU200)のプログラムの優先順位よりも、低い。当該優先順位は、例えばASILに基づき決定されるものであり、タスク完了通知を出力した仮想環境(仮想ECU200)のASILはD又はCレベルであり、他の仮想環境(仮想ECU200)を動作環境とするプログラムのASILはQMレベルであってもよい。
【0081】
残余時間が設定時間以上である場合、時間分割することにより複数の仮想環境(仮想ECU200)により共用(シェアリング)されている制御部20(コア等)に対し、割り当てられている仮想環境(仮想ECU200)の切り替えを行う。割り当てられている仮想環境(仮想ECU200)の切り替えが行われることにより、他の仮想環境(仮想ECU200)に対し、制御部20(コア等)の利用時間が割り当てられ、他の仮想環境(仮想ECU200)を動作環境とするプログラムにより生成(起動)されるタスクの処理が、実行される。当該他の仮想環境(仮想ECU200)への割当は、タスク完了通知を出力した仮想環境(仮想ECU200)に対する割当時間帯の終了をもって、終了する。
【0082】
管理部210(制御部20)は、当該割当時間帯の終了及び、次位の仮想環境(仮想ECU200)への割当の開始等の制御を、例えば割当時間テーブル21Aを参照することにより継続する。従って、タスク完了通知に基づき、優先順位の低い他の仮想環境(仮想ECU200)に制御部20の利用時間が割り当てられた場合であっても、当該次位の仮想環境の割当時間帯も含め、割当時間情報によるスケジューリングを変更することなく、複数の仮想環境への制御部20の利用時間の割当を継続することができる。
【0083】
残余時間が設定時間以上でない場合(S114:NO)、すなわち残余時間が設定時間未満である場合、管理部210は、他の仮想環境(仮想ECU200)に対し制御部20の利用時間を割り当てることなく、一連の処理を終了する。すなわち、管理部210は、タスク完了通知を出力したプログラムを動作環境とする仮想環境(仮想ECU200)に対する制御部20の利用時間の割当を維持する。管理部210(制御部20)は、当該仮想環境(仮想ECU200)の割当時間帯の終了及び、次位の仮想環境(仮想ECU200)への割当の開始等の制御を、例えば割当時間テーブル21Aを参照することにより継続する。
【0084】
(実施形態2)
図8は、実施形態2に係る割当時間テーブル21A(割当時間情報)を例示する説明図である。実施形態2の割当時間テーブル21Aの管理項目は、実施形態1の割当時間テーブル21Aの管理項目に加え、更に割当コアの項目を含む点で、実施形態1と異なる。
【0085】
実施形態2においては、制御部20は、例えば複数のコア(マルチコア)により構成されており、Hypervisor等の仮想オペレーティングシステムは、当該複数のコア(図示にてコア1及びコア2によるデュアルコア)それぞれの利用時間を、複数の仮想ECU200(仮想環境)に割り当てる。本実施形態において、制御部20はマルチコアにて構成されるとしたが、これに限定されない。制御部20は、シングルコアのマルチCPUにて構成されるものであってもよい。この場合、割当時間テーブル21Aにおける割当コアの項目は、割当CPUの項目に相当することは、言うまでもない。
【0086】
割当コアの項目には、対応する仮想ECU200(同じレコードに格納される仮想ECU200)に割り当てられるコアの番号又は識別子が格納される。周期的(定常的)に割当が行われる仮想ECU200(VM1からVM6)に対しては、いずれか一つのコアの番号が、格納される。これにより、各仮想ECU200は、どのコア(コア番号)の利用時間が割り当てられるかが、定められている。本実施形態における図示においては、仮想ECU200(VM1、VM2、VM3)は、コア1に割り当てられ、仮想ECU200(VM4、VM5、VM6)は、コア2に割り当てられている。
【0087】
非定常的に制御部20の利用時間が割り当てられる仮想ECU200(VM7)に対しては、複数のコアの番号が格納されるものであってもよい。すなわち、当該非定常的に割当が行われる仮想ECU200(VM7)は、コア1及びコア2に割り当てられている。従って、制御部20を構成するコア1及びコア2において、周期的(定常的)に割当が行われるいずれかの仮想ECU200にて、タスク完了通知がタスク完了監視部202によって出力された場合、当該タスク完了通知がされた以降のコア1又はコア2の空き時間を、非定常的に割当が行われる仮想ECU200(VM7)に割り当てることができる。
【0088】
図9は、仮想環境に対する制御部20の割当時間帯に関する説明図である。実施形態1の
図6と同様に管理部210(
図9では省略)は、周期的(定常的)に割当が行われる仮想ECU200(VM1からVM6)に対し、制御部20を構成するコア1(VM1、VM2及びVM3が共用)及びコア2(VM4、VM5及びVM6が共用)の利用時間を割り当てる。
【0089】
コア1においては実施形態1と同様に、仮想ECU200(VM1、VM2、VM3)に対し、各仮想ECU200の割当時間(VM1:500μs、VM2:300μs、VM3:200μs)の合算値(1000μs=500μs+300μs+200μs)である割当周期に基づく制御部20の利用時間の割当が、管理部210によって行われる。コア2においては、仮想ECU200(VM4、VM5、VM6)に対し、各仮想ECU200の割当時間(VM4:300μs、VM5:300μs、VM6:400μs)の合算値(1000μs=300μs+300μs+400μs)である割当周期に基づく制御部20の利用時間の割当が、管理部210によって行われる。
【0090】
コア1においては実施形態1と同様に、1回目の周期と、2回目の周期において、仮想ECU200(VM1)における残余時間が、仮想ECU200(VM7)の想定処理時間(コンフィグ設定値)以上であるため、当該残余時間に対し、仮想ECU200(VM4)の割当が行われる。コア2においては、2回目の周期において、仮想ECU200(VM1)における残余時間が、仮想ECU200(VM5)の想定処理時間(コンフィグ設定値)以上であるため、当該残余時間に対し、仮想ECU200(VM7)の割当が行われる。
【0091】
制御部20が例えばマルチコアにて構成される場合であっても、いずれかのコアにて空き時間が発生した際には非定常的に割当が行われる仮想ECU200(VM7)に対し、当該コアの利用時間を割り当てることにより、制御部20の使用率を向上させることができる。本実施形態において、非定常的に割当が行われる仮想ECU200(VM7)の個数は、1つとしているが、これに限定されず、当該非定常的に割当が行われる仮想ECU200の個数は2つ以上とし、当該2つ以上の仮想ECU200に対し順次に制御部20の利用時間を割り当てるものであってもよい。
【0092】
今回開示された実施形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0093】
C 車両
S 車載システム
100 外部サーバ
1 車外通信装置
11 アンテナ
2 車載ECU
20 制御部
21 記憶部
21A 割当時間テーブル
22 入出力I/F
23 車内通信部
200 仮想ECU(仮想環境)
201 タスク生成部
202 タスク完了監視部
210 管理部
211 残余時間導出部
212 完了判定部
213 割当実行部
3 車載装置
30 アクチュエータ(ACT)
31 センサ
4 車載ネットワーク