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

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

▶ 株式会社オートネットワーク技術研究所の特許一覧 ▶ 住友電装株式会社の特許一覧 ▶ 住友電気工業株式会社の特許一覧

特許7111030車載更新装置、更新処理プログラム及び、プログラムの更新方法
<>
  • 特許-車載更新装置、更新処理プログラム及び、プログラムの更新方法 図1
  • 特許-車載更新装置、更新処理プログラム及び、プログラムの更新方法 図2
  • 特許-車載更新装置、更新処理プログラム及び、プログラムの更新方法 図3
  • 特許-車載更新装置、更新処理プログラム及び、プログラムの更新方法 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-25
(45)【発行日】2022-08-02
(54)【発明の名称】車載更新装置、更新処理プログラム及び、プログラムの更新方法
(51)【国際特許分類】
   B60R 16/02 20060101AFI20220726BHJP
【FI】
B60R16/02 660U
B60R16/02 660W
【請求項の数】 7
(21)【出願番号】P 2019038882
(22)【出願日】2019-03-04
(65)【公開番号】P2020142565
(43)【公開日】2020-09-10
【審査請求日】2021-06-25
(73)【特許権者】
【識別番号】395011665
【氏名又は名称】株式会社オートネットワーク技術研究所
(73)【特許権者】
【識別番号】000183406
【氏名又は名称】住友電装株式会社
(73)【特許権者】
【識別番号】000002130
【氏名又は名称】住友電気工業株式会社
(74)【代理人】
【識別番号】100114557
【弁理士】
【氏名又は名称】河野 英仁
(74)【代理人】
【識別番号】100078868
【弁理士】
【氏名又は名称】河野 登夫
(72)【発明者】
【氏名】小林 拓也
【審査官】佐々木 智洋
(56)【参考文献】
【文献】特開2007-011734(JP,A)
【文献】特開2011-003020(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B60R 16/02
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
車外の外部サーバから送信される更新プログラムを取得し、車両に搭載される車載制御装置のプログラムを更新するための処理を行う車載更新装置であって、
記憶部と、制御部とを備え、
前記記憶部には、取得した前記更新プログラムが記憶され、
前記制御部は、取得した前記更新プログラムの前記車載制御装置への送信を制御するものであり、
前記制御部は、前記車両の停止により、前記送信が中断され、
前記中断の前後における前記記憶部に記憶されている前記更新プログラムに基づいて導出される導出値それぞれを比較し、
比較結果に基づいて前記記憶部に記憶されている前記更新プログラムの正当性に関し、前記中断の間に前記更新プログラムが変更されたか否かを判定する
車載更新装置。
【請求項2】
前記中断の前後における前記導出値それぞれが異なる場合は、
前記制御部は、前記記憶部に記憶されている前記更新プログラムが不正であると判定し、
前記外部サーバから前記更新プログラムを最初から取得する
請求項1に記載の車載更新装置。
【請求項3】
前記中断の前後における前記導出値それぞれが同一である場合は、
前記制御部は、前記記憶部に記憶されている前記更新プログラムが正当であると判定し、
中断ポイントから前記送信を再開する
請求項1又は請求項2に記載の車載更新装置。
【請求項4】
前記中断ポイントは、取得した前記更新プログラムに含まれるチェックポイントに基づいて導出される
請求項3に記載の車載更新装置。
【請求項5】
前記更新プログラムの最後のブロックが前記車載制御装置に送信された後、前記制御部は前記記憶部に記憶されている前記更新プログラムを前記記憶部から消去する
請求項1から請求項4のいずれか1項に記載の車載更新装置。
【請求項6】
コンピュータに、
車外の外部サーバから送信される更新プログラムを取得し、
取得した該更新プログラムを記憶部に記憶し、
前記更新プログラムを車載制御装置へ送信し、
前記送信の中断の前後における前記記憶部に記憶されている前記更新プログラムに基づいて導出される導出値それぞれを比較し、
比較結果に基づいて前記記憶部に記憶されている前記更新プログラムの正当性に関し、前記中断の間に前記更新プログラムが変更されたか否かを判定する
処理を実行させる更新処理プログラム。
【請求項7】
車外の外部サーバから送信される更新プログラムを取得し、
取得した該更新プログラムを記憶部に記憶し、
前記更新プログラムを車載制御装置へ送信し、
前記送信の中断の前後における前記記憶部に記憶されている前記更新プログラムに基づいて導出される導出値それぞれを比較し、
比較結果に基づいて前記記憶部に記憶されている前記更新プログラムの正当性に関し、前記中断の間に前記更新プログラムが変更されたか否かを判定する
プログラムの更新方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、車載更新装置、更新処理プログラム及び、プログラムの更新方法に関する。
【背景技術】
【0002】
車両には、エンジン制御等のパワー・トレーン系、エアコン制御等のボディ系統の車載機器を制御するための車載制御装置、例えば車載ECU(Electronic Control Unit)が搭載されている。車載制御装置は、MPU(Micro Processing Unit)等の演算処理部、RAM(Random Access Memory)等の書き換え可能な不揮発性の記憶部、及び他の車載制御装置と通信するための通信部を含み、記憶部に記憶した制御プログラムを読み込んで実行することにより、車載機器の制御を行う。更に車両には、無線通信の機能を備えた中継装置(車載更新装置)が実装されている。中継装置は、車外のネットワークに接続されている外部サーバ等のプログラム提供装置と通信し、当該プログラム提供装置から車載制御装置の制御プログラムをダウンロード(受信)する。ダウンロードされたプログラムは中継装置の記憶部に記憶される。記憶部に記憶されたプログラムは当該車載制御装置へと送信され、当該車載制御装置の制御プログラムは更新(リプログラミング、リプロ)される。(特許文献1参照)
【先行技術文献】
【特許文献】
【0003】
【文献】特開2017-97851号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
車載更新装置が外部サーバからプログラムを取得し、プログラムがリプロ対象となる車載制御装置に送信されるまでの間にリプログラミングが中断されると、中断の間に車載更新装置の記憶部に記憶されているプログラムは改竄され、不正なプログラムとなるおそれがある。しかしながら、特許文献1は、前述の中断が生じた場合における車載更新装置の記憶部に記憶されているプログラムの正当性に関する点が考慮されていない。
【0005】
本開示は斯かる事情に鑑みてなされたものであり、その目的とするところは、車載更新装置の記憶部に記憶されているプログラムの正当性を担保することができる車載更新装置等を提供することにある。
【課題を解決するための手段】
【0006】
本開示の一態様に係る車載更新装置は、車外の外部サーバから送信される更新プログラムを取得し、車両に搭載される車載制御装置のプログラムを更新するための処理を行う車載更新装置であって、記憶部と、制御部とを備え、前記記憶部には、取得した前記更新プログラムが記憶され、前記制御部は、取得した前記更新プログラムの前記車載制御装置への送信を制御するものであり、前記制御部は、前記車両の停止により、前記送信が中断され、前記中断の前後における前記記憶部に記憶されている前記更新プログラムに基づいて導出される導出値それぞれを比較し、比較結果に基づいて前記記憶部に記憶されている前記更新プログラムの正当性に関し、前記中断の間に前記更新プログラムが変更されたか否かを判定する。
【発明の効果】
【0007】
本開示の一態様によれば、車載更新装置の記憶部に記憶されているプログラムの正当性を担保することができる車載更新装置を提供できる。
【図面の簡単な説明】
【0008】
図1】実施形態1に係る車載更新システムの構成を示す模式図である。
図2】実施形態1に係る車載更新装置等の構成を示すブロック図である。
図3】車載更新装置の制御部の処理を例示するフローチャートである。
図4】プログラム提供装置、車載更新装置、及び車載制御装置の間で送受信される通信信号及び更新プログラムを示すシーケンス図である。
【発明を実施するための形態】
【0009】
[本開示の実施形態の説明]
最初に本開示の実施態様を列挙して説明する。また、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
【0010】
(1)本開示の一態様に係る車載更新装置は、車外の外部サーバから送信される更新プログラムを取得し、車両に搭載される車載制御装置のプログラムを更新するための処理を行う車載更新装置であって、記憶部と、制御部とを備え、前記記憶部には、取得した前記更新プログラムが記憶され、前記制御部は、取得した前記更新プログラムの前記車載制御装置への送信を制御するものであり、前記制御部は、前記車両の停止により、前記送信が中断され、前記中断の前後における前記記憶部に記憶されている前記更新プログラムに基づいて導出される導出値それぞれを比較し、比較結果に基づいて前記記憶部に記憶されている前記更新プログラムの正当性を判定する。
【0011】
本態様にあたっては、記憶部に記憶された更新プログラムの車載制御装置への送信が中断された後に再開されるにあたって、制御部は記憶部に記憶された更新プログラムの正当性を判定する。従って、前記送信を再開する際に、記憶部に記憶されている更新プログラムの正当性を担保することができる。例えば、中断の間に更新プログラムが不正に変更されていないことを担保できる。
【0012】
(2)本開示の一態様に係る車載更新装置は、前記中断の前後における前記導出値それぞれが異なる場合は、前記制御部は、前記記憶部に記憶されている前記更新プログラムが不正であると判定し、前記外部サーバから前記更新プログラムを最初から取得する。
【0013】
本態様にあたっては、制御部は、記憶部に記憶されている更新プログラムを不正と判定した場合に、外部サーバから更新プログラムを最初から取得して車載制御装置の更新を再開する。従って、不正な更新プログラムが車載制御装置へと送信されることを防止することができる。
【0014】
(3)本開示の一態様に係る車載更新装置は、前記中断の前後における前記導出値それぞれが同一である場合は、前記制御部は、前記記憶部に記憶されている前記更新プログラムが正当であると判定し、中断ポイントから前記送信を再開する。
【0015】
本態様にあたっては、制御部は、記憶部に記憶されている更新プログラムを正当と判断した場合に、記憶部に記憶されている更新プログラムを用いて車載制御装置の更新を再開する。従って、記憶部に記憶されている更新プログラムの適正性を担保したうえで、更新プログラムを再度取得することを不要とし、取得するための通信コスト及び処理時間を削減することができる。
【0016】
(4)本開示の一態様に係る車載更新装置は、前記中断ポイントは、取得した前記更新プログラムに含まれるチェックポイントに基づいて導出される。
【0017】
本態様にあたっては、更新プログラムに含まれるチェックポイントから導出される中断ポイントから、車載制御装置の更新が再開される。従って、効率的に更新が再開される。
【0018】
(5)本開示の一態様に係る車載更新装置は、前記更新プログラムが前記車載制御装置に送信された後、前記制御部は前記記憶部に記憶されている前記更新プログラムを前記記憶部から消去する。
【0019】
本態様にあたっては、更新プログラムが車載制御装置に送信された後、記憶部に記憶されている更新プログラムが消去されるので、記憶部が更新プログラムによって圧迫されることを防止することができる。
【0020】
(6)本開示の一態様に係る更新処理プログラムは、コンピュータに、車外の外部サーバから送信される更新プログラムを取得し、取得した該更新プログラムを記憶部に記憶し、前記更新プログラムを車載制御装置へ送信し、前記送信の中断の前後における前記記憶部に記憶されている前記更新プログラムに基づいて導出される導出値それぞれを比較し、比較結果に基づいて前記記憶部に記憶されている前記更新プログラムの正当性を判定する処理を実行させる。
【0021】
本態様にあたっては、コンピュータを、本開示の一態様の車載更新装置として機能させることができる。
【0022】
(7)本開示の一態様に係るプログラムの更新方法は、車外の外部サーバから送信される更新プログラムを取得し、取得した該更新プログラムを記憶部に記憶し、前記更新プログラムを車載制御装置へ送信し、前記送信の中断の前後における前記記憶部に記憶されている前記更新プログラムに基づいて導出される導出値それぞれを比較し、比較結果に基づいて前記記憶部に記憶されている前記更新プログラムの正当性を判定する。
【0023】
本態様にあたっては、記憶部に記憶された更新プログラムの車載制御装置への送信が中断された後に再開されるにあたって、記憶部に記憶された更新プログラムの正当性が判定される。従って、前記送信を再開する際に、記憶部に記憶されている更新プログラムの正当性を担保することができるプログラムの更新方法を提供することができる。
【0024】
[本開示の実施形態の詳細]
本開示をその実施形態を示す図面に基づいて具体的に説明する。本開示の実施形態に係る車載更新装置2を、以下に図面を参照しつつ説明する。なお、本開示はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【0025】
(実施形態1)
以下、実施の形態について図面に基づいて説明する。図1は、実施形態1に係る車載更新システムSの構成を示す模式図である。図2は、実施形態1に係る車載更新装置2等の構成を示すブロック図である。車載更新システムSは、車両Cに搭載された車外通信装置1及び車載更新装置2を含み、車外ネットワークNを介して接続されたプログラム提供装置S1から取得したプログラム又はデータを、車両Cに搭載されている車載制御装置3に送信する。
【0026】
プログラム提供装置S1は、例えばインターネット又は公衆回線網等の車外ネットワークNに接続されているサーバ等のコンピュータであり、RAM、ROM(Read Only Memory)又はハードディスク等による記憶部S11を備え、車外の外部サーバに相当する。プログラム提供装置S1の記憶部S11には、車載制御装置3の製造メーカ等によって作成された当該車載制御装置3を制御するためのプログラム又はデータが保存されている。当該プログラム又はデータは、更新プログラムとして、後述のごとく車両Cに送信され、車両Cに搭載されている車載制御装置3のプログラム又はデータを更新するために用いられる。このように構成されたプログラム提供装置S1(外部サーバ)は、OTA(Over The Air)サーバとも称される。車両Cに搭載される車載制御装置3は、プログラム提供装置S1から無線通信により送信された更新プログラムを取得し、当該更新プログラムが実行するプログラムとして適用されることにより、自制御装置が実行するプログラムを更新(リプロ)することができる。
【0027】
以降、プログラムは、車載制御装置3が処理を行うための制御構文等を含むプログラムコード及び、当該プログラムコードを実行するにあたり参照するデータが記載される外部ファイルを含むものとして説明する。更新プログラムの送信時において、これらプログラムコード及びデータが記載される外部ファイルは、例えば暗号化されたアーカイブファイルとして、プログラム提供装置S1から送信される。
【0028】
車両Cには、車外通信装置1、車載更新装置2、表示装置5、IG(イグニッション)スイッチ6、及び種々の車載機器を制御するための複数の車載制御装置3が搭載されている。車外通信装置1と車載更新装置2とは、例えばシリアルケーブル等のハーネスにより通信可能に接続されている。車載更新装置2及び車載制御装置3は、CAN(Control Area Network/登録商標)又はEthernet(登録商標)等の通信プロトコルに対応した車内LAN4によって通信可能に接続されている。
【0029】
車外通信装置1は、車外通信部11及び、車載更新装置2と通信するための入出力I/F(インターフェイス)12を含む。車外通信部11は、3G、LTE、4G、WiFi等の移動体通信のプロトコルを用いて無線通信をするための通信装置であり、車外通信部11に接続されたアンテナ13を介してプログラム提供装置S1とデータの送受信を行う。車外通信装置1とプログラム提供装置S1との通信は、例えば公衆回線網又はインターネット等の外部ネットワークを介して行われる。
【0030】
入出力I/F12は、車外通信装置1と車載更新装置2とが、例えばシリアル通信をするための通信インターフェイスである。車外通信装置1と車載更新装置2とは、入出力I/F12及び車載更新装置2が備えている入出力I/F24に接続されたシリアルケーブル等のハーネスを介して相互に通信する。本実施形態では、車外通信装置1は、車載更新装置2と別装置とし、入出力I/F12等によってこれら装置を通信可能に接続しているが、これに限定されない。車外通信装置1は、車載更新装置2の一構成部位として、車載更新装置2に内蔵されるものであってもよい。
【0031】
車載更新装置2は、制御部20、記憶部21及び車内通信部23を含む。車載更新装置2は、車外通信装置1が無線通信によってプログラム提供装置S1から受信した更新プログラムを、車外通信装置1から取得し、車内LAN4を介して当該更新プログラムを所定(更新対象)の車載制御装置3に送信するように構成されている。車載更新装置2は、例えば、制御系の車載制御装置3、安全系の車載制御装置3及び、ボディ系の車載制御装置3等の複数の系統のセグメントを統括し、これらセグメント間での車載制御装置3同士の通信を中継するゲートウェイ(中継器)である。又は、車載更新装置2は、車両C全体をコントロールするボディECUの一機能部として構成されるものであってもよい。
【0032】
制御部20は、CPU(Central Processing Unit)又はMPU等により構成してあり、記憶部21に予め記憶された制御プログラム及びデータを読み出して実行することにより、種々の制御処理及び演算処理等を行うようにしてある。制御部20は、車内通信部23を介して車載制御装置3へと更新プログラムを送信する。制御部20は、記憶部21に記憶されている更新プログラムを基にした導出値の導出、及び導出された導出値を比較して記憶部21に記憶されている更新プログラムの正当性の判定を行う。制御部20は、記憶部21に記憶されている更新プログラムの消去を行う。
【0033】
記憶部21は、RAM等の揮発性のメモリ素子又は、ROM、EEPROM(Electrically Erasable Programmable ROM)若しくはフラッシュメモリ等の不揮発性のメモリ素子により構成してあり、制御プログラム及び処理時に参照するデータがあらかじめ記憶されてある。記憶部21に記憶された制御プログラムは、車載更新装置2が読み取り可能な記録媒体22から読み出された制御プログラムを記憶したものであってもよい。また、図示しない通信網に接続されている図示しない外部コンピュータから制御プログラムをダウンロードし、記憶部21に記憶させたものであってもよい。詳細は後述するが、記憶部21には、導出値を導出するためのプログラム又はデータが記憶されており、プログラム提供装置S1から取得した更新プログラムが記憶される。
【0034】
車内通信部23は、CAN(登録商標)、又はEthernet(登録商標)等の通信プロトコルを用いた入出力インターフェイスであり、制御部20は、車内通信部23を介して車内LAN4に接続されている車載制御装置3又は他の中継装置等の車載機器と相互に通信する。車内通信部23は、複数個(図面上では3つ)設けられており、車内通信部23それぞれに、車内LAN4を構成する通信線が接続されている。このように車内通信部23を複数個設けることにより、車内LAN4は複数のセグメントに分けられ、各セグメントそれぞれに車載制御装置3が、当該車載制御装置3の機能(制御系機能、安全系機能、ボディ系機能)に応じて接続される。
【0035】
車載制御装置3は、制御部30、記憶部31及び車内通信部32を含む。記憶部31は、RAM等の揮発性メモリ素子又は、ROM、EEPROM若しくはフラッシュメモリ等の不揮発性のメモリ素子により構成してあり、車載制御装置3のプログラム又はデータが記憶されてある。このプログラム又はデータが、車載更新装置2から送信される更新プログラムによって更新される対象である。
【0036】
記憶部31は、第1記憶領域(第1面)311及び第2記憶領域(第2面)312を含む。記憶部31には、現状において車載制御装置3が実行(適用)しているプログラム(現バージョン)及び、現バージョンの以前に適用されていたプログラム(旧バージョン)の2つのプログラムが記憶されている。これら現バージョンのプログラムと、旧バージョンのプログラムとは、第1記憶領域311又は第2記憶領域312のいずれかの記憶領域に分かれて、記憶されている。すなわち、第1記憶領域311に現バージョンのプログラムが記憶されている場合、第2記憶領域312に旧バージョンのプログラムが記憶されている。第1記憶領域311に旧バージョンのプログラムが記憶されている場合、第2記憶領域312に現バージョンのプログラムが記憶されている。このように現バージョン及び旧バージョンの2つのプログラムを、いわゆる2面持ちとして記憶することにより、万が一現バージョンのプログラムに問題が生じた場合であっても、制御部30は、以前に適用して正常に動作していた旧バージョンのプログラムを読み込み実行する(切替える)ことで、車載制御装置3の信頼性を担保することができる。
【0037】
記憶部31には、現バージョン及び旧バージョンの2つのプログラムそれぞれのバージョンに関する情報、及び現在実行(適用)しているプログラムが記憶されている領域(動作面)に関する情報が記憶されている。すなわち、現状において第1記憶領域(第1面)311に記憶されているプログラムを実行している場合、記憶部31には、動作面は第1記憶領域(第1面)311であると記憶される。現状において第2記憶領域(第2面)312に記憶されているプログラムを実行している場合、記憶部31には、動作面は第2記憶領域(第2面)312であると記憶される。記憶部31には、プログラム(現バージョン及び旧バージョン)のバージョン情報及び動作面に関する情報が記憶される。
【0038】
制御部30は、CPU又はMPU等により構成してあり、記憶部31(動作面)に記憶されたプログラム及びデータを読み出し実行して制御処理等を行い、当該車載制御装置3を含む車載機器又はアクチュエータ等が制御される。
【0039】
車載制御装置3の制御部30は、車載更新装置2から送信される更新プログラムを、車内通信部32を介して受信し、当該更新プログラムを取得する。従って、車載制御装置3の制御部30は、プログラム提供装置S1から送信された更新プログラムを、車外通信装置1及び車載更新装置2を介して取得する。制御部30は、取得した更新プログラムを、動作面でない記憶領域(第1記憶領域311又は第2記憶領域312)に記憶する。すなわち、制御部30は、車載更新装置2から送信された更新プログラムを取得するにあたり、当該取得の準備処理として、動作面でない記憶領域(非動作面)に記憶されているプログラムを消去する。通常、動作面でない記憶領域に記憶されているプログラムは、現バージョンのプログラムの以前に実行された旧バージョンのプログラムであるため、制御部30は車載制御装置3における車載装置への制御機能を停止させることなく、当該旧バージョンのプログラムを消去し、車載更新装置2から送信さえた更新プログラムを、当該非動作面に記憶する。
【0040】
詳細は後述するが、車載更新装置2によるプログラム提供装置S1からの更新プログラムの取得、及び車載更新装置2から車載制御装置3への更新プログラムの送信は、当該更新プログラムを、例えば所定のデータサイズで分割したブロック単位で行われる。取得及び送信されるブロックそれぞれには、当該ブロックを個々に識別するためのブロックIDが付与されており、車載更新装置2の制御部20は、取得及び送信したブロックIDを記憶部21に記憶することにより、ブロックIDをチェックポイントとして用いて前回の更新プログラムの取得及び送信が中断された中断ポイントを特定することができる。車載制御装置3の制御部30が、受信したブロックIDを記憶部31に記憶してもよい。
【0041】
車載制御装置3の制御部30は、更新プログラムの受信を正常終了、すなわち分割されたすべてのブロックの受信を正常終了した後、動作面の切替えを行い、受信した更新プログラムを現バージョンのプログラムとして適用して実行する。制御部30は、更新プログラムの受信を正常終了し、動作面の切替えを正常に行った場合、プログラムの更新が完了(正常終了)したことを記憶部31に記憶し、更に車載更新装置2に送信(通知)する。
【0042】
車載制御装置3の制御部30は、更新プログラムへの切替えが失敗した場合、ロールバック処理、すなわち更新プログラムの前バージョン(旧バージョン)のプログラムが記憶されている非動作面の記憶領域を、動作面の記憶領域として切替え(ロールバック)、当該前バージョンのプログラムを実行(適用)する。制御部30は、更新プログラムへの切替えが失敗した場合、更新が失敗(異常終了)したことを記憶部31に記憶し、更に車載更新装置2に送信(通知)してもよい。
【0043】
表示装置5は、例えばカーナビゲーションのディスプレイ等のHMI(Human Machine Interface)装置である。表示装置5は、車載更新装置2の入出力I/F24とシリアルケーブル等のハーネスにより通信可能に接続されている。表示装置5には、車載更新装置2の制御部20から入出力I/F24を介して出力されたデータ又は情報が表示される。表示装置5と車載更新装置2との接続形態は入出力I/F24による接続形態に限定されず、表示装置5と車載更新装置2とは、車内LAN4を介した接続形態であってもよい。
【0044】
IGスイッチ6は、車両Cのエンジン等の原動機(図示せず)の動作状態を切替えるスイッチである。例えばユーザはIGスイッチ6をオフからオンへ切替えて車両Cを起動し、車両Cの走行を開始する。その後、車両Cの走行を終えてユーザはIGスイッチ6をオンからオフへ切り替え、車両を停止する。IGスイッチ6は、車載更新装置2の入出力I/F24とシリアルケーブル等のハーネスにより通信可能に接続されている。入出力I/F24を介して、車載更新装置2の制御部20にIGスイッチ6の切替状態(オン又はオフ)が通知される。例えば、車載更新装置2の制御部20には、入出力I/F24を介して、IGスイッチ6のオン又はオフを示す信号がIGスイッチ6から入力されている。IGスイッチ6と車載更新装置2との接続形態は入出力I/F24による接続形態に限定されず、IGスイッチ6と車載更新装置2とは、車内LAN4を介した接続形態であってもよい。
【0045】
図3は、車載更新装置2の制御部20の処理を例示するフローチャートである。図4はプログラム提供装置S1、車載更新装置2、及び車載制御装置3の間で送受信される通信信号及び更新プログラムを示すシーケンス図である。車載更新装置2の制御部20は、車両Cが起動状態(IGスイッチがオン)である場合、車外通信装置1を介してプログラム提供装置S1と定期的又は非定期的に通信し、更新すべきプログラム又はデータ、すなわち更新プログラムがプログラム提供装置S1に用意されている場合、以下の処理を行う。又は、制御部20は、車外通信装置1を介して取得したプログラム提供装置S1からの更新通知に基づいて、以下の処理を行ってもよい。制御部20は、更新通知を表示装置5に表示させ、表示装置5が備えるタッチパネル等の入力端末を介して車両Cの操作者から入力された更新の承認に基づいて、以下の処理を行ってもよい。
【0046】
車載更新装置2の制御部20は、プログラム提供装置S1から更新情報が通知されると、プログラム提供装置S1に更新プログラムの送信を要求する。制御部20は、プログラム提供装置S1から更新プログラムをブロック単位で取得(受信)し(S11)、取得した更新プログラムをブロック単位で車載制御装置3へと送信する。詳しくは、制御部20は、車外通信装置1を介して更新プログラムをブロック単位で取得し、取得した更新プログラムは記憶部21に記憶される。記憶部21に記憶された更新プログラムは、制御部20により車内LAN4を介してブロック単位で車載制御装置3へと送信される。取得する更新プログラムは、例えば共通鍵方式、又は公開鍵方式による暗号化等の秘匿化処理が施されていてもよい。暗号化された更新プログラムは記憶部21に記憶され、制御部20によって復号される。復号された更新プログラムは記憶部21に記憶され、制御部20によってブロック単位で車載制御装置3へと送信される。
【0047】
車載更新装置2の制御部20は、更新プログラムを所定のデータサイズで分割したブロック単位で車載制御装置3へと送信する。又は、制御部20は、更新プログラムに含まれるセパレータを抽出し、当該セパレータに基づいて、更新プログラムを分割しブロックとしてもよい。制御部20は、同様にして分割されたブロック単位で更新プログラムを取得する。ブロックにはブロックそれぞれを識別するためのブロックIDが付与される。制御部20は、取得及び送信したブロックのブロックIDを記憶部21に記憶する。
【0048】
車載更新装置2の制御部20は、送信したブロックが、最後のブロックか否かを判定する。制御部20は、例えば、更新プログラムを所定のデータサイズで分割してブロック化するにあたり、生成されるブロックの個数を確定する。当該確定したブロックの個数が、ブロックIDの末尾の番号となり、制御部20は、今回送信するブロックのブロックIDが末尾の番号であるか否かにより、更新プログラムの送信を完了させるにあたり最後のブロックであるか否かを判定する。
【0049】
送信したブロックが最後のブロックでない場合、車載更新装置2の制御部20は、前回送信したブロックのブロックIDの次の順番となるブロックIDのブロックを送信する。制御部20は、所定のデータサイズで分割された更新プログラムのブロックを、更新対象の車載制御装置3に順次送信する。
【0050】
車載更新装置2から送信された更新プログラムのブロックを受信した更新対象の車載制御装置3は、当該ブロックを非動作面の記憶領域(第1記憶領域311又は第2記憶領域312)に記憶する。車載制御装置3は、受信したブロックのブロックIDを記憶部31に記憶してもよい。
【0051】
ブロック単位での更新プログラムの取得及び送信を順次行っている間に、車両Cが停止した、すなわちIGスイッチがオフとなった場合(S12:YES)、当該ブロック単位の更新プログラムの取得及び送信は中断される。そして、車載更新装置2の記憶部21には、更新プログラムと最後に取得及び送信したブロックのブロックIDの情報とが残っている。
【0052】
車載更新装置2の制御部20は、記憶されたブロックIDを更新プログラムの取得及び送信のチェックポイントとして用い、該チェックポイントに基づいて更新プログラムの取得及び送信が中断された中断ポイントを導出することができる。
【0053】
更新プログラムは、複数のチェックポイント及び、当該更新プログラムのファイルの終端を示す情報を示すEOF(End Of File)が含まれていてもよい。制御部20は、EOFから当該ファイルの先頭に遡ってチェックポイントを検出し、最初に検出(確認)されたチェックポイントに基づいて中断ポイントを導出するものあってもよい。チェックポイントは、例えば所定の文字コード、又は当該ファイル内でのセグメントを分割するセパレータを用いるものであってもよい。中断ポイントの導出はチェックポイントに基づく導出に限らず、制御部20がプログラム提供装置S1と通信し、中断ポイントの導出を行ってもよい。
【0054】
車載更新装置2の制御部20は、車両Cの停止後に車載更新装置2の蓄電装置(図示せず)に蓄えられている電気を用いて、記憶部21に記憶されている更新プログラムに基づいて第1導出値を導出する(S13)。すなわち第1導出値は、更新プログラムの取得及び送信の中断前に記憶部21に記憶されている更新プログラムに基づいて導出される導出値である。導出された第1導出値は、記憶部21に記憶される。第1導出値は、例えば、ハッシュ値、又はMAC(Message Authentication Code、メッセージ認証コード)値である。ハッシュ値である第1導出値は、記憶部21に記憶されている更新プログラムに基づいて、記憶部21に記憶されているハッシュ関数を用いて導出される。MAC値である第1導出値は、記憶部21に記憶されている更新プログラムに基づいて、記憶部21に記憶されている共通鍵(共有鍵)及びMACアルゴリズムを用いて導出される。導出値の導出は制御部20による導出に限らず、車載更新装置2が制御部20と通信可能に接続された専用のプロセッサを備え、該プロセッサが導出値を導出してもよい。
【0055】
車両Cが停止状態、すなわちIGスイッチがオンでない場合(S14:NO)、車載更新装置2の制御部20は再度S14の判定を行うべくループ処理を行う。当該ループ処理を行うにあたって、制御部20は、所定時間の待機処理(スリープ)を実行してもよい。
【0056】
車両Cが再び起動状態、すなわちIGスイッチがオンとなる場合(S14:YES)、車載更新装置2の制御部20は、記憶部21に記憶されている更新プログラムに基づいて第2導出値を導出する(S15)。すなわち第2導出値は、更新プログラムの取得及び送信の中断後に記憶部21に記憶されている更新プログラムに基づいて導出される。導出された第2導出値は、記憶部21に記憶される。第2導出値は、前述の第1導出値と同じ方法で導出される導出値であり、例えば、ハッシュ値、又はMAC値である。
【0057】
車載更新装置2の制御部20は、記憶部21に記憶されている第1導出値と第2導出値とを比較し、同じ値であるかを判定する(S16)。第1導出値と第2導出値とが同一である場合、制御部20は、記憶部21に記憶されている更新プログラムが正当であると判定する。すなわち、記憶部21に記憶されている更新プログラムは改竄等により変更されていないと判定される。中断の前後における記憶部21に記憶されている更新プログラムに基づいて導出された導出値(第1導出値及び第2導出値)を比較することで、送信の再開前に記憶部21に記憶されている更新プログラムの適正性を判定できる。
【0058】
第1導出値と第2導出値とが同一である場合(S16:YES)、制御部20は、前述の中断ポイントから、更新(更新プログラムの取得及び送信)を再開する(S17)。詳しくは、制御部20は、プログラム提供装置S1へ、前回(中断前)の更新プログラムの取得において、最後に取得したブロックIDの次の順番となるブロックからの送信を要求し、ブロック単位での更新プログラムの取得を再開する。取得した更新プログラムは記憶部21に記憶される。記憶部21に記憶された更新プログラムは車載制御装置3へとブロック単位で送信される。又は、制御部20は、前回の更新プログラムの送信において、最後に送信したブロックのブロックIDの次の順番となるブロックを車載制御装置3へと送信し、車載制御装置3へのブロック単位での更新プログラムの送信を再開する。すなわち、車載制御装置3の更新を再開する。
【0059】
中断ポイントから更新を再開することにより、前回の更新プログラムの取得及び送信において既に取得及び送信しているブロックを再度取得及び送信する処理を不要とし、更新の再開から完了までに要する所要時間の短縮、及び車内LAN4におけるトラフィックが増加することを抑制できる。
【0060】
車載更新装置2の制御部20は、入出力I/F24を介して、更新再開の通知を表示装置5に表示させ、車両Cの操作者に更新再開を報知する(S18)。
【0061】
第1導出値と第2導出値とが異なる場合(S16:NO)、車載更新装置2の制御部20は、記憶部21に記憶されている更新プログラムが不正であると判定する。すなわち、記憶部21に記憶されている更新プログラムは改竄等により不正に変更されたと判定される。従って、制御部20は、正当な更新プログラムの送信のために、プログラム提供装置S1から更新プログラムを最初から取得する(S161)。詳しくは、制御部20は、プログラム提供装置S1へ、最初のブロックIDを備えるブロックからの更新プログラムの送信を要求する。制御部20は、プログラム提供装置S1からブロック単位で更新プログラムを取得し、取得した更新プログラムを記憶部21に記憶する。記憶部21に記憶されている更新プログラムは、ブロック単位で車載制御装置3へと送信される。最初から更新プログラムを取得することにより、不正に変更された更新プログラムが車載制御装置3へと送信されることを防止することができる。
【0062】
車載更新装置2の制御部20は、車両Cの停止中に更新プログラムが不正に変更されたことを入出力I/F24を介して、表示装置5に表示し、車両Cの操作者に報知する(S162)。制御部20は、更新プログラムを最初から取得することを表示装置5に表示させ、車両Cの操作者に報知してもよい。制御部20は、記憶されている更新プログラムが不正に変更されたことをプログラム提供装置S1に送信(通知)してもよい。
【0063】
送信した更新プログラムのブロックが最後のブロックである場合、車載更新装置2の制御部20は、最後のブロックを送信することにより、車載制御装置3への更新プログラムの送信を終了する(S19)。取得した更新プログラムを送信するので、最後のブロックを送信する前に、更新プログラムの取得が終了していることは言うまでもない。制御部20は当該車載制御装置3の更新が完了したことを、記憶部21に記憶する。図3においては省略しているが、更新プログラムの送信が終了する前に再び車両Cが停止状態(IGスイッチ6がオフ)になった場合、S13の処理を行う。
【0064】
車載制御装置3は、車載更新装置2から送信された最後のブロックを受信した後、自制御装置の更新が完了したことを記憶部31に記憶する。車載制御装置3は、最後のブロックを受信し、受信を完了した更新プログラムへの切替え、すなわち動作面を更新プログラムが記憶されている記憶領域に切り替えた後、更新プログラムへの切替えが完了したこと(更新完了)を車載更新装置2に送信(通知)する。車載更新装置2の制御部20は、更新対象の車載制御装置3が更新プログラムへの切替えを完了したことを、記憶部21に記憶してもよい。制御部20は、更新対象の車載制御装置3の更新完了を、プログラム提供装置S1に送信(通知)する。制御部20は、更新対象の車載制御装置3の更新完了を入出力I/F24を介して表示装置5に表示させ、車両Cの操作者に報知してもよい。
【0065】
制御部20は、更新プログラムの送信が終了した後、記憶部21に記憶されている更新プログラムを消去する(S20)。更新プログラムの消去により、記憶部21が更新プログラムによって圧迫されることを防止できる。
【0066】
更新プログラムの取得又は送信の間、車両Cが起動状態である、すなわちIGスイッチがオフでない場合(S12:NO)、制御部20は再度S12の判定を行うべくループ処理を行う。該ループ処理の間、制御部20は更新プログラムの取得及び送信を継続し、更新プログラムの送信が完了した場合、制御部20はS20の処理を行ってもよい。
【0067】
今回開示された実施形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本開示の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0068】
C 車両
S 車載更新システム
S1 プログラム提供装置(外部サーバ)
S11 記憶部
1 車外通信装置
11 車外通信部
12 入出力I/F
13 アンテナ
2 車載更新装置
20 制御部
21 記憶部
22 記録媒体
23 車内通信部
24 入出力I/F
3 車載制御装置
30 制御部
31 記憶部
311 第1記憶領域
312 第2記憶領域
32 車内通信部
4 車内LAN
5 表示装置
6 IGスイッチ
N 車外ネットワーク
図1
図2
図3
図4