(57)【特許請求の範囲】
【請求項１】
制御装置に実装されたプログラムを更新プログラムにより更新するリプログラミング方法であって、
複数の制御装置で共通して使用される基本プログラムを記憶するステップと、
前記制御装置に実装されたプログラムと前記基本プログラムとの差分であるプログラム差分データを記憶するステップと、
前記更新プログラムをサーバからダウンロードするステップと、
前記基本プログラム及び前記プログラム差分データにより、前記制御装置に実装されたプログラムを復元するステップと、
前記制御装置に実装されたプログラムを前記更新プログラムにより更新して新たなプログラムを生成するステップと、
前記新たなプログラムと前記基本プログラムとの差分データを前記プログラム差分データに上書きして記憶するステップと、
を含むことを特徴とするリプログラミング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両に搭載される制御装置のリプログラミング方法に関する。
【背景技術】
【０００２】
近年、車両には多くのＥＣＵ（Electronic Control Unit）が搭載されており、ＥＣＵにより車両の制御が行われている。ＥＣＵには、車両の動作を制御する処理を記述したプログラムが記憶され、無線でＥＣＵのプログラムを更新するＯＴＡ（Over the Air）技術が開発されている。
【０００３】
例えば、特許文献１には、プログラムの更新処理に失敗した場合でも、正常時の動作に復帰することができるようにするために、古いバージョンのプログラムを保持し、リプログラミングを行うことが開示されている。また、特許文献２には、プログラムを更新する際に、旧版バックアップデータの配置を記述した旧配置データと、新版バックアップデータの配置を記述した新配置データとを比較し、両者が同一であれば旧版バックアップデータを流用し、同一でなければ新版バックアップデータを新たに配置するリプログラミングシステムが記載されている。
【０００４】
図６を参照して、従来のリプログラミングシステムの動作を説明する。リプログラミングサーバは更新プログラム及び属性情報を含む更新データをリプログラミング中継装置に送信する（ステップＳ３１）。リプログラミング中継装置は、更新データを受信すると（ステップＳ１１）、属性情報に基づいて特定したＥＣＵに更新プログラムを送信する（ステップＳ１２）。
【０００５】
ＥＣＵは、更新プログラムを受信すると（ステップＳ２１）、更新前のプログラム（旧プログラム）を更新プログラムに基づいて更新し（ステップＳ２２）、更新したプログラム（新プログラム）のハッシュ値を生成する（ステップＳ２３）。
【０００６】
リプログラミング中継装置は、ＥＣＵがリプログラミングに失敗した場合に備えて、ＥＣＵに記憶されるプログラムのバックアップをとっておくことが望ましい。そこで、リプログラミング中継装置は、更新前のプログラム（旧プログラム）を更新プログラムに基づいて更新し、更新したプログラム（新プログラム）を生成する（ステップＳ１３）。そして、リプログラミング中継装置は、新プログラムのハッシュ値を生成し、ステップＳ２３で生成されたハッシュ値と同一であるか否かを検証する（ステップＳ１４）。リプログラミング中継装置は、ハッシュ値の同一性を確認できれば、旧プログラムに新プログラムを上書きして、新プログラムを保管する（ステップＳ１５）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−１９８１５５号公報
【特許文献２】特開２０１６−１０３１５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来のＯＴＡリプログラミング方式では、上記のステップＳ１５のように、リプログラミングに失敗した場合に備えて、リプログラミング中継装置はバックアッププログラムを記憶している。しかしながら、ＥＣＵごとに実装しているプログラムが異なるため、１台の車両に搭載されるＥＣＵの数が増加すると、リプログラミング中継装置が記憶すべきＥＣＵの実装プログラムも増加し、大量の不揮発性メモリが必要になるという問題があった。
【０００９】
かかる事情に鑑みてなされた本発明の目的は、記憶部の記憶容量を抑えつつ、プログラムのバックアップをとることが可能なリプログラミング方法を提供することにある。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本発明に係るリプログラミング方法は、制御装置に実装されたプログラムを更新プログラムにより更新するリプログラミング方法であって、複数の制御装置で共通して使用される基本プログラムを記憶するステップと、前記制御装置に実装されたプログラムと前記基本プログラムとの差分であるプログラム差分データを記憶するステップと、前記更新プログラムをサーバからダウンロードするステップと、前記基本プログラム及び前記プログラム差分データにより、前記制御装置に実装されたプログラムを復元するステップと、前記制御装置に実装されたプログラムを前記更新プログラムにより更新して新たなプログラムを生成するステップと、前記新たなプログラムと前記基本プログラムとの差分データを前記プログラム差分データに上書きして記憶するステップと、を含むことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、記憶部の記憶容量を抑えつつ、プログラムのバックアップをとることができるようになる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に係るリプログラミング中継装置の構成例を示すブロック図である。
【図２】本発明の一実施形態に係るリプログラミング方法の手順の一例を示すフローチャートである。
【図３】図２のステップＳ１０３からステップＳ１０６の処理の具体例を示す図である。
【図４】図２のステップＳ１０８からステップＳ１１０の処理の具体例を示す図である。
【図５】本発明の一実施形態に係るリプログラミング方法の手順の変形例を示すフローチャートである。
【図６】従来のリプログラミング方法の手順を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の一実施形態について、図面を参照して詳細に説明する。
【００１４】
＜プログラミング中継装置＞
図１は、本発明の一実施形態に係るリプログラミング中継装置の構成例を示す図である。リプログラミング中継装置１は、リプログラミングサーバ３、及びリプログラミングの対象となる制御装置２と通信を行う。本実施形態では、リプログラミングの対象となる制御装置をＥＣＵとして、以下説明する。
【００１５】
リプログラミングサーバ３は、更新データ送信部３１を備える。更新データ送信部３１は、更新プログラムをリプログラミング中継装置１に配信する。更新データは、更新プログラムと、更新プログラムの属性情報とを含む。更新プログラムの属性情報は、該更新プログラムを実装するＥＣＵ（リプログラミングの対象となるＥＣＵ）を識別するための識別情報（本実施形態では、ＥＣＵの名称）を含む。
【００１６】
図１に示すリプログラミング中継装置１は、リプログラミング制御部１１と、旧プログラム復元部１２と、新プログラム生成部１３と、差分データ生成部１４と、ＥＣＵプログラム適合テーブル記憶部１５と、基本プログラム記憶部１６と、プログラム差分データ記憶部１７とを備える。
【００１７】
リプログラミング制御部１１は、更新データ送信部３１からＥＣＵの更新データをダウンロードすると、ダウンロードした更新プログラムを、属性情報に基づいて複数のＥＣＵの中から特定したＥＣＵに送信する。
【００１８】
ＥＣＵ２は、プログラム更新部２１と、記憶部２２とを備える。プログラム更新部２１は、リプログラミング制御部１１から更新プログラムを受信し、記憶部２２に記憶されているプログラムを更新する。
【００１９】
また、リプログラミング制御部１１は、旧プログラム復元部１２に、リプログラミングの対象となるＥＣＵ２の最新のバックアッププログラム（旧プログラム）の復元を指示するとともに、新プログラム生成部１３に新プログラムの生成を指示する。旧プログラムは該ＥＣＵ２の更新前（前回更新時）のプログラムであり、新プログラムは該ＥＣＵ２の更新後のプログラムである。
【００２０】
基本プログラム記憶部１６は、複数のＥＣＵ２に対して共通で使用され、更新されることのないプログラム（以下、「基本プログラム」という。）を記憶する。
【００２１】
プログラム差分データ記憶部１７は、ＥＣＵ２に実装されているプログラムと、基本プログラムとの差分であるプログラム差分データを記憶する。プログラム差分データは、実行ファイル、ライブラリ、コンフィグレーション、バイナリコードの差分などである。ＥＣＵ２のプログラムの更新に合わせて、プログラム差分データも更新される。
【００２２】
旧プログラム復元部１２は、基本プログラム記憶部１６から基本プログラムを取得する。また、旧プログラム復元部１２は、プログラム差分データ記憶部１７から、ＥＣＵ２の更新前のプログラムと、基本プログラムとの差分であるプログラム差分データ（以下、「プログラム差分データ（旧）」という。）を取得する。そして、取得した基本プログラム及びプログラム差分データ（旧）から、ＥＣＵの更新前（前回更新時）のプログラム（以下、「旧プログラム」という。）を復元し、新プログラム生成部１３に出力する。
【００２３】
新プログラム生成部１３は、リプログラミング制御部１１から入力された更新プログラム、及び旧プログラム復元部１２から入力された旧プログラムを使用してＥＣＵの新プログラムを生成し、差分データ生成部１４に出力する。
【００２４】
差分データ生成部１４は、基本プログラム記憶部１６から取得した基本プログラム、及び新プログラム生成部１３から入力された新プログラムを使用して、ＥＣＵの更新後のプログラム差分データ（以下、「プログラム差分データ（新）」という。）を生成する。そして、プログラム差分データ記憶部１７に記憶されているプログラム差分データ（旧）を、プログラム差分データ（新）に更新する。
【００２５】
また、リプログラミング制御部１１は、プログラム差分データを更新してバックアップが完了すると、ＥＣＵプログラム適合テーブル記憶部１５に記憶されたＥＣＵプログラム適合テーブルを更新する。ＥＣＵプログラム適合テーブルの具体例については後述する。
【００２６】
＜リプログラミング方法＞
次に、本発明に係るリプログラミング方法の手順について説明する。図２は、本発明に係るリプログラミング方法の手順の一例を示すフローチャートである。まず、リプログラミングサーバ３は、更新データ送信部３１により、更新データをリプログラミング中継装置１に送信する（ステップＳ３０１）。
【００２７】
リプログラミング中継装置１がリプログラミングサーバ３から更新データを受信すると（ステップＳ１０１）、リプログラミング制御部１１は、受信した更新データの属性情報からリプログラミングの対象となるＥＣＵ２を特定し、該ＥＣＵ２に更新プログラムを送信する（ステップＳ１０２）。
【００２８】
ＥＣＵ２は、リプログラミング中継装置１から更新プログラムを受信すると（ステップＳ２０１）、プログラム更新部２１により、記憶部２２に記憶されているプログラムを更新する（ステップＳ２０２）。ＥＣＵ２は、プログラムの更新が完了すると、更新後のプログラムのハッシュ値を生成する（ステップＳ２０３）。
【００２９】
また、リプログラミング制御部１１は、ＥＣＵプログラム適合テーブルから、基本プログラム及びプログラム差分データの組み合わせを特定する（ステップＳ１０３）。そして、旧プログラム復元部１２に旧プログラムを復元するように命令する。
【００３０】
ＥＣＵプログラム適合テーブルは、ＥＣＵの名称、ＥＣＵ実装バージョン、ハッシュ値、基本プログラムの名称、及びプログラム差分データの名称を対応付けて記憶するテーブルである。
【００３１】
旧プログラム復元部１２は、基本プログラム記憶部１６からステップＳ１０３で特定された基本プログラムを取得するとともに、プログラム差分データ記憶部１７からステップＳ１０３で特定されたプログラム差分データ（旧）を取得し（ステップＳ１０４）、基本プログラム及びプログラム差分データをマージ処理して旧プログラムを復元する（ステップＳ１０５）。
【００３２】
次に、リプログラミング制御部１１は、新プログラム生成部１３に更新プログラムを出力し、新プログラムを生成するように命令する。新プログラム生成部１３は、更新プログラム、及びステップＳ１０５にて復元された旧プログラムをマージ処理して新プログラムを生成する（ステップＳ１０６）。
【００３３】
次に、リプログラミング中継装置１は、新プログラムのハッシュ値を生成し、ＥＣＵ２から送信されたハッシュ値と同一であるか否かを検証する（ステップＳ１０７）。例えば、ハッシュ値の生成を新プログラム生成部１３で行い、ハッシュ値の検証をリプログラミング制御部で行う。ハッシュ値の同一性を確認できれば、リプログラミング制御部１１は、差分データ生成部１４に差分データを生成するように命令する。なお、更新プログラムの属性情報にはＥＣＵの識別情報以外にも様々な情報を含めることができる。例えば、属性情報に新プログラムのハッシュ値を含めてもよく、その場合にはリプログラミング中継装置１での新プログラムのハッシュ値の生成を省略可能である。
【００３４】
差分データ生成部１４は、ステップＳ１０６で生成された新プログラムと、基本プログラム記憶部１６から取得した基本プログラムとの差分処理を行ってプログラム差分データ（新）を生成し（ステップＳ１０８）、プログラム差分データ記憶部１７に記憶されているプログラム差分データを更新する（ステップＳ１０９）。
【００３５】
最後に、リプログラミング制御部１１は、ＥＣＵプログラム適合テーブルを更新する（ステップＳ１１０）。
【００３６】
図３に、ステップＳ１０３からステップＳ１０６の処理の具体例を示し、図４に、ステップＳ１０８からステップＳ１１０の処理の具体例を示す。ここでは、更新プログラムの属性情報が示す、リプログラミングの対象となるＥＣＵの名称が「エンジン１」であった場合を例に説明する。
【００３７】
ステップＳ１０３では、図３に示すＥＣＵプログラム適合テーブルに基づいて、ＥＣＵ「エンジン１」に適合する基本プログラムの名称を「ＢＳＷ＿０１」、プログラム差分データの名称を「Ｅｎｇ＿００００１０１ｄ」と特定する。
【００３８】
ステップＳ１０４，Ｓ１０５では、基本プログラム記憶部１６から取得した基本プログラム「ＢＳＷ＿０１」と、プログラム差分データ記憶部１７から取得したプログラム差分データ「Ｅｎｇ＿００００１０１ｄ」とをマージ処理して旧プログラムを復元する。復元した旧プログラムは、更新前のＥＣＵ「エンジン１」に実装されたプログラムと同じものとなる。
【００３９】
ステップＳ１０６では、更新プログラム（名称を「Ｅｎｇ＿００００２００ｄ」とする）、及びステップＳ１０５にて復元された旧プログラムをマージ処理して新プログラムを生成する。生成した新プログラムは、更新後のＥＣＵ「エンジン１」に実装されたプログラムと同じものとなる。
【００４０】
ステップＳ１０８では、新プログラムと、基本プログラム記憶部１６から取得した基本プログラム「ＢＳＷ＿０１」との差分処理を行ってプログラム差分データを生成する。このプログラム差分データの名称を「Ｅｎｇ＿００００２０１ｄ」とする。
【００４１】
ステップＳ１０９では、プログラム差分データ記憶部１７に保管されているプログラム差分データ（旧）「Ｅｎｇ＿００００１０１ｄ」に、プログラム差分データ（新）「Ｅｎｇ＿００００２０１ｄ」を上書きして更新する。
【００４２】
ステップＳ１１０では、ＥＣＵプログラム適合テーブルのＥＣＵ名称「エンジン１」に対応するＥＣＵ実装バージョンを「１．０．１」から「２．０．１」に更新し、ハッシュ値を「ｘｘｘｘｘｘｘｘ」からステップＳ１０７で生成した「ｚｚｚｚｚｚｚｚ」に更新し、プログラム差分データ名称を「Ｅｎｇ＿００００１０１ｄ」から「Ｅｎｇ＿００００２０１ｄ」に更新する。
【００４３】
以上説明したように、本発明では、基本プログラム及びプログラム差分データ（旧）により、ＥＣＵの前回更新時の旧プログラムを復元し、旧プログラム及び更新プログラムにより新プログラムを生成し、新プログラムと基本プログラムとの差分データをプログラム差分データ（旧）に上書きして記憶する。つまり、ＥＣＵに実装されたプログラムをそのまま記憶するのではなく、複数のＥＣＵに共通の基本プログラムと、プログラム差分データとを区別して記憶する。そのため、本発明によれば、従来よりも記憶部の記憶容量を抑えることができる。そして、プログラムの更新処理中に電源遮断で処理が強制終了されるなどの理由により、更新処理に失敗した場合であっても、基本プログラムとプログラム差分データ（旧）により、元の動作の保障された旧プログラムを復元することができる。
【００４４】
また、リプログラミング中継装置１がリプログラミングサーバ３からダウンロードする更新データは、新しいバージョンのプログラムと基本プログラムとの差分データであるため、本発明によれば、リプログラミング中継装置１とリプログラミングサーバ３との間の通信量を少なくすることができ、ダウンロード時間も短くすることができる。同様に、本発明によれば、リプログラミング中継装置１とＥＣＵ２との間の通信量も少なくすることができ、ＥＣＵのプログラム更新時間を短くすることができる。
【００４５】
＜リプログラミング方法の変形例＞
次に、本発明の一実施形態に係るリプログラミング方法の変形例について説明する。変形例では、リプログラミング中継装置は、基本プログラムを圧縮してから基本プログラム記憶部１６に記憶し、プログラム差分データを圧縮してからプログラム差分データ記憶部１７に記憶する。そのため、以下の処理を行う。
【００４６】
旧プログラム復元部１２は、基本プログラム記憶部１６から取得した基本プログラム及びプログラム差分データ記憶部１７から取得したプログラム差分データ（旧）をそれぞれ解凍した後、旧プログラムを復元する。
【００４７】
差分データ生成部１４は、基本プログラム記憶部１６から取得した基本プログラムを解凍し、新プログラム生成部１３から入力された新プログラムを使用して、プログラム差分データ（新）を生成する。そして、プログラム差分データ（新）を圧縮した後、プログラム差分データ記憶部１７に記憶されているプログラム差分データ（旧）を、プログラム差分データ（新）に更新する。
【００４８】
図５は、本発明の一実施形態に係るリプログラミング方法の手順の変形例を示すフローチャートである。図２に示したフローチャートと比較して、ステップＳ１１１及びステップＳ１１２のみ追加されている。
【００４９】
ステップＳ１１１では、旧プログラム復元部１２は、ステップＳ１０４で取得した基本プログラム及びプログラム差分データ（旧）をそれぞれ解凍する。また、ステップＳ１１２では、差分データ生成部１４は、ステップＳ１０８で生成したプログラム差分データ（新）を圧縮する。他の手順については図２と同一であるため、説明を省略する。
【００５０】
このリプログラミング方法の変形例によれば、ＥＣＵプログラム適合テーブル記憶部１５及び基本プログラム記憶部１６に記憶するプログラムのデータ量が更に少なくなるため、記憶部の記憶容量を更に抑えることができるようになる
【００５１】
上述の実施形態は代表的な例として説明したが、本発明の趣旨及び範囲内で、多くの変更及び置換ができることは当業者に明らかである。したがって、本発明は、上述の実施形態によって制限するものと解するべきではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。例えば、実施形態の構成図に記載の複数の構成ブロックを１つに組み合わせたり、あるいは１つの構成ブロックを分割したりすることが可能である。例えば、図１は概略構成のみを示しており、この概略構成に基づいて実施形態の説明をしたが、リプログラミング中継装置１がリプログラミング制御部１１とは別に通信部を備えてもよいのはもちろんであり、ＥＣＵ２がプログラム更新部２１とは別に更新プログラム受信部を備えてもよいのはもちろんである。
【符号の説明】
【００５２】
１    リプログラミング中継装置
２    ＥＣＵ（制御装置）
３    リプログラミングサーバ
１１  リプログラミング制御部
１２  旧プログラム復元部
１３  新プログラム生成部
１４  差分データ生成部
１５  ＥＣＵプログラム適合テーブル記憶部
１６  基本プログラム記憶部
１７  プログラム差分データ記憶部
２１  プログラム更新部
２２  記憶部
３１  更新データ送信部
【図１】
0006988636.tif 000002
【図２】
0006988636.tif 000003
【図３】
0006988636.tif 000004
【図４】
0006988636.tif 000005
【図５】
0006988636.tif 000006
【図６】
0006988636.tif 000007