(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024154953
(43)【公開日】2024-10-31
(54)【発明の名称】車載装置、更新方法、及び更新プログラム
(51)【国際特許分類】
G06F 21/57 20130101AFI20241024BHJP
B60R 16/02 20060101ALI20241024BHJP
【FI】
G06F21/57 320
B60R16/02 660U
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2023069206
(22)【出願日】2023-04-20
(71)【出願人】
【識別番号】395011665
【氏名又は名称】株式会社オートネットワーク技術研究所
(71)【出願人】
【識別番号】000183406
【氏名又は名称】住友電装株式会社
(71)【出願人】
【識別番号】000002130
【氏名又は名称】住友電気工業株式会社
(74)【代理人】
【識別番号】110000280
【氏名又は名称】弁理士法人サンクレスト国際特許事務所
(72)【発明者】
【氏名】小林 拓也
(57)【要約】
【課題】車載装置の部品点数を抑制しつつ、セキュリティを確保する。
【解決手段】
車載装置は、第1論理領域及び第2論理領域を含む記憶部と、前記第1論理領域に記憶され、前記車載ネットワークに対してデータの送受信が可能な第1ソフトウェアと、前記第2論理領域に記憶され、前記車載ネットワークに対してデータの送受信が制限された第2ソフトウェアと、前記第2ソフトウェアを更新する更新部と、前記第1論理領域との間でのデータの授受が可能であり、且つ、前記第2論理領域との間でのデータの授受が可能である領域間通信部と、を備え、前記領域間通信部は、前記第1ソフトウェアによって実現されるデータ通信部が前記車載ネットワークから受信した更新データを、前記データ通信部から受け取り、前記更新データを前記更新部へ引き渡し、前記更新部は、前記更新データに基づいて、前記第2ソフトウェアを更新する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
車載ネットワークに接続された車載装置であって、
互いに論理的に分離され、データの授受が制限された第1論理領域及び第2論理領域を含む記憶部と、
前記第1論理領域に記憶され、前記車載ネットワークに対してデータの送受信が可能な第1ソフトウェアと、
前記第2論理領域に記憶され、前記車載ネットワークに対してデータの送受信が制限された第2ソフトウェアと、
前記第2ソフトウェアを更新する更新部と、
前記第1論理領域との間でのデータの授受が可能であり、且つ、前記第2論理領域との間でのデータの授受が可能である領域間通信部と、
を備え、
前記領域間通信部は、前記第1ソフトウェアをプロセッサが実行することによって実現されるデータ通信部が前記車載ネットワークから受信した更新データを、前記データ通信部から受け取り、受け取った前記更新データを前記更新部へ引き渡し、
前記更新部は、前記領域間通信部から引き渡された前記更新データに基づいて、前記第2ソフトウェアを更新する、
車載装置。
【請求項2】
前記更新部は、前記第2論理領域に記憶された更新ソフトウェアを前記プロセッサが実行することによって実現される、
請求項1に記載の車載装置。
【請求項3】
前記更新部は、前記第1ソフトウェアを更新することが可能である、
請求項2に記載の車載装置。
【請求項4】
前記更新部は、前記第1ソフトウェアを更新する第1更新部と、前記第2ソフトウェアを更新する第2更新部とを含み、
前記第1更新部は、前記第1論理領域に記憶された第1更新ソフトウェアを前記プロセッサが実行することによって実現され、
前記第2更新部は、前記第2論理領域に記憶された第2更新ソフトウェアを前記プロセッサが実行することによって実現される、
請求項1に記載の車載装置。
【請求項5】
前記第1更新部は、前記車載ネットワークから前記データ通信部が受信した第1更新データを前記データ通信部から受け取り、受け取った前記第1更新データに基づいて、前記第1ソフトウェアを更新する、
請求項4に記載の車載装置。
【請求項6】
前記記憶部は、物理的に分離された第1記憶部と第2記憶部とを含み、
前記領域間通信部は、前記第1記憶部に記憶された第1管理ソフトウェアを前記プロセッサが実行することによって実現される第1領域間通信部と、前記第2記憶部に記憶された第2管理ソフトウェアを前記プロセッサが実行することによって実現される第2領域間通信部とを含み、
前記第1領域間通信部は、前記第2領域間通信部が停止している間に動作し、
前記第2領域間通信部は、前記第1領域間通信部が停止している間に動作する、
請求項1に記載の車載装置。
【請求項7】
前記第1領域間通信部は、前記第2管理ソフトウェアが更新さている間に動作し、
前記第2領域間通信部は、前記第1管理ソフトウェアが更新さている間に動作する、
請求項6に記載の車載装置。
【請求項8】
前記記憶部は、前記第1論理領域及び前記第2論理領域のそれぞれから論理的に分離され、前記第1論理領域及び前記第2論理領域のそれぞれに対するデータの授受が制限された第3論理領域を含み、
前記第1管理ソフトウェア及び前記第2管理ソフトウェアは、前記第3論理領域に記憶されている、
請求項6に記載の車載装置。
【請求項9】
前記第1論理領域は、前記第1記憶部の第1部分領域と、前記第2記憶部の第1部分領域とを含み、
前記第2論理領域は、前記第1記憶部の第2部分領域と、前記第2記憶部の第2部分領域とを含み、
前記第1記憶部の前記第1部分領域と、前記第2記憶部の前記第1部分領域とのそれぞれには、2つの前記第1ソフトウェアが記憶されており、
前記第1記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが実行されている間、前記第2記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが停止し、
前記第2記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが実行されている間、前記第1記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが停止する、
請求項6に記載の車載装置。
【請求項10】
前記第1記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが更新されている間、前記第2記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが実行され、
前記第2記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが更新されている間、前記第1記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが実行される、
請求項9に記載の車載装置。
【請求項11】
前記第1記憶部の前記第2部分領域と、前記第2記憶部の前記第2部分領域とのそれぞれには、2つの前記第2ソフトウェアが記憶されており、
前記第1記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが実行されている間、前記第2記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが停止し、
前記第2記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが実行されている間、前記第1記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが停止する、
請求項9に記載の車載装置。
【請求項12】
前記第1記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが更新されている間、前記第2記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが実行され、
前記第2記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが更新されている間、前記第1記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが実行される、
請求項11に記載の車載装置。
【請求項13】
前記データ通信部は、外部からの攻撃を防御する第1防御機能を有し、
前記第2ソフトウェアをプロセッサが実行することによって実現されるデータ授受部は、外部からの攻撃を防御する第2防御機能を有する、
請求項1から請求項12のいずれか1項に記載の車載装置。
【請求項14】
車載ネットワークに接続された車載装置においてソフトウェアを更新するための更新方法であって、
記憶部に設けられた第1論理領域に記憶され、前記車載ネットワークに対してデータの送受信が可能な第1ソフトウェアをプロセッサが実行することによって実現されるデータ通信部によって前記車載ネットワークから受信された更新データを、前記第1論理領域との間でのデータの授受が可能な領域間通信部が受け取るステップと、
記憶部に設けられ、前記第1論理領域と論理的に分離された第2論理領域に記憶され、前記車載ネットワークに対してデータの送受信が制限された第2ソフトウェアを更新する更新部へ、前記領域間通信部が前記更新データを引き渡すステップと、
前記更新部が、前記領域間通信部から引き渡された前記更新データに基づいて、前記第2ソフトウェアを更新するステップと、
を含む、
更新方法。
【請求項15】
車載ネットワークに接続された車載装置においてソフトウェアを更新するための更新プログラムであって、
互いに論理的に分離され、データの授受が制限された第1論理領域及び第2論理領域を含む記憶部を含むコンピュータに、
前記第1論理領域に記憶され、前記車載ネットワークに対してデータの送受信が可能な第1ソフトウェアをプロセッサが実行することによって実現されるデータ通信部によって前記車載ネットワークから受信された更新データを、前記第1論理領域との間でのデータの授受が可能な領域間通信部を介して受け取るステップと、
前記領域間通信部から受け取った前記更新データに基づいて、前記第2論理領域に記憶され、前記車載ネットワークに対してデータの送受信が制限された第2ソフトウェアを更新するステップと、
実行させるための
更新プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、車載装置、更新方法、及び更新プログラムに関する。
【背景技術】
【0002】
車両には、エンジン、トランスミッション等を制御する制御系ECU(Electronic Control Unit)、ヘッドライト、パワーウインドウ等を制御するボディ系ECU、ナビゲーション装置、マルチメディア機器等の情報系ECU等、多種の車載装置が搭載される。
【0003】
特許文献1には、第1CPU(Central Processing Unit)及び第2CPUを備える車載中継装置が開示されている。第1CPUは、車両の内部の車載ネットワーク2から切り離されており、車両の外部との通信は、第1CPUにより行われる。第2CPUは、車両の外部から切り離して設けられ、車載ネットワークに通信可能に接続されている。特許文献1に開示された車載中継装置は、物理的に分離された第1CPU及び第2CPUによって、車両の外部からの車載ネットワークへの攻撃を多層的に防御することで、セキュリティを向上させている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に開示された車載中継装置では、2つのCPUを必要とするため、部品点数が多く、製品コストが嵩むという問題がある。
【課題を解決するための手段】
【0006】
本開示の一態様に係る車載装置は、車載ネットワークに接続された車載装置であって、互いに論理的に分離され、データの授受が制限された第1論理領域及び第2論理領域を含む記憶部と、前記第1論理領域に記憶され、前記車載ネットワークに対してデータの送受信が可能な第1ソフトウェアと、前記第2論理領域に記憶され、前記車載ネットワークに対してデータの送受信が制限された第2ソフトウェアと、前記第2ソフトウェアを更新する更新部と、前記第1論理領域との間でのデータの授受が可能であり、且つ、前記第2論理領域との間でのデータの授受が可能である領域間通信部と、を備え、前記領域間通信部は、前記第1ソフトウェアをプロセッサが実行することによって実現されるデータ通信部が前記車載ネットワークから受信した更新データを、前記データ通信部から受け取り、受け取った前記更新データを前記更新部へ引き渡し、前記更新部は、前記領域間通信部から引き渡された前記更新データに基づいて、前記第2ソフトウェアを更新する。
【発明の効果】
【0007】
本開示によれば、車載装置の部品点数を抑制しつつ、セキュリティを確保することができる。
【図面の簡単な説明】
【0008】
【
図1】
図1は、第1実施形態に係る車載ネットワークの構成の一例を示すブロック図である。
【
図2】
図2は、第1実施形態に係るECUのハードウェア構成の一例を示すブロック図である。
【
図3】
図3は、第1実施形態に係るECUが搭載する不揮発性メモリの構成の一例を示すブロック図である。
【
図4】
図4は、第1実施形態に係る不揮発性メモリにおけるパーティションの構成を示す図である。
【
図5】
図5は、第1実施形態に係るECUにおけるデータの流れの一例を説明するための図である。
【
図6】
図6は、第1実施形態に係るECUにおけるデータの流れの他の例を説明するための図である。
【
図7】
図7は、第1実施形態に係るECUにおける第1ソフトウェアの更新の際のデータの流れの一例を説明するための図である。
【
図8】
図8は、第1実施形態に係るECUにおける第1ソフトウェアの更新を説明するための図である。
【
図9】
図9は、第1実施形態に係るECUにおける第2ソフトウェアの更新の際のデータの流れの一例を説明するための図である。
【
図10】
図10は、第1実施形態に係るECUにおける第2ソフトウェアの更新を説明するための図である。
【
図11】
図11は、第1実施形態に係るECUにおいて第2ソフトウェアの更新を行う場合の車載ネットワークにおけるデータの流れを示すシーケンス図である。
【
図12】
図12は、第1実施形態に係るECUが第2ソフトウェアの更新を行う場合のECUの動作の一例を示すフローチャートである。
【
図13】
図13は、第2実施形態に係るECUが搭載する不揮発性メモリの構成の一例を示すブロック図である。
【
図14】
図14は、第2実施形態に係る不揮発性メモリにおけるパーティションの構成を示す図である。
【
図15】
図15は、第1アプリケーションソフトウェア及び第2アプリケーションソフトウェアの実行対象が切り替わった場合のソフトウェアの稼働状態を示す図である。
【
図16】
図16は、第3実施形態に係るECUが搭載する不揮発性メモリの構成の一例を示すブロック図である。
【発明を実施するための形態】
【0009】
<本開示の実施形態の概要>
以下、本開示の実施形態の概要を列記して説明する。
【0010】
(1) 本実施形態に係る車載装置は、車載ネットワークに接続された車載装置であって、互いに論理的に分離され、データの授受が制限された第1論理領域及び第2論理領域を含む記憶部と、前記第1論理領域に記憶され、前記車載ネットワークに対してデータの送受信が可能な第1ソフトウェアと、前記第2論理領域に記憶され、前記車載ネットワークに対してデータの送受信が制限された第2ソフトウェアと、前記第2ソフトウェアを更新する更新部と、前記第1論理領域との間でのデータの授受が可能であり、且つ、前記第2論理領域との間でのデータの授受が可能である領域間通信部と、を備え、前記領域間通信部は、前記第1ソフトウェアをプロセッサが実行することによって実現されるデータ通信部が前記車載ネットワークから受信した更新データを、前記データ通信部から受け取り、受け取った前記更新データを前記更新部へ引き渡し、前記更新部は、前記領域間通信部から引き渡された前記更新データに基づいて、前記第2ソフトウェアを更新する。これにより、車載装置のハードウェアを冗長な構成とすることなく、第1ソフトウェア及び第2ソフトウェアを車載装置に搭載することができ、車載装置の部品点数を抑制することができる。さらに、第1ソフトウェア及び第2ソフトウェアを論理的に分離した第1論理領域及び第2論理領域のそれぞれに配置し、領域間通信部によってのみ第1ソフトウェアと第2ソフトウェアとの間のデータの授受を可能とすることにより、セキュリティを確保することができる。
【0011】
(2) 上記(1)において、前記更新部は、前記第2論理領域に記憶された更新ソフトウェアを前記プロセッサが実行することによって実現されてもよい。これにより、車載ネットワークからの直接的なデータの授受が制限された第2論理領域に更新ソフトウェアを配置することで、さらに高いセキュリティを確保することができる。
【0012】
(3) 上記(2)において、前記更新部は、前記第1ソフトウェアを更新することが可能であってもよい。これにより、第1ソフトウェアの更新においても、領域間通信部を介してデータを授受するため、高いセキュリティを確保することができる。
【0013】
(4) 上記(1)において、前記更新部は、前記第1ソフトウェアを更新する第1更新部と、前記第2ソフトウェアを更新する第2更新部とを含み、前記第1更新部は、前記第1論理領域に記憶された第1更新ソフトウェアを前記プロセッサが実行することによって実現され、前記第2更新部は、前記第2論理領域に記憶された第2更新ソフトウェアを前記プロセッサが実行することによって実現されてもよい。これにより、第1ソフトウェアの更新においては、領域間通信部を介してデータを授受する必要がなく、処理負荷を軽減することができる。第2ソフトウェアの更新においては、領域間通信部を介して更新データを授受するため、高いセキュリティを確保することができる。
【0014】
(5) 上記(4)において、前記第1更新部は、前記車載ネットワークから前記データ通信部が受信した第1更新データを前記データ通信部から受け取り、受け取った前記第1更新データに基づいて、前記第1ソフトウェアを更新してもよい。これにより、第1更新部が車載ネットワークから第1更新データを直接受信することがなく、セキュリティを高めることができる。
【0015】
(6) 上記(1)から(5)のいずれか1つにおいて、前記記憶部は、物理的に分離された第1記憶部と第2記憶部とを含み、前記領域間通信部は、前記第1記憶部に記憶された第1管理ソフトウェアを前記プロセッサが実行することによって実現される第1領域間通信部と、前記第2記憶部に記憶された第2管理ソフトウェアを前記プロセッサが実行することによって実現される第2領域間通信部とを含み、前記第1領域間通信部は、前記第2領域間通信部が停止している間に動作し、前記第2領域間通信部は、前記第1領域間通信部が停止している間に動作してもよい。これにより、第1領域間通信部の動作と第2領域間通信部の動作とを切り替えることで、領域間通信部の動作が停止する期間を短くする、又はなくすことができる。
【0016】
(7) 上記(6)つにおいて、前記第1領域間通信部は、前記第2管理ソフトウェアが更新さている間に動作し、前記第2領域間通信部は、前記第1管理ソフトウェアが更新さている間に動作してもよい。これにより、第1管理ソフトウェア又は第2管理ソフトウェアが更新している間において、領域間通信部の動作を停止する期間を短くする、又はなくすことができる。
【0017】
(8) 上記(6)又は(7)において、前記記憶部は、前記第1論理領域及び前記第2論理領域のそれぞれから論理的に分離され、前記第1論理領域及び前記第2論理領域のそれぞれに対するデータの授受が制限された第3論理領域を含み、前記第1管理ソフトウェア及び前記第2管理ソフトウェアは、前記第3論理領域に記憶されていてもよい。これにより、第1管理ソフトウェア及び第2管理ソフトウェアが、第1ソフトウェア及び第2ソフトウェアと論理的に分離されるため、さらにセキュリティを高めることができる。
【0018】
(9) 上記(6)から(8)のいずれか1つにおいて、前記第1論理領域は、前記第1記憶部の第1部分領域と、前記第2記憶部の第1部分領域とを含み、前記第2論理領域は、前記第1記憶部の第2部分領域と、前記第2記憶部の第2部分領域とを含み、前記第1記憶部の前記第1部分領域と、前記第2記憶部の前記第1部分領域とのそれぞれには、2つの前記第1ソフトウェアが記憶されており、前記第1記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが実行されている間、前記第2記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが停止し、前記第2記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが実行されている間、前記第1記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが停止してもよい。これにより、第1ソフトウェアを停止する期間を短くする、又はなくすことができる。
【0019】
(10) 上記(9)において、前記第1記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが更新されている間、前記第2記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが実行され、前記第2記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが更新されている間、前記第1記憶部の前記第1部分領域に記憶された前記第1ソフトウェアが実行されてもよい。これにより、第1ソフトウェアが更新されている間において、第1ソフトウェアを停止する期間を短くする、又はなくすことができる。
【0020】
(11) 上記(9)において、前記第1記憶部の前記第2部分領域と、前記第2記憶部の前記第2部分領域とのそれぞれには、2つの前記第2ソフトウェアが記憶されており、前記第1記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが実行されている間、前記第2記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが停止し、前記第2記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが実行されている間、前記第1記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが停止してもよい。これにより、第2ソフトウェアを停止する期間を短くする、又はなくすことができる。
【0021】
(12) 上記(11)において、前記第1記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが更新されている間、前記第2記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが実行され、前記第2記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが更新されている間、前記第1記憶部の前記第2部分領域に記憶された前記第2ソフトウェアが実行されてもよい。これにより、第2ソフトウェアが更新されている間において、第2ソフトウェアを停止する期間を短くする、又はなくすことができる。
【0022】
(13) 上記(1)から(12)のいずれか1つにおいて、前記データ通信部は、外部からの攻撃を防御する第1防御機能を有し、前記第2ソフトウェアをプロセッサが実行することによって実現されるデータ授受部は、外部からの攻撃を防御する第2防御機能を有してもよい。これにより、第1防御機能及び第2防御機能によって高いセキュリティを確保することができる。特に、第2ソフトウェアにおいては、車載ネットワークからのデータの受け取りにおいて第1防御機能及び第2防御機能の2段階の防御機能が働くため、さらに高いセキュリティを確保することができる。
【0023】
(14) 本実施形態に係る更新方法は、車載ネットワークに接続された車載装置においてソフトウェアを更新するための更新方法であって、記憶部に設けられた第1論理領域に記憶され、前記車載ネットワークに対してデータの送受信が可能な第1ソフトウェアをプロセッサが実行することによって実現されるデータ通信部によって前記車載ネットワークから受信された更新データを、前記第1論理領域との間でのデータの授受が可能な領域間通信部が受け取るステップと、記憶部に設けられ、前記第1論理領域と論理的に分離された第2論理領域に記憶され、前記車載ネットワークに対してデータの送受信が制限された第2ソフトウェアを更新する更新部へ、前記領域間通信部が前記更新データを引き渡すステップと、前記更新部が、前記領域間通信部から引き渡された前記更新データに基づいて、前記第2ソフトウェアを更新するステップと、を含む。これにより、車載装置のハードウェアを冗長な構成とすることなく、第1ソフトウェア及び第2ソフトウェアを車載装置に搭載することができ、車載装置の部品点数を抑制することができる。さらに、第1ソフトウェア及び第2ソフトウェアを論理的に分離した第1論理領域及び第2論理領域のそれぞれに配置し、領域間通信部によってのみ第1ソフトウェアと第2ソフトウェアとの間のデータの授受を可能とすることにより、セキュリティを確保することができる。
【0024】
(15) 本実施形態に係る更新プログラムは、車載ネットワークに接続された車載装置においてソフトウェアを更新するための更新プログラムであって、互いに論理的に分離され、データの授受が制限された第1論理領域及び第2論理領域を含む記憶部を含むコンピュータに、前記第1論理領域に記憶され、前記車載ネットワークに対してデータの送受信が可能な第1ソフトウェアをプロセッサが実行することによって実現されるデータ通信部によって前記車載ネットワークから受信された更新データを、前記第1論理領域との間でのデータの授受が可能な領域間通信部を介して受け取るステップと、前記領域間通信部から受け取った前記更新データに基づいて、前記第2論理領域に記憶され、前記車載ネットワークに対してデータの送受信が制限された第2ソフトウェアを更新するステップと、実行させる。これにより、車載装置のハードウェアを冗長な構成とすることなく、第1ソフトウェア及び第2ソフトウェアを車載装置に搭載することができ、車載装置の部品点数を抑制することができる。さらに、第1ソフトウェア及び第2ソフトウェアを論理的に分離した第1論理領域及び第2論理領域のそれぞれに配置し、領域間通信部によってのみ第1ソフトウェアと第2ソフトウェアとの間のデータの授受を可能とすることにより、セキュリティを確保することができる。
【0025】
本開示は、上記のような特徴的な構成を備える車載装置、車載装置における特徴的な処理をステップとする更新方法、及び車載装置に特徴的な処理を実行させるための更新プログラムとして実現することができるだけでなく、車載装置を含む車載システムとして実現したり、車載装置の一部又は全部を半導体集積回路として実現したりすることができる。
【0026】
<本開示の実施形態の詳細>
以下、図面を参照しつつ、本発明の実施形態の詳細を説明する。なお、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
【0027】
[1.第1実施形態]
[1-1.車載ネットワーク]
図1は、第1実施形態に係る車載ネットワークの構成の一例を示すブロック図である。車載ネットワーク100は、複数のECU200A,200B,200C,…と、外部通信装置300とを含む。
【0028】
車載ネットワーク100は、ECU200A,200B,200C,…と、外部通信装置300と、それらを繋ぐ通信線(通信バス)とによって構成される。
【0029】
複数のECU200A,200B,200C,…は、車両の各部に配置される。ECU200A,200B,200C,…は、車両の各部のハードウェアを個別に制御したり、車両の各部のハードウェアの状態を監視したりする。例えば、ECU200A,200B,200C,…は、制御系、ボディ系、情報系のECUである。なお、以下の説明では、ECU200A,200B,200C,…を総称して「ECU200」ともいう。
【0030】
ECU200A,200B,200C,…のそれぞれはCAN(Controller Area Network)バスのような通信バス500を介して接続されている。ECU200は、フレームを送信することができる。フレームは、上述した通信プロトコルに準拠したメッセージである。
【0031】
図示していないが、車両には複数のECU200間のフレームを中継する中継ECUが含まれていてもよい。例えば、中継ECUは、複数の通信バスに接続されており、通信バス間でフレームを中継することができる。
【0032】
ECU200は、周期的又は非周期的にメッセージを送受信するための通信プロトコルを使用する。通信プロトコルは、例えば、CAN又はCAN FD(CAN with Flexible Data Rate)である。他の例では、通信プロトコルは、イーサネット(登録商標)である。
【0033】
図1には、ECU200及び外部通信装置300がCANプロトコルを使用する場合の車載ネットワーク100を示している。すなわち、
図1に示される車載ネットワーク100は、バス型のネットワークトポロジを有する。ECU200及び外部通信装置300がイーサネットプロトコルを使用する場合には、車載ネットワーク100のネットワークトポロジはスター型となる。
【0034】
外部通信装置300は、通信バス500に接続されている。外部通信装置300は通信バス500を介してECU200A,200B,200C,…との間でフレームを送受信することができる。外部通信装置300は、例えばTCU(Telematics Control Unit)であり、車外の装置と通信することができる。外部通信装置300は、例えば第5世代移動通信システム(5G)、又は第4世代移動通信システム(4G)等の移動通信システム用の無線通信インタフェースを備える。外部通信装置300は、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)のパケットを送受信することができる。外部通信装置300は、移動通信ネットワークの基地局(図示せず)に接続し、インターネットに接続された装置と、基地局を介して通信することができる。具体的には、外部通信装置300は、サーバ400と通信することができる。外部通信装置300は、ECU200A,200B,200Cとサーバ400との間の通信を中継する。
【0035】
サーバ400は、ECU200用のソフトウェアの更新に用いられる更新データをECU200を格納する。サーバ400は、ECU200からの要求に応じて、更新データをECU200が搭載された車両(すなわち、外部通信装置300)へ送信する。サーバ400は、いわゆるOTA(Over The Air)サーバである。
【0036】
[1-2.ECUのハードウェア構成]
図2は、第1実施形態に係るECUのハードウェア構成の一例を示すブロック図である。ECU200は、プロセッサ201と、不揮発性メモリ202と、揮発性メモリ203と、通信インタフェース(以下、「通信I/F」ともいう)204とを含む。プロセッサ201と、不揮発性メモリ202と、揮発性メモリ203と、通信I/F204とのそれぞれは、通信線であるバス205によって互いに接続されている。プロセッサ201と、不揮発性メモリ202と、揮発性メモリ203と、通信I/F204とのそれぞれは、バス205を介して互いにデータを伝送することができる。ECU200は、「車載装置」の一例である。
【0037】
揮発性メモリ203は、例えばSRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)等の半導体メモリである。
【0038】
図3は、第1実施形態に係るECUが搭載する不揮発性メモリの構成の一例を示すブロック図である。
【0039】
不揮発性メモリ202は、データの書き換えが可能である。すなわち、不揮発性メモリ202は、例えばフラッシュメモリ、ハードディスク等である。不揮発性メモリ202は、「記憶部」の一例である。
【0040】
具体的な一例では、不揮発性メモリ202はデュアルバンクメモリである。つまり、不揮発性メモリ202は、物理的に分離された第1バンク202A及び第2バンク202Bを含む。第1バンク202A及び第2バンク202Bは、互いに異なるメモリ領域(アドレス空間)が割り当てられる。第1バンク202A及び第2バンク202Bは、互いに独立して動作することができる。すなわち、第1バンク202A及び第2バンク202Bは、互いに独立してデータの書き込み及び読み出しが可能である。第1バンク202Aは、「第1記憶部」の一例であり、第2バンク202Bは、「第2記憶部」の一例である。
【0041】
不揮発性メモリ202には、コンピュータプログラムである第1アプリケーションソフトウェア211、第1更新ソフトウェア221、第2アプリケーションソフトウェア212、第2更新ソフトウェア222、管理ソフトウェア230A,230B及びこれらのソフトウェアの実行に使用されるデータが格納される。以下、「アプリケーションソフトウェア」を「APP」ともいい、「ソフトウェア」を「SW」ともいう。ECU200の後述する機能は、第1アプリケーションソフトウェア211、第1更新ソフトウェア221、第2アプケーションソフトウェア212、第2更新ソフトウェア222、管理ソフトウェア230A,230Bがプロセッサ201によって実行されることで実現される。
【0042】
第1APP211は、例えば、1つのECUの機能を実現するためのアプリケーションソフトウェアである。第2APP212は、例えば、第1APP211とは異なるECUの機能を実現するためのアプリケーションソフトウェアである。すなわち、ECU200は、2つのECUの機能を集約したECUである。第1APP211及び第2APP212は、オペレーティングシステム又はハイパーバイザ(後述する管理SW230A,230B)上で動作する。例えば、第1APP211は、ヘッドライト制御用のソフトウェアであり、第2APP212は、ドアミラー制御用のECUである。
【0043】
第1実施形態では、第1APP211,第1更新SW221,第2APP212,第2更新SW222,及び管理SW230Aは、第1バンク202Aに格納されている。管理SW230Bは、第2バンク202Bに格納されている。管理SW230Aは、「第1管理ソフトウェア」の一例である。管理SW230Bは、「第2管理ソフトウェア」の一例である。
【0044】
管理SW230A及び管理SW230Bは、例えば、バージョンが異なる同一ソフトウェアである。例えば、管理SW230Aは最新バージョンのソフトウェアであり、管理SW230Bは古いバージョンのソフトウェアである。管理SW230A及び230Bは、同時にいずれか1つのみが実行される。例えば、新しいバージョンの管理SW230Aが実行され、古いバージョンの管理SW230Bは停止されている。新規バージョンの管理SWがリリースされた場合、停止されている管理SW230Bが更新される。管理SW230Bが更新されている間も、管理SW230Aは稼働を継続する。管理SW230Bの更新が完了すると、稼働対象が管理SW230A(古いバージョンのソフトウェア)から管理SW230B(最新バージョンのソフトウェア)へ切り替わる。これにより、更新による管理SWの停止期間を短くする、又はなくすことができる。
【0045】
図2に戻り、プロセッサ201は、例えばCPU(Central Processing Unit)である。ただし、プロセッサ201は、CPUに限られない。プロセッサ201は、GPU(Graphics Processing Unit)であってもよい。具体的な一例では、プロセッサ201は、マルチコアプロセッサである。プロセッサ201は、シングルコアプロセッサであってもよい。プロセッサ201は、コンピュータプログラムを実行可能に構成される。ただしプロセッサ201は、例えば、ASIC(Application Specific Integrated Circuit)であってもよいし、FPGA(Field Programmable Gate Array)等のプログラマブルロジックデバイスであってもよい。
【0046】
通信I/F204は、上述した車載ネットワーク用の通信プロトコルに準拠した通信インタフェースである。通信I/F204は、例えばCANインタフェースである。通信I/F204は、イーサネットインタフェースであってもよい。
【0047】
通信I/F204は、バス500に接続されている。通信I/F204によって、ECU200は他のECU200及び外部通信装置300と通信することができる。ECU200は、通信I/F204によって、外部通信装置300を介してサーバ400と通信することができる。
【0048】
[1-3.不揮発性メモリの論理領域]
【0049】
不揮発性メモリ202は、MPU(Memory Protection Unit)を備える(図示せず)。不揮発性メモリ202には、1又は複数の論理領域(パーティション)を作成することができる。MPUは、パーティション間におけるデータ交換を制限する。
【0050】
管理SW230A,230Bは、例えばOS(オペレーティングシステム)又はハイパーバイザである。管理SW230A,230Bは、パーティション間でのデータ交換、すなわち、パーティション間通信をサポートしている。
【0051】
図4は、第1実施形態に係る不揮発性メモリにおけるパーティションの構成を示す図である。
【0052】
不揮発性メモリ202は、第1論理領域251及び第2論理領域252を含む。第1論理領域251及び第2論理領域252は、互いに論理的に分離されている。第1論理領域251及び第2論理領域252間におけるデータの授受は、MPUによって制限されている。第1論理領域251及び第2論理領域252のそれぞれはパーティションである。
【0053】
不揮発性メモリ202は、第3論理領域253をさらに含む。第3論理領域253は、第1論理領域251及び第2論理領域252のそれぞれと論理的に分離されたパーティションである。第3論理領域253と第1論理領域251との間のデータの授受は、MPUによって制限されており、第3論理領域253と第2論理領域252との間のデータの授受も、MPUによって制限されている。
【0054】
第1論理領域251、第2論理領域252、及び第3論理領域253は、管理ソフトウェア230Aの機能によって作成されている。第1論理領域251は、上述した第1バンク202Aに作成されている。第2論理領域252は、第1バンク202Aに作成されている。すなわち、第1論理領域251は、第1バンク202Aの一部の領域であり、第2論理領域252は、第1バンク202Aの他の一部の領域である。
【0055】
第3論理領域253は、第1バンク202A及び第2バンク202Bを横切って設けられている。第3論理領域253の一部は、第1バンク202Aに作成されており、第3論理領域253の他の部分は、第2バンク202Bに作成されている。言い換えれば、第3論理領域253は、第1バンク202Aの一部分の領域と、第2バンク202Bの一部分の領域とを含む。
【0056】
第1論理領域251には、第1APP211と、第1更新SW221とが格納されている。第2論理領域252には、第2APP212と、第2更新SW222とが格納されている。第1APP211と第2APP212とを異なる論理領域に格納することにより、第1APP211と第2APP212との干渉を防止することができる。
【0057】
第3論理領域253には、管理SW230A,230Bが格納されている。さらに具体的には、管理SW230Aは、第3論理領域253における第1バンク202Aの領域に格納されており、管理SW230Bは、第3論理領域253における第2バンク202Bの領域に格納されている。
【0058】
[1-4.ECUの機能]
次に、ECU200の機能について説明する。
【0059】
ECU200は、更新部240と、データ通信部243と、領域間通信部244Aと、データ授受部245との各機能を有する。
【0060】
プロセッサ201が第1APP211を実行することにより、データ通信部243が実現される。データ通信部243は、車載ネットワーク100に対してデータ(フレーム)の送受信を行う。すなわち、データ通信部243は、他のECU200との間でフレームを送受信することができ、外部通信装置300との間でフレームを送受信することができる。
【0061】
データ通信部243は、第1論理領域251に格納された第1APP211が実行されることによって実現される機能であり、第1論理領域251に属する機能である。
【0062】
プロセッサ201が第2APP212を実行することにより、データ授受部245が実現される。データ授受部245は、領域間通信部244Aに対してのみ、データを授受することができる。
【0063】
データ授受部245は、第2論理領域252に格納された第2APP212が実行されることによって実現される機能であり、第2論理領域252に属する機能である。
【0064】
プロセッサ201が管理SW230Aを実行することにより、領域間通信部244Aが実現される。領域間通信部244Aは、第1論理領域251、第2論理領域252、及び第3論理領域253を作成した管理SW230Aの機能であり、パーティション間通信によって実現される機能である。
【0065】
なお、上述したように、管理SW230Aがプロセッサ201によって実行されている間、管理SW230Bはプロセッサ201によって実行されない。すなわち、管理SW230Bは停止状態である。図において、斜線のハッチングは停止状態を示している。
【0066】
領域間通信部244Aは、管理SW230Aのパーティション間通信機能により、データ通信部243からデータを受け取ることができる。すなわち、領域間通信部244Aは、第1論理領域251から第3論理領域253へデータを移動させることができる。さらに、領域間通信部244Aは、管理SW230Aのパーティション間通信機能により、データ通信部243へデータを引き渡すことができる。すなわち、領域間通信部244Aは、第3論理領域253から第1論理領域251へデータを移動させることができる。
【0067】
データ通信部243は、領域間通信部244Aに対してのみ、データを授受することができる。データ通信部243による(すなわち、第1APP211による)第1論理領域251と第2論理領域252との間のデータ交換、及び、第1論理領域251と第3論理領域253との間のデータ交換のそれぞれがMPUにより制限(禁止)されている。すなわち、データ通信部243は、第1論理領域251から第2論理領域252へデータを移動させることができず、第2論理領域252から第1論理領域251へデータを移動させることができない。さらに、データ通信部243は、領域間通信部244Aによらずに、第1論理領域251から第3論理領域253へデータを移動させることができず、第3論理領域253から第1論理領域251へデータを移動させることができない。
【0068】
領域間通信部244Aは、管理SW230Aのパーティション間通信機能により、データ授受部245へデータを引き渡すことができる。すなわち、領域間通信部244Aは、第3論理領域253から第2論理領域252へデータを移動させることができる。さらに、領域間通信部244Aは、管理SW230Aのパーティション間通信機能により、データ授受部245からデータを受け取ることができる。すなわち、領域間通信部244Aは、第2論理領域252から第3論理領域253へデータを移動させることができる。
【0069】
データ授受部245は、領域間通信部244Aに対してのみ、データを授受することができる。データ授受部245による(すなわち、第2APP212による)第2論理領域252と第1論理領域251との間のデータ交換、及び、第2論理領域252と第3論理領域253との間のデータ交換のそれぞれがMPUにより制限(禁止)されている。すなわち、データ授受部245は、第2論理領域252から第1論理領域251へデータを移動させることができず、第1論理領域251から第2論理領域252へデータを移動させることができない。さらに、データ授受部245は、領域間通信部244Aによらずに、第2論理領域252から第3論理領域253へデータを移動させることができず、第3論理領域253から第2論理領域252へデータを移動させることができない。
【0070】
データ通信部243は、外部からの攻撃を防御する第1防御機能を有する。第1防御機能は、データ通信部243が第1防御処理を実行することによって実現される。第1防御処理は、ECU200が使用する通信プロトコルがCANである場合、例えば、特定のCAN IDを含むフレーム以外を異常なフレームとするフィルタリング機能である。第1防御処理は、ECU200が使用する通信プロトコルがイーサネットである場合、例えば、ファイアウォール、パケットフィルタリングである。
【0071】
データ授受部245は、外部からの攻撃を防御する第2防御機能を有する。第2防御機能は、データ授受部244が第2防御処理を実行することによって実現される。第2防御処理は、ECU200が使用する通信プロトコルがCANである場合、例えば、上述した異常なフレームを検出するフィルタリング機能である。第2防御処理は、ECU200が使用する通信プロトコルがイーサネットである場合、例えば、ファイアウォール、パケットフィルタリングである。
【0072】
図5は、第1実施形態に係るECUにおけるデータの流れの一例を説明するための図である。
【0073】
例えば、第2APP212が、ドアミラー制御用のソフトウェアである場合を考える。ユーザ(ドライバ)がドアミラーの格納を指示するためのスイッチを押下した場合、ドアミラーの格納の指令データ(を含むフレーム)が外部のECU200から車載ネットワーク100へ送信される。
【0074】
データ通信部243は、指令データを受信し、第1防御処理を実行する。指令データに異常が検出された場合、指令データは破棄され、ユーザに異常を通知するなどの異常処理が実行される。
【0075】
指令データに異常が無い場合、領域間通信部244Aがデータ通信部243から指令データを受け取り、データ授受部245へ指令データを引き渡す。
【0076】
データ授受部245は、指令データを受け取り、第2防御処理を実行する。指令データに異常が検出された場合、指令データは破棄され、異常処理が実行される。
【0077】
指令データに異常が無い場合、第2APP212(を実行するプロセッサ201)によって指令データが解釈され、ドアミラーが格納される。
【0078】
図6は、第1実施形態に係るECUにおけるデータの流れの他の例を説明するための図である。
【0079】
プロセッサ201が管理SW230Bを実行することにより、領域間通信部244Bが実現される。領域間通信部244Bは、管理SW230Bのパーティション間通信によって実現される機能である。
【0080】
なお、管理SW230Bがプロセッサ201によって実行されている間、管理SW230Aはプロセッサ201によって実行されない。すなわち、管理SW230Aは停止状態である。
【0081】
領域間通信部244Bは、領域間通信部244Aと同じ機能である。すなわち、領域間通信部244Bは、管理SW230Bのパーティション間通信機能により、第1論理領域251から第3論理領域253へデータを移動させることができる。領域間通信部244Aは、管理SW230Bのパーティション間通信機能により、第3論理領域253から第1論理領域251へデータを移動させることができる。
【0082】
領域間通信部244Bは、管理SW230Bのパーティション間通信機能により、第3論理領域253から第2論理領域252へデータを移動させることができる。領域間通信部244Bは、管理SW230Bのパーティション間通信機能により、第2論理領域252から第3論理領域253へデータを移動させることができる。
【0083】
ユーザ(ドライバ)がドアミラーの格納を指示するためのスイッチを押下した場合、ドアミラーの格納の指令データ(を含むフレーム)が外部のECU200から車載ネットワーク100へ送信される。
【0084】
データ通信部243は、指令データを受信し、第1防御処理を実行する。指令データに異常が検出された場合、指令データは破棄され、異常処理が実行される。
【0085】
指令データに異常が無い場合、領域間通信部244Bがデータ通信部243から指令データを受け取り、データ授受部245へ指令データを引き渡す。
【0086】
データ授受部245は、指令データを受け取り、第2防御処理を実行する。指令データに異常が検出された場合、指令データは破棄され、異常処理が実行される。
【0087】
指令データに異常が無い場合、第2APP212(を実行するプロセッサ201)によって指令データが解釈され、ドアミラーが格納される。
【0088】
図4に戻り、更新部240について説明する。更新部240は、第1更新部241と、第2更新部242とを含む。
【0089】
プロセッサ201が第1更新SW221を実行することにより、第1更新部241が実現される。第1更新部241は、上述したデータ通信部243と同様に、第2論理領域252に対してはデータの授受を行うことができない。第1更新部241は、第3論理領域253に対しては、領域間通信部244Aに対してのみ、データを授受することができる。
【0090】
プロセッサ201が第2更新SW222を実行することにより、第2更新部242が実現される。第2更新部242は、上述したデータ通信部243と同様に、第1論理領域251に対してはデータの授受を行うことができない。第2更新部242は、第3論理領域253に対しては、領域間通信部244Aに対してのみ、データを授受することができる。
【0091】
第1更新部241は、第1APP211を更新する。第2更新部242は、第2APP212を更新する。
【0092】
図7は、第1実施形態に係るECUにおける第1APPの更新の際のデータの流れの一例を説明するための図であり、
図8は、第1実施形態に係るECUにおける第1APPの更新を説明するための図である。
【0093】
図7に示すように、第1APP211を更新する場合、第1APP211を更新するための更新データ(第1更新データ)がサーバ400から外部通信装置300へ送信される。外部通信装置300は、例えば更新データを複数のフレームに分割し、各フレームを対象のECU200へ送信する。
【0094】
データ通信部243は、外部通信装置300から送信された各フレーム、すなわち更新データを受信し、第1防御処理を実行する。フレームに異常が検出された場合、フレームは破棄され、異常処理が実行される。
【0095】
フレームに異常が無い場合、データ通信部243は、各フレームに含まれるデータを結合し、更新データを復元する。データ通信部243は、第1更新部241に更新データを引き渡す。第1更新部241は、データ通信部243から更新データを受け取る。
【0096】
図8に示すように、第1更新部241は、受け取った更新データを用いて、第1APP211を更新する。更新が完了すると、更新された第1APP211が再起動される。
【0097】
図9は、第1実施形態に係るECUにおける第2APPの更新の際のデータの流れの一例を説明するための図であり、
図10は、第1実施形態に係るECUにおける第2APPの更新を説明するための図である。
【0098】
図9に示すように、第2APP212を更新する場合、第2APP212を更新するための更新データ(第2更新データ)がサーバ400から外部通信装置300へ送信される。外部通信装置300は、例えば更新データを複数のフレームに分割し、各フレームを対象のECU200へ送信する。
【0099】
データ通信部243は、外部通信装置300から送信された各フレーム、すなわち更新データを受信し、第1防御処理を実行する。フレームに異常が検出された場合、フレームは破棄され、異常処理が実行される。
【0100】
フレームに異常が無い場合、データ通信部243は、各フレームに含まれるデータを結合し、更新データを復元する。領域間通信部244Aがデータ通信部243から更新データを受け取り、データ授受部245へ更新データを引き渡す。
【0101】
データ授受部245は、更新データを受け取り、第2防御処理を実行する。更新データに異常が検出された場合、更新データは破棄され、異常処理が実行される。
【0102】
更新データに異常が無い場合、第2更新部242は、データ授受部245から更新データを受け取る。
【0103】
なお、ここでは領域間通信部244Aからデータ授受部245を介して第2更新部242へ更新データが引き渡されているが、これに限定されない。例えば、領域間通信部244Aから直接第2更新部242へ更新データが引き渡されてもよい。この場合、第2更新部242が防御機能を有してもよい。
【0104】
図10に示すように、第2更新部242は、受け取った更新データを用いて、第2APP212を更新する。更新が完了すると、更新された第2APP212が再起動される。
【0105】
[1-5.ECUの動作]
以下、第1実施形態に係るECUの動作について説明する。
図11は、第1実施形態に係るECUにおいて第2APPの更新を行う場合の車載ネットワークにおけるデータの流れを示すシーケンス図である。
【0106】
第2APP212用のの更新データがリリースされると、サーバ400は更新データを格納する。サーバ400は、例えばECU200からの要求に応じて、第2APP212用のの更新データを外部通信装置300へ送信する(ステップS11)。
【0107】
外部通信装置300は、更新データを受信すると、例えば複数のフレームに分割し、対象のECU200へ各フレームを送信する(ステップS12)。
【0108】
プロセッサ201は、第1APP211の機能により、外部通信装置300から送信されたフレームを受信する。プロセッサ201は、第1防御処理を実行する(ステップS13)。
【0109】
フレームに異常が無い場合、プロセッサ201は、各フレームに含まれるデータから更新データを復元する。プロセッサ201は、管理SW230A(又は230B)のパーティション間通信機能により、第1APP211から管理SW230A(又は230B)へ更新データを移す(ステップS14)。
【0110】
さらにプロセッサ201は、管理SW230A(又は230B)のパーティション間通信機能により、管理SW230A(又は230B)から第2APP212へ更新データを移す(ステップS15)。
【0111】
プロセッサ201は、第2APP212の機能により、第2防御処理を実行する(ステップS16)。
【0112】
更新データに異常が無い場合、プロセッサ201は、第2APP212から第2更新SW222へ更新データを移す(ステップS17)。
【0113】
プロセッサ201は、第2更新SW222の機能により、更新データを用いて第2APP212の更新処理を実行する(ステップS18)。これにより、第2APP212が更新される(ステップS19)。
【0114】
第2APP212の更新が完了すると、プロセッサ201は、第2APP212を再起動する(ステップS20)。
【0115】
図12は、第1実施形態に係るECUが第2APPの更新を行う場合のECUの動作の一例を示すフローチャートである。
【0116】
例えば、プロセッサ201は、サーバ400に問い合わせることにより、又は、サーバ400からの通知の有無により、第2APP212の新規更新データが存在するか否か、すなわち、新規更新データをサーバ400が提供可能であるか否かを判定する(ステップS101)。
【0117】
新規更新データが存在しない場合(ステップS101においてNO)、プロセッサ201は、ステップS101を再度実行する。
【0118】
新規更新データが存在する場合(ステップS101においてYES)、プロセッサ201は、例えばサーバ400へ更新データのダウンロードを要求する。サーバ400は、例えば要求に応じて、更新データをダウンロードする。車外通信装置300は更新データを受信し、複数のフレームに分割してECU200へ送信する。
【0119】
プロセッサ201は、第1APP211の機能により、更新データ(フレーム)を受信する(ステップS102)。
【0120】
プロセッサ201は、フレームの受信の際、第1防御処理を実行する(ステップS103)。プロセッサ201は、第1防御処理によって異常が検出されたか否かを判定する(ステップS104)。異常が検出された場合(ステップS104においてNO)、プロセッサ201は、例えば、受信したフレームを破棄し、異常処理を実行する。この場合、プロセッサ201は、ステップS101へ戻る。
【0121】
第1防御処理によって異常が検出されなかった場合(ステップS104においてYES)、プロセッサ201は、管理SW230A(又は230B)のパーティション間通信機能により、更新データの領域間通信を行う(ステップS105)。すなわち、プロセッサ201は、第1論理領域251に格納された第1APP211から第3論理領域253に格納された管理SW230A(又は230B)へ更新データを移し、さらに、管理SW230A(又は230B)から第2論理領域252に格納された第2APP212へ更新データを移す。
【0122】
プロセッサ201は、第2APP212が更新データを受け取る際、第2防御処理を実行する(ステップS106)。プロセッサ201は、第2防御処理によって異常が検出されたか否かを判定する(ステップS107)。異常が検出された場合(ステップS107においてNO)、プロセッサ201は、例えば、受信したフレームを破棄し、異常処理を実行する。この場合、プロセッサ201は、ステップS101へ戻る。
【0123】
第2防御処理によって異常が検出されなかった場合(ステップS107においてYES)、プロセッサ201は、第2APP212から第2更新SW222へ更新データを移す。さらにプロセッサ201は、第2更新SW222の機能により、更新データを用いて、第2APP212を更新する(ステップS108)。
【0124】
更新が完了すると、プロセッサ201は、第2APP212を再起動する(ステップS109)。
【0125】
[2.第2実施形態]
図13は、第2実施形態に係るECUが搭載する不揮発性メモリの構成の一例を示すブロック図である。
【0126】
第2実施形態においては、第1バンク202Aに第1APP211Aが格納され、第2バンク202Bに第1APP211Bが格納される。
【0127】
第1APP211A及び第1APP211Bは、例えば、バージョンが異なる同一ソフトウェアである。例えば、第1APP211Aは最新バージョンのソフトウェアであり、第1APP211Bは古いバージョンのソフトウェアである。第1APP211A及び211Bは、同時にいずれか1つのみが実行される。例えば、新しいバージョンの第1APP211Aが実行され、古いバージョンの第1APP211Bは停止されている。新規バージョンの第1APPがリリースされた場合、停止されている第1APP211Bが更新される。第1APP211Bが更新されている間も、第1APP211Aは稼働を継続する。第1APP211Bの更新が完了すると、稼働対象が第1APP211A(古いバージョンのソフトウェア)から第1APP211B(最新バージョンのソフトウェア)へ切り替わる。これにより、更新による第1APPの停止期間を短くする、又はなくすことができる。
【0128】
さらに、第1バンク202Aに第2APP212Aが格納され、第2バンク202Bに第2APP212Bが格納される。
【0129】
第1APP211A,211Bと同様に、第2APP212A及び第2APP212Bは、例えば、バージョンが異なる同一ソフトウェアである。第2APP212A及び212Bは、同時にいずれか1つのみが実行される。新規バージョンの第2APPがリリースされた場合、停止されている第2APP212Bが更新される。第2APP212Bが更新されている間も、第2APP212Aは稼働を継続する。第2APP212Bの更新が完了すると、稼働対象が第2APP212A(古いバージョンのソフトウェア)から第2APP212B(最新バージョンのソフトウェア)へ切り替わる。これにより、更新による第2APPの停止期間を短くする、又はなくすことができる。
【0130】
第2実施形態に係るECUのその他の構成は、第1実施形態に係るECU200の構成と同じであるので、説明を省略する。
【0131】
図14は、第2実施形態に係る不揮発性メモリにおけるパーティションの構成を示す図である。
【0132】
プロセッサ201が第1APP211Aを実行することにより、データ通信部243Aが実現される。第1APP211Aは、上述した第1APP211と同じソフトウェアであり、データ通信部243Aは、上述したデータ通信部243と同じ機能である。
【0133】
プロセッサ201が第2APP212Aを実行することにより、データ授受部245Aが実現される。第2APP212Aは、上述した第2APP212と同じソフトウェアであり、データ授受部245Aは、上述したデータ授受部245と同じ機能である。
【0134】
図14において斜線のハッチングで示すように、第1APP211Bは停止状態であり、第2APP212Bは停止状態である。
【0135】
図15は、第1APP及び第2APPの実行対象が切り替わった場合のソフトウェアの稼働状態を示す図である。
【0136】
例えば、第1APP211Bが新たなバージョンに更新された場合、実行対象が第1APP211Aから第1APP211Bに切り替わる。すなわち、第1APP211Aが停止し、第1APP211Bが起動する。プロセッサ201が第1APP211Bを実行することにより、データ通信部243Bが実現される。
【0137】
例えば、第2APP212Bが新たなバージョンに更新された場合、実行対象が第2APP212Aから第2APP212Bに切り替わる。すなわち、第2APP212Aが停止し、第2APP212Bが起動する。プロセッサ201が第2APP212Bを実行することにより、データ授受部245Bが実現される。
【0138】
[3.第3実施形態]
図16は、第3実施形態に係るECUが搭載する不揮発性メモリの構成の一例を示すブロック図である。
【0139】
第3実施形態においては、第1更新SW221が第1論理領域251に格納されておらず、第2更新SW222に代えて、更新SW223が第2論理領域252に格納されている。なお、第3実施形態に係るECUのその他の構成は、第2実施形態に係るECU200の構成と同じであるので、同一構成要素には同一符号を付し、説明を省略する。
【0140】
更新SW223は、第1APP211A,211B及び第2APP212A,212Bのそれぞれを更新するためのソフトウェアである。
【0141】
さらに具体的に説明する。プロセッサ201が更新SW223を実行することにより、更新部246が実現される。更新部246は、第1APP211A,211B及び第2APP212A,212Bのそれぞれを更新することができる。
【0142】
第2APP212Bを更新する場合、第2APP212Bを更新するための更新データ(第2更新データ)がサーバ400から外部通信装置300へ送信される。外部通信装置300は、例えば更新データを複数のフレームに分割し、各フレームを対象のECU200へ送信する。
【0143】
データ通信部243Aは、外部通信装置300から送信された各フレーム、すなわち更新データを受信し、第1防御処理を実行する。フレームに異常が検出された場合、フレームは破棄され、異常処理が実行される。
【0144】
フレームに異常が無い場合、データ通信部243Aは、各フレームに含まれるデータを結合し、更新データを復元する。領域間通信部244Aがデータ通信部243Aから更新データを受け取り、データ授受部245Aへ更新データを引き渡す。
【0145】
データ授受部245Aは、更新データを受け取り、第2防御処理を実行する。更新データに異常が検出された場合、更新データは破棄され、異常処理が実行される。
【0146】
更新データに異常が無い場合、更新部246は、データ授受部245Aから更新データを受け取る。
【0147】
なお、ここでは領域間通信部244Aからデータ授受部245を介して更新部246へ更新データが引き渡されているが、これに限定されない。例えば、領域間通信部244Aから直接更新部246へ更新データが引き渡されてもよい。この場合、更新部246が防御機能を有してもよい。
【0148】
更新部246は、受け取った更新データを用いて、第2APP212Bを更新する。更新が完了すると、第2APP212Aが停止され、更新された第2APP212Bが起動される。
【0149】
第1APP211Bを更新する場合、第1APP211Bを更新するための更新データ(第1更新データ)がサーバ400から外部通信装置300へ送信される。外部通信装置300は、例えば更新データを複数のフレームに分割し、各フレームを対象のECU200へ送信する。
【0150】
データ通信部243Aは、外部通信装置300から送信された各フレーム、すなわち更新データを受信し、第1防御処理を実行する。フレームに異常が検出された場合、フレームは破棄され、異常処理が実行される。
【0151】
フレームに異常が無い場合、データ通信部243Aは、各フレームに含まれるデータを結合し、更新データを復元する。領域間通信部244Aがデータ通信部243Aから更新データを受け取り、データ授受部245Aへ更新データを引き渡す。
【0152】
データ授受部245Aは、更新データを受け取り、第2防御処理を実行する。更新データに異常が検出された場合、更新データは破棄され、異常処理が実行される。
【0153】
更新データに異常が無い場合、更新部246は、データ授受部245Aから更新データを受け取る。
【0154】
更新部246は、受け取った更新データを用いて、第1APP211Bを更新する。
【0155】
ここで、第1論理領域251と第2論理領域252との間でのデータ通信は制限されている。このため、例えば更新部246は、新たな第1APP211Bを複数のデータに分割し、各データを領域間通信部244Aを介して第1論理領域251へ送ることができる。第1論理領域251では、送られてきたデータを結合することで新たな第1APP211Bを作成することができる。これにより、第1APP211Bが更新される。
【0156】
更新が完了すると、第1APP211Aが停止され、更新された第1APP211Bが起動される。
【0157】
[4.補記]
今回開示された実施の形態はすべての点で例示であって、制限的ではない。本発明の権利範囲は、上述の実施形態ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味及びその範囲内でのすべての変更が含まれる。
【符号の説明】
【0158】
100 車載ネットワーク
200,200A,200B,200C,… ECU
201 プロセッサ
202 不揮発性メモリ
202A 第1バンク
202B 第2バンク
203 揮発性メモリ
204 通信インタフェース(通信I/F)
205 バス
211,211A,211B 第1アプリケーションソフトウェア(第1APP)
212,212A,212B 第2アプリケーションソフトウェア(第2APP)
221 第1更新ソフトウェア(第1更新SW)
222 第2更新ソフトウェア(第2更新SW)
223 更新ソフトウェア(更新SW)
230A 管理ソフトウェア(管理SW,第1管理ソフトウェア)
230B 管理ソフトウェア(管理SW,第2管理ソフトウェア)
240 更新部
241 第1更新部
242 第2更新部
243,243A,243B データ通信部
244A,244B 領域間通信部
245,245A,245B データ授受部
246 更新部
251 第1論理領域
252 第2論理領域
253 第3論理領域
300 外部通信装置
400 サーバ
500 通信バス