以下、本発明に係るソフトウェア更新装置、ソフトウェア更新システム、及びソフトウェア更新方法の実施の形態を図面に基づいて説明する。
≪第1実施形態≫
本実施形態に係るソフトウェア更新装置10は、図1に示すように、ソフトウェア更新システム100の一部として実現される。図1は、本実施形態に係るソフトウェア更新システム100の一例を示すブロック図である。ソフトウェア更新システム100は、車両1の電子制御装置(以下、ECU(Electronic Control Unit)と称する)が実行する、車両制御や診断等のソフトウェアを、OTA(Over The Air)により更新可能なシステムである。このようなOTAによりソフトウェアを更新することは、FOTA(Firmware Over The Air)とも称される。ECUのソフトウェアは、ECUが備えるマイコンがプログラムを実行することで、実現される。本実施形態では、無線によるECUのソフトウェア更新として、ECUのマイコンが実行するプログラムを無線により書き換える場合を例に挙げて説明するが、ソフトウェア更新システム100は、例えば、車両1のナビゲーションシステムで使用される地図データ、ECUで使用される制御パラメータ等、各種ソフトウェアで使用されるデータを無線で書き換える場合にも適用することができる。またソフトウェア更新システム100は、ECUにFPGA(Field Programmable Gate Array)が用いられている場合、FPGAの機能(ロジック)を無線で書き換える場合にも適用することができる。また図1では、車両1として一台の車両が図示されているが、ソフトウェア更新システム100は、複数の車両1を対象にして、ソフトウェアの更新可能なシステムである。
また本実施形態において、「ECUのソフトウェア更新」とは、ECUのソフトウェアのバージョンが新しいバージョンに変わること、すなわち、マイコンの実行対象であるプログラムが新しいバージョンに変わることを意味する。また無線によるソフトウェア更新は、新しいバージョンのプログラムそのものを車両1の外部から無線を介して取得して書き換えることに加えて、新しいバージョンのプログラムが実行される際に使用される各種データ、及び新しいバージョンのプログラムと古いバージョンのプログラムの差分データを、車両1の外部から無線を介して取得して書き換えることも含む。以降の説明では、新しいバージョンのプログラムや差分データ等、ソフトウェアの更新に必要なデータを「更新用データ」と称する。また、「新しいバージョンのプログラム」を「新プログラム」と称し、「古いバージョンのプログラム」を「旧プログラム」と称し、「新しいバージョンのプログラムと古いバージョンのプログラムの差分のデータ」を「差分データ」と称する。また本実施形態において、「処理の完了」とは、処理が正常終了したことを意味し、処理が異常終了したことは含まない。また本実施形態では、ソフトウェアの更新に関する手続きを行うユーザとして、車両1の室外にいるユーザを例に挙げて説明する。
図1に示すように、ソフトウェア更新システム100は、車両1と、サーバー2と、ユーザ端末3を含む。ソフトウェア更新システム100に含まれる各構成は、無線通信回線網4を介して、情報の授受が可能になっている。無線通信回線網4は、例えば4G回線等による移動体通信ネットワーク、インターネット、Wifi(Wireless Fidelity)(登録商標)等を含んで構成される。まず、ソフトウェア更新システム100において、車両1、サーバー2、及びユーザ端末3それぞれの役割について説明する。
車両1は、ソフトウェアを更新可能なECUを搭載する。車両1は、サーバー2との間で、ソフトウェア更新に関する各種情報の授受を行う。車両1からサーバー2には、車両1に搭載される各ECUに関する情報が送信される。ECUに関する情報としては、例えば、ソフトウェアの現在のバージョンが挙げられる。車両1が搭載する各ECUに関する情報は、所定の送信条件(例えば、所定の周期ごと)に基づき、車両1からサーバー2に送信される。
またサーバー2から車両1には、ソフトウェア更新に関する情報が送信される。ソフトウェア更新に関する情報としては、例えば、キャンペーン情報、更新用データ、更新処理に要する時間の見積り、更新の重要度等が挙げられる。キャンペーンとは、サーバー2が配信パッケージを一又は複数の車両1に配信するイベントである。配信パッケージには、更新用データ、更新用データの認証処理に用いられる認証用データ等が含まれる。キャンペーン情報は、ユーザにソフトウェア更新の概要を提示するための情報である。キャンペーン情報の具体例、更新処理に要する時間の見積りについては後述する。更新処理に要する時間の見積りは、配信パッケージに含まれていてもよい。ソフトウェアの更新処理が開始されることに対してユーザが承諾した場合、車両1では、後述するソフトウェア更新装置10により、ソフトウェアの更新処理が実行される。車両1で更新処理が開始されると、車両1からサーバー2には、更新処理の経過状況を表す情報が送信される。
サーバー2は、ソフトウェア更新システム100においてソフトウェア更新処理を統括し、OTAセンターとして機能するサーバーである。サーバー2は、車両1との間で上述したソフトウェア更新に関する各種情報の授受を行う。またサーバー2は、ユーザ端末3との間でも、各種情報の授受を行う。
サーバー2は、更新用データを格納する格納機能、各ソフトウェアのバージョン、更新対象となる車両1の車両識別番号(VIN:Vehicle Identification Number)、更新対象のECU等を管理するデータ管理機能、キャンペーン情報の配信タイミング等のキャンペーンに関する情報を管理するキャンペーン管理機能、キャンペーン情報及び更新用データを配信する配信機能等を有している。サーバー2は、例えば、更新用データの提供事業者から、更新用データを含む各種情報を受信すると、更新用データを記憶装置に格納する。サーバー2は、提供事業者から受信した情報に基づき、更新用データの配信対象であるVIN及び更新対象のECU(以降、更新対象ECUと称す)を特定する。サーバー2は、キャンペーン情報の配信タイミングを設定し、キャンペーン情報の配信タイミングになると、キャンペーン情報を車両1及び/又はユーザ端末3に送信する。配信パッケージが車両1に送信されることに対してユーザが承諾した場合、サーバー2は、車両1に配信パッケージを送信する。サーバー2による配信パッケージの送信が完了した後に、車両1で更新処理が開始されると、サーバー2は、車両1から更新処理の進捗状況を表す進捗情報を受信し、受信した進捗情報をユーザ端末3に送信する。
ユーザ端末3は、ユーザからの操作入力を受け付ける機能や各種画面を表示する機能を有し、ユーザが携帯可能な端末である。ユーザ端末3としては、例えば、スマートフォンやタブレット等が挙げられる。ユーザ端末3は、サーバー2との間で、キャンペーン情報等の各種情報の授受を行う。ユーザ端末3は、サーバー2からキャンペーン情報を受信すると、キャンペーン情報をユーザに通知する。また配信パッケージが送信されることへの承諾を示す操作をユーザがユーザ端末3に行った場合、ユーザ端末3は、ユーザが承諾したことを表す承諾情報を、サーバー2に送信する。またユーザ端末3は、サーバー2を介して、車両1との間で、更新処理に関する情報の授受を行う。ユーザ端末3は、サーバー2から、更新処理開始の承諾をユーザに求めるための情報が入力された場合、ユーザに承諾を求めるための画像を表示する。またユーザ端末3は、更新処理開始の承諾を示す操作をユーザがユーザ端末3に行った場合、ユーザが承諾したことを表す承諾情報をサーバー2に送信する。車両1で更新処理が開始されると、ユーザ端末3は、サーバー2から進捗情報を受信し、受信した進捗情報をユーザに通知する。
次に、車両1、サーバー2、及びユーザ端末3それぞれの構成について、図1を用いて説明する。まずサーバー2の構成について説明する。図1に示すように、サーバー2は、通信装置21と、データベース22と、制御装置23を備える。
通信装置21は、無線通信回線網4を介して、車両1及びユーザ端末3との間でデータ通信を行う通信機能を有する。通信装置21が車両1との間でデータの送受信を行うためには、車両1が無線通信回線網4の圏内に位置する必要がある。また通信装置21がユーザ端末3との間でデータの送受信を行うためには、ユーザ端末3が無線通信回線網4の圏内に位置する必要がある。
データベース22は、車両1の登録情報、キャンペーン情報、更新用データ等を格納する。車両1の登録情報は、少なくとも、車両1のVIN、車両1が搭載するECUの数及び各ECUの種別、及び各ECUのソフトウェアのバージョンを含む。キャンペーン情報は、更新用データのデータサイズ、更新対象ECUを識別する情報(ECU名、ECUのID等)、更新対象であるソフトウェアのバージョンの情報(バージョン名、バージョンのID等)、更新される機能の概要説明、配信パッケージのダウンロードが完了するまでの見積り時間(ダウンロード見積り時間)、及び、車両1での更新処理が完了するまでの見積り時間(更新処理見積り時間)等を含む。
制御装置23は、サーバー2の司令塔として機能する装置であって、例えば、コンピュータプログラムにより具体化された一又は複数の機能を実行するようにプログラムされたプロセッサとメモリとで構成される。制御装置23は、上述した、データ管理機能、キャンペーン管理機能、配信機能等を有している。本実施形態では、制御装置23の機能の一例として、更新処理見積り時間を算出する機能について説明する。
制御装置23は、更新用データのデータサイズに基づき、更新処理見積り時間を算出する。例えば、更新用データのデータサイズと更新処理見積り時間の関係を示すマップが予めデータベース22に格納されている場合、制御装置23は、当該マップを参照して、データサイズに応じた更新処理見積り時間を算出する。また例えば、制御装置23は、更新用データのデータサイズが大きいほど、更新処理見積り時間を長く算出する。なお、更新用データのデータサイズは、新プログラムそのもののデータサイズ、又は差分データのデータサイズのいずれであってもよい。
また制御装置23は、更新用データのデータサイズに代えて、又はこれとともに、更新対象ECUの種別に基づき、更新処理見積り時間を算出してもよい。例えば、制御装置23は、ECUが備えるマイコン及び/又はフラッシュメモリの仕様に基づき、更新処理見積り時間を算出する。例えば、制御装置23は、更新対象ECUが備えるマイコンの動作周波数が所定の基準周波数よりも高い場合、当該マイコンの動作周波数が所定の基準周波数よりも低い場合に比べて、更新処理見積り時間を短く算出する。マイコンの動作周波数が高いほど、更新処理に要する時間は短くなるという観点に基づく。また例えば、制御装置23は、更新対象ECUが備えるフラッシュメモリのメモリ容量が所定の基準容量よりも大きい場合、当該フラッシュメモリのメモリ容量が所定の基準容量よりも低い場合に比べて、更新処理に要する時間を長く算出する。フラッシュメモリのメモリ容量が大きいほど、プログラムのファイルサイズが大きくなり、更新処理に要する時間が長くなるという観点に基づく。また更新処理見積り時間の算出方法は一例であって、制御装置23は、その他の算出方法を用いて更新処理見積り時間を算出してもよい。
ユーザ端末3の構成について説明する。図1に示すように、ユーザ端末3は、端末通信装置31と、端末HMI(Human Machine Interface)32と、端末制御装置33を備える。
端末通信装置31は、無線通信回線網4を介して、サーバー2との間でデータ通信を行う機能を有する。端末HMI32は、ユーザの操作入力を受け付ける装置及びユーザに情報を知らせる装置のうち少なくとも何れか一方として機能する。端末HMI32としては、例えば、タッチパネルディスプレイ等が挙げられる。なお、端末HMI32は、情報を表示する装置に限られず、例えば、スピーカー等、情報を音声出力する装置であってもよい。なお、ユーザ端末3が、Bluetooth(登録商標)等を通じて車両1の車載装置と直接接続している場合にはユーザ端末3は、車両1の車載通信装置11を介してサーバー2とデータ通信を行ってもよい。また、車載装置とユーザ端末3が直接接続している場合には、車載装置は、ユーザ端末3から無線通信回線網4を介してサーバー2と通信してもよい。
端末制御装置33は、ユーザ端末3の司令塔として機能する装置であって、例えば、コンピュータプログラムにより具体化された一又は複数の機能を実行するようにプログラムされたプロセッサとメモリとで構成される。端末制御装置33は、車両1のECUのソフトウェア更新処理において、キャンペーン情報及び更新処理の進捗情報をユーザに通知するための処理を実行する。キャンペーン情報を例に挙げると、端末制御装置33は、端末通信装置31を介してサーバー2からキャンペーン情報を受信した場合、キャンペーン情報を端末HMI32に出力して、キャンペーン情報を端末HMI32に表示させる。また端末制御装置33は、車両1のECUのソフトウェア更新処理において、ユーザに承諾を求めるための承諾要求処理を実行する。更新処理開始の承諾をユーザに求める場合を例に挙げると、端末制御装置33は、更新処理開始の承諾をユーザに求めるための承諾要求画像を生成し、承諾要求画像を端末HMI32に出力して、承諾要求画像を端末HMI32に表示させる。
車両1の室外にいるユーザは、ユーザ端末3が無線通信回線網4の圏内に位置する場合、ソフトウェア更新に関する各種情報をユーザ端末3により確認しながら操作入力を行い、ソフトウェア更新に関する手続きを行うことができる。なお、上述したユーザ端末3のブロック構成や機能は一例であって、ユーザ端末3を限定するものではない。また本実施形態では、ユーザがユーザ端末3を使用して更新処理に関する手続きを行う場合を例に挙げて説明するが、本発明に係るソフトウェア更新装置、ソフトウェア更新システム、及びソフトウェア更新方法は、ユーザが車載端末12を使用して更新処理に関する手続きを行う場合にも適用することができる。
次に、車両1の構成について説明する。図1に示すように、車両1は、ソフトウェア更新装置10と、車載通信装置11と、車載端末12と、イグニッションスイッチ13と、ボディ系ECU14Aと、走行系ECU14Bと、マルチメディア系ECU14Cと、電源系ECU14Dを含む。車両1に含まれる各構成は、例えば、CAN(Controller Area Network)、LIN(Local Interconnect Network)等の車載ネットワークよって接続されている。
車載通信装置11は、無線通信回線網4を介して、サーバー2との間でデータ通信を行う機能を有する。車載通信装置11としては、例えば、テレマティクスコントロールユニット(TCU:Telematics Control Unit)が挙げられる。
車載端末12は、車両1に乗車するユーザ(乗員)からの操作入力を受け付ける機能や各種画面を表示する機能を有する端末である。車載端末12としては、例えば、タッチパネルディスプレイ等が挙げられる。車載端末12には、ソフトウェア更新装置10から、乗員に各種情報を知らせるための信号が入力される。車載端末12は、例えば、ソフトウェア更新装置10から、更新処理開始の承諾を乗員に求めるための情報が入力された場合、乗員に承諾を求めるための画像を表示する。また車載端末12は、例えば、更新処理開始の承諾を示す操作を乗員が車載端末12に行った場合、乗員が承諾したことを表す承諾情報をソフトウェア更新装置10に出力する。車両1の室内にいるユーザは、車両1が無線通信回線網4の圏内に位置する場合、ソフトウェア更新に関する各種情報を車載端末12により確認しながら操作入力を行い、ソフトウェア更新に関する手続きを行うことができる。なお、車載端末12は、情報を表示する装置に限られず、例えば、スピーカー等、情報を音声出力する装置であってもよい。
イグニッションスイッチ13は、車両1の起動スイッチとして機能し、車両1のイグニッションをオン又はオフするためのスイッチである。イグニッションスイッチ13は、例えば、乗員がイグニッションをオンからオフにする操作を行った場合、ユーザの操作内容を表す信号をソフトウェア更新装置10に出力する。
ボディ系ECU14A、走行系ECU14B、及びマルチメディア系ECU14Cは、ソフトウェア更新装置10により更新される対象のECUの一例である。各ECUは、機能ブロックとして、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、及びフラッシュメモリ(Flash Memory)から構成されるマイコンと、電源回路、データ転送回路等を有する。フラッシュメモリには、ECUのソフトウェアを実現するためのプログラムが格納されている。マイコンがフラッシュメモリに格納されたプログラムを実行して各種処理を行うことで、ECUのソフトウェアは実現される。
ECUのフラッシュメモリは、メモリ構成に応じて、シングルバンクメモリとダブルバンクメモリに区分される。シングルバンクメモリは、プログラムの格納領域とマイコンによるプログラムの実行領域に区別がなく、マイコンがプログラムを実行中の間、シングルバンクメモリにプログラムを書き換えることはできない。一方、ダブルバンクメモリは、プログラムの格納領域として2面の領域を有しており、マイコンは、2面の格納領域のうちいずれか一方の格納領域のプログラムを実行する。このため、ダブルバンクメモリでは、マイコンがプログラムを実行中の間であっても、実行中のプログラムを格納しない他方の格納領域にプログラムを書き込むことができる。ダブルバンクメモリが有する2面のプログラム格納領域について、以降では、便宜上、第1メモリ及び第2メモリと称する。
ボディ系ECU14Aは、車両1のボディ系の制御を行うECUの総称である。ボディ系ECU14Aとしては、例えば、車両1のドアのロック/アンロックを制御するドア制御用ECU、車両1のメーター表示を制御するメーター制御用ECU、車両1のエアコンの駆動を制御するエアコン制御用ECU、車両1ウィンドウの開閉を制御するウィンドウ制御用ECU等が挙げられる。走行系ECU14Bは、車両1の走行系の制御を行うECUの総称である。走行系ECU14Bとしては、例えば、車両1の駆動源を制御する駆動源制御用ECU、車両1のブレーキの駆動を制御するブレーキ制御用ECU、車両1のパワーステアリングの駆動を制御するパワーステアリング制御用ECU等が挙げられる。マルチメディア系ECU14Cは、車両1のマルチメディア系の制御を行うECUの総称である。マルチメディア系ECU14Cとしては、例えば、車両1のナビゲーションシステムを制御するナビゲーション制御用ECU、車両1のオーディオ機器を制御するオーディオ制御用ECU等が挙げられる。
ボディ系ECU14A、走行系ECU14B、及びマルチメディア系ECU14Cには、ソフトウェア更新装置10から更新処理の制御信号が入力され、各ECUではソフトウェアの更新処理が実行される。なお、図1では、各ECUが1つずつ示されているが、更新対象ECUの数は特に限定されず、ソフトウェア更新システム100は、複数の更新対象ECUに対して、ソフトウェアを更新することができる。また図1に示すボディ系ECU14A、走行系ECU14B、及びマルチメディア系ECU14Cは、車両1に搭載されるECUの一例であって、車両1に搭載されるECUの種別やECUの区別の仕方を限定するものではない。また車両1は、図1に示されるECU以外のECUを搭載していてもよい。
電源系ECU14Dは、車両1の電源系の制御を行うECUの総称である。電源系ECU14Dとしては、例えば、車両1に搭載されているACC(アクセサリー)電源及びIG(イグニッション)電源を制御する電源制御用ECUが挙げられる。電源系ECU14Dには、ソフトウェア更新装置10から更新処理の制御信号が入力される。例えば、電源系ECU14Dは、車両1のイグニッションをオフさせる処理を実行する。
ここで、OTAによるソフトウェア更新フローの概要とECUのメモリ構成との関係について、図2及び図3を用いて説明する。図2は、OTAによるソフトウェア更新のフローを説明するための説明図である。図2に示すように、OTAによるソフトウェア更新は、複数の段階を経て行われる。具体的に、OTAによるソフトウェア更新では、キャンペーン情報の通知(ステップS1)、ダウンロード(ステップS2)、インストール(ステップS3)、アクティベート(ステップS4)、更新完了確認(ステップS5)が順次行われる。
ステップS1では、サーバー2から車両1及び/又はユーザ端末3にキャンペーン情報が送信され、車載端末12及び/又はユーザ端末3を介して、ユーザにキャンペーン情報が通知される。ステップS2では、更新用データを含む配信パッケージがサーバー2から車両1に送信され、車両1では配信パッケージが格納される。ステップS3では、更新対象ECUに対して新プログラムの書き込み処理が行われる。ステップS4では、マイコンによる新プログラムの読込処理により、新プログラムが有効化される。ステップS5では、ソフトウェア更新の完了が車載端末12及び/又はユーザ端末3を介してユーザに通知される。
図3は、ECUのメモリ構成に応じた、OTAによるソフトウェア更新を説明するための説明図である。図3は、図2に示す複数のステップのうち、ダウンロード、インストール、アクティベート、及び更新完了確認の各ステップを「更新状態」として示している。また図3は、各更新状態における車両1の状態を「車両状態」として示し、更新対象ECUの動作を「対象ECU」として示し、ユーザの状態を「ユーザ」として示している。図3(A)は、ECUのメモリ構成がシングルバンクの場合でのソフトウェア更新フローの一例であり、図3(B)は、ECUのメモリ構成がダブルバンクの場合でのソフトウェア更新フローの一例である。
図3(A)に示すように、更新対象ECUのメモリ構成がシングルバンクの場合、車両1が走行可能な状態(イグニッションスイッチ13がオン)で、車両1では配信パッケージの「ダウンロード」が行われる。ダウンロード完了後、車両1が停車した状態でイグニッションスイッチ13がオンからオフに切り替わると、更新処理開始の承諾をユーザに求める「承諾要求」が行われる。本実施形態では、車両1の室外にいるユーザは、ソフトウェア更新に関する各種情報をユーザ端末3により確認しながら操作入力を行い、ソフトウェア更新に関する手続きを行う。
サーバー2からのダウンロードが完了後、車両1の乗員(ドライバー)がイグニッションスイッチをオンからオフに切り替えると、例えば、ユーザ端末3には、更新処理開始の承諾を求める情報(例えば、「ソフトウェアを更新しますか?」の表示)と、ユーザが操作可能な2つのアイコンとして、承諾を示すアイコン(例えば、「今すぐ」の表示)及び拒否を示すアイコン(例えば、「後で」の表示)が表示される。ユーザが更新処理開始を承諾して「今すぐ」のアイコンを押した場合、車両1では更新用データを用いた「インストール」が行われる。具体的に、ECUのフラッシュメモリでは、旧プログラムの削除後に、新プログラムを書き込む書き換え処理が行われる。書き換え処理が完了すると、ECUのマイコンに新プログラムを読み込ませる「アクティベート」が行われる。その後、車両1の電源再起動処理(リブート処理)を経て、ソフトウェア更新が完了する。ソフトウェア更新が完了すると、ユーザ端末3には、更新が完了したことを示す更新完了通知が表示される(例えば、「ソフトウェア更新は完了しました」の表示)。また更新処理の完了後、車両1のイグニッションをオフにする処理が電源系ECU14Dにより実行される。一方、ユーザが更新処理開始を承諾せずに「後で」のアイコンを押した場合、車両1ではECUのソフトウェア更新処理が開始されることなく、車両1のイグニッションをオフにする処理が電源系ECU14Dにより実行される。またユーザ端末3には、更新処理の延期を示す更新処理延期通知が表示される(例えば、「次回へ延期します」の表示)。
また図3(B)に示すように、ECUのメモリ構成がダブルバンクの場合、車両1が走行可能な状態で、車両1では配信パッケージの「ダウンロード」の他、更新用データを用いた「インストール」が行われる。ECUのマイコンが第1メモリに格納されたプログラム(旧プログラム)を実行している場合、第2メモリでは、新プログラムを書き込む書き込み処理が行われる。インストール完了後、車両1の乗員(ドライバー)がイグニッションスイッチ13をオンからオフに切り替えると、更新処理開始の承諾をユーザに求める「承諾要求」が行われる。図3(A)での例と同様に、ユーザ端末3には、例えば、更新処理開始の承諾を求める情報と、承諾を示すアイコン及び拒否を示すアイコンが表示される。ユーザが更新処理開始を承諾すると、マイコンの読込先のメモリを第1メモリから第2メモリに変更する「アクティベート」が行われる。その後、車両1の電源再起動処理を経て、ソフトウェア更新が完了する。
このように、ECUのフラッシュメモリの構成に応じて、ソフトウェア更新処理の具体的な内容には、「インストール」及び「アクティベート」と「アクティベート」の違いがあるが、いずれの更新処理であっても、更新処理開始の承諾を乗員に求め、乗員が更新処理開始を承諾した操作を行った場合に、車両1では更新処理が実行される。また更新処理が完了した場合、ユーザは、ユーザ端末3に表示される更新完了通知を通じて、更新処理が完了したことを知ることができる。例えば、自宅にいる第1ユーザと車両1を使用する第2ユーザがいた場合、第2ユーザが自宅の駐車場に車両1を停車させてイグニッションスイッチをオンからオフに切り替え、第1ユーザがユーザ端末3を介してソフトウェアの更新手続きを行ったとする。その後、第1ユーザが車両1を使用して外出しようとする場合、更新完了通知を確認した第1ユーザは、ソフトウェアの更新処理が完了した状態の車両1を使用することができる。しかしながら、何らかの異常により更新処理の途中でループ処理等が発生し、更新処理が完了しない場合(更新処理が異常終了しない場合も含む)、ユーザ端末3には更新完了通知が表示されないため、第1ユーザは、車両1を使用できない可能性があるという問題がある。そこで、本実施形態に係るソフトウェア更新装置10は、以下の構成及び方法によって、上記の問題の解決を図る。
次に、ソフトウェア更新装置10について説明する。図4に示すように、ソフトウェア更新装置10は、コントローラ40を備えている。図4は、ソフトウェア更新装置10のコントローラ40が有する機能ブロックの一例である。コントローラ40は、ハードウェア及びソフトウェアを備えたコンピュータにより構成され、プログラムを格納したメモリと、このメモリに格納されたプログラムを実行するCPU等を有している。なお、動作回路としては、CPUに代えて又はこれとともに、MPU、DSP、ASIC、FPGAなどを用いることができる。
図4に示すように、コントローラ40は、機能ブロックとして、情報取得部41と、記憶部42と、出力部43と、開始判定部44と、更新処理実行部45と、制御部50と、電源処理実行部51を有している。コントローラ40は、メモリに記憶されたソフトウェアによって、機能ブロックの各機能を実現する。
情報取得部41は、サーバー2から、車載通信装置11を介して、ソフトウェア更新に関する更新処理情報を取得する。更新処理情報は、上述した、キャンペーン情報、及び配信パッケージを含む。また情報取得部41は、イグニッションスイッチ13から、イグニッションスイッチ13のオン状態又はオフ状態を示す信号を取得する。また情報取得部41は、車載端末12から、ユーザの操作を示す信号を取得する。また情報取得部41は、サーバー2を介して、ユーザ端末3でのユーザの操作を示す信号を取得する。例えば、ユーザがユーザ端末3に表示された承諾表示を押した場合、情報取得部41は、ユーザ端末3から、サーバー2を経由して、承諾表示がユーザに押されたことを示す信号を取得する。また例えば、ユーザがユーザ端末3に表示された拒否表示を押した場合、情報取得部41は、ユーザ端末3から、サーバー2を経由して、拒否表示がユーザに押されたことを示す信号を取得する。
記憶部42は、情報取得部41により取得された情報のうち、サーバー2から取得した情報を記憶する記憶装置として機能する。記憶部42としては、例えば、フラッシュメモリ等の不揮発性記録媒体が用いられる。記憶部42は、サーバー2から取得されたキャンペーン情報及び配信パッケージを格納する。また記憶部42は、車両1に搭載されるECUに関する情報(ECUのメモリ構成等)を記憶していてもよい。記憶部42に記憶された各種情報は、更新処理実行部45での処理に用いられる。
出力部43は、更新処理実行部45による更新処理の開始を承諾するかをユーザに求める承諾要求情報を出力する。承諾要求情報としては、例えば、画像、音声などが挙げられるが、ユーザに承諾を求める方法は特に限定されない。例えば、上述したような「ソフトウェアを更新しますか?」の表示画像をメモリから読み出して、車載通信装置11を介して、画像信号をサーバー2に送信する。また例えば、出力部43は、画像信号とともに又はこれに代えて、更新処理開始を承諾するかをユーザに求める音声信号を、車載通信装置11を介して、サーバー2に送信してもよい。車載通信装置11から送信された承諾要求情報は、サーバー2で受信され、その後、サーバー2からユーザ端末3に送信される。
また本実施形態では、出力部43は、所定の出力条件を満たした場合、承諾要求情報を出力する。出力部43は、情報取得部41により取得された情報に基づき、イグニッションスイッチ13が乗員によりオンからオフに操作されたか否かを判定する。出力部43は、イグニッションスイッチ13の状態を示す信号がオン状態からオフ状態に切り替わった場合、承諾要求情報を出力する。なお、出力部43による出力条件は一例であって、出力条件はその他の条件であってもよい。
開始判定部44は、更新処理実行部45による更新処理を開始するか否かを判定する。開始判定部44は、出力部43により出力された承諾要求情報に対してユーザが更新処理開始を承諾した場合、更新処理を開始すると判定し、承諾要求情報に対してユーザが更新処理開始を拒否した場合、更新処理を開始しないと判定する。例えば、更新処理開始の承諾を示す操作をユーザがユーザ端末3に行った場合、上述したように、情報取得部41は、サーバー2から承諾情報を取得し、開始判定部44は、更新処理を開始すると判定する。一方、例えば、更新処理開始の拒否を示す操作をユーザがユーザ端末3に行った場合、上述したように、情報取得部41は、サーバー2から拒否情報を取得し、開始判定部44は、更新処理を開始しないと判定する。
更新処理実行部45は、承諾要求情報に対するユーザの回答である回答情報に応じて、更新処理を実行する。更新処理実行部45は、開始判定部44により更新処理を開始すると判定された場合、更新処理を実行し、開始判定部44により更新処理を開始しないと判定された場合、更新処理の実行を延期する。更新対象ECUでの更新処理が正常に終了した場合、更新処理実行部45には、更新対象ECUから更新処理完了通知が入力され、更新処理実行部45は、入力された通知を制御部50に出力する。なお、開始判定部44により更新処理を開始しないと判定された場合、更新処理の実行が延期されればよく、更新処理実行部45は、その他の処理を実行してもよい。
更新処理実行部45は、更新処理を実行する機能ブロックとして、更新対象ECUメモリ構成に応じたインストール実行部及びアクティベート実行部を含む。図4に示すように、更新処理実行部45は、メモリ構成がシングルバンクに対応した第1インストール実行部46及び第1アクティベート実行部47と、メモリ構成がダブルバンクに対応した第2インストール実行部48及び第2アクティベート実行部49とを含む。図3を用いて説明したように、ECUのメモリ構成がシングルバンクかダブルバンクかの違いによって、「インストール」及び「アクティベート」それぞれの処理内容に違いが生じる。このため、本実施形態では、複数のインストール実行部及び複数のアクティベート実行部が設けられている。更新対象ECUのメモリ構成がシングルバンクの場合、第1インストール実行部46により新プログラムのインストールが行われ、第1アクティベート実行部47により新プログラムのアクティベートが行われる。一方、更新対象ECUのメモリ構成がダブルバンクの場合、第2インストール実行部48により新プログラムのインストールが行われ、第2アクティベート実行部49により新プログラムのアクティベートが行われる。更新処理実行部45は、記憶部42に記憶された車両1に搭載されるECUに関する情報から、更新対象ECUのメモリ構成を判別する。
第1インストール実行部46は、フラッシュメモリに格納されている旧プログラムを削除した後に、新プログラムを書き込むインストール処理を実行する。第1アクティベート実行部47は、フラッシュメモリに書き込まれた新プログラムを、更新対象ECUが備えるマイコンに読み込ませるアクティベート処理を実行する。
フラッシュメモリの第1メモリ及び第2メモリのうち第1メモリに旧プログラムが格納され、マイコンが旧プログラムを読み込んでいる場合、第2インストール実行部48は、旧プログラムが格納されていない第2メモリに、新プログラムを書き込むインストール処理を実行する。第2アクティベート実行部49は、更新対象ECUが備えるマイコンによるプログラムの読込先を、第1メモリから第2メモリに切り替えるアクティベート処理を実行する。
制御部50は、更新処理に要する見積り時間に基づき、更新対象ECUが実行する対象プログラムを決定する。本実施形態では、更新処理に要する見積り時間は、サーバー2で算出された、更新処理見積り時間である。図3を用いて説明したように、更新処理の具体的内容は、更新対象ECUのメモリ構成に応じて、「インストール」及び「アクティベート」と「アクティベート」の違いがある。このため、サーバー2により算出される更新処理見積り時間の内訳は、更新対象ECUの仕様に応じて変わる。具体的に、更新対象ECUのメモリ構成がシングルバンクの場合、更新処理見積り時間は、インストール処理に要する時間とアクティベート処理に要する時間で構成される。更新対象ECUのメモリ構成がダブルバンクの場合、更新処理見積り時間は、アクティベートに要する時間で構成される。
制御部50は、更新処理見積り時間内に更新処理が完了しない場合、更新前ソフトウェアに対応した旧プログラムを、更新対象ECUに実行させる。一方、制御部50は、更新処理見積り時間内に更新処理が完了した場合、更新済みソフトウェアに対応した新プログラムを、更新対象ECUに実行させる。
例えば、制御部50は、更新処理実行部45により更新処理が開始されると、更新処理時間を計測するためのタイマーを起動させて、更新処理開始からの経過時間を計測し始める。制御部50は、経過時間と更新処理見積り時間を比較しながら、更新処理実行部45から更新処理完了通知が入力されるのを待機する。制御部50は、更新処理見積り時間よりも短い経過時間で更新処理完了通知が入力された場合、新プログラムを、更新対象ECUが備えるマイコンに実行させる。一方、制御部50は、経過時間が更新処理見積り時間を超えた場合、旧プログラムを、更新対象ECUが備えるマイコンに実行させる。
経過時間が更新処理見積り時間を超えた場合の制御部50の処理について、より詳細に説明する。経過時間が更新処理見積り時間を超えた場合、制御部50は、更新対象ECUのメモリ構成に応じた異なる処理を実行する。メモリ構成がシングルバンクの場、制御部50は、更新対象ECUに対してロールバック処理を実行する。ロールバックとは、更新処理を中断する場合に、プログラムのバージョンを元に戻す等、更新対象ECUのフラッシュメモリを所定状態に復帰させるための書き込み又は書き戻すことである。つまり、ロールバックとは、ユーザから見て更新対象ECUの状態を更新処理が開始される前の状態に戻すことである。制御部50には、本願出願時に知られたロールバック処理を適用することができる。例えば、配信パッケージにロールバック用プログラムが含まれている場合、制御部50は、ロールバック用プログラムを用いて、更新対象ECUに対してロールバック処理を実行する。
メモリ構成がダブルバンクの場合、制御部50は、新プログラムを更新対象ECUのフラッシュメモリに保存させる。例えば、旧プログラムの格納先が第1メモリ、新プログラムの書き込み先が第2メモリとすると、制御部50は、第2メモリに書き込まれた新プログラムを保存させる。図3(B)の例のように、イグニッションスイッチ13がオンの状態でインストールが行われ、第2メモリへの新プログラムの書き込みが完了している場合、制御部50は、見積り経過時間内に更新処理が完了していなくても、第2プログラムを保存させる。
電源処理実行部51は、車両1のIG電源である駆動用バッテリの出力電力をゼロにするための制御信号を電源系ECU14Dに出力し、車両1のイグニッションをオフさせる。
次に、図5のフローチャートを参照しながら、本実施形態に係るソフトウェア更新方法の一例を説明する。図5に示すフローチャートは、図4に示すソフトウェア更新装置10のコントローラ40により実行される。なお、図5のフローチャートは、更新対象ECUのメモリ構成がシングルバンクの場合のフローチャートである。また図6のフローチャートは、図2に示す、ダウンロード(ステップS2)~更新完了の確認(ステップS5)のフローチャートである。
ステップS11では、コントローラ40は、サーバー2から、車載通信装置11を介して、配信パッケージを取得する(ダウンロード)。配信パッケージは、更新用データ、更新用データの認証処理に用いられる認証用データ、及び更新処理見積り時間を含む。ステップS12では、コントローラ40は、ステップS11で取得した配信パッケージから更新処理見積り時間を取得する。
ステップS13では、コントローラ40は、イグニッションスイッチ13が乗員の操作によりオンからオフに切り替わったか否かを判定する。コントローラ40は、イグニッションスイッチ13から、乗員による操作を示す信号を取得する。乗員によりイグニッションスイッチ13がオンからオフに切り替わった場合、ステップS14に進み、イグニッションスイッチ13がオンを維持する場合、乗員によりイグニッションスイッチがオンからオフに切り替わるまで、ステップS13で待機する。
ステップS14では、コントローラ40は、ソフトウェアの更新処理開始をユーザに承諾を求める承諾要求情報を出力する。本実施形態では、コントローラ40は、車載通信装置11を介して、承諾要求情報をサーバー2に送信する。その後、承諾要求情報は、サーバー2からユーザ端末3に送信される。
ステップS15では、コントローラ40は、ステップS14で出力した承諾要求情報に対してユーザが承諾したか否かを判定する。更新処理開始の承諾を示す操作をユーザがユーザ端末3に行った場合、ユーザ端末3からサーバー2には、承諾要求情報に対するユーザの回答情報として、承諾情報が送信される。コントローラ40は、サーバー2から、承諾情報を取得し、更新処理を開始すると判定する。この場合、ステップS16に進む。一方、更新処理開始の拒否を示す操作をユーザがユーザ端末3に行った場合、ユーザ端末3からサーバー2には、承諾要求情報に対するユーザの回答情報として、拒否情報が送信される。コントローラ40は、サーバー2から、拒否情報を取得し、更新処理を開始しないと判定する。この場合、ステップS19に進む。
ステップS15でユーザが承諾したと判定された場合、ステップS16に進む。ステップS16では、コントローラ40は、更新対象ECUに対してソフトウェアの更新処理を開始させる。具体的には、ECUのメモリ構成がシングルバンクの場合、コントローラ40は、図3(A)の例で示すようなインストール処理及びアクティベート処理を実行する。各処理の具体的な内容については、既述の説明を援用する。また、このステップでは、コントローラ40は、更新処理時間を計測するためのタイマーを起動させて、更新処理開始からの経過時間を計測し始める。
ステップS17では、コントローラ40は、ステップS16で開始された更新処理が正常終了したか否かを判定する。更新対象ECUから更新処理完了通知がコントローラ40に入力された場合、コントローラ40は、更新処理が正常終了したと判定する。この場合、ステップS18に進む。一方、更新対象ECUから更新処理完了通知が入力されない場合、コントローラ40は、更新処理が正常終了してないと判定する。この場合、ステップS20に進む。
ステップS17で更新処理が正常終了したと判定された場合、ステップS18に進む。ステップS18では、コントローラ40は、更新対象ECUが実行する対象プログラムを新プログラムに決定し、更新対象ECUに新プログラムを実行させる。ステップS19では、コントローラ40は、ステップS13での乗員によるイグニッションスイッチへの操作に対応する処理として、車両1のイグニッションをオフする処理を実行する。具体的には、コントローラ40は、車両1のイグニッションをオフさせる制御信号を、電源系ECU14Dに出力する。ステップS19の処理が終了すると、図5に示すフローチャートでの処理が終了する。
ステップS17で更新処理が正常終了してないと判定された場合、ステップS29に進む。ステップS20では、コントローラ40は、更新処理が異常終了したか否かを判定する。例えば、コントローラ40は、更新対象ECUから異常終了通知が入力された場合、更新処理が異常終了したと判定する。この場合、ステップS21に進む。一方、例えば、コントローラ40は、更新対象ECUから異常終了通知が入力されない場合、更新処理が異常終了してないと判定する。この場合、ステップS22に進む。
ステップ20で更新処理が異常終了したと判定された場合、ステップS21に進む。ステップS21では、コントローラ40は、更新対象ECUが実行する対象プログラムを旧プログラムに決定し、更新対象ECUに旧プログラムを実行させる。例えば、コントローラ40は、更新対象ECUに対してロールバック処理を行う。ステップS21の処理が終了すると、ステップS19に進み、コントローラ40は、上述したステップS19での処理を実行する。
ステップS20で更新処理が異常終了してないと判定された場合、ステップS22に進む。ステップS22では、コントローラ40は、ステップS16から計測し始めた経過時間が、ステップS12で取得した更新処理見積り時間を超えたか否かを判定する。コントローラ40により経過時間が更新処理見積り時間を超えたと判された場合、ステップS21に進み、コントローラ40は、上述したステップS21での処理を実行する。一方、コントローラ40により経過時間が更新処理見積り時間を超えていないと判定された場合、ステップS17に戻り、以降、図5での処理が終了するまで、上述した各ステップでの処理が実行される。
更新対象ECUのメモリ構成がダブルバンクの場合のフローチャートについて、図5を用いて、シングルバンクでの処理と異なるステップのみを説明する。メモリ構成がダブルバンクの場合、コントローラ40は、ステップS11の処理が終了すると、ステップS12に進む前に、ステップS11で取得した新プログラムを用いて、インストール処理を実行する。具体的には、ECUのメモリ構成がダブルバンクの場合、コントローラ40は、図3(B)の例で示すようなインストール処理を実行する。処理の具体的な内容については、既述の説明を援用する。
またステップS12では、コントローラ40は、更新処理見積り時間として、アクティベート処理の見積り時間を取得する。このため、ステップS22での経過時間との比較対象は、アクティベート処理の見積り処理時間になる。またステップS16では、コントローラ40は、更新対象ECUに対するソフトウェアの更新処理として、アクティベート処理を実行する。ECUのメモリ構成がダブルバンクの場合、コントローラ40は、図3(B)の例で示すようなアクティベート処理を実行する。処理の具体的な内容については、既述の説明を援用する。またステップS21では、コントローラ40は、メモリに書き込まれた新プログラムを保存し、ECUのマイコンの読込先を旧プログラムが格納されているメモリに切り替える。
以上のように、本実施形態に係るソフトウェア更新装置10は、車両1に搭載されるボディ系ECU14A、走行系ECU14B、マルチメディア系ECU14Cのソフトウェアを更新するソフトウェア更新装置である。ソフトウェア更新装置10は、出力部43と、更新処理実行部45と、制御部50を備える。出力部43は、サーバー2から、ソフトウェアの更新に関する更新処理情報を取得する。更新処理実行部45は、承諾要求情報に対するユーザの回答である回答情報に応じて、更新処理を実行する。制御部50は、更新処理見積り時間に基づき、更新対象ECUが実行する対象プログラムを決定する。また制御部50は、更新処理見積時間内に更新処理が完了しない場合、旧プログラムを更新対象ECUに実行させ、更新処理見積り時間内にソフトウェアの更新が完了した場合、新プログラムを更新対象のECUに実行させる。
ソフトウェアの更新処理が終了しないエラーが起きる原因としては、例えば、更新対象ECUの周辺環境等が考えられている。例えば、何らかの原因により更新対象ECUの周辺温度が上昇すると、更新対象ECUでは、温度センサの検出結果に基づく自己診断処理が実行され、マイコンの演算負荷が下がる。マイコンの演算負荷が下がると、マイコンでの処理速度が低下して、更新処理が終了しないエラーに繋がると考えられている。しかしながら、本実施形態に係るソフトウェア更新装置10、ソフトウェア更新システム100、及びソフトウェア更新方法によれば、そのような原因で更新処理が終了しないエラーが発生した場合であっても、更新対象ECUが実行する対象プログラムを決定できるため、車両1が使用可能な状態になり、ユーザは車両1を使用できる。
また本実施形態では、情報取得部41は、サーバー2から、更新処理見積り時間を取得する。これにより、ソフトウェア更新装置10で更新処理見積りを算出することなく、更新対象ECUが実行する対象プログラムを決定できるため、ソフトウェア更新装置10での演算負荷を低減することができる。
また本実施形態では、更新対象ECUは、旧プログラムを格納するフラッシュメモリを有し、更新処理実行部45は、第1インストール実行部46と第1アクティベート実行部47を含む。第1インストール実行部46は、旧プログラムをフラッシュメモリから削除した後に、フラッシュメモリに新プログラムを書き込むインストール処理を実行する。第1アクティベート実行部47は、フラッシュメモリに書き込まれた新プログラムをマイコンに読み込ませるアクティベート処理を実行する。制御部50は、更新処理見積り時間内に更新処理が完了しない場合、更新対象ECUに対してロールバック処理を実行する。これにより、更新対象ECUのメモリ構成がシングルバンクの場合にも、更新処理が終了しないエラーの発生に対して、更新対象ECUが実行する対象プログラムを決定できる。
また本実施形態では、更新対象ECUは、旧プログラムを格納する第1メモリと、第2メモリのダブルバンクで構成されるフラッシュメモリを有し、更新処理実行部45は、第2インストール実行部48と第2アクティベート実行部49を含む。第2インストール実行部48は、第2メモリに新プログラムを書き込む。第2アクティベート実行部49は、マイコンのプログラムの読込先を、第1メモリから第2メモリに切り替えるアクティベート処理を実行する。制御部50は、更新処理見積り時間内に更新処理が完了しない場合の処理として、第2メモリに書き込まれた新プログラムを保存させる。更新対象ECUの第2メモリに新プログラムを保存できるため、更新処理が再度行われる際に、インストールする必要がなくなり、ソフトウェア更新装置10の演算負荷を低減することができる。
また本実施形態に係るソフトウェア更新システム100では、サーバー2は、更新用データのサイズ、及び更新対象ECUの種別のうち少なくとも何れか一方に基づき、更新処理見積り時間を算出する。これにより、ソフトウェア更新装置10での演算負荷を低減することができる。
なお、本実施形態では、ソフトウェア更新装置10が、サーバー2から更新処理見積り時間を取得する構成を例に挙げて説明したが、更新処理見積り時間を算出する主体はサーバー2に限定されず、ソフトウェア更新装置10が更新処理見積り時間を算出してもよい。
本実施形態の変形例として、コントローラ40は、機能ブロックとして、更新用データのデータサイズ及び更新対象ECUの種別のうち少なくとも何れか一方に基づき、更新処理見積り時間を算出する算出部を有していてもよい。例えば、更新用データのデータサイズと更新処理見積り時間の関係を示すマップが予め記憶部42に格納されている場合、算出部は、当該マップを参照して、データサイズに応じた更新処理見積り時間を算出してもよい。また例えば、算出部は、更新用データのデータサイズが大きいほど、更新処理見積り時間を長く算出してもよい。また例えば、制御装置23は、ECUが備えるマイコン及び/又はフラッシュメモリの仕様に基づき、更新処理見積り時間を算出してもよい。具体的な算出方法の例については、上述した制御装置23での算出方法の例を援用する。変形例のように、ソフトウェア更新装置10が更新処理見積り時間を算出することで、サーバー2での演算負荷を低減することができる。なお、コントローラ40が更新処理見積り時間を算出するタイミングは、更新処理が開始される前であれば特に限定されないが、例えば、図5のフローチャートのステップS12において、コントローラ40は、更新処理見積り時間を取得する代わりに、更新処理見積り時間を算出する。
≪第2実施形態≫
次に、第2実施形態に係るソフトウェア更新装置について説明する。上述した第1実施形態では、図2に示すOTPによるソフウェア更新の各ステップのうち、インストール(ステップS3)とアクティベート(ステップS4)を例に挙げて説明したが、本実施形態では、インストール及びアクティベートに加えて、ダウンロード(ステップS2)を含めた例について説明する。例えば、ステップS1でのキャンペーン情報の通知後に更新開始の承諾をユーザに求め、ユーザが承諾した場合に、その後、ユーザに承諾を求めることなく、ダウンロード~アクティベートが順次行われる場面が想定される。一例として、車両が自宅の駐車場に駐車中等、車両がユーザに使用されてない状況で、OTPによるソフトウェア更新が行われる場面が挙げられる。
第2実施形態に係るソフトウェア更新システムは、第1実施形態に係るソフトウェア更新システム100に対して、サーバー2が算出する見積り時間と、ソフトウェア更新装置10のコントローラ60が備える機能ブロックが異なる以外は、第1実施形態に係るソフトウェア更新システム100と同じ構成である。このため、第1実施形態と同じ構成については、既述の説明を援用する。
本実施形態では、サーバー2は、配信パッケージのダウンロードが完了するまでのダウンロード見積り時間と、第1実施形態における更新処理見積り時間とを合わせて、ソフトウェアの更新が完了するまでの見積り時間(更新完了見積り時間)として算出する。サーバー2は、更新完了見積り時間を含むキャンペーン情報を一又は複数の車両1に配信する。
サーバー2の制御装置23は、配信パッケージのデータサイズに基づき、ダウンロード見積り時間を算出する。例えば、配信パッケージのデータサイズとダウンロード見積り時間の関係を示すマップが予めデータベース22に格納されている場合、制御装置23は、当該マップを参照して、データサイズに応じたダウンロード見積り時間を算出する。また例えば、制御装置23は、配信パッケージのデータサイズが大きいほど、ダウンロード見積り時間を長く算出する。
次に、本実施形態のコントローラ40の機能ブロックについて説明する。図6は、本実施形態に係るソフトウェア更新装置10のコントローラ60が有する機能ブロックの一例である。本実施形態では、コントローラ60は、第1実施形態での機能ブロックに加えて、通信状況取得部52と、補正部53と、通知部54を有している。また本実施形態では、第1実施形態に対して、出力部43の機能が一部異なる。コントローラ60は、メモリに記憶されたソフトウェアによって、機能ブロックの各機能を実現する。なお、第1実施形態と同様の機能ブロックについては、第1実施形態での説明を援用する。
本実施形態では、出力部43は、更新処理実行部45による更新処理のみならず、サーバー2からの配信パッケージのダウンロードも含めて、ソフトウェアの更新を承諾するか否かをユーザに求める承諾要求情報を出力する。承諾要求情報の具体例やユーザ端末3に送信されるまでの方法については、第1実施形態での説明を援用する。また本実施形態では、出力部43は、情報取得部41によりキャンペーン情報を取得してから、情報取得部41が配信パッケージを取得するまでの間に、承諾要求情報を出力する。
通信状況取得部52は、サーバー2との間の通信状況に関する通信状況情報を取得する。通信状況取得部52は、車載通信装置11とサーバー2の通信装置21との間に通信状態を検知し、検知した通信状態を通信状況情報として取得する。例えば、通信状況取得部52は、車載通信装置11と通信装置21との間で通信が成立しない状態の場合、通信状態の異常と検知する。また通信状況取得部52は、無線データ通信における遅延時間を算出してもよい。遅延時間は、車載通信装置11の能力により決まる固定的な遅延時間と、無線通信回線網4にアクセスする通信装置の多さ、通信するデータサイズ(通信料)等により変動する遅延時間を含む。通信状況取得部52には、本願出願時に知られた通信状況を取得する技術を適用することができる。
補正部53は、キャンペーン情報から更新完了見積り時間を取得し、通信状況取得部52により取得された通信状況情報に基づき、更新完了見積り時間を補正する。更新完了見積り時間のうち、サーバー2で算出されたダウンロード見積り時間には実際の通信状況が考慮されてないため、ダウンロード見積り時間と実際のダウンロード時間とが相違する可能性がある。例えば、車載通信装置11と通信装置21との間の通信状態が良好のため、無線データ通信における遅延時間が短くなり、実際のダウンロード時間がダウンロード見積り時間よりも早まる場合がある。補正部53は、無線データ通信における遅延時間に応じて、ダウンロード見積り時間を短縮させる。当然に、車載通信装置11と通信装置21との間の通信状態が悪いため、無線データ通信における遅延時間が長くなり、実際のダウンロード時間がダウンロード見積り時間より遅くなる場合もある。この場合、補正部53は、通信状況情報に含まれる無線データ通信における遅延時間に応じて、ダウンロード見積り時間を延長させる。
通知部54は、補正部53により補正されたダウンロード見積り時間(以降、補正後のダウンロード見積り時間と称す)と、更新処理見積り時間とが合算された更新見積り時間(以降、補正後の更新見積り時間と称す)の情報を出力する。本実施形態では、通知部54は、車載通信装置11を介して、補正後の更新見積り時間の情報を、サーバー2に送信する。車載通信装置11から送信された補正後の更新見積り時間の情報は、サーバー2で受信され、その後、サーバー2からユーザ端末3に送信される。補正後の更新見積り時間の情報がユーザ端末3に表示されることで、ユーザには補正後の見積り時間が通知される。
また通知部54は、補正後の更新見積り時間の情報を出力する出力条件として、補正後の更新見積り時間が、サーバー2で算出された更新見積り時間(以降、補正前の更新見積り時間と称す)よりも所定の閾値時間以上長い場合、補正後の更新見積り時間を出力してもよい。所定の閾値時間としては、例えば、5分等の分単位の時間であって、予め定められた時間が挙げられる。実際の更新時間が見積り時間よりも大幅に遅れることが予想される場合、更新を承諾するか否かのユーザの判断に影響を与える可能性が高いため、配信パッケージがダウンロードされる前にユーザに補正後の更新時間を通知する。一方、通知部54は、補正後の更新見積り時間が補正前の更新見積り時間よりも短い場合、補正後の見積り時間を出力しなくてもよい。実際の更新時間が見積り時間よりも早まることが予想される場合、更新を承諾するか否かのユーザの判断に影響を与える可能性は低いため、配信パッケージがダウンロードされる前に補正後の更新時間をユーザに通知しない。
次に、図7のフローチャートを参照しながら、本実施形態に係るソフトウェア更新方法の一例を説明する。図7に示すフローチャートは、図6に示すソフトウェア更新装置10のコントローラ60により実行される。なお、図7のフローチャートは、更新対象ECUのメモリ構成がシングルバンクの場合のフローチャートである。また図7のフローチャートは、図2に示す、キャンペーン情報の通知(ステップS1)~更新完了の確認(ステップS5)のフローチャートである。また図7のフローチャートは、図6のフローチャートと同じステップを一部含む。図6と同じステップには、図6のステップと同じ符号が付されており、図6と同じステップについては、既述の説明を援用する。図7のフローチャートでは、イグニッションスイッチ13はオフされているものとし、図6に示すステップS19が省略されている。なお、図7のフローチャートにおいて、図6に示すステップS19での処理が行われてもよい。
ステップS31では、コントローラ60は、サーバー2から、車載通信装置11を介して、キャンペーン情報を取得する(ダウンロード)。キャンペーン情報は、更新用データのデータサイズ、更新対象ECUを識別する情報、更新対象であるソフトウェアのバージョンの情報、更新される機能の概要説明、ダウンロード見積り時間、及び、更新処理見積り時間等を含む。ステップS32では、コントローラ60は、ステップS31で取得したキャンペーン情報から、ダウンロード見積り時間と更新処理見積り時間が合算された更新見積り時間を取得する。
ステップS33では、コントローラ60は、サーバー2との間の通信状況に関する通信状況情報に基づき、ステップS32で取得した更新見積り時間のうち、ダウンロード見積り時間を補正する。コントローラ60は、補正されたダウンロード見積り時間とステップS31で取得した更新処理見積り時間とが合算された補正後の更新見積り時間を出力する。本実施形態では、コントローラ60は、車載通信装置11及びサーバー2を介して、補正後の更新見積り時間をユーザ端末3に送信する。
ステップS34では、コントローラ60は、ソフトウェアの更新をユーザに承諾を求める承諾要求情報を出力する。本実施形態では、コントローラ60は、車載通信装置11及びサーバー2を介して、承諾要求情報をユーザ端末3に送信する。
ステップS35では、コントローラ60は、ステップS34で出力した承諾要求情報に対してユーザが承諾したか否かを判定する。ソフトウェアの更新の承諾を示す操作をユーザがユーザ端末3に行った場合、ユーザ端末3からサーバー2には、承諾要求情報に対するユーザの回答情報として、承諾情報が送信される。コントローラ60は、サーバー2から、承諾情報を取得し、ソフトウェアの更新を開始すると判定する。また本実施形態では、ユーザが承諾したと判定された場合、コントローラ60は、配信パッケージのダウンロード時間及び更新処理時間を計測するためのタイマーを起動させて、配信パッケージのダウンロードからの経過時間を計測し始める。
一方、更新処理開始の拒否を示す操作をユーザがユーザ端末3に行った場合、ユーザ端末3からサーバー2には、承諾要求情報に対するユーザの回答情報として、拒否情報が送信される。コントローラ60は、サーバー2から、拒否情報を取得し、図7に示すフローチャートでの処理が終了する。
ステップS35でユーザが承諾したと判定された場合、ステップS11に進み、第1実施形態と同様に、コントローラ60による配信パッケージのダウンロードが開始される。配信パッケージのダウンロードが完了した後、ステップS16に進み、第1実施形態と同様に、コントローラ60による更新処理が開始される。
ステップS37は、図6に示すステップS22に対応したステップである。ステップS37では、コントローラ60は、ステップS35でユーザが承諾した場合に計測し始めた計測時間と、ステップS33で補正した補正後の更新見積り時間とを比較し、経過時間が補正後の更新見積り時間を超えたか否かを判定する。経過時間の起算タイミングと経過時間の比較対象が異なる以外は、ステップS22と同様のため、既述の説明を援用する。
以上のように、本実施形態に係るソフトウェア更新装置10は、通信状況取得部52と、補正部53と、通知部54を備える。通信状況取得部52は、サーバー2との間の通信状況に関する通信状況情報を取得する。補正部53は、通信状況情報に基づき、更新見積り時間を補正する。通知部54は、補正後の更新見積り時間の情報を出力する。これにより、ダウンロード見積り時間の精度を向上させることができる。またダウンロード見積り時間を含む更新見積り時間をユーザに通知できるため、ユーザは、ダウンロードを含めてソフトウェアの更新に要する見積り時間を認識することができる。
また本実施形態では、通知部54は、補正後の更新見積り時間が補正前の更新見積り時間よりも、予め設定された所定の閾値時間以上長い場合、補正後の更新見積り時間の情報を出力する。これにより、例えば、車載通信装置11と通信装置21との間の通信状態が悪いため、実際のダウンロード時間がダウンロード見積り時間より遅くなる場合であっても、ユーザは、実際の通信状況が考慮された見積り時間を認識することができる。
また本実施形態では、通知部54は、補正後の更新見積り時間が補正前の更新見積り時間よりも短い場合、補正後の更新見積り時間の情報を出力しない。これにより、例えば、車載通信装置11と通信装置21との間の通信状態が良好なため、実際のダウンロード時間がダウンロード見積り時間より早まる場合には、ユーザに見積り時間を通知する処理を省略することができる。その結果、OTPによるソフトウェア更新フロー全体に要する時間の短縮化を図ることができる。
なお、以上に説明した実施形態は、本発明の理解を容易にするために記載されたものであって、本発明を限定するために記載されたものではない。したがって、上記の実施形態に開示された各要素は、本発明の技術的範囲に属する全ての設計変更や均等物をも含む趣旨である。
例えば、上述した第1実施形態では、車両1が走行可能な状態で、配信パッケージのダウンロードが行われるフローを例に挙げて説明したが、第1実施形態における「更新処理見積り時間」を、第2実施形態における「ダウンロード見積り時間と更新処理見積り時間とが合算された更新見積り時間」に置き換えることができる。例えば、第1実施形態の変形例では、コントローラ40が更新処理見積り時間を算出する算出部を有する構成を例に挙げて説明したが、第2実施形態に係るコントローラ60は、更新見積り時間のうち、ダウンロード見積り時間を算出する算出部を有していてもよい。車両1が走行経路に沿って走行する場合、情報取得部41は、車両1のナビゲーションシステム(図示しない)から車両1の走行経路の情報を取得する。算出部は、通信状況取得部52により取得された通信状況情報と、情報取得部41により取得された車両1の走行経路に基づき、ダウンロード見積り時間を算出する。例えば、算出部は、通信事業者が提供する、無線通信回線網4の通信状況を示す通信マップから、走行経路上の複数の地点での無線通信回線網4の通信状況情報を取得する。算出部は、車両1の走行経路上での通信状況情報に基づき、車両1が走行経路に沿って走行した場合のダウンロード見積り時間を算出する。車両1の走行可能な状態で、配信パッケージをダウンロードする場合のダウンロード見積り時間の精度を向上させることができる。
また例えば、上述した第2実施形態において、更新見積り時間を補正する構成を例に挙げて説明したが、更新見積り時間を補正する構成に限定されない。コントローラ60は、補正前の更新見積り時間を用いて、更新対象ECUの実行対象プログラムを決定してもよい。
また例えば、上述した第2実施形態では、図2に示すダウンロード(ステップS2)~更新完了の通知(ステップS5)までの間、ユーザへの承諾要求がないフローを例に挙げて説明したが、コントローラ60は、各ステップの処理開始前に、処理開始を承諾するかをユーザに求める承諾要求情報を出力してもよい。またコントローラ60は、メモリ構成がダブルバンクの場合であって、経過時間が更新見積り時間(補正した場合も含む)を超えた場合の処理として、更新対象ECUに対してロールバック処理を実行してもよい。例えば、図7のフローチャートにおいて、実際のダウンロード時間がダウンロード見積り時間よりも長くなり、インストール処理を実行中に、経過時間が補正後の更新見積り時間を超えたと判定されたとする(ステップS36でYesと判定)。この場合、第2メモリへの新プログラムの書き込みが完了していないため、コントローラ60は、更新対象ECUに対してロールバック処理を実行する。更新対象ECUのメモリ構成がダブルバンクであって、新プログラムの書き込みが完了してない場合であっても、更新対象ECUが実行する対象プログラムを決定できるため、車両1が使用可能な状態になり、ユーザは車両1を使用できる。
また例えば、コントローラ60は、更新処理が開始してから完了するまでに要した実際の所要時間を計測する計測部を備えていてもよい。出力部43は、計測部による計測が完了すると、車載通信装置11を介して、更新処理に要した実際の所要時間の情報を、サーバー2に送信する。これにより、ソフトウェアの更新が済んでいない他の車両1への更新処理見積り時間に反映させることができ、更新処理見積り時間の精度を向上させることができる。