(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-19
(45)【発行日】2024-08-27
(54)【発明の名称】OTAマスタ、更新制御方法、更新制御プログラム
(51)【国際特許分類】
G06F 8/65 20180101AFI20240820BHJP
B60R 16/02 20060101ALI20240820BHJP
【FI】
G06F8/65
B60R16/02 660U
(21)【出願番号】P 2021081844
(22)【出願日】2021-05-13
【審査請求日】2023-03-23
(73)【特許権者】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】弁理士法人小笠原特許事務所
(72)【発明者】
【氏名】長光 翔一
【審査官】大倉 崚吾
(56)【参考文献】
【文献】特開2020-166583(JP,A)
【文献】特開2021-012428(JP,A)
【文献】特開2018-124749(JP,A)
【文献】特開2016-188016(JP,A)
【文献】特開2011-148398(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/60-8/658
B60R 16/02
(57)【特許請求の範囲】
【請求項1】
複数の車載機器を含む車載ネットワークに接続されると共に、OTAセンタとネットワークを介して通信可能であり、1以上の前記車載機器のソフトウェアを更新するOTAマスタであって、
1以上の車載機器のソフトウェアの組み合わせによってグループ化される複数のソフトウェアグループについて、前記ソフトウェアのバージョンに変化が発生した前記ソフトウェアグループである更新対象ソフトウェアグループを判定する判定部と、
前記判定部が判定した前記更新対象ソフトウェアグループのハッシュ値を生成する生成部と、
前記生成部が生成した前記更新対象ソフトウェアグループのハッシュ値を、前記OTAセンタに送信する送信部と、
前記更新対象ソフトウェアグループの詳細内容に関する要求を、前記OTAセンタから受信する受信部と、を備え、
前記送信部は、前記受信部が前記要求を受信した場合に、前記更新対象ソフトウェアグループに含まれる全ての前記車載機器に関する情報を、前記OTAセンタに送信する、OTAマスタ。
【請求項2】
前記判定部は、所定のタイミングの前後において前記
更新対象ソフトウェアグループの有無を判定する、請求項1に記載のOTAマスタ。
【請求項3】
前記受信部は、所定の前記ソフトウェアグループに関する情報の送信を指示するコマンドが含まれているセンタコマンドをさらに受信し、
前記送信部は、前記受信部が前記センタコマンドを受信した場合に、前記更新対象ソフトウェアグループの前記ハッシュ値を前記OTAセンタに送信する、請求項1に記載のOTAマスタ。
【請求項4】
前記センタコマンドには、前記更新対象ソフトウェアグループの前記ハッシュ値の送信を指示するコマンドが少なくとも含まれている、請求項3に記載のOTAマスタ。
【請求項5】
プロセッサと、メモリとを少なくとも備え、OTAセンタとネットワークを介して通信可能なOTAマスタのコンピュータが実行する更新制御方法であって、
1以上の車載機器のソフトウェアの組み合わせによってグループ化される複数のソフトウェアグループについて、前記ソフトウェアのバージョンに変化が発生した前記ソフトウェアグループである更新対象ソフトウェアグループを判定するステップと、
前記判定した前記更新対象ソフトウェアグループのハッシュ値を生成するステップと、
前記生成した前記更新対象ソフトウェアグループのハッシュ値を、前記OTAセンタに送信するステップと、
前記更新対象ソフトウェアグループの詳細内容に関する要求を、前記OTAセンタから受信するステップと、
前記要求を受信した場合に、前記更新対象ソフトウェアグループに含まれる全ての前記車載機器に関する情報を、前記OTAセンタに送信するステップと、を備える、更新制御方法。
【請求項6】
プロセッサと、メモリとを少なくとも備え、OTAセンタとネットワークを介して通信可能なOTAマスタのコンピュータに実行させる更新制御プログラムであって、
1以上の車載機器のソフトウェアの組み合わせによってグループ化される複数のソフトウェアグループについて、前記ソフトウェアのバージョンに変化が発生した前記ソフトウェアグループである更新対象ソフトウェアグループを判定するステップと、
前記変化が発生したと判定した前記ソフトウェアグループのハッシュ値を生成するステップと、
前記判定した前記更新対象ソフトウェアグループのハッシュ値を生成するステップと、
前記生成した前記更新対象ソフトウェアグループのハッシュ値を、前記OTAセンタに送信するステップと、
前記更新対象ソフトウェアグループの詳細内容に関する要求を、前記OTAセンタから受信するステップと、
前記要求を受信した場合に、前記更新対象ソフトウェアグループに含まれる全ての前記車載機器に関する情報を、前記OTAセンタに送信するステップと、を前記コンピュータに実行させる、更新制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、複数の車載機器を含む車載ネットワークに接続されると共に、OTAセンタとネットワークを介して通信可能であり、当該車載機器のソフトウェアを更新するOTAマスタに関する。
【背景技術】
【0002】
従来から、車両には、制御機能を実行するための複数の電子制御装置(「ECU」と呼ばれる)が実装されている。当該ECUは、プロセッサと記憶部とを備え、プロセッサが記憶部に記憶されるソフトウェアを実行することによりECUの制御機能を実現する。また、各ECUが記憶するソフトウェアは更新可能である。具体的には、整備工場等において、車両に設けられたダイアグ用コネクタを介して接続した外部機器を用いて更新することができる。また、車載ネットワークが備える通信機器とインターネット等の通信ネットワークとを無線で接続し、無線通信を介して更新センタに設けられた配信サーバからダウンロードしたソフトウェアで更新することもできる(例えば特開2020-004245号公報)。この無線通信を介した更新サービスは、OTAサービスと呼ばれる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来のOTAサービスにおける更新処理においては、所定の車両に対する更新を開始する前に、当該車両の現状のソフトウェア構成を把握するために、車両に実装されている全てのECUに関するデータを車両からセンタに送信していた。センタでは、当該データに基づいて、更新の必要性等を判断していた。
【0005】
しかし、近年では車両の多機能化に伴い、車両に含まれるECUの数も増大しており、例えば実装されるECUの数が50近くある場合もあり得る。そのため、全てのECUのついてのデータを毎回センタに送るとすると、通信データ量も増大し、また、センタにおけるチェック処理の負荷も少なくないものとなっていた。
【0006】
本開示は、上記課題を鑑みてなされたものであり、車両に実装されている全ECUについてのデータを送らずともECUのソフトウェアの更新処理が可能なOTAマスタを提供することである。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本開示技術の一態様は、複数の車載機器を含む車載ネットワークに接続されると共に、OTAセンタとネットワークを介して通信可能であり、1以上の車載機器のソフトウェアを更新するOTAマスタである。OTAマスタは、1以上の車載機器のソフトウェアの組み合わせからなるソフトウェアグループであって、当該ソフトウェアの組み合わせの構成に変化が発生したソフトウェアグループに関する構成情報を取得する構成情報取得部と、取得した構成情報をOTAセンタに送信する送信部とを備える。
【発明の効果】
【0008】
本開示のOTAマスタによれば、更新処理におけるデータの通信量を削減でき、また、更新完了までの時間を短縮することができる。
【図面の簡単な説明】
【0009】
【
図1】本実施形態に係るシステムの全体構成を示すブロック図
【
図3】OTAマスタ31の概略構成を示すブロック図
【
図6】センタ1の記憶部16に記憶されるデータの一例を示すメモリマップ
【
図7】SWIDデータベース102のデータ構成の一例
【
図9】OTAマスタ31の記憶部47に記憶されるデータの一例を示すメモリマップ
【
図10】実装SWID定義データ152のデータ構成の一例
【
図11】チェック用SWIDハッシュ値153のデータ構成の一例
【
図12】第1の実施例に係る処理の詳細を示すフローチャート
【
図13】第1の実施例に係る処理の詳細を示すフローチャート
【
図14】第2の実施例におけるOTAマスタ31の記憶部47に記憶されるデータの一例を示すメモリマップ
【
図15】第2の実施例に係る処理の詳細を示すフローチャート
【
図16】第3の実施例に係る処理の詳細を示すフローチャート
【発明を実施するための形態】
【0010】
以下、本開示技術の実施形態について、図面を参照しながら詳細に説明する。
【0011】
従来は、OTAサービスにおいて、車載用の電子制御装置のソフトウェア(以下、ECUソフトと呼ぶ)を更新するための更新処理を行う際に、その車両に実装されている全てのECUソフトに関するデータがOTAセンタ(以下、単にセンタと呼ぶ)に送信されていた。具体的には、全ECUソフトのシリアル番号(各ソフトを識別するための番号)と各ソフトのバージョンに基づいたハッシュ値(以下、総合ハッシュ値と呼ぶ)が生成され、センタに送信されていた。これに対して、本実施形態では、全てのECUソフトではなく、一部のECUソフトに係る構成情報、具体的にはハッシュ値が生成され、センタに送信される。そして、このハッシュ値に基づいて、所定のECUソフトについての更新処理の必要性の判断が行われ、必要があれば更新処理が行われる。これにより、本実施形態では、上記総合ハッシュ値を用いる場合に比べ、通信量を削減しつつ、更新処理の完了までにかかる時間の短縮を図ることができる。より具体的には、「ソフトウェアID」という概念を用いて、一部のECUソフトにかかるハッシュ値が生成・送信され、更新処理の必要性が判断される。
【0012】
ここで、上記ソフトウェアID(以下、SWIDと呼ぶ)について説明する。SWIDとは、複数のECUの機能の組み合わせによって実現する所定の機能単位でグループ化したECUソフトのグループを示す概念である。換言すれば、SWIDは、ある機能を実現するためのソフトウェアの構成を示す概念である。例えば、「自動運転機能」という機能があるとする。当該「自動運転機能」は、ハンドルを制御するECUソフト(以下、ハンドルECU)と、アクセルを制御するECUソフト(以下、アクセルECU)と、ブレーキを制御するECUソフト(以下、ブレーキECU)との3つのECUソフトが協働することで実現されるとする。この場合、SWIDの一例として、「自動運転機能 Ver1.0」や「自動運転機能 Ver2.0」というものが定義される。ここで、SWIDは、各ECUソフトのバージョンも考慮したECUソフトの組み合わせを定義した概念となっている。上記の例で言うと、「自動運転機能 Ver1.0」は、「ハンドルECU Ver1.0」と、「アクセルECU Ver1.0」と、「ブレーキECU Ver1.0」の組み合わせを示すものとする。また、「自動運転機能 Ver2.0」は、「ハンドルECU Ver2.0」と、「アクセルECU Ver2.0」と、「ブレーキECU Ver2.0」の組み合わせを示すものとする。
【0013】
そして、本実施形態では、このようなSWID単位でハッシュ値が生成される。例えば、「自動運転機能 Ver1.0」として定義される各ECUソフト(以下、構成ECUと呼ぶ)のシリアル番号およびバージョン番号に基づいてハッシュ値が生成される。このハッシュ値は、いわば、SWIDに係るECUソフトのソフトウェア的な構成を示す構成情報であるともいえる。そして、当該ハッシュ値がOTAマスタからセンタに送信される。センタでは、自身に記憶されている、または、自身で算出可能な「自動運転機能 Ver1.0」に対応するハッシュ値と、OTAマスタから送信されたハッシュ値とを比較することによって、当該SWIDに係る構成ECUの更新処理の必要性が判断される。より具体的には、上記ハッシュ値が一致すれば更新の必要なし、不一致の場合は、更新の必要性がある、と判断される。
【0014】
(第1の実施例)
以下、上記のようなSWIDを用いる処理の適用例を説明する。第1の実施例として、次のようなケースを想定する。第1の実施例では、所定のECUの交換が発生した結果、あるSWIDとして定義されるECUソフトのバージョンの組み合わせと実際のECUソフトのバージョンの組み合わせとが不一致となった場合を想定する。具体的には、「自動運転機能 Ver2.0」が実装されている車両について、アクセル制御用のECUが交換された結果、アクセルECUのバージョンが「Ver2.0」から「Ver1.0」に変化した場合を想定する。この場合、「自動運転機能 Ver2.0」として定義されているECUソフトのバージョンの組み合わせについては、本来はアクセルECU、ハンドルECU、ブレーキECUの3つとも「Ver 2.0」であるべきだが、上記ECUの交換の結果、この組み合わせとは異なった状態となる(以下では、この状態のことを不一致状態と呼ぶこともある)。このような状態で車両を稼働させることは、安心・安全の観点から好ましくないと考えられるため、アクセルECUについて、「Ver 1.0」から「Ver 2.0」に更新(バージョンアップ)する必要がある。
【0015】
第1の実施例では、上記のような不一致状態が発生した場合、構成に変化が発生したSWIDが検出され、当該構成の変化が発生したSWIDに係るハッシュ値(以下、SWIDハッシュ値と呼ぶ)が生成される。上記の例では「自動運転機能 Ver2.0」の構成ECUであるアクセルECUに変化が発生しているため、その時点における「ハンドルECU」と、「アクセルECU」と、「ブレーキECU」のそれぞれのバージョンに基づいてSWIDハッシュ値が生成される。すなわち、「ハンドルECU Ver2.0」と、(交換によってバージョンが変わった)「アクセルECU Ver1.0」と、「ブレーキECU Ver2.0」とに基づいたSWIDハッシュ値が生成される。そして、当該SWIDハッシュ値をセンタに送信し、センタ側で更新の必要性を判断してもらい、必要であればアクセルECUについての更新処理を行う、という処理が実行される。以下、第1の実施例について、より詳細に説明する。
【0016】
[第1の実施例のシステム全体の構成について]
図1は、第1の実施例における更新制御システムの全体構成を示すブロック図である。当該更新制御システムは、センタ1、車両3を備えている。
【0017】
センタ1は、車両3に備えられる車載機器のソフトウェアの更新を管理するためのサーバである(より正確には、センタ1はこのようなサーバを含むセンタシステムであるが、以下では説明の便宜上、サーバとして説明する)。センタ1は、車両3(OTAマスタ31)と通信可能である。
【0018】
車両3は、車載ネットワークシステムを搭載している。当該車載ネットワークシステムは、センタ1と通信可能である。車載ネットワークシステムは、OTAマスタ(ソフトウェア更新装置)31と、通信モジュール32と、複数のECU(電子制御装置)33a~33dとを少なくとも備える。
【0019】
OTAマスタ31は、バス35を介して通信モジュール32、ECU33a~33dと接続されている。OTAマスタ31は、通信モジュール32を介してセンタ1と無線での通信が可能である。OTAマスタ31は、センタ1との間で所定のデータの送受信を行いながら、各ECU33のソフトウェア更新処理の制御を実行する。すなわち、OTAマスタ31は、ソフトウェア更新機能を有する。通信モジュール32は、所定のネットワーク(電話網やインターネット網等)と接続する通信機器である。
【0020】
ECU33a~33dは、車両3の各部の動作を制御する。なお、
図1におけるECU33の数は一例であることはいうまでもない。
【0021】
[センタ1の構成について]
図2は、上記センタ1の概略構成を示すブロック図である。
図2に示すように、センタ1は、プロセッサ11と、RAM12と、記憶装置13と、通信装置14とを備える。記憶装置13は、ハードディスクやSSD等の読み書き可能な記憶媒体を備え、本実施形態に係る処理に必要な各種のプログラムやデータを記憶する。センタ1において、プロセッサ11は、記憶装置13から読み出したプログラムを、RAM12を作業領域として用いて実行することにより、所定の制御処理を実行する。通信装置14は、ネットワークを介して、車両3と通信を行う機器である。
【0022】
[OTAマスタ31の構成について]
図3は、上記OTAマスタ31の概略構成を示すブロック図である。
図3に示すように、OTAマスタ31は、プロセッサ41と、RAM42と、ROM43と、記憶装置44とを備えるマイクロコンピュータ45と、通信装置46とを備える。OTAマスタ31において、マイクロコンピュータ45のプロセッサ41は、ROM43から読み出したプログラムを、RAM42を作業領域として用いて実行することにより、所定の制御処理を実行する。通信装置46は、
図1に示したバス35を介して、通信モジュール32、ECU33a~33dと通信を行う機器である。
【0023】
[センタ1の機能ブロック図]
図4は、上記センタ1の機能ブロック図である。センタ1は、記憶部16と通信部17と制御部18とを備える。通信部17及び制御部18は、
図2に示したプロセッサ11がRAM12を用いて記憶装置13に記憶されるプログラムを実行することにより実現され、記憶部16は、
図2に示した記憶装置13により実現される。
【0024】
記憶部16は、本実施例に係る処理で使用するプログラムやデータを記憶する。
【0025】
制御部18は、通信部17を用いて、OTAマスタ31との間で所定のデータの送受信を行い、ソフトウェア更新処理を実行する。
【0026】
[OTAマスタ31の機能ブロック図]
図5は、
図3に示したOTAマスタ31の機能ブロック図である。
【0027】
OTAマスタ31は、記憶部47と、通信部48と、制御部49とを備える。記憶部47は、
図3に示した記憶装置44によって実現され、通信部48と、制御部49とは、
図3に示したプロセッサ41がRAM42を用いてROM43に記憶されるプログラムを実行することにより実現される。
【0028】
記憶部47は、ソフトウェア更新処理を実行するための各種プログラムや各種データを記憶する。
【0029】
制御部49は、通信部48を介してセンタ1と通信を行い、ソフトウェア更新処理に関する各種の制御を実行する。具体的には、制御部49は、上記例示したようなソフトウェア構成の変化発生の検出処理、変化が発生していた場合にSWIDハッシュ値を生成してセンタに送信する処理、そして、必要に応じて、所定のECUソフトを更新する処理を実行する。
【0030】
以下、第1の実施例に係る処理の詳細について説明する。
【0031】
[センタ1で用いられるデータについて]
まず、センタ1の処理で用いられるデータについて説明する。
図6は、センタ1の記憶部16に記憶されるデータの一例を示すメモリマップである。記憶部16には、更新制御プログラム101、SWIDデータベース102、車両データベース103が記憶される。また、図示は省略するが、その他、OTAサービスを実現するための各種プログラムやデータも記憶部16に記憶される。
【0032】
更新制御プログラム101は、本実施形態に係るソフトウェア更新の処理を制御するためのプログラムである。
【0033】
SWIDデータベース102は、上述したSWIDについて定義したデータベースである。また、当該SWIDデータベース102では、車両に実装され得る全てのSWIDについて定義されている。
図7は、当該SWIDデータベース102のデータ構成の一例を示す図である。SWIDデータベース102は、SWID111と構成情報112との項目を少なくとも有するデータベースである。SWID111は、上記「自動運転機能 Ver1.0」等のような、SWIDを特定するためのデータである。構成情報112は、そのSWID(に対応する機能)を構成する上記構成ECUに関するデータである。具体的は、構成情報112は、構成ECU113およびVer情報114の項目を有するテーブル形式のデータである。構成ECU113は、そのSWIDを構成するECUソフトを特定するためのデータである。Ver情報114は、各ECUソフトのバージョンを示すデータである。
図7の例では、「自動運転機能 Ver1.0」というSWID111は、「アクセルECU Ver1.0」と、「ブレーキECU Ver1.0」と、「ハンドルECU Ver1.0」との組み合わせから構成されることが定義されている。
【0034】
図6に戻り、次に、車両データベース103は、OTAサービスの提供対象となる車両に関する情報を登録したデータベースである。
図8は、車両データベース103のデータ構成の一例を示す図である。車両データベース103は、VIN121と前回記憶情報122との項目を少なくとも有するデータベースである。VIN121は、車両を一意に特定するための番号である。前回記憶情報122は、VIN121で示される車両について直近の更新処理が完了した時点における、上記SWIDに関する情報である。具体的には、前回記憶情報122は、SWID123および前回ハッシュ値124とを含むテーブル形式のデータである。SWID123は、その車両に実装されているSWID(に対応する機能)を示すデータである。そのため、その内容は車両によって異なり得る。前回ハッシュ値124は、そのSWIDに対応するSWIDハッシュ値である。本実施例では、当該値は、上記SWIDデータベース102の情報に基づいて算出されるハッシュ値を同じ値となるものではあるが、当該算出に係る処理の手間を省くために、ハッシュ値自体を記憶しているものである。
【0035】
[OTAマスタ31で用いられるデータについて]
次に、OTAマスタ31で用いられるデータについて説明する。
図9は、OTAマスタ31の記憶部47に記憶されるデータの一例を示すメモリマップである。OTAマスタ31の記憶部47には、更新制御プログラム151、実装SWID定義データ152、チェック用SWIDハッシュ値153が少なくとも記憶されている。その他、図示は省略するが、OTAサービスを実現するための各種プログラムやデータも記憶部47に記憶される。
【0036】
更新制御プログラム151は、本実施例に係る処理をOTAマスタ31が実行するためのプログラムである。
【0037】
実装SWID定義データ152は、その車両に実装されているSWID(に対応する機能)に関するデータである。
図10は、当該実装SWID定義データ152のデータ構成の一例を示す図である。実装SWID定義データ152は、SWID161および構成情報162との項目を少なくとも含むデータベースである。その基本的なデータ構成は、上記SWIDデータベース102と同様であるため、詳細な説明は省略するが、当該実装SWID定義データ152は、上記SWIDデータベース102に含まれるデータのうち、その車両で現在実装されているSWIDに係るデータのみ抽出されたような内容となっている。また、当該実装SWID定義データ152は、更新処理の際にその内容も更新され得る。例えば、OTAサービスによる更新処理の結果、「自動運転機能Ver1.0」が「自動運転機能Ver2.0」に更新された場合、当該実装SWID定義データ152の内容も当該更新内容に応じて更新される。
【0038】
図9に戻り、チェック用SWIDハッシュ値153は、OTAサービスに係る更新処理によるもの以外で車両のソフトウェア構成に変化が発生したか否かを判定するために用いられるデータである。本実施例では、整備工場でECUが物理的に交換される場合を想定して説明している。そのため、当該チェック用SWIDハッシュ値153は、例えば整備員が交換作業前に所定の操作を行うことで生成されるものとする。具体的には、当該所定の操作に基づいて、その時点での(車両に実装されている)各SWIDに係るSWIDハッシュ値が算出され、これらが記憶部47に記憶されることで当該チェック用SWIDハッシュ値153が生成されるものとする。
図11に、当該チェック用SWIDハッシュ値153のデータ構成の一例を示す。チェック用SWIDハッシュ値153は、SWID171とチェック用ハッシュ値172との項目を有するテーブル形式のデータである。SWID171は、その車両に実装されているSWIDを示すデータである。チェック用ハッシュ値172は、交換作業前におけるSWIDハッシュ値を記憶したデータである。
【0039】
[第1実施例の処理フロー]
次に、第1の実施例の処理の流れについて説明する。
図12~
図13は、第1の実施例に係る更新制御処理の詳細を示すフローチャートである。なお、
図12および
図13では、図の左側にOTAマスタ31が実行する処理を示し、図の右側にセンタ1が実行する処理を示している。また、本実施例では、OTAマスタ31側の処理については、車両のイグニッションがオンにされたときに実行が開始されるものとする。また、以下の説明では、上記チェック用SWIDハッシュ値153については、上記のように整備員によって既に生成されている状態であるとする。
【0040】
まず、ステップS1で、OTAマスタ31の制御部49は、自車に実装されているECUソフトについて、ソフトウェア構成の変化が発生したか否かを判定する。つまり、不一致状態となっているSWIDがあるか否かを判定する。当該判定手法はどのような手法でもよいが、本実施例では、ECU交換作業の前後でSWIDハッシュ値を比較する手法を例示する。具体的には、上記のようなECU交換作業の前に、整備員の操作に基づいて、その車両に実装されている全てのSWIDに係るSWIDハッシュを保存しておく。そして、制御部49は、交換後のSWIDハッシュ値と当該保存したSWIDハッシュ値とがそれぞれ一致するか否かをSWID単位で見ることで、ソフトウェア構成の変化の発生を判断する。すなわち、制御部49は、各SWIDのSWIDハッシュ値を算出し、それぞれを上記チェック用SWIDハッシュ値153の内容と比較する。そして、不一致のSWIDハッシュ値があれば、制御部49は、そのSWIDに係るソフトウェア構成に変化が発生したと判定する。不一致のSWIDハッシュ値が無い場合は、制御部49は、ソフトウェア構成の変化は発生していないと判定する。
【0041】
なお、当該ステップS1の処理に関して、第1の実施例では、その車両に実装されている全てのSWIDに係るSWIDハッシュ値を保存し、全SWIDをチェックすることで構成変化が発生したSWIDを検出する例を挙げた。他の実施例では、次のようにしてもよい。例えば、整備工場においては、交換作業の対象となるECUは事前に判別できると考えられる。そのため、交換作業の開始前に、当該交換対象ECUを構成ECUとしているSWIDを示すデータと、そのSWIDハッシュ値のみを上記チェック用SWIDハッシュ値153として保存するようにしてもよい。そして、ステップS1の処理では、当該交換対象ECUに係るSWIDについてのみ、上記のような比較処理を行うようにしてもよい。これにより、処理の高速化を図ることが可能となる。
【0042】
上記ステップS1の判定の結果、ソフトウェア構成に変化が発生していない場合は(ステップS1でNO)、車両側の更新制御処理は終了する。一方、ソフトウェア構成に変化が発生している場合は(ステップS1でYES)、ステップS2で、制御部49は、ソフトウェア構成に変化が発生したSWIDに係るSWIDハッシュ値を算出する。そして、制御部49は、更新の有無を問い合わせるためのデータである「更新問い合わせ」を生成してセンタ1に送信する。この際、制御部49は、当該「更新問い合わせ」に自車を示すVINと、変化が発生したSWIDと、上記算出したSWIDハッシュとを含めて送信する。
【0043】
次に、ステップS3で、センタ1の制御部18は、所定の車両から上記SWIDハッシュを含む「更新問い合わせ」が送信されてきたか否かを判定する。送信されてきていない場合は(ステップS3でNO)、制御部18は、ステップS3の処理を繰り返す(つまり、「更新問い合わせ」を待ち受ける)。送信されてきた場合は(ステップS3でYES)、次に、ステップS4で、制御部18は、当該「更新問い合わせ」を受信し、これに含まれるSWIDハッシュ値に基づくチェック処理を実行する。具体的には、制御部18は、車両データベース103を参照し、当該「更新問い合わせ」の送信元の車両(OTAマスタ31)を特定する。更に、制御部18は、「更新問い合わせ」に含まれているSWIDに対応する前回ハッシュ値124を車両データベース103から取得する。そして、制御部18は、前回ハッシュ値124と上記SWIDハッシュとが一致する否かを判定する。当該判定の結果、ハッシュ値が一致する場合は(ステップS4でYES)、ステップS5で、制御部18は、更新処理は不要であることを示す更新不要通知をOTAマスタ31に送信する。その後、制御部18は、ステップS3の処理に戻る。
【0044】
一方、上記判定の結果、ハッシュ値が不一致の場合は(ステップS4でNO)、ステップS6で、制御部18は、該当するSWIDに係る詳細情報の送信要求をOTAマスタ31に送信する。この詳細情報とは、(SWIDハッシュではなく)SWIDの構成ECUそれぞれの具体的なソフトウェアのバージョンを示す情報である。当該送信要求を送信すれば、制御部18は、OTAマスタ31からのレスポンスを待ち受ける。
【0045】
次に、ステップS7で、OTAマスタ31の制御部49は、詳細情報の送信要求があるか否かを判定する。具体的には、制御部49は、更新不要通知が送信されてきたか、詳細情報の送信要求が送信されてきたかを判定する。更新不要通知が送信されてきた場合は(ステップS7でNO)、詳細情報の要求はされなかったとして、制御部49は、車両側の更新制御処理を終了する。一方、詳細情報の送信要求が送信されてきた場合は(ステップS7でYES)、次に、ステップS8で、制御部49は、詳細情報を生成してセンタ1に送信する。具体的には、制御部49は、上記送信要求において指定されているSWIDの構成ECUのそれぞれについて、そのソフトウェアバージョンの情報を取得する。そして、制御部49は、これらの情報が含まれる詳細情報を生成して、センタ1に送信する。その後、制御部49は、センタ1からの指示を待ち受ける。
【0046】
次に、ステップS9で、センタ1の制御部18は、上記送信された詳細情報を受信する。次に、ステップS10で、制御部18は、当該詳細情報に基づき、バージョンが不一致のECUソフトを特定する。具体的には、制御部18は、詳細情報で示される各構成ECUのバージョンと、SWIDデータベース102で定義されているVer情報114とを比較していくことで、バージョンが不一致である構成ECUを特定する。以下、この構成ECUのことを不一致ECUと呼ぶ。
【0047】
次に、
図13のステップS11で、制御部18は、不一致ECUについて、更新処理を行って不一致状態を解消する必要があるか否かを判定する。これは、原則的には不一致状態を解消すべきではあるが、ソフトウェアのバージョン次第では、不一致状態のままでも機能的には問題ない、というケースがあり得ることを考慮したものである。例えばアクセルECUのバージョンが2.0から2.1に上がった場合であって、その変更箇所が自動運転機能の実現に関して何ら影響を及ぼさないような変更である場合は、SWIDデータベース102で定義されている内容とは一致しない場合であっても、更新不要と判定することもあり得る。これにより、必ずしも必要ではない更新処理を行わずに済ませることができ、通信量の削減を図ることもできる。なお、このような、不一致状態でも許容されるバージョンの情報については、図示は省略するが、センタ1の記憶部16にその情報を示すデータが記憶されていてもよい。そして、この情報に基づき、制御部18が更新処理の必要性を判定すればよい。
【0048】
上記ステップS11の判定の結果、不一致状態の解消の必要性がないと判定された場合は(ステップS11でNO)、ステップS12で、制御部18は、上記更新不要通知をOTAマスタ31に送信する。そして、制御部18は、上記ステップS3に戻り、処理を繰り返す。
【0049】
一方、上記ステップS11の判定の結果、不一致状態の解消の必要性があると判定された場合は(ステップS11でYES)、更新処理が実行される。具体的には、まず、ステップS13で、制御部18は、更新開始指示をOTAマスタ31に送信する。次に、ステップS14で、OTAマスタ31の制御部49は、更新開始指示が来たか否かを判定する。当該判定の結果、更新開始指示ではなく、更新不要通知が来ている場合は(ステップS14でNO)、制御部49は、OTAマスタ31側の更新制御処理を終了する。一方、更新開始指示が来ている場合は(ステップS14でYES)、ステップS15およびステップS16で、センタ1の制御部18およびOTAマスタ31の制御部49は、適宜協働しながら、不一致ECUに係る更新処理を実行する。具体的には、センタ1の制御部18は、更新用のデータをOTAマスタ31に送信し、OTAマスタ31の制御部49は、当該更新用データに基づいて不一致ECUのソフトウェアを更新する処理を実行する。
【0050】
次に、ステップS17で、制御部49は、更新処理が完了したか否かを判定する。まだ完了していなければ(ステップS17でNO)、上記ステップS15に戻り、更新処理を継続する。更新処理が完了すれば(ステップS17でYES)、制御部49は、更新完了通知をセンタ1に送信する。更に、ステップS18で、制御部49は、更新後のSWIDハッシュ値を生成し、センタ1に送信する。
【0051】
一方、センタ1では、ステップS19で、制御部18は、OTAマスタ31から上記更新完了通知を受信したか否かを判定し、受信していない場合はステップS16に戻り、更新処理を継続する。更新完了通知を受信した場合は、ステップS20で、制御部18は、OTAマスタ31から送信された上記更新後のSWIDハッシュ値を受信し、車両データベース103の前回ハッシュ値124として記録する。その後、制御部18は、上記ステップS3に戻り、処理を繰り返す。
【0052】
次に、ステップS21で、OTAマスタ31の制御部49は、チェック用SWIDハッシュ値153の内容を、上記更新後のSWIDハッシュ値の内容で更新する。これにより、次に上記ステップS1の判定が行われた際に、構成変化は発生していないと判定されることになる。つまり、ソフトウェア構成の不一致状態が解消されたということになる。以上で、第1の実施例に係る更新制御処理は終了する。
【0053】
このように、第1の実施例では、ECU交換によって、交換前後でECUのソフトウェア構成に変化が発生した場合、変化が発生したSWIDに係るECUの情報だけをセンタ1に送信して更新処理を実行できる。これにより、上記総合ハッシュ値を用いる場合に比べて通信量を削減でき、また、更新処理を完了させるまでの時間を短縮することが可能となる。
【0054】
(第2の実施例)
次に、上記のようなSWIDを用いる処理の、第2の実施例について説明する。第2の実施例では、次のようなケースを想定する。第2の実施例では、所定のECUについて緊急更新を行いたい、という場合を想定する。OTAサービスでは、通常は、例えば2週間に1回のような頻度で、OTAマスタ31からセンタ1に定期的に更新の有無の問い合わせを行い、そのタイミングで更新が存在すれば更新処理を行っている。しかし、時には緊急性の高い更新が発生するケースも考えられる。このような場合、第2の実施例として、以下のような処理が実行される。まず、センタ1から、OTAサービスで用いるネットワーク(インターネット網)とは異なる経路、例えばキャリア網のSMS(ショートメッセージサービス)やV2X等で、OTAマスタ31にセンタ1への「更新問い合わせ」を行わせるためのコマンド(以下、センタコマンドと呼ぶ)を送信する。本実施例では、SMSで当該センタコマンドを送信する場合を例に挙げる。このセンタコマンドには、緊急更新対象となるECUが構成ECUとなっているSWIDを示す情報が含まれている。車両側では、制御部49は、当該センタコマンドを受信すると、次回のイグニッションオンのタイミングで、当該センタコマンドで示されているSWIDに係るSWIDハッシュ値をセンタ1に送信する。センタ1では、制御部18は、当該SWIDハッシュ値に基づき、その車両に対する更新処理の必要性を判定する。そして、必要な場合は、緊急更新に係る処理が実行されることになる。
【0055】
以下、第2の実施例の詳細について説明する。まず、第2の実施例におけるハードウェア構成(センタ1およびOTAマスタ31)については、基本的には、上記第1の実施例と同様のため、詳細な説明は割愛するが、第2の実施例では、車両3の通信モジュール32は、上記センタコマンドを受信するセンタコマンド受信部としての機能も果たす。
【0056】
次に、第2の実施例において使用するデータについては、基本的には、第1の実施例と同様のデータが用いられるが、OTAマスタ31の記憶部47に記憶されるデータに一部相違がある。
図14は、第2の実施例におけるOTAマスタ31の記憶部47に記憶されるデータの一例を示すメモリマップである。OTAマスタ31の記憶部47には、更新制御プログラム151、実装SWID定義データ152、センタコマンドデータ181が少なくとも記憶されている。このうち、更新制御プログラム151、実装SWID定義データ152については、第1の実施例と同様のものであるため、説明は割愛する。
【0057】
センタコマンドデータ181は、上記通信モジュール32で受信されたセンタコマンドを記憶したものである。本実施例では、イグニッションオンのタイミングで、当該センタコマンドデータ181の有無が判定され、有る場合は、当該センタコマンドデータ181の内容に基づいた処理が実行される。なお、本実施例では、上記のような緊急更新を行うためのコマンド、具体的には、緊急更新の対象に係るSWIDをセンタ1に送信するような指示がセンタコマンドに定義されているとする。
【0058】
次に、第2の実施例に係る処理の流れについて説明する。
図15は、第2の実施例に係る更新制御処理の詳細を示すフローチャートである。
図15では、図の左側にOTAマスタ31が実行する処理を示し、図の右側にセンタ1が実行する処理を示している。また、本実施例では、OTAマスタ31側の処理については、車両のイグニッションがオンにされたときに実行が開始されるものとする。また、上記センタコマンドについては、既にセンタ1からSMSで送信されてきており、センタコマンドデータ181に記憶されている状態であるとする。
【0059】
まず、ステップS31で、OTAマスタの制御部49は、センタコマンドを受信しているか否かを判定する。具体的には、制御部49は、センタコマンドデータ181を参照して、センタコマンドが記憶されていればセンタコマンドを受信していると判定し、記憶されていない場合はセンタコマンドは受信していないと判定する。当該判定の結果、センタコマンドを受信していない場合は(ステップS31でNO)、制御部49は、第2の実施例に係る更新制御処理を終了する。一方、センタコマンドを受信している場合は(ステップS31でYES)、次に、ステップS32で、制御部49は、センタコマンドにおいて示されているSWIDに係るSWIDハッシュ値を算出する。そして、制御部49は、当該SWIDを示す情報、およびSWIDハッシュ値を含む「更新問い合わせ」を生成して、センタ1に送信する。
【0060】
次に、ステップS33で、センタ1の制御部18は、所定の車両から、上記センタコマンドに基づく「更新問い合わせ」を受信したか否かを判定する。センタコマンドに基づいた「更新問い合わせ」であるか否かは、例えば、上記「更新問い合わせ」のヘッダ部分にセンタコマンドに基づく「更新問い合わせ」であることを示すデータを含めておき、制御部18がこのデータに基づいて判定するようにすればよい。当該判定の結果、センタコマンドに基づく「更新問い合わせ」を受信していない場合は(ステップS33でNO)、ステップS33の処理を繰り返す。すなわち、制御部18は、センタコマンドに基づく「更新問い合わせ」の待ち受けを継続する。
【0061】
一方、センタコマンドに基づく「更新問い合わせ」を受信した場合は(ステップS33でYES)、次に、ステップS34で、制御部18は、受信した「更新問い合わせ」に含まれるSWIDハッシュ値に基づき、更新処理の必要があるか否かを判定する。具体的には、制御部18は、上記「更新問い合わせ」に含まれているSWIDハッシュ値が、今回の緊急更新の対象となるSWIDのハッシュ値と一致するか否かを判定する。そして、一致すれば、制御部18は、更新の必要は無いと判定し、一致しない場合は更新の必要性ありと判定する。なお、このような緊急更新の必要が無い場合としては、上記緊急更新に係るセンタコマンドの受信前に、例えば整備工場において当該緊急更新と同内容の更新処理が既に行われている場合等が考えられる。
【0062】
上記ステップS34の判定の結果、更新の必要が無い場合は(ステップS34でNO)、ステップS35で、制御部18は、更新不要通知をOTAマスタに送信する。一方、更新の必要がある場合は(ステップS34でYES)、ステップS36で、制御部18は、更新開始指示をOTAマスタ31に送信する。次に、ステップS37で、OTAマスタ31の制御部49は、更新開始指示が来たか否かを判定する。当該判定の結果、更新開始指示ではなく、更新不要通知が来ている場合は(ステップS37でNO)、制御部49は、更新制御処理を終了する。一方、更新開始指示が来ている場合は(ステップS37でYES)、ステップS38およびステップS39で、センタ1の制御部18およびOTAマスタ31の制御部49は、適宜協働しながら更新処理を実行する。具体的には、制御部49は、上記第1の実施例において示したような詳細情報をセンタ1に送信する。センタ1の制御部18は、更新が必要なECUソフトを特定し、更新用のデータをOTAマスタ31に送信する。そして、OTAマスタ31の制御部49は、当該更新用データに基づいて、緊急更新の対象となるECUソフトを更新する処理を実行する。
【0063】
次に、ステップS40で、制御部49は、更新処理が完了したか否かを判定する。まだ完了していなければ(ステップS40でNO)、上記ステップS38に戻り、更新処理を継続する。更新処理が完了すれば(ステップS40でYES)、制御部49は、更新完了通知をセンタ1に送信する。
【0064】
一方、センタ1では、ステップS41で、制御部18は、上記更新完了通知を受信したか否かを判定し、受信していない場合は(ステップS41でNO)、ステップS39に戻り、更新処理を継続する。更新完了通知を受信した場合は(ステップS41でYES)、制御部18は、上記ステップS33に戻り、処理を繰り返す。
【0065】
次に、ステップS42で、OTAマスタの制御部49は、センタコマンドデータ181をクリアする。これにより、新たなセンタコマンドを受信しない限り、上記ステップS31の判定でセンタコマンドを受信していないと判定されることになる。
【0066】
以上で、第2の実施例に係る更新制御処理は終了する。
【0067】
このように、第2の実施例では、緊急更新がある場合、その更新対象のECUが事前に判別できるため、上記センタコマンドにおいて、更新対象ECUに係るSWIDだけを送信するような指示を含めている。そのため、全ECUにかかる処理を行うことなく、緊急更新対象のECUに関係するSWID単位で、更新の必要性を判定できる。これにより、緊急更新にかかる処理をより速やかに完了させることが可能となる。
【0068】
(第3の実施例)
次に、第3の実施例について説明する。第3の実施例は、上述した第1の実施例および第2の実施例を組み合わせた処理の例示である。具体的には、上記センタコマンドを受信した場合に、ソフトウェア構成の変化が発生していれば、その構成変化に係るSWIDのSWIDハッシュ値も送信し、センタコマンドによる処理の実行開始前に、不一致状態を解消しておくという処理である。換言すれば、センタコマンドが送られてきたことをトリガとして、ソフトウェア構成に変化が発生したSWIDをセンタに送信し、必要であれば不一致状態を解消するという処理である。
【0069】
図16は、第3の実施例に係る処理の流れを示すフローチャートである。なお、
図16では、OTAマスタ31が実行する処理のみについて示している。
図16において、まず、ステップS51で、制御部49は、センタコマンドを受信しているか否かを判定する。この処理は、上記ステップS31と同様の処理である。当該判定の結果、センタコマンドを受信している場合は(ステップS51でYES)、次に、ステップS52で、制御部49は、自車に実装されているECUソフトについて、ソフトウェア構成の変化が発生したか否かを判定する。この処理は、上記
図12で示したステップS1と同様の処理が行われる。当該判定の結果、ソフトウェア構成に変化が発生していない場合は(ステップS52でNO)、後述のステップS55に処理が進められる。
【0070】
一方、ソフトウェア構成に変化が発生している場合は(ステップS52でYES)、ステップS53で、制御部49は、ソフトウェア構成に変化が発生したSWID(に対応するECUソフト)が、上記センタコマンドにおいて示されている更新対象に含まれているか否かを判定する。当該判定の結果、ソフトウェア構成の変化があったSWIDがセンタコマンドで示される更新対象に含まれていれば、センタコマンドに基づく更新処理で対処し、当該更新対象に含まれていない場合は別途不一致状態の解消処理を実行するという制御が行われる。具体的には、ソフトウェア構成に変化が発生したSWIDがセンタコマンドにおいて示されている更新対象に含まれていない場合は(ステップS53でNO)、ステップS54で、制御部49は、不一致状態を解消するための処理を実行する。すなわち、制御部49は、第1の実施例として上述したような処理を行うことで、不一致状態の解消を行う。その後、ステップS55に処理が進められる。
【0071】
一方、上記ステップS53の判定の結果、ソフトウェア構成に変化が発生したSWIDが、上記センタコマンドにおいて示されている更新対象に含まれている場合は(ステップS53でYES)、ステップS55で、制御部49は、センタコマンドに基づく更新処理を実行する。すなわち、制御部49は、第2の実施例として上述したような処理を実行し、センタコマンドにおいて示されている更新対象のECUソフトを更新する。その後、制御部49は、第3の実施例に係る更新制御処理を終了する。
【0072】
一方、上記ステップS51の判定の結果、センタコマンドを受信していない場合は(ステップS51でNO)、ステップS56で、制御部49は、自車に実装されているECUソフトについて、ソフトウェア構成の変化が発生したか否かを判定する。この処理は、上記ステップS31と同様の処理である。当該判定の結果、ソフトウェア構成に変化が発生している場合は(ステップS56でYES)、ステップS57で、制御部49は、不一致状態を解消するための処理を実行する。すなわち、上記ステップS54の処理と同様に、制御部49は、第1の実施例として上述したような処理を行うことで、不一致状態の解消を行う。
【0073】
一方、ソフトウェア構成に変化が発生していない場合は(ステップS56でNO)、制御部49は、第3の実施例に係る更新制御処理を終了する。
【0074】
このように、第3の実施例では、センタコマンドを受信した場合に、ソフトウェア構成に変化が発生していれば、当該変化が発生したSWIDに関する情報をセンタに送信している。そのため、センタコマンドによる処理を実行する際に、不一致状態の解消処理も併せて実行することができる。これにより、処理が二度手間にならないように済ませることができ、また、不一致状態を速やかに解消できる。
【0075】
[変形例]
なお、上記第2の実施例として、緊急更新の場合にセンタコマンドをSMS等で送信する例を挙げたが、このような場合に限らず、緊急更新対応以外の内容のセンタコマンドを送信してもよい。例えば、他の実施例では、ソフトウェア構成に変化があったSWIDの情報のみをセンタ1に送信する旨の指示が含まれるセンタコマンドを送信するようにしてもよい。この場合、OTAマスタ31の制御部49は、センタコマンドの指示に従って、構成に変化が発生したSWIDに係るSWIDハッシュを算出してセンタ1に送信すればよい。つまり、上記第1の実施例で示したような不一致箇所を解消する処理を開始させるためにセンタコマンドを送信する構成としてもよい。
【0076】
また、センタコマンドに関しては、その他、次のような場合にも、上記のようなソフトウェア構成に変化があったSWIDの情報のみをセンタ1に送信する旨のセンタコマンドを送信するようにしてもよい。例えば、車両側でECU交換が行われた結果、所定のSWIDについてソフトウェア構成に変化が発生しており、OTAマスタ31側では何らかの事情でこの変化を把握できていないが、センタ1側ではこの変化を把握できている、という場合を想定する。センタ1側でこのような変化を把握する手法としては、例えばECU交換作業の完了時に整備工場からセンタ1に交換作業内容に関する情報が送信された場合等が考えられる。このような場合に、センタ1側では、当該交換作業が行われた車両について、変化が発生した(または、発生している可能性がある)SWIDを特定することが可能である。そこで、このような場合に上記第1の実施例で示したような処理を実行するため、交換されたECUに対応するSWIDに係る情報をセンタ1に送信する旨の指示を、センタコマンドに含めてOTAマスタ31に送信するようにしてもよい。
【0077】
また、上記第1の実施例では、ソフトウェア構成に変化が発生した場合に、その変化に係るSWIDハッシュ値をセンタ1に送信していた。また、第2および第3の実施例では、センタコマンドを受信したことをトリガーとしてセンタ1に所定のSWIDハッシュ値を送信していた。このようなSWIDの送信について、他の実施例では、以下のような処理を行ってもよい。すなわち、OTAサービスにおける通常の更新処理の問い合わせのタイミングで、上記のSWIDハッシュ値をセンタ1に送信するような構成としてもよい。OTAサービスにおける更新処理では、例えば、2週間に1度のような頻度で定期的に、センタ1に更新有無の問い合わせを行っている。当該問い合わせの際、従来は上記総合ハッシュ値を送信し、総合ハッシュ値について不一致と判定された場合、全ECUソフトのバージョン情報を要求している。このような、総合ハッシュ値の代わりに、所定の車両に実装されている分のSWIDハッシュ値をセンタ1に送信するようにしてもよい。そして、センタ1では、SWID単位でチェック処理を行い、更新が必要なSWIDについてのみ、上述した詳細情報を要求するような構成としてもよい。この場合も、更新処理が完了するまでの時間の短縮を図ることが可能となる。
【0078】
以上、本開示技術の一実施形態を説明したが、本開示は、OTAマスタだけでなく、プロセッサと、メモリとを少なくとも備え、OTAセンタとネットワークを介して通信可能なOTAマスタのコンピュータが実行する更新制御方法、その方法の制御プログラム、その制御プログラムを記憶したコンピューター読み取り可能な非一時的な記録媒体、等として捉えることが可能である。
【産業上の利用可能性】
【0079】
本開示技術は、ソフトウェア更新機能を制御するOTAマスタに利用できる。
【符号の説明】
【0080】
1 センタ
3 車両
11 プロセッサ
12 RAM
13 記憶装置
14 通信装置
31 OTAマスタ
32 通信モジュール
33 電子制御装置
35 バス
41 プロセッサ
42 RAM
43 ROM
44 記憶装置
46 通信装置