本開示の実施の形態について、図面を参照しながら詳細に説明する。図中、同一または相当部分には同一符号を付してその説明は繰り返さない。
図1は、この実施の形態に係るソフトウェア配信システムの構成を示す図である。図1を参照して、このソフトウェア配信システムは、車両100と、モバイル端末300と、OTAセンタ500とを含む。なお、「OTA」は、「Over The Air」の略語である。
車両100は、内燃機関を備えない電気自動車(BEV)である。この実施の形態に係る車両100は、OTAアクセス機能(OTAセンタ500と直接無線通信する機能)を有しておらず、他の通信装置(すなわち、車両100自身が備える通信装置ではない通信装置)を経由しなければOTAセンタ500と通信することができない。具体的には、車両100は、モバイル端末300を介して、OTAセンタ500と無線通信を行う。ただし、車両100は、以下に説明するソフトウェア配信システムが適用される車両の一例であり、他の車両にソフトウェア配信システムが適用されてもよい。
モバイル端末300は、ユーザによって持ち運び可能に構成される。モバイル端末300は、車両100のユーザ(車両管理者)によって携帯されて操作される。この実施の形態では、モバイル端末300として、タッチパネルディスプレイを具備するスマートフォンを採用する。スマートフォンは、コンピュータを内蔵し、スピーカ機能を有する。ただしこれに限られず、モバイル端末300としては、車両100のユーザが携帯可能な任意の端末を採用可能である。例えば、ラップトップ、タブレット端末、携帯型ゲーム機、ウェアラブルデバイス(スマートウォッチ、スマートグラス、スマートグローブなど)なども、モバイル端末300として採用可能である。
モバイル端末300は、プロセッサ310、メモリ320、および通信モジュール330を備える。プロセッサ310は、例えばCPU(Central Processing Unit)を含む。メモリ320は、例えばフラッシュメモリのような不揮発性メモリを含む。通信モジュール330は、OTAセンタ500と直接的に無線通信を行うための通信I/F(インターフェース)を含む。また、通信モジュール330は、車両100と直接的に無線通信を行うための通信I/Fも含む。モバイル端末300は、車両100とOTAセンタ500との通信を仲介する。例えば、モバイル端末300が、車両100からの要求に応じて、OTAセンタ500のアドレスを指定して通信ネットワークNWにアクセスすることにより、車両100(ECU110)がモバイル端末300(通信モジュール330)を介してOTAセンタ500と通信可能になる。これにより、車両100とOTAセンタ500との間での無線通信が確立する。
モバイル端末300には、OTAセンタ500が提供するサービスを利用するためのアプリケーションソフトウェア(以下、「モバイルアプリ」と称する)がインストールされている。モバイルアプリにより、モバイル端末300の識別情報(端末ID)が、車両100の識別情報(車両ID)と紐付けられてOTAセンタ500に登録される。また、モバイル端末300は、モバイルアプリを通じて、OTAセンタ500と情報のやり取りを行うことができる。
OTAセンタ500は、OTA技術による車両ソフトウェア更新サービスを提供するサーバである。OTAセンタ500は、当該センタから通信区画を経由して遠隔での車載ECUソフトウェア更新を実施するように構成される。OTAセンタ500は、車載ECUのソフトウェアを配信する。なお、「ECU」は、電子制御装置(Electronic Control Unit)を意味する。
OTAセンタ500は、プロセッサ510、メモリ520、および通信モジュール530を備える。プロセッサ510は、例えばCPUを含む。メモリ520は、例えばフラッシュメモリのような不揮発性メモリを含む。通信モジュール530は、有線で通信ネットワークNWと接続され、通信ネットワークNWを介して複数のモバイル端末(モバイル端末300を含む)と通信する。通信ネットワークNWは、例えばインターネットと無線基地局とによって構築される広域ネットワークである。通信ネットワークNWは携帯電話網を含んでもよい。
OTAセンタ500には、OTAセンタ500から車両ソフトウェア更新サービスを受ける各車両(車両100を含む)の識別情報(車両ID)が予め登録されている。OTAセンタ500の記憶装置(例えば、メモリ520)は、各車両に関する情報(以下、「車両情報」とも称する)を、車両IDで区別して記憶している。車両情報は、例えば、各車両の仕様と、各車両の通信アドレス(車両100に関しては、モバイル端末300の通信アドレス)とを含む。
車両100は、複数のECU(ECU110,121,122を含む)を備える。車両100が備えるECUの数は任意である。各車載ECUは、少なくとも1つのプロセッサと、少なくとも1つのメモリとを備えるコンピュータを内蔵する。各車載ECUは、メインマイコンおよびサブマイコンのような形態で、複数のマイコン(マイクロコンピュータ)を備えてもよい。車両100においては、ECU同士が、通信バスを介して接続されており、有線通信可能に構成される。なお、ECU間の通信方式は、特に限定されないが、例えばCAN(Controller Area Network)またはEthernet(登録商標)であってもよい。
ECU110は、プロセッサ111およびメモリ112を備える。プロセッサ111は、例えばCPUを含む。メモリ112は、例えばフラッシュメモリのような不揮発性メモリを含む。車両100は通信装置190をさらに備える。ECU110は通信装置190を通じて車両外部の装置と通信を行う。通信装置190は、モバイル端末300と直接的に無線通信を行うための通信I/F(インターフェース)を含む。通信装置190とモバイル端末300とは、無線LAN(Local Area Network)、NFC(Near Field Communication)、またはBluetooth(登録商標)のような近距離通信を行なってもよい。通信装置190は、車内または車両周辺の範囲内に存在するモバイル端末300と直接通信してもよい。車両100の停車中に車内または車外のモバイル端末300とECU110とが通信装置190を介して相互に情報のやり取りを行ってもよい。また、車両100の走行中に車内のモバイル端末300とECU110とが通信装置190を介して相互に情報のやり取りを行ってもよい。ECU110は、前述のようにOTAセンタ500との通信をモバイル端末300に要求することで、モバイル端末300を介してOTAセンタ500と通信することができる。
上記のように、車両100のECU110は、モバイル端末300を介して、OTAセンタ500と無線通信可能に構成される。車両100は、停車中と走行中とのいずれにおいても、OTAセンタ500と通信できる。ECU110は、車両内情報を管理し、キャンペーンを受け取り、ソフトウェア更新シーケンスを管理する。
なお、車両100とモバイル端末300との通信方式は上記近距離通信に限られない。車両100とモバイル端末300とは互いに離れていても通信できるように構成されてもよい。また、通信装置190は、図示しないスキャンツール(有線ソフトウェア更新を行う専用ツール)と有線通信を行うための通信I/Fをさらに含んでもよい。ECU110は、通信装置190を介して、図示しない車内のDLC(Data Link Connector)に接続されたスキャンツールと有線通信してもよい。
車両100は、自動運転可能に構成される自動運転車両である。より詳しくは、車両100は、有人走行と無人走行との両方を実行可能に構成される。車両100は、無人で自律走行可能に構成されるが、ユーザによる手動運転で走行(有人走行)することもできる。また、車両100は、有人走行中に自動運転(例えば、オートクルーズコントロール)を実行することも可能である。自動運転のレベルは、完全自動運転(レベル5)であってもよいし、条件付きの自動運転(例えば、レベル4)であってもよい。
車両100は、運転装置130と、ADS(Autonomous Driving System)140とをさらに備える。車両100においては、ECU121が運転装置130を制御するように構成される。
運転装置130は、アクセル装置、ブレーキ装置、および操舵装置を含む。アクセル装置は、例えば、車両の駆動輪を回転させるモータジェネレータ(以下、「MG」と表記する)と、MGを駆動するPCU(Power Control Unit)と、MGを駆動するための電力をPCUに供給するバッテリとを含む。MGは、車両の走行用モータとして機能する。ブレーキ装置は、例えば、車両の各車輪に設けられた制動装置と、制動装置を駆動するアクチュエータとを含む。操舵装置は、例えば、EPS(Electric Power Steering)と、EPSを駆動するアクチュエータとを含む。
ADS140は、車両の外部環境を認識する認識用センサ(例えば、カメラ、ミリ波レーダ、ライダーの少なくとも1つ)を含み、認識用センサによって逐次取得される情報に基づいて自動運転に係る処理を実行する。具体的には、ADS140は、ECU121と連携しながら、車両の外部環境に応じた走行計画(今後の車両の挙動を示す情報)を生成する。そして、ADS140は、その走行計画に従って車両100を走行させるように、運転装置130に含まれる各種アクチュエータの制御をECU121に要求する。
なお、この実施の形態では、ADSが車両に内蔵される。しかしこれに限られず、ADSは、車両に対して着脱可能な自動運転キットであってもよい。自動運転キットのセンサユニット(認識用センサを含む)は、車両のルーフトップに取り付けられてもよい。
車両100は、起動スイッチ150と、HMI(Human Machine Interface)170とをさらに備える。
起動スイッチ150は、ユーザが車両システム(車両100の制御システム)を起動させるためのスイッチであり、例えば車室内に設置される。一般に、起動スイッチは「パワースイッチ」または「イグニッションスイッチ」などと称される。ユーザが起動スイッチ150を操作することによって車両システム(車両に搭載された各ECUを含む)のオン(作動)/オフ(停止)が切り替わる。起動スイッチ150がオン操作されることによって停止状態の車両システムが起動し、車両システムは作動状態(以下、「IGオン」とも称する)になる。また、車両システムが作動しているときに、起動スイッチ150がオフ操作されると、車両システムは停止状態(以下、「IGオフ」とも称する)になる。
起動スイッチ150のオン操作は、車両の状態をIGオフからIGオンに切り替えるための操作である。ユーザが起動スイッチ150をオン操作すると、起動要求が各車載ECUに入力される。すなわち、各車載ECUは、ユーザからの起動要求を受け付ける。一方、起動スイッチ150のオフ操作は、車両の状態をIGオンからIGオフに切り替えるための操作である。ユーザが起動スイッチ150をオフ操作すると、シャットダウン要求が各車載ECUに入力され、車両100はシャットダウン待機状態になる。このように、各車載ECUは、ユーザからのシャットダウン要求を受け付ける。ただし、走行中の車両においては、起動スイッチ150のオフ操作が禁止される。
HMI170は入力装置および表示装置を含む。HMI170は、入力装置および表示装置として機能するタッチパネルディスプレイを含んでもよい。HMI170は、表示装置として、インフォメーションディスプレイまたはテンテールを含んでもよい。HMI170は、入力装置として、ステアリングスイッチを含んでもよい。また、IVI(In-Vehicle Infotainment)システムと、メータパネルと、ヘッドアップディスプレイとの少なくとも1つが、HMI170として機能してもよい。HMI170は、カーナビゲーションシステムの入力装置および表示装置を含んでもよい。
図2は、この実施の形態に係るソフトウェア更新方法の概要について説明するための図である。図1とともに図2を参照して、ソフトウェア更新(より詳しくは、OTAを利用した車両ソフトウェアの更新)に係る処理は、構成同期、キャンペーン通知と適用承諾、ダウンロード、インストール、アクティベート、ソフトウェア更新完了通知のような手順で行われる。以下に説明する処理は、OTAセンタ500と、OTAセンタ500からのソフトウェア配信を受ける各車両(車両100を含む)とによって実行される。OTAセンタ500からの配信を受ける車両の数は、50台程度でもよいし、100台以上1000台未満でもよいし、1000台以上でもよい。
IGオン状態の車両100は、予め設定された時間が経過するごとに繰り返し構成同期を実行する。また、IGオン状態の車両100は、OTAセンタ500から構成同期の要求を受けた場合にも構成同期を実行する。車両100(ECU110)による構成同期処理は、車両構成情報をOTAセンタ500に送信することを含む。車両構成情報は、例えば、車両100に含まれるECUごとのハードウェア情報(ハードウェアの品番、ECUの識別子などを示す情報)およびソフトウェア情報(ソフトウェアの品番などを示す情報)を含む。この実施の形態では、車両構成情報が、認可対象ごとのRXSWINをさらに含む。RXSWINは、機能型式認可を構成するソフトウェアを特定可能な識別番号である。
OTAセンタ500は、車両100から上記車両構成情報を受信すると、現時点で発生しているキャンペーン(ソフトウェアの更新)を確認する。そして、車両100に適用可能なキャンペーンが存在すれば、OTAセンタ500は、そのキャンペーンに係る新しいソフトウェア(ソフトウェアの更新版)のダウンロードの承諾を車両100のユーザに要求する承諾要求信号を送信する。承諾要求信号は、そのキャンペーンに関する情報(キャンペーン情報)を含む。キャンペーン情報は、例えば、キャンペーン属性情報(ソフトウェア更新の目的、および更新で影響の可能性がある車両100の機能などを示す情報)と、キャンペーン対象車両のリストと、キャンペーン対象ECUに関する情報(例えば、更新前後のソフトウェア情報)と、更新前後のユーザへの通知に関する情報との少なくとも1つを含んでもよい。なお、通知されるキャンペーンは、新たに発生したキャンペーンかもしれないし、以前適用しなかったキャンペーンかもしれない。以下では、上記承諾要求信号の送信を、「キャンペーン通知」とも称する。
車両100は、キャンペーン通知(承諾要求信号)を受けると、そのキャンペーンの適用を承諾するか否かの入力をユーザに求める。具体的には、車両100は、例えば「新しいソフトウェアが見つかりました。この車に適用しますか?」のようなメッセージを車載HMI(例えば、HMI170)に表示させて、「承諾」と「拒否」とのいずれか一方を示す入力をユーザに要求する。そして、ユーザが車載HMIに対して「承諾」を示す入力を行うと、車両100は、以下に説明するダウンロードに係る処理を実行する。他方、ユーザが車載HMIに対して「拒否」を示す入力を行うと、車両100はダウンロードに係る処理を実行しない。この場合、OTAセンタ500は、ソフトウェア更新に係る処理をダウンロードフェーズに進めることなく終了させる。
この実施の形態では、OTAセンタ500と車両100(ECU110)とが、以下に説明する手順でダウンロードに係る処理を実行する。
車両100のECU110は、新しいソフトウェアを含む配信パッケージをモバイル端末300に要求する。そして、ECU110は、モバイル端末300を介してOTAセンタ500と無線通信を行いながら、その配信パッケージのダウンロード(受信および保存)を実行する。配信パッケージは、新しいソフトウェア(例えば、キャンペーンの対象となるECUごとの更新データのセット)に加えて、パッケージ属性情報(更新区分、配信パッケージ中の更新データ数、各ECUのインストール順序などを示す情報)、および更新データ属性情報(ターゲットECUの識別子、更新データの正当性を検証するための検証用データなど)を含んでもよい。ターゲットECUは、ソフトウェア更新対象となるECUである。例えば、ターゲットECUがECU121であり、更新されるソフトウェアが自動運転制御プログラムであってもよい。
上述したダウンロードに係る処理により、ECU110が備える記憶装置(例えば、メモリ112)に上記配信パッケージが保存される。ダウンロード中は、車載HMIがユーザにダウンロードの進捗を報知する。ダウンロード完了後、ECU110は、ダウンロードされた配信パッケージの真正性を検証する。そして、検証の結果が「正常」であれば、ECU110はソフトウェア更新状態(ダウンロード完了)を、モバイル端末300を介してOTAセンタ500に通知する。この通知が行われることは、ダウンロードが成功したことを意味する。
ダウンロードが成功すると、車両100はインストールを実行する。具体的には、ECU110は、ターゲットECU(例えば、ECU121)に、当該ターゲットECUの状態およびDTC(Diagnostic Trouble Code)の出力を要求する。ECU110は、ターゲットECUの状態およびDTCに基づいて、ターゲットECUごとにインストール実行可否を判断する。そして、ECU110は、インストール実行可能なターゲットECUに新しいソフトウェア(更新データ)を転送する。更新データを受信したターゲットECUは、その更新データのインストール(不揮発性メモリへの書込み)を実行する。インストール中は、車載HMIがユーザにインストールの進捗を報知する。
ECU110からターゲットECUへの上記更新データの転送が完了すると、ターゲットECUは、転送完了通知をECU110に送信する。そして、転送完了通知を受けたECU110は、ターゲットECUに完全性検証を要求する。この要求を受けたターゲットECUは、完全性検証データ(検証用データ)を用いて検証を行い、その検証結果をECU110へ送信する。ECU110は、ターゲットECUごとの検証結果(インストールの完了/失敗/中止)を保存する。全てのターゲットECUの完全性検証が完了し、全ての検証結果が「正常」であれば、ECU110は、ソフトウェア更新状態(インストール完了)を、モバイル端末300を介してOTAセンタ500に通知する。この通知が行われることは、インストールが成功したことを意味する。
ダウンロードに続けてインストールにも成功すると、車両100はアクティベート待ち状態になる。その後、車両100の起動スイッチ150にオフ操作が行われると、ECU110が、車載HMIにアクティベート承諾画面を表示させて、「承諾」と「拒否」とのいずれか一方を示す入力をユーザに要求する。アクティベート承諾画面は、車両100の制限事項(例えば、一定時間車両を使用できないこと、または過大電流デバイスの動作が制限されること)を表示してもよい。アクティベート承諾画面は、アクティベートが完了するまで車両100を非走行状態(例えば、シャットダウン待機状態、パーキングレンジ固定、または電動パーキングブレーキ作動)に維持することをユーザに要求してもよい。アクティベート承諾画面は、車両100の状態の確認をユーザに促すメッセージを表示してもよい。
そして、ユーザがアクティベート承諾画面に対して「承諾」を示す入力を行うと、ECU110が各ターゲットECUにアクティベート(インストールされたソフトウェアの有効化)を要求する。他方、ユーザがアクティベート承諾画面に対して「拒否」を示す入力を行うと、ECU110はアクティベートを実行することなくソフトウェア更新に係る処理を中止し、車両システムがシャットダウンされる。
ターゲットECUは、ECU110からの要求に応じてアクティベートを実行する。複数のマイコン(例えば、メインマイコン及びサブマイコン)を備えるターゲットECUでは、ターゲットECU内のサブマイコンが、ターゲットECU内のメインマイコンが持つFlash書換え機能によって書換えを行ってもよい。あるいは、ターゲットECU内の各マイコンが、ECU110と直接通信して書換えを行ってもよい。
各ターゲットECUは、アクティベートの結果(成功/失敗)をECU110に通知する。詳細は後述するが、ターゲットECUにおいてアクティベートが失敗した場合には、ソフトウェアのロールバックが実行される。他方、ターゲットECUにおいてアクティベートが成功すると、例えば、ターゲットECU内の全てのマイコン(更新対象)の書換えが完了した時点でそれらのマイコンが同期してリセット起動(自己リセット)し、更新後のソフトウェアを起動する。ターゲットECUは、自己リセット完了後、ECU110からのシャットダウン要求を待っている状態になる。こうした状態のターゲットECUは、ECU110とのダイアグノーシス通信を継続できる。
ECU110は、ターゲットECUからアクティベート成功の通知を受けると、更新後のソフトウェアの識別情報(ECU Software ID)をターゲットECUに要求する。そして、ECU110は、ターゲットECUから受け取った識別情報と、キャンペーン情報に含まれる更新後のソフトウェアの識別情報とが、互いに一致するか否かを確認する(構成の確認)。構成の確認が成功したら(すなわち、ソフトウェアの識別情報が一致したら)、ECU110はRXSWINを更新する。RXSWINが更新されたことは、アクティベートが成功したことを意味する。
全てのターゲットECUについてアクティベートが成功すると、ECU110は、ソフトウェア更新状態(ソフトウェア更新完了)を、モバイル端末300を介してOTAセンタ500に通知する。この通知が行われることは、OTAソフトウェア更新が成功したことを意味する。また、ECU110は、ソフトウェア更新の結果を車載HMIに表示させてもよい。車載HMIは、例えば更新の成功を示すソフトウェア更新完了画面を表示する。上記ソフトウェア更新完了の通知が行われると、ECU110が各ターゲットECUにシャットダウン要求を行い、車両100の制御システムがシャットダウンされる。これにより、車両100はIGオフになる。その後、車両100の起動スイッチ150にオン操作が行われると、車両システムがIGオンになる。これにより、ターゲットECUで更新プログラム(新しいバージョンのソフトウェア)が起動する。なお、更新されるソフトウェアは、上述の自動運転制御プログラムのような運転支援系の制御プログラムに限られず任意である。例えば、OTAセンタ500は、エンターテイメントに関するソフトウェアを配信してもよい。
ところで、車載ECU内の典型的なマイコン(マイクロコンピュータ)は、デュアルバンクマイコン(デュアルバンクタイプのマイクロコンピュータ)とシングルバンクマイコン(シングルバンクタイプのマイクロコンピュータ)とに大別される。デュアルバンクマイコンでは、アクティブ面に旧ソフトウェア(元のバージョンのソフトウェア)を残したまま、書込み面に新ソフトウェア(新しいバージョンのソフトウェア)が書き込まれるため、アクティベートに失敗した場合には、アクティブ面に残した旧ソフトウェアによって、書込み面を旧ソフトウェアに戻すこと(ロールバック)ができる。これに対し、シングルバンクマイコンでは、1つのバンクにおいてソフトウェアの上書きが行われる。このため、旧ソフトウェアは残らない。シングルバンクマイコンでは、アクティベートに失敗した場合に旧ソフトウェアに戻すこと(ロールバック)ができないという課題が生じ得る。
そこで、この実施の形態に係るソフトウェア配信システムは、以下に説明する図3および図4に示す処理を実行することにより、車両に搭載されたシングルバンクタイプのコンピュータについても、OTA技術による好適なソフトウェア更新を可能にしている。
この実施の形態に係るソフトウェア配信システムにおいて、ソフトウェア更新の対象(以下、単に「更新対象」と称する)となるマイコンは、ターゲットECUが備えるシングルバンクマイコンとデュアルバンクマイコンとの少なくとも一方である。詳細は後述するが、車両100においては、ECU121がシングルバンクマイコンを内蔵し、ECU122がデュアルバンクマイコンを内蔵する。ターゲットECUにおいて更新対象のアクティベートが失敗した場合には、更新対象のロールバックが実行される。特に、互いに連携して制御を実行する複数のマイコンについては、ソフトウェアのバージョンを揃えることが要求される。これらのマイコンでは、ソフトウェアのバージョンアップ(ソフトウェア更新)が同時に実行され、それらマイコンのいずれかでアクティベートが失敗した場合には、全てのマイコンについて、旧ソフトウェアに戻す処理(ロールバック処理)が実行される。
図3は、この実施の形態に係るソフトウェア更新方法の処理手順を示す第1のフローチャートである。このフローチャートに示される一連の処理は、前述の構成同期の実行タイミングになると(例えば、構成同期の実行条件が成立すると)、モバイル端末300および車両100によって実行される。この実施の形態では、図1に示したプロセッサ310が、本開示に係る「受信部」、「送信部」、「取得部」、および「判断部」の一例として機能し、図1に示したメモリ320が、本開示に係る「記憶部」の一例として機能する。フローチャート中の「S」は、ステップを意味する。1以上のプロセッサが1以上のメモリに記憶されたプログラムを読み込んで実行することにより下記のフローチャートが実現される。
図1,図2とともに図3を参照して、S11~S17の一連の処理は、モバイル端末300によって実行される。S31~S36の一連の処理は、車両100によって実行される。S31では、ECU110が、モバイル端末300を介して、構成同期(図2)を実行する。モバイル端末300は、S11において車両100とOTAセンタ500との間での構成同期を仲介する。車両100に適用可能なキャンペーンが存在する場合には、ECU110は、S32において、OTAセンタ500からモバイル端末300を経由してキャンペーン通知(図2)を受ける。モバイル端末300は、S12においてOTAセンタ500から車両100へのキャンペーン通知を仲介する。そして、キャンペーンの適用についてユーザが車載HMIに対して「承諾」を示す入力を行うと、処理がS13,S33に進む。なお、車両100に適用可能なキャンペーンが存在しない場合と、キャンペーンの適用についてユーザが「拒否」を示す入力を行った場合との各々においては、図3に示す一連の処理が終了する。その後、構成同期の実行タイミングになると、再び図3に示す一連の処理が開始される。
S13では、モバイル端末300が、更新対象(ソフトウェア更新の対象となるコンピュータ)がシングルバンクマイコンであるか否かを判断する。更新対象は、ターゲットECUに含まれるマイクロコンピュータである。モバイル端末300は、車両100(ECU110)から、更新対象の情報を取得してもよい。あるいは、モバイル端末300は、キャンペーン情報(S12)から更新対象の情報を抽出してもよい。更新対象がシングルバンクマイコンである場合には(S13にてYES)、モバイル端末300が、S14において、メモリ320の空き容量を確認し、更新対象の旧ソフトウェア(すなわち、更新対象のアクティブ面に記憶されている更新前のソフトウェア)を保存するための空き容量がメモリ320に存在するか否かを判断する。モバイル端末300は、車両100(ECU110)から、更新対象の旧ソフトウェア(本体)のデータサイズを取得してもよい。あるいは、モバイル端末300は、キャンペーン情報(S12)から更新前のソフトウェアの情報を抽出してもよい。
更新対象の旧ソフトウェアを保存するための空き容量をメモリ320が有する場合には(S14にてYES)、モバイル端末300が、S15において、更新対象の旧ソフトウェア(本体)を車両100に要求する。以下、この要求(S15)を、「第1要求」とも称する。
車両100(ECU110)は、ユーザから前述の「承諾」を示す入力を受けた後、S33において、モバイル端末300からの上記第1要求を待つ。具体的には、ECU110は、S33において、ユーザが「承諾」を示す入力を行ってから所定時間以内に、モバイル端末300から第1要求を受けたか否かを判断する。S14においてYESと判断される場合には、上記所定時間が経過する前にモバイル端末300が車両100に対して第1要求を実行し、S33においてYESと判断される。この場合、ECU110は、続くS34において、更新対象の旧ソフトウェア(本体)をモバイル端末300へ送信する。そして、モバイル端末300は、車両100から受信した旧ソフトウェア(本体)をメモリ320に保存する。その後、処理がS17,S35に進む。他方、S14においてNOと判断される場合には、車両100が第1要求を受けることなく上記所定時間が経過し、S33においてNOと判断される。この場合、S34の処理が実行されることなく、処理がS35に進む。
更新対象の旧ソフトウェアを保存するための空き容量をメモリ320が有しない場合には(S14にてNO)、モバイル端末300は、S16において、更新対象の旧ソフトウェアのバージョン情報をメモリ320に保存する。旧ソフトウェアのバージョン情報のデータサイズは、旧ソフトウェア本体のデータサイズと比べて非常に小さい。モバイル端末300は、車両100(ECU110)から、更新対象の旧ソフトウェアのバージョン情報を取得してもよい。あるいは、モバイル端末300は、キャンペーン情報(S12)から更新対象の旧ソフトウェアのバージョン情報を抽出してもよい。
S15またはS16において更新対象の旧ソフトウェア本体または旧ソフトウェアバージョン情報がメモリ320に保存されると、処理がS17に進む。S17では、モバイル端末300が、無線通信によってOTAセンタ500から更新対象の新ソフトウェア(新しいバージョンのソフトウェア本体)を受信しつつ、受信した新ソフトウェアを無線通信によって車両100へ送信する。
S35では、車両100(ECU110)が、モバイル端末300から上記新ソフトウェア(S17)を受信したか否かを判断する。そして、車両100がモバイル端末300から新ソフトウェアを受信すると(S35にてYES)、ECU110は、S36において新ソフトウェアのダウンロードおよびインストール(図2)を実行する。具体的には、ECU110は、モバイル端末300を介して、更新対象の新ソフトウェアのダウンロード(図2)を実行する。モバイル端末300は、S17においてOTAセンタ500から車両100へのダウンロードを仲介する。そして、ダウンロードが成功すると、新ソフトウェアが更新対象に書き込まれる(インストール)。
更新対象が複数のマイコン(コンピュータ)を含む場合には、更新対象ごとにS13~S17およびS33~S36の処理が実行される。更新対象がシングルバンクマイコンである場合には(S13にてYES)、モバイル端末300が、上述のようにS15またはS16において更新対象の旧ソフトウェアまたはそのバージョン情報をメモリ320に記憶させた後、S17において、OTAセンタ500から取得した新ソフトウェア(更新用ソフトウェア)を車両100へ送信する。他方、更新対象がデュアルバンクマイコンである場合には(S13にてNO)、S14~S16の処理が行われることなく、S17の処理が実行される。そして、S15の処理が行われないため、S33においてNOと判断される。
全ての更新対象について新ソフトウェアのダウンロードおよびインストールが完了した後に所定のアクティベート開始条件が成立すると、処理は図4のS21,S41に進む。例えば、アクティベート開始条件が成立すると、ECU110が各ターゲットECUにアクティベートを要求する。そして、以下に説明する図4に示す一連の処理が開始される。図4は、この実施の形態に係るソフトウェア更新方法の処理手順を示す第2のフローチャートである。
図1,図2とともに図4を参照して、S41では、車両100のターゲットECUが、ECU110からの要求に応じて更新対象のアクティベート(図2)を実行する。ECU110は、例えば、車両100がアクティベート可能な状態であるか否かを判断し、車両100がアクティベート可能な状態(例えば、シャットダウン待機状態)であると判断した場合に、更新対象のアクティベートをターゲットECUに要求する。
続くS42では、更新対象のアクティベートが成功したか否かを、ターゲットECUが判断する。更新対象のアクティベートが失敗した場合には(S42にてNO)、ターゲットECUが、アクティベート失敗をECU110に通知する。通知を受けたECU110は、ターゲットECUに更新対象のロールバックを要求する。さらに、ECU110は、当該更新対象と連携するマイコン(すなわち、当該更新対象と同じバージョンのソフトウェアで動作するマイコン)を備えるECUに、そのマイコンのロールバックを要求する。その後、処理はS44に進む。
更新対象のアクティベートが成功した場合には(S42にてYES)、ターゲットECUが、S43において、当該更新対象と連携するマイコンがアクティベートに失敗したか否かをさらに判断する。ターゲットECUは、ECU110からの上記ロールバック要求の有無に基づいて、当該更新対象と連携するマイコンがアクティベートに失敗したか否かを判断してもよい。当該更新対象と連携するいずれかのマイコンがアクティベートに失敗した場合には(S43にてYES)、処理はS44に進む。
S44では、更新対象がシングルバンクマイコンであるか否かを、ターゲットECUが判断する。更新対象がシングルバンクマイコンである場合には(S44にてYES)、車両100(ターゲットECU)が、S45において、更新対象の旧ソフトウェア(本体)をモバイル端末300に要求する。以下、この要求(S45)を、「第2要求」とも称する。
モバイル端末300は、前述のダウンロード完了後、S21において、車両100からの上記第2要求を待つ。具体的には、モバイル端末300は、S21において、ダウンロードが完了してから所定時間以内に、車両100から第2要求を受けたか否かを判断する。S44においてYESと判断される場合には、上記所定時間が経過する前に車両100がモバイル端末300に対して第2要求を実行する。これにより、S21においてYESと判断され、処理がS22に進む。他方、S44においてNOと判断される場合には、モバイル端末300が第2要求を受けることなく上記所定時間が経過し、S21においてNOと判断される。この場合、S22~S24の処理が実行されることなく、処理がS25に進む。
S22では、モバイル端末300が更新対象の旧ソフトウェア(本体)を保有するか否かを、モバイル端末300が判断する。図3のS15の処理が実行された場合には、S22においてYESと判断され、処理がS24に進む。この場合、モバイル端末300は、続くS24において、メモリ320に記憶された更新対象の旧ソフトウェア(本体)を車両100(ターゲットECU)へ送信する。その後、処理がS25に進む。
図3のS15の処理が実行されなかった場合(すなわち、図3のS16の処理が実行された場合)には、S22においてNOと判断され、処理がS23に進む。S23では、モバイル端末300が、メモリ320に記憶された更新対象の旧ソフトウェアのバージョン情報(図3のS16)に基づいて、更新対象の旧ソフトウェア(本体)をOTAセンタ500から取得する。この場合、モバイル端末300は、続くS24において、OTAセンタ500から取得した更新対象の旧ソフトウェア(本体)を車両100(ターゲットECU)へ送信する。その後、処理がS25に進む。
更新対象がシングルバンクマイコンである場合には(S44にてYES)、車両100が上記更新対象の旧ソフトウェア(S24)を受信する。これにより、車両100のターゲットECUが、S46において、モバイル端末300から受信した上記更新対象の旧ソフトウェア(本体)を用いて更新対象のロールバック処理(旧ソフトウェアに戻す処理)を実行する。ターゲットECUは、モバイル端末300から更新対象の旧ソフトウェア(本体)を受信しつつ、受信した旧ソフトウェア(本体)で更新対象のバンク(シングルバンク)を更新前の状態に戻す。
更新対象がデュアルバンクマイコンである場合には(S44にてNO)、車両100がモバイル端末300から上記更新対象の旧ソフトウェア(S24)を受信することなく、車両100のターゲットECUが、S46において、更新対象のロールバック処理を実行する。
図5は、ECU122が備えるデュアルバンクマイコンのアクティベート(ロールバック)処理について説明するための図である。以下では、ECU122がターゲットECUであり、かつ、デュアルバンクマイコンMC2が更新対象である例について説明する。
図5を参照して、ECU122は、2つのバンク(第1バンクおよび第2バンク)を有するデュアルバンクマイコンMC2を備える。具体的には、デュアルバンクマイコンMC2は、2つのメモリ(例えば、Flashメモリ)を備え、各メモリがマイコン内にバンクを形成している。例えば、第1バンクがアクティブ面である場合には、第2バンクが書込み面になる。アクティブ面(第1バンク)には、旧ソフトウェアが記憶されている。書込み面(第2バンク)には、前述のダウンロード処理およびインストール処理(図3のS36)により新ソフトウェアが書き込まれる。その後、ECU122(ターゲットECU)は、図4のS41においてデュアルバンクマイコンMC2の書込み面をアクティブ面に切り替える(アクティベート)。ECU122がデュアルバンクマイコンMC2のアクティベートに成功し、かつ、ECU122がECU110からロールバック要求を受けなかった場合には、ECU122は、自己リセットを行った後、ECU110からのシャットダウン要求を待つ状態になる。この場合、旧ソフトウェアを記憶する第1バンクが書込み面になり、新ソフトウェアが書き込まれた第2バンクがアクティブ面になる。すなわち、デュアルバンクマイコンMC2は、新ソフトウェア(更新後のプログラム)で起動する。他方、ECU122がECU110からロールバック要求を受けた場合には、ECU122は、デュアルバンクマイコンMC2のロールバック処理を実行する(図4のS46)。この場合、旧ソフトウェアを記憶する第1バンクがアクティブ面に戻り、第2バンクが書込み面になる。また、書込み面には旧ソフトウェアが書き込まれる。その後、デュアルバンクマイコンMC2は、旧ソフトウェア(更新前のプログラム)で起動する。
図6は、ECU121が備えるシングルバンクマイコンのアクティベート(ロールバック)処理の第1例について説明するための図である。以下では、ECU121がターゲットECUであり、かつ、シングルバンクマイコンMC1が更新対象である例について説明する。しかも、この例では、ダウンロード時においてシングルバンクマイコンMC1の更新前のソフトウェア(本体)を保存するための空き容量をメモリ320が有する。
図6を参照して、ECU121は、1つのバンク(シングルバンク)を有するシングルバンクマイコンMC1を備える。具体的には、シングルバンクマイコンMC1は、1つのメモリ(例えば、Flashメモリ)を備え、そのメモリがマイコン内にバンクを形成している。シングルバンクマイコンMC1は、車両100の走行制御を行うコンピュータに相当する。例えば、通常動作時においてはバンクがアクティブ面になっている。ソフトウェア更新前においては、バンクに旧ソフトウェアが記憶されている。ソフトウェア更新時にはバンクが書込み面になる。そして、前述のダウンロード処理およびインストール処理(図3のS36)によりバンクに新ソフトウェアが書き込まれる。ただし、書込み前に、旧ソフトウェア(更新前のソフトウェア)がモバイル端末300のメモリ320に保存される(図3のS15)。
その後、ECU121(ターゲットECU)は、図4のS41においてシングルバンクマイコンMC1の書込み面をアクティブ面に切り替える(アクティベート)。ECU121がシングルバンクマイコンMC1のアクティベートに成功し、かつ、ECU121がECU110からロールバック要求を受けなかった場合には、ECU121は、自己リセットを行った後、ECU110からのシャットダウン要求を待つ状態になる。この場合、新ソフトウェアが書き込まれたバンクがアクティブ面になる。すなわち、シングルバンクマイコンMC1は、新ソフトウェア(更新後のプログラム)で起動する。他方、ECU121がECU110からロールバック要求を受けた場合には、ECU121は、シングルバンクマイコンMC1のロールバック処理を実行する(図4のS44~S46)。具体的には、ECU121は、モバイル端末300(メモリ320)から旧ソフトウェア(本体)を受信して、シングルバンクマイコンMC1のバンクに旧ソフトウェアを書き込む。その後、旧ソフトウェアが書き込まれたバンクがアクティブ面になる。この場合、シングルバンクマイコンMC1は、旧ソフトウェア(更新前のプログラム)で起動する。
図7は、ECU121が備えるシングルバンクマイコンのアクティベート(ロールバック)処理の第2例について説明するための図である。以下では、ECU121がターゲットECUであり、かつ、シングルバンクマイコンMC1が更新対象である例について説明する。ただし、この例では、ダウンロード時においてシングルバンクマイコンMC1の更新前のソフトウェア(本体)を保存するための空き容量をメモリ320が有しない。
図7を参照して、この例でも、ソフトウェア更新時にシングルバンクマイコンMC1のバンクが書込み面になり、前述のダウンロード処理およびインストール処理(図3のS36)により、そのバンクに新ソフトウェアが書き込まれる。ただし、この例では、書込み前に、旧ソフトウェア本体ではなく旧ソフトウェアのバージョン情報がモバイル端末300のメモリ320に保存される(図3のS16)。
その後、ECU121(ターゲットECU)は、図4のS41においてシングルバンクマイコンMC1の書込み面をアクティブ面に切り替える(アクティベート)。ECU121がシングルバンクマイコンMC1のアクティベートに成功し、かつ、ECU121がECU110からロールバック要求を受けなかった場合には、ECU121は、自己リセットを行った後、ECU110からのシャットダウン要求を待つ状態になる。この場合、新ソフトウェアが書き込まれたバンクがアクティブ面になる。すなわち、シングルバンクマイコンMC1は、新ソフトウェア(更新後のプログラム)で起動する。他方、ECU121がECU110からロールバック要求を受けた場合には、ECU121は、シングルバンクマイコンMC1のロールバック処理を実行する(図4のS44~S46)。具体的には、ECU121がモバイル端末300に旧ソフトウェアを要求する(図4のS45)。そして、モバイル端末300は、ECU121からの要求に応じて、メモリ320に記憶された上記バージョン情報が示すバージョンのソフトウェア(本体)をOTAセンタ500から取得し、取得したソフトウェア(本体)を車両100(ECU121)へ送信する。ECU121は、モバイル端末300から旧ソフトウェア(本体)を受信して、シングルバンクマイコンMC1のバンクに旧ソフトウェアを書き込む。その後、旧ソフトウェアが書き込まれたバンクがアクティブ面になる。この場合、シングルバンクマイコンMC1は、旧ソフトウェア(更新前のプログラム)で起動する。
再び図1,図2とともに図4を参照して、S46では、ターゲットECUが、上述のように更新対象のロールバック処理を実行する。アクティベート中に何らかの障害が生じて更新対象のアクティベートが失敗したときには、ターゲットECUは、更新前のジャーナルファイル(ログ情報を書き込むファイル)を用いて更新対象を正常な状態に戻してもよい。ターゲットECUは、要求されたロールバックが完了すると、ECU110に対してロールバック完了を通知する。ECU110は、ロールバック完了の通知を受けると、更新前のソフトウェアの識別情報(ECU Software ID)をターゲットECUに要求する。そして、ECU110は、ターゲットECUから受け取った識別情報と、キャンペーン情報に含まれる更新前のソフトウェアの識別情報とが、互いに一致するか否かを確認する(構成の確認)。ここでの構成の確認が成功すること(すなわち、ソフトウェアの識別情報が一致すること)は、ロールバックが成功したことを意味する。ソフトウェアの識別情報が一致しない場合には、ECU110がターゲットECUにロールバックのやり直しを要求してもよい。
ロールバックが成功した場合には、処理がS47に進む。また、更新対象のアクティベートが成功し(S42にてYES)、かつ、更新対象と連携するいずれのマイコンもアクティベートに失敗していない場合にも(S43にてNO)、処理はS47に進む。更新対象が複数のマイコン(コンピュータ)を含む場合には、更新対象ごとにS41~S46およびS21~S24の処理が実行される。そして、全ての更新対象についてアクティベートまたはロールバックが成功すると、車両100(ECU110)が、S47において、モバイル端末300に対して終了通知を行う。そして、S47の処理が実行されると、車両100によるS31~S47の一連の処理が終了する。
モバイル端末300は、S25において、車両100からの上記終了通知(S47)を受信したか否かを判断する。モバイル端末300が上記終了通知を受信していない場合には(S25にてNO)、処理がS21に戻る。そして、モバイル端末300が上記終了通知を受信すると(S25にてYES)、モバイル端末300によるS11~S25の一連の処理が終了する。
以上説明したように、この実施の形態に係るソフトウェア配信システムは、モバイル端末300と、車両100と、OTAセンタ500(サーバ)とを備える。また、モバイル端末300が、プロセッサ310と、メモリ320(記憶部)とを備える。そして、プロセッサ310は、車両100に搭載されるシングルバンクタイプのコンピュータの更新前のソフトウェアを車両100から受信すること(図3のS15)と、受信した更新前のソフトウェアをメモリ320に記憶(図3のS15)させた後に、OTAセンタ500から取得した更新用ソフトウェアを車両100へ送信すること(図3のS17)とを実行可能に構成される。
上記構成を有するモバイル端末300によれば、車両100が、シングルバンクタイプのコンピュータ(例えば、図6に示したシングルバンクマイコンMC1)のソフトウェア更新(例えば、アクティベート)に失敗した場合に、モバイル端末300のメモリ320に保存された更新前のソフトウェアを用いてロールバックを行うことが可能になる。これにより、車両100に搭載されたデュアルバンクタイプのコンピュータだけでなく、シングルバンクタイプのコンピュータについても、OTA技術による好適なソフトウェア更新が可能になる。
また、モバイル端末300のプロセッサ310は、更新前のソフトウェアのバージョン情報を取得すること(図3のS16)と、シングルバンクタイプのコンピュータのソフトウェア更新において、更新前のソフトウェアを保存するための空き容量をメモリ320(記憶部)が有するか否かを判断すること(図3のS14)とを実行可能に構成される。そして、プロセッサ310は、更新前のソフトウェアを保存するための空き容量をメモリ320が有すると判断した場合には(図3のS14にてYES)、更新前のソフトウェアを車両100から受信し(図3のS15)、その更新前のソフトウェアをメモリ320に記憶(図3のS15)させた後に、OTAセンタ500から取得した更新用ソフトウェアを車両100へ送信する(図3のS17)。また、プロセッサ310は、更新前のソフトウェアを保存するための空き容量をメモリ320が有しないと判断した場合には(図3のS14にてNO)、更新前のソフトウェアのバージョン情報を取得し(図3のS16)、そのバージョン情報をメモリ320に記憶(図3のS16)させた後に、OTAセンタ500から取得した更新用ソフトウェアを車両100へ送信する(図3のS17)。
上記構成を有するモバイル端末300によれば、メモリ320の空き容量に応じて、ロールバックのためのデータ(詳しくは、更新前のソフトウェアまたはそのバージョン情報)を適切に保存することができる。メモリ320の空き容量が十分大きい場合には、更新前のソフトウェア自体が予めメモリ320に保存されることで、早期にロールバックを実行することが可能になる。
この実施の形態に係る車両100は、ソフトウェア更新のシーケンスを管理するECU110(制御装置)を備える。ECU110は、モバイル端末300から受け取った更新用ソフトウェアを用いて、シングルバンクタイプのコンピュータのソフトウェア更新を実行し(図3のS36および図4のS41)、当該ソフトウェア更新に失敗した場合には、モバイル端末300から更新前のソフトウェアを受け取り、更新前のソフトウェアを用いてロールバックを実行するように構成される(図4のS44~S46)。こうした構成を有する車両100によれば、車両側でソフトウェア更新を管理しやすくなる。
上記図3および図4に示した処理は適宜変更可能である。例えば、上記実施の形態では、S13(図3),S44(図4)で、更新対象がシングルバンクマイコンであるか否かを判断している。しかし、車両によっては、ロールバックのための記憶部を有するシングルバンクマイコンを内蔵するECUが搭載されることがある。こうした車両にソフトウェアを配信するシステムでは、更新対象が、ロールバックのための記憶部を有しないシングルバンクマイコンであるか否かを、S13(図3),S44(図4)で判断するようにしてもよい。すなわち、更新対象がシングルバンクマイコンであっても、更新対象がロールバックのための記憶部が有する場合には、S13(図3),S44(図4)の各々でNOと判断されるようにしてもよい。ロールバックのための記憶部を有するシングルバンクマイコンの例としては、バンク内にロールバックのための記憶部が設けられたシングルバンクマイコン、ロールバックのための記憶部(不揮発性メモリ)が外付けで設けられたシングルバンクマイコンが挙げられる。こうしたシングルバンクマイコンは、デュアルバンクマイコンに準ずる態様でロールバックを行うことができる。
図8は、図3に示した処理の第1変形例を示すフローチャートである。この変形例では、図1に示したプロセッサ310が、本開示に係る「受信部」、「送信部」、「更新部」、および「報知部」の一例として機能し、図1に示したメモリ320が、本開示に係る「記憶部」の一例として機能する。
図1,図2とともに図8を参照して、この変形例では、S33でNOと判断された場合には処理が進まず、S33でNOと判断されている間は、S33の判断が繰り返される。また、S16(図3)の代わりにS16Aが採用されている。更新対象の旧ソフトウェア(本体)を保存するための空き容量をメモリ320が有しない場合には(S14にてNO)、モバイル端末300が、S16Aにおいて所定の報知を行う。具体的には、モバイル端末300は、例えば画面Sc1を表示する。画面Sc1は、メモリ320の空き容量を増やすことをユーザに促すメッセージを表示する。ユーザは、モバイル端末300を操作して、モバイル端末300で起動している不要なアプリケーションを停止したり、メモリ320に記憶されている不要なデータを削除したりすることで、メモリ320の空き容量を増やすことができる。旧ソフトウェア(本体)を保存するためのメモリ320の空き容量が不足している間は(S14にてNO)、S14およびS16Aが繰り返され、モバイル端末300が画面Sc1(S16A)を表示し続ける。そして、ユーザが、画面Sc1による要求に応じて、メモリ320の空き容量が十分になるまで空き容量を増やすと(S14にてYES)、モバイル端末300は、S15において、更新対象の旧ソフトウェア(本体)を車両100に要求する(第1要求)。これにより、S33においてYESと判断され、車両100(ECU110)が、S34において、更新対象の旧ソフトウェア(本体)をモバイル端末300へ送信する。
上述した第1変形例では、モバイル端末300のプロセッサ310が、シングルバンクタイプのコンピュータのソフトウェア更新において、更新前のソフトウェアを保存するための空き容量がメモリ320(記憶部)に確保されるまで(S14にてNO)、モバイル端末300は、S14,S16Aの処理を繰り返す。これにより、車両100側では、S33が繰り返される。このため、当該ソフトウェア更新は保留される。そして、更新前のソフトウェアを保存するための空き容量がメモリ320に確保された後(S14にてYES)、モバイル端末300は、第1要求(S15)により、シングルバンクタイプのコンピュータのソフトウェア更新を許可する。これにより、車両100側の処理がS34に進み、シングルバンクタイプのコンピュータのソフトウェア更新が実行される。上記のような処理により、ロールバックできない状況でソフトウェア更新が進行することが抑制される。また、プロセッサ310は、シングルバンクタイプのコンピュータのソフトウェア更新において、更新前のソフトウェアを保存するためのメモリ320(記憶部)の空き容量が不足している場合に(S14にてNO)、所定の報知(S16A)を行うように構成される。こうした報知処理により、ユーザが状況を把握しやすくなる。
なお、上記の第1変形例では、図4のS22において常にYESと判断されるため、図4のS22およびS23を省いて、S21においてYESと判断された場合に、処理がS24に進むようにしてもよい。
図9は、図3に示した処理の第2変形例を示すフローチャートである。この変形例では、図1に示したプロセッサ310が、本開示に係る「送信部」および「取得部」の一例として機能し、図1に示したメモリ320が、本開示に係る「記憶部」の一例として機能する。
図1,図2とともに図9を参照して、この変形例では、S14,S15,S33,S34(図3)が無い。S13においてYESと判断されると、モバイル端末300は、S16において、更新対象の旧ソフトウェアのバージョン情報のみをメモリ320に保存する。モバイル端末300は、車両100から、更新対象の旧ソフトウェアのバージョン情報を取得してもよい。あるいは、モバイル端末300は、キャンペーン情報(S12)から更新対象の旧ソフトウェアのバージョン情報を抽出してもよい。上記S16の処理により、更新対象の旧ソフトウェアのバージョン情報がメモリ320に保存されると、処理はS17に進む。
上述した第2変形例に係るソフトウェア配信システムでは、モバイル端末300が、プロセッサ310と、メモリ320(記憶部)とを備える。そして、プロセッサ310が、車両100に搭載されるシングルバンクタイプのコンピュータの更新前のソフトウェアのバージョン情報を取得すること(S16)と、そのバージョン情報をメモリ320に記憶(S16)させた後に、OTAセンタ500(サーバ)から取得した更新用ソフトウェアを車両100へ送信すること(S17)とを実行可能に構成される。
上記構成を有するモバイル端末300によれば、車両100がシングルバンクタイプのコンピュータのソフトウェア更新に失敗した場合に、モバイル端末300は、予めメモリ320に保存された更新前のソフトウェアのバージョン情報に基づいて、OTAセンタ500から更新前のソフトウェアを取得することが可能になる。そして、車両100は、モバイル端末300から更新前のソフトウェアを受信し、その更新前のソフトウェアを用いてシングルバンクタイプのコンピュータのロールバックを行うことが可能になる。なお、上記の第2変形例では、図4のS22において常にNOと判断されるため、図4のS22を省いて、S21においてYESと判断された場合に、処理がS23に進むようにしてもよい。
モバイル端末300の受信部、送信部、取得部、判断部、更新部、および報知部は、ソフトウェアではなく、専用のハードウェア(電子回路)によって具現化されてもよい。また、上記実施の形態では、OTAセンタ500としてオンプレミスサーバが採用されている(図1参照)。しかしこれに限られず、クラウドコンピューティングによってクラウド上にOTAセンタ500の機能(例えば、ソフトウェア配信に係る機能)が実装されてもよい。すなわち、OTAセンタ500はクラウドサーバであってもよい。
車両は、OTAアクセス機能を有するOTAマスタを備えてもよい。車両は、OTAセンタとの無線通信を行うTCU(Telematics Control Unit)および/またはDCM(Data Communication Module)を含んでもよい。車両が自動運転可能に構成されることは必須ではない。車両は、BEV以外のxEV(電動車)であってもよい。車両は、内燃機関(例えば、ガソリンエンジン、バイオ燃料エンジン、または水素エンジン)を備えてもよい。車両は、4輪の乗用車に限られず、バスまたはトラックであってもよいし、3輪のxEVであってもよい。車両は飛行機能を備えてもよい。車両は、MaaS(Mobility as a Service)で利用される車両であってもよい。車両は、ユーザの使用目的に応じてカスタマイズされる多目的車両であってもよい。車両は、移動店舗車両、ロボタクシー、無人搬送車(AGV)、または農業機械であってもよい。車両は、無人または1人乗りの小型BEV(例えば、ラストワンマイル用のBEV、電動車椅子、または電動スケータ)であってもよい。
上記の各種変形例は任意に組み合わせて実施されてもよい。
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。