(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024176490
(43)【公開日】2024-12-19
(54)【発明の名称】ソフトウェア提供装置及びソフトウェア更新装置
(51)【国際特許分類】
G06F 8/654 20180101AFI20241212BHJP
【FI】
G06F8/654
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2023095050
(22)【出願日】2023-06-08
(71)【出願人】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】230120499
【弁護士】
【氏名又は名称】藤江 和典
(74)【代理人】
【識別番号】100201385
【弁理士】
【氏名又は名称】中安 桂子
(72)【発明者】
【氏名】柳澤 幸男
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376CA06
5B376CA15
5B376GA08
(57)【要約】 (修正有)
【課題】車載用の電子制御装置の処理の負担を軽減するソフトウェア提供装置及びソフトウェア更新装置、方法並びにプログラムを提供する。
【解決手段】ソフトウェア提供装置100は、新ソフトウェアと旧ソフトウェアの差分である差分データを取得する差分データ取得部101と、差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部102と、新ソフトウェアに関連する関連データを取得する関連データ取得部103と、関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部104と、差分適用位置情報と関連データ位置情報とに基づき、第2のセクタに差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部105と、差分データ、差分適用位置情報、関連データ及びフラグ情報を差分更新情報としてソフトウェア更新装置に送信する送信部106と、を有する。
【選択図】
図5
【特許請求の範囲】
【請求項1】
移動体に搭載されたソフトウェア更新装置(200)のセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアに対する差分更新情報を提供するソフトウェア提供装置(100)であって、
新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得する差分データ取得部(101)と、
前記差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部(102)と、
前記新ソフトウェアに関連するデータである関連データを取得する関連データ取得部(103)と、
前記関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部(104)と、
前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部(105)と、
前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する送信部(106)と、を有する、
ソフトウェア提供装置(100)。
【請求項2】
前記送信部は、さらに前記関連データ位置情報を前記差分更新情報に含めて送信する、
請求項1記載のソフトウェア提供装置。
【請求項3】
前記差分適用位置情報は、前記第1のセクタの開始アドレス及び終了アドレスである、
請求項1記載のソフトウェア提供装置。
【請求項4】
前記関連データは、前記新ソフトウェアのバージョン情報である、
請求項1記載のソフトウェア提供装置。
【請求項5】
前記フラッシュメモリは、NOR型である、
請求項1記載のソフトウェア提供装置。
【請求項6】
当該ソフトウェア提供装置は、移動体の外部に設けられている、
請求項1記載のソフトウェア提供装置。
【請求項7】
当該ソフトウェア提供装置は、移動体に搭載されている、
請求項1記載のソフトウェア提供装置。
【請求項8】
ソフトウェア提供装置(100)から差分更新情報を受信し、前記差分更新情報を用いてセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアを更新する、移動体に搭載されたソフトウェア更新装置(200)であって、
前記ソフトウェア提供装置は、
新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得する差分データ取得部(101)と、
前記差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部(102)と、
前記新ソフトウェアに関連するデータである関連データを取得する関連データ取得部(103)と、
前記関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部(104)と、
前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部(105)と、
前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する送信部(106)と、を有し、
当該ソフトウェア更新装置は、
前記差分更新情報を受信する受信部(201)と、
前記差分更新情報に含まれる前記差分データ及び前記差分適用位置情報を用いて、前記第1のセクタの前記旧ソフトウェアを更新するソフトウェア更新部(202)と、
前記差分更新情報に含まれる前記フラグ情報を用いて、前記関連データを前記第2のセクタに書き込む関連情報記録部(203)と、を有し、
前記関連情報記録部は、
前記フラグ情報が前記第2のセクタに前記差分データが適用されることを示す場合、前記関連データを前記第2のセクタに書き込み、
前記フラグ情報が前記第2のセクタに前記差分データが適用されないことを示す場合、前記第2のセクタに書き込まれた前記旧ソフトウェアを退避して前記第2のセクタを消去し、退避した前記旧ソフトウェア及び前記関連データを前記第2のセクタに書き込む、
ソフトウェア更新装置(200)。
【請求項9】
前記ソフトウェア提供装置の前記送信部は、さらに前記関連データ位置情報を前記差分更新情報に含めて送信し、
当該ソフトウェア更新装置の関連情報記録部は、さらに前記関連データ位置情報を用いて、前記関連データを前記第2のセクタに書き込む、
請求項8記載のソフトウェア更新装置。
【請求項10】
移動体に搭載されたソフトウェア更新装置(200)のセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアに対する差分更新情報を提供するソフトウェア提供装置(100)で実行されるソフトウェア提供方法であって、
新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得し(S101)、
前記差分データが適用される第1のセクタを示す差分適用位置情報を取得し(S102)、
前記新ソフトウェアに関連するデータである関連データを取得し(S103)、
前記関連データが保存される第2のセクタを示す関連データ位置情報を取得し(S104)、
前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成し(S105)、
前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する(S106)、
ソフトウェア提供方法。
【請求項11】
移動体に搭載されたソフトウェア更新装置(200)のセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアに対する差分更新情報を提供するソフトウェア提供装置(100)で実行可能なソフトウェア提供プログラムであって、
新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得し(S101)、
前記差分データが適用される第1のセクタを示す差分適用位置情報を取得し(S102)、
前記新ソフトウェアに関連するデータである関連データを取得し(S103)、
前記関連データが保存される第2のセクタを示す関連データ位置情報を取得し(S104)、
前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成し(S105)、
前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する(S106)、
ソフトウェア提供プログラム。
【請求項12】
ソフトウェア提供装置(100)から差分更新情報を受信し、前記差分更新情報を用いてセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアを更新する、移動体に搭載されたソフトウェア更新装置(200)で実行されるソフトウェア更新方法であって、
前記ソフトウェア提供装置は、
新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得する差分データ取得部(101)と、
前記差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部(102)と、
前記新ソフトウェアに関連するデータである関連データを取得する関連データ取得部(103)と、
前記関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部(104)と、
前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部(105)と、
前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する送信部(106)と、を有し、
当該ソフトウェア更新方法は、
前記差分更新情報を受信し(S201)、
前記差分更新情報に含まれる前記差分データ及び前記差分適用位置情報を用いて、前記第1のセクタの前記旧ソフトウェアを更新し(S203~S207)、
前記フラグ情報が前記第2のセクタに前記差分データが適用されることを示す場合、前記関連データを前記第2のセクタに書き込み(S208,S212)、
前記フラグ情報が前記第2のセクタに前記差分データが適用されないことを示す場合、前記第2のセクタに書き込まれた前記旧ソフトウェアを退避して前記第2のセクタを消去し、退避した前記旧ソフトウェア及び前記関連データを前記第2のセクタに書き込む(S208~S212)、
ソフトウェア更新方法。
【請求項13】
ソフトウェア提供装置(100)から差分更新情報を受信し、前記差分更新情報を用いてセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアを更新する、移動体に搭載されたソフトウェア更新装置(200)で実行可能なソフトウェア更新プログラムであって、
前記ソフトウェア提供装置は、
新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得する差分データ取得部(101)と、
前記差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部(102)と、
前記新ソフトウェアに関連するデータである関連データを取得する関連データ取得部(103)と、
前記関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部(104)と、
前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部(105)と、
前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する送信部(106)と、を有し、
当該ソフトウェア更新プログラムは、
前記差分更新情報を受信し(S201)、
前記差分更新情報に含まれる前記差分データ及び前記差分適用位置情報を用いて、前記第1のセクタの前記旧ソフトウェアを更新し(S203~S207)、
前記フラグ情報が前記第2のセクタに前記差分データが適用されることを示す場合、前記関連データを前記第2のセクタに書き込み(S208,S212)、
前記フラグ情報が前記第2のセクタに前記差分データが適用されないことを示す場合、前記第2のセクタに書き込まれた前記旧ソフトウェアを退避して前記第2のセクタを消去し、退避した前記旧ソフトウェア及び前記関連データを前記第2のセクタに書き込む(S208~S212)、
ソフトウェア更新プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、主として車載の電子制御装置のソフトウェアを更新するために、電子制御装置であるソフトウェア更新装置に対して差分更新情報を提供するソフトウェア提供装置、受信した差分更新情報を用いてソフトウェアを更新するソフトウェア更新装置、そして、これらの装置で実行される方法、及びこれらの装置で実行可能なプログラムに関する。
【背景技術】
【0002】
自動車においては、車載ネットワークで接続された様々な電子制御装置が搭載されている。近年の自動運転技術の発展に伴い自動車に求められる機能が複雑になるため、自動車に搭載される電子制御装置の数は増加しつつある。
【0003】
電子制御装置には、それぞれの電子制御装置の機能を発揮するためのソフトウェアが搭載されている。そして、電子制御装置の機能を向上させたり、ソフトウェアの脆弱性を補修するために、ソフトウェアの更新が行われる。
【0004】
ソフトウェアの更新に際しては、ソフトウェアの転送時間や更新時間を短くするため、例えば特許文献1に示すように、新ソフトウェアと旧ソフトウェアの差分データのみを送信することが行われている。差分データを受信した更新装置においては、差分データと旧ソフトウェアから新ソフトウェアを生成しインストールを行うことでソフトウェアの更新が完了する。
また、特許文献2に示すように、ソフトウェアを記録する記録領域に、ソフトウェアのバージョン情報も記録している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2017―199183号公報
【特許文献2】特開2014―191574号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ここで、本発明者は、詳細な検討の結果、以下の課題を見出した。
電子制御装置においてフラッシュメモリにソフトウェアを書き込む場合、バージョン情報を記録するセクタにおいては、旧ソフトウェアからの更新がない場合であっても、バージョン情報を書き込むために一旦旧ソフトウェアを退避させなくてはならない。その結果、バージョン情報を記録するセクタにおいては、差分データの有無によって処理の内容が異なるが、バージョン情報を記録するセクタに適用される差分データの有無を電子制御装置側で判定する場合は、リソースが少ない車載用の電子制御装置にとって処理の負担が重くなってしまう。
また、バージョン情報を記録するセクタに適用される差分データの有無を電子制御装置側で判定しないで処理を進める場合は、バージョン情報を記録するセクタにおいては、旧ソフトウェアからの更新がない場合、新ソフトウェアに更新している場合、のいずれも、バージョン情報を記録するために一旦旧ソフトウェア又は新ソフトウェアを退避して、セクタを消去する必要があり、特に新ソフトウェアに更新している場合、消去の動作が2回必要となる。
【0007】
そこで、本発明は、車載用の電子制御装置の処理の負担を軽減するソフトウェア提供装置等を実現することを目的とする。
【課題を解決するための手段】
【0008】
本開示の一態様によるソフトウェア提供装置は、移動体に搭載されたソフトウェア更新装置(200)のセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアに対する差分更新情報を提供するソフトウェア提供装置(100)であって、
新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得する差分データ取得部(101)と、
前記差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部(102)と、
前記新ソフトウェアに関連するデータである関連データを取得する関連データ取得部(103)と、
前記関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部(104)と、
前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部(105)と、
前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する送信部(106)と、を有する。
【0009】
本開示の一態様によるソフトウェア更新装置は、ソフトウェア提供装置(100)から差分更新情報を受信し、前記差分更新情報を用いてセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアを更新する、移動体に搭載されたソフトウェア更新装置(200)であって、
前記ソフトウェア提供装置は、
新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得する差分データ取得部(101)と、
前記差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部(102)と、
前記新ソフトウェアに関連するデータである関連データを取得する関連データ取得部(103)と、
前記関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部(104)と、
前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部(105)と、
前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する送信部(106)と、を有し、
当該ソフトウェア更新装置は、
前記差分更新情報を受信する受信部(201)と、
前記差分更新情報に含まれる前記差分データ及び前記差分適用位置情報を用いて、前記第1のセクタの前記旧ソフトウェアを更新するソフトウェア更新部(202)と、
前記差分更新情報に含まれる前記フラグ情報を用いて、前記関連データを前記第2のセクタに書き込む関連情報記録部(203)と、を有し、
前記関連情報記録部は、
前記フラグ情報が前記第2のセクタに前記差分データが適用されることを示す場合、前記関連データを前記第2のセクタに書き込み、
前記フラグ情報が前記第2のセクタに前記差分データが適用されないことを示す場合、前記第2のセクタに書き込まれた前記旧ソフトウェアを退避して前記第2のセクタを消去し、退避した前記旧ソフトウェア及び前記関連データを前記第2のセクタに書き込む。
【0010】
なお、特許請求の範囲、及び本項に記載した発明の構成要件に付した括弧内の番号は、本発明と後述の実施形態との対応関係を示すものであり、本発明を限定する趣旨ではない。
【発明の効果】
【0011】
以上の構成によれば、ソフトウェア提供装置側で差分適用位置情報と関連データ位置情報とに基づき、第2のセクタに差分データが適用されるか否かを示すフラグ情報を生成しこれをソフトウェア更新装置に送信するので、ソフトウェア更新装置側で第2のセクタに差分データが適用されるか否かを判定する必要がなく、ソフトウェア更新装置の処理の負担を軽減することができる。
また、各セクタの消去の動作を多くても1回にすることができる。
【図面の簡単な説明】
【0012】
【
図1】ソフトウェア提供装置とソフトウェア更新装置の位置関係を説明する図
【
図3】実施形態1のソフトウェア更新装置の更新動作の概要を示す図
【
図4】実施形態1のソフトウェア更新装置の更新動作の概要を示す図
【
図5】実施形態1のソフトウェア提供装置の構成を説明するブロック図
【
図6】実施形態1のソフトウェア提供装置が有するフラッシュメモリ情報の具体例を説明する図
【
図7】実施形態1のソフトウェア更新装置の構成を説明するブロック図
【
図8】実施形態1のソフトウェア提供装置の動作を説明するメインルーチンフロー図
【
図9】実施形態1のソフトウェア提供装置の関連データ位置情報取得部の動作を説明するサブルーチンフロー図
【
図10】実施形態1のソフトウェア提供装置のフラグ情報生成部の動作を説明するサブルーチンフロー図
【
図11】実施形態1のソフトウェア更新装置の動作を説明するメインルーチンフロー図
【発明を実施するための形態】
【0013】
以下、本発明の実施形態について、図面を参照して説明する。
【0014】
なお、本発明とは、特許請求の範囲又は課題を解決するための手段の項に記載された発明を意味するものであり、以下の実施形態に限定されるものではない。また、少なくともかぎ括弧内の語句は、特許請求の範囲又は課題を解決するための手段の項に記載された語句を意味し、同じく以下の実施形態に限定されるものではない。
【0015】
特許請求の範囲の従属項に記載の構成及び方法は、特許請求の範囲の独立項に記載の発明において任意の構成及び方法である。従属項に記載の構成及び方法に対応する実施形態の構成及び方法、並びに特許請求の範囲に記載がなく実施形態のみに記載の構成及び方法は、本発明において任意の構成及び方法である。特許請求の範囲の記載が実施形態の記載よりも広い場合における実施形態に記載の構成及び方法も、本発明の構成及び方法の例示であるという意味で、本発明において任意の構成及び方法である。いずれの場合も、特許請求の範囲の独立項に記載することで、本発明の必須の構成及び方法となる。
【0016】
実施形態に記載した効果は、本発明の例示としての実施形態の構成を有する場合の効果であり、必ずしも本発明が有する効果ではない。
【0017】
複数の実施形態(変形例を含む。以下、本段落において同様。)がある場合、各実施形態に開示の構成は各実施形態のみで閉じるものではなく、実施形態をまたいで組み合わせることが可能である。例えば一の実施形態に開示の構成を、他の実施形態に組み合わせてもよい。また、複数の実施形態それぞれに開示の構成を集めて組み合わせてもよい。
【0018】
発明が解決しようとする課題に記載した課題は公知の課題ではなく、本発明者が独自に知見したものであり、本発明の構成及び方法と共に発明の進歩性を肯定する事実である。
【0019】
1.各実施形態の前提となる構成
(1)ソフトウェア提供装置とソフトウェア更新装置の位置関係
図1を用いて、各実施形態のソフトウェア提供装置100、及び電子制御システムSに含まれるソフトウェア更新装置200の位置関係を説明する。
【0020】
ソフトウェア提供装置100は、電子制御システムSを構成する電子制御装置(Electric Control Unit)20(以下、ECU20と略する。)の少なくとも一つであるソフトウェア更新装置200にソフトウェアを提供する装置である。
ソフトウェア更新装置200は、ソフトウェア提供装置100からソフトウェアの提供を受け、フラッシュメモリに格納されていた旧ソフトウェアを新ソフトウェアに更新する装置である。
【0021】
図1(a)では、ソフトウェア提供装置100は、「移動体」である車両の外部に設けられたサーバ装置であり、ソフトウェア提供装置100と電子制御システムSとは、無線通信方式で接続されている。無線通信方式の例として、例えば、IEEE802.11(Wi-Fi(登録商標))、IEEE802.16(WiMAX(登録商標))、W-CDMA(Wideband Code Division Multiple Access)、HSPA(High Speed Packet Access)、LTE(Long Term Evolution)、LTE-A(Long Term Evolution Advanced)、又は4G、5G等が挙げられる。あるいは、DSRC(Dedicated Short Range Communication)を用いることができる。
【0022】
図1(b)では、ソフトウェア提供装置100は、「移動体」である車両の外部に設けられた外部接続装置である診断装置(Diagnostic Tool)やパーソナルコンピュータ、あるいはスマートフォンであり、ソフトウェア提供装置100と電子制御システムSとは、有線通信方式又は無線通信方式で接続されている。有線通信方式の例として、例えば、Ethernet(登録商標)やUSBが挙げられる。無線通信方式の例として、上述の例の他、Bluetooth(登録商標)や赤外線通信が挙げられる。
【0023】
図1(c)では、ソフトウェア提供装置100は、「移動体」である車両に「搭載」されている装置であり、ソフトウェア提供装置100とソフトウェア更新装置200とは、有線通信方式又は無線通信方式で接続されている。有線通信方式の例として、上述の有線通信方式の他、CAN(Controller Area Network)、LIN(Local Interconnect Network)といった車載通信ネットワークが挙げられる。無線通信方式の例は、上述の通りである。
【0024】
ここで、
「移動体」とは、移動可能な物体をいい、移動速度は任意である。また移動体が停止している場合も当然含む。例えば、自動車、自動二輪車、自転車、歩行者、船舶、航空機、及びこれらに搭載される物を含み、またこれらに限らない。
「搭載」される、とは、移動体に直接固定されている場合の他、移動体に固定されていないが移動体と共に移動する場合も含む。例えば、移動体に乗った人が所持している場合、移動体に載置された積荷に搭載されている場合、が挙げられる。
【0025】
(2)電子制御システムSの構成
図2は、車両に搭載された電子制御システムSの構成例を示す図である。電子制御システムSは、複数のECU20、及びこれらを接続する車載ネットワーク(NW1~NW3)から構成されている。
図2は8つのECU(ECU20a~ECU20h)を例示しているが、当然のことながら、電子制御システムSは任意の数のECUから構成される。以後の説明では、単数又は複数の電子制御装置全体を包括して説明する場合はECU20や各ECU20、個々の電子制御装置を特定して説明する場合はECU20a、ECU20b、ECU20c、・・・のように記載している。
【0026】
図2の場合、各ECU20間は、上述の
図1(c)の説明で記載した車載ネットワークや、その他の有線通信方式又は無線通信方式で接続されている。
なお、接続とは、データのやり取りが可能な状態をいい、異なるハードウェアが有線又は無線の通信ネットワークを介して接続されている場合はもちろん、同一のハードウェア上で実現された仮想マシン同士が仮想的に接続されている場合も含む。
【0027】
図2に示す電子制御システムSは、統合ECU20a、外部通信ECU20b、ゾーンECU(20c、20d)、及び個別ECU(20e~20h)を含む。
【0028】
統合ECU20aは、電子制御システムS全体を制御する機能を備えるとともに、各ECU20間の通信を仲介するゲートウェイ機能を備えたECUである。統合ECU20aは、ゲートウェイECU(G-ECU)、モビリティコンピュータ(MC)と呼ばれることもある。また、統合ECU20aは、中継装置やゲートウェイ装置であってもよい。
【0029】
外部通信ECU20bは、車両の外部に設けられたサーバ装置や外部接続装置と通信を行う通信モジュールを有するECUである。外部通信ECU20bが用いる通信方式は、
図1の説明で記載した無線通信方式や有線通信方式である。
なお、複数の通信方式を実現するため、外部通信ECU20bを複数設けるようにしてもよい。また、外部通信ECU20bを設ける代わりに、統合ECU20aが外部通信ECU20bの機能を内包してもよい。
【0030】
ゾーンECU(20c、20d)は、個別ECUが配置される場所や機能に応じて適宜配置されたゲートウェイ機能を備えたECUである。例えば、ゾーンECU20cは、車両の前方に配置された個別ECU20e及び個別ECU20fと他のECU20との通信を仲介するゲートウェイ機能を有するECU、ゾーンECU20dは、車両の後方に配置された個別ECU20g及び個別ECU20hと他のECU20との通信を仲介するゲートウェイ機能を有するECU、である。ゾーンECU(20c、20d)は、ドメインコンピュータ(DC)と呼ばれることもある。ゾーンECU20cには、ネットワーク2(NW2)を介して個別ECU20e及び個別ECU20fが接続され、ゾーンECU20dには、ネットワーク3(NW3)を介して個別ECU20g及び個別ECU20hが接続されている。
【0031】
個別ECU(20e~20h)は任意の機能を有するECUで構成することができる。例えば、エンジン、ハンドル、ブレーキ等の制御を行う駆動系電子制御装置、メータやパワーウインドウ等の制御を行う車体系電子制御装置、ナビゲーション装置等の情報系電子制御装置、あるいは、障害物や歩行者との衝突を防止するための制御を行う安全制御系電子制御装置が挙げられる。また、ECU同士が並列ではなく、マスタとスレーブとに分類されていてもよい。
【0032】
なお、各ECU20は、物理的に独立した電子制御装置の他、仮想化技術を用いて実現した仮想化電子制御装置であってもよい。また、各ECU20は、異なるハードウェアでそれぞれ実現されている場合は有線又は無線の通信方式を介して接続されていればよく、同一のハードウェア上で複数の仮想化電子制御装置が実現されている場合は、仮想化電子制御装置同士が仮想的に接続されていればよい。
【0033】
各実施形態のソフトウェア提供装置100は、ソフトウェアを他の装置に提供する機能を有していればよく、
図1で説明した通り、電子制御システムSの内部又は外部いずれの装置であってもよい。
図2においても同様であり、
図1(a)の場合はサーバ装置、
図1(b)の場合は外部接続装置、
図1(c)の場合は例えば電子制御システムSの統合ECU20aがソフトウェア提供装置100に相当する。なお、
図1(c)の場合、他のECU20がソフトウェア提供装置100として機能してもよい。
【0034】
各実施形態のソフトウェア更新装置200は、ソフトウェアの提供を受ける装置であればよく、電子制御システムSを構成するいずれのECU20であってもよい。
図2では、個別ECU20eがソフトウェア更新装置200である例を示している。
以下、各実施形態のソフトウェア提供装置100、ソフトウェア更新装置200の順に説明する。
【0035】
2.実施形態1
(1)差分データを用いたソフトウェアの更新動作の概要
本実施形態のソフトウェア提供装置100及びソフトウェア更新装置200の構成及び動作を説明する前に、差分データを用いたソフトウェアの更新動作の概要を説明する。
図3及び
図4は、差分データを受信したソフトウェア更新装置200が、フラッシュメモリに格納された旧ソフトウェアを新ソフトウェアに更新する更新動作を示す図である。
【0036】
図3において、ソフトウェア更新装置200は、フラッシュメモリに旧ソフトウェアを保存しており、旧ソフトウェアに続いて旧ソフトウェアのバージョン情報(図中では、旧V情報と略して記載している。)を保存している。
図3では、フラッシュメモリのセクタ0、セクタ1、及びセクタ2の一部にわたり旧ソフトウェアが保存され、セクタ2の残部に旧ソフトウェアのバージョン情報が保存されている。
ソフトウェア更新装置200は、ソフトウェア提供装置100から新ソフトウェアと旧ソフトウェアの差分である差分データを受信する([受信S])。差分データはセクタ毎に生成されたものを受信しており、例えば
図3ではセクタ0に適用される差分情報を受信している。セクタ1及びセクタ2に適用される差分データはない。すなわち、新ソフトウェアにおいて、セクタ1及びセクタ2の旧ソフトウェアからの更新はなく、旧ソフトウェアをそのまま用いる。
ソフトウェア更新装置200は、差分データを用いてセクタ0の旧ソフトウェアからセクタ0の新ソフトウェアを生成する([生成S])。厳密にいえば、生成するのは新ソフトウェアの一部分であるが、以降の記載において、セクタを特定して新ソフトウェア又は旧ソフトウェアと記載している場合は、ソフトウェアの部分を指すものとする。
ソフトウェア更新装置200は、セクタ0を消去する([消去S])。フラッシュメモリはセクタ単位で消去が可能であるので、消去の最小単位であるセクタ毎に消去を行う。セクタ1及びセクタ2は消去を行わない。
ソフトウェア更新装置200は、生成した新ソフトウェアをセクタ0に書き込み([書き込みS])、旧ソフトウェアから新ソフトウェアへの更新を終了する。
【0037】
図3では、旧ソフトウェアのバージョン情報は更新していないが、バージョン情報も更新する場合の例を、
図4を用いて説明する。以下、セクタ2に適用される差分データがある場合とない場合とを分けて説明する。
図4(a)は、セクタ2に適用される差分データがない場合である。
ソフトウェア更新装置200は、ソフトウェア提供装置100から新ソフトウェアのバージョン情報(図中では、新V情報と略して記載している。)を受信する([受信S])。
ソフトウェア更新装置200は、セクタ2の旧ソフトウェアを別に設けた記憶装置に一時的に退避する([退避S])。
ソフトウェア更新装置200は、セクタ2を消去する([消去S])。
ソフトウェア更新装置200は、退避していた旧ソフトウェア及び新ソフトウェアのバージョン情報をセクタ2に書き込む([書き込みS])。
【0038】
図4(b)は、セクタ2に適用される差分データがある場合である。
ソフトウェア更新装置200は、ソフトウェア提供装置100から差分データ及び新ソフトウェアのバージョン情報を受信する([受信S])。
ソフトウェア更新装置200は、差分データを用いてセクタ2の旧ソフトウェアからセクタ2の新ソフトウェアを生成する([生成S])。
ソフトウェア更新装置200は、セクタ2を消去する([消去S])。
ソフトウェア更新装置200は、新ソフトウェア及び新ソフトウェアのバージョン情報をセクタ2に書き込む([書き込みS])。
【0039】
図3及び
図4から、バージョン情報とソフトウェアがともに存在するセクタ(以下、同居セクタと称する。)においては、差分データがある場合は他のセクタにおける更新動作と同じであるが、差分データがない場合は他のセクタにおける更新動作と異なる。つまり、他のセクタにおいて差分データがない場合は旧ソフトウェアをそのまま新ソフトウェアとして用いるので、セクタの消去を行わない。しかし、同居セクタにおいては、差分データがなくてもバージョン情報を新バージョン情報に更新する必要があるため、旧ソフトウェアを一旦退避させた後、同居セクタを消去し、退避していた旧ソフトウェア及び新ソフトウェアのバージョン情報を同居セクタに書き込んでいる。
【0040】
すなわち、同居セクタにおける差分データの有無によって更新手順を変更する必要がある。しかし、同居セクタにおける差分データの有無をソフトウェア更新装置200側で判定する場合、判定動作に必要なプログラムをROM等にあらかじめ設けておく必要があるが、特にソフトウェア更新装置200がリソースの限られる車両に搭載されている場合、極力ROMの容量や処理動作を削減することが望ましい。
そこで、本実施形態では、ソフトウェア提供装置100側でこの判定を行い、判定結果を示す情報をソフトウェア更新装置200に提供し、ソフトウェア更新装置200はこの情報を用いてソフトウェアの更新を行う。
以下、ソフトウェア提供装置100及びソフトウェア更新装置200の構成及び動作の詳細を説明する。
【0041】
(2)ソフトウェア提供装置100の構成
図5を用いて、ソフトウェア提供装置100の構成例を説明する。ソフトウェア提供装置100は、差分データ取得部101、差分適用位置情報取得部102、関連データ取得部103、関連データ位置情報取得部104、フラグ情報生成部105、及び送信部106を有する。
【0042】
差分データ取得部101は、ソフトウェア更新装置200で現在用いられている「ソフトウェア」である旧ソフトウェアと、旧ソフトウェアに代えて新たにソフトウェア更新装置200にインストールする「ソフトウェア」である新ソフトウェアの差分である差分データを「取得する」。
例えば、差分データ取得部101は、ソフトウェア提供装置100の新ソフトウェア保存部に保存している新ソフトウェアと、旧ソフトウェア保存部に保存している旧ソフトウェアとの差分を取ることにより差分データを生成する。ソフトウェア提供装置100が新ソフトウェアと旧ソフトウェアを有していない場合は、他の装置で求めた差分データを受信してもよい。
ここで、
「ソフトウェア」とは、プログラムである場合の他、データである場合も含む。
「取得する」とは、自ら生成して取得する場合、他の装置から受信して取得する場合、のいずれも含む。
【0043】
旧ソフトウェア保存部には、旧ソフトウェア及び旧ソフトウェアのバージョン情報が保存されている。新ソフトウェア保存部には、新ソフトウェア及び新ソフトウェアのバージョン情報が保存されている。旧ソフトウェア保存部と新ソフトウェア保存部、そして後述のフラッシュメモリ情報保存部は、それぞれ別の記録装置で実現しても、同じ記録装置で実現してもよい。
また、新ソフトウェア保存部及び旧ソフトウェア保存部には、ソフトウェアの開始アドレス、ソフトウェアの終了アドレス、バージョン情報の開始アドレス、及びバージョン情報の終了アドレスが保存されていることが望ましい。各アドレスは、ソフトウェア更新装置200のフラッシュメモリのアドレスに対応するアドレスであることが望ましい。各アドレスがフラッシュメモリのアドレスに対応していない場合は、アドレスの変換を行えばよい。
【0044】
差分適用位置情報取得102は、差分データ取得部101で取得した差分データが適用されるソフトウェア更新装置200が有するフラッシュメモリのセクタ(「第1のセクタ」に相当)を「示す」差分適用位置情報を「取得する」。セクタの大きさは、例えば8KB(キロバイト)、又は64KBである。
ここで、セクタを「示す」とは、セクタを直接示す場合、セクタを間接的に示す場合、のいずれの場合も含む。前者の例としてセクタ番号、後者の例としてセクタの開始アドレス、セクタの開始アドレス及びセクタのサイズ、又はセクタの開始アドレス及びセクタの終了アドレス、が挙げられる。
【0045】
図6は、ソフトウェア更新装置200で用いられるフラッシュメモリのメモリマップを示す図である。ソフトウェア提供装置100のフラッシュメモリ情報保存部には、
図6のメモリマップがフラッシュメモリ情報として保存されている。
メモリマップには、セクタの境界である境界アドレスとセクタ番号とが保存されている。なお、境界アドレスとセクタ番号に代えて、最上位の境界アドレスである境界アドレス#0、最下位の境界アドレスである境界アドレス#n+1、セクタサイズ、が保存されていてもよい。これらの情報から、中間の境界アドレスを求めることができる。
【0046】
図5に戻り、差分適用位置情報取得部102は、例えば差分データ取得部101で取得した差分データの開始アドレス及び終了アドレスと、フラッシュメモリ情報保存部に保存したフラッシュメモリ情報から読み出したフラッシュメモリの各セクタの境界アドレスとを比較して、差分データがどのセクタに適用されるかを判定する。例えば、差分データの開始アドレスと終了アドレスとに対応するフラッシュメモリの2つの境界アドレスを判定し、対応する2つの境界アドレスに挟まれたセクタのセクタ番号を差分適用位置情報とする。対応するフラッシュメモリの境界アドレスがない場合は、差分データの開始アドレスと終了アドレスとが含まれる範囲のうち最小の範囲を構成する2つの境界アドレスを対応する境界アドレスとする。いずれの場合も、複数のセクタにまたがっていてもよい。
なお、判定されたセクタ番号に代えて、セクタの境界アドレスをそのまま差分適用位置情報としてもよい。セクタの境界アドレスを差分適用位置情報とする場合、上位又は下位のいずれかの境界アドレスのみとしてもよいし、上位及び下位の境界アドレスのセットとしてもよい。
【0047】
関連データ取得部103は、新ソフトウェアに関連するデータである関連データ、本実施形態では新ソフトウェアのバージョン情報を「取得する」。
バージョン情報は、例えば新ソフトウェアのバージョン番号、新ソフトウェアを作成した日付、新ソフトウェアが適用される日付、新ソフトウェアの作成者、ソフトウェアの変更履歴等が挙げられるが、これらに限らない。
バージョン情報以外の関連データとして、新ソフトウェアで用いる各種パラメータ情報が挙げられる。例えば、更新日時、更新者識別子、更新機器識別子、更新理由、が挙げられるが、これらに限らない。
視点を変えれば、関連情報は、ソフトウェアに対して一意に定まる静的な情報であっても、ソフトウェアに対して一意に定まらない動的な情報のいずれであってもよい。また、関連情報は、ソフトウェアとは分離している情報であればよい。
【0048】
関連データ位置情報取得部104は、関連データ取得部103で取得した関連データが保存されるソフトウェア更新装置200のフラッシュメモリのセクタ(「第2のセクタ」に相当)を「示す」関連データ位置情報を「取得する」。
例えば、関連データ位置情報取得部104は、新ソフトウェアのバージョン情報の開始アドレス及び終了アドレスを、新ソフトウェア保存部に保存している新ソフトウェアから取得する。そして、フラッシュメモリ情報から読み出したフラッシュメモリの各セクタの境界アドレスと比較して、新ソフトウェアのバージョン情報がどのセクタに保存されるかを判定する。例えば、新ソフトウェアのバージョン情報の開始アドレス及び終了アドレスが、フラッシュメモリのどの2つの境界アドレス間に位置するかを判定し、対応する2つの境界アドレス間に挟まれたセクタのセクタ番号を関連データ位置情報とする。新ソフトウェアのバージョン情報が複数のセクタにまたがっている場合は、関連データ位置情報は複数のセクタを示す情報となる。
関連データのサイズは通常セクタのサイズよりも小さいため、関連データ位置情報取得部104で取得した関連データ位置情報は上述の同居セクタに相当する。
【0049】
フラグ情報生成部105は、差分適用位置情報取得部102で取得した差分適用位置情報と、関連データ位置情報取得部104で取得した関連データ位置情報とに基づき、関連データ位置情報が示すセクタ(「第2のセクタ」に相当)と、差分データが適用されるセクタ(「第1のセクタ」に相当)とが一致するか否かを判定し、一致する場合は差分データが第2のセクタに適用されるとし、一致しない場合は差分データが第2のセクタに適用されないとして、第2のセクタに差分データが適用されるか否かを示す「フラグ情報」を生成する。
すなわち、フラグ情報生成部105は、
図4で説明した通り、バージョン情報とソフトウェアがともに存在するセクタである同居セクタ(「第2のセクタ」に相当)に、差分データが適用されるか否かを判定してフラグ情報を生成する。
ここで、「フラグ情報」は、第2のセクタに差分データが適用されるか否かを示す情報であれば足り、その情報の形式は問わない。
【0050】
送信部106は、差分データ取得部101で取得した差分データ、差分適用位置情報取得部102で取得した差分適用位置情報、関連データ取得部103で取得した関連データ、及びフラグ情報生成部105で生成したフラグ情報を、差分更新情報としてソフトウェア更新装置200に送信する。送信部106は、ソフトウェア更新装置200に直接送信してもよいが、通常は、各種中継装置や、電子制御システムSを構成する各ECU20を介して、結果的にソフトウェア更新装置200に送信される。
なお、本実施形態では、送信部106は、関連データ位置情報取得部104で取得した関連データ位置情報は送信していないが、これはバージョン情報が最終セクタや最初のセクタに保存されることをソフトウェア提供装置100とソフトウェア更新装置200とで共有しているからである。バージョン情報が保存される位置が共有されていない場合は、関連データ位置情報を差分更新情報に含めて送信することが望ましい。
【0051】
(3)ソフトウェア更新装置200の構成
図7を用いて、ソフトウェア更新装置200の構成例を説明する。ソフトウェア更新装置200は、受信部201、ソフトウェア更新部202、及び関連情報記録部203を有する。
【0052】
ソフトウェア更新装置200は、「移動体」である車両に「搭載」された装置であり、本実施形態では、例えば
図2のECU20eであるとする。
また、ソフトウェア更新装置200は、旧プログラムや新プログラム等を保存するフラッシュメモリを有している。フラッシュメモリは、「セクタ」単位で消去が可能な不揮発性メモリである。フラッシュメモリは、例えばバイトやワード単位で読み書きができ、セクタ単位で消去が可能であり、かつ保存したソフトウェアを直接実行可能なNOR型フラッシュメモリが望ましい。もっとも、フラッシュメモリは、ページ単位で読み書きができ、ブロック単位で消去が可能であるNAND型フラッシュメモリであってもよい。
ここで、
「セクタ」とは、フラッシュメモリのデータの消去単位であればよく、ブロックやページ等、その名称は問わない。
【0053】
受信部201は、ソフトウェア提供装置100から差分更新情報を受信する。受信部201は、差分更新情報をソフトウェア提供装置100から直接受信してもよいが、例えば、本実施形態において、
図2に示す通りソフトウェア更新装置200が個別ECU20eである場合、外部通信ECU20b、統合ECU20a、ゾーンECU20cを介して差分更新情報を受信する。
【0054】
ソフトウェア更新部202は、差分更新情報に含まれる差分データ及び差分適用位置情報を用いて、差分適用位置情報が示すフラッシュメモリのセクタ(「第1のセクタ」に相当)の旧ソフトウェアを更新する。差分データ及び差分適用位置情報を用いた更新動作は、
図3を用いて説明した通りである。
【0055】
関連情報記録部203は、差分更新情報に含まれるフラグ情報を用いて、新ソフトウェアのバージョン情報(「関連データ」に相当)を第2のセクタに書き込む。差分更新情報に関連データ位置情報が含まれる場合は、関連データ位置情報が示すセクタ(「第2のセクタ」に相当)に新ソフトウェアのバージョン情報を書き込む。第2のセクタがソフトウェア更新装置200において既知である場合は、関連データ位置情報は不要である。
【0056】
より具体的には、関連情報記録部203は、フラグ情報を参照して以下の通り新ソフトウェアのバージョン情報を書き込む。
まず、フラグ情報が第2のセクタに差分データが適用されることを示す場合、第2のセクタに新ソフトウェアのバージョン情報を書き込む。この場合、第2のセクタは一度消去された後、差分データを用いて生成した新ソフトウェアが既に第2のセクタに書き込まれているので、さらに新ソフトウェアのバージョン情報を第2のセクタに書き込む。
これに対し、フラグ情報が第2のセクタに差分データが適用されないことを示す場合、第2のセクタに書き込まれた旧ソフトウェアを退避して第2のセクタを消去し、退避した旧ソフトウェア及び新ソフトウェアのバージョン情報を第2のセクタに書き込む。
新プログラムのバージョン情報の書き込み動作は、
図4を用いて説明した通りである。
【0057】
(4)ソフトウェア提供装置100及びソフトウェア更新装置200の動作
図8~
図11を用いて、ソフトウェア提供装置100及びソフトウェア更新装置200の動作を説明する。なお、
図8~
図10に示す動作は、ソフトウェア提供装置100で実行されるソフトウェア提供方法を示すだけでなく、ソフトウェア提供装置100で実行可能なソフトウェア提供プログラムの処理手順を示すものでもある。また、
図11に示す動作は、ソフトウェア更新装置200で実行されるソフトウェア更新方法を示すだけでなく、ソフトウェア更新装置200で実行可能なソフトウェア更新プログラムの処理手順を示すものでもある。そして、これらで示す処理は、
図8~
図11で示した順序には限定されない。すなわち、あるステップでその前段のステップの結果を利用する関係にある等の制約がない限り、順序を入れ替えてもよい。
【0058】
図8は、ソフトウェア提供装置100のメインルーチンである。
ソフトウェア提供装置100の差分データ取得部101は、新ソフトウェアと旧ソフトウェアの差分である差分データを取得する(S101)。
差分適用位置情報取得部102は、差分データが適用される第1のセクタを示す差分適用位置情報を取得する(S102)。
関連データ取得部103は、新ソフトウェアに関連するデータである関連データを取得する(S103)。
関連データ位置情報取得部104は、関連データが保存される第2のセクタを示す関連データ位置情報を取得する(S104)。関連データ位置情報の取得方法の具体例は、
図9で説明する。
フラグ情報生成部105は、S102で取得した差分適用位置情報とS104で取得した関連データ位置情報とに基づき、第2のセクタに差分データが適用されるか否かを示すフラグ情報を生成する(S105)。フラグ情報の生成方法の具体例は、
図10で説明する。
送信部106は、S101で取得した差分データ、S102で取得した差分適用位置情報、S103で取得した関連データ、及びS105で生成したフラグ情報を差分更新情報としてソフトウェア更新装置200に送信する(S106)。
【0059】
図9は、
図8のS104に相当するサブルーチンである。
カウンタNの条件として、初期値(0)、終了値(N)、増分(1)のループを設定する(S111)。
新ソフトウェアのバージョン情報の開始アドレスが、境界アドレス#N以上かつ境界アドレス#N+1以下の範囲内であるか否かを判定する(S112)。範囲内である場合(S112:Yes)、関連データ位置情報にセクタN(「第2のセクタ」に相当)をセットし(S113)、ループを繰り返す(S114)。範囲外である場合(S112:No)、ループを繰り返す(S114)。
なお、
図9では、新ソフトウェアのバージョン情報の開始アドレスのみで判定しているが、開始アドレス及び終了アドレスが、境界アドレス#N以上かつ境界アドレス#N+1以下の範囲内であるか否かを判定してもよい。
また、
図9では境界アドレス#N以上かつ境界アドレス#N+1以下の範囲内のみを判定しているが、新ソフトウェアのバージョン情報が複数のセクタにまたがる可能性を考慮し、境界アドレス#N以上かつ境界アドレス#N+a以下の範囲内も判定してもよい。aは整数の定数で、新ソフトウェアのバージョン情報のサイズに応じて適宜設定する。さらに、aをカウンタとしてループを設定してもよい。
【0060】
図10は、
図8のS105に相当するサブルーチンである。
フラグ情報に初期値0を設定する(S121)。
カウンタiの条件として、初期値0、終了値(差分データの数)、増分(1)のループを設定する(S122)。すなわち、差分データの数に相当する回数のループを設定する。
差分適用位置情報#iと関連データ位置情報を比較する(S122)。つまり、差分データ数だけ存在する差分適用位置情報のそれぞれと、関連データ位置情報とが一致するか否かを判定する。一致する場合(S122:Yes)は、関連データ位置情報が示す同居セクタ(「第2のセクタ」に相当)に差分データが適用されるので、これを示すフラグ情報に1を設定し(S123)、ループを繰り返す(S125)。一致しない場合(S122:N)は、ループを繰り返す(S125)。
以上の動作により、同居セクタに差分データが適用される場合はフラグ1、同居セクタに差分データが適用されない場合はフラグ0が設定される。
【0061】
図11は、ソフトウェア更新装置200のメインルーチンである。
ソフトウェア更新装置200の受信部201は、ソフトウェア提供装置100から差分更新情報を受信する(S201)。
カウンタNの条件として、初期値(0)、終了値(N)、増分(1)のループを設定する(S202)。
ソフトウェア更新部202は、セクタNに差分データがあるか否かを判定する(S203)。セクタNに差分データがある場合(S203:Yes)、セクタNの旧ソフトウェアと差分データから新ソフトウェアを生成し(S204)、セクタNを消去し(S205)、S204で生成した新ソフトウェアをセクタNに書き込み(S206)、ループを繰り返す(S207)。セクタNに差分データがない場合(S203:No)、セクタNに対し更新は行わず、ループを繰り返す(S207)。
【0062】
関連情報記録部203は、フラグ情報が0か1かを判定する(S208)。フラグ情報が0の場合、すなわち同居セクタに差分データが適用されない場合、関連データ位置情報が示す同居セクタの旧ソフトウェアを退避し(S209)、同居セクタを消去し(S210)、退避した旧ソフトウェアを同居セクタに書き込み(S211)、新ソフトウェアのバージョン情報を同居セクタに書き込む(S212)。フラグ情報が1の場合、すなわち同居セクタに差分データが適用される場合、新ソフトウェアのバージョン情報を同居セクタに書き込む(S212)。
【0063】
(5)小括
以上、本実施形態のソフトウェア提供装置100によれば、フラグ情報を生成してソフトウェア更新装置200に送信するので、ソフトウェア更新装置200で同居セクタに差分データが適用されるか否かを判定する必要がなく、ソフトウェア更新装置200の処理の負担を軽減することができる。例えば、判定に必要なプログラムをROMに格納する必要がないので、ROM容量を極力少なくすることができ、また判定に必要なCPUのリソースを節約することができる。
また、本実施形態のソフトウェア提供装置100によれば、さらに関連データ位置情報をソフトウェア更新装置200に送信するので、ソフトウェア更新装置200で同居セクタの位置が分からない場合であっても、同居セクタにおけるソフトウェアの更新とバージョン情報の書き込みを適切に行うことができる。
【0064】
3.総括
以上、本発明の各実施形態におけるソフトウェア提供装置及びソフトウェア更新装置等の特徴について説明した。
【0065】
各実施形態で使用した用語は例示であるので、同義の用語、あるいは同義の機能を含む用語に置き換えてもよい。
【0066】
実施形態の説明に用いたブロック図は、装置の構成を機能毎に分類及び整理したものである。それぞれの機能を示すブロックは、ハードウェア又はソフトウェアの任意の組み合わせで実現される。また、機能を示したものであることから、かかるブロック図は方法の発明、及び当該方法を実現するプログラムの発明の開示としても把握できるものである。
【0067】
各実施形態に記載した処理、フロー、及び方法として把握できる機能ブロック、については、一のステップでその前段の他のステップの結果を利用する関係にある等の制約がない限り、順序を入れ替えてもよい。
【0068】
各実施形態、及び特許請求の範囲で使用する、第1、第2、乃至、第N(Nは整数)、の用語は、同種の2以上の構成や方法を区別するために使用しており、順序や優劣を限定するものではない。
【0069】
また、本発明の装置の形態の例として、以下のものが挙げられる。
部品の形態として、半導体素子、電子回路、モジュール、マイクロコンピュータが挙げられる。
半完成品の形態として、電子制御装置(ECU(Electric Control Unit))、システムボードが挙げられる。
完成品の形態として、携帯電話、スマートフォン、タブレット、パーソナルコンピュータ(PC)、ワークステーション、サーバが挙げられる。
その他、通信機能を有するデバイス等を含み、例えばビデオカメラ、スチルカメラ、カーナビゲーションシステムが挙げられる。
【0070】
また装置に、アンテナや通信用インターフェースなど、必要な機能を追加してもよい。
【0071】
加えて、本発明は、各実施形態で説明した構成及び機能を有する専用のハードウェアで実現できるだけでなく、メモリやハードディスク等の記録媒体に記録した本発明を実現するためのプログラム、及びこれを実行可能な専用又は汎用CPU及びメモリ等を有する汎用のハードウェアとの組み合わせとしても実現できる。
【0072】
専用や汎用のハードウェアの非遷移的実体的記録媒体(例えば、外部記憶装置(ハードディスク、USBメモリ、CD/BD等)、又は内部記憶装置(RAM、ROM等))に格納されるプログラムは、記録媒体を介して、あるいは記録媒体を介さずにサーバから通信回線を経由して、専用又は汎用のハードウェアに提供することもできる。これにより、プログラムのアップグレードを通じて常に最新の機能を提供することができる。
【産業上の利用可能性】
【0073】
本開示は、主として自動車に搭載される車載用のソフトウェア更新装置として説明したが、自動二輪車、船舶、鉄道、航空機等、移動する移動体全般に適用することが可能である。また、移動体に限らず、マイクロコンピュータを包含する製品全般に適用可能である。
【符号の説明】
【0074】
100 ソフトウェア提供装置、101 差分データ取得部、102 差分適用位置情報取得部、103 関連データ取得部、104 関連データ位置情報取得部、105 フラグ情報生成部、106 送信部、20 ECU、200 ソフトウェア更新装置、201 受信部、202 ソフトウェア更新部、203 関連情報記録部