(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-01
(45)【発行日】2024-04-09
(54)【発明の名称】車載ECU、プログラム、及び情報処理方法
(51)【国際特許分類】
G06F 21/57 20130101AFI20240402BHJP
B60R 16/02 20060101ALI20240402BHJP
G06F 9/455 20180101ALI20240402BHJP
G06F 9/50 20060101ALI20240402BHJP
G06F 9/445 20180101ALI20240402BHJP
【FI】
G06F21/57 350
B60R16/02 660T
G06F9/455 150
G06F9/50 120B
G06F9/445
(21)【出願番号】P 2020189750
(22)【出願日】2020-11-13
【審査請求日】2023-03-30
(73)【特許権者】
【識別番号】000183406
【氏名又は名称】住友電装株式会社
(74)【代理人】
【識別番号】100114557
【氏名又は名称】河野 英仁
(74)【代理人】
【識別番号】100078868
【氏名又は名称】河野 登夫
(72)【発明者】
【氏名】野口 康彦
(72)【発明者】
【氏名】宮田 秀俊
(72)【発明者】
【氏名】堀 広生
【審査官】小林 秀和
(56)【参考文献】
【文献】特開2019-179397(JP,A)
【文献】特開2010-237787(JP,A)
【文献】国際公開第2009/107349(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
B60R 16/02
G06F 9/455
G06F 9/50
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
車両に搭載される車載ECUであって、
複数のプログラムを実行する制御部と、
自ECUを起動する際に、前記複数のプログラムそれぞれの検証を行う検証部と、
前記制御部によって起動される仮想化オペレーティングシステムが記憶されている記憶部とを備え、
前記仮想化オペレーティングシステムを起動することにより、前記プログラムの動作環境となる複数の仮想環境が生成され、
前記複数の仮想環境は、前記プログラムに応じた異なる優先度の仮想環境を含み、
前記検証部は、
前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、
前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、
前記仮想化オペレーティングシステムを管理する管理部は、
前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対する前記制御部の割当時間帯を異ならせる
車載ECU。
【請求項2】
前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間は、前記優先度の高い仮想環境を動作環境とするプログラムの実行と、前記優先度の低い仮想環境を動作環境とするプログラムの検証とが、並行して行われる
請求項1に記載の車載ECU。
【請求項3】
前記仮想化オペレーティングシステムを管理する管理部は、
前記第1検証結果に応じて、前記優先度の高い仮想環境に対し前記制御部の割当時間帯を割り当てる第1割当制御を開始し、
前記第2検証結果が出力された以降は、前記優先度の高い仮想環境及び前記優先度の低い仮想環境に対し、前記制御部の割当時間帯を割り当てる第2割当制御を開始する
請求項1又は請求項2に記載の車載ECU。
【請求項4】
前記記憶部には、前記複数の仮想環境に対する前記制御部の割当時間帯を定める割当時間情報が記憶されており、
前記割当時間情報は、前記第1割当制御に対応した第1割当時間情報と、前記第2割当制御に対応した第2割当時間情報とを含み、
前記管理部は、参照する割当時間情報として、前記第1割当時間情報から前記第2割当時間情報に切り替えることにより、前記第1割当制御から、前記第2割当制御に変更する
請求項3に記載の車載ECU。
【請求項5】
前記検証部は、
前記第1検証結果を出力するにあたり、前記優先度の高い仮想環境にて起動されるゲストOSの検証を行い、
前記第2検証結果を出力するにあたり、前記優先度の低い仮想環境にて起動されるゲストOSの検証を行う
請求項1から請求項4のいずれか1項に記載の車載ECU。
【請求項6】
前記優先度は、ISO26262のASIL(Automotive Safety Integrity Level)に基づき決定される
請求項1から請求項5のいずれか1項に記載の車載ECU。
【請求項7】
前記制御部は、複数のコアを備えるマルチコアCPUにて構成されており、
前記複数の仮想環境それぞれは、前記複数のコアの内のいずれかのコアに割り当てられるものであり、
前記検証部は、
前記複数のコアそれぞれに割り当てられる、全ての前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき前記第1検証結果を出力し、
前記第1検証結果の出力後、複数の前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき前記第2検証結果を出力し、
前記管理部は、前記複数のコアそれぞれにおいて、前記複数の仮想環境に対する割当時間帯の割当を行う
請求項1から請求項6のいずれか1項に記載の車載ECU。
【請求項8】
車両に搭載され、仮想化オペレーティングシステムを起動することにより生成される複数の仮想環境において、複数のプログラムを実行するコンピュータに処理を実行させるプログラムであって、
前記複数の仮想環境は、該仮想環境を動作環境とするプログラムに応じた異なる優先度の仮想環境を含み、
前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、
前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、
前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対するコンピュータの制御部の割当時間帯を異ならせる
処理を実行させるプログラム。
【請求項9】
車両に搭載され、仮想化オペレーティングシステムを起動することにより生成される複数の仮想環境において、複数のプログラムを実行するコンピュータに処理を実行させる情報処理方法であって、
前記複数の仮想環境は、該仮想環境を動作環境とするプログラムに応じた異なる優先度の仮想環境を含み、
前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、
前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、
前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対するコンピュータの制御部の割当時間帯を異ならせる
処理を実行させる情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、車載ECU、プログラム、及び情報処理方法に関する。
【背景技術】
【0002】
車両に搭載され、当該車両に搭載された機器の制御や、車外通信、自動運転等の走行制御に関する情報処理を行う電子制御装置が知られている(例えば特許文献1)。特許文献1の電子制御装置は、複数のコアを有するマルチコアCPUを備え、マルチコアCPU上で複数のプログラムシステムが、動作する。特許文献1の電子制御装置には、プログラムが実行されることによって実現される機能の構成要素として、ハイパーバイザが搭載されており、当該ハイパーバイザにより、マルチコアCPU上で複数の仮想マシンを作成して並列に動作させ、作成された仮想マシン上でOSを動作させる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1の電子制御装置は、複数の仮想マシンに対するセキュリティ的な観点から検証を行う点について、考慮されていない。
【0005】
本開示は、仮想化オペレーティングシステムによって生成される複数の仮想環境に対する検証を効率的に行うことができる車載ECU等を提供する。
【課題を解決するための手段】
【0006】
本開示の一態様に係る車載ECUは、車両に搭載される車載ECUであって、複数のプログラムを実行する制御部と、自ECUを起動する際に、前記複数のプログラムそれぞれの検証を行う検証部と、前記制御部によって起動される仮想化オペレーティングシステムが記憶されている記憶部とを備え、前記仮想化オペレーティングシステムを起動することにより、前記プログラムの動作環境となる複数の仮想環境が生成され、前記複数の仮想環境は、前記プログラムに応じた異なる優先度の仮想環境を含み、前記検証部は、前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、前記仮想化オペレーティングシステムを管理する管理部は、前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対する前記制御部の割当時間帯を異ならせる。
【発明の効果】
【0007】
本開示の一態様によれば、仮想化オペレーティングシステムによって生成される複数の仮想環境に対する検証を効率的に行うことができる車載ECU等を提供する。
【図面の簡単な説明】
【0008】
【
図1】実施形態1に係る車載ECUを含む車載システムの構成を例示する模式図である。
【
図2】車載ECUの物理構成を例示するブロック図である。
【
図3】車載ECUの論理構成(仮想ECU)を例示するブロック図である。
【
図4】仮想ECUにおける機能部を例示する機能ブロック図である。
【
図5】第1割当時間テーブル(第1割当時間情報)を例示する説明図である。
【
図6】第2割当時間テーブル(第2割当時間情報)を例示する説明図である。
【
図7】仮想環境に対する制御部の割当時間帯に関する説明図である。
【
図8】制御部及び検証部によるシーケンスを例示した説明図である。
【
図9】車載ECUの制御部及び検証部の処理を例示するフローチャートである。
【発明を実施するための形態】
【0009】
[本発明の実施形態の説明]
最初に本開示の実施態様を列挙して説明する。また、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
【0010】
(1)本開示の一態様に係る車載ECUは、車両に搭載される車載ECUであって、複数のプログラムを実行する制御部と、自ECUを起動する際に、前記複数のプログラムそれぞれの検証を行う検証部と、前記制御部によって起動される仮想化オペレーティングシステムが記憶されている記憶部とを備え、前記仮想化オペレーティングシステムを起動することにより、前記プログラムの動作環境となる複数の仮想環境が生成され、前記複数の仮想環境は、前記プログラムに応じた異なる優先度の仮想環境を含み、前記検証部は、前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、前記仮想化オペレーティングシステムを管理する管理部は、前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対する前記制御部の割当時間帯を異ならせる。
【0011】
本態様にあたっては、車載ECU(Electronic Control Unit)が起動する際、例えばHSM(Hardware Security Module)等の検証部により複数のプログラムに対する検証が行われるものであり、すなわち、車載ECUは、当該検証部を用いたセキュアブートを行う。検証部による検証の対象となる複数のプログラムは、これらプログラムの優先度に基づき区分化されており、例えば、高い優先度のプログラム(高優先度プログラム)と、低い優先度のプログラム(低優先度プログラム)とを含む。これにより、実行するプログラムに応じて、仮想環境の優先度も決定される。すなわち、高優先度プログラムの動作環境となる仮想環境(高優先度の仮想環境)の優先度は、低優先度プログラムの動作環境となる仮想環境(低優先度の仮想環境)の優先度よりも、高いものとなる。検証部は、当該複数のプログラムに対する検証を行うにあたり、優先度の高い順番に検証を行う。従って、検証部は、高優先度プログラムの検証を行った後、低優先度プログラムの検証を行う。検証部は、高優先度プログラムの検証を行った際に第1検証結果を出力し、当該第1検証結果の出力後に低優先度プログラムの検証及び当該検証の結果となる第2検証結果を出力する。従って、検証部はプログラムの優先度に応じた順番にて、これらプログラムの検証を行うため、効率的な検証を行うことができる。当該複数のプログラムは、仮想化オペレーティングシステムによって生成されるいずれかの仮想環境(仮想ECU)を動作環境として実行(起動)される。仮想化オペレーティングシステムを管理する管理部は、第1検証結果が出力されてから第2検証結果が出力されるまでの間と、第2検証結果が出力された以降とでは、異なるスケジューリングによって、複数の仮想環境に対する制御部の割当時間帯を割り当てるため、優先度に応じた検証結果に基づき適切なスケジューリングを行うことができる。
【0012】
(2)本開示の一態様に係る車載ECUは、前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間は、前記優先度の高い仮想環境を動作環境とするプログラムの実行と、前記優先度の低い仮想環境を動作環境とするプログラムの検証とが、並行して行われる。
【0013】
本態様にあたっては、高優先度の仮想環境における高優先度プログラムの実行(起動)と並行して、低優先度の仮想環境における低優先度プログラムに対する検証部の検証を行うことができるため、効率的にセキュアブートを行うことができる。
【0014】
(3)本開示の一態様に係る車載ECUは、前記仮想化オペレーティングシステムを管理する管理部は、前記第1検証結果に応じて、前記優先度の高い仮想環境に対し前記制御部の割当時間帯を割り当てる第1割当制御を開始し、前記第2検証結果が出力された以降は、前記優先度の高い仮想環境及び前記優先度の低い仮想環境に対し、前記制御部の割当時間帯を割り当てる第2割当制御を開始する。
【0015】
本態様にあたっては、管理部は、第1検証結果に応じて当該第1検証結果が出力されてから第2検証結果が出力されるまでの間は、優先度の高い仮想環境に対し制御部の割当時間帯を割り当てる第1割当制御(第1スケジュールに基づくスケジューリング)を行う。その上で、管理部は、第2検証結果が出力された以降は、優先度の高い仮想環境及び優先度の低い仮想環境に対し制御部の割当時間帯を割り当てる第2割当制御(第2スケジュールに基づくスケジューリング)を開始する。従って、第1検証結果に応じて、優先度の高い仮想環境に対し制御部の割当時間帯を割り当て、当該優先度の高い仮想環境を動作環境とする高優先度プログラムを早期に実行(起動)することができる。すなわち、検証部による全領域の検証後に起動する方法を用いた場合、優先度の高い仮想環境を動作環境とする高優先度プログラムも含め、起動に時間がかかってしまうところ、本態様による方法を用いることにより、優先度の高い仮想環境を動作環境とする高優先度プログラムを早期に実行(起動)することができる。
【0016】
(4)本開示の一態様に係る車載ECUは、前記記憶部には、前記複数の仮想環境に対する前記制御部の割当時間帯を定める割当時間情報が記憶されており、前記割当時間情報は、前記第1割当制御に対応した第1割当時間情報と、前記第2割当制御に対応した第2割当時間情報とを含み、前記管理部は、参照する割当時間情報として、前記第1割当時間情報から前記第2割当時間情報に切り替えることにより、前記第1割当制御から、前記第2割当制御に変更する。
【0017】
本態様にあたっては、記憶部に記憶されている割当時間情報は、第1スケジュールに対応した第1割当時間情報と、第2スケジュールに対応した第2割当時間情報とを含む。仮想化オペレーティングシステムを管理する管理部は、当該第1割当時間情報、又は第2割当時間情報を参照して、仮想環境夫々に対し、制御部の利用時間を割り当てる。管理部は、第2検証結果が出力された以降、第1スケジュールに基づくスケジューリングから、第2スケジュールに基づくスケジューリングへの変更を行うにあたり、参照する対象(割当時間情報)を、第1割当時間情報から第2割当時間情報に切り替える。これにより、管理部は、効率的にスケジューリングの変更を行うことができる。
【0018】
(5)本開示の一態様に係る車載ECUは、前記検証部は、前記第1検証結果を出力するにあたり、前記優先度の高い仮想環境にて起動されるゲストOSの検証を行い、前記第2検証結果を出力するにあたり、前記優先度の低い仮想環境にて起動されるゲストOSの検証を行う。
【0019】
本態様にあたっては、仮想化オペレーティングシステムとして、例えばハイパーバイザー方式を用いる場合、生成された仮想環境においてUbuntu(登録商標)等のゲストOS(Operation System)が起動される。検証部は、高優先度プログラムの検証を行うにあたり当該高優先度プログラムの動作環境となる優先度の高い仮想環境(高優先度仮想環境)にて起動されるゲストOSの検証を行う。更に、検証部は、低優先度プログラムの検証を行うにあたり当該低優先度プログラムの動作環境となる優先度の低い仮想環境(低優先度仮想環境)にて起動されるゲストOSの検証を行う。仮想化オペレーティングシステムによって生成される複数の仮想環境それぞれに対し、車載ECUの記憶部の領域(記憶領域)が区分化されている場合、検証部は、個々の仮想環境に対応した記憶領域それぞれに対し検証を行うものであってもよい。これにより、検証部は、プログラムの検証を行う際、当該プログラムの動作環境となる仮想環境にて起動されるゲストOS(Operating System)についても検証を行うため、車載ECUにおいてプログラムが実行されるにあたり、セキュアな動作環境を担保することができる。
【0020】
(6)本開示の一態様に係る車載ECUは、前記優先度は、ISO26262のASIL(Automotive Safety Integrity Level)に基づき決定される。
【0021】
本態様にあたっては、優先度の高いプログラムの動作環境となる仮想環境は、優先度の低いプログラムの動作環境となる仮想環境よりも、早期に生成されるものであり、すなわち実行するプログラムに応じて、仮想環境の優先度も決定される。これにより、優先度の低いプログラムに対する検証部の検証が完了するよりも前に、優先度の高いプログラムを実行することができる。当該優先度は、優先度はASIL(Automotive Safety Integrity Level)に基づき決定されるものであり、すなわちASILのレベルが向上するにつれ、優先度も高くなる。従って、車載ECUの起動時にHSM等の検証部による検証を行う場合であっても、ASILのレベルが高いプログラムの動作環境となる仮想環境を早期に起動し、当該プログラムを早期に実行することにより、個々のプログラムに要求される機能安全を鑑みた制御部の割り当て(スケジューリング)を効率的に行うことができる。
【0022】
(7)本開示の一態様に係る車載ECUは、前記制御部は、複数のコアを備えるマルチコアCPUにて構成されており、前記複数の仮想環境それぞれは、前記複数のコアの内のいずれかのコアに割り当てられるものであり、前記検証部は、前記複数のコアそれぞれに割り当てられる、全ての前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき前記第1検証結果を出力し、前記第1検証結果の出力後、複数の前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき前記第2検証結果を出力し、前記管理部は、前記複数のコアそれぞれにおいて、前記複数の仮想環境に対する割当時間帯の割当を行う。
【0023】
本態様にあたっては、検証部は、全てのコアそれぞれにおいて、優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力した後、優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力する。その上で、管理部は、コアそれぞれにおいて、第1検証結果及び第2検証結果に応じて、複数の仮想環境に対する割当時間帯を割り当てるスケジューリングを行う。従って、車載ECUがマルチコアCPUにて構成される制御部を含むものであっても、仮想化オペレーティングシステムによって生成される複数の仮想環境に対する検証を効率的に行い、各コアにおける高優先度プログラムを早期に実行することができる。
【0024】
(8)本開示の一態様に係るプログラムは、車両に搭載され、仮想化オペレーティングシステムを起動することにより生成される複数の仮想環境において、複数のプログラムを実行するコンピュータに処理を実行させるプログラムであって、前記複数の仮想環境は、該仮想環境を動作環境とするプログラムに応じた異なる優先度の仮想環境を含み、前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対するコンピュータの制御部の割当時間帯を異ならせる。
【0025】
本態様にあたっては、コンピュータを、仮想化オペレーティングシステムによって生成される複数の仮想環境に対する検証を効率的に行うことができる車載ECUとして機能させることができる。
【0026】
(9)本開示の一態様に係る情報処理方法は、車両に搭載され、仮想化オペレーティングシステムを起動することにより生成される複数の仮想環境において、複数のプログラムを実行するコンピュータに処理を実行させる情報処理方法であって、前記複数の仮想環境は、該仮想環境を動作環境とするプログラムに応じた異なる優先度の仮想環境を含み、前記優先度の高い仮想環境を動作環境とするプログラムの検証に基づき第1検証結果を出力し、前記第1検証結果の出力後、前記優先度の低い仮想環境を動作環境とするプログラムの検証に基づき第2検証結果を出力し、前記第1検証結果が出力されてから前記第2検証結果が出力されるまでの間と、前記第2検証結果が出力された以降とでは、前記複数の仮想環境に対するコンピュータの制御部の割当時間帯を異ならせる
【0027】
本態様にあたっては、コンピュータを、仮想化オペレーティングシステムによって生成される複数の仮想環境に対する検証を効率的に行うことができる車載ECUとして機能させる情報処理方法を提供することができる。
【0028】
[本開示の実施形態の詳細]
本開示をその実施の形態を示す図面に基づいて具体的に説明する。本開示の実施形態に係る車載ECU2を、以下に図面を参照しつつ説明する。なお、本開示はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【0029】
(実施形態1)
以下、実施の形態について図面に基づいて説明する。
図1は、実施形態1に係る車載ECU2を含む車載システムSの構成を例示する模式図である。
図2は、車載ECU2の物理構成を例示するブロック図である。車載システムSは、車両Cに搭載される複数の車載ECU2及び、当該車載ECU2に接続される車載装置3を含む。
【0030】
複数の車載ECU2は、車両Cの全体を制御する統合的な車載ECU2(統合ECU)、及び当該統合的な車載ECU2と通信可能に接続され、車載装置3と直接、接続される個別的な車載ECU2(個別ECU)を含むものであってもよい。統合的な車載ECU2は、車外通信装置1を介して、インターネット等の外部ネットワークに接続される外部サーバ100と、通信可能に接続されるものであってもよい。
【0031】
本実施形態において図示においては、統合的な車載ECU2と、複数の個別的な車載ECU2とは、スター状のネットワークトポロジーを形成する車載ネットワーク4によって通信可能に接続され、当該統合的な車載ECU2は、スター状のネットワークトポロジーの中心(センター)に位置して設けられている。更に、隣接する個々の個別的な車載ECU2同士が接続され、ループ状のネットワークトポロジーを構成し、双方向通信を可能として冗長化を図るものであってもよい。
【0032】
複数の個別的な車載ECU2は、車両Cにおける各エリアに配置され、イルミネーションランプ等のアクチュエータ30、及びセンサ31等の車載装置3が、シリアルケーブル(じか線)等のワイヤーハーネスにて、直接接続されている。個別的な車載ECU2は、例えば、センサから出力された信号(入力信号)を取得(受信)し、取得した入力信号に基づき生成した要求信号を統合的な車載ECU2に送信する。個別的な車載ECU2は、統合的な車載ECU2から送信された制御信号に基づき、自ECUに直接、接続されたイルミネーションランプ等のアクチュエータ30の駆動制御を行う。
【0033】
個別的な車載ECU2は、当該個別的な車載ECU2に接続される複数の車載装置3間の通信、又は車載装置3と他の車載ECU2との通信を中継するゲートウェイ又はイーサスイッチ等の車載中継装置として機能する中継制御ECUであってもよい。個別的な車載ECU2は、通信に関する中継に加え、蓄電装置から出力された電力を分配及び中継し、自ECUに接続される車載装置3に供給する電力分配装置としても機能するPLB(Power Lan Box)であってもよい。
【0034】
統合的な車載ECU2は、個別的な車載ECU2等、他の車載ECU2を介して中継された車載装置3からのデータに基づき、個々の車載装置3への制御信号を生成及び出力するものであり、例えばヴィークルコンピュータ等の中央制御装置である。統合的な車載ECU2は、個別的な車載ECU2等、他の車載ECU2から出力(送信)される要求信号等の情報又はデータに基づき、当該要求信号の対象となるアクチュエータ30を制御するための制御信号を生成し、生成した制御信号を他の車載ECU2に出力(送信)する。本実施形態においては、統合的な車載ECU2(統合ECU)及び個別的な車載ECU2(個別ECU)により車載システムSは構成されるとしたがこれに限定されない。車載システムSは、例えばCAN(Controller Area Network)ゲートウェイ又はイーサスイッチ等の中継装置によってピアツーピアに接続された複数の車載ECU2によって構成されるものであってもよい。
【0035】
車載装置3は、例えばLiDAR(Light Detection and Ranging)、ライトセンサ、CMOSカメラ、赤外線センサ等の各種センサ31及び、ドアSW(スイッチ)、ランプSW等のスイッチ、ランプ、ドア開閉装置、モータ装置等のアクチュエータ30を含む。
【0036】
外部サーバ100は、例えばインターネット又は公衆回線網等の車外ネットワークに接続されているサーバ等のコンピュータであり、RAM(Random Access Memory)、ROM(Read Only Memory)又はハードディスク等による記憶部を備える。統合的な車載ECU2(統合ECU)は、車外通信装置1と通信可能に接続され、車外通信装置1を介して車外ネットワークを介して接続された外部サーバ100と通信し、外部サーバ100と、車両Cに搭載される他の車載ECU2又は車載装置3との間の通信を中継するものであってもよい。
【0037】
車外通信装置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に内蔵されるものであってもよい。
【0038】
車載ECU2(統合EUC、個別ECU)は、制御部20、記憶部21、入出力I/F22、車内通信部23及び検証部24を含む。制御部20は、CPU(Central Processing Unit)又はMPU(Micro Processing Unit)等により構成してあり、記憶部21に予め記憶された制御プログラム及びデータを読み出して実行することにより、種々の制御処理及び演算処理等を行うようにしてある。制御部20は、例えば、シングルコアのシングルCPU、シングルコアのマルチCPU、マルチコアのシングルCPU、及びマルチコアのマルチCPUを含む。制御部20は、CPU等のソフトウェア処理を行うソフトウェア処理部のみに限定されず、FPGA、ASIC又はSOC等のハードウェア処理にて種々の制御処理及び演算処理等を行うハードウェア処理部を含むものであってもよい。
【0039】
記憶部21は、RAM(Random Access Memory)等の揮発性のメモリ素子又は、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable ROM)若しくはフラッシュメモリ等の不揮発性のメモリ素子、又は、これら記憶デバイスの組み合わせにより構成してあり、制御プログラム及び処理時に参照するデータが予め記憶してある。当該制御プログラムは、例えば、各種の車載装置3を制御するためのプログラム(アプリケーション)、又はLiDAR又はCMOSカメラからの出力データ基づき自動化運転を行うための物標認識を行うプログラム(アプリケーション)等の複数のプログラム(アプリケーション)を含む。更に、車載ECU2の記憶部21には、例えば、Hypervisor又はVMware等の仮想オペレーティングシステムが記憶されている。
【0040】
入出力I/F22は、車外通信装置1の入出力I/F22と同様に、例えばシリアル通信するための通信インターフェイスである。入出力I/F22及びシリアルケーブル等のワイヤーハーネスを介して、車載ECU2は、車外通信装置1と通信可能に接続される。
【0041】
車内通信部23は、例えばCAN(Controller Area Network)又はイーサネット(Ethernet/登録商標)の通信プロトコルを用いた入出力インターフェイスであり、制御部20は、車内通信部23を介して車載ネットワーク4に接続されている他の車載ECU2と相互に通信する。
【0042】
検証部24は、例えばHSM(Hardware Security Module)又はSHE(Secure Hardware Extension)であり、CPU等で構成される制御部20とは別デバイス又は別モジュールとして構成されている。HSM等にて構成される検証部24は、車載ECU2(自ECU)が起動(ブート)される際に行われるセキュアブート処理の一端を担うものであり、記憶部21に記憶されている複数のプログラム等、車載ECU2の起動において実行されるソフトウェアの適正性(完全性)又は健全性を検証する機能モジュールである。検証部24は、例えば、暗号処理用のプロセッサを含み、例えばCMAC(Cipher-based Message Authentication Code)等の暗号アルゴリズムを用いて、検証対象となるプログラム及びゲストOS等のソフトウェアの適正性(完全性)を検証する。検証部24は、車載ECU2の起動時に行われるセキュアブート処理(セキュアブートシーケンス)において、検証対象となる複数のプログラム等それぞれの適正性(完全性)を検証し、プログラムそれぞれに対する検証結果を出力する。当該検証結果は、プログラム等が正当である旨を示す肯定的検証結果、又はプログラム等が例えば改竄等され不正である旨を示す否定的検証結果を含む。
【0043】
検証部24は、全ての仮想ECU200(ゲストOS、プログラム)に対し、2段階にて検証を行うように構成されている。検証部24は、第1段階として、それぞれのコアに対し割り当てられている仮想ECU200のうち、高い優先度の仮想ECU200の検証を行い、第2段階として、当該高い優先度の仮想ECU200以外となる、低い優先度の仮想ECU200の検証を行う。検証部24は、高い優先度の仮想ECU200に対する検証結果として、第1検証結果(リセット解除信号)を制御部20に出力し、低い優先度の仮想ECU200に対する検証結果として、第2検証結果を制御部20に出力する。検証部24は、当該第1検証結果を出力するにあたり、制御部20を構成するコアに対しリセット解除信号を出力するものであってもよい。又は、検証部24は、当該第1検証結果の出力に併せて、当該コアに対しリセット解除信号を出力するものであってもよい。
【0044】
図3は、車載ECU2の論理構成(仮想ECU200)を例示するブロック図である。本実施形態における図示にて車載ECU2の論理構成を例示するものであり、制御部20等によるハードウェア層(物理基盤)を最下層とし、仮想環境にて実行されるプログラム、及び仮想環境管理プログラム等によるソフトウェア層を最上層とした階層構造を例示するブロック図である。
【0045】
上述のとおり、車載ECU2の記憶部21には、例えば、Hypervisor又はVMware等の仮想オペレーティングシステムが記憶されており、車載ECU2の制御部20は、仮想オペレーティングシステムを用いて起動することにより、仮想オペレーティングシステム上にて複数の仮想環境(仮想ECU200)を構築することができる。各種の車載装置3を制御するためのプログラムは、これら複数の仮想環境のうちのいずれかの仮想環境を動作環境として、実行される。すなわち、これらプログラムは、いずれかの仮想環境(仮想ECU200)上にて、実行されるものとなる。仮想環境(仮想ECU200)にてプログラムが実行されることにより、当該プログラムの処理内容に応じて単一又は複数のタスクが生成される。当該タスクによって、より細分化又は区分化された処理単位が実行されるものとなる。
【0046】
仮想化の方式は、本実施形態の図示のように仮想オペレーティングシステムによって直接的に制御部20等のハードウェアリソースにアクセスするハイパーバイザー方式、又は仮想オペレーティングシステムとハードウェアリソースとの間にLinux(登録商標)等のオペレーティングシステムが介在するホストOS方式であってもよい。又は、コンテナ方式の仮想オペレーティングシステムを用いるものであってもよい。
【0047】
仮想オペレーティングシステムを用いて起動した車載ECU2は、仮想オペレーティングシステムの機能により、複数の仮想環境を構築することができ、複数の仮想環境には、車載ECU2が備える制御部20等のハードウェアリソースが割り当てられる。これらハードウェアリソースが割り当てられた仮想環境それぞれは、仮想的な制御部20(仮想制御部)、記憶部21(仮想記憶部)及び車内通信部23(仮想車内通信部)を備えるものとなり、仮想ECU200として機能する。
【0048】
仮想ECU200それぞれの仮想記憶部それぞれには、例えばUbuntu(登録商標)等のゲストOS(Operation System)が記憶され、仮想ECU200それぞれはゲストOSを起動し、当該ゲストOSの上でプログラムを実行する。当該ゲストOSは、個々の仮想ECU200に応じて、異なる種類のOSであってもよい。上述のごとく仮想記憶部の実体は、仮想ECU200それぞれに割り当てられた記憶部21の記憶領域であるため、ゲストOSも仮想オペレーティングシステムと同様に記憶部21に記憶されていることは、言うまでもない。コンテナ方式の仮想オペレーティングシステムを用いる場合、ゲストOSを不要とし、当該仮想オペレーティングシステムの上でコンテナ(仮想環境)を生成し、当該コンテナ(仮想環境)上にてプログラムを実行するものであってもよい。
【0049】
仮想オペレーティングシステムを用いて起動した車載ECU2の制御部20は、構築したいずれかの仮想環境(仮想ECU200)のうちの一つの仮想ECU200にて、全ての仮想環境を管理するプログラム(仮想環境管理プログラム)を実行する。すなわち、仮想環境管理プログラムを実行する仮想ECU200は、仮想オペレーティングシステムのコントロールパネルとして機能するものであり、管理部210に相当する。又は、仮想オペレーティングシステム自体が、管理部210としての機能を包含するものであってもよい。制御部20とは別個のデバイスである検証部24は、仮想オペレーティングシステムによる仮想化の対象外となり、当該検証部24は、管理部210(仮想オペレーティングシステムのコントロールパネル)又は制御部20を構成するコアと通信するものとなる。
【0050】
記憶部21には、後述する割当時間情報(第1割当時間テーブル21A、第2割当時間テーブル21B)が記憶されている。管理部210は、検証部24からの出力内容(第1検出結果、第2検出結果)に応じて、第1割当時間テーブル21A又は第2割当時間テーブル21Bを選択し、選択したテーブルに基づき、個々の仮想環境(仮想ECU200)に対する制御部20(コアそれぞれ)の利用時間の割当(スケジューリング)を行う。
【0051】
図4は、仮想ECU200における機能部を例示する機能ブロック図である。
図5は、第1割当時間テーブル21A(第1割当時間情報)を例示する説明図である。
図6は、第2割当時間テーブル21B(第2割当時間情報)を例示する説明図である。
【0052】
仮想ECU200の仮想制御部(制御部20)は、当該仮想ECU200の仮想記憶部(記憶部21)に記憶されているプログラムを実行することにより、タスク生成部201として機能する。
【0053】
仮想オペレーティングシステムを実行する制御部20又は、当該仮想オペレーティングシステムを管理するための仮想ECU200の仮想制御部(制御部20)は、仮想記憶部(記憶部21)に記憶されている仮想環境管理プログラムを実行することにより、仮想オペレーティングシステムのコントロールパネルとして機能し、本実施形態における管理部210に相当する。当該管理部210は、テーブル選択部211、及び割当実行部212を含む。
【0054】
制御部20が、例えばマルチコアにて構成される場合、当該管理部210(仮想オペレーティングシステムのコントロールパネル)に対し利用時間が割り当てられるコアと、車載装置3等の制御を行うためのプログラムの動作環境となる仮想環境(仮想ECU200)に対し利用時間が割り当てられるコアとは、異なるコアであってもよい。
【0055】
管理部210は、例えば記憶部21に記憶されている割当時間情報を参照することにより、仮想ECU200に対し、制御部20を構成するいずれかのコアの利用時間を、割り当てる処理(スケジューリング)を継続して行っている。本実施形態における図示のとおり、管理部210が参照する割当時間情報は、例えば第1割当時間テーブル21A、及び第2割当時間テーブル21Bとして、テーブル形式(ルックアップテーブル)にて記憶部21に記憶されている。
【0056】
第1割当時間テーブル21A、及び第2割当時間テーブル21Bの管理項目は、仮想ECU200の項目、割当コアの項目、割当周期の項目、割当時間の項目、プログラム種別の項目、ASILの項目、及び優先度の項目を含む。すなわち、第1割当時間テーブル21A及び第2割当時間テーブル21Bの管理項目は、同一である。
【0057】
仮想ECU200の項目には、同一の制御部20(コア)を時分割することにより共用する仮想ECU200の名称又は識別子が格納される。本実施形態における第1割当時間テーブル21Aにおいては、優先度の高い仮想ECU200(VM1、VM5)のみが、定義されている。第2割当時間テーブル21Bにおいては、優先度の高い仮想ECU200及び低い仮想ECU200からなる全ての仮想ECU200(VM1からVM7)が、定義されている。従って、管理部210は、第1割当時間テーブル21Aを選択することにより、優先度の高い仮想ECU200(VM1、VM5)のみを対象とした制御部20(コア1、コア2)の利用時間の割り当てを行うことができる。管理部210は、第2割当時間テーブル21Bを選択することにより、全ての仮想ECU200(VM1からVM7)を対象とした制御部20(コア1、コア2)の利用時間の割り当てを行うことができる。
【0058】
割当コアの項目には、対応する仮想ECU200(同じレコードに格納される仮想ECU200)に割り当てられるコアの番号又は識別子が格納される。周期的(定常的)に割当が行われる仮想ECU200(VM1からVM6)に対しては、いずれか一つのコアの番号が、格納される。これにより、各仮想ECU200は、どのコア(コア番号)の利用時間が割り当てられるかが、定められている。本実施形態における第1割当時間テーブル21Aにおいては、仮想ECU200(VM1)は、コア1に割り当てられ、仮想ECU200(VM5)は、コア2に割り当てられている。第2割当時間テーブル21Bにおいては、仮想ECU200(VM1、VM2、VM3、VM4)は、コア1に割り当てられ、仮想ECU200(VM5、VM6、VM7)は、コア2に割り当てられている。
【0059】
割当周期の項目には、周期的(定常的)に割当が行われる仮想ECU200における割当周期が、格納される。割当時間の項目には、周期的(定常的)に制御部20の利用時間が割り当てられる仮想ECU200において、それぞれの仮想ECU200に割り当てられる割当時間が格納される。これら割当時間の合算値が、割当周期に相当する。
【0060】
本実施形態における第1割当時間テーブル21Aにおいては、単一のコアに対し割り当てられる仮想ECU200の個数も1つであるため、割当周期と割当時間とは、等しい値となる。第2割当時間テーブル21Bにおいては、単一のコアに対し割り当てられる仮想ECU200の個数は2つ以上であるため、それぞれのコアにおいて、それぞれの仮想ECU200に割り当てられる割当時間の合算値が、割当周期に相当する。
【0061】
プログラム種別の項目には、対応する(同じレコードに格納される)各仮想ECU200(仮想環境)にて実行されるプログラムの種別が格納されている。ASILの項目には、実行されるプログラムの安全性指標を示すASILのレベルが格納される。優先度の項目は、プログラムの優先度を示す値(本実施形態では、高/低)が格納される。当該優先度に基づき、当該プログラムに対応する仮想ECU200に対する検証部24の検証の順番、及び管理部210による仮想ECU200の生成の順番が、決定される。当該優先度は、対応する車載装置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レベルの優先度が最も高いとみなすことができる。本実施形態において、プログラムの優先度を示す指標としてASILを用いるとしたが、これに限定されない。当該プログラムの優先度は、ASILとは別個の値(優先度設定値)により決定されるものであってもよく、当該優先度設定値は、例えば、車載システムSの利用者、管理者又は製造者によって、個々に変更可能に設定されるものであってもよい。
【0062】
本実施形態においては、コア1及びコア2にて実行されるプログラムの内、ASIL-Dのプログラム及び当該プログラムの動作環境となる仮想ECU200(コア1:VM1、コア2:VM5)の優先度を、高い優先度としている。これ以外の仮想ECU200(VM2、VM3、VM4、VM6、VM7)の優先度を、低い優先度としている。本実施形態における優先度の区分けは、一例であり、これに限定されるものでないことは、言うまでもない。
【0063】
検証部24は、例えば記憶部21に記憶されている第1割当時間テーブル21Aを参照し、制御部20を構成するそれぞれのコアに対応する仮想ECU200において、高い優先度の仮想ECU200に対する検証を行い、第1検証結果(リセット解除信号)をテーブル選択部211に出力する。検証部24は、当該第1検証結果としてリセット解除信号を、対応するそれぞれのコアに出力するものであってもよい。
【0064】
テーブル選択部211は、第1検証結果(リセット解除信号)に基づき、高い優先度の仮想ECU200に対応した第1スケジュールを定義している割当時間情報(第1割当時間テーブル21A)を選択し、当該第1割当時間テーブル21Aに応じた割当指示を割当実行部212に出力する。
【0065】
割当実行部212は、当該割当指示に基づき、高い優先度の仮想ECU200を生成し、割り当てられている制御部20(コア)の利用時間を割り当てる。
【0066】
高い優先度の仮想ECU200のタスク生成部201は、自仮想ECU200に適用される高い優先度のプログラムを実行してタスクを生成し、当該タスクによって、より細分化又は区分化された処理単位が実行されるものとなる。
【0067】
検証部24は、例えば記憶部21に記憶されている第2割当時間テーブル21Bを参照し、制御部20を構成するそれぞれのコアに対応する仮想ECU200において、低い優先度の仮想ECU200に対する検証を行い、第2検証結果をテーブル選択部211に出力する。検証部24による低い優先度の仮想ECU200に対する検証に関する処理と、管理部210による高い優先度の仮想ECU200に関する処理とは、並行して実行される。
【0068】
テーブル選択部211は、第2検証結果に基づき、全ての仮想ECU200(高い優先度及び低い優先度の仮想ECU200)に対応した第2スケジュールを定義している割当時間情報(第2割当時間テーブル21B)を選択し、当該第2割当時間テーブル21Bに応じた割当指示を割当実行部212に出力する。
【0069】
割当実行部212は、当該割当指示に基づき、低い優先度の仮想ECU200を生成する。これより、全ての仮想ECU200が生成されるものとなる。割当実行部212は、全ての仮想ECU200に対し、それぞれに仮想ECU200に対し割り当てられている制御部20(コア)の利用時間を割り当てる。すなわち、割当実行部212は、検証部24からの出力内容に基づき、第1スケジュール(第1割当時間テーブル21A)から第2スケジュール(第2割当時間テーブル21B)に切り替えて再スケジュールを行う再スケジュール部として機能する。
【0070】
図7は、仮想環境に対する制御部20の割当時間帯に関する説明図である。本実施形態における例示として、制御部20は、2つのコアから構成されるデュアルコアCPUである。
【0071】
検証部24は、セキュアブート処理(セキュアブートシーケンス)を開始するにあたり、自部におけるファームウェア(FW)の起動後、コア1及びコア2において高い優先度の仮想ECU200(VM1等)の検証を行い、それぞれのコアに対し第1検出結果(リセット解除信号)を出力する。検証部24は、当該第1検出結果(リセット解除信号)の出力後、低い優先度の仮想ECU200の検証を行い、第2検出結果を出力する。
【0072】
第1検出結果(リセット解除信号)が入力されたそれぞれのコアは、例えばHypervisor及びAUTOSAR等の規格によるBSW(Basic Soft Ware)の初期化を行い、当該コアの利用時間が割り当てられる高い優先度の仮想ECU200が、生成される。当該高い優先度の仮想ECU200(仮想環境)において、高い優先度のプログラムが実行(起動)される。
【0073】
仮想オペレーティングシステムのコントロールパネルとして機能する管理部210は、第1割当時間テーブル21Aに基づき、これら高い優先度の仮想ECU200に対する制御部20(コア)の利用時間の割り当て(スケジューリング)を行う。
【0074】
第2検出結果が入力されたそれぞれのコアにおいては、当該コアの利用時間が割り当てられる低い優先度の仮想ECU200が生成される。当該低い優先度の仮想ECU200(仮想環境)において、低い優先度のプログラムが実行(起動)される。これにより、全ての仮想ECU200が生成され、それぞれの仮想ECU200(仮想環境)において、それぞれのプログラムが実行(起動)される。
【0075】
仮想オペレーティングシステムのコントロールパネルとして機能する管理部210は、第2割当時間テーブル21Bに基づき、全ての仮想ECU200に対する制御部20(コア)の利用時間の割り当て(スケジューリング)を行う。
【0076】
それぞれのコアにおける高優先度の仮想環境の生成及び当該高優先度の仮想環境にて高優先度のプログラムを実行(起動)する処理と、検証部24による低優先度の仮想ECU200に対する検証とは、並行して行われる。これにより、高優先度のプログラムを早期に実行(起動)しつつ、検証部24による検証を遅延させることなく、効率的にセキュアブート処理を実施することができる。
【0077】
図8は、制御部20及び検証部24によるシーケンスを例示した説明図である。本実施形態における図示において、制御部20(コア1、コア2)はデュアルコアCPUにより構成されるものとしている。本実施形態における制御部20及び検証部24の処理は、車載ECU2の起動時に行われるセキュアブートシーケンスの一環として行われる。
【0078】
検証部24は、コア1にて実行される高優先度の仮想ECU200(ゲストOS、プログラム)の検証を行う(S01)。検証部24は、コア1における第1検証結果を制御部20に出力(送信)する(S02)。検証部24は、当該第1検証結果として、コア1に対しリセット解除信号を出力するものであってもよい。又は、検証部24は、当該第1検証結果の出力に併せて、コア1に対しリセット解除信号を出力するものであってもよい。当該リセット解除信号が入力されることにより、コア1のリセット解除が行われ、コア1は、非活性状態(ノンアクティブ)から活性状態(アクティブ)に遷移する。
【0079】
制御部20は、コア1における第1検証結果を取得する(S03)。制御部20は、第1検証結果に基づき、コア1にて実行される高優先度の仮想環境(仮想ECU200:VM1)を生成し、当該仮想環境を動作環境として高優先度のプログラムを実行(起動)する(S04)。制御部20は、第1スケジュールにてコア1における割当時間のスケジューリングを行う(S05)。本実施形態における第1スケジュール(第1割当時間テーブル21A)においては、高優先度の仮想ECU200(VM1)に対してのみコア1(制御部20)の利用時間が、割り当てられる。HyperVisor等の仮想化オペレーティングシステムからの観点においては、仮想環境(仮想ECU200)の生成及び当該仮想環境(仮想ECU200)に対するコア1の利用時間の割り当てに関する制御は、仮想オペレーティングシステムのコントロールパネルとして機能する管理部210によって行われる。
【0080】
検証部24は、コア2にて実行される高優先度の仮想ECU200(ゲストOS、プログラム)の検証を行う(S06)。検証部24は、コア2における第1検証結果を制御部20に出力(送信)する(S07)。検証部24は、当該第1検証結果として、コア2に対しリセット解除信号を出力するものであってもよい。又は、検証部24は、当該第1検証結果の出力に併せて、コア2に対しリセット解除信号を出力するものであってもよい。当該リセット解除信号が入力されることにより、コア2のリセット解除が行われ、コア2は、非活性状態(ノンアクティブ)から活性状態(アクティブ)に遷移する。
【0081】
制御部20は、コア2における第1検証結果を取得する(S08)。制御部20は、第1検証結果に基づき、コア2にて実行される高優先度の仮想環境(仮想ECU200:VM5)を生成し、当該仮想環境を動作環境として高優先度のプログラムを実行(起動)する(S09)。制御部20は、第1スケジュールにてコア2における割当時間のスケジューリングを行う(S10)。本実施形態における第1スケジュール(第1割当時間テーブル21A)においては、高優先度の仮想ECU200(VM5)に対してのみコア2(制御部20)の利用時間が、割り当てられる。HyperVisor等の仮想化オペレーティングシステムからの観点においては、仮想環境(仮想ECU200)の生成及び当該仮想環境(仮想ECU200)に対するコア2の利用時間の割り当てに関する制御は、仮想オペレーティングシステムのコントロールパネルとして機能する管理部210によって行われる。
【0082】
検証部24は、コア1にて実行される低優先度の仮想ECU200(ゲストOS、プログラム)の検証を行う(S11)。検証部24は、コア1における第2検証結果を制御部20に出力(送信)する(S12)。
【0083】
制御部20は、コア1における第2検証結果を取得する(S13)。制御部20は、第2検証結果に基づき、コア1にて実行される低優先度の仮想環境(仮想ECU200:VM2、VM3、VM4)を生成し、当該仮想環境を動作環境として低優先度のプログラムを実行(起動)する(S14)。制御部20は、第2スケジュール(第2割当時間テーブル21B)にてコア1における割当時間のスケジューリングを行う(S15)。本実施形態における第2スケジュール(第2割当時間テーブル21B)においては、コア1を共用する全ての仮想ECU200(VM1、VM2、VM3、VM4)に対し、当該コア1(制御部20)の利用時間が、割り当てられる。
【0084】
検証部24は、コア2にて実行される低優先度の仮想ECU200(ゲストOS、プログラム)の検証を行う(S16)。検証部24は、コア2における第2検証結果を制御部20に出力(送信)する(S17)。
【0085】
制御部20は、コア2における第2検証結果を取得する(S18)。制御部20は、第2検証結果に基づき、コア2にて実行される低優先度の仮想環境(仮想ECU200:VM6、VM7)を生成し、当該仮想環境を動作環境として低優先度のプログラムを実行(起動)する(S19)。制御部20は、第2スケジュール(第2割当時間テーブル21B)にてコア2における割当時間のスケジューリングを行う(S20)。本実施形態における第2スケジュール(第2割当時間テーブル21B)においては、コア2を共用する全ての仮想ECU200(VM5、VM6、VM7)に対し、当該コア2(制御部20)の利用時間が、割り当てられる。
【0086】
車載ECU2は、制御部20(管理部210)による高優先度の仮想環境の生成及び当該高優先度の仮想環境にて高優先度のプログラムを実行(起動)する処理と、検証部24による低優先度の仮想ECU200に対する検証とを、並行して行う。これにより、高優先度の仮想ECU200(仮想環境)を早期に生成して高優先度のプログラムを早期に実行(起動)しつつ、検証部24による全ての仮想ECU200(仮想環境)に対する検証を遅延させることなく、効率的にセキュアブート処理を実施することができる。
【0087】
図9は、車載ECU2の制御部20及び検証部24の処理を例示するフローチャートである。車載ECU2の制御部20は、例えば、車両Cが停止状態(IGスイッチがオフ)から起動状態(IGスイッチがオン)に状態遷移するにあたり、車載ECU2(自ECU)が起動(ブート)される際に行われるセキュアブート処理(セキュアブートシーケンス)に基づき、以下の処理を行う。
【0088】
車載ECU2の検証部24は、高い優先度の仮想ECU200の検証を行う(S101)。検証部24は、例えば記憶に記憶されている第1割当時間テーブル21Aを参照し、それぞれのコアに関連付けられている高い優先度の仮想ECU200を特定する。仮想ECU200に対する検証を行うにあたり、検証部24は、当該仮想ECU200にて実行されるプログラム及び起動されるゲストOSに対する検証を行うものであってもよい。又は、仮想ECU200それぞれに対し、記憶部21における記憶領域が区分化されている場合、検証部24は、当該仮想ECU200に対応する記憶領域にて記憶されているプログラム又はゲストOSに対する検証を行うものであってもよい。車載ECU2の制御部20が、例えば複数のコアを含むマルチコアCPUによって構成されている場合、検証部24は、それぞれのコアにて実行される高い優先度の仮想ECU200(高優先度の仮想ECU200)に対する検証を順次に行う。
【0089】
車載ECU2の検証部24は、全てのコアにおける高い優先度の仮想ECU200の検証が完了したか否かを判定する(S102)。全てのコアにおける高い優先度の仮想ECU200の検証が完了していない場合(S102:NO)、車載ECU2の検証部24は、再度S101の処理を実行すべく、ループ処理を行う。
【0090】
全てのコアにおける高い優先度の仮想ECU200の検証が完了した場合(S102:YES)、車載ECU2の検証部24は、第1検証結果(リセット解除信号)を出力する(S103)。検証部24は、各コアそれぞれにおける第1検証結果を出力するにあたり、検証が完了したコア毎に当該第1検証結果を出力するものであってもよい。制御部20が、2つのコア(コア1、コア2)を含むデュアルコアCPUによって構成される場合、検証部24は、コア1における高い優先度の仮想ECU200の検証が完了した際にコア1に対する第1検証結果を出力し、当該第1検証結果の出力後、コア2における高い優先度の仮想ECU200の検証が完了した際にコア2に対する第1検証結果を出力するものであってもよい。
【0091】
車載ECU2の検証部24は、低い優先度の仮想ECU200の検証を行う(S104)。検証部24は、例えば記憶部21に記憶されている第2割当時間テーブル21Bを参照し、それぞれのコアに関連付けられている低い優先度の仮想ECU200を特定する。
【0092】
車載ECU2の検証部24は、全てのコアにおける低い優先度の仮想ECU200の検証が完了したか否かを判定する(S105)。全てのコアにおける低い優先度の仮想ECU200の検証が完了していない場合(S105:NO)、車載ECU2の検証部24は、再度S105の処理を実行すべく、ループ処理を行う。
【0093】
車載ECU2の検証部24は、第2検証結果を出力する(S106)。検証部24は、各コアそれぞれにおける第2検証結果を出力するにあたり、検証が完了したコア毎に当該第2検証結果を出力するものであってもよい。制御部20が、2つのコア(コア1、コア2)を含むデュアルコアCPUによって構成される場合、検証部24は、コア2における低い優先度の仮想ECU200の検証が完了した際にコア2に対する第2検証結果を出力し、当該第2検証結果の出力後、コア2における低い優先度の仮想ECU200の検証が完了した際にコア2に対する第2検証結果を出力するものであってもよい。
【0094】
以下の処理が、仮想オペレーティングシステムのコントロールパネルとして機能する管理部210にて実行される場合、当該管理部210の実体は、車載ECU2の制御部20である。車載ECU2の管理部210は、第1検証結果(リセット解除信号)を取得したか否かを判定する(S111)。管理部210は、検証部24から出力される第1検証結果(リセット解除信号)を取得したか否かを判定する。管理部210の実態である制御部20は、HSM等により構成される検証部24から出力される第1検証結果(リセット解除信号)を待ち受ける状態にある。従って、管理部210は、第1検証結果が入力された場合、車載ECU2における起動時の処理が行われていることを認識することができる。当該第1検証結果がリセット解除信号を含む場合、又は第1検証結果がリセット解除信号に相当する場合、リセット解除信号が入力されたコアは、活性状態となる。リセット解除信号により活性状態に遷移したコアにおいて、例えばHypervisor及びAUTOSAR等の規格によるBSW(Basic Soft Ware)の初期化が行われるものであってもよい。
【0095】
第1検証結果(リセット解除信号)を取得した場合(S111:YES)、車載ECU2の管理部210は、第1スケジュールを選択する(S112)。管理部210は、第1スケジュールを定義している第1割当時間テーブル21Aを、制御部20(コア)の利用時間を仮想ECU200に割り当てるための用いるスケジュールテーブルとして選択する。第1割当時間テーブル21Aには、制御部20がマルチコアCPUで構成されている場合、各コアにおいて利用時間が割り当てられる高優先度の仮想ECU200の割当時間帯及び割当周期が定義されている。
【0096】
車載ECU2の管理部210は、選択したスケジュール(第1スケジュール)に基づき、スケジューリングを実行する(S113)。管理部210は、第1割当時間テーブル21Aにて定義されている内容に基づき、制御部20(コア)の利用時間を仮想ECU200に割り当てる。これにより、第1検証結果(リセット解除信号)において検証対象となった高い優先度の仮想ECU200(高優先度の仮想ECU200)に対し、制御部20(コア)の利用時間が、第1スケジュール(第1割当時間テーブル21A)に基づき割り当てられ、当該高優先度の仮想ECU200(仮想環境)上で、高優先度のプログラムが実行(起動)される。
【0097】
車載ECU2の管理部210は、S113の処理の実行後、又は第1検証結果(リセット解除信号)を取得していない場合(S111:NO)、車載ECU2の管理部210は、第2検証結果を取得したか否かを判定する(S1111)。管理部210は、検証部24からの第2検証結果が入力されたか否かに基づき、当該第2検証結果を取得したか否かを判定する。第2検証結果を取得していない場合(S1111:NO)、車載ECU2の管理部210は、再度S1111の処理を実行すべく、ループ処理を行う。
【0098】
第2検証結果を取得した場合(S1111:YES)、車載ECU2の管理部210は、第2スケジュールを選択する(S1112)。第2検証結果を取得した場合、検証部24により、全ての仮想ECU200(プログラム及びゲストOS)に対する検証が完了したものであり、すなわち第2検証結果は、全仮想ECU200の検証完了通知に相当する。
管理部210は、第2スケジュールを定義している第2割当時間テーブル21Bを、制御部20(コア)の利用時間を仮想ECU200に割り当てるための用いるスケジュールテーブルとして選択する。第2割当時間テーブル21Bには、制御部20がマルチコアCPUで構成されている場合、各コアにおいて利用時間が割り当てられる全ての仮想ECU200の割当時間帯及び割当周期が定義されている。
【0099】
車載ECU2の管理部210は、選択したスケジュール(第2スケジュール)に基づき、スケジューリングを実行する(S1113)。管理部210は、第2割当時間テーブル21Bにて定義されている内容に基づき、制御部20(コア)の利用時間を仮想ECU200に割り当てる。これにより、全ての仮想ECU200(高優先度の仮想ECU200、及び低優先度の仮想ECU200)に対し、制御部20(コア)の利用時間が、第2スケジュール(第2割当時間テーブル21B)に基づき割り当てられ、それぞれの仮想ECU200(仮想環境)上で、プログラムが実行(起動)される。これにより、車載ECU2は、自ECUに適用されている全てのプログラムを、当該プログラムそれぞれに対応する仮想環境(動作環境)にて実行し、自ECUにて定められている機能仕様に応じた動作を開始する。
【0100】
管理部210による処理S111において、トリガーとなる検証部24の処理は、第1検証結果(リセット解除信号)の出力(S103)である。従って、管理部210における処理S112からS1112まで期間において、高優先度の仮想ECU200(仮想環境)にて高優先度のプログラムが実行(起動)されると共に、これに並行して、検証部24によって、低い優先度の仮想ECU200の検証に関する処理(S104からS106)が行われる。管理部210及び検証部24による処理を並行して行うことにより、高優先度の仮想ECU200(仮想環境)を早期に生成して高優先度のプログラムを早期に実行(起動)しつつ、検証部24による全ての仮想ECU200(仮想環境)に対する検証を遅延させることなく、効率的にセキュアブート処理を実施することができる。
【0101】
車載ECU2の管理部210は、本フローチャートにおける一連の処理(S111からS1113)を行うにあたり、マルチコアCPUで構成されている制御部20が有するコアの個数に応じて、当該一連の処理を行うプロセスを生成し、各コア毎にて当該一連の処理を行うものであってもよい。すなわち、車載ECU2の管理部210は、例えば、制御部20のコア数と同数のサブプロセス又はスレッドを生成し、各サブプロセス等にて、それぞれのコア(コア1、コア2)に応じた一連の処理(S111からS1113)を行い、各コアにおける仮想ECU200の生成及びスケジューリングに関する処理を並行して行うものであってもよい。
【0102】
今回開示された実施形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0103】
C 車両
S 車載システム
100 外部サーバ
1 車外通信装置
11 アンテナ
2 車載ECU
20 制御部
21 記憶部
21A 第1割当時間テーブル
21B 第2割当時間テーブル
22 入出力I/F
23 車内通信部
24 検証部
200 仮想ECU(仮想環境)
201 タスク生成部
210 管理部
211 テーブル選択部
212 割当実行部
3 車載装置
30 アクチュエータ(ACT)
31 センサ
4 車載ネットワーク