IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカの特許一覧

特許7585387ゲートウェイ装置、車載ネットワークシステム及びファームウェア更新方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-08
(45)【発行日】2024-11-18
(54)【発明の名称】ゲートウェイ装置、車載ネットワークシステム及びファームウェア更新方法
(51)【国際特許分類】
   G06F 8/65 20180101AFI20241111BHJP
   G06F 9/455 20180101ALI20241111BHJP
   G06F 21/57 20130101ALI20241111BHJP
   B60R 16/02 20060101ALI20241111BHJP
【FI】
G06F8/65
G06F9/455 150
G06F21/57 320
B60R16/02 660U
【請求項の数】 6
(21)【出願番号】P 2023078587
(22)【出願日】2023-05-11
(62)【分割の表示】P 2022076389の分割
【原出願日】2016-05-31
(65)【公開番号】P2023090981
(43)【公開日】2023-06-29
【審査請求日】2023-05-31
(31)【優先権主張番号】62/218,111
(32)【優先日】2015-09-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】514136668
【氏名又は名称】パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ
【氏名又は名称原語表記】Panasonic Intellectual Property Corporation of America
(74)【代理人】
【識別番号】100109210
【弁理士】
【氏名又は名称】新居 広守
(74)【代理人】
【識別番号】100137235
【弁理士】
【氏名又は名称】寺谷 英作
(74)【代理人】
【識別番号】100131417
【弁理士】
【氏名又は名称】道坂 伸一
(72)【発明者】
【氏名】氏家 良浩
(72)【発明者】
【氏名】松島 秀樹
(72)【発明者】
【氏名】安齋 潤
(72)【発明者】
【氏名】中野 稔久
(72)【発明者】
【氏名】芳賀 智之
(72)【発明者】
【氏名】前田 学
(72)【発明者】
【氏名】岸川 剛
【審査官】坂庭 剛史
(56)【参考文献】
【文献】特開2015-103163(JP,A)
【文献】特開2014-182571(JP,A)
【文献】特表2007-528067(JP,A)
【文献】特開2012-218621(JP,A)
【文献】特開2005-259023(JP,A)
【文献】特開2004-038766(JP,A)
【文献】韓国公開特許第10-2013-0046904(KR,A)
【文献】特開2012-185541(JP,A)
【文献】特開2010-170320(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/65
G06F 9/455
G06F 21/57
B60R 16/02
(57)【特許請求の範囲】
【請求項1】
車両に搭載された複数の電子制御ユニットのそれぞれの機能を有する複数の仮想マシンが通信に用いるネットワークに接続されたゲートウェイ装置であって、
前記複数の仮想マシンのうち1つの仮想マシンを適用対象とした更新用ファームウェアを含むファームウェア更新情報を取得する取得部と、
前記更新用ファームウェアの適用対象の仮想マシンの所定情報に基づいて前記仮想マシンが所定条件を満たすか否かを判定し、所定条件を満たす場合には前記仮想マシンにファームウェアの更新に関連する所定処理を実行させ、所定条件を満たさない場合には前記所定処理が前記仮想マシン以外で実行されるように制御する制御部とを備え、
前記所定情報は、前記更新用ファームウェアの適用対象の仮想マシンの処理能力を示し、
前記所定処理は、前記ファームウェア更新情報において前記更新用ファームウェアに付されている署名の検証処理であり、
前記制御部は、
前記仮想マシンが処理能力を有し、前記仮想マシンのプロセッサの負荷が一定程度以下の場合、前記所定処理を前記仮想マシンで実行させ、
前記仮想マシンが処理能力を有していない場合、または、前記仮想マシンが処理能力を有していても前記仮想マシンのプロセッサの負荷が一定程度より高い場合、前記複数の仮想マシンのうち、前記更新用ファームウェアの適用対象でなく前記署名の検証用の鍵を有する1つの仮想マシンを選定して、選定した前記仮想マシンに前記所定処理を実行させるように制御する、
ゲートウェイ装置。
【請求項2】
前記所定情報は、前記更新用ファームウェアの適用対象の仮想マシンの前記所定処理の実行機能を有するか否かを示し、
前記制御部は、前記更新用ファームウェアの適用対象の仮想マシンが、前記所定処理の実行機能を有し、前記仮想マシンのプロセッサの負荷が一定程度以下の場合に前記所定処理を前記仮想マシンで実行させ、前記所定処理の実行機能を有さない場合、または、前記仮想マシンが前記所定処理の実行機能を有していても前記仮想マシンのプロセッサの負荷
が一定程度より高い場合、前記所定処理を前記仮想マシン以外で実行させるように制御する、
請求項1記載のゲートウェイ装置。
【請求項3】
前記所定処理を前記仮想マシン以外で実行させるように制御することは、前記所定処理を前記ゲートウェイ装置において実行するように制御することである
請求項1又は2に記載のゲートウェイ装置。
【請求項4】
前記複数の仮想マシンは、Controller Area Network(CAN)プロトコルに従って前記ネットワークを介して通信を行う
請求項1~3のいずれか一項に記載のゲートウェイ装置。
【請求項5】
1以上のネットワークを介して通信する複数の仮想マシンが動作するコンピュータと前記ネットワークに接続されたゲートウェイ装置とを備える車載ネットワークシステムであって、
前記ゲートウェイ装置は、
前記複数の仮想マシンのうち1つの仮想マシンを適用対象とした更新用ファームウェアを含むファームウェア更新情報を取得する取得部と、
前記更新用ファームウェアの適用対象の仮想マシンの所定情報に基づいて前記仮想マシンが所定条件を満たすか否かを判定し、所定条件を満たす場合には前記仮想マシンにファームウェアの更新に関連する所定処理を実行させ、所定条件を満たさない場合には前記所定処理が前記仮想マシン以外で実行されるように制御する制御部とを有し、
前記所定情報は、前記更新用ファームウェアの適用対象の仮想マシンの処理能力を示し、
前記所定処理は、前記ファームウェア更新情報において前記更新用ファームウェアに付されている署名の検証処理であり、
前記制御部は、
前記仮想マシンが処理能力を有し、前記仮想マシンのプロセッサの負荷が一定程度以下の場合、前記所定処理を前記仮想マシンで実行させ、
前記仮想マシンが処理能力を有していない場合、または、前記仮想マシンが処理能力を有していても前記仮想マシンのプロセッサの負荷が一定程度より高い場合、前記複数の仮想マシンのうち、前記更新用ファームウェアの適用対象でなく前記署名の検証用の鍵を有する1つの仮想マシンを選定して、選定した前記仮想マシンに前記所定処理を実行させるように制御する、
車載ネットワークシステム。
【請求項6】
1以上のネットワークを介して通信する複数の仮想マシンが動作するコンピュータを備える車載ネットワークシステムにおいて用いられるファームウェア更新方法であって、
前記複数の仮想マシンのうち1つの仮想マシンを適用対象とした更新用ファームウェアを含むファームウェア更新情報を取得する取得ステップと、
前記更新用ファームウェアの適用対象の仮想マシンの所定情報に基づいて前記仮想マシンが所定条件を満たすか否かを判定し、所定条件を満たす場合には前記仮想マシンにファームウェアの更新に関連する所定処理を実行させ、所定条件を満たさない場合には前記所定処理が前記仮想マシン以外で実行されるように制御する制御ステップとを含み、
前記所定情報は、前記更新用ファームウェアの適用対象の仮想マシンの処理能力を示し、
前記所定処理は、前記ファームウェア更新情報において前記更新用ファームウェアに付されている署名の検証処理であり、
前記制御ステップは、
前記仮想マシンが処理能力を有し、前記仮想マシンのプロセッサの負荷が一定程度以下の場合、前記所定処理を前記仮想マシンで実行させ、
前記仮想マシンが処理能力を有していない場合、または、前記仮想マシンが処理能力を有していても前記仮想マシンのプロセッサの負荷が一定程度より高い場合、前記複数の仮想マシンのうち、前記更新用ファームウェアの適用対象でなく前記署名の検証用の鍵を有する1つの仮想マシンを選定して、選定した前記仮想マシンに前記所定処理を実行させるように制御する、
ファームウェア更新方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想マシンモニタ、ソフトウェア及びファームウェア更新方法に関する。
【背景技術】
【0002】
近年、自動車の中のシステムには、電子制御ユニット(ECU:Electronic Control Unit)と呼ばれる装置が多数配置されている。これらのECUをつなぐネットワークは車載ネットワークと呼ばれる。車載ネットワークには、多数の規格が存在する。その中でも最も主流な車載ネットワークの一つに、ISO11898-1で規定されているCAN(Controller Area Network)という規格が存在する。
【0003】
CANでは、通信路は2本のバスで構成され、バスに接続されているECUはノードと呼ばれる。バスに接続されている各ノードは、フレームと呼ばれるメッセージを送受信する。フレームを送信する送信ノードは、2本のバスに電圧をかけ、バス間で電位差を発生させることによって、レセシブと呼ばれる「1」の値と、ドミナントと呼ばれる「0」の値を送信する。複数の送信ノードが全く同一のタイミングで、レセシブとドミナントを送信した場合は、ドミナントが優先されて送信される。受信ノードは、受け取ったフレームのフォーマットに異常がある場合には、エラーフレームと呼ばれるフレームを送信する。エラーフレームとは、ドミナントを6bit連続して送信することで、送信ノードや他の受信ノードにフレームの異常を通知するものである。
【0004】
またCANでは送信先や送信元を指す識別子は存在せず、送信ノードはフレーム毎にメッセージIDと呼ばれるIDを付けて送信し(つまりバスに信号を送出し)、各受信ノードは予め定められたIDのフレームのみを受信する(つまりバスから信号を読み取る)。また、CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)方式を採用しており、複数ノードの同時送信時にはメッセージIDによる調停が行われ、メッセージIDの値が小さいフレームが優先的に送信される。
【0005】
多数のECUがバスを介したメッセージの授受により連携して動作している場合に、あるECUがファームウェア(FW:Firmware)の更新を開始すると、その更新中はメッセージの授受ができない等によって自動車の走行に影響を与える可能性がある。この点に関して、自動車の状態を示す情報から、停車中等といったECUのファームウェアを更新できると判断できた場合にのみファームウェアを更新する技術が知られている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2010-273181号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1の技術は、ファームウェアの更新を適切(例えば安全)なタイミングで実行するものの、ECUがファームウェアの更新に必要な何らかの処理を行う機能を有さない場合において有用ではない。
【0008】
そこで、本発明は、ファームウェアの更新に必要な処理を実行しないECUが適切にファームウェアの更新を行うことを可能にするための仮想マシンモニタ等を提供する。
【課題を解決するための手段】
【0009】
上記課題を解決するために本発明の一態様に係るゲートウェイ装置は、車両に搭載された複数の電子制御ユニットのそれぞれの機能を有する複数の仮想マシンが通信に用いるネットワークに接続されたゲートウェイ装置であって、前記複数の仮想マシンのうち1つの仮想マシンを適用対象とした更新用ファームウェアを含むファームウェア更新情報を取得する取得部と、前記更新用ファームウェアの適用対象の仮想マシンの所定情報に基づいて前記仮想マシンが所定条件を満たすか否かを判定し、所定条件を満たす場合には前記仮想マシンにファームウェアの更新に関連する所定処理を実行させ、所定条件を満たさない場合には前記所定処理が前記仮想マシン以外で実行されるように制御する制御部とを備え、前記所定情報は、前記更新用ファームウェアの適用対象の仮想マシンの処理能力を示し、前記所定処理は、前記ファームウェア更新情報において前記更新用ファームウェアに付されている署名の検証処理であり、前記制御部は、前記仮想マシンが処理能力を有し、前記仮想マシンのプロセッサの負荷が一定程度以下の場合、前記所定処理を前記仮想マシンで実行させ、前記仮想マシンが処理能力を有していない場合、または、前記仮想マシンが処理能力を有していても前記仮想マシンのプロセッサの負荷が一定程度より高い場合、前記複数の仮想マシンのうち、前記更新用ファームウェアの適用対象でなく前記署名の検証用の鍵を有する1つの仮想マシンを選定して、選定した前記仮想マシンに前記所定処理を実行させるように制御する、ゲートウェイ装置である。
【0010】
また、本発明の一態様に係る車載ネットワークシステムは、1以上のネットワークを介して通信する複数の仮想マシンが動作するコンピュータと前記ネットワークに接続されたゲートウェイ装置とを備える車載ネットワークシステムであって、前記ゲートウェイ装置は、前記複数の仮想マシンのうち1つの仮想マシンを適用対象とした更新用ファームウェアを含むファームウェア更新情報を取得する取得部と、前記更新用ファームウェアの適用対象の仮想マシンの所定情報に基づいて前記仮想マシンが所定条件を満たすか否かを判定し、所定条件を満たす場合には前記仮想マシンにファームウェアの更新に関連する所定処理を実行させ、所定条件を満たさない場合には前記所定処理が前記仮想マシン以外で実行されるように制御する制御部とを有し、前記所定情報は、前記更新用ファームウェアの適用対象の仮想マシンの処理能力を示し、前記所定処理は、前記ファームウェア更新情報において前記更新用ファームウェアに付されている署名の検証処理であり、前記制御部は、前記仮想マシンが処理能力を有し、前記仮想マシンのプロセッサの負荷が一定程度以下の場合、前記所定処理を前記仮想マシンで実行させ、前記仮想マシンが処理能力を有していない場合、または、前記仮想マシンが処理能力を有していても前記仮想マシンのプロセッサの負荷が一定程度より高い場合、前記複数の仮想マシンのうち、前記更新用ファームウェアの適用対象でなく前記署名の検証用の鍵を有する1つの仮想マシンを選定して、選定した前記仮想マシンに前記所定処理を実行させるように制御する、車載ネットワークシステムである。
【0011】
また、本発明の一態様に係るファームウェア更新方法は、1以上のネットワークを介して通信する複数の仮想マシンが動作するコンピュータを備える車載ネットワークシステムにおいて用いられるファームウェア更新方法であって、前記複数の仮想マシンのうち1つの仮想マシンを適用対象とした更新用ファームウェアを含むファームウェア更新情報を取得する取得ステップと、前記更新用ファームウェアの適用対象の仮想マシンの所定情報に基づいて前記仮想マシンが所定条件を満たすか否かを判定し、所定条件を満たす場合には前記仮想マシンにファームウェアの更新に関連する所定処理を実行させ、所定条件を満たさない場合には前記所定処理が前記仮想マシン以外で実行されるように制御する制御ステップとを含み、前記所定情報は、前記更新用ファームウェアの適用対象の仮想マシンの処理能力を示し、前記所定処理は、前記ファームウェア更新情報において前記更新用ファームウェアに付されている署名の検証処理であり、前記制御ステップは、前記仮想マシンが処理能力を有し、前記仮想マシンのプロセッサの負荷が一定程度以下の場合、前記所定処理を前記仮想マシンで実行させ、前記仮想マシンが処理能力を有していない場合、または、前記仮想マシンが処理能力を有していても前記仮想マシンのプロセッサの負荷が一定程度より高い場合、前記複数の仮想マシンのうち、前記更新用ファームウェアの適用対象でなく前記署名の検証用の鍵を有する1つの仮想マシンを選定して、選定した前記仮想マシンに前記所定処理を実行させるように制御する、ファームウェア更新方法である。
【発明の効果】
【0012】
本発明によれば、ファームウェアの更新に必要な処理を実行しないECUの代わりに他の装置においてその処理を実行(代行)するので、そのECUにおいて適切にファームウェアの更新を行うことが可能となる。
【図面の簡単な説明】
【0013】
図1】実施の形態1に係る車載ネットワークシステムの全体構成を示す図である。
図2】CANプロトコルで規定されるデータフレームのフォーマットを示す図である。
図3】実施の形態1に係るゲートウェイの構成図である。
図4】受信IDリストの一例を示す図である。
図5】ゲートウェイが用いる転送ルールの一例を示す図である。
図6】実施の形態1に係る所定情報(ECU情報)のリストの一例を示す図である。
図7】実施の形態1に係る署名検証機能及びファームウェア(FW)キャッシュ機能を有するECUの構成図である。
図8】実施の形態1に係る署名検証機能を有するECUの構成図である。
図9】実施の形態1に係るFWキャッシュ機能を有するECUの構成図である。
図10】実施の形態1に係る署名検証機能及びFWキャッシュ機能を有さないECUの構成図である。
図11】実施の形態1に係るサーバの構成図である。
図12】サーバが保持する車両ECU管理情報の一例を示す図である。
図13】実施の形態1に係るファームウェア(FW)更新情報のフォーマットの一例を示す図である。
図14】実施の形態1におけるFW更新情報の配信に係る動作例を示すシーケンス図である。
図15】実施の形態1に係るゲートウェイによるFW更新制御処理の一例を示すフローチャートである。
図16】実施の形態1に係る署名検証機能及びFWキャッシュ機能を有するECUによるFW更新制御処理の一例を示すフローチャートである。
図17】実施の形態1に係る署名検証機能を有するECUによるFW更新制御処理の一例を示すフローチャートである。
図18】実施の形態1に係るFWキャッシュ機能を有するECUによるFW更新制御処理の一例を示すフローチャートである。
図19】実施の形態1に係る署名検証機能及びFWキャッシュ機能を有さないECUによるFW更新制御処理の一例を示すフローチャートである。
図20】実施の形態1におけるFW更新GW(ゲートウェイ)代行処理に係る動作例を示すシーケンス図である。
図21】実施の形態2に係る車載ネットワークシステムの全体構成を示す図である。
図22】実施の形態2に係るゲートウェイによるFW更新制御処理の一例を示すフローチャートである。
図23】実施の形態2に係るゲートウェイによる署名検証ECU代行処理の一例を示すフローチャートである。
図24】実施の形態2におけるFW更新についてのECU代行処理に係る動作例を示すシーケンス図である。
図25】ECUの構成例としてのコンピュータで実現される仮想環境のソフトウェア構成の一例を示す図である。
【発明を実施するための形態】
【0014】
上記課題を解決するために本発明の一態様に係るゲートウェイ装置は、車両に搭載された複数の電子制御ユニットのそれぞれの機能を有する複数の仮想マシンが通信に用いるネットワークに接続されたゲートウェイ装置であって、前記複数の仮想マシンのうち1つの仮想マシンを適用対象とした更新用ファームウェアを含むファームウェア更新情報を取得する取得部と、前記更新用ファームウェアの適用対象の仮想マシンの所定情報に基づいて前記仮想マシンが所定条件を満たすか否かを判定し、所定条件を満たす場合には前記仮想マシンにファームウェアの更新に関連する所定処理を実行させ、所定条件を満たさない場合には前記所定処理が前記仮想マシン以外で実行されるように制御する制御部とを備え、前記所定情報は、前記更新用ファームウェアの適用対象の仮想マシンの処理能力を示し、前記所定処理は、前記ファームウェア更新情報において前記更新用ファームウェアに付されている署名の検証処理であり、前記制御部は、前記仮想マシンが処理能力を有し、前記仮想マシンのプロセッサの負荷が一定程度以下の場合、前記所定処理を前記仮想マシンで実行させ、前記仮想マシンが処理能力を有していない場合、または、前記仮想マシンが処理能力を有していても前記仮想マシンのプロセッサの負荷が一定程度より高い場合、前記複数の仮想マシンのうち、前記更新用ファームウェアの適用対象でなく前記署名の検証用の鍵を有する1つの仮想マシンを選定して、選定した前記仮想マシンに前記所定処理を実行させるように制御する、ゲートウェイ装置である。
また、本発明の一態様に係る車載ネットワークシステムは、1以上のネットワークを介して通信する複数の仮想マシンが動作するコンピュータと前記ネットワークに接続されたゲートウェイ装置とを備える車載ネットワークシステムであって、前記ゲートウェイ装置は、前記複数の仮想マシンのうち1つの仮想マシンを適用対象とした更新用ファームウェアを含むファームウェア更新情報を取得する取得部と、前記更新用ファームウェアの適用対象の仮想マシンの所定情報に基づいて前記仮想マシンが所定条件を満たすか否かを判定し、所定条件を満たす場合には前記仮想マシンにファームウェアの更新に関連する所定処理を実行させ、所定条件を満たさない場合には前記所定処理が前記仮想マシン以外で実行されるように制御する制御部とを有し、前記所定情報は、前記更新用ファームウェアの適用対象の仮想マシンの処理能力を示し、前記所定処理は、前記ファームウェア更新情報において前記更新用ファームウェアに付されている署名の検証処理であり、前記制御部は、前記仮想マシンが処理能力を有し、前記仮想マシンのプロセッサの負荷が一定程度以下の場合、前記所定処理を前記仮想マシンで実行させ、前記仮想マシンが処理能力を有していない場合、または、前記仮想マシンが処理能力を有していても前記仮想マシンのプロセッサの負荷が一定程度より高い場合、前記複数の仮想マシンのうち、前記更新用ファームウェアの適用対象でなく前記署名の検証用の鍵を有する1つの仮想マシンを選定して、選定した前記仮想マシンに前記所定処理を実行させるように制御する、車載ネットワークシステムである。
また、本発明の一態様に係るファームウェア更新方法は、1以上のネットワークを介して通信する複数の仮想マシンが動作するコンピュータを備える車載ネットワークシステムにおいて用いられるファームウェア更新方法であって、前記複数の仮想マシンのうち1つの仮想マシンを適用対象とした更新用ファームウェアを含むファームウェア更新情報を取得する取得ステップと、前記更新用ファームウェアの適用対象の仮想マシンの所定情報に基づいて前記仮想マシンが所定条件を満たすか否かを判定し、所定条件を満たす場合には前記仮想マシンにファームウェアの更新に関連する所定処理を実行させ、所定条件を満たさない場合には前記所定処理が前記仮想マシン以外で実行されるように制御する制御ステップとを含み、前記所定情報は、前記更新用ファームウェアの適用対象の仮想マシンの処理能力を示し、前記所定処理は、前記ファームウェア更新情報において前記更新用ファームウェアに付されている署名の検証処理であり、前記制御ステップは、前記仮想マシンが処理能力を有し、前記仮想マシンのプロセッサの負荷が一定程度以下の場合、前記所定処理を前記仮想マシンで実行させ、前記仮想マシンが処理能力を有していない場合、または、前記仮想マシンが処理能力を有していても前記仮想マシンのプロセッサの負荷が一定程度より高い場合、前記複数の仮想マシンのうち、前記更新用ファームウェアの適用対象でなく前記署名の検証用の鍵を有する1つの仮想マシンを選定して、選定した前記仮想マシンに前記所定処理を実行させるように制御する、ファームウェア更新方法である。
本発明の一態様に係るゲートウェイ装置は、車両に搭載された複数の電子制御ユニットが通信に用いるバスに接続されたゲートウェイ装置であって、前記車両外の外部装置から、前記複数の電子制御ユニットのうち1つの電子制御ユニットを適用対象とした更新用ファームウェアを含むファームウェア更新情報を受信する受信部と、前記更新用ファームウェアの適用対象の電子制御ユニットの所定情報に基づいて当該電子制御ユニットが所定条件を満たすか否かを判定し、所定条件を満たす場合には当該電子制御ユニットにファームウェアの更新に関連する所定処理を実行させ、所定条件を満たさない場合には前記所定処理が当該電子制御ユニット以外で実行されるように制御する制御部とを備えるゲートウェイ装置である。これにより、ゲートウェイ装置は、バスに接続された電子制御ユニット(ECU)のうちファームウェアの更新対象のECUが更新に関連する所定処理(例えば署名検証処理等)の実行のための機能を有していない場合、所定処理を実行できない状況にある場合等において、そのECUの代わりに他のECU或いはそのゲートウェイ装置が所定処理を実行(つまり代行)するよう制御できる。このため、例えば、ファームウェアの更新を、セキュリティを確保して行うために必要な機能を持たないECU等においても、適切にファームウェアの更新が実施され得る。
【0015】
また、前記制御部は、前記更新用ファームウェアの適用対象の電子制御ユニットの処理能力を示す前記所定情報に基づいて前記判定を行うこととしても良い。これにより、更新用ファームウェアの適用対象(更新対象)のECUが処理能力の面で所定処理を行えない場合であっても、適切にファームウェアの更新が実施され得る。
【0016】
また、前記処理能力を示す前記所定情報は、前記所定処理の実行機能を有するか否かを示し、前記制御部は、前記更新用ファームウェアの適用対象の電子制御ユニットが、前記所定処理の実行機能を有する場合に前記所定条件を満たし、前記所定処理の実行機能を有さない場合に前記所定条件を満たさないとして前記判定を行うこととしても良い。これにより、更新用ファームウェアの適用対象のECUが更新を適切に行う上で有用な所定処理を実行する機能を有さない場合であっても、その所定処理が代行されるので、適切にファームウェアの更新が実施され得る。
【0017】
また、前記所定処理は、前記ファームウェア更新情報において前記更新用ファームウェアに付されている署名の検証処理であることとしても良い。これにより、更新用ファームウェアに付されている署名の検証処理を行う署名検証機能を有さないECUにおいても、署名検証が代行されることにより、セキュリティを確保して適切にファームウェアの更新が実施され得る。
【0018】
また、前記所定処理は、前記更新用ファームウェアの適用対象の電子制御ユニットにおける更新前のファームウェアの保存処理であることとしても良い。これにより、ファームウェアの更新に際して、十分なメモリを有さない等により、更新前のファームウェアを保存することができないECUにおいても、更新前のファームウェアの保存処理が代行されることにより、ファームウェアの更新失敗時に、更新前のファームウェアへと復旧できるようになる。
【0019】
また、前記制御部は、前記複数の電子制御ユニットのうち前記更新用ファームウェアの適用対象でない1つの電子制御ユニットを選定して、選定した当該電子制御ユニットに前記所定処理を実行させることとしても良い。これにより、所定処理を実行可能なECUを有効活用して、所定処理を行わないECUにおいて適切にファームウェアの更新が実施され得る。
【0020】
また、前記制御部は、前記所定処理を前記ゲートウェイ装置において実行するように制御することとしても良い。これにより、ゲートウェイ装置による所定処理の代行によって、所定処理を行わないECUにおいて適切にファームウェアの更新が実施され得る。
【0021】
また、前記所定処理は、前記ファームウェア更新情報において前記更新用ファームウェアに付されている署名の検証処理であり、前記制御部は、前記複数の電子制御ユニットのうち、前記更新用ファームウェアの適用対象でなく前記署名の検証用の鍵を有する1つの電子制御ユニットを選定して、選定した当該電子制御ユニットに前記所定処理を実行させることとしても良い。これにより、署名の検証用の鍵を有するECUを有効活用して、検証用の鍵を有さないECUにおいて適切にファームウェアの更新が実施され得る。
【0022】
また、前記複数の電子制御ユニットは、Controller Area Network(CAN)プロトコルに従って前記バスを介して通信を行うこととしても良い。これにより、CANに従う車載ネットワークにおけるECUのファームウェアの更新が適切に実施され得る。
【0023】
また、本発明の一態様に係る車載ネットワークシステムは、1以上のバスを介して通信する複数の電子制御ユニットと前記バスに接続されたゲートウェイ装置とを備える車載ネットワークシステムであって、前記ゲートウェイ装置は、当該ゲートウェイ装置が搭載された車両外の外部装置から、前記複数の電子制御ユニットのうち1つの電子制御ユニットを適用対象とした更新用ファームウェアを含むファームウェア更新情報を受信する受信部と、前記更新用ファームウェアの適用対象の電子制御ユニットの所定情報に基づいて当該電子制御ユニットが所定条件を満たすか否かを判定し、所定条件を満たす場合には当該電子制御ユニットにファームウェアの更新に関連する所定処理を実行させ、所定条件を満たさない場合には前記所定処理が当該電子制御ユニット以外で実行されるように制御する制御部とを有する車載ネットワークシステムである。これにより、例えば、ファームウェアの更新を、セキュリティを確保して行うために必要な機能を持たないECU等においても、適切にファームウェアの更新が実施され得る。
【0024】
また、本発明の一態様に係るファームウェア更新方法は、1以上のバスを介して通信する複数の電子制御ユニットを備える車載ネットワークシステムにおいて用いられるファームウェア更新方法であって、前記複数の電子制御ユニットが搭載された車両外の外部装置から、前記複数の電子制御ユニットのうち1つの電子制御ユニットを適用対象とした更新用ファームウェアを含むファームウェア更新情報を受信する受信ステップと、前記更新用ファームウェアの適用対象の電子制御ユニットの所定情報に基づいて当該電子制御ユニットが所定条件を満たすか否かを判定し、所定条件を満たす場合には当該電子制御ユニットにファームウェアの更新に関連する所定処理を実行させ、所定条件を満たさない場合には前記所定処理が当該電子制御ユニット以外で実行されるように制御する制御ステップとを含むファームウェア更新方法である。これにより、適切にファームウェアの更新が実施され得る。
【0025】
なお、これらの全般的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータで読み取り可能なCD-ROM等の記録媒体で実現されても良く、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されても良い。
【0026】
以下、実施の形態に係るゲートウェイ装置を含む車載ネットワークシステムについて、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本発明の一具体例を示すものである。従って、以下の実施の形態で示される数値、構成要素、構成要素の配置及び接続形態、並びに、ステップ(工程)及びステップの順序等は、一例であって本発明を限定するものではない。以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
【0027】
(実施の形態1)
以下、本発明の実施の形態として、ゲートウェイ装置を含む複数の電子制御ユニット(ECU)がバスを介して通信する車載ネットワークシステム10において用いられるファームウェア更新方法について、図面を用いて説明する。ファームウェア更新方法は、車両に搭載された各ECUに実装されたファームウェア(FW:Firmware)を、車両の外部に所在するサーバから配信される新たな更新用ファームウェアで更新する(つまり更新用ファームウェアに置き換える)ための方法である。車載ネットワークシステム10ではECUがファームウェアの更新を行う上で、ゲートウェイ装置が、安全で適切なファームウェアの更新のために必要な処理(例えば署名検証処理等)を実行できないECUの代わりにその処理を代行するファームウェア更新方法が用いられる。これにより、ファームウェアの更新のために必要な処理を実行する機能等を有さないECU、或いはその機能を実行できない状態にあるECUにおいても、適切なファームウェアの更新が可能となる。
【0028】
[1.1 車載ネットワークシステム10の全体構成]
図1は、実施の形態1に係る車載ネットワークシステム10の全体構成を示す図である。
【0029】
車載ネットワークシステム10は、CANプロトコルに従って通信するネットワーク通信システムの一例であり、制御装置、センサ、アクチュエータ、ユーザインタフェース装置等の各種機器が搭載された車両におけるネットワーク通信システムである。車載ネットワークシステム10は、バスを介してフレームに係る通信を行う複数の装置を備え、ファームウェア更新方法を用いる。具体的には図1に示すように車載ネットワークシステム10は、車両に搭載され各種機器に接続されたECU100a~100d、バス200a、200b、ゲートウェイ300と、車両外のネットワーク400とサーバ500とを含んで構成される。なお、車載ネットワークシステム10には、ゲートウェイ300、ECU100a~100d以外にもいくつものECUが含まれ得るが、ここでは、便宜上ゲートウェイ300及びECU100a~100dに注目して説明を行う。ECUは、例えば、プロセッサ(マイクロプロセッサ)、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ROM、RAM等であり、プロセッサにより実行される制御プログラム(ソフトウェアとしてのコンピュータプログラム)を記憶することができる。ファームウェアはこの制御プログラムの全部又は一部であり、例えばEEPROM(Electrically Erasable Programmable Read Only Memory)等の不揮発性メモリ(起動ROMと称する)に記憶される。例えばプロセッサが、制御プログラム(コンピュータプログラム)に従って動作することにより、ECUは各種機能を実現することになる。なお、コンピュータプログラムは、所定の機能を達成するために、プロセッサに対する指令を示す命令コードが複数個組み合わされて構成されたものである。なお、ファームウェアは、プロセッサ内において命令解釈を行うためのマイクロコードの全部又は一部を含むものであっても良い。
【0030】
ECU100a~100dは、それぞれエンジン101、ブレーキ102、ドア開閉センサ103、窓(ウィンドウ)開閉センサ104といった機器に接続されており、その機器の状態を取得し、周期的に状態を表すフレーム(データフレーム)を、バス200a、バス200b等で構成される車載ネットワークに送信している。
【0031】
ゲートウェイ300は、ECU100aとECU100bとが接続されたバス200a、及び、ECU100cとECU100dとが接続されたバス200bと接続されたゲートウェイ装置としての一種のECUである。ゲートウェイ300は一方のバスから受信したフレームを他方のバスに転送する機能を有し、また、ネットワーク400を介してサーバ500と通信する機能を有する。
【0032】
車両外部に所在する外部装置としてのサーバ500は、ネットワーク400を介して、ECU100a~100dのファームウェアを更新するためのデータであるFW更新情報を配信する機能を有するコンピュータである。ネットワーク400における通信には、無線通信、或いは、有線通信のいかなる通信プロトコルを適用しても良い。
【0033】
車載ネットワークシステム10における各ECUは、CANプロトコルに従ってフレームの授受を行う。CANプロトコルにおけるフレームには、データフレーム、リモートフレーム、オーバーロードフレーム及びエラーフレームがある。
【0034】
[1.2 データフレームフォーマット]
以下、CANプロトコルに従ったネットワークで用いられるフレームの1つであるデータフレームについて説明する。
【0035】
図2は、CANプロトコルで規定されるデータフレームのフォーマットを示す図である。同図には、CANプロトコルで規定される標準IDフォーマットにおけるデータフレームを示している。データフレームは、SOF(Start Of Frame)、IDフィールド、RTR(Remote Transmission Request)、IDE(Identifier Extension)、予約ビット「r」、DLC(Data Length Code)、データフィールド、CRC(Cyclic Redundancy Check)シーケンス、CRCデリミタ「DEL」、ACK(Acknowledgement)スロット、ACKデリミタ「DEL」、及び、EOF(End Of Frame)の各フィールドで構成される。
【0036】
SOFは、1bitのドミナントで構成される。バスがアイドルの状態はレセシブになっており、SOFによりドミナントへ変更することでフレームの送信開始を通知する。
【0037】
IDフィールドは、11bitで構成される、データの種類を示す値であるID(メッセージID)を格納するフィールドである。複数のノードが同時に送信を開始した場合、このIDフィールドで通信調停を行うために、IDが小さい値を持つフレームが高い優先度となるよう設計されている。
【0038】
RTRは、データフレームとリモートフレームとを識別するための値であり、データフレームにおいてはドミナント1bitで構成される。
【0039】
IDEと「r」とは、両方ドミナント1bitで構成される。
【0040】
DLCは、4bitで構成され、データフィールドの長さを示す値である。なお、IDE、「r」及びDLCを合わせてコントロールフィールドと称する。
【0041】
データフィールドは、最大64bitで構成される送信するデータの内容を示す値である。8bit毎に長さを調整できる。送られるデータの仕様については、CANプロトコルで規定されておらず、車載ネットワークシステム10において定められる。従って、車種、製造者(製造メーカ)等に依存した仕様となる。
【0042】
CRCシーケンスは、15bitで構成される。SOF、IDフィールド、コントロールフィールド及びデータフィールドの送信値より算出される。
【0043】
CRCデリミタは、1bitのレセシブで構成されるCRCシーケンスの終了を表す区切り記号である。なお、CRCシーケンス及びCRCデリミタを合わせてCRCフィールドと称する。
【0044】
ACKスロットは、1bitで構成される。送信ノードはACKスロットをレセシブにして送信を行う。受信ノードはCRCシーケンスまで正常に受信ができていればACKスロットをドミナントとして送信する。レセシブよりドミナントが優先されるため、送信後にACKスロットがドミナントであれば、送信ノードは、いずれかの受信ノードが受信に成功していることを確認できる。
【0045】
ACKデリミタは、1bitのレセシブで構成されるACKの終了を表す区切り記号である。
【0046】
EOFは、7bitのレセシブで構成されており、データフレームの終了を示す。
【0047】
[1.3 ゲートウェイ300の構成]
図3は、ゲートウェイ300の構成図である。ゲートウェイ300は、バス間でのフレーム転送、外部のサーバ500との通信(ECU100a~100d等のファームウェアの更新のためのFW更新情報の受信等)等の機能を実行する。このためゲートウェイ300は、図3に示すように、フレーム送受信部310と、フレーム解釈部320と、受信ID判断部330と、受信IDリスト保持部340と、フレーム処理部350と、転送ルール保持部360と、FW更新処理部370と、ファームウェア(FW)キャッシュ保持部371と、ECU情報保持部372と、署名検証部373と、鍵保持部374と、外部通信部375と、フレーム生成部380とを含んで構成される。これらの各構成要素は、ゲートウェイ300における通信回路、メモリに格納された制御プログラムを実行するプロセッサ、メモリ或いはデジタル回路等により実現される。
【0048】
フレーム送受信部310は、バス200a及びバス200bのそれぞれに対して、CANプロトコルに従ったフレームを送受信する。バス200a又はバス200bからフレームを受信し、フレーム解釈部320に転送する。また、フレーム送受信部310は、フレーム生成部380より通知を受けた転送先のバスを示すバス情報及びフレームに基づいて、そのフレームの内容をバス200a又はバス200bに送信する。
【0049】
フレーム解釈部320は、フレーム送受信部310よりフレームの値を受け取り、CANプロトコルで規定されているフレームフォーマットにおける各フィールドにマッピングするよう解釈を行う。フレーム解釈部320は、IDフィールドと判断した値は受信ID判断部330へ転送する。フレーム解釈部320は、受信ID判断部330から通知される判定結果に応じて、IDフィールドの値と、IDフィールド以降に現れるデータフィールド(データ)とを、フレーム処理部350へ転送するか、フレームの受信を中止するかを決定する。また、フレーム解釈部320は、CANプロトコルに則っていないフレームと判断した場合は、エラーフレームを送信するように、フレーム生成部380へ通知する。また、フレーム解釈部320は、エラーフレームを受信した場合には、受信中のフレームについてそれ以降はそのフレームを破棄する、つまりフレームの解釈を中止する。
【0050】
受信ID判断部330は、フレーム解釈部320から通知されるIDフィールドの値を受け取り、受信IDリスト保持部340が保持しているメッセージIDのリストに従い、そのIDフィールド以降のフレームの各フィールドを受信するかどうかの判定を行う。この判定結果を、受信ID判断部330は、フレーム解釈部320へ通知する。
【0051】
受信IDリスト保持部340は、ゲートウェイ300が受信するID(メッセージID)のリストである受信IDリストを保持する。図4は、受信IDリストの一例を示す図である。
【0052】
フレーム処理部350は、転送ルール保持部360が保持する転送ルールに従って、受信したフレームのIDに応じて、転送するバスを決定し、転送するバスのバス情報と、フレーム解釈部320より通知されたメッセージIDと、データとをフレーム生成部380へ通知する。また、フレーム処理部350は、フレーム解釈部320より通知されたファームウェアの更新に係る更新結果のデータを、FW更新処理部370へ通知する。なお、フレーム処理部350は、ファームウェアの更新に係る更新結果のデータを、転送の対象としない。
【0053】
転送ルール保持部360は、バス毎のフレームの転送についてのルールを表す情報である転送ルールを保持する。図5は、転送ルールの一例を示す図である。
【0054】
FW更新処理部370は、外部通信部375から通知された更新用ファームウェア等のFWデータを含むFW更新情報の署名検証を署名検証部373へ依頼し、署名検証の結果(成功か否か)を受け取る。FW更新処理部370は、ECU情報保持部372が保持するECU情報のリストに基づいて車載ネットワーク(バス200a、200b)に接続された各ECUのうちファームウェアの更新対象となるECUが、ファームウェアの更新のために必要な処理を実行する機能を有するか否かを区別する。ファームウェアの更新対象となるECUが、ファームウェアの更新のために必要な処理を実行する機能を有さない場合には、FW更新処理部370は、その機能の代行をゲートウェイ300で行うように制御する。ファームウェアの更新のために必要な処理を実行する機能の1つは、FW更新情報において個々のECU用のファームウェア(FW)に係るFWデータに付された署名を検証する機能(署名検証機能)である。ファームウェアの更新のために必要な処理を実行する機能の他の1つは、ECUがファームウェアを更新する際に、更新前のファームウェアをメモリ等の記憶媒体に格納(保存)しておき更新に失敗した場合にその保存しておいたファームウェアを復元する機能(FWキャッシュ機能)である。即ち、FWキャッシュ機能は、更新前のファームウェアの保存処理を行う機能を含む。FW更新処理部370は、FWキャッシュ機能を代行する場合においては、ファームウェアの更新対象のECUから更新前のファームウェアを受信してFWキャッシュ保持部371に格納(保存)し、必要に応じてFWキャッシュ保持部371から保存しておいたファームウェアを取り出してファームウェアの更新対象のECUが受信できるように送信するよう制御する。FW更新処理部370は、署名検証機能を代行する場合においては、ファームウェアの更新対象のECUに対応するFWデータに付された署名の検証を署名検証部373に依頼する。また、FW更新処理部370は、更新用ファームウェアに係るFWデータと、更新対象となるECUが接続されたバスのバス情報とを、フレーム生成部380に通知する。また、FW更新処理部370は、フレーム処理部350から通知された、ECUによる通知(更新結果等)を外部通信部375に通知する。また、FW更新処理部370は、ファームウェアの更新に際してECU100a~100dとの通信に必要となるデータをフレーム生成部380へ通知する。なお、FW更新処理部370は、更新用ファームウェアの適用対象(更新対象)のECUの情報に基づいてそのECUが所定条件(署名検証機能を有すること、FWキャッシュ機能を有すること等といった条件)を満たすか否かを判定し、所定条件を満たす場合にはそのECUにファームウェアの更新に関連する所定処理(署名検証の処理、FWキャッシュ機能に係る処理等)を実行させ、所定条件を満たさない場合にはその所定処理がそのECU以外(ここではゲートウェイ300)で実行されるように制御する制御部として機能する。
【0055】
FWキャッシュ保持部371は、例えばゲートウェイ300における不揮発性メモリ等の記憶領域で実現され、ファームウェアの更新に際して更新対象のECUであってFWキャッシュ機能を有さないECU100b、100dから受信した既存のファームウェアを格納(保存)する等のために用いられる。
【0056】
ECU情報保持部372は、バス200a、バス200bに繋がる全てのECU(ECU100a~100d)それぞれに関する所定情報であるECU情報のリストを保持する。このECU情報のリストの一例を図6に示す。
【0057】
署名検証部373は、FW更新処理部370から、FW更新情報に係る署名検証対象となるデータを受信し、鍵保持部374より取得した署名検証用の鍵を用いて署名検証を行ってその検証結果をFW更新処理部370へ通知する。
【0058】
鍵保持部374は、サーバ500から受信するFW更新情報のデータについての署名検証用の鍵を保持する。
【0059】
外部通信部375は、サーバ500から更新用ファームウェアに係るFWデータを含むFW更新情報を受信する受信部としての機能を有し、受信したFW更新情報をFW更新処理部370へ通知する。また、外部通信部375は、FW更新処理部370から通知された更新結果を、サーバ500へ送信する。外部通信部375は、例えば、ネットワーク400を介してサーバ500にアクセスするために必要なサーバ500のアドレス情報等を予め保持している。なお、ゲートウェイ300では、サーバ500から受信したFWデータ等を、CANプロトコルに則ったフレームに含ませるように必要に応じてフォーマットを変換して、ECU100a~100dへ送信し得る。
【0060】
フレーム生成部380は、フレーム解釈部320から通知されたエラーフレーム送信の要求に従い、エラーフレームを、フレーム送受信部310へ通知して送信させる。また、フレーム生成部380は、フレーム処理部350から通知されたメッセージIDと、データとを用いてフレームを構成し、バス情報とともにフレーム送受信部310へ通知する。また、フレーム生成部380は、FW更新処理部370から通知された更新用ファームウェアに係るFWデータを用いてフレームを構成し、バス情報とともにフレーム送受信部310へ通知する。
【0061】
[1.4 受信IDリスト例]
図4は、ゲートウェイ300の受信IDリスト保持部340に保持される受信IDリストの一例を示す図である。
【0062】
図4に例示する受信IDリストは、ID(メッセージID)の値が「1」、「2」、「3」及び「4」のいずれかであるメッセージIDを含むフレームを選択的に受信して処理するために用いられる。これは一例に過ぎないが、受信IDリストには、ゲートウェイ300が受信すると定められているフレームのメッセージIDが列挙されている。
【0063】
[1.5 転送ルール例]
図5は、ゲートウェイ300の転送ルール保持部360が保持する転送ルールの一例を示す。
【0064】
この転送ルールは、転送元のバスと転送先のバスと転送対象のID(メッセージID)
とを対応付けている。図5中の「*」はメッセージIDにかかわらずフレームの転送がなされることを表している。図5の例は、バス200aから受信するフレームはメッセージIDにかかわらず、バス200bに転送するように設定されていることを示している。また、バス200bから受信するフレームのうちメッセージIDが「3」であるフレームのみがバス200aに転送されるように設定されていることを示している。
【0065】
[1.6 ECU情報のリスト例]
図6は、ゲートウェイ300のECU情報保持部372が保持するECU情報のリストの一例を示す。
【0066】
図6に示すリストは、ECU毎のECU情報から構成される。ECU情報は、例えば、ECU-IDと、ECUの機能種別を示すECU種別と、ECUの製造会社と、ECUが署名検証機能を有するか否か(つまり署名検証機能の有無)を示す情報と、ECUがFWキャッシュ機能を実現するための記憶媒体の領域としてのFWキャッシュを有するか否か(つまりFWキャッシュ機能の有無)を示す情報とを含んで構成される。ECU-IDは、例えば各ECUの識別情報であり、例えばシリアル番号等の識別子である。ECU情報保持部372が保持するECU情報のリストは、例えば、ECU毎にECUの処理能力(例えば署名検証機能、FWキャッシュ機能の有無等)を示す情報であると言える。
【0067】
図6の例は、エンジン101に接続されたECU100aについてのECU-IDが「0001」であり、ECU種別が「エンジン」で識別されるエンジン制御用という種別であり、製造会社が「A社」であり、署名検証機能を有しており、FWキャッシュ機能を有していることを示している。また、ブレーキ102に接続されたECU100bについてのECU-IDが「0002」であり、ECU種別が「ブレーキ」で識別されるブレーキ制御用という種別であり、製造会社が「B社」であり、署名検証機能を有しており、FWキャッシュ機能を有していないことを示している。また、ドア開閉センサ103に接続されたECU100cについてのECU-IDが「0003」であり、ECU種別が「ドア」で識別されるドア開閉制御用という種別であり、製造会社が「C社」であり、署名検証機能を有しておらず、FWキャッシュ機能を有していることを示している。また、窓(ウィンドウ)開閉センサ104に接続されたECU100aについてのECU-IDが「0004」であり、ECU種別が「ウィンドウ」で識別される窓開閉制御用という種別であり、製造会社が「D社」であり、署名検証機能を有しておらず、FWキャッシュ機能を有していないことを示している。
【0068】
ECU情報保持部372が保持するECU情報は、製造時に設定されたものであっても良いし、例えばゲートウェイ300に電力の供給が開始された際に、サーバ500等の外部装置からゲートウェイ300が取得したものであっても良い。また、バス200a、200bに接続されたECUの交換或いはファームウェアの更新等で状態が変化した場合や、車両に新たにECUが導入されてバス200a又はバス200bに接続された場合等において、ゲートウェイ300は、新たなECU情報を収集してECU情報保持部372が保持するECU情報のリストを更新するようにしても良い。
【0069】
[1.7 ECU100aの構成]
図7は、ECU100aの構成図である。ECU100aは、署名検証機能及びFWキャッシュ機能を有しており、フレーム送受信部110と、フレーム解釈部120と、受信ID判断部130と、受信IDリスト保持部140と、フレーム処理部150と、FW更新処理部160と、FWキャッシュ保持部161と、署名検証部163と、鍵保持部164と、データ取得部170と、フレーム生成部180とを含んで構成される。これらの各構成要素は、ECU100aにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ、メモリ或いはデジタル回路等により実現される。
【0070】
フレーム送受信部110は、バス200aに対して、CANプロトコルに従ったフレームを送受信する。バスからフレームを1bitずつ受信し、フレーム解釈部120に転送する。また、フレーム生成部180より通知を受けたフレームの内容をバス200aに送信する。
【0071】
フレーム解釈部120は、フレーム送受信部110よりフレームの値を受け取り、CANプロトコルで規定されているフレームフォーマットにおける各フィールドにマッピングするよう解釈を行う。IDフィールドと判断した値は受信ID判断部130へ転送する。フレーム解釈部120は、受信ID判断部130から通知される判定結果に応じて、IDフィールドの値と、IDフィールド以降に現れるデータフィールドとを、フレーム処理部150へ転送するか、その判定結果を受けた以降においてフレームの受信を中止するかを決定する。また、フレーム解釈部120は、CANプロトコルに則っていないフレームと判断した場合は、エラーフレームを送信するようにフレーム生成部180へ通知する。また、フレーム解釈部120は、エラーフレームを受信した場合には、それ以降はそのフレームを破棄する、つまりフレームの解釈を中止する。
【0072】
受信ID判断部130は、フレーム解釈部120から通知されるIDフィールドの値を受け取り、受信IDリスト保持部140が保持しているメッセージIDのリストに従い、そのIDフィールド以降のフレームの各フィールドを受信するかどうかの判定を行う。この判定結果を、受信ID判断部130は、フレーム解釈部120へ通知する。
【0073】
受信IDリスト保持部140は、ECU100aが受信するメッセージIDのリストである受信IDリストを保持する。この受信IDリストは、例えば上述の図4の例と同様である。
【0074】
フレーム処理部150は、受信したフレームのデータに応じてECU毎に異なる処理を行う。例えば、エンジン101に接続されたECU100aは、時速が30kmを超えた状態でドアが開いている状態だと、アラーム音を鳴らす機能を備える。そして、ECU100aのフレーム処理部150は、他のECUから受信したデータ(例えばドアの状態を示す情報)を管理し、エンジン101から取得された時速に基づいて一定条件下でアラーム音を鳴らす処理等を行う。フレーム処理部150はECU100b~ECU100dにおいても備えられ、ECU100cでは、ブレーキがかかっていない状況でドアが開くとアラーム音を鳴らす機能を備える。ECU100b、100dでは特に何もしない。なお、ECU100a~100dは上記以外の機能を備えていても良い。また、フレーム処理部150は、ファームウェアの更新用のFWデータを取得した場合には、FW更新処理部160へ通知する。
【0075】
FW更新処理部160は、ゲートウェイ300から受信してフレーム処理部150から通知されたFWデータの署名検証を署名検証部163へ依頼し、署名検証に成功した場合にFWデータに基づいて、ECU100aの起動ROM内のファームウェアを更新する(書き換える)。起動ROMは、例えばECU100aのプロセッサでリセット後に実行されるファームウェアの格納先として設定された不揮発性メモリである。起動ROM内のファームウェアの更新の際には、FW更新処理部160は、更新失敗時に更新前の状態へと復元可能にするために、例えばFWキャッシュ保持部161に既存のファームウェアを格納(保存)する。また、FW更新処理部160は、FWデータの署名検証の結果(成否を示す情報)を示すフレーム、及び、FWデータに基づくファームウェアの更新結果を示すフレームを生成して送信するようにフレーム生成部180へ通知する。
【0076】
FWキャッシュ保持部161は、例えばECU100aにおける不揮発性メモリ等の記憶領域で実現され、起動ROM内のファームウェアの更新に際して既存のファームウェアを格納(保存)する等のために用いられる。
【0077】
署名検証部163は、FW更新処理部160から、署名検証対象となるFWデータを受信し、鍵保持部164より取得した署名検証用の鍵を用いて署名検証を行ってその検証結果をFW更新処理部160へ通知する。
【0078】
鍵保持部164は、ファームウェアの更新用のFWデータの署名検証用の鍵を保持する。
【0079】
データ取得部170は、ECUにつながっている機器、センサ等の状態を示すデータを取得し、フレーム生成部180に通知する。
【0080】
フレーム生成部180は、フレーム解釈部120から通知されたエラーフレーム送信を指示する通知に従い、エラーフレームを構成し、エラーフレームをフレーム送受信部110へ通知して送信させる。また、フレーム生成部180は、データ取得部170より通知されたデータの値に対して、予め定められたメッセージIDをつけてフレームを構成し、フレーム送受信部110へ通知する。また、フレーム生成部180は、FW更新処理部160によるファームウェアの署名検証の結果のフレーム又はファームウェアの更新結果のフレームの生成の指示に応じて、それぞれ予め定められたメッセージIDを付したフレームを構成して、フレーム送受信部110へ通知する。
【0081】
[1.8 ECU100bの構成]
図8は、ECU100bの構成図である。ECU100bは、署名検証機能を有するがFWキャッシュ機能を有さず、フレーム送受信部110と、フレーム解釈部120と、受信ID判断部130と、受信IDリスト保持部140と、フレーム処理部150と、FW更新処理部165と、署名検証部163と、鍵保持部164と、データ取得部170と、フレーム生成部180とを含んで構成される。これらの各構成要素は、ECU100bにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ、メモリ或いはデジタル回路等により実現される。なお、ECU100bの構成要素のうちECU100aと同様の構成要素については、図8において図7と同一の符号を付しており、ここでは説明を省略する。
【0082】
FW更新処理部165は、ゲートウェイ300から受信してフレーム処理部150から通知されたFWデータの署名検証を署名検証部163へ依頼し、そのFWデータの署名検証の結果(成否を示す情報)を示すフレームを生成して送信するようにフレーム生成部180へ通知する。また、FW更新処理部165は、ゲートウェイ300からの起動ROM内のデータ(ファームウェア)の要求を受信したことをフレーム処理部150から通知されると、起動ROM内の既存のファームウェアをデータとして含むフレームを生成して送信するようにフレーム生成部180へ通知する。この起動ROMは、例えばECU100bのプロセッサでリセット後に実行されるファームウェアの格納先として設定された不揮発性メモリである。また、FW更新処理部165は、ゲートウェイ300から受信したフレーム処理部150から通知された更新ROMデータ(更新後のファームウェア)により、ECU100bの起動ROMの内容を更新する(書き換える)。また、FW更新処理部165は、ファームウェアの更新結果を示すフレームを生成して送信するようにフレーム生成部180へ通知する。
【0083】
[1.9 ECU100cの構成]
図9は、ECU100cの構成図である。ECU100cは、署名検証機能を有さないがFWキャッシュ機能を有しており、フレーム送受信部110と、フレーム解釈部120と、受信ID判断部130と、受信IDリスト保持部140と、フレーム処理部150と、FW更新処理部166と、FWキャッシュ保持部161と、データ取得部170と、フレーム生成部180とを含んで構成される。これらの各構成要素は、ECU100cにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ、メモリ或いはデジタル回路等により実現される。なお、ECU100cの構成要素のうちECU100aと同様の構成要素については、図9において図7と同一の符号を付しており、ここでは説明を省略する。
【0084】
FW更新処理部166は、ゲートウェイ300から受信してフレーム処理部150から通知されたFWデータに基づいて、ECU100cの起動ROM内のファームウェアを更新する(書き換える)。起動ROMは、例えばECU100cのプロセッサでリセット後に実行されるファームウェアの格納先として設定された不揮発性メモリである。起動ROM内のファームウェアの更新の際には、FW更新処理部166は、更新失敗時に更新前の状態へと復元可能にするために、例えばFWキャッシュ保持部161に既存のファームウェアを格納(保存)する。また、FW更新処理部166は、FWデータに基づくファームウェアの更新結果を示すフレームを生成して送信するようにフレーム生成部180へ通知する。
【0085】
[1.10 ECU100dの構成]
図10は、ECU100dの構成図である。ECU100dは、署名検証機能及びFWキャッシュ機能を有しておらず、フレーム送受信部110と、フレーム解釈部120と、受信ID判断部130と、受信IDリスト保持部140と、フレーム処理部150と、FW更新処理部167と、データ取得部170と、フレーム生成部180とを含んで構成される。これらの各構成要素は、ECU100dにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ、メモリ或いはデジタル回路等により実現される。なお、ECU100dの構成要素のうちECU100aと同様の構成要素については、図10において図7と同一の符号を付しており、ここでは説明を省略する。
【0086】
FW更新処理部167は、ゲートウェイ300からの起動ROM内のデータ(ファームウェア)の要求を受信したことをフレーム処理部150から通知されると、起動ROM内の既存のファームウェアをデータとして含むフレームを生成して送信するようにフレーム生成部180へ通知する。この起動ROMは、例えばECU100dのプロセッサでリセット後に実行されるファームウェアの格納先として設定された不揮発性メモリである。また、FW更新処理部167は、ゲートウェイ300から受信したフレーム処理部150から通知された更新ROMデータ(更新後のファームウェア)により、ECU100dの起動ROMの内容を更新する(書き換える)。また、FW更新処理部165は、ファームウェアの更新結果を示すフレームを生成して送信するようにフレーム生成部180へ通知する。
【0087】
[1.11 サーバ500の構成]
サーバ500は、車載ネットワークシステム10が搭載される車両の外部に所在するコンピュータであり、メモリ、ハードディスク等の記憶媒体、プロセッサ、通信回路等を含む。サーバ500は、ユーザインタフェースとしての入力装置(キーボード等)、ディスプレイ等を備えていても良い。複数の車両それぞれに車載ネットワークに係る複数のECUが搭載されていることを前提として、サーバ500は、各種ECUの製造会社等から提供されたファームウェアを管理し、各車両に更新用ファームウェアを含むFW更新情報を配信する機能を有する。
【0088】
図11は、サーバ500の構成図である。サーバ500は、同図に示すように、データ送受信部510と、配信データ生成部570と、FW保持部571と、ECU管理情報保持部572と、署名生成部590と、鍵保持部591とを含んで構成される。これらの各構成要素は、サーバ500における通信回路、メモリに格納された制御プログラムを実行するプロセッサ等により実現される。
【0089】
データ送受信部510は、ゲートウェイ300と通信し、データを送受信する。データ送受信部510は、ゲートウェイ300に対して、配信データ生成部570から通知されたデータ(更新すべきファームウェアを含むFW更新情報)を配信する。また、データ送受信部510は、ゲートウェイ300より、ファームウェアの更新結果を受信した場合には、ECU管理情報保持部572が保持する車両ECU管理情報を更新する。
【0090】
配信データ生成部570は、ゲートウェイ300に配信するための更新用ファームウェアのパッケージとしてのFW更新情報(配信データ)を生成し、署名生成部590に依頼してFW更新情報に対する署名を生成させる。配信データ生成部570は、FW更新情報の生成のために、FW保持部571から各ECUの最新のファームウェア(FW)を取得し、ECU管理情報保持部572から、更新対象となるECUについての情報を取得する。FW更新情報(配信データ)のフォーマットについては後述する(図13参照)。
【0091】
FW保持部571は、各種ECU用のファームウェア(FW)を保持する。
【0092】
ECU管理情報保持部572は、各車両の車載ネットワークにおける各ECUに関する情報である車両ECU管理情報を保持する。車両ECU管理情報については後述する(図12参照)。
【0093】
署名生成部590は、配信データ生成部570の依頼を受けて、鍵保持部591に保持されている署名用の鍵を用いて、FW更新情報に対する署名を生成して配信データ生成部570に通知する。署名生成部590は、例えば、FW更新情報における各FWデータに対する署名及びFW更新情報全体に対する署名を行い得る。
【0094】
鍵保持部591は、署名生成部590がFW更新情報に署名するために用いる鍵を保持する。
【0095】
[1.12 車両ECU管理情報]
図12は、サーバ500のECU管理情報保持部572が保持する車両ECU管理情報(車両別のECU情報のリスト)の一例を示す。
【0096】
この例の車両ECU管理情報は、サーバ500の管理対象となる車両毎について車両情報とその車両に搭載される各ECUについてのECU情報とを含んで構成される。車両情報は、車両を識別するための識別子(車両ID)である。車両ECU管理情報において車両情報と対応付けたECU情報は、ECU-IDと、ECUの機能種別を示すECU種別と、ECUの製造会社と、署名検証機能の有無と、FWキャッシュ機能の有無と、ECUに実装されたファームウェアのバージョン番号等であるFWバージョンと、そのECUに対応する最新のファームウェアのバージョン番号等である最新FWバージョンとを含んで構成される。車両ECU管理情報における、ある車両についての各ECU情報は、例えば、その車両のゲートウェイ300から受信した情報(ファームウェアの更新結果等)と、各種ECUの製造会社からサーバ500にアップロードされてFW保持部571に保持されたファームウェアについてのFWバージョンとに基づいて設定されている。なお、図12では、一台の車両Aに関する情報のみを例示しているが、車両ECU管理情報は、他の車両についての情報も含み得る。
【0097】
[1.13 FW更新情報のフォーマット例]
図13は、サーバ500が配信する配信データとしてのFW更新情報のフォーマットの一例を示す。
【0098】
FW更新情報は、FWデータの個数を示すFW数F1と、1個以上のFWデータ(図13の例では2つの個別FWデータF10、F20)と、FW更新情報(配信データ)全体に対する署名であるFW更新情報署名F30とを含む。FWデータF10、F20はそれぞれ、更新用のファームウェア(FW)F13、F23と、対象となるECUを識別するECU-IDF11、F21と、ファームウェアのバージョン番号等を示すFWバージョンF12、F22と、これらのデータに対する署名であるFWデータ署名F14、F24を含む。ファームウェアF13、F23は、ファームウェア自体つまりバイナリデータである。
【0099】
[1.14 FW更新情報の配信及びファームウェアの更新に係る動作例]
以下、車載ネットワークシステム10におけるFW更新情報の配信及びECUのファームウェアの更新に係る動作について説明する。
【0100】
図14は、サーバ500が配信データ(FW更新情報)をゲートウェイ300に配信してゲートウェイ300の制御下でファームウェアの更新を行う動作例を示すシーケンス図である。ここでの各シーケンスは、各装置における各処理手順(ステップ)を意味する。このシーケンスは、例えば、新しいファームウェアがサーバ500にアップロードされて登録されたタイミングで開始され、或いは、配信先の車両のゲートウェイ300からの配信要求に従って開始され得る。
【0101】
サーバ500は、ECU管理情報保持部572が保持する車両ECU管理情報等に基づいて、ゲートウェイ300に配信する更新用の1つ以上のファームウェアを決定する(ステップS1101)。この決定により更新用のファームウェアの個数も決定される。
【0102】
次にサーバ500は、配信データ生成部570でFW更新情報(図13参照)の生成を行う。即ち、配信データ生成部570は、更新用のファームウェアの個数であるFW数分だけ(ステップS1102)、FW保持部571が保持するファームウェア等のFWデータの取得(ステップS1103)、及び、FWデータに対する署名生成部590で生成したFWデータ署名の付加(ステップS1104)を、繰り返す。また、配信データ生成部570は、署名生成部590によりFW更新情報に対する署名(FW更新情報署名)を生成させて(ステップS1105)、その署名を付加したFW更新情報を生成する。
【0103】
サーバ500では、FW更新情報が生成されると、FW更新情報(配信データ)をデータ送受信部510に送信させる(ステップS1106a)。これにより、サーバ500から、ゲートウェイ300へとFW更新情報が送信され、ゲートウェイ300はそのFW更新情報を受信する(ステップS1106b)。
【0104】
ゲートウェイ300は、FW更新情報を受信すると、署名検証部373により、FW更新情報の署名(FW更新情報署名)を検証する(ステップS1107)。そして、ゲートウェイ300のFW更新処理部370は、署名の検証に成功したか否かを判定し(ステップS1108)、検証に成功しなかった場合には、FW更新情報を破棄し(ステップS1110)、この場合にはFW更新情報に基づくファームウェアの更新が行われない。検証に成功した場合には、ゲートウェイ300は、主としてFW更新処理部370により、更新対象に該当するECUと連携して、FW更新制御処理を行う(ステップS1109)。FW更新制御処理の内容については後述する。
【0105】
ゲートウェイ300は、ステップS1109でのFW更新制御処理を終えた後、或いは、ステップS1110でのFW更新情報の破棄の後において、ファームウェアの更新結果をサーバ500に送信する(ステップS1111a)。ファームウェアの更新結果は、例えば更新に成功したか否かを示す情報であり、その情報は例えば更新後におけるファームウェアに係るFWバージョンを含んでも良い。これにより、サーバ500は更新結果を受信する(ステップS1111b)。なお、サーバ500は、ファームウェアの更新結果を受信した場合に、そのファームウェアの更新後の状態を表すように、ECU管理情報保持部572が保持する車両ECU管理情報を更新し得る。
【0106】
[1.15 ゲートウェイ300によるFW更新制御処理例]
図15は、ゲートウェイ300によるFW更新制御処理の一例を示すフローチャートである。
【0107】
以下、上述のステップS1109においてゲートウェイ300により実行されるFW更新制御処理について、図15に即して説明する。
【0108】
ゲートウェイ300は、FW更新処理部370により、FW更新情報(図13参照)におけるFW数を取得し(ステップS1201)、ステップS1203~ステップS1213での処理を、FW数分繰り返す(ステップS1202)。
【0109】
FW更新処理部370は、FW更新情報のFWデータにおけるECU-IDを取得し、ファームウェアの更新対象のECUを特定する(ステップS1203)。
【0110】
続いてゲートウェイ300では、FW更新処理部370が、ECU情報保持部372が保持するECU情報のリスト(図6参照)を参照して、更新対象のECU(ステップS1203で取得したECU-IDで識別されるECU)が署名検証能力を有するか(署名検証機能を有するか)否かを判定する(ステップS1204)。
【0111】
ステップS1204で更新対象のECUが署名検証機能を有すると判定した場合には、FW更新処理部370は、そのECUに送信するためにFWデータを含むフレームをフレーム生成部380に生成させ、そのフレームをフレーム送受信部310がそのECUが接続されたバスを介してECUに送信する(ステップS1205)。そして、ゲートウェイ300は、そのファームウェアの更新対象のECUによるFWデータに対する署名(FWデータ署名)の検証結果を受信する(ステップS1206)。
【0112】
ステップS1204で更新対象のECUが署名検証機能を有さないと判定した場合には、FW更新処理部370は、署名検証部373によりFWデータに対する署名(FWデータ署名)を検証させる(ステップS1207)。即ち、ファームウェアの更新対象のECUにおけるFWデータ署名についての検証をゲートウェイ300が代行する。
【0113】
ステップS1206又はステップS1207の後に、ゲートウェイ300では、FWデータ署名の検証結果を判定し(ステップS1208)、検証に失敗していればFWデータを破棄する(ステップS1209)。また、検証に成功していれば、FW更新処理部370が、ECU情報保持部372が保持するECU情報のリスト(図6参照)を参照して、更新対象のECUがFWキャッシュを有するか(FWキャッシュ機能を有するか)否かを判定する(ステップS1210)。
【0114】
ステップS1210で更新対象のECUがFWキャッシュ機能を有すると判定した場合には、FW更新処理部370は、そのECUに未だFWデータを送信していなければ、FWデータを含むフレームをフレーム生成部380に生成させ、そのフレームをフレーム送受信部310がそのECUが接続されたバスを介してECUに送信する(ステップS1211)。これにより、そのファームウェアの更新対象のECUがそのFWデータを受信してファームウェアの更新のための処理を行ってその更新結果をゲートウェイ300に送信する。そして、ゲートウェイ300は、そのECUから送信される更新結果を受信する(ステップS1212)。
【0115】
ステップS1210で更新対象のECUがFWキャッシュ機能を有さないと判定された場合に、ゲートウェイ300は、更新対象のECUと連携してFW更新GW代行処理を行う(ステップS1213)。このFW更新GW代行処理については後に説明する。
【0116】
[1.16 ECU100aにおけるファームウェアの更新の動作例]
図16は、署名検証機能及びFWキャッシュ機能を有するECU100aによるFW更新制御処理の一例を示すフローチャートである。以下、ECU100aが行うFW更新制御処理について、図16に即して説明する。
【0117】
ECU100aでは、フレーム送受信部110が、ゲートウェイ300から上述のステップS1205で送信されたFWデータを含むフレームを受信する(ステップS1301)。
【0118】
ECU100aのFW更新処理部160は、フレーム解釈部120及びフレーム処理部150を介して、ステップS1301で受信されたフレームに係るFWデータを取得し、署名検証部163にFWデータにおけるFWデータ署名を検証させる(ステップS1302)。そして、ECU100aは、そのFWデータ署名の検証結果を示すフレームをフレーム送受信部110によりバス200aに送信する(ステップS1303)。これにより、FWデータ署名の検証結果がゲートウェイ300へ通知される。
【0119】
FW更新処理部160は、FWデータ署名の検証に成功したか否かを区別して(ステップS1304)、成功しなかった場合にはFWデータを破棄して(ステップS1305)、ファームウェアの更新をしない。
【0120】
FWデータ署名の検証に成功した場合には、FW更新処理部160は、ECU100aにおける起動ROMの内容であるファームウェアを、FWキャッシュ保持部161にコピーすることで保存する(ステップS1306)。
【0121】
次にFW更新処理部160は、FWデータにおけるファームウェア(FW)により起動ROM内のファームウェアの更新を行い(ステップS1307)、ECU100aのプロセッサを、リセットすることで再起動する(ステップS1308)。
【0122】
ECU100aでは、起動ROMからの起動に成功しない場合には、FWキャッシュ保持部161の内容による起動がなされるように予め設定されており、ステップS1308での再起動が成功しない場合に(ステップS1309)、FWキャッシュ保持部161に保存されている更新前のファームウェアが起動される(ステップS1310)。そして、その更新前のファームウェアの制御下で、FWキャッシュ保持部161に保存されている更新前のファームウェアを起動ROMへコピーすることで起動ROMの内容を更新前の状態に戻す(ステップS1311)。
【0123】
ECU100aは、ステップS1308での再起動に成功した場合にはファームウェアの更新に成功した旨を示す更新結果を含むフレームをバス200aへ送信し、ステップS1308での再起動に成功しなかった場合にはステップS1311の後に、ファームウェアの更新に失敗した旨を示す更新結果を含むフレームをバス200aへ送信する(ステップS1312)。これにより、ファームウェアの更新結果がゲートウェイ300へ通知される。
【0124】
[1.17 ECU100bにおけるファームウェアの更新の動作例]
図17は、署名検証機能を有するがFWキャッシュ機能を有さないECU100bによるFW更新制御処理の一例を示すフローチャートである。同図において、既述のステップと同様のステップには同じ符号を付している。以下、ECU100bが行うFW更新制御処理について、図17に即して説明する。
【0125】
ECU100bでは、フレーム送受信部110が、ゲートウェイ300から上述のステップS1205で送信されたFWデータを含むフレームを受信する(ステップS1301)。
【0126】
ECU100bのFW更新処理部165は、フレーム解釈部120及びフレーム処理部150を介して、ステップS1301で受信されたフレームに係るFWデータを取得し、署名検証部163にFWデータにおけるFWデータ署名を検証させる(ステップS1302)。そして、ECU100bは、そのFWデータ署名の検証結果を示すフレームをフレーム送受信部110によりバス200aに送信する(ステップS1303)。これにより、FWデータ署名の検証結果がゲートウェイ300へ通知される。
【0127】
FW更新処理部165は、FWデータ署名の検証に成功したか否かを区別して(ステップS1304)、成功しなかった場合にはFWデータを破棄して(ステップS1305)、ファームウェアの更新をしない。
【0128】
FWデータ署名の検証に成功した場合には、ECU100bは、ゲートウェイ300と連携して、後述するFW更新GW代行処理を行う(ステップS1213)。ECU100bは、FW更新GW代行処理によるファームウェアの更新結果を含むフレームをバス200aへ送信する(ステップS1312)。これにより、ファームウェアの更新結果がゲートウェイ300へ通知される。
【0129】
[1.18 ECU100cにおけるファームウェアの更新の動作例]
図18は、署名検証機能を有さないがFWキャッシュ機能を有するECU100cによるFW更新制御処理の一例を示すフローチャートである。同図において、既述のステップと同様のステップには同じ符号を付している。以下、ECU100cが行うFW更新制御処理について、図18に即して説明する。
【0130】
ECU100cでは、フレーム送受信部110が、ゲートウェイ300から上述のステップS1211で送信されたFWデータを含むフレームを受信する(ステップS1301)。
【0131】
ECU100cのFW更新処理部166は、フレーム解釈部120及びフレーム処理部150を介して、ステップS1301で受信されたフレームに係るFWデータを取得し、ECU100cにおける起動ROMの内容であるファームウェアを、FWキャッシュ保持部161にコピーすることで保存する(ステップS1306)。
【0132】
次にFW更新処理部166は、FWデータにおけるファームウェア(FW)により起動ROM内のファームウェアの更新を行い(ステップS1307)、ECU100cのプロセッサを、リセットすることで再起動する(ステップS1308)。
【0133】
ECU100cでは、起動ROMからの起動に成功しない場合には、FWキャッシュ保持部161の内容による起動がなされるように予め設定されており、ステップS1308での再起動が成功しない場合に(ステップS1309)、FWキャッシュ保持部161に保存されている更新前のファームウェアが起動される(ステップS1310)。そして、その更新前のファームウェアの制御下で、FWキャッシュ保持部161に保存されている更新前のファームウェアを起動ROMへコピーすることで起動ROMの内容を更新前の状態に戻す(ステップS1311)。
【0134】
ECU100cは、ステップS1308での再起動に成功した場合にはファームウェアの更新に成功した旨を示す更新結果を含むフレームをバス200bへ送信し、ステップS1308での再起動に成功しなかった場合にはステップS1311の後に、ファームウェアの更新に失敗した旨を示す更新結果を含むフレームをバス200bへ送信する(ステップS1312)。これにより、ファームウェアの更新結果がゲートウェイ300へ通知される。
【0135】
[1.19 ECU100dにおけるファームウェアの更新の動作例]
図19は、署名検証機能及びFWキャッシュ機能を有さないECU100dによるFW更新制御処理の一例を示すフローチャートである。同図において、既述のステップと同様のステップには同じ符号を付している。
【0136】
ECU100dは、ゲートウェイ300と連携して、後述するFW更新GW代行処理を行う(ステップS1213)。ECU100dは、FW更新GW代行処理によるファームウェアの更新結果を含むフレームをバス200bへ送信する(ステップS1312)。これにより、ファームウェアの更新結果がゲートウェイ300へ通知される。
【0137】
[1.20 ゲートウェイ300及びECUにおけるFW更新GW代行処理]
以下、FW更新GW代行処理について図20に即して説明する。図20は、ECU(ECU100b、100d)におけるファームウェアの更新に際して、ゲートウェイ300が処理の一部を代行するFW更新GW代行処理の一例を示すシーケンス図である。
【0138】
まず、ゲートウェイ300は、FWキャッシュ機能を有さない、ファームウェアの更新対象のECUに対して、起動ROMデータ(起動ROM内の更新前のファームウェア)を送信するよう要求する(ステップS1401a)。
【0139】
ECUはゲートウェイ300からの要求を受信し(ステップS1401b)、そのECUの起動ROMデータ(起動ROM内のファームウェア)を送信する(ステップS1402a)。
【0140】
ゲートウェイ300は、ECUからの起動ROMデータを、受信して(ステップS1402b)、FWキャッシュ保持部371へコピーを格納し(ステップS1403)、更新ROMデータ(例えば更新前のファームウェアに更新用のFWデータのファームウェアを適用して更新したデータ)を作成する(ステップS1404)。
【0141】
次に、ゲートウェイ300は、作成した更新ROMデータを送信し(ステップS1405a)、この更新ROMデータを、ファームウェアの更新対象のECUが受信する(ステップS1405b)。
【0142】
更新ROMデータを受信したECUは、更新ROMデータにより起動ROM内のデータの更新を行い(ステップS1406)、そのECUのプロセッサを、リセットすることで再起動する(ステップS1407)。なお、再起動に際してECUでは、起動ROMからの起動に成功しない場合に起動ROMデータの再送を要求するようには予め設定しておき、ステップS1407での再起動が成功しない場合に(ステップS1408)、起動ROMデータの再送を要求する(ステップS1409a)。これに対応してゲートウェイ300では起動ROMデータの再送要求を受信すると(ステップS1409b)、FWキャッシュ保持部371に格納していた起動ROMデータを送信する(ステップS1410a)。これにより、ECUは起動ROMデータを受信して(ステップS1410b)、その起動ROMデータで起動ROM内のデータの更新を行い(ステップS1406)、元のファームウェアに戻して再起動する(ステップS1407)。ステップS1408で再起動に成功した場合にはECUはファームウェアの更新の処理を終える。
【0143】
[1.21 実施の形態1の効果]
実施の形態1に係る車載ネットワークシステム10では、ゲートウェイ300が、車載ネットワーク(バス200a、200b)に接続されたECUのうちファームウェアの更新対象のECUが更新のための機能(署名検証機能、FWキャッシュ機能)を有していないECUの代わりにその機能に係る処理を行う(代行する)。これにより、セキュアなファームウェアの更新に必要な機能を持たないECUでも、安全にファームウェアの更新が可能になる。
【0144】
(実施の形態2)
以下、実施の形態1で示した車載ネットワークシステム10の一部を変形した車載ネットワークシステム20について説明する。
【0145】
本実施の形態に係る車載ネットワークシステム20では、ECUがファームウェアの更新を行う上で、安全で適切なファームウェアの更新のために必要な処理(例えば署名検証処理等)を実行できないECUの代わりに、ゲートウェイ装置及び他のECUによりその処理を代行するファームウェア更新方法が用いられる。これにより、ファームウェアの更新のために必要な処理を実行する機能等を有さないECU、或いはその機能を実行できない状態にあるECUにおいても、適切なファームウェアの更新が可能となる。本実施の形態で特に説明しない点については、車載ネットワークシステム20は、車載ネットワークシステム10と同様である。
【0146】
[2.1 車載ネットワークシステム20の全体構成]
図21は、実施の形態2に係る車載ネットワークシステム20の全体構成を示す図である。
【0147】
図21に示すように車載ネットワークシステム20は、車両に搭載され各種機器に接続されたECU1100a~1100d、バス200a、200b、ゲートウェイ1300と、車両外のネットワーク400とサーバ500とを含んで構成される。なお、車載ネットワークシステム20には、ゲートウェイ1300、ECU1100a~1100d以外にもいくつものECUが含まれ得るが、ここでは、便宜上ゲートウェイ1300及びECU1100a~1100dに注目して説明を行う。図21において、実施の形態1で示した車載ネットワークシステム10と同様の構成要素には、図1と同じ符号を付しており、ここでは説明を省略する。
【0148】
ECU1100a~1100dは、それぞれエンジン101、ブレーキ102、ドア開閉センサ103、窓開閉センサ104といった機器に接続されており、その機器の状態を取得し、周期的に状態を表すフレーム(データフレーム)を、バス200a、バス200b等で構成される車載ネットワークに送信している。なお、ECU1100a~1100dに関するECU情報は、例えば図6に示すものと同様である。
【0149】
ゲートウェイ1300は、ECU1100aとECU1100bとが接続されたバス200a、及び、ECU1100cとECU1100dとが接続されたバス200bと接続されたゲートウェイ装置としての一種のECUである。ゲートウェイ1300は、実施の形態1で示したゲートウェイ300を部分的に変形したものであり、あるECUのファームウェアの更新のための処理を、そのECU以外のECUと連携して代行する機能を有する。ゲートウェイ1300の機能構成は、図3に示したゲートウェイ300の構成と同様である。なお、ゲートウェイ1300におけるFW更新処理部370は、更新用のファームウェアの適用対象(更新対象)のECUの情報に基づいてそのECUが所定条件(署名検証機能を有すること、FWキャッシュ機能を有すること等といった条件)を満たすか否かを判定し、所定条件を満たす場合にはそのECUにファームウェアの更新に関連する所定処理(署名検証の処理、FWキャッシュ機能に係る処理等)を実行させ、所定条件を満たさない場合にはその所定処理がそのECU以外(つまり選定した代行ECU)で実行されるように制御する制御部として機能する。また、ゲートウェイ1300は、ゲートウェイ300と同様に、一方のバスから受信したフレームを他方のバスに転送する機能を有し、また、ネットワーク400を介してサーバ500と通信する機能を有する。サーバ500は、ECU1100a~1100dのファームウェアを更新するためのデータであるFW更新情報を配信する機能を有する。
【0150】
[2.2 ゲートウェイ1300によるFW更新制御処理例]
車載ネットワークシステム20においても、車載ネットワークシステム10と同様に、サーバ500からFW更新情報が配信されゲートウェイ1300の制御下でECUがファームウェアの更新を行う(図14参照)。
【0151】
図22は、ゲートウェイ1300によるFW更新制御処理の一例を示すフローチャートである。このFW更新制御処理は、サーバ500から配信されたFW更新情報を受信したゲートウェイ1300で実行される図14のステップS1109に相当する処理である。なお、実施の形態1のFW更新制御処理(図15参照)と同様のステップについては、図22において図15と同じ符号を付しており、ここでは説明を適宜省略する。
【0152】
ゲートウェイ1300は、FW更新処理部370により、FW更新情報(図13参照)におけるFW数を取得し(ステップS1201)、ステップS1203~ステップS1212、S2207、S2213等についての処理を、FW数分繰り返す(ステップS1202)。
【0153】
ゲートウェイ1300は、ステップS1203でFW更新情報のFWデータのECU-IDによりファームウェアの更新対象のECUを特定し、ECU情報保持部372が保持するECU情報のリスト(図6参照)を参照して、更新対象のECU署名検証機能を有するか否かを判定する(ステップS1204)。
【0154】
ステップS1204で更新対象のECUが署名検証機能を有さないと判定した場合には、ゲートウェイ1300、後述する署名検証ECU代行処理を行う(ステップS2207)。この署名検証ECU代行処理によりゲートウェイ1300は、ファームウェアの更新対象のECUにおけるFWデータ署名についての検証を他のECUに代行させる。
【0155】
ステップS1206又はステップS2207の後に、ゲートウェイ1300では、FWデータ署名の検証結果を判定し(ステップS1208)、検証に失敗していればFWデータを破棄する(ステップS1209)。また、検証に成功していれば、ECU情報のリスト(図6参照)を参照して、更新対象のECUがFWキャッシュを有するか(FWキャッシュ機能を有するか)否かを判定する(ステップS1210)。
【0156】
ステップS1210で更新対象のECUがFWキャッシュ機能を有さないと判定された場合に、ゲートウェイ1300は、後述するFW更新ECU代行処理を行う(ステップS2213)。
【0157】
[2.3 署名検証ECU代行処理例]
図23は、ゲートウェイ1300による署名検証ECU代行処理の一例を示すフローチャートである。
【0158】
ゲートウェイ1300は、ECU情報保持部372が保持するECU情報のリスト(図6参照)に基づいて、ファームウェアの更新対象のECUとは別の、ファームウェア更新に伴う処理の実行機能を有するECUを、その処理を代行するECU(代行ECU)として選定する(ステップS2200)。具体的には、署名検証ECU代行処理においては、署名検証機能を有するECU(例えば署名の検証用の鍵を有するECU)を、署名検証機能に係る処理を代行する代行ECUとして選定する。
【0159】
ゲートウェイ1300では、ステップS2200で選定した代行ECUに対して、FW更新処理部370が、その代行ECUに送信するためにFWデータを含むフレームをフレーム生成部380に生成させ、そのフレームをフレーム送受信部310がその代行ECUが接続されたバスを介して代行ECUに送信する(ステップS1205)。そして、ゲートウェイ1300は、その代行ECUによるFWデータに対する署名(FWデータ署名)の検証結果を受信する(ステップS1206)。
【0160】
[2.4 ゲートウェイ1300及びECUにおけるFW更新ECU代行処理例]
図24は、ゲートウェイ1300及びECU(ECU1100a、1100d)によるFW更新ECU代行処理の一例を示すシーケンス図である。同図の例は、FWキャッシュ機能を有さないECU1100dの代わりに、FWキャッシュ機能をECU1100aが代行する例を示す。なお、実施の形態1において図21で示したステップと同様のステップについては、図24でも同じ符号を付しており、ここでは説明を適宜省略する。
【0161】
ゲートウェイ1300は、ECU情報保持部372が保持するECU情報のリスト(図6参照)に基づいて、ファームウェアの更新対象のECUとは別の、ファームウェア更新に伴う処理の実行機能を有するECUを、その処理を代行するECU(代行ECU)として選定する(ステップS2200)。具体的には、FW更新ECU代行処理においては、FWキャッシュ機能を有するECU1100aを、FWキャッシュ機能に係る処理を代行する代行ECUとして選定する。
【0162】
次にゲートウェイ1300は、ファームウェアの更新対象のECU1100dに対するFWキャッシュ機能を代行する代行ECUであるECU1100aに対して、バス200aを介してFWデータを送信する(ステップS2400a)。ECU1100aは、そのFWデータを受信し(ステップS2400b)、FWキャッシュ機能に係る代行ECUとして機能すべきことを認識して、起動ROMデータの受信を待つ。
【0163】
続いて、ゲートウェイ1300は、FWキャッシュ機能を有さない、ファームウェアの更新対象のECU1100dに対して、起動ROMデータ(起動ROM内の更新前のファームウェア)を送信するよう要求する(ステップS2401a)。更新対象のECU1100dはゲートウェイ1300からの要求を受信し(ステップS2401b)、ECU1100dの起動ROMデータ(起動ROM内のファームウェア)を送信する(ステップS2402a)。ECU1100dからバス200bへ送信された起動ROMデータ(起動ROM内のファームウェア)はゲートウェイ1300により転送されてバス200aを介してECU1100aに受信される(ステップS2402b)。なお、図24では、ゲートウェイ1300によるバス間でのフレームの転送の処理を、省略しており、以下、バス間でのフレームの転送については説明を省略する。
【0164】
ECU1100aは、ECU1100dからの起動ROMデータを、受信して(ステップS2402b)、FWキャッシュ保持部371へコピーを格納し(ステップS1403)、起動ROMデータ及びFWデータに基づいて更新ROMデータを作成する(ステップS1404)。
【0165】
次に、ECU1100aは、作成した更新ROMデータを送信し(ステップS2405a)、この更新ROMデータを、ECU1100dが受信する(ステップS2405b)。
【0166】
更新ROMデータを受信したECU1100dは、更新ROMデータにより起動ROM内のデータの更新を行い(ステップS1406)、ECU1100dのプロセッサを、リセットすることで再起動する(ステップS1407)。なお、再起動に際してECU1100dでは、起動ROMからの起動に成功しない場合に起動ROMデータの再送を要求するようには予め設定しておき、ステップS1407での再起動が成功しない場合に(ステップS1408)、起動ROMデータの再送を要求する(ステップS2409a)。これに対応してECU1100aでは、起動ROMデータの再送要求を受信すると(ステップS2409b)、FWキャッシュ保持部371に格納していた起動ROMデータを送信する(ステップS2410a)。これにより、ECU1100dは、起動ROMデータを受信して(ステップS2410b)、その起動ROMデータで起動ROM内のデータの更新を行い(ステップS1406)、元のファームウェアに戻して再起動する(ステップS1407)。ステップS1408で再起動に成功した場合にはECU1100dはファームウェアの更新の処理を終える。
【0167】
[2.5 実施の形態2の効果]
実施の形態2に係る車載ネットワークシステム20では、ゲートウェイ1300が、車載ネットワーク(バス200a、200b)に接続されたECUのうちファームウェアの更新対象のECUが更新のための機能(署名検証機能、FWキャッシュ機能)を有していないECUの代わりにその機能に係る処理を代行可能な他のECUを選定して代行させるように制御する。これにより、ECUのリソースを有効活用し、セキュアなファームウェアの更新に必要な機能を持たないECUでも、安全にファームウェアの更新が可能になる。そして、ゲートウェイ1300が代行能力を保持する必要がなくなり、これはコスト削減の面で有用である。
【0168】
(他の実施の形態)
以上のように、本発明に係る技術の例示として実施の形態1、2を説明した。しかしながら、本発明に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本発明の一実施態様に含まれる。
【0169】
(1)上記実施の形態で示したECU100a~100d、1100a~1100d等のECUは、一例として、プロセッサ、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置であることとしたが、ハードディスク装置、ディスプレイ、キーボード、マウス等の他のハードウェア構成要素を含んでいても良い。また、メモリに記憶された制御プログラムがプロセッサにより実行されてソフトウェア的に機能を実現する代わりに、専用のハードウェア(デジタル回路等)によりその機能を実現することとしても良い。
【0170】
また、ECU100a~100d、1100a~1100d等のECUのうち、複数のECUが、1つの物理的な装置(コンピュータ)等により構築される仮想環境により、実現されていても良い。図25は、ECUの構成例としてのコンピュータ800で実現される仮想環境のソフトウェア構成の一例を示す図である。
【0171】
コンピュータ800において動作するソフトウェアは、同図に示すように、仮想マシンモニタ801と、仮想マシン802、803、804、805と、仮想ハードウェア810、820、830、840と、汎用OS(オペレーティングシステム)811、821と、RTOS(リアルタイムオペレーティングシステム)831と、ファームウェア841と、アプリ(アプリケーションプログラム)A812と、アプリB813と、アプリC814と、アプリD822と、アプリE832とを含む。
【0172】
コンピュータ800は、コンピュータであり、プロセッサ上でソフトウェア(仮想マシンモニタ801等)を実行する。仮想マシンモニタ801は、その上で互いに独立して動作するように仮想マシン802~805を制御する仮想マシン制御機能、その仮想マシンに対してメモリやCPU等のハードウェアリソースを割り当てて管理するリソース管理機能、仮想マシンからの要求に従ってデバイスへアクセスするデバイスアクセス機能、仮想マシンをスケジューリングするスケジューリング機能等を有する。仮想マシン802~805はそれぞれ、仮想ハードウェア、OS、アプリ、或いは、ファームウェアを含んで構成され、仮想マシンモニタ801によりそれぞれ独立に実行される。仮想ハードウェア810、820、830、840は、それぞれの仮想マシンに仮想的にハードウェアの機能を提供し、また、IPL(Initial Program Loader)、BIOS(Basic Input/Output System)を含み得る。汎用OS811は、アプリ(アプリA812、アプリB813、アプリC814)をメモリ上にロードして実行する、或いは、その各アプリをメモリ上から削除(アンロード)する機能を有し、各アプリに対して、CANプロトコルによるネットワーク通信機能を提供する。汎用OS821も同様である。RTOS831は、リアルタイム性を重視するアプリを動作させるためのOSである。アプリA812、アプリB813、アプリC814、アプリD822、アプリE832は、カーナビゲーション機能、運転支援機能、ステアリング制御機能、エンジン制御機能、ブレーキ制御機能、センサ情報(トルク、角度、速度、回転数等)の取得機能等といった各種の自動車用の機能を有する。これらの自動車用の機能群のそれぞれは、1つのアプリにより実行されても良いし、複数のアプリで実行されていても良い。ファームウェア841は、OSを必要としない機能を動作させるソフトウェア等である。なお、ファームウェア841は、OSを含んでいても良く、他のアプリの動作環境となって他のアプリの実行を制御する機能を有するものであっても良い。なお、図25で示した汎用OS811、821或いはRTOS831上で動作するアプリの数は、一例に過ぎず、より多くのアプリが動作しても良い。また、汎用OSが動作する仮想マシンが2つと、RTOSが動作する仮想マシンが1つ、ファームウェアが動作する仮想マシンが1つの場合を図示しているが、これは一例に過ぎない。仮想環境を、例えば、ファームウェアが動作する仮想マシンだけで構成しても良いし、ファームウェアが動作する仮想マシンとRTOSが動作する仮想マシンとだけで構成しても良い。
【0173】
コンピュータ800では、ECU100a~100d、1100a~1100d等のうち全部又は一部の複数のECUのそれぞれを、上述の仮想マシン802~805等といった1つの仮想マシンで実現する。例えば、仮想マシンモニタ801上で仮想マシン805を複数(動作環境を構成するECUの数分)生成して動作させ、それぞれの仮想マシン805の仮想ハードウェア840で1つのECUのハードウェア面の動作を実現し、例えば、ファームウェア841はそのECUに実装されているファームウェアと同一の内容とする。例えば、仮想マシンモニタ801は、その上で動作する複数の仮想ハードウェア間で、ECU間でのバスを介した通信を実現するように構成される。
【0174】
(2)上記実施の形態では、外部通信部375(外部通信機能)を有するゲートウェイ300、1300が、車両外のネットワーク400を介してサーバ500と通信したが、これは一例に過ぎない。例えば、ゲートウェイ300、1300は、外部との通信機能を持つ別のECU(例えばヘッドユニット等)を介して、サーバ500と通信することとしても良い。ヘッドユニットは、比較的高性能なプロセッサを備えるECUの一種であり、自動車のインパネ(インストルメントパネル)等に設けられた液晶ディスプレイ等の表示装置を含み、車両の運転者への報知等を行い得る装置である。なお、車載ネットワークには、OBD2(On-Board Diagnostics2)等と呼ばれる、診断ツール等の外部装置と通信するインタフェースである診断ポートが存在し、ECUの診断に利用される。そこで、ゲートウェイ300、1300は、例えば、サーバ500と通信可能でありかつ診断ポートと接続する外部装置と通信することで間接的にサーバ500と通信することとしても良い。これらの場合において、ゲートウェイ300、1300は必ずしも車両外部と通信するための外部通信機能を有さなくても良く、他のECU或いは外部装置を介してゲートウェイ300、1300とサーバ500との間では、FW更新情報等の授受が可能となる。また、ゲートウェイ300、1300は、自装置或いは他のECUに接続された外部の記憶媒体(不揮発性メモリ等)に記憶されたFW更新情報を取得しても良い。
【0175】
(3)上記実施の形態では、CANプロトコルに従って通信するネットワーク通信システムの例として車載ネットワークを示した。本発明に係る技術は、車載ネットワークに限定されるものではなく、ロボット、産業機器等のネットワークその他、車載ネットワーク以外のCANプロトコルに従って通信するネットワーク通信システムにも適用可能である。また、CANプロトコルは、オートメーションシステム内の組み込みシステム等に用いられるCANOpen、或いは、TTCAN(Time-Triggered CAN)、CANFD(CAN with Flexible Data Rate)等の派生的なプロトコルも包含する広義の意味のものと扱われるべきである。また、上記実施の形態では、CANプロトコルに基づいてバスでファームウェアに関するデータ(フレーム)を送受信する例を示したが、別のプロトコルを適用しても良く、ファームウェアに係るデータを通信するための通信路及び通信方式として任意のものを利用可能である。
【0176】
(4)上記実施の形態では、データ(FWデータ、FW更新情報等)の完全性を担保するために、データに対して署名を付した構成を用いたが、更に、秘匿性を担保するためにデータの暗号化を行っても良い。署名用の鍵と暗号化用の鍵とを別個の鍵としても良い。
【0177】
(5)上記実施の形態では、FW更新情報に対する署名の生成とFWデータに対する署名の生成とに際して、同じ鍵を使用したが、それぞれ別の鍵を用いても良い。例えば、配信データとしてのFW更新情報の全体に対する署名(FW更新情報署名)は、自動車メーカが持つ鍵を用いて生成し、個別のFWデータに対する署名(FWデータ署名)は、そのFWデータに係るファームウェアを実装するECUの製造会社(或いはそのファームウェアの製造会社)が持つ鍵を用いて生成されることとしても良い。これに対応して、ECUの署名の検証をゲートウェイ300で代行するために、ゲートウェイ300は必要な鍵を予め保持するように構成される。また、サーバ500においてFWデータ署名について署名に用いた鍵がファームウェアを実装するECUの製造会社毎に定まる鍵であることとした場合には、ゲートウェイ1300は、ECU情報のリスト(図6参照)に基づいて、ファームウェアの更新対象のECUと同じ製造会社のECU(その製造会社の署名検証に必要な鍵を保持しているECU)を代行ECUとして選定することとしても良い。また、ECU情報として、ECUが署名検証機能を代行する機能を有するか否か(自装置以外のファームウェアについて署名検証を代行するための鍵を有しているか否か)の情報を含ませておき、ゲートウェイ1300はその情報に基づいて代行ECUを選定しても良い。
【0178】
(6)上記実施の形態で、ゲートウェイ300、1300がファームウェアの更新対象のECUの処理をそのECU以外のECU或いはゲートウェイで代行させるよう制御するか更新対象のECUに実行させるか(つまり代行が必要か否か)を、ECU情報保持部372が保持するECU情報のリストに基づいて判定することを示した。この代行が必要か否かの判定(更新対象のECUが所定条件を満たすか否かの判定)は、例えば、ECU毎にECUの処理能力(例えば所定処理の実行機能を有するか否か)を示す情報に基づいてなされ得る。所定条件を満たさない場合に代行が必要になる。所定処理の実行機能を有するか否かは、例えば、署名検証機能、FWキャッシュ機能の有無等である。ゲートウェイ300、1300のFW更新処理部370(制御部)は、更新用ファームウェアの適用対象(つまり更新対象)のECUが、所定処理の実行機能を有する場合に所定条件を満たし、所定処理の実行機能を有さない場合に所定条件を満たさないとして判定を行い得る。このECUの処理能力を示す情報は、署名検証機能、FWキャッシュ機能の有無の他に、ECUのメモリ容量、処理性能等の情報であっても良い。また、この判定を、ゲートウェイ300、1300は、車載ネットワークにおける通信負荷の状況、ECUのプロセッサの負荷状況等に基づいて行っても良く、例えば、処理能力があってもプロセッサの負荷が一定程度より高い状況では、代行が必要であると判定しても良い。
【0179】
(7)上記実施の形態で示した更新用のファームウェア(バイナリデータ)は、ECUに実装されるファームウェアの全体であってもその一部であっても良い。更新用のファームウェアがECUに実装されるファームウェアの一部である場合において、ECU内の既存のファームウェアの一部に上書きされる。この場合には、更新用のファームウェアは、差分データ(バイナリデータ)と、どの部分に適用されるかを示す情報(例えばアドレス情報等)とを含んで構成され得る。この場合において、ゲートウェイ300、更新対象に該当するECU、或いは、代行ECUにおいて、差分データと既存のファームウェアとをマージしてから、ECUの起動ROMにおけるファームウェアの置き換えを行っても良い。
【0180】
(8)上記実施の形態で示した各種処理の手順(例えば図14図20図22図24に示した手順等)の実行順序は、必ずしも、上述した通りの順序に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えたり、複数の手順を並列に行ったり、その手順の一部を省略したりすることができる。
【0181】
(9)上記実施の形態における各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしても良い。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAM等を含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。また、上記各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又は全部を含むように1チップ化されても良い。また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現しても良い。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
【0182】
(10)上記各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしても良い。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM等から構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしても良い。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしても良い。
【0183】
(11)本発明の一態様としては、例えば図14図20図22図24等に示す処理手順の全部又は一部を含むファームウェア更新方法であるとしても良い。ファームウェア更新方法は、例えば、ステップS1106b等の、車両外の外部装置から、更新用ファームウェアを含むFW更新情報を受信する受信ステップを含む。またファームウェア更新方法は、例えば、ステップS1204~S1207或いはステップS1210~S1213等の、ファームウェアの更新対象のECUが所定条件を満たすか否かを判定し、所定条件を満たす場合にはそのECUにファームウェアの更新に関連する所定処理を実行させ、所定条件を満たさない場合には所定処理がそのECU以外で実行されるように制御する制御ステップを含む。また、この方法をコンピュータにより実現するコンピュータプログラム(制御プログラム)であるとしても良いし、前記コンピュータプログラムからなるデジタル信号であるとしても良い。例えば、ファームウェア更新方法における受信ステップ、制御ステップを含むファームウェア更新処理を実行するための制御プログラムであることとしても良い。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリ等に記録したものとしても良い。また、これらの記録媒体に記録されている前記デジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしても良い。また、本発明の一態様としては、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしても良い。また、前記プログラム若しくは前記デジタル信号を前記記録媒体に記録して移送することにより、又は、前記プログラム若しくは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしても良い。
【0184】
(12)上記実施の形態及び上記変形例で示した各構成要素及び機能を任意に組み合わせることで実現される形態も本発明の範囲に含まれる。
【産業上の利用可能性】
【0185】
本発明は、車載ネットワークに接続されたECUのファームウェアの更新を適切に行うために利用可能である。
【符号の説明】
【0186】
10、20 車載ネットワークシステム
100a~100d、1100a~1100d 電子制御ユニット(ECU)
101 エンジン
102 ブレーキ
103 ドア開閉センサ
104 窓(ウィンドウ)開閉センサ
110、310 フレーム送受信部
120、320 フレーム解釈部
130、330 受信ID判断部
140、340 受信IDリスト保持部
150、350 フレーム処理部
160、165~167、370 FW更新処理部
161、371 FWキャッシュ保持部
163、373 署名検証部
164、374、591 鍵保持部
170 データ取得部
180、380 フレーム生成部
200a、200b バス
300、1300 ゲートウェイ
360 転送ルール保持部
372 ECU情報保持部
375 外部通信部
400 ネットワーク
500 サーバ
510 データ送受信部
570 配信データ生成部
571 FW保持部
572 ECU管理情報保持部
590 署名生成部
800 コンピュータ
801 仮想マシンモニタ
802~805 仮想マシン
810、820、830、840 仮想ハードウェア
841 ファームウェア
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25