[本開示が解決しようとする課題]
特許文献1の中継装置は、ダウンロードした制御プログラムを車載ECUに送信する処理において、中継装置と車載ECUとの間の送信が中断された間に当該車載ECUが交換された場合の対応に関する考慮がされていないという問題点がある。
本開示の目的は、車載ECUのプログラムを更新するにあたり、車載更新装置と車載ECUとの間の送信が中断された間に当該車載ECUが交換された場合、適切に対応することができる車載更新装置等を提供する。
[本開示の効果]
本開示の一態様によれば、車載ECUのプログラムを更新するにあたり、車載更新装置と車載ECUとの間の送信が中断された間に当該車載ECUが交換された場合、適切に対応することができる車載更新装置等を提供することができる。
[本開示の実施形態の説明]
最初に本開示の実施態様を列挙して説明する。また、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
(1)本開示の一態様に係る車載更新装置は、車外の外部サーバから送信される更新プログラムを取得し、車両に搭載される車載ECUのプログラムを更新するための処理を行う車載更新装置であって、前記車載ECUへの前記更新プログラムの送信を制御する制御部を備え、前記制御部は、前記送信が中断された後に該送信を再開する際、前記車載ECUの識別情報が、前記送信が中断される前の識別情報と異なる場合は、前記送信が中断している間に前記車載ECUは交換されたと判定し、所定の処理を実行し、前記所定の処理は、前記送信が中断された後に該送信を再開する際、前記車載ECUの識別情報に含まれる所定項目であるECU部番と、前記送信が中断される前の識別情報に含まれる所定項目であるECU部番とが、同一の場合は、前記更新プログラムの送信を最初から再開し、前記車載ECUの識別情報に含まれる所定項目であるECU部番と、前記送信が中断される前の識別情報に含まれる所定項目であるECU部番とが、同一でない場合は、前記更新プログラムの送信を中止する処理を含む。
本態様にあたっては、送信が中断された後に該送信を再開する際、車載ECUの識別情報が、送信が中断される前の識別情報と異なる場合は、送信が中断している間に前記車載ECUは交換されたと判定し所定の処理を実行するため、当該車載ECUが交換された場合、適切に対応することができる。
(2)本開示の一態様に係る車載更新装置は、前記制御部が実行する前記所定の処理は、該判定に関する情報を前記外部サーバ又は、前記車両に設けられている表示装置に送信する処理である。
本態様にあたっては、送信が中断された後に該送信を再開する際、車載ECUの識別情報が、送信が中断される前の識別情報と異なる場合は、送信が中断している間に前記車載ECUは交換されたと判定し、当該判定結果を外部サーバ又は、前記車両に設けられている表示装置に送信するため、当該判定結果を報知することができる。
(3)本開示の一態様に係る車載更新装置は、前記制御部が実行する前記所定の処理は、該判定に関する情報を記憶する処理である。
本態様にあたっては、送信が中断された後に該送信を再開する際、車載ECUの識別情報が、送信が中断される前の識別情報と異なる場合は、送信が中断している間に前記車載ECUは交換されたと判定し、当該判定結果を車載更新装置の記憶部に記憶するため、当該判定結果を保存することができる。
(4)本開示の一態様に係る車載更新装置は、前記制御部が実行する前記所定の処理は、前記更新プログラムの送信を中止する処理である。
本態様にあたっては、送信が中断された後に該送信を再開する際、車載ECUの識別情報が、送信が中断される前の識別情報と異なる場合は、送信が中断している間に前記車載ECUは交換されたと判定し、更新プログラムの送信を中止するため、交換された車載ECUによって、更新プログラムが受信されることを防止することができる。
(5)本開示の一態様に係る車載更新装置は、前記制御部は、前記送信が中断された後に該送信を再開する際、前記車載ECUの識別情報に含まれる所定項目と、前記送信が中断される前の識別情報に含まれる所定項目とが、同一の場合は、前記更新プログラムの送信を最初から再開し、前記車載ECUの識別情報に含まれる所定項目と、前記送信が中断される前の識別情報に含まれる所定項目とが、同一でない場合は、前記更新プログラムの送信を中止する。
本態様にあたっては、識別情報に含まれる所定項目の同異に基づき、更新プログラムの送信を最初から再開、又は更新プログラムの送信を中止するため、送信が中断している間に車載ECUが交換された場合に適切に対応することができる。
(6)本開示の一態様に係る車載更新装置は、前記車載ECUの識別情報に含まれる所定項目は、該車載ECUのECU部番に関する情報である。
本態様にあたっては、車載ECUの識別情報に含まれる所定項目は、該車載ECUのECU部番に関する情報とすることにより、送信が中断している間に車載ECUが交換された場合であっても、交換された車載ECUのECU部番が、送信が中断した際の車載ECUの部番と同一の場合は、更新プログラムの送信を最初から再開する。従って、送信が中断している間に車載ECUが交換された場合に更に適切に対応することができる。なお、車載更新装置は送信を最初から再開するにあたり、車載更新装置と車載ECUとの間でのプログラミングセッションの確立後、更新プログラムの送信(データ転送)を最初から再開するものであってもよい。
(7)本開示の一態様に係る車載更新装置は、前記制御部は、前記送信が中断された後に該送信を再開する際、前記車載ECUの識別情報が、前記送信が中断される前の識別情報と同一の場合、前記更新プログラムの送信を再開する。
本態様にあたっては、送信が中断された後に該送信を再開する際、前記車載ECUの識別情報が、前記送信が中断される前の識別情報と同一の場合、前記更新プログラムの送信を再開するため、車載ECUのプログラムの更新を確実に行うことができる。
(8)本開示の一態様に係る車載更新装置は、前記制御部は、前記車載ECUへの前記更新プログラムの送信状況に関する情報を記憶し、前記送信が中断された場合、前記車載ECUから前記更新プログラムの受信状況に関する情報を取得し、前記送信状況に関する情報と、取得した前記受信状況に関する情報とが整合した場合、前記送信状況に関する情報又は前記受信状況に関する情報に基づき決定される中断ポイントから、前記車載ECUへの前記更新プログラムの送信を再開し、前記送信状況に関する情報と、取得した前記受信状況に関する情報とが整合しなかった場合、前記車載ECUへの前記更新プログラムの送信を最初から再開する。
本態様にあたっては、送信状況に関する情報と取得した受信状況に関する情報とが整合した場合、送信が中断された中断ポイントから前記プログラムの車載ECUへの送信を再開するので、当該送信を効率的に再開することができる。
(9)本開示の一態様に係る更新処理プログラムは、コンピュータに、車外の外部サーバから送信される更新プログラムを取得し、前記更新プログラムを車載ECUへ送信し、前記送信が中断された後に該送信を再開する際、前記車載ECUの識別情報が、前記送信が中断される前の識別情報と異なる場合は、前記送信が中断している間に前記車載ECUは交換されたと判定し、所定の処理を実行する処理を実行させる。
本態様にあたっては、コンピュータを車載更新装置として機能させることができる。
(10)本開示の一態様に係るプログラムの更新方法は、車外の外部サーバから送信される更新プログラムを取得し、前記更新プログラムを車載ECUへ送信し、前記送信が中断された後に該送信を再開する際、前記車載ECUの識別情報が、前記送信が中断される前の識別情報と異なる場合は、前記送信が中断している間に前記車載ECUは交換されたと判定し、所定の処理を実行する。
本態様にあたっては、車載ECUのプログラムを更新するにあたり、車載更新装置と車載ECUとの間の送信が中断された間に当該車載ECUが交換された場合、適切に対応することができる。
(11)本開示の一態様に係る車載更新システムは、車両に搭載される車載更新システムであって、車外の外部サーバから送信される更新プログラムを受信する車外通信装置と、前記車外通信装置を介して前記外部サーバから送信される更新プログラムを取得する車載更新装置と、前記車載更新装置から送信される更新プログラムによって、プログラムの更新を行う車載ECUとを備え、前記車載更新装置は、前記車載ECUへの前記更新プログラムの送信を制御する制御部を含み、前記制御部は、前記送信が中断された後に該送信を再開する際、前記車載ECUの識別情報が、前記送信が中断される前の識別情報と異なる場合は、前記送信が中断している間に前記車載ECUは交換されたと判定し、所定の処理を実行する。
本態様にあたっては、車載ECUのプログラムを更新するにあたり、車載更新装置と車載ECUとの間の送信が中断された間に当該車載ECUが交換された場合、適切に対応することができる。
[本開示の実施形態の詳細]
本開示をその実施の形態を示す図面に基づいて具体的に説明する。本開示の実施形態に係る車載更新装置2を、以下に図面を参照しつつ説明する。なお、本開示はこれらの例示に限定されるものではなく、請求の範囲によって示され、請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
(実施形態1)
以下、実施の形態について図面に基づいて説明する。図1は、実施形態1に係る車載更新システムの構成を示す模式図である。図2は、車載更新装置2等の構成を示すブロック図である。車載更新システムSは、車両Cに搭載された車外通信装置1及び車載更新装置2を含み、車外ネットワークNを介して接続されたプログラム提供装置S1から取得したプログラム又はデータを、車両Cに搭載されている車載ECU3(Electronic Control Unit)に送信する。
プログラム提供装置S1は、例えばインターネット又は公衆回線網等の車外ネットワークNに接続されているサーバ等のコンピュータであり、RAM(Random Access Memory)、ROM(Read Only Memory)又はハードディスク等による記憶部S11を備え、車外の外部サーバに相当する。プログラム提供装置S1には、車載ECU3の製造メーカ等によって作成された当該車載ECU3を制御するためのプログラム又はデータが、記憶部S11(所定の記憶領域)に保存されている。当該プログラム又はデータは、更新プログラムとして、後述のごとく車両Cに送信され、車両Cに搭載されている車載ECU3のプログラム又はデータを更新するために用いられる。このように構成されたプログラム提供装置S1(外部サーバ)は、OTA(Over The Air)サーバとも称される。車両に搭載される車載ECU3は、プログラム提供装置S1から無線通信により送信された更新プログラムを取得し、当該更新プログラムを実行するプログラムとして適用することにより、自ECUが実行するプログラムを更新(リプロ)することができる。
以降、プログラムは、車載ECU3が処理を行うための制御構文等を含むプログラムコード及び、当該プログラムコードを実行するにあたり参照するデータが記載される外部ファイルを含むものとして説明する。更新プログラムの送信時において、これらプログラムコード及びデータが記載される外部ファイルは、例えば暗号化されたアーカイブファイルとして、プログラム提供装置S1から送信される。
車両Cには、車外通信装置1、車載更新装置2、表示装置5、及び種々の車載機器を制御するための複数の車載ECU3が搭載されている。車外通信装置1と車載更新装置2とは、例えばシリアルケーブル等のハーネスにより通信可能に接続されている。車載更新装置2及び車載ECU3は、CAN(Control Area Network/登録商標)又はEthernet(登録商標)等の通信プロトコルに対応した車内LAN4によって通信可能に接続されている。
車外通信装置1は、車外通信部11及び、車載更新装置2と通信するための入出力I/F(インターフェイス)12を含む。車外通信部11は、3G、LTE、4G、WiFi等の移動体通信のプロトコルを用いて無線通信をするための通信装置であり、車外通信部11に接続されたアンテナ13を介してプログラム提供装置S1とデータの送受信を行う。車外通信装置1とプログラム提供装置との通信は、例えば公衆回線網又はインターネット等の外部ネットワークを介して行われる。
入出力I/F12は、車載更新装置2と、例えばシリアル通信するための通信インターフェイスである。車外通信装置1と車載更新装置2とは、入出力I/F12及び入出力I/F12に接続されたシリアルケーブル等のハーネスを介して相互に通信する。本実施形態では、車外通信装置1は、車載更新装置2と別装置とし、入出力I/F12等によってこれら装置を通信可能に接続しているが、これに限定されない。車外通信装置1は、車載更新装置2の一構成部位として、車載更新装置2に内蔵されるものであってもよい。
車載更新装置2は、制御部20、記憶部21及び車内通信部23を含む。車載更新装置2は、車外通信装置1が無線通信によってプログラム提供装置S1から受信した更新プログラムを、車外通信装置1から取得し、車内LAN4を介して当該更新プログラムを所定の車載ECU3(更新対象の車載ECU3)に送信するように構成されている。車載更新装置2は、例えば、制御系の車載ECU3、安全系の車載ECU3及び、ボディ系の車載ECU3等の複数の系統のセグメントを統括し、これらセグメント間での車載ECU3同士の通信を中継するゲートウェイ(中継器)である。又は、車載更新装置2は、車両C全体をコントロールするボディECUの一機能部として構成されるものであってもよい。
制御部20は、CPU(Central Processing Unit)又はMPU(Micro Processing Unit)等により構成してあり、記憶部21に予め記憶された制御プログラム及びデータを読み出して実行することにより、種々の制御処理及び演算処理等を行うようにしてある。制御部20は、プログラム提供装置S1から送信された更新プログラムを、車外通信装置1を介して取得する取得部に相当する。
記憶部21は、RAM(Random Access Memory)等の揮発性のメモリ素子又は、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable ROM)若しくはフラッシュメモリ等の不揮発性のメモリ素子により構成してあり、制御プログラム及び処理時に参照するデータがあらかじめ記憶してある。記憶部21に記憶された制御プログラムは、車載更新装置2が読み取り可能な記録媒体22から読み出された制御プログラムを記憶したものであってもよい。また、図示しない通信網に接続されている図示しない外部コンピュータから制御プログラムをダウンロードし、記憶部21に記憶させたものであってもよい。更に、記憶部21(所定の記憶領域)には、車両Cに搭載される全ての車載ECU3の構成情報が記憶される。記憶部21には、プログラム提供装置S1から取得した更新プログラム、及び車載ECU3に更新プログラムを送信する際の進捗状況に関する情報が、記憶される。
車内通信部23は、CAN(Control Area Network)又はEthernet(登録商標)等の通信プロトコルを用いた入出力インターフェイスであり、制御部20は、車内通信部23を介して車内LAN4に接続されている車載ECU3又は他の中継装置等の車載機器と相互に通信する。車内通信部23は、複数個(図面上では3つ)設けられており、車内通信部23夫々に、車内LAN4を構成する通信線が接続されている。このように車内通信部23を複数個設けることにより、車内LAN4は複数個のセグメントに分け、各セグメントに車載ECUを、当該車載ECUの機能(制御系機能、安全系機能、ボディ系機能)に応じて接続する。
車載ECU3は、制御部30、記憶部31及び車内通信部32を含む。記憶部31は、RAM(Random Access Memory)等の揮発性のメモリ素子又は、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable ROM)若しくはフラッシュメモリ等の不揮発性のメモリ素子により構成してあり、車載ECU3のプログラム又はデータが記憶されている。このプログラム又はデータが、車載更新装置2から送信される更新プログラムによって更新される対象である。
記憶部31は、第1記憶領域(第1面)311及び第2記憶領域(第2面)312を含む。記憶部31には、現状において車載ECU3が実行(適用)しているプログラム(現バージョン)及び、現バージョンの以前に適用されていたプログラム(旧バージョン)の2つのプログラムが記憶されている。これら現バージョンのプログラムと、旧バージョンのプログラムとは、第1記憶領域311又は第2記憶領域312のいずれかの記憶領域に分かれて、記憶されている。すなわち、第1記憶領域311に現バージョンのプログラムが記憶されている場合、第2記憶領域312に旧バージョンのプログラムが記憶されている。第1記憶領域311に旧バージョンのプログラムが記憶されている場合、第2記憶領域312に現バージョンのプログラムが記憶されている。このように現バージョン及び旧バージョンの2つのプログラムを、いわいる2面持ちとして記憶することにより、万が一現バージョンのプログラムに問題が生じた場合であっても、制御部30は、以前に適用して正常に動作していた旧バージョンのプログラムを読み込み実行する(切替える)ことで、車載ECU3の信頼性を担保することができる。
記憶部31には、現バージョン及び旧バージョンの2つのプログラム夫々のバージョンに関する情報、及び現在実行(適用)しているプログラムが記憶されている領域(動作面)に関する情報が記憶されている。すなわち、現状において第1記憶領域(第1面)311に記憶されているプログラムを実行している場合、記憶部31には、動作面は第1記憶領域(第1面)311であると記憶される。現状において第2記憶領域(第2面)312に記憶されているプログラムを実行している場合、記憶部31には、動作面は第2記憶領域(第2面)312であると記憶される。記憶部31には、プログラム(現バージョン及び旧バージョン)のバージョン情報及び動作面に関する情報を含め、自ECUの構成情報、車載更新装置2から更新プログラムを受信する際の進捗状況に関する情報、及び過去に行われた単数又は複数回の更新履歴に関する情報が、記憶される。
制御部30は、CPU(Central Processing Unit)又はMPU(Micro Processing Unit)等により構成してあり、記憶部31(動作面)に記憶されたプログラム及びデータを読み出し実行して制御処理等を行い、当該車載ECU3を含む車載機器又はアクチュエータ等が制御される。
車載ECU3の制御部30は、車載更新装置2から送信される更新プログラムを、車内通信部32を介して受信し、当該更新プログラムを取得する。従って、車載ECU3の制御部30は、プログラム提供装置S1から送信された更新プログラムを、車外通信装置1及び車載更新装置2を介して取得する。制御部30は、取得した更新プログラムを、動作面でない記憶領域(第1記憶領域311又は第2記憶領域312)に記憶する。すなわち、制御部30は、車載更新装置2から送信された更新プログラムを取得するにあたり、当該取得の準備処理として、動作面でない記憶領域(非動作面)に記憶されているプログラムを削除する。通常、動作面でない記憶領域に記憶されているプログラムは、現バージョンのプログラムの以前に実行された旧バージョンのプログラムであるため、車載ECU3における車載装置への制御機能を停止させることなく、当該旧バージョンを削除することができる。制御部30は、動作面でない記憶領域(非動作面)に記憶されている旧バージョンのプログラムを削除し、車載更新装置2から送信された更新プログラムを、当該非動作面に記憶する。
詳細は後述するが、車載更新装置2からの更新プログラムの送信は、当該更新プログラムを、例えば所定のデータサイズで分割したブロック単位で行われる。送信されるブロック夫々には、当該ブロックを個々に識別するためのブロックIDが付与されており、車載ECU3の制御部30は、受信したブロックIDを記憶部31に記憶することにより、更新プログラムの受信に関する進捗状況を記憶することができる。
車載ECU3の制御部30は、更新プログラムの受信を正常終了、すなわち分割された全てのブロックの受信を正常終了した後、車両CのIGスイッチのオン及びオフ等の所定の動作が実行された場合、動作面の切替えを行い、受信した更新プログラムを現バージョンのプログラムとして適用して実行する。車載ECU3の制御部30は、更新プログラムの受信を正常終了した場合、又は動作面の切替えを正常に行った場合、プログラムの更新が完了(正常終了)したことを記憶部31に記憶し、更に車載更新装置2に送信(通知)するものであってもよい。
表示装置5は、例えばカーナビゲーションのディスプレイ等のHMI(Human Machine Interface)装置である。表示装置5は、車載更新装置2の入出力I/F24とシリアルケーブル等のハーネスにより通信可能に接続されている。表示装置5には、車載更新装置2の制御部20から入出力I/F24を介して出力されたデータ又は情報が表示される。表示装置5と車載更新装置2との接続形態は、入出力I/F24等による接続形態に限定されず、表示装置5と車載更新装置2とは、車内LAN4を介した接続形態であってもよい。
図3は、車載ECU3の構成情報の一態様を例示する説明図である。車載更新装置2の制御部20は、IG(イグニッション)スイッチがオンにされた場合、又は所定のタイミングにて、定常的に車両Cに搭載されている全ての車載ECU3に対し、車載ECU3の構成情報(車両構成情報)及び当該構成情報の更新履歴(車両構成情報更新履歴)を送信することを要求し、送信された構成情報及び更新履歴を取得し、記憶部21に記憶する。又は、車載更新装置2の制御部20は、車載ECU3に対し車載ECU3の構成情報及び更新履歴を送信することを要求することなく、車載ECU3夫々が自発的に送信した構成情報及び更新履歴を取得し、記憶部21に記憶するものであってもよい。上述のごとく、車載ECU3夫々の記憶部31には、自ECUの構成情報及び更新履歴が記憶されている。従って、車載更新装置2は、車載ECU3夫々に記憶されている構成情報及び更新履歴の夫々を集約し、車載ECU3夫々の構成情報及び更新履歴を記憶する。車載更新装置2は、集約して記憶した車載ECU3夫々の構成情報及び更新履歴を、プログラム提供装置S1に送信するものであってもよい。構成情報及び更新履歴をプログラム提供装置S1に送信することにより、プログラム提供装置S1の記憶部S11に、当該構成情報及び更新履歴のバックアップを行うことができる。
図3に示すごとく、車載ECU3の構成情報(車両構成情報マスターテーブル)は、例えば車載ECU3の製造番号(シリアル番号)、ECU部番(部番、型番)、Software部番、プログラムの現バージョン、旧バージョン、動作面数、動作面、MAC(Media Access Control)アドレス、IPアドレス、前回更新完了日時及びリプロステータスを含み、個々の車載ECU3において重複しないように設定された連番等によるECU-IDに関連付けられて管理される。
製造番号(シリアル番号)は、車載ECU3の製造時に付与される番号であり、生産拠点等を示すロット番号及び製造時の連番等により構成され、当該ECUを一意に特定することができるユニークな番号である。ECU部番(部番、型番)は、車載ECUの種類を特定する番号であり、例えば部品番号である。Software部番は、更新プログラムのソフトウェアの種類を特定するための番号である。
動作面数とは、異なるバージョンの更新プログラムを記憶する記憶領域の数である。すなわち、動作面数が2つの場合、2つの異なるバージョンの更新プログラムを記録することができる。動作面数1つの場合、単一のバージョンの更新プログラムのみを記憶することができる。動作面は、現状において、車載ECU3が実行(適用)しているプログラムが記憶されているいずれかの記憶領域(第1記憶領域311又は第2記憶領域312)を特定する情報である。
現バージョンは、現状において、車載ECU3が実行(適用)しているプログラムのバージョン番号であり、動作面に記憶されているプログラムのバージョン番号である。旧バージョンは、以前に車載ECU3が実行(適用)していたプログラムのバージョン番号であり、非動作面(動作面でない記憶領域)に記憶されているプログラムのバージョン番号である。
MACアドレスは、車載ECU3の車内通信部23がEthernetに対応した通信ポートである場合、データリング層に対応するアドレスである。MACアドレスは、当該車内通信部23の製造時付与される番号であり、製造者を示すベンダーコード及び製造時の連番等により構成され、当該ECUを一意に特定することができるユニークな番号である。
IPアドレスは、車内通信部23がEthernetに対応した通信ポートである場合、TCP/IPを用いた通信を行う際のネットワーク層に対応するアドレスである。
車載ECU3の構成情報は、当該車載ECU3を識別するための識別情報を含む。IPアドレスは、車内通信部23の設定に応じて任意に決定できるアドレスであるため、車載ECU3を識別するための識別情報としては、シリアル番号又はMACアドレスを用いることが望ましい。又、識別情報には、当該シリアル番号又はMACアドレスに加え、車載ECU3のECU部番(部番、型番)を含むものであってもよい。識別情報にECU部番を含ませることにより、車載ECU3の部品としての同一性に関する判定を行うことができる。すなわち、2つの構成情報を比較する際、シリアル番号又はMACアドレスは異なるが、ECU部番が同一の場合、これら構成情報を持つ車載ECU3夫々は、部品(部番、型番)としては同一であることを意味する。
前回更新完了日時は、前回に実施された更新(更新プログラムの送信)が完了した日時である。リプロステータスは、更新に関する最新の状態を示すものである。なお、これら情報は、後述の更新履歴に関する情報(車両構成情報更新履歴テーブル)との関連性を保持している。
図3の下段に示すとおり、車載更新装置2の記憶部21には、車載ECU3夫々の構成情報に加え、当該構成情報の更新履歴に関する情報が記憶されている。車載ECU3夫々の構成情報(車両構成情報マスターテーブル)と、該構成情報の更新履歴(車両構成情報更新管理テーブル)とは、例えば別テーブルにより登録又は管理されていてもよい。構成情報の更新履歴に関する情報は、履歴内容及び当該履歴内容が行われた日時を含み、これら履歴内容及び日時と、各車載ECUのECU-IDとを関連付けて登録又は管理する。履歴内容は、例えば更新プログラムを受信してから更新完了の通知(完了通知)を発信するまでの各処理(更新プログラム受信開始、更新プログラム受信完了、動作面切替え及び完了通知)を含む。又、履歴内容は、これら各処理の対象となる更新プログラムのバージョンを含めるものであってもよい。車両構成情報マスターテーブルと車両構成情報更新管理テーブルとは、関連性が保持されており、各車載ECUにおける最も新しい日時の履歴内容に応じて、構成情報におけるリプロステータスが導出されるものであってもよい。
車載ECU3の構成情報に含まれる情報は、図3に示す項目の情報に限定されない。車載ECU3がCANによって接続される場合、車載ECU3の構成情報は、当該車載ECU3がメッセージを送信する際に用いる(含める)CAN-IDを含むものであってよい。
車載ECU3の識別情報は、車載ECU3の構成情報に含まれるシリアル番号又はMACアドレスを含む。車載更新装置2の制御部20は、構成情報に含まれるシリアル番号又はMACアドレスによる車載ECU3の識別情報と、当該車載ECU3への更新プログラムの送信の進捗状況に関する情報とを関連づけて、記憶部21に記憶する。
図4は、車載更新装置2の制御部20の処理を示すフローチャートである。図5は、車載更新装置2の制御部20の処理を示すフローチャートである。図6は、車載更新装置2の制御部20の処理を示すフローチャートである。車載更新装置2の制御部20は、車両Cが起動状態(IGスイッチがオン)において、車外通信装置1を介して、定常的にプログラム提供装置S1と通信し、以下の処理を行う。
車載更新装置2の制御部20は、更新途中の車載ECU3があるかを判定する(S11)。制御部20は、記憶部21に記憶されている前回の更新プログラムの送信の進捗状況に関する情報を参照し、更新途中の車載ECU3があるかを判定する。詳細は後述するが、更新プログラムの送信の進捗状況に関する情報は、更新対象の車載ECU3を特定する識別情報(例えば、シリアル番号又はMACアドレス)と、送信した更新プログラムのブロックIDを含む。更に、更新プログラムの送信の進捗状況に関する情報は、当該車載ECU3への更新プログラムの送信が完了したか否かに関する情報を含む。制御部20は、例えば、前回送信した更新プログラムのブロックIDが、更新プログラムを送信するにあたり最後のブロックのブロックIDでない場合、又は更新プログラムの送信が完了していない車載ECU3がある場合、更新途中の車載ECU3があると判定する。制御部20は、例えば、前回送信した更新プログラムのブロックIDが、更新プログラムを送信するにあたり最後のブロックのブロックIDである場合、又は更新プログラムの送信が途中の車載ECU3がない場合、更新途中の車載ECU3がないと判定する。
更新途中の車載ECU3がある場合(S11:YES)、車載更新装置2の制御部20は、更新対象の車載ECU3の識別情報を取得する(S12)。車載更新装置2の制御部20は、更新対象の車載ECU3へ自ECUの識別情報を送信することを要求する。制御部20は、当該車載ECU3から送信された識別情報を受信し、取得する。車載ECU3から送信された識別情報は、例えば当該車載ECU3のシリアル番号又はMACアドレス、及びECU部番を含む。更に、車載ECU3から送信された識別情報は、当該車載ECU3のプログラムのバージョンに関する情報を含むものであってもよい。又は、当該車載ECU3は、記憶部31に記憶してある自ECUの構成情報の全てを車載更新装置2に送信するものであってもよい。
車載更新装置2の制御部20は、更新対象の車載ECU3から取得した識別情報は異なるかを判定する(S13)。制御部20は、更新対象の車載ECU3から取得した識別情報と、更新プログラムを送信中であるとして記憶部21に記憶している車載ECU3の識別情報とを比較し、これら識別情報夫々が同一か異なるかを判定する。同一か異なるかを判定するにあたり、制御部20は、識別情報に含まれる全ての項目を比較するものであってもよい。すなわち、例えば識別情報に所定の項目として、シリアル番号、MACアドレス及びECU部番が含まれる場合、シリアル番号、MACアドレス及びECU部番の全ての項目が同一である場合、これら識別情報夫々が一致すると判定してもよい。更新対象の車載ECU3が送信要求に応答せず識別情報を取得できなかった場合は、識別情報が一致しなかった場合に含め、制御部20は、取得した識別情報は同一ではない、すなわち異なると判定する。
識別情報は異なると判定した場合(S13:YES)、車載更新装置2の制御部20は、更新対象の車載ECU3は、更新プログラムの送信が中断している間に交換されたと判定する(S14)。制御部20は、更新対象の車載ECU3から取得した識別情報と、更新プログラムを送信中であるとして記憶している車載ECU3の識別情報とが一致しなかった場合、又は当該更新対象の車載ECU3が送信要求に応答せず識別情報を取得できなかった場合、更新プログラムの送信が中断している間に車載ECU3は交換されたと判定する。車載更新装置2の制御部20は、当該更新対象の車載ECU3が送信要求に応答せず識別情報を取得できなかった場合、更新プログラムの送信が中断している間に当該更新対象の車載ECU3は取り外されたと判定してもよい。又、制御部20は、当該更新対象の車載ECU3が送信要求に応答せず識別情報を取得できなかった場合、更新プログラムの送信を中止するものあってもよい。
車載更新装置2の制御部20は、識別情報に含まれるECU部番は、異なるかを判定する(S15)。上述のごとく、識別情報には、車載ECU3を一意に決定する特有の項目であるシリアル番号又はMACアドレス、及び車載ECU3の部品としての同一性を示すECU部番を含む。制御部20は、中断される前の識別情報及び再開する際の識別情報に含まれるECU部番夫々を比較し、これらECU部番が同一か異なるかを判定する。
ECU部番が異なる場合(S15:YES)、車載更新装置2の制御部20は、更新プログラムの送信を中止する(S16)。この場合、送信を再開する際の車載ECU3は、送信が中断される前の車載ECU3とは、シリアル番号、MACアドレス及びECU部番が異なる全く別個の車載ECU3である。従って、制御部20は、送信が中断している間に行われた車載ECU3の交換は不当な交換であると判定し、更新対象の車載ECU3への更新プログラムの送信を再開することなく、当該更新プログラムの送信を中止する。
ECU部番が異ならない場合(S15:NO)、すなわちECU部番が同一の場合、車載更新装置2の制御部20は、更新プログラムを最初から送信する(S151)。中断される前の識別情報と、再開する際の識別情報との間において、シリアル番号又はMACアドレスは異なるが、ECU部番は同一となる場合がある。このような場合、送信が中断している間に車載ECU3は交換されているが、当該交換の前後において、これら車載ECU3は、同一の型番又は部番の部品である。従って、送信が中断している間に行われた車載ECU3の交換は正当な交換であると判定し、更新対象の車載ECU3への更新プログラムを最初から送信して、当該送信を再開する。制御部20は、更新プログラムを最初から送信するにあたり、後述するS114,S115及びS116と同様にブロック単位で送信し、全ブロックを送信した後に更新完了を記憶部に21記憶するものであってもよい。
車載更新装置2の制御部20は、判定結果を送信及び記憶する(S17)。制御部20は、更新対象の車載ECU3が、更新プログラムの送信が中断された間に交換又は取り外されたとする判定結果を、車外のプログラム提供装置S1、車両Cに設けられた表示装置5又は、プログラム提供装置S1及び車両Cに設けられた表示装置5の両装置に送信し、当該交換又は取り外された旨を報知する。制御部20は、判定結果に、更新プログラムを送信中であるとして記憶部21に記憶している車載ECU3の識別情報を含めて、送信し報知するものであってもよい。又、制御部20は、判定結果にECU部番の同異に関する判定を含めるものであってもよい。又、制御部20は、更新プログラムの送信が中断された間に交換されたと判定した車載ECU3の識別情報(交換後の車載ECU3から受信した識別情報)についても、判定結果と共に送信し報知するものであってもよい。又は、車載更新装置2の制御部20は、車外通信装置1を介して、車両Cの操作者が保持するスマートホン等の携帯端末に送信し、更新対象の車載ECU3が交換又は取り外された旨を報知してもよい。制御部20は、受信した識別情報又は受信できなかった旨を含め、更新対象の車載ECU3が交換又は取り外された旨を、更新プログラムを送信中であるとした車載ECU3の構成情報と関連づけて、記憶部21に記憶する。
更新途中の車載ECU3がない場合(S11:NO)、車載更新装置2の制御部20は、更新情報及び更新プログラムを取得する(S111)。車載更新装置2の制御部20は、車外通信装置1を介してプログラム提供装置S1と通信し、更新情報の有無を確認し、更新情報があれば対応する更新プログラムを取得する。制御部20は、取得した更新情報に基づき、更新対象の車載ECU3を特定する。更新情報は、更新プログラムとは別個のデータファイルである場合に限定されない。更新情報は、更新プログラムのデータファイルに、例えばヘッダー情報として含まれるものであってもよい。
車載更新装置2の制御部20は、更新開始を記憶する(S112)。制御部20は、更新対象の車載ECU3の識別情報と関連付けて、当該車載ECU3の更新を開始すること(当該車載ECU3が更新中であること)を記憶部21に記憶する。
車載更新装置2の制御部20は、車載ECU3に更新プログラムを送信する(S113)。制御部20は、更新プログラムの送信を開始する。制御部20は、更新プログラムの送信を開始するにあたり、送信先となる車載ECU3とセッションを確立するものであってもよい。S11にて制御部20は、取得した更新情報に基づき、更新対象の車載ECU3を特定するとしたが、これに限定されない。制御部20は、例えば、更新情報に基づき生成した所定のパケット又はメッセージをマルチキャストで車両Cに搭載される全ての車載ECU3に送信する。そして、制御部20は、当該マルチキャストに対し自ECUの構成情報を含めて返信して応答した車載ECU3を更新対象の車載ECU3として特定し、当該車載ECU3の更新を開始すること(当該車載ECU3が更新中であること)を記憶部21に記憶してもよい。
車載更新装置2の制御部20は、更新プログラムをブロック単位で送信する(S114)。制御部20は、更新プログラムを所定のデータサイズで分割したブロック単位で送信する。又は、制御部20は、更新プログラムに含まれるセパレータを抽出し、当該セパレータに基づいて、更新プログラムを分割しブロックとしてもよい。ブロックには、ブロック夫々を識別するためのブロックIDが付与される。制御部20は、送信したブロックのブロックID及び送信時点を含む更新プログラムの送信の進捗状況(送信状況)に関する情報を記憶部21に記憶する。
車載更新装置2の制御部20は、今回送信したブロックが、最後のブロックか否かを判定する(S115)。制御部20は、例えば、更新プログラムを所定のデータサイズで分割してブロック化するにあたり、生成されるブロックの個数を確定する。当該確定したプロックの個数が、ブロックIDの末尾の番号となり、制御部20は、今回送信するブロックのブロックIDが末尾の番号であるか否かにより、更新プログラムの送信を完了させるにあたり最後のブロックであるか否かを判定する。
今回送信したブロックが最後のブロックでない場合(S115:NO)、車載更新装置2の制御部20は、再度S114の処理を実行すべくループ処理を行う。ループ処理により再度、ブロック単位の送信の処理(S114)を行うにあたり、制御部20は、前回送信したブロックIDの次の順番となるブロックIDを送信する。このようにループ処理を行うことにより、制御部20は、更新プログラムを所定のデータサイズで分割したブロックを、更新対象の車載ECU3に順次送信する。
車載更新装置2から送信されたブロックを受信した更新対象の車載ECU3は、当該ブロックを非動作面の記憶領域(第1記憶領域311又は第2記憶領域312)に記憶し、受信したブロックのブロックID及び受信時点を含む更新プログラムの受信の進捗状況(受信状況)に関する情報を記憶部31に記憶する。
当該ループ処理を行っている間、すなわちブロック単位の送信(S114)をループ処理(S115)にて順次行っている間に、例えば、車両Cの電源がオフ(IGスイッチがオフ)にされた場合、当該ブロック単位の送信は、中断される。そして、車載更新装置2の記憶部21には、更新プログラム及び最後の送信したブロックのブロックIDの情報が残っている。又、車載更新装置2の記憶部21には、当該車載ECU3が更新中(リプロステータスは更新中)であるとして、記憶されている。従って、これら記憶部21に記憶されている情報により、更新対象の車載ECU3への更新プログラムの送信は、途中状態(当該車載ECU3はプログラム更新中/リプロステータスは更新中)であることが示される。
今回送信したブロックが最後のブロックである場合(S115:YES)、車載更新装置2の制御部20は、更新完了を記憶部21に記憶する(S116)。車載更新装置2の制御部20は、最後のブロックを送信することにより、車載ECU3の更新プログラムの送信を終了し、当該車載ECU3の更新が完了したことを、当該車載ECU3の識別情報と関連付けて、記憶部21に記憶する。
車載ECU3は、車載更新装置2から送信された最後のブロックを受信した後、自ECUの更新が完了したことを記憶部31に記憶する。車載ECU3は、最後のブロックの受信及び受信を完了した更新プログラムへの切替え、すなわち動作面を更新プログラムが記憶されている記憶領域に切替えた後、更新プログラムへの切替えが完了したことを車載更新装置2に送信(通知)してもよい。車載更新装置2の制御部20は、更新対象の車載ECU3から更新プログラムへの切替えが完了した通知を受信した後、動作面の切替えが行われたことを含め当該車載ECU3の更新が完了したことを、当該車載ECU3の識別情報と関連付けて、記憶部21に記憶してもよい。車載更新装置2の制御部20は、車載ECU3の更新が完了ことを記憶部21に記憶した後、更新プログラムを削除してもよい。
識別情報は異ならないと判定した場合(S13:NO)、すなわち識別情報は同一であると判定した場合、車載更新装置2の制御部20は、更新対象の車載ECU3から、更新プログラムの受信状況に関する情報を取得する(S131)。制御部20は、記憶部21に記憶されている前回の更新プログラムの送信の進捗状況に関する情報を参照し、更新途中の車載ECU3の識別情報から、当該車載ECU3を特定する。制御部20は、更新途中の車載ECU3に対し、当該車載ECU3による更新プログラムの受信状況に関する情報を送信するように要求する。更新途中の車載ECU3の記憶部21には、受信したブロックID及び受信時点等の更新プログラムの受信の進捗状況(受信状況)に関する情報が記憶されており、車載ECU3の制御部30は、車内通信部32を介して更新プログラムの受信状況を車載更新装置2に送信する。車載更新装置2の制御部20は、車載ECU3から更新プログラムの受信状況を取得する。又は、車載ECU3の制御部30は、前回送信された更新プログラムの受信が完了していない場合、自発的に車載更新装置2に更新プログラムの受信状況を送信してもよい。
車載更新装置2の制御部20は、送信状況に関する情報と、受信状況に関する情報とが整合しているかを判定する(S132)。制御部20は、例えば、記憶部21に記憶している最後に送信したブロックのブロックIDと、車載ECU3から取得した当該車載ECU3が最後に受信したプロックのブロックIDとを、比較する。制御部20は、これらブロックIDが同一であるか否かによって、送信の進捗状況(送信状況)に関する情報と、受信の進捗状況(受信状況)に関する情報とが、整合しているか否かを判定する。
制御部20は、例えば、送受信したブロック夫々のブロックIDが同一の場合、送信状況に関する情報と、受信状況に関する情報とが整合していると判定する。制御部20は、例えば、送受信したブロック夫々のブロックIDが同一でない場合、又は更新対象の車載ECU3が送信要求に応答せず、更新プログラムの受信状況に関する情報を取得できなかった場合、送信状況に関する情報と、受信状況に関する情報とが整合していないと判定する。又は、車載更新装置2及び車載ECU3夫々は、送受信したブロックのブロックIDによって決定されるチェックポイントを記憶する。車載更新装置2の制御部20は、自装置に記憶されているチェックポイントと、車載ECU3に記憶されているチェックポイントとを照合して、送信状況に関する情報と、受信状況に関する情報とが整合しているか判定してもよい。このように送受信したブロック夫々のブロックIDによって、前回の更新プログラムの送受信が中断された中断ポイントを特定することができる。
整合している場合(S132:YES)、車載更新装置2の制御部20は、中断ポイントから更新プログラムの送信を再開する(S133)。制御部20は、前回の更新プログラムの送信において、最後に送信したブロックのブロックIDの次の順番となるブロックの送信を行い、更新プログラムの送信を再開する。制御部20は、更新プログラムの送信を再開するにあたり、車載ECUとの間でのプログラミングセッションを再度確立した後、当該次の順番となるブロックの送信を行うものであってもよい。当該プログラミングセッションは、例えばISO14229-1によるUDS(Unified diagnostic services)に基づくものであってもよい。中断ポイントから更新プログラムの送信を再開することにより、前回の更新プログラムの送信において既に送信しているブロックを送信する処理を不要とし、更新プログラムの再開から完了までに要する所要時間の短縮、及び車内LAN4におけるトラフィックが増加すること抑制することができる。
車載更新装置2の制御部20は、S114,S115及びS116の処理を同様に、S134,S135及びS136の処理を行う。
整合していない場合(S132:NO)、車載更新装置2の制御部20は、更新プログラムを最初から送信する(S1321)。この場合、更新プログラムの送受信が中断される前後にて、更新対象の車載ECU3は同一のものであり、送信が中断している間に、当該車載ECU3は交換されていない。しかしながら、例えば、更新プログラムの送受信の中断により発生した通信エラー等により、車載更新装置2が最後に送信したブロックIDと、車載ECU3が最後に受信したブロックIDとが、異なる場合がある。このような場合であっても、更新プログラムの送受信が中断される前後にて更新対象の車載ECU3は同一であるため、車載更新装置2の制御部20は、更新プログラムを最初、すなわち最初のブロックから送信を再開する。制御部20は、更新プログラムを最初から送信するにあたり、車載更新装置2と車載ECU3との間でのプログラミングセッションの確立後、更新プログラムの送信(データ転送)を最初から再開する。制御部20は更新プログラムをブロック単位で送信する場合、最初のブロックIDのブロックからの送信を行う。当該プログラミングセッションは、例えばISO14229-1によるUDS(Unified diagnostic services )に基づくものであってもよい。又、プログラミングセッションの確立後、車載更新装置2の制御部20は、車載ECU3に対し前回中断した送信において受信した更新プログラム(受信したブロック)を削除させる指示(通知)を行った後、更新プログラムの送信を最初から再開するものであってもよい。従って、送受信したブロック夫々のブロックIDが異なり、車載更新装置2及び車載ECU3の間で中断ポイントに乖離があった場合であっても、更新プログラムの送信を最初から再開することにより、当該更新プログラムを確実に車載ECU3に送信することができる。
車載更新装置2の制御部20は、S114,S115及びS116の処理を同様に、S1322,S1323及びS1324の処理を行う。
本実施形態において、ECU部番が異なる場合、更新プログラムの送信を中止するとしたが、これに限定されない。車載更新装置2の制御部20は、識別情報は異なると判定した場合、送信が中断されている間に更新対象の車載EUC3は交換されたと判定し、当該更新対象の車載ECUへの更新プログラムの送信を再開することなく、当該更新プログラムの送信を中止するものであってもよい。すなわち、制御部20は、ECU部番の同異を考慮することなく、識別情報夫々に含まれるシリアル番号又はMACアドレスの対比結果に基づき、これら識別情報の同異を判定し、異なる場合、車載ECU3は送信が中断している間に交換されたと判定し、更新プログラムの送信を中止してもよい。
更新対象の車載ECU3が、更新プログラムの送信が中断された間に交換又は取り外された場合、当該更新プログラムの送信を中止し、当該送信を中止する。このような交換又は取り外しは、不正に行われた場合も懸念されるところ、不正に交換された車載ECU3に対し、更新プログラムの送信は再開されないため、当該更新プログラムが不正に交換された車載ECU3に受信されることを防止することができる。又、更新対象の車載ECU3が交換又は取り外された旨が、車両Cの操作者等に報知されるので、当該操作者は適切な対応を行うことができる。
更新対象の車載ECU3が交換等は、更新プログラムが中断している間に行われたものであり、制御部20は、更新プログラムのブロック単位での送信において、各ブロックの送信時点に関する情報を、送信状況に関する情報に含めて記憶してある。従って、制御部20は、当該送信時点に関する情報と、更新プログラムを再開する時点とに基づき、更新プログラムが中断している時間帯を導出し、導出した時間帯に車載ECU3が交換等されたと特定することができる。制御部20は、当該導出した時間帯を、判定結果に含めて出力(送信)して、報知するものであってもよい。車両Cの操作者等は、車載ECU3の交換又は取り外しに関するより詳細な情報を認識することができる。
(実施形態2)
図7は、車載更新装置2の制御部20の処理を示すフローチャートである。図8は、車載更新装置2の制御部20の処理を示すフローチャートである。車載更新装置2の制御部20は、車両Cが起動状態(IGスイッチがオン)において、車外通信装置1を介して、定常的にプログラム提供装置S1と通信し、以下の処理を行う。
車載更新装置2の制御部20は、更新途中の車載ECU3があるかを判定する(S21)。制御部20は、記憶部21に記憶されている前回の更新プログラムの送信の進捗状況に関する情報を参照し、更新途中の車載ECU3があるかを判定する。詳細は後述するが、更新プログラムの送信の進捗状況に関する情報は、更新対象の車載ECU3を特定する識別情報(例えば、シリアル番号又はMACアドレス)と、送信した更新プログラムのブロックIDを含む。更に、更新プログラムの送信の進捗状況に関する情報は、当該車載ECU3への更新プログラムの送信が完了したか否かに関する情報を含む。制御部20は、例えば、前回送信した更新プログラムのブロックIDが、更新プログラムを送信するにあたり最後のブロックのブロックIDでない場合、又は更新プログラムの送信が完了していない車載ECU3がある場合、更新途中の車載ECU3があると判定する。制御部20は、例えば、前回送信した更新プログラムのブロックIDが、更新プログラムを送信するにあたり最後のブロックのブロックIDである場合、又は更新プログラムの送信が途中の車載ECU3がない場合、更新途中の車載ECU3がないと判定する。
更新途中の車載ECU3がない場合(S21:NO)、車載更新装置2の制御部20は、更新情報及び更新プログラムを取得する(S211)。車載更新装置2の制御部20は、車外通信装置1を介してプログラム提供装置S1と通信し、更新情報の有無を確認し、更新情報があれば対応する更新プログラムを取得する。制御部20は、取得した更新情報に基づき、更新対象の車載ECU3を特定する。
車載更新装置2の制御部20は、更新開始を記憶する(S212)。制御部20は、更新対処の車載ECU3の識別情報と関連付けて、当該車載ECU3の更新を開始すること(当該車載ECU3が更新中であること)を記憶部21に記憶する。
車載更新装置2の制御部20は、車載ECU3に更新プログラムを送信する(S213)。制御部20は、更新プログラムの送信を開始する。制御部20は、更新プログラムの送信を開始するにあたり、送信先となる車載ECU3とセッションを確立するものであってもよい。S21にて制御部20は、取得した更新情報に基づき、更新対象の車載ECU3を特定するとしたが、これに限定されない。制御部20は、例えば、更新情報に基づき生成した所定のパケット又はメッセージをマルチキャストで車両Cに搭載される全ての車載ECU3に送信する。そして、制御部20は、当該マルチキャストに対し自ECUの構成情報を含めて返信して応答した車載ECU3を更新対象の車載ECU3として特定し、当該車載ECU3の更新を開始すること(当該車載ECU3が更新中であること)を記憶部21に記憶してもよい。
車載更新装置2の制御部20は、更新プログラムをブロック単位で送信する(S214)。制御部20は、更新プログラムを所定のデータサイズで分割したブロック単位で送信する。又は、制御部20は、更新プログラムに含まれるセパレータを抽出し、当該セパレータに基づいて、更新プログラムを分割しブロックとしてもよい。ブロックには、ブロック夫々を識別するためのブロックIDが付与される。制御部20は、送信したブロックのブロックID及び送信時点を含む更新プログラムの送信の進捗状況(送信状況)に関する情報を記憶部21に記憶する。
車載更新装置2の制御部20は、今回送信したブロックが、最後のブロックか否かを判定する(S215)。制御部20は、例えば、更新プログラムを所定のデータサイズで分割してブロック化するにあたり、生成されるブロックの個数を確定する。当該確定したプロックの個数が、ブロックIDの末尾の番号となり、制御部20は、今回送信するブロックのブロックIDが末尾の番号であるか否かにより、更新プログラムの送信を完了させるにあたり最後のブロックであるか否かを判定する。
今回送信したブロックが最後のブロックでない場合(S215:NO)、車載更新装置2の制御部20は、再度S214の処理を実行すべくループ処理を行う。ループ処理により再度、ブロック単位の送信の処理(S214)を行うにあたり、制御部20は、前回送信したブロックIDの次の順番となるブロックIDを送信する。このようにループ処理を行うことにより、制御部20は、更新プログラムを所定のデータサイズで分割したブロックを、更新対象の車載ECU3に順次送信する。
車載更新装置2から送信されたブロックを受信した更新対象の車載ECU3は、当該ブロックを非動作面の記憶領域(第1記憶領域311又は第2記憶領域312)に記憶し、受信したブロックのブロックID及び受信時点を含む更新プログラムの受信の進捗状況(受信状況)に関する情報を記憶部31に記憶する。
当該ループ処理を行っている間、すなわちブロック単位の送信(S214)をループ処理(S215)にて順次行っている間に、例えば、車両Cの電源がオフ(IGスイッチがオフ)にされた場合、当該ブロック単位の送信は、中断される。そして、車載更新装置2の記憶部21には、更新プログラム及び最後の送信したブロックのブロックIDの情報が残っている。又、車載更新装置2の記憶部21には、当該車載ECU3が更新中(リプロステータスは更新中)であるとして、記憶されている。従って、これら記憶部21に記憶されている情報により、更新対象の車載ECU3への更新プログラムの送信は、途中状態(当該車載ECU3はプログラム更新中/リプロステータスは更新中)であることが示される。
今回送信したブロックが最後のブロックである場合(S215:YES)、車載更新装置2の制御部20は、更新完了を記憶部21に記憶する(S216)。車載更新装置2の制御部20は、最後のブロックを送信することにより、車載ECU3の更新プログラムの送信を終了し、当該車載ECU3の更新が完了したことを、当該車載ECU3の識別情報と関連付けて、記憶部21に記憶する。
車載ECU3は、車載更新装置2から送信された最後のブロックを受信した後、自ECUの更新が完了したことを記憶部31に記憶する。車載ECU3は、最後のブロックの受信及び受信を完了した更新プログラムへの切替え、すなわち動作面を更新プログラムが記憶されている記憶領域に切替えた後、更新プログラムへの切替えが完了したことを車載更新装置2に送信(通知)してもよい。車載更新装置2の制御部20は、更新対象の車載ECU3から更新プログラムへの切替えが完了した通知を受信した後、動作面の切替えが行われたことを含め当該車載ECU3の更新が完了したことを、当該車載ECU3の識別情報と関連付けて、記憶部21に記憶してもよい。車載更新装置2の制御部20は、車載ECU3の更新が完了ことを記憶部21に記憶した後、更新プログラムを削除してもよい。
更新途中の車載ECU3がある場合(S21:YES)、車載更新装置2の制御部20は、更新対象の車載ECU3から、更新プログラムの受信状況に関する情報を取得する(S22)。制御部20は、記憶部21に記憶されている前回の更新プログラムの送信の進捗状況に関する情報を参照し、更新途中の車載ECU3の識別情報から、当該車載ECU3を特定する。制御部20は、更新途中の車載ECU3に対し、当該車載ECU3による更新プログラムの受信状況に関する情報を送信するように要求する。更新途中の車載ECU3の記憶部21には、受信したブロックID及び受信時点等の更新プログラムの受信の進捗状況(受信状況)に関する情報が記憶されており、車載ECU3の制御部30は、車内通信部32を介して更新プログラムの受信状況を車載更新装置2に送信する。車載更新装置2の制御部20は、車載ECU3から更新プログラムの受信状況を取得する。又は、車載ECU3の制御部30は、前回送信された更新プログラムの受信が完了していない場合、自発的に車載更新装置2に更新プログラムの受信状況を送信してもよい。
車載更新装置2の制御部20は、送信状況に関する情報と、受信状況に関する情報とが整合しているかを判定する(S23)。制御部20は、例えば、記憶部21に記憶している最後に送信したブロックのブロックIDと、車載ECU3から取得した当該車載ECU3が最後に受信したプロックのブロックIDとを、比較する。制御部20は、これらブロックIDが同一であるか否かによって、送信の進捗状況(送信状況)に関する情報と、受信の進捗状況(受信状況)に関する情報とが、整合しているか否かを判定する。
制御部20は、例えば、送受信したブロック夫々のブロックIDが同一の場合、送信状況に関する情報と、受信状況に関する情報とが整合していると判定する。制御部20は、例えば、送受信したブロック夫々のブロックIDが同一でない場合、又は更新対象の車載ECU3が送信要求に応答せず、更新プログラムの受信状況に関する情報を取得できなかった場合、送信状況に関する情報と、受信状況に関する情報とが整合していないと判定する。又は、車載更新装置2及び車載ECU3夫々は、送受信したブロックのブロックIDによって決定されるチェックポイントを記憶する。車載更新装置2の制御部20は、自装置に記憶されているチェックポイントと、車載ECU3に記憶されているチェックポイントとを照合して、送信状況に関する情報と、受信状況に関する情報とが整合しているか判定してもよい。このように送受信したブロック夫々のブロックIDによって、前回の更新プログラムの送受信が中断された中断ポイントを特定することができる。
整合している場合(S23:YES)、車載更新装置2の制御部20は、中断ポイントから更新プログラムの送信を再開する(S24)。制御部20は、前回の更新プログラムの送信において、最後に送信したブロックのブロックIDの次の順番となるブロックの送信を行い、更新プログラムの送信を再開する。制御部20は、更新プログラムの送信を再開するにあたり、車載ECUとの間でのプログラミングセッションを再度確立した後、当該次の順番となるブロックの送信を行うものであってもよい。当該プログラミングセッションは、例えばISO14229-1によるUDS(Unified diagnostic services)に基づくものであってもよい。中断ポイントから更新プログラムの送信を再開することにより、前回の更新プログラムの送信において既に送信しているブロックを送信する処理を不要とし、更新プログラムの再開から完了までに要する所要時間の短縮、及び車内LAN4におけるトラフィックが増加することを抑制することができる。
車載更新装置2の制御部20は、S214,S215及びS216の処理を同様に、S25,S26及びS27の処理を行う。
整合していない場合(S23:NO)、車載更新装置2の制御部20は、更新対象の車載ECU3の識別情報を取得する(S231)。車載更新装置2の制御部20は、更新対象の車載ECU3へ自ECUの識別情報を送信することを要求する。制御部20は、当該車載ECU3から送信された識別情報を受信し、取得する。車載ECU3から送信された識別情報は、例えば当該車載ECU3のシリアル番号又はMACアドレスを含む。更に、車載ECU3から送信された識別情報は、当該車載ECU3のプログラムのバージョンに関する情報を含むものであってもよい。又は、当該車載ECU3は、記憶部31に記憶してある自ECUの構成情報の全てを車載更新装置2に送信するものであってもよい。
車載更新装置2の制御部20は、更新対象の車載ECU3から取得した識別情報は正当か否かを判定する(S232)。制御部20は、更新対象の車載ECU3から取得した識別情報と、更新プログラムを送信中であるとして記憶部21に記憶している車載ECU3の識別情報とを比較し、一致した場合、取得した識別情報は正当であると判定する。一致しなかった場合、制御部20は、取得した識別情報は正当でない、すなわち不当であると判定する。なお、更新対象の車載ECU3が送信要求に応答せず識別情報を取得できなかった場合は、識別情報が一致しなかった場合に含め、制御部20は、取得した識別情報は正当でない、すなわち不当であると判定する。
制御部20は、記憶部21に記憶している車載ECU3の識別情報を比較するとしたが、これに限定されない。車両Cに搭載されている車載ECU3の構成情報をプログラム提供装置S1に記憶させておき、制御部20は、プログラム提供装置S1から送信された車載ECU3の構成情報に基づき、更新プログラムを送信中の車載ECU3の識別情報を導出してもよい。車載ECU3の構成情報をプログラム提供装置S1に記憶させることにより、車載更新装置2の記憶部21の空き容量を確保することができる。又、車載更新装置2が交換された場合であっても当該交換の影響を低減することができる。
正当であると判定した場合(S232:YES)、車載更新装置2の制御部20は、更新プログラムを最初から送信する(S233)。正当であると判定した場合は、更新プログラムの送受信が中断される前後にて、更新対象の車載ECU3は同一のものである。しかしながら、例えば、更新プログラムの送受信の中断により発生した通信エラー等により、車載更新装置2が最後に送信したブロックIDと、車載ECU3が最後に受信したブロックIDとが、異なる場合がある。このような場合であっても、更新プログラムの送受信が中断される前後にて更新対象の車載ECU3は同一であるため、車載更新装置2の制御部20は、更新プログラムを最初、すなわち最初のブロックから送信を再開する。制御部20は、更新プログラムを最初から送信するにあたり、車載更新装置2と車載ECU3との間でのプログラミングセッションの確立後、更新プログラムの送信(データ転送)を最初から再開する。制御部20は更新プログラムをブロック単位で送信する場合、最初のブロックIDのブロックからの送信を行う。当該プログラミングセッションは、例えばISO14229-1によるUDS(Unified diagnostic services )に基づくものであってもよい。又、プログラミングセッションの確立後、車載更新装置2の制御部20は、車載ECU3に対し前回中断した送信において受信した更新プログラム(受信したブロック)を削除させる指示(通知)を行った後、更新プログラムの送信を最初から再開するものであってもよい。従って、送受信したブロック夫々のブロックIDが異なり、車載更新装置2及び車載ECU3の間で中断ポイントに乖離があった場合であっても、更新プログラムの送信を最初から再開することにより、当該更新プログラムを確実に車載ECU3に送信することができる。
車載更新装置2の制御部20は、S214,S215及びS216の処理を同様に、S234,S235及びS236の処理を行う。
正当でない(不当である)と判定した場合(S232:NO)、車載更新装置2の制御部20は、車載ECU3は交換されたと判定する(S2321)。制御部20は、更新対象の車載ECU3から取得した識別情報と、更新プログラムを送信中であるとして記憶している車載ECU3の識別情報とが一致しなかった場合、又は当該更新対象の車載ECU3が送信要求に応答せず識別情報を取得できなかった場合、更新プログラムの送信が中断している間に車載ECU3は交換されたと判定する。車載更新装置2の制御部20は、当該更新対象の車載ECU3が送信要求に応答せず識別情報を取得できなかった場合、更新プログラムの送信が中断している間に当該更新対象の車載ECU3は取り外されたと判定してもよい。制御部20は、車載ECU3は交換又は取り外されたと判定し、更新プログラムの送信を再開することなく、当該送信を中止する。
更新プログラムの送信の中断は、例えば車両Cの電源がオフ(IGスイッチがオフ)によって発生する。従って、更新プログラムの送信途中にて車両Cの電源がオフにされ、当該更新プログラムの送信が中断された間に、更新対象の車載ECU3が交換又は取り外された場合であっても、当該交換又は取り外された事態を確実に検知することができる。
車載更新装置2の制御部20は、判定結果を送信及び記憶する(S2322)。制御部20は、更新対象の車載ECU3が、更新プログラムの送信が中断された間に交換又は取り外されたとする判定結果を、車外のプログラム提供装置S1、車両Cに設けられた表示装置5又は、プログラム提供装置S1及び車両Cに設けられた表示装置5の両装置に出力(送信)し、当該交換又は取り外された旨を報知する。制御部20は、判定結果に、更新プログラムを送信中であるとして記憶部21に記憶している車載ECU3の識別情報を含めて、出力(送信)し報知するものであってもよい。又、制御部20は、更新プログラムの送信が中断された間に交換されたと判定した車載ECU3の識別情報(交換後の車載ECU3から受信した識別情報)についても、判定結果と共に出力(送信)し報知するものであってもよい。又は、車載更新装置2の制御部20は、車外通信装置1を介して、車両Cの操作者が保持するスマートホン等の携帯端末に送信し、更新対象の車載ECU3が交換又は取り外された旨を報知してもよい。制御部20は、受信した識別情報又は受信できなかった旨を含め、更新対象の車載ECU3が交換又は取り外された旨を、更新プログラムを送信中であるとした車載ECU3の構成情報と関連づけて、記憶部21に記憶する。
本実施形態において、車載更新装置2は、複数の車載ECU3の系統のセグメントを統括するゲートウェイ(中継器)であるとしたが、これに限定されない。車載更新装置2は、特定のセグメントに接続され、ゲートウェイとは別個の専用装置であってもよい。
本実施形態において、車載更新装置2の制御部20が、車載EUCの構成情報の集約、送受信の状況に関する情報の整合性判定、及び更新対象の車載ECU3の識別情報の正当性判定を行うとしたが、これに限定されない。構成情報の集約、送受信の状況に関する情報の整合性判定、及び更新対象の車載ECU3の識別情報の正当性判定を行う夫々の機能部は、ゲートウェイ及びボディECU等の複数の車載機器に分散して構成され、相互に通信して連携又は協働することによって、機能するものであってもよい。
(実施形態3)
図9は、実施形態3に係る車載ECU3の構成を例示するブロック図である。実施形態3に係る車載ECU3は、制御部30及び記憶部31から成る複数のマイコンを含むものであり、車載更新装置2の制御部20は、このような複数のマイコンを含む車載ECU3に対応した構成情報(車両構成情報)及び当該構成情報の更新履歴(車両構成情報更新履歴)を、当該車載ECU3から取得し、記憶部21に記憶する。
車載ECU3は、実施形態1と同様に制御部30、記憶部31及び車内通信部32を含む。制御部30、記憶部31及び車内通信部32の個々の構成は、実施形態1と同様である。
車載ECU3は、制御部30及び記憶部31から成るマイコン又は基板回路を複数(図面上、2つ)含み、各マイコン等における記憶部31夫々には、異なるプログラムが記憶されている。車載ECU3の制御部30夫々は、自部と同じマイコン等に配置されている記憶部21に記憶されているプログラムを実行することにより、異なるプログラムによる別個の処理を並行して行うように構成されている。このように複数マイコンを含む車載ECU3の車両構成情報は、同一の製造番号(シリアル番号)及びECU部番(部番、型番)に対し、当該マイコンの個数に応じた複数のSoftware部番、プログラムの現バージョン、旧バージョンを有するものとなる。
図10は、車載ECU3の構成情報の一態様を例示する説明図である。車載更新装置2の記憶部21には、実施形態1と同様に車両Cに搭載される全ての車載ECU3の構成情報が記憶される。本実施形態における車載ECU3の構成情報(車両構成情報マスターテーブル)は、実施形態1と同様の管理項目(フィールド)を含む。車載更新装置2の制御部20は、複数のマイコンを含む車載ECU3から車両構成情報を取得した場合、例えば車載ECU3が含むマイコンの個数に応じた枝番をECU-IDに付与(001-1、001-2、001-n)することにより、単一の車載ECU3に含まれる個々のマイコンの記憶部21に記憶されるプログラムを別レコードとして記憶し、管理するものであってもよい。図10に示すごとく、本実施形態では、このような枝番付きECU-IDを、例えば、ECU-IDの本番号(001)と、枝番号(1,2,n)とを「-」にて接続する番号形態としている。上述のとおり、複数マイコンを含む車載ECU3の車両構成情報は、同一の製造番号(シリアル番号)及びECU部番(部番、型番)に対し、当該マイコンの個数に応じた複数のSoftware部番等を含む。車載更新装置2の制御部20は、同一の製造番号(シリアル番号)及びECU部番(部番、型番)に対応した同じECU-IDに枝番を付与した枝番付きECU-IDを発番し、当該枝番付きECU-IDをユニークな番号として、マイコン夫々にて実行されるプログラムのSoftware部番、プログラムの現バージョン、旧バージョン、動作面数、動作面を車両構成情報マスターテーブルに登録するものであってもよい。この場合、本番号が同一の枝番付きECU-ID夫々に関連付けられて登録される製造番号(シリアル番号)及びECU部番(部番、型番)は、同じものとなる。
車載更新装置2の制御部20は、実施形態1と同様に、更新対象の車載ECU3から取得した識別情報が異なるかを判定する処理(S13)又は、識別情報に含まれるECU部番が異なるかを判定する処理(S15)を行う際、車載ECU3が含むマイコンの個数に応じた枝番付きECU-IDに基づき、これら判定処理を行う。
このように車載ECU3が含むマイコンの個数に応じた枝番付きECU-IDにより、同一の製造番号(シリアル番号)及びECU部番(部番、型番)であって、複数の異なるプログラムのSoftware部番、プログラムの現バージョン等を含む車両構成情報を有する車載ECU3(複数のマイコンを含む車載ECU3)に対応することができる。すなわち、当該複数のマイコンを含む車載ECU3のいずれかのマイコンのみが、更新プログラムの送信が中断された間に交換又は取り外された場合であっても、当該交換等を検知し、実施形態1と同様に適切に対応することができる。
本実施形態にて、枝番付きECU-IDを、ECU-IDのフィールドに格納するとしたが、これに限定されない。例えば、車両構成情報マスターテーブルにおいて、ECU-IDの本番号用フィールドと、枝番号用フィールドとを別個のフィールドとして設定し、本番号用フィールドにECU-IDの本番号(001)を格納し、枝番号用フィールドに枝番号(1,2,n)を格納するものであってもよい。
本実施形態にて、複数マイコンを含む車載ECU3の車両構成情報は、枝番付きECU-IDを用いて記憶及び管理するとしたが、当該態様は一例示であり、これに限定されない。車載更新装置2の制御部20は、複数のマイコンを含む車載ECU3から車両構成情報を取得した場合、実施形態1と同様に単一のECU-IDをユニークキーとして、マイコン夫々にて実行されるプログラム夫々を、同一レコードのフィールドに格納して記憶するものであってもよい。すなわち、車載更新装置2の制御部20は、複数のマイコンを含む車載ECU3から車両構成情報に含まれるプログラム夫々のSoftware部番等の夫々を文字列結合し、文字列結合した値を、ECU-IDのレコードにおけるSoftware部番のフィールドに格納するものであってもよい。このようにSoftware部番等の夫々を文字列結合して管理することにより、複数のマイコンを含む車載ECU3のいずれかのマイコンが不正に交換された場合であっても、当該交換等を検知し、実施形態1と同様に適切に対応することができる。
今回開示された実施形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、請求の範囲によって示され、請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。