以下、図面を参照し、本発明のソフトウェア更新装置、サーバ装置、ソフトウェア更新方法、およびプログラムの実施形態について説明する。なお、以下では、ソフトウェア更新装置が、車両システムの一部として車両に搭載されている例について説明する。車両は、例えば、二輪や三輪、四輪等の車両であり、その駆動源は、ディーゼルエンジンやガソリンエンジン等の内燃機関、電動機、或いはこれらの組み合わせである。電動機は、内燃機関に連結された発電機による発電電力、或いは二次電池や燃料電池の放電電力を使用して動作する。なお、ソフトウェア装置は、車両以外の移動体に搭載されてもよい。
<第1実施形態>
図1は、第1実施形態のソフトウェア更新装置100を含むソフトウェア更新システム1の構成図である。ソフトウェア更新システム1は、例えば、一以上の車両M-1~M-n(nは1以上の自然数)に搭載されたソフトウェア更新装置100-1~100-nと、サーバ装置200とを備える。車両Mの符号の末尾のハイフン以下の数字は、車両を区別するための識別子であるものとする。いずれの車両であるかを区別しない場合、単に車両Mと称する場合がある。また、他の構成要素についても同様であるものとする。ソフトウェア更新装置100と、サーバ装置200とは、ネットワークNWを介して互いに通信可能である。ネットワークNWは、例えば、セルラー網や、Wi-Fi網、Bluetooth(登録商標)、インターネット、WAN(Wide Area Network)、LAN、公衆回線、プロバイダ装置、専用回線、無線基地局等を含む。また、これらの構成要素は、それぞれネットワークNWを介さずに、直接、無線通信を行ってもよい。サーバ装置200は、「外部装置」の一例である。
ソフトウェア更新装置100は、サーバ装置200から更新用ソフトウェアをダウンロードし、ダウンロードしたソフトウェアに基づいて、車両Mに搭載された機器のうち少なくとも一部の機器を制御するソフトウェアを更新する。サーバ装置200は、ソフトウェア更新装置100で管理されるソフトウェアのバージョン情報(更新情報の一例)を所定周期で取得し、取得したバージョン情報に基づいて、最新のソフトウェアでない場合に、ソフトウェア更新装置100に更新用ソフトウェアをダウンロードさせて、ソフトウェアを更新させる。また、サーバ装置200は、ソフトウェアが更新された場合に、対象のソフトウェアがインストールされている車両を抽出し、抽出した車両に搭載されたソフトウェア更新装置100に更新用ソフトウェアの実行を指示してもよい。以下、ソフトウェア更新装置100およびサーバ装置200の機能について具体的に説明する。
図2は、第1実施形態のソフトウェア更新装置100を含む車両システム2の構成図である。車両システム2は、例えば、車載装置10と、表示部80と、操作部90と、ソフトウェア更新装置100とを備える。車載装置10は、例えば、駆動制御装置20と、運転制御装置30と、バッテリ管理装置40と、ナビゲーションECU(Electronic Control Unit)50とを備える。
駆動制御装置20は、車両Mに駆動力等を与えて車両Mを走行させるための装置である。駆動制御装置20は、例えば、車両Mが走行するための走行駆動力(トルク)を駆動輪に出力する走行駆動力出力装置と、所定の制動操作に応じたブレーキトルクを各車輪に出力させるブレーキ装置と、転舵輪の向きを変更させるステアリング装置とを含む。また、駆動制御装置20は、ECUを中心として構成される。上述の例では、走行駆動力出力装置用ECU(例えば、エンジンECU)、ブレーキ装置用ECU(例えば、ブレーキECU)、ステアリング装置用ECU(例えば、ステアリングECU)が構成されてもよい。ECUは、「機器制御部」の一例である。ECUは、例えば、プロセッサ、記憶部(内部メモリ、図2の例では記憶部22)、および外部通信インターフェース等が、バスで接続されたものである。また、ECUには、ソフトウェアが組み込まれており、ソフトウェアを実行することで、対応する機器の少なくとも一部の制御が実行される。ソフトウェアは、少なくとも一以上のプログラムモジュールを含む。プログラムモジュールとは、例えば、一以上のプログラムを含み、ソフトウェアによって実現できる機能のうち部分的な機能を実行するものである。ソフトウェアは、例えば、更新制御部120の制御によってモジュール単位の更新が可能である。以下では、更新用ソフトウェアをOTA(Over The Air)等の無線通信により外部装置(例えば、サーバ装置200)から受信して機器のソフトウェアを更新する一連の処理を「OTAによる更新処理」と称する。また、更新用ソフトウェアをUSB(Universal Serial Bus)ケーブル等を用いた無線通信により外部装置(例えば、ディーラー等に存在する車両Mのメンテナンス等を行う作業者の端末装置TD)から受信してハードウェアやソフトウェアを更新する一連の処理を「リプログラミングによる更新処理」と称する場合がある。記憶部22には、上述したECUに組み込まれたソフトウェアやECUに関する構成情報が記憶される。構成情報には、例えば、機器識別情報(以下、ハードウェア識別情報と称する)、ソフトウェア識別情報等が含まれる。ハードウェア識別情報には、例えば、機器の部品番号(ハードウェア部番)、ユニークID(シリアルナンバー)等が含まれる。ソフトウェア識別情報には、ソフトウェアのモジュールごとの識別情報(ソフトウェア部番)、バージョン情報等が含まれる。ハードウェア部番やソフトウェア部番には、例えば、機能種別、構成種別、部品類別、バリエーション情報、その他の補足情報(例えば、メーカー別番号)等が含まれてもよい。
運転制御装置30は、例えば、車両Mの自動運転(自律運転)制御や運転支援制御等を行う。自動運転制御とは、例えば、車両Mの乗員による運転操作に依らずに、車両Mの操舵または速度のうち一方または双方を制御することである。また、運転支援制御は、例えば、ACC(Adaptive Cruise Control System)やLKAS(Lane Keeping Assistance System)、CMBS(Collision Mitigation Brake System)等の乗員の運転操作を支援する運転制御である。運転制御装置30は、車両Mの挙動や乗員からの制御指示に対応する運転制御を実行する。また、運転制御装置30は、駆動制御装置20と同様にECUを中心として構成される。運転制御装置30の記憶部32には、ECUに組み込まれるソフトウェアや構成情報が記憶される。
バッテリ管理装置40は、車両Mに搭載されたバッテリ(不図示)のエネルギー残量や充放電等のバッテリ状態を管理する。バッテリは、例えば、車載装置10や表示部80、操作部90、ソフトウェア更新装置100、その他の車両M内の電気機器等に電力を供給する。ソフトウェア等の更新処理の実行時に用いられる電源は、主にバッテリから更新対象のECUに供給される。バッテリ管理装置40は、充電コネクタ等を介して外部の充電設備から供給される電力をバッテリに蓄える。また、バッテリ管理装置40は、バッテリの端子電圧を測定し、測定した端子電圧の大きさに基づいてエネルギー残量を取得する。また、バッテリ管理装置40は、例えば、電流検出抵抗を使って充電時に蓄えられた電流量を積算しておき、放電時に出力された電流量を求めることでエネルギー残量を取得してもよく、バッテリの放電特性や温度特性等のデータベースを予め記憶部52等に記憶しておき、計測した電圧値や電流値と、データベースとに基づいてエネルギー残量を取得してもよい。バッテリ管理装置40は、上述したエネルギー残量に代えて充電率(SOC;State Of Charge)を取得してもよい。また、バッテリ管理装置40は、ECUを中心として構成される。バッテリ管理装置40の記憶部42には、ECUに組み込まれるソフトウェアや構成情報等が記憶される。
ナビゲーションECU50は、車両Mに搭載されたナビゲーション装置(不図示)を制御する。ナビゲーション装置は、例えば、GNSS(Global Navigation Satellite System)受信機と、ナビHMI(Human Machine Interface)と、経路決定部とを備える。GNSS受信機は、GNSS衛星から受信した信号に基づいて、車両Mの位置を特定する。ナビHMIは、ディスプレイ、スピーカ、タッチパネル、キー等を含む。ナビHMIは、画像や音声等を用いて乗員に目的地等を設定させたり、目的地までの走行経路を乗員に案内する。経路決定部は、例えば、GNSS受信機により特定された車両Mの位置(或いは入力された任意の位置)から、ナビHMIを用いて乗員により入力された目的地までの経路(以下、地図上経路)を、地図情報等を参照して決定する。ナビゲーションECUは、地図上経路に基づいて、ナビHMIや表示部80による地図画像表示やスピーカ(不図示)による音声出力によって、経路案内等を行う。ナビゲーションECU50の記憶部52には、ECUに組み込まれるソフトウェアや構成情報等が記憶される。
また、車載装置10に含まれるECUには、例えば、オーディオ装置、キーレスエントリシステム、サスペンションシステム、エアバッグ装置等のECUが含まれてよい。また、上述したECUの記憶部(例えば、上述した記憶部22、32、42、および52)は、「第1記憶部」の一例である。記憶部22、32、42、および52のうち何れかの記憶部(特定記憶部)には、車両Mを識別するための車両識別情報が記憶される。特定記憶部は、車両Mの製造時または出荷時に設定されてもよく、その後、管理者等により設定されてもよい。以下では、車両識別情報の一例として、VIN情報を用いるものとする。VIN情報は、車両の製造時または出荷時等に第1記憶部に記憶される。また、以下では、VIN情報は、駆動制御装置20(例えば、エンジンECU)の記憶部22に記憶されているものとする。
表示部80は、例えば、LCD(Liquid Crystal Display)や有機EL(Electro Luminescence)ディスプレイ等の表示装置である。表示部80は、例えば、表示制御部130により生成された画像を表示する。表示部80は、例えば、タッチパネル装置として、乗員からの操作内容を受け付ける機能を備えていてもよい。また、表示部80は、ナビHMIと一体に構成されてもよい。
操作部90は、車両Mの乗員による入力操作を受け付ける。例えば、操作部90は、タッチパネル、スイッチ、キーなどを含む。操作部90のタッチパネルは、表示部80と一体に構成されてよい。
ソフトウェア更新装置100は、例えば、通信部110と、更新制御部120と、表示制御部130と、記憶部140とを備える。これらの構成要素は、例えば、CPU(Central Processing Unit)等のハードウェアプロセッサがプログラム(ソフトウェア)を実行することにより実現される。また、これらの構成要素のうち一部または全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)、GPU(Graphics Processing Unit)等のハードウェア(回路部;circuitryを含む)によって実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。プログラムは、予め記憶部140に格納されていてもよいし、DVDやCD-ROM等の着脱可能な記憶媒体に格納されており、記憶媒体がドライブ装置に装着されることで記憶部140にインストールされてもよい。記憶部140は、「第2記憶部」の一例である。第2記憶部は、第1記憶部とは異なるものであり、ECUとは異なる構成部(言い換えると、ソフトウェア更新による初期化または書き換え等の影響を受けない領域)に設けられる。
記憶部140は、例えば、HDD(Hard Disk Drive)、フラッシュメモリ、EEPROM(Electrically Erasable Programmable Read Only Memory)、ROM(Read Only Memory)、またはRAM(Random Access Memory)等により実現される。記憶部140には、例えば、機器管理情報142、退避VIN情報144、プロセッサによって読み出されて実行されるプログラム、その他各種情報等が格納される。機器管理情報142には、例えば、車載装置10に含まれる各機器に関する情報(例えば、種類や名称、機器の数)が含まれる。また、機器管理情報142には、各通信部(第1通信部112、第2通信部114)に対応付けられた更新状態の問い合わせが可能な構成情報に関する情報が含まれてよい。退避VIN情報144は、例えば、車載装置10に含まれる各機器のECUに組み込まれたソフトウェアを更新する場合に、ECUの記憶部から一時的に退避させるVIN情報である。
通信部110は、所定の通信手段(通信方式)により外部装置と通信を行う。通信部110は、例えば、第1通信部112と、第2通信部114とを備える。第1通信部112は、例えば、セルラー網やWi-Fi網、Bluetooth、DSRC(Dedicated Short Range Communication)等を利用して、サーバ装置200等の外部装置と通信する。第1通信部112は、例えば、TCU(Telematics control unit)であってもよい。第1通信部112は、例えば、OTA等の無線通信によりサーバ装置200と通信を行い、対象機器のECUに組み込まれているソフトウェアの更新を行う(OTAによる更新を実行する)ための更新用ソフトウェアを受信する。
第2通信部114は、例えば、無線通信以外の通信手段により外部装置と通信を行う。例えば、第2通信部114は、USBケーブル等を用いた有線接続によりディーラーの作業者等が使用する端末装置TDと通信することで、特定の端末装置TDからリプログラミングによる更新を行うための更新用ソフトウェアを受信する。なお、第2通信部114は、特定の端末または作業者との通信しか行わないように端末装置TDや作業者の識別情報等による認証を行ってもよい。なお、第2通信部114は、端末装置TDに代えて、USBメモリ等の機器と直接接続し、メモリ内に記憶された更新用ソフトウェア等のデータを取得してもよい。
更新制御部120は、所定のタイミングで、機器管理情報142に管理される車載装置10の各機器から構成情報を取得し、取得した構成情報からハードウェアおよびソフトウェアの更新状態を問い合わせるための問い合わせ情報を生成する。また、問い合わせ情報には、例えば、車両Mの車種情報等が含まれてもよい。
ここで、車載装置10内のECUの数が多い場合に、ECUごとに更新状態の問い合わせを行うと、サーバ装置200との通信回数や更新処理数が膨大になるため、ソフトウェア更新装置100やネットワークNWの負荷が増大する可能性がある。そのため、更新制御部120は、更新状態の問い合わせを行う場合には、車載装置10に含まれる複数のECUの構成情報を用いて問い合わせ情報を生成する。例えば、更新制御部120は、車載装置10の各機器の記憶部から取得した各機器の構成情報のうち、ソフトウェア識別情報を取得し、取得したソフトウェア識別情報を所定の順序で並べて問い合わせ情報を生成する。所定の順序とは、例えば、部番等の所定の番号や名称等でソートした順序でもよく、管理者等により予め決定された順序でもよい。また、更新制御部120は、ソフトウェア識別情報のうち、バージョン部番のみを所定の順序で並べて問い合わせ情報を生成してもよい。更に、更新制御部120は、各機器の構成情報のうち、ハードウェア識別情報を所定の順序で並べて問い合わせ情報を生成してもよい。また、更新制御部120は、ソフトウェア識別情報およびハードウェア識別情報のうち一部または全部を組み合わせて問い合わせ情報を生成してもよい。これにより、各機器から得られる複数の構成情報に対する更新状態の問い合わせを纏めて行うことができるため、処理負荷やネットワーク負荷を軽減することができる。
また、更新制御部120は、ECUごとに取得した構成情報を用いて問い合わせ情報を生成する場合に、所定のデータ長未満となるデータ列となるように、所定関数または変換テーブル等を用いたデータ変換処理を行ってもよい。所定のデータ長は、ECUごとに取得した構成情報を単に並べたときのデータ長よりも短いデータ長である。また、所定のデータ長は、固定長でもよく、通信環境やソフトウェア更新装置100の現状の処理負荷等に応じた可変長でもよい。所定関数とは、例えば、ハッシュ関数である。更新制御部120は、ハッシュ関数にECUごとに取得した構成情報を所定の順序で並べたデータ列を入力してハッシュ演算を行うことで、所定のデータ長未満のハッシュ値を生成し、生成したハッシュ値を含む問い合わせ情報をサーバ装置200に送信する。ハッシュ値を用いることでデータ量が削減されるため、更新制御部120は、ハッシュ値を生成する場合には、各機器から得られる全ての構成情報を用いてハッシュ値を生成する。これにより、全ての機器の更新状態の問い合わせを一括で行うことができるため、処理負荷やネットワーク負荷を更に軽減することができる。また、ハッシュ値を用いることで、構成情報をそのまま送信する場合と比べてデータ漏洩時におけるセキュリティを強化することができる。
また、更新制御部120は、問い合わせ情報を送信した後、サーバ装置200から構成情報の更新があることを示す情報(以下、更新情報)を受信した場合、表示制御部130に更新情報に関する画像を生成させ、生成させた画像を表示部80に表示させて、車両Mの乗員に通知を行う。また、更新制御部120は、問い合わせ情報の送信せずに、サーバ装置200から更新情報を受信した場合に、表示制御部130に更新情報に関する画像を生成させ、生成指せた画像を表示部80に表示させてもよい。また、更新制御部120は、操作部90等から車両Mの乗員から更新情報に対応する構成情報の更新指示を受け付けた場合、更新対象のECUに組み込まれるソフトウェアに対してOTAによる更新制御を行う。
OTAによる更新制御を実行する場合、更新制御部120は、サーバ装置200に更新用ソフトウェアの取得要求を送信し、サーバ装置200から更新用ソフトウェアを受信(ダウンロード)する。また、更新制御部120は、ダウンロードされた更新用ソフトウェアを用いて、ECUに組み込まれたソフトウェアの更新を実行する前に、特定のECUの記憶部(記憶部22)に記憶されたVIN情報を取得し、取得したVIN情報を退避VIN情報144として、一時的に記憶部140に記憶(退避)させる。
また、更新制御部120は、記憶部22から取得したVIN情報を、そのまま記憶部140に退避させるのに代えて、記憶部22から取得したVIN情報をサーバ装置200に送信し、サーバ装置200でのVIN情報の認証が成功した場合に、サーバ装置200から送信される正規のVIN情報を退避VIN情報144として記憶部140に記憶させてもよい。これにより、正確なVIN情報を退避させることができる。また、更新制御部120は、VIN情報をサーバ装置200に送信する場合に、構成情報の一部とVIN情報とを合わせた認証情報を生成し、生成した認証情報をサーバ装置200に送信させてもよい。構成情報の一部とは、例えば、ハードウェア識別情報であり、更に具体的には、VIN情報が記憶された記憶部22に対応する駆動制御装置(ECU)20のハードウェア識別情報である。ハードウェア識別情報は、ソフトウェア識別情報に比して更新(変更)される回数が少ないため管理し易く、またハートウェア識別情報とVIN情報とを組み合わせた認証情報で認証させることで、より精度の高い認証を行うことができる。また、更新制御部120は、上述した認証情報をハッシュ値に変換してサーバ装置200に送信させてもよい。ハッシュ値を用いることで、通信データ量を削減できるとともに、データ漏洩時のセキュリティを強化することができる。
更新制御部120は、VIN情報を記憶部140に退避させた後、ソフトウェアの更新を実行し、更新が正常に完了した後、記憶部140に記憶された退避VIN情報144を、駆動制御装置20の記憶部22に記憶させる。これにより、更新によって記憶部22内のデータが初期化または書き換えられた場合であっても、更新後に再びVIN情報を格納させることができる。また、更新制御部120は、退避VIN情報144を記憶部22に記憶させた後、記憶部140に記憶された退避VIN情報144を消去する。これにより、VIN情報の漏洩を抑制することができる。
表示制御部130は、表示部80に表示させる画像等を生成し、生成した画像を表示部80に表示させる。例えば、表示制御部130は、更新制御部120から更新情報を取得した場合に、更新情報を車両Mの乗員に通知するための画像を生成する。また、表示制御部130は、更新情報に対応する乗員からの更新指示を受け付けるための画像を生成してもよい。また、表示制御部130は、更新情報が、OTAによる更新が可能な更新である場合には、ネットワークNWを介して更新を行うか否かを確認するための画像を生成する。また、表示制御部130は、更新情報が、OTAによる更新が不可能な更新である場合には、リプログラミングによる更新を実行するため、所定の店舗(例えば、ディーラー)や施設(例えば、修理工場)への車両Mの移動を乗員に促す画像を生成する。OTAによる更新が不可能な場合とは、例えば、ハードウェアの更新や交換を行う場合や、更新用ソフトウェアのデータ量またはセキュリティ等により無線による通信を禁止している場合等である。上述したように、更新情報の内容に対応する画像を生成することで、OTAによる更新だけでなく、ディーラー等に移動して作業員が端末装置TD等を用いて実行されるリプログラミングも迅速に行うことができる。
なお、更新制御部120は、リプログラミングによる更新を実行する場合に、上述したハッシュ値の含む問い合わせ情報や認証情報を生成して、端末装置TDとの通信を行ってもよい。また、更新制御部120は、サーバ装置200と第1通信部112とで通信を行うか、またはサーバ装置200と第2通信部114とで通信を行うかによって、問い合わせを行う構成情報の種類を異ならせてもよい。なお、各通信部に対応付けられた構成情報に関する情報は、例えば、機器管理情報142に格納される。更新制御部120は、機器管理情報142を参照することで、第1通信部112を介してサーバ装置200と通信を行う場合、または第2通信部114を介して端末装置TDと通信を行う場合に対応付けられた構成情報を用いてハッシュ値を生成する。これにより、通信手段により問い合わせを行う構成情報を選定することで、より効率的に更新状態(更新の要否)を問い合わせることができる。
[サーバ装置]
図3は、第1実施形態のサーバ装置200の構成図である。サーバ装置200は、サーバ側通信部210と、入力部220と、出力部230と、サーバ側制御部240と、サーバ側記憶部250とを備える。サーバ装置200は、例えば、ソフトウェア更新装置100と、ネットワークNWを介して互いに通信し、各種データを送受信するクラウドサーバとして機能してもよい。
サーバ側通信部210は、NIC等の通信インターフェースを含む。サーバ側通信部210は、例えば、セルラー網やWi-Fi網、Bluetooth等を利用して、ネットワークNWを介して車両ごとに搭載されたソフトウェア更新装置100やその他の外部装置と通信する。
入力部220は、例えば、ボタン、キーボードやマウス等のユーザインターフェースである。入力部220は、利用者(例えば、管理者等)の操作を受け付けて、受け付けた操作に応じた信号をサーバ側制御部240に出力する。入力部220は、出力部230の表示部と一体として構成されるタッチパネルであってもよい。
出力部230は、利用者に情報を出力する。出力部230は、例えば、画像を表示する表示部と、音声を出力する音声出力部とを備える。表示部は、例えば、LCDや有機ELディスプレイ等の表示装置を含む。表示部は、サーバ側制御部240により出力される情報の画像を表示する。音声出力部は、例えば、スピーカである。音声出力部は、サーバ側制御部240により出力される情報の音声を出力する。
サーバ側制御部240は、例えば、取得部242と、照合部244と、情報提供部246と、認証部248とを備える。サーバ側制御部240の各構成要素は、例えば、CPU等のプロセッサがサーバ側記憶部250に格納されたプログラムを実行することにより実現される。また、サーバ側制御部240の構成要素の一部または全部は、LSI、ASIC、FPGA、またはGPU等のハードウェア(回路部;circuitry)により実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。
サーバ側記憶部250は、例えば、HDD、フラッシュメモリ、EEPROM、ROM、RAM等の記憶装置により実現される。サーバ側記憶部250には、最新構成情報252、ソフトウェアデータベース254、認証用VIN情報256、プロセッサによって読み出されて実行されるプログラム、およびその他各種情報等が格納される。
図4は、最新構成情報252の内容の一例を示す図である。最新構成情報252は、車種情報に、最新ハードウェア識別情報、最新ソフトウェア識別情報が対応付けられた情報である。サーバ装置200は、最新構成情報252によって、車種ごとに、車両に搭載されたECU等の機器に関する最新のハードウェア識別情報、最新のソフトウェアの識別情報を管理する。最新構成情報252は、サーバ装置200により更新されてもよく、ネットワークNWを介して外部装置から取得してもよい。
図5は、ソフトウェアデータベース254の内容の一例を示す図である。ソフトウェアデータベース254は、ソフトウェア識別情報に、バージョン情報およびプログラムモジュールデータが対応付けられたデータベースである。なお、ソフトウェアデータベース254は、サーバ装置200と別体に設けられていてもよい。
図6は、認証用VIN情報256の内容の一例を示す図である。認証用VIN情報256は、例えば、ハードウェア識別情報に、正規のVIN情報が対応付けられた情報である。正規のVIN情報は、例えば、車両Mの製造時や出荷時等に登録されるVIN情報である。また、正規のVIN情報は、ハッシュ演算された値(ハッシュ値)であってもよい。認証用VIN情報256は、認証部248により、ソフトウェア更新装置100から送信されるVIN情報による認証処理時に使用される情報である。
取得部242は、サーバ側通信部210により受信した各車両M-1~M-nからの問い合わせ情報や更新用ソフトウェアの取得要求等を取得する。また、取得部242は、ネットワークNWにより接続される外部装置から、緊急性が高い更新情報を取得してもよい。「緊急性が高い」とは、例えば、ハードウェアの不具合等によって早急に更新や交換する必要性が高い場合やプログラムのバグ等により早急に更新する必要性が高い場合である。
照合部244は、取得部242により取得された問い合わせ情報に含まれる構成情報と、サーバ側記憶部250に記憶された最新構成情報252から得られる情報とを照合する。なお、照合部244は、問い合わせ情報にハッシュ値が含まれる場合に、車両Mの車種情報に基づいて、最新構成情報252の車種情報を参照し、合致する車種情報に対応付けられた最新ハードウェア識別情報および最新ソフトウェア識別情報の一部または全部を組み合わせてハッシュ値を生成し、生成したハッシュ値と比較することで照合を行う。なお、ハッシュ値の生成は、上述したソフトウェア更新装置100におけるハッシュ生成と同様の手法で生成される。
なお、問い合わせ情報に含まれるハッシュ値に、VIN情報が含まれる場合には、照合部244が生成したハッシュ値と完全に合致しない。したがって、照合部244は、合致度が閾値以上である場合に、構成情報が合致している(車両Mに搭載された機器の構成情報は最近の構成情報である)と判定する。また、照合部244は、ハッシュ値の全データ列のうち、VIN情報に対応するデータ列が特定できる場合には、そのデータ列を除いたデータ列で合致するか否かを判定してもよい。
情報提供部246は、照合部244による照合結果に基づいて、問い合わせ情報に含まれる構成情報が、最新構成情報252に含まれる最新構成情報と合致していない場合に、更新情報を車両Mに提供する。この場合、情報提供部246は、構成情報に含まれるECUごとの識別情報に対して合致しているか否かを比較し、合致していないECUを特定し、特定したECUに対する更新情報を生成する。更新情報には、例えば、更新が必要な構成情報の種類(ハードウェア識別情報、ソフトウェア識別情報)等が含まれる。これにより、複数のECUに対して更新が必要である場合にも漏れなく更新の要否を確認することができる。
また、情報提供部246は、更新情報を送信した後、取得部242によりソフトウェア更新装置100から更新用ソフトウェアの取得要求が取得された場合に、ソフトウェアデータベース254から更新用ソフトウェア(プログラムモジュールデータ)を取得し、ソフトウェア更新装置100によって制御されたダウンロードのタイミングに基づいて、更新用ソフトウェアをソフトウェア更新装置100に送信する。なお、情報提供部246は、認証部248による認証が成功した場合(機器等の正当性が担保された場合)に、更新用ソフトウェアをソフトウェア更新装置100に送信してもよい。
また、情報提供部246は、照合部244による照合結果により問い合わせ情報に含まれる構成情報と、最新構成情報とが合致する場合には、更新する必要がない旨を示す情報をソフトウェア更新装置100に提供してもよい。
また、情報提供部246は、取得部242により緊急性の高い更新情報が取得された場合に、問い合わせ情報を取得したか否かにかかわらず、更新情報を対象のソフトウェア更新装置100に送信する。これにより、ソフトウェア更新装置100からの問い合わせを待たずに、迅速にソフトウェアの更新を実行したり、ハードウェアの交換を促す(ディーラー等の所定の店舗に向かわせる)ことができる。
認証部248は、ソフトウェアの更新を実行させるソフトウェア更新装置100からハードウェア識別情報とVIN情報が送信された場合に、ハードウェア識別情報に基づいて、サーバ側記憶部250に記憶された認証用VIN情報256のハードウェア識別情報を参照し、合致するハードウェア識別情報に対応する正規のVIN情報を取得する。また、認証部248は、送信されたVIN情報と合致するか否かを判定することで、VIN情報や機器等の正当性を認証する。
また、認証部248は、問い合わせ情報にVIN情報が含まれる場合には、問い合わせ情報含まれるVIN情報と正規のVIN情報とを用いて認証を行ってもよい。
上述した認証を行うことで、VIN情報が不正に書き換えられたり、車載装置10やソフトウェア更新装置100の構成の一部または全部が不正に交換されたりしていないことを把握することができる。また、正当な機器等に対して構成情報の更新を行うことができる。認証部248は、認証が成功した場合には、情報提供部246に更新用ソフトウェアの提供を実行させ、認証が失敗した場合には、更新用ソフトウェアの提供を中止させたり、出力部230に出力して管理者等に通知する。
[処理シーケンス]
次に、第1実施形態のソフトウェア更新システムの一連の処理について説明する。なお、以下では、ソフトウェア更新装置100からの所定のタイミングでの問い合わせに基づくソフトウェア更新処理(以下、更新処理の第1実施例と称する)と、問い合わせの有無にかかわらず、サーバ装置200から更新情報が提供される場合のソフトウェア更新処理(以下、更新処理の第2実施例と称する)とに分けて説明する。
[第1実施例]
図7は、更新処理の第1実施例を説明するためのシーケンス図である。以下では、一つのソフトウェア更新装置100とサーバ装置200とを用いて説明する。図7の例において、まず、ソフトウェア更新装置100は、所定にタイミング(例えば、数週間ごと、月ごと)に、車両Mに搭載された機器に関する構成情報(例えば、ハードウェア識別情報、ソフトウェア識別情報)を取得し(ステップS100)、取得した構成情報に基づいて、ハッシュ値を含む問い合わせ情報を生成する(ステップS102)。なお、問い合わせ情報には、車両Mの車種情報が含まれているものとする。また、ソフトウェア更新装置100は、生成した問い合わせ情報を、ネットワークNWを介してサーバ装置200に送信する(ステップS104)。
サーバ装置200は、ソフトウェア更新装置100から問い合わせ情報を受信すると、問い合わせ情報に含まれる車種の最新構成情報を取得し(ステップS106)、最新構成情報に基づいてハッシュ値を生成する(ステップS108)。次に、サーバ装置200は、問い合わせ情報に含まれるハッシュ値と、生成したハッシュ値とを照合する(ステップS110)。次に、サーバ装置200は、ハッシュ値が合致しない場合に、更新対象の構成情報を特定し、特定した構成情報を更新する必要があることを示す更新情報を生成し(ステップS112)、生成した更新情報をソフトウェア更新装置100に送信する(ステップS114)。
ソフトウェア更新装置100は、サーバ装置200から更新情報を受信すると、更新内容を表示部80に表示させ、更新情報を乗員に通知する(ステップS116)。次に、ソフトウェア更新装置100は、操作部90により乗員から更新を実行する要求を付けつけた場合に、ハードウェア識別情報およびVIN情報を含む認証情報をサーバ装置200に送信する(ステップS118)。
サーバ装置200は、ソフトウェア更新装置100から認証情報を受信すると、認証情報に含まれるハードウェア識別情報およびVIN情報に基づいて、VIN情報が正当であるか否かの認証を行う(ステップS120)。次に、サーバ装置200は、認証結果をソフトウェア更新装置100に送信する(ステップS122)。ステップS122の処理において、サーバ装置200は、認証が成功した場合(認証情報に含まれるVIN情報と正規のVIN情報とが合致した場合)に、正規のVIN情報および更新用ソフトウェア情報をソフトウェア更新装置に送信してもよい。
ソフトウェア更新装置100は、サーバ装置200から受信した正規のVIN情報を記憶部140に一時的に退避し(ステップS124)、更新用ソフトウェアによるソフトウェア(構成情報)の更新を実行する(ステップS126)。次に、ソフトウェア更新装置100は、一時的に退避させたVIN情報を元の位置に格納する(ステップS128)。なお、ステップS128の処理において、ソフトウェア更新装置100は、記憶部140に一時的に退避させたVIN情報を削除してもよい。これにより、本シーケンスの処理は、終了する。
上述した更新処理の第1実施例によれば、更新時にECUのメモリに記憶されたVIN情報を一時的に退避させてからECUのソフトウェアの更新を実行するため、ECUのメモリ領域(第1記憶部)が初期化または書き換えられた場合であっても、更新後に退避したVIN情報を再度メモリ領域に書き込まれるため、ソフトウェアの更新時にVIN情報が消失することを抑制することができる。
[第2実施例]
図8は、更新処理の第2実施例を説明するためのシーケンス図である。なお、図8に示すステップS200~S218の処理のうち、ステップS206~S218の処理は、上述した図7の処理のステップS116~S128の処理と同様の処理を行う。したがって、以下では、主にステップS200~S204の処理を中心として説明する。
図8の例において、サーバ装置200は、他の外部装置や管理者の入力等により、構成情報に関する更新情報を取得する(ステップS200)。次に、サーバ装置200は、更新対象の構成情報(ハードウェア識別情報、ソフトウェア識別情報、ソフトウェアバージョン情報)を有する車両を検索し(ステップS202)、抽出された車両(ソフトウェア更新装置100に更新情報を送信する(ステップS204)。ソフトウェア更新装置100は、送信された更新情報に基づいて、上述したステップS206~ステップS218の処理を実行する。
上述した更新処理の第2実施例によれば、第1実施例と同様の効果を奏する他、ソフトウェア更新装置100がサーバ装置200に更新情報の問い合わせを行う必要なく、迅速に更新処理を行うことができる。したがって、例えば、サーバ装置200は、緊急性の高いソフトウェアの更新が必要となった場合にも迅速に更新処理を行わせることができる。
以上説明した第1実施形態によれば、ソフトウェア更新装置100において、サーバ装置(外部装置の一例)200と通信する第1通信部112と、第1通信部112によるサーバ装置200との通信により、車両Mに搭載された機器を制御するECU(機器制御部)に組み込まれたソフトウェアを更新する更新制御部120と、を備え、ECUは、ECUに関する更新情報と車両Mを識別する車両識別情報とを記憶する記憶部(第1記憶部)22、32、42、52を備え、更新制御部120は、ECUに組み込まれたソフトウェアの更新を実行する前に、第1記憶部に記憶された車両識別情報を取得して記憶部(第2記憶部)140に記憶させることで、ソフトウェア更新によるECU内の車両識別情報の消失を抑制することができる。
<第2実施形態>
次に、第2実施形態のソフトウェア更新装置を含むソフトウェア更新システムについて説明する。なお、以下の説明では、主に上述した第1実施形態のソフトウェア更新システム、ソフトウェア更新装置、サーバ装置と相違する部分を中心として説明し、同様の構成等の説明については省略するものとする。
第2実施形態では、駆動制御装置(ECU)20に組み込まれたソフトウェアの更新後に、ソフトウェア更新装置100に退避させたVIN情報(車両識別情報の一例)を元の記憶部22に格納させることに加えて(または代えて)、駆動制御装置20の交換時にソフトウェア更新装置100に記憶されたVIN情報を記憶部22に格納してVIN情報を復旧する。例えば、VIN情報が格納された記憶部を備える駆動制御装置が故障やリコール、利用者の意思(例えば、新製品や中古製品に交換したいという意思)等の理由によって交換された場合、交換後の駆動制御装置の記憶部に記憶されたVIN情報が空情報(ブランク、NULL)であったり、他の車両のVIN情報が記憶されている場合がある。そのため、第2実施形態では、ソフトウェア更新装置は、予め正規のVIN情報を記憶しておき、駆動制御装置の交換時に駆動制御装置の記憶部に正規のVIN情報に格納させる。
図9は、第2実施形態のソフトウェア更新装置100Aを含む車両システム2Aの構成図である。車両システム2Aは、例えば、車載装置10と、表示部80と、操作部90と、ソフトウェア更新装置100Aとを備える。
ソフトウェア更新装置100Aは、例えば、通信部110と、更新制御部120と、復旧制御部125と、表示制御部130と、記憶部140Aとを備える。ソフトウェア更新装置100Aは、第1実施形態のソフトウェア更新装置100と比較して、復旧制御部125を備えるとともに、記憶部140Aに保存用VIN情報146が記憶されている点で相違する。以下では、主に復旧制御部125および保存用VIN情報146を中心として説明する。
保存用VIN情報146は、例えば、車両Mの製造時や出荷時等に記憶部140Aに記憶されるVIN情報である。また、保存用VIN情報146は、所定のアクセス条件を満たす場合に、読み出しや書き込みができる情報であってもよい。所定のアクセス条件には、例えば、特定の端末装置からのアクセスであること、アクセスするための認証条件を満たすこと(例えば、UIDおよびパスワードの認証が成功すること)、車両Mが所定の位置(例えば、ディーラー等や製造工場等の特定位置)に存在すること等が含まれる。
復旧制御部125は、上述のアクセス条件等による保存用VIN情報146の管理を行う。また、復旧制御部125は、VIN情報が記憶された記憶部を備える機器制御部(例えば、駆動制御装置20)が交換されたか否かを判定し、交換されたと判定した場合であって、且つ所定条件も満たす場合に、保存用VIN情報146を交換された駆動制御装置20の記憶部22に格納してVIN情報を復旧させる。
例えば、復旧制御部125は、所定周期で駆動制御装置20と通信を行い、所定時間以上通信ができない場合(駆動制御装置20からの応答がない場合)に、駆動制御装置20が交換されたと判定する。また、復旧制御部125は、駆動制御装置20から取得したVIN情報が空情報である場合や、正規VIN情報と合致しない場合に、駆動制御装置20が交換されたと判定してもよい。また、復旧制御部125は、通信部110等により駆動制御装置20が交換されたことを示す情報を受信した場合に、駆動制御装置20が交換されたと判定してもよい。
駆動制御装置20が交換されたと判定した場合、復旧制御部125は、例えば、記憶部140Aに記憶された保存用VIN情報146と、運転制御装置30の記憶部32やバッテリ管理装置40の記憶部42、ナビゲーションECU50の記憶部52に記憶された構成情報の少なくとも一部(例えば、シリアルナンバー)とを組み合わせた問い合わせ情報を生成し、生成した問い合わせ情報をサーバ装置200に送信し、サーバ装置200で照合させる。上記の問い合わせ情報は、ハッシュ演算されたハッシュ値であってもよい。
サーバ装置200の照合部244は、復旧制御部125により生成された問い合わせ情報を、最新構成情報252や認証用VIN情報256を用いて照合し、照合結果を復旧制御部125に送信する。問い合わせ情報がハッシュ値である場合、照合部244は、最新構成情報252および認証用VIN情報256からハッシュ値を生成し、生成したハッシュ値を用いて照合を行ってもよい。
復旧制御部125は、サーバ装置200からの照合結果により、合致度が閾値以上である場合に、記憶部140Aに記憶された保存用VIN情報146が正規のVIN情報である(言い換えると、ソフトウェア更新装置100は交換されていない)と判断して、保存用VIN情報146を駆動制御装置20の記憶部22に書き込む。これにより、ソフトウェア更新装置100Aは、駆動制御装置20が交換された場合に、迅速に駆動制御装置20の記憶部22に正規のVIN情報を復旧させることができる。
なお、第2実施形態において、更新制御部120は、復旧制御部125によるVIN情報の復旧が完了した後に、ECUに組み込まれたソフトウェアの更新等を行う。
[処理シーケンス]
図10は、第2実施形態のソフトウェア更新システムの一連の処理を説明するためのシーケンス図である。なお、以下では、主に、ソフトウェア更新装置100Aの復旧制御部125におけるVIN情報の復旧処理を中心として説明する。また、記憶部140Aには、保存用VIN情報146が記憶されているものとする。図10の例において、まず、ソフトウェア更新装置100Aは、VIN情報が記憶された駆動制御装置20が交換されたか否かを判定し、交換されたと判定した場合に(ステップS300)、保存用VIN情報146および他のECUの構成情報を取得する(ステップS302)。次に、復旧制御部125は、保存用VIN情報146および構成情報を用いて問い合わせ情報を生成し(ステップS304)、生成した問い合わせ情報をサーバ装置200に送信する(ステップS306)。
サーバ装置200は、最新構成情報252および認証用VIN情報256を取得し(ステップS308)、問い合わせ情報と照合を行い(ステップS310)、照合結果をソフトウェア更新装置100Aに送信する(ステップS312)。ソフトウェア更新装置100Aの復旧制御部125は、照合結果に基づいて、保存用VIN情報が正規のVIN情報である場合に、保存用VIN情報を駆動制御装置20の記憶部22に格納して、VIN情報の復旧を行う(ステップS314)。これにより、本フローチャートの処理は、終了する。
以上説明した第2実施形態によれば、第1実施形態と同様の効果を奏する他、ECUが交換されたことにより、ECU内のVIN情報が空情報であったり、他のVIN情報に替わっている場合であっても、迅速に正規のVIN情報に復旧することができる。
[変形例]
上述した実施形態では、構成情報の照合をサーバ装置200側で行っていたが、これに代えて、更新制御部120がサーバ装置200から最新構成情報を受信して照合を行ってもよい。この場合、更新制御部120は、車種に対応する最新構成情報を問い合わせるための問い合わせ情報をサーバ装置200に送信し、サーバ装置200から受信した構成情報と、車載装置10のECUごとの構成情報とを照合して更新の要否を判定する。なお、構成情報にハッシュ値が含まれる場合、更新制御部120は、同様のハッシュ関数または変換テーブルを用いてハッシュ値を生成し、生成したハッシュ値同士を比較することで照合を行う。
また、他の変形例として、サーバ装置200は、最新構成情報を用いてハッシュ値を生成し、生成したハッシュ値を、複数の車両M-1~M-nに送信し、各車両の構成情報を用いて生成したハッシュ値と異なる車両からの通知を受け付けて、受け付けた通知に対する更新情報を対象の車両Mに送信してもよい。
また、上述した実施形態では、例えば、VIN情報を記憶するECUに限らず、保守部品の出荷時においてソフトウェアが書込みされていないECU(例えば、ブランクECUあるいは白ROM等)等の部品にも適用することができる。このような部品は、ディーラー等で車両Mに組付けられてもソフトウェアがインストール・フラッシュされておらず、いわゆるブートモードであり、車両制御プログラムが書き込まれていないため、制御を行うことができない。車両Mに搭載される部品は、車種に関係なく共通の場合が多く、ブートモードである部品は、異なるソフトウェアが書き込まれることで、同じハードウェアであっても異なる制御が行われる場合がある。そのため、このようなECUをディーラー等へ修理部品として出荷する場合には、修理対象車両に該当するソフトウェアを予めインストールして出荷するか、あるいはディーラー等で部品を組付けた際には正しいソフトウェアを診断機等の装置を用いて書き込む必要がある。
上述の実施形態の「OTAによる更新処理」においては、搭載された部品に対して正しいソフトウェアを選択してアップデートする機能を有しており、ブートモード検知時にブートモードの制御ID等から部品を特定し、車両Mのモデルタイプより適切な制御ソフトウェアをサーバ装置200から自動でダウンロードして書込みすることができる。これにより、例えば、倉庫での書込み業務やディーラー等での診断機を接続して書き込むといった作業プロセスや手作業によるミスを避けることができる。
また、ハードウェアが同じであるため、車両モデルに対して異なる制御ソフトウェアがインストールされた部品が、中古部品を使った修理等により車両Mに組み込まれてしまうと正しく動作しない場合も考えられる。しかしながら、上述の実施形態の「OTAによる更新処理」においては、車両モデルに対して適切な部品およびソフトウェアの組み合わせ情報を有しているため、車両M(ソフトウェア更新装置100)は、サーバ装置200に対して、構成の同期処理を行い、異なるソフトウェアを検知した場合に、車両Mのソフトウェアの修理(正しいソフトウェアに復旧)することができる。なお、この場合、ソフトウェア更新装置100は、ソフトウェアIDからハードウェアの互換性情報を判定すると共に、組み込まれた車両モデルに対して正しいソフトウェアに書き換えることで正しい制御を行うソフトウェアへ復旧できると判定した場合に、自動でソフトウェアをダウンロードし、更新(書き換え)処理を行うことで、車両Mのソフトウェアの修理を行うことができる。
また、ECUの中には同じハードウェアであり、かつ同じソフトウェアを搭載しているが、搭載された車両モデルによって制御を一部変える必要がある場合もある。この場合、同一ソフトウェアに対してコンフィグレーションID(バリアントコード)を付与することで異なる制御を行っている。部品の製造や流通の観点から同一部品や同一ソフトウェアのECUであるが出荷前にコンフィグレーションIDを付与することで同じ部品でもモデルによって、あたかも異なるソフトウェアのように動作させることができる。また、例えば、保守部品交換時には、上述のブランクECUや別モデルのソフトウェアが入った部品に対してフラッシュすることで正しいソフトウェアをハードウェアにインストールすることができるが、バリアントコードにより制御処理を行っているECUについてはソフトウェアの書き込み後にバリアントコードの書き込みを行わなければソフトウェアは制御処理を行うことができない。そのため、ソフトウェアの書き込み後にバリアントコードの書き込みも必要になる。したがって、上述した実施形態の「OTAによる更新処理」においては、まず、サーバ装置200は、ブランクECUへのソフトウェア書込みが必要であることを検知した場合であって、且つそのECUがバリアントコーディング部品であった場合に、ソフトウェアの配信に加えてバリアントコードを合わせて車両Mに送信する。そして、車両Mのソフトウェア更新装置100は、ソフトウェアを正常に書込みできたことを確認した後、バリアントコードをECUに書き込むことでソフトウェアの更新処理が完了させてもよい。
以上、本発明を実施するための形態について実施形態を用いて説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。