(57)【要約】  本発明は、差分データが大きい場合であっても、制御プログラムの更新を実現する。本発明は、プログラム更新の際に、差分データを格納する車両制御装置のエリアの容量に応じて、受信するデータ量を制御することで、車両制御装置は、全ての差分データを格納していなくても、受信した部分的なデータから、順次、復元更新を行うようにする。
2019159715.tif 000002
【特許請求の範囲】
【請求項１】
書き換え可能なプログラムが格納された第１のメモリ部と、
前記プログラムと新プログラムとの差分データを格納する第２のメモリ部と、
前記第２のメモリ部の書込みブロック単位長ごとに分割した前記差分データ、前記新プログラムの書き込み先のアドレス、及び前記差分データのサイズを含むデータを受信する受信部と、
受信した前記差分データのサイズを判定する判定部と、
受信した前記差分データを前記第２のメモリ部の前記アドレスに書き込む書き込み部と、
前記第２のメモリ部に格納された前記差分データと前記プログラムとから前記新プログラムを復元する差分復元部と、
前記第１のメモリ部の前記プログラムを前記復元された前記新プログラムへ書き換える書き換え部と、を備えることを特徴とする車両制御装置。
【請求項２】
前記第２のメモリ部の書き込みブロックサイズの前記差分データを受信したと判断した場合、受信した前記差分データを前記第２のメモリ部の前記アドレスに書き込むことを特徴とする、請求項１記載の車両制御装置。
【請求項３】
前記第２のメモリ部のメモリサイズの前記差分データを受信し、かつ、未受信の前記差分データが有ると判断した場合、前記差分データの送信を待機することを特徴とする、請求項２記載の車両制御装置。
【請求項４】
前記第２のメモリ部に書き込んだ前記差分データを診断する診断部を備えることを特徴とする、請求項３記載の車両制御装置。
【請求項５】
前記第２のメモリ部に格納した前記差分データが正常であり、かつ、ユーザからプログラム更新が許諾された場合、
前記差分復元部は、前記第２のメモリ部に格納された前記差分データと、前記第１のメモリ部に格納された前記プログラムと、により差分を復元し、
前記書き換え部は、前記第１のメモリ部の前記プログラムを前記新プログラムへ書き換えることを特徴とする、請求項４記載の車両制御装置。
【請求項６】
前記未受信の前記差分データがある場合、
前記復元した前記プログラムへの書き換え後、残りの前記差分データを受信し、
受信した前記残りの前記差分データを前記第２のメモリ部に書き込み、
前記書き込まれた前記差分データの前記診断が正常であった場合、
前記第２のメモリ部に格納された前記差分データと、前記第１のメモリ部に格納された前記プログラムとから、前記差分復元部により差分を復元し、
前記第１のメモリ部の前記プログラムを前記新プログラムへ書き換えることを特徴とする、請求項５記載の車両制御装置。
【請求項７】
計時部を備え、
前記差分データの受信中に、所定の時間経過したことを検知した場合、
前記差分データの前記受信を止めることを特徴とする、請求項５記載の車両制御装置。
【請求項８】
前記第１のメモリ部の前記プログラムを前記新プログラムへの書き換えは、イグニッションがＯＦＦであり、車両のシフトギヤがパーキング位置にある場合に行うことを特徴とする、請求項５記載の車両制御装置。
【請求項９】
車両制御装置と、
前記車両制御装置と車載ネットワークを通じて接続されるプログラム書込装置と、
前記車両制御装置の前記差分データを含む更新パッケージを、前記プログラム書込装置に無線通信を介して配信するサーバと、
ユーザーとの入力と出力を制御する入出力装置と、を備え、
前記車両制御装置は、
書き換え可能なプログラムが格納された第１のメモリ部と、
前記プログラムと新プログラムとの差分データを格納する第２のメモリ部と、
前記第２のメモリ部の書込みブロック単位長ごとに分割した前記差分データ、前記新プログラムの書き込み先アドレス、前記差分データのサイズを含むデータを受信する受信部と、
前記受信した前記差分データのサイズを判定する判定部と、
受信した前記差分データを前記第２のメモリ部の前記アドレスに書き込む書き込み部と、
前記第２のメモリ部に格納された前記差分データと前記プログラムとから前記新プログラムを復元する差分復元部と、
前記第１のメモリ部の前記プログラムを前記復元された前記新プログラムへ書き換える書き換え部と、を備えたことを特徴とするプログラム更新システム。
【請求項１０】
前記プログラム書込装置は、
前記差分データの送信中、前記車両制御装置から前記差分データの送信を一旦待機する旨の通知を受信した場合、未送信の前記差分データの先頭箇所を記憶し、前記差分データの送信を止め、前記車両制御装置へ妥当性診断の要求を送信する、ことを特徴とする請求項９記載のプログラム更新システム。
【請求項１１】
前記プログラム書込装置は、
前記車両制御装置から応答される前記差分データの前記妥当性診断の結果が正常の場合、前記入出力装置によって、前記車両制御装置のプログラム更新の可否確認を行う、
ことを特徴とする請求項１０記載のソフト更新システム。
【請求項１２】
前記プログラム書込装置は、
前記可否確認で可の場合、前記新プログラムの書き込み先アドレスと、前記差分データのサイズと、を含むプログラム更新実行要求を前記車両制御装置へ送信することを特徴とする請求項１１記載のソフト更新システム。
【請求項１３】
前記プログラム書込装置は、
前記プログラム更新実行要求に対する応答を前記車両制御装置から受信した場合、未送信の前記差分データを有していれば、前記車両制御装置へ、前記先頭箇所から前記差分データを送信することを特徴とする請求項１２記載のソフト更新システム。
【請求項１４】
前記プログラム書込装置は、
前記差分データの送信中、前記車両制御装置から、所定の時間経過したことによるプログラム更新の手続きを一旦中止する旨の通知を受信した場合、
未送信の前記差分データの先頭箇所と、未送信の前記差分データサイズを記憶し、プログラム更新処理を終了することを特徴とする請求項９記載のソフト更新システム。
【請求項１５】
書き換え可能なプログラムが格納された第１のメモリ部と、
前記プログラムと新プログラムとの差分データを格納する第２のメモリ部と、
圧縮された特定プログラムが格納された第３のメモリ部と、
前記第２のメモリ部の書込みブロック単位長ごとに分割した前記差分データ、前記新プログラムの書き込み先のアドレス、及び前記差分データのサイズを含むデータを受信する受信部と、
受信した前記差分データのサイズを判定する手段と、
受信した前記差分データを前記第２のメモリ部の前記アドレスに書き込む書き込み部と、
前記第２のメモリ部に格納された前記差分データと前記プログラムとから前記新プログラムを復元する差分復元部と、
前記第１のメモリ部の前記プログラムを前記新プログラムへ書き換える書き換え部と、
前記圧縮された特定プログラムを解凍復元して、前記プログラムを前記特定プログラムへ書き換える解凍復元部と、を備えることを特徴とする車両制御装置。
【請求項１６】
復元された前記新プログラムを診断する診断部を備え、
前記解凍復元部は、前記診断の結果に応じて、前記第３のメモリ部に格納された前記特定プログラムを解凍復元し、前記第１のメモリ部の前記プログラムを前記特定プログラムへ書き換えることを特徴とする請求項１５記載の車両制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両制御装置およびプログラム更新システムに関するものである。
【背景技術】
【０００２】
車両制御装置は、車両を制御する動作を実装した制御プログラムを実行する演算部（例えばマイクロコンピュータ）、およびこの演算部に実行される制御プログラムを格納するＦｌａｓｈＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの書き換え可能な不揮発メモリを備える。【０００３】
このような車両制御装置のリプログラミングは、従来、低速なＣＡＮ（Controller Area Network）を介して書込みツールとしてのＰＣ（Personal Computer）または車載書込み装置と、車載制御装置（ＥＣＵ：Electric Control Unit）を接続し、新プログラム全体を分割転送しながらＥＣＵのＦｌａｓｈＲＯＭへ書込みを行っている。従って、書込みに要する時間がかかるという問題があった。【０００４】
これに対し、従来から更新時間を短縮することを目的として、差分によるリプログラミングの考え方が提案されている。特許文献１や特許文献２では、更新前後のプログラム間の差分を受信装置にダウンロードして更新前のプログラムと共にメモリに記憶し、これらの情報を用いて受信装置のプログラムを更新している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−６９１３１号公報
【特許文献２】特開２０１２−１９００７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記の特許文献では、更新前後のプログラム間の差分を全てダウンロードして受信装置のメモリに記憶する必要がある。しかしながら、一般に車両制御装置はメモリ容量が小さく、プログラム更新のためのメモリ領域を十分に確保することが難しい。もし、全ての差分をダウンロードするのに必要十分なメモリを考慮して設計すれば、その容量は大きくなり部品コストがアップする。加えて、将来のソフト更新における差分のサイズを、ソフト設計段階で知ることは難しく、妥当なメモリ容量を求めることは困難である。
そこで、本発明は差分データが大きい場合であっても、プログラムの更新を実現する。
【課題を解決するための手段】
【０００７】
本発明に係る車両制御装置は、書き換え可能なプログラムが格納された第１のメモリ部と、前記プログラムと新プログラムとの差分データを格納する第２のメモリ部と、前記第２のメモリ部の書込みブロック単位長ごとに分割した前記差分データ、前記新プログラムの書き込み先のアドレス、及び前記差分データのサイズを含むデータを受信する受信部と、受信した前記差分データのサイズを判定する判定部と、受信した前記差分データを前記第２のメモリ部の前記アドレスに書き込む書き込み部と、前記第２のメモリ部に格納された前記差分データと前記プログラムとから前記新プログラムを復元する差分復元部と、前記第１のメモリ部の前記プログラムを前記復元された前記新プログラムへ書き換える書き換え部と、を備える。
【発明の効果】
【０００８】
上記の手段によれば、差分データが大きい場合であっても、プログラムの更新を実現する。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に係る車両制御装置を備えたプログラム更新システムの構成図である。
【図２】車両が有する車載ネットワークシステムの構成図である。
【図３】車両制御装置の機能ブロック図である。
【図４】車両制御装置のＦｌａｓｈＲＯＭの構成例である。
【図５】更新プログラムの機能ブロック図である。
【図６】本発明の一実施形態に係る車両制御装置のリプログラミンシーケンス図である。
【図７】差分データが第２エリアより大きい場合の車両制御装置のリプログラミンシーケンス図である。
【図８Ａ】差分データ格納処理のシーケンス図である。
【図８Ｂ】差分データ格納処理のシーケンス図である。
【図９】差分データ格納処理のフローチャートである。
【図１０】妥当性診断処理のフローチャートである。
【図１１】ユーザ許諾画面の一例である。
【図１２】差分更新機能ブロック図である。
【図１３】差分更新処理のフローチャートである。
【図１４】更新時間制限つきのシーケンス例である。
【図１５】本発明の第２の実施携帯にかかる車両制御装置の機能ブロック図である。
【図１６】本発明の第２の実施携帯にかかる車両制御装置の機能ブロック図である。
【発明を実施するための形態】
【００１０】
＜実施の形態１＞
以下に、本発明の一実施形態に係るプログラム更新システムについて、各図を参照して説明する。
【００１１】
図１は、本発明の一実施形態に係るプログラム更新システムの構成図である。このプログラム更新システムは、車両１、サーバ２、インターネット回線３、無線基地局４を備える。車両１は、インターネット回線３および無線基地局４を介し、無線通信によりサーバ２と接続し、相互に通信する。無線通信は、例えば、３Ｇ／ＬＴＥなどの公衆回線による携帯電話網やＷｉＦｉなどの回線を用いて実現される。サーバ２は、車両１が有する車両制御装置１１の制御プログラムの更新に必要な更新パッケージ５を、車両１に対して配信する。車両１の車両制御装置１１は、その更新パッケージ５を用いて制御プログラムの更新を行う。
【００１２】
図２は、車両１が備える車載ネットワークシステムの構成図である。車両制御装置１１は、車両１の動作を制御する制御プログラムを実行する装置であり、車載ネットワーク１３（例えばＣＡＮ（Ｃａｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ））を介してゲートウェイ１２（プログラム書込装置）と接続されている。車両制御装置１１は、ゲートウェイ１２を介して他の車両制御装置と通信することができる。
【００１３】
また、ゲートウェイ１２は、車両制御装置１１の制御プログラムの更新を制御するプログラム書込み装置としての役割も有する。ゲートウェイ１２は、サーバ２から更新パッケージ５を受信し、車両制御装置１１に対して制御プログラムの更新命令（リプログラミング命令）および更新用の差分データや制御プログラムそのものを送信する。ゲートウェイ１２とは別に、プログラム書込装置を設けてもよい。
【００１４】
ゲートウェイ１２は、演算部１２１、ＦｌａｓｈＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２２、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２３、ＣＡＮトランシーバおよび無線通信モジュールを含む通信装置１２４を有している。演算部１２１は、ＦｌａｓｈＲＯＭ１２２に格納されたプログラムを実行することにより、車載ネットワーク１３上の車両制御装置１１やサーバ２との間で通信を行う。また、車両制御装置１１の制御プログラムの更新時に、ゲートウェイ１２は、サーバ２から更新パッケージ５を受信してＦｌａｓｈＲＯＭ１２２に一時的に格納し、一時的に格納したこの更新パッケージ５を用いて車両制御装置１１の制御プログラムの更新を行う。
【００１５】
また、ＨＭＩ（Ｈｕｍａｎ−Ｍａｃｈｉｎｅ  Ｉｎｔｅｒｆａｃｅ）１４は、例えば、車両１のダッシュボート中央に埋め込まれた各種表示用の液晶ディスプレイ装置、その近傍に配置された操作スイッチ類および車載スピーカなどで構成されている。ＨＭＩ１４は、車両１の乗員に対して各種表示を行ったり、各種入力操作を処理したりする。また、ＨＭＩ１４は、車両制御装置１１の制御プログラムの更新に係る表示や操作入力が行われる。
【００１６】
図３は、車両制御装置１１の構成図である。車両制御装置１１は、演算部１１１、ＦｌａｓｈＲＯＭ１１２、ＳＲＡＭ１１３、通信装置１１４（例えばＣＡＮトランシーバ）を備える。
【００１７】
演算部１１１は、ＦｌａｓｈＲＯＭ１１２が格納している制御プログラムを実行する、例えばマイクロコンピュータなどの演算装置である。以下では記載の便宜上、各プログラムを動作主体として説明する場合があるが、実際にこれらプログラムを実行するのは演算部１１１である。
【００１８】
ＦｌａｓｈＲＯＭ１１２は、書き換え可能な不揮発メモリであって、ブートブロック１１２２、第１の記憶領域としての第１エリア１１２３と第２の記憶領域としての第２エリア１１２４を有する。以下、その構成について図４を用いて説明する。
【００１９】
図４は、ＦｌａｓｈＲＯＭ１１２の内部の構成を示す図である。
ＦｌａｓｈＲＯＭ１１２は、複数のブロックＢｌｏｃｋ＃０〜Ｂｌｏｃｋ＃Ｎで構成され、実行用プログラムＤ１１が格納される第１エリア１１２３と、差分データＤ１３を格納するエリアとして使われる第２エリア１１２４を持つ。ここで、ブロックとは、ＦｌａｓｈＲＯＭの消去・書換え単位を示す。また、差分データＤ１３は、実行用プログラムＤ１３と新たな実行用プログラムから生成される差分データを示す。差分生成については、後述する。本実施例では第１エリア１１２３と第２エリア１１２４は複数のブロックから構成しているが、１つのブロックとしても良い。また、先頭ブロックＢｌｏｃｋ＃０は、ブートブロック１１２２であり、ゲートウェイ１２と通信を行い、差分データＤ１３の格納や、実行用プログラムＤ１１の更新を行う更新プログラムＤ１０が搭載されている。次に、更新プログラムＤ１０について図５を用いて説明する。
【００２０】
図５は、更新プログラムＤ１０の機能構成を示す図である。更新プログラムＤ１０は、通信手段５０１、書換え手段５０３、診断手段５０４、差分復元手段５０５、受信サイズ判断５０２の機能を持つ。通信手段５０１は、ゲートウェイ１２と通信を行う。書換え手段５０３は、ＦｌａｓｈＲＯＭ１１２の指定された領域の消去および書換えを行う。診断手段５０４は、受信した差分データが正しく書込めたか診断を行う。差分復元手段５０５は、第２エリア１１２４に格納された差分データＤ１３と第１エリア１１２３の実行用プログラムＤ１１を用いて、新プログラムを復元する機能を持つ。受信サイズ判断５０２は、通信手段５０１にて受信した差分データのデータ長の判定を行う。これらの機能を用いた、本実施例によるソフトウェアの更新について以下説明する。
【００２１】
図６は、更新処理全体の流れを示すシーケンス例である。車両制御装置１１の制御ソフトウェアの修正を行うと、ソフト更新の準備として、サーバ２へ更新パッケージ５の登録を行う（Ｓ６０１）。車両のイグニッションを起動したタイミングなどで、ゲートウェイ１２は、通信装置１２４を介してサーバ２から更新パッケージ５をダウンロードしてゲートウェイ１２のＦｌａｓｈＲＯＭ１２２に保持する（Ｓ６０２）。その後、車の電源スイッチをＯＦＦし、電源ＯＮ状態からＡＣＣ状態Ｓ６０３に遷移したときなどに、ゲートウェイ１２から更新対象のＥＣＵに差分データＤ１３を受信して、第２エリア１１２４に格納する（Ｓ６０４）。差分データＤ１３の格納が正常完了したら、ゲートウェイ１２は、ＨＭＩ１４にユーザ許諾要求Ｍ６０１を送信し、実行用プログラムＤ１１の更新を実施して良いかの許諾を確認するための画面を表示する（Ｓ６０５）。ユーザが許諾すれば、ＨＭＩ１４より、ユーザ許諾Ｍ６０２が応答され、ターゲットの車両制御装置１１のプログラム更新処理を行う（Ｓ６０６）。実行用プログラムＤ１１の更新が正常に終了すると、車両の電源がＯＦＦされる。
なお、差分データ格納処理（Ｓ６０４）やソフト更新処理（Ｓ６０６）の実施タイミングは、前記ＡＣＣ状態以外にも、更新データのダウンロード処理Ｓ６０２完了直後や、所定の時刻、などが考えられる。
【００２２】
図７に、差分データＤ１３のデータサイズが車両制御装置１１の第２エリア１１２４の格納サイズより大きい場合の更新処理全体の流れを示すシーケンス例を示す。
サーバ２への更新データＤ１３の登録処理までは、図６と同等なので、それ以降のシーケンスについて説明する。
【００２３】
車の電源スイッチをＯＦＦし、電源ＯＮ状態からＡＣＣ状態Ｓ７０１に遷移したときなどに、ゲートウェイ１２から更新対象のＥＣＵに差分データＤ１３を受信して、第２エリア１１２４に格納する（Ｓ７０２）。ここで、差分データＤ１３のデータサイズが車両制御装置１１の第２エリア１１２４の格納サイズより大きく、車両制御装置１１が、差分データＤ１３を第２エリア１１２４に全て格納できないと判断すると、ゲートウェイ１２に待機命令を送信し、データの転送を一旦途中で停止させる。
次に、実行用プログラムＤ１１の更新を実施して良いかの許諾を確認するための画面を表示する（Ｓ７０３）。ユーザがそれを許諾すれば、ターゲットの車両制御装置１１へのプログラム更新処理を行う（Ｓ７０４）。ステップＳ７０４では、差分データ格納処理aＳ７０２で第２エリア１１２４に格納できた差分データＤ１３を使い、実行用プログラムＤ１１の一部分だけプログラム更新を実施する（「更新処理ａ」と呼ぶ）。実行用プログラムの更新が終了すると、ゲートウェイ１２は、残りの差分データＤ１３´の送信を開始する。車両制御装置１１は、第２エリア１１２４に差分データＤ１３´を格納する（Ｓ７０５）。差分データＤ１３´の格納が正常完了したら、そのデータを使って、実行用プログラムＤ１１のプログラム更新処理を行う（Ｓ７０６）。ステップＳ７０６では、プログラム更新処理ａＳ７０４の続きのエリアからプログラム更新が行われる（「更新処理ｂ」と呼ぶ）。
【００２４】
以下では、差分データ格納処理、および更新処理（Ｓ７０２〜Ｓ７０６）について、より詳細な手順を説明する。
【００２５】
図８Ａは、差分データ格納処理aＳ７０２において、ゲートウェイ１２と車両制御装置１１の間で実行される差分データ格納処理の流れを示すシーケンス図である。最初に、ゲートウェイ１２は車両制御装置１１に対して、差分データ格納先指定コマンドを送信する（Ｍ８０１）。この差分データ格納先指定コマンドは、たとえば、データフォーマット、送信データサイズ、送信したデータの書込み先を示す書込み先アドレス等の情報を含む。
ここでは、差分データの書込み先として第２エリア１１２４を指定する。車両制御装置１１は、差分データ格納先指定コマンドＭ８０１を受信すると、ステップＳ８０１で差分データを格納するための準備を行い、ゲートウェイ１２に受諾応答を返す（Ｍ８０２）。この受諾応答は、車両制御装置１１が一度に受信可能なデータサイズ等の情報を含む。
次に、ゲートウェイ１２は、更新パッケージ５から差分データＤ１３を読み出し、車両制御装置１１が一度に受信可能なデータサイズに分割し、車両制御装置１１に転送する（Ｍ８０３）。車両制御装置１１は、ステップＳ８０２でゲートウェイ１２から送信された差分データを受信すると、差分データ格納先指定コマンド（Ｍ８０１）で指定された書込み先へ順次格納する。ここでは第２エリア１１２４に格納する。ゲートウェイ１２と車両制御装置１１は、差分データの転送をすべて完了するまで、Ｍ８０３とＳ８０２の処理を繰り返す。ここで、車両制御装置１１は、受信するデータサイズが第２エリア１１２４の格納サイズより大きいと判断すると、ゲートウェイ１２に待機応答を送信する（Ｍ８０７）。ゲートウェイ１２は、待機応答（Ｍ８０７）を受信すると、データ転送を止め、未送信データの開始位置を記憶した後、車両制御装置１１に診断要求コマンドを送信する（Ｍ８０５）。この診断要求は、たとえば、診断指標や診断を行うデータサイズ、診断を行う先頭アドレス等の情報を含む。車両制御装置１１は、ステップＳ８０３で、診断要求コマンドを受信すると、指定された先頭アドレスから、指定されたサイズ分のエリアのデータ妥当性チェックを行い、差分データが正常に第２エリア１１２４に格納されたことを確認する。車両制御装置１１は、診断結果をゲートウェイ１２に応答する（Ｍ８０６）。
【００２６】
ここで、差分データ受信・格納処理Ｓ８０２の動作を図５と図９を用いて説明する。差分データ受信・格納処理Ｓ８０２は、車両制御装置１１がゲートウェイ１２から差分データを受信すると更新プログラムＤ１０によって実行される。
【００２７】
最初に、通信手段５０１によって受信した差分データは、ＲＡＭ１１３に保存され（Ｓ９０１）、受信サイズ判断５０２によって、受信した差分データのサイズ判定が行われる（Ｓ９０２〜Ｓ９０４）。ステップＳ９０２では、一度に受信可能なデータサイズ分を受信したか判定する。ステップＳ９０３では、１Ｂｌｏｃｋ分のデータを受信したか判定する。最後に、ステップＳ９０４で、受信したデータサイズが第２エリアサイズより小さいか判定する。更新プログラムＤ１０は、受信データが１Ｂｌｏｃｋ分溜まるごとに、書換え手段５０３によって、ＲＡＭに格納されたデータをＦｌａｓｈＲＯＭへ書込み（Ｓ９１０）、次の受信データを受信するために受諾応答を送信する（Ｓ９０９）。ここで、ステップＳ９０４により、受信したデータサイズが第２エリアサイズ以上になったと判断した場合、更新プログラムＤ１０は、ゲートウェイ１２に、待機応答を送信し、差分データの送信を一旦止めるように通知する（Ｓ９０８）。
【００２８】
次に、妥当性診断Ｓ８０３の動作を図５と図１０で説明する。妥当性診断Ｓ８０３は、車両制御装置１１がゲートウェイ１２から診断要求Ｍ８０６を受信すると更新プログラムＤ１０によって実行される。本実施例では、サムチェックによる誤り診断例を示す。
【００２９】
最初に、ステップＳ１００１で、通信手段５０１によって受信した診断要求Ｍ８０６に付随する情報を変数に格納する。ここでは、ゲートウェイ１２が送信した差分データのサム値と、診断を行うデータが格納されるエリアの先頭アドレス情報および、診断を行うデータサイズをそれぞれ変数に設定する。次に、ステップＳ１００２で、先頭アドレスからデータサイズまでのエリアのデータ（第２エリア１１２４の差分データ）を加算した値を変数ｓｕｍへ設定する。次に、ステップＳ１００３で、診断要求Ｍ８０６から得た差分データのサム値と変数ｓｕｍの一致判定を行い、ＹｅｓならステップＳ１００４で、診断結果：正常をゲートウェイ１２に送信し、Ｎｏならば、診断結果：異常を応答する。
【００３０】
図８Ａでは、差分データ格納処理ａS７０２で行われる差分データ格納処理の一連のシーケンスを説明したが、妥当性診断Ｓ８０３において、第２エリア１１２４に差分データが正常に格納されていることが確認できると、次に、ステップＳ７０３が実行される。ステップＳ７０３は、ユーザに対して、実行用プログラムＤ１１の更新を実施して良いかの許諾を確認する処理である。図７と図１１を用い以下説明する。
【００３１】
ゲートウェイ１２は、ＨＭＩ１４に対し、ユーザ許諾取得要求を行う（Ｍ６０１）。ユーザ許諾取得要求Ｍ６０１を受信すると、ＨＭＩ１４は、実行用プログラムＤ１１の更新を実施して良いかの許諾を確認するための画面を表示する。図１１に、ユーザ許諾を取得するための画面構成例を示す。例えば、タッチパネル等の手段により、ユーザ許諾を取得して、その結果をゲートウェイ１２に応答する（Ｍ６０２）。
【００３２】
図８Ｂに、ステップＳ７０３にて、ユーザによる更新許諾確認がとれた後の処理シーケンスを示す。シーケンスは、ステップＳ７０４、Ｓ７０５、Ｓ７０６の３つのステップから成る。以下にそれぞれ説明する。
【００３３】
ステップＳ７０４は、ゲートウェイ１２と車両制御装置１１の間で実行される更新処理aの流れを示すシーケンス図である。
【００３４】
最初に、ゲートウェイ１２は車両制御装置１１に対して、更新実行要求コマンドを送信する（Ｍ８１１）。この更新実行要求コマンドは、たとえば、更新先のエリアを示すフラグ等の情報を含む。ここでは第１エリア１１２３が指定される。車両制御装置１１は、更新実行要求コマンドＭ８１１を受信すると、ステップＳ８０４で更新実行処理を行う。
更新実行処理Ｓ８０４では、差分データ格納処理aＳ７０２で第２エリア１１２４に格納した差分データと、第１エリアの実行用プログラムＤ１１を入力として、差分復元処理により新プログラムを復元し、第１エリアの実行用プログラムＤ１１を新プログラムに書換える。プログラム書換えが正常終了したら、ゲートウェイ１２に更新正常終了を返す（Ｍ８１２）。更新実行処理Ｓ８０４については後述する。
【００３５】
ステップＳ７０５は、差分データ格納処理ｂの流れを示すシーケンス図である。差分データ格納処理ａＳ７０２で格納できなかった差分データＤ１３´を、ゲートウェイ１２から受信し、第２エリア１１２４に格納する処理である。ちなみに、差分データ格納処理ａＳ７０２で第２エリア１１２４に格納した差分データＤ１３は、更新処理aＳ７０４の差分復元で使用済みであるため、消去して構わない。従って、差分データ格納処理ｂにおいて受信する差分データＤ１３´も、第２エリア１１２４に格納することができる。なお、ゲートウェイ１２と車両制御装置１１の間で実行されるコマンドシーケンスは、差分データ格納処理ａＳ７０２と同じであるので、説明は割愛する。
【００３６】
最後のステップＳ７０６は、更新処理ｂの流れを示すシーケンス図である。差分データ格納処理ｂＳ７０５で第２エリア１１２４に格納した差分データＤ１３´と、第１エリアの現行プログラムを入力として、差分復元処理により新プログラムを復元し、第１エリアの実行用プログラムＤ１１を新プログラムに書換える。ここで、差分復元処理は、更新処理ａＳ７０４にて書換えを行ったプログラムの続きから行われる。それは、車両制御装置１１が、更新処理ａの書換え終了位置（更新処理ｂの復元開始位置）を記憶しておくことなどで実現可能である。ゲートウェイ１２と車両制御装置１１の間で実行されるコマンドシーケンスは、更新処理ａＳ７０４と同じであるので、説明は割愛する。
【００３７】
次に、更新実行処理Ｓ８０４の動作を図１２と図１３を使い説明する。更新実行処理Ｓ８０４は、車両制御装置１１がゲートウェイ１２から更新実行要求Ｍ８１１を受信すると更新プログラムＤ１０によって実行される。
【００３８】
最初に、差分生成・差分復元手段について説明する。差分生成手段は、差分抽出処理などにおいて、新プログラムの部分命令列と類似の部分命令列を旧プログラムから検索して見つけ出し、その部分命令列を短い符号に置き換えてコピーコマンドに付属させる。一方、類似の部分命令列が見つからない場合には、追加コマンドにその部分命令列を付属させる。このコピーコマンドと追加コマンドの列が差分データである。このように、差分データとは、単に新プログラムから旧プログラムを減算した結果では無く、類似部分名列を短い符号に置き換えたコピーコマンドや追加コマンドなどの列で構成されている。
以上の準備を踏まえて、差分による更新実行処理Ｓ８０４の動作を説明する。
【００３９】
最初に、差分復元手段５０５は、ステップＳ１３０１で、第２エリア１１２４の差分データＤ１３から差分コマンドを読み出す。ステップＳ１３０２で差分コマンドを解析し、ステップＳ１３０３で差分コマンドがコピーコマンドか判定し、Ｙｅｓならステップ１３０６で付属する符号から第１エリア１１２３の実用行プログラムの部分命令列を復元エリア１１３２へ書込む。もしＮｏならば、Ｓ１３０４で差分コマンドが追加コマンドか判定し、Ｙｅｓならステップ１３０７で追加コマンドに付属するデータ（部分命令列）を復元エリア１１３２ヘ追加書込みする。もしＮｏならば、ステップ１３０５で第２エリア１１２４の差分データＤ１３を全て読み出したか判定し、Ｎｏならば、ステップ１３０１へ戻って処理を繰返す。もし、Ｙｅｓなら、差分復元処理は終了である。引き続き、書換え手段５０３は、ステップ１３０８で、第１エリア１１２３の先頭アドレスからサイズ分のエリアを消去し、同エリアに差分復元した新プログラムを復元バッファ１１３２から書込む。ステップ１３０８で、第１エリア１１２３に書込まれた新プログラムの妥当性診断を実施する。妥当性診断の手法としては、例えば、新プログラム全体のサム値やハッシュ値などをゲートウェイから受信し、車両制御装置自身が復元した新プログラムのサム値やハッシュ値を計算して、受信した値と一致するかチェックするなどが上げられる。この妥当性診断で新プログラムが正常であることが確認できれば、プログラム更新は終了である。以上で、差分復元した新プログラムが第１エリア１１２３に格納できたことになる。
なお、妥当性診断で新プログラムが異常と判断された場合の対策については、実施の形態２で説明する。
【００４０】
本実施例において、一連のソフトウェア更新の時間が長くかかった場合、車の従来の処理に影響を及ぼしてしまうことが考えられる。また、ソフトウェア更新時間が長くなることで、車両の電源ＯＦＦまでの時間が長くなり、ＡＣＣ状態が長時間続いてしまうと、その分バッテリー消費が多くなり、バッテリーが上がってしまい、最悪、車を動かせなくなる可能性も考えられる。そのような課題を解決する手段として、１回に実施できるソフトウェア更新処理に時間制限を設けることが考えられる。制限時間内に終わらない場合は、一旦途中で処理を止め、次の実行タイミングで、続きから更新を行う。こうすることで、上記のような課題を解決することができる。
【００４１】
上記課題を解決するための実施例として、図１４に、車両制御装置１１にタイマーによる強制中断機能を設けた場合のシーケンス例を示す。ここでは、差分データ格納処理ａＳ７０２を使って説明する。まず、車両制御装置１１が、ゲートウェイ１２から差分データ格納先指定コマンド（Ｍ８０１）を受信した際に、タイマーを起動する（Ｓ１４１０）。その後、ゲートウェイ１２から送信された差分データを格納する処理中にソフト更新の制限時間のタイムアウトが通知されると（Ｓ１４０２）、車両制御装置１１は、強制中断応答Ｍ１４０１をゲートウェイ１２に送信し、ソフト更新処理を強制終了する。ゲートウェイ１２では、強制中断応答Ｍ１４０１を受信すると、未送信の差分データ（残データ）の書込み先のアドレスとデータサイズを算出し、記憶し（Ｓ１４０３）、ソフト更新処理を強制終了する。その後、車両は、電源ＯＦＦ処理へ移行する。ゲートウェイ１２が、差分データをどこまで送信し、続きのデータをどこから格納するかを算出し記憶することで、次のソフト更新処理タイミングで、続きから差分データ格納処理を行うことが可能となる。
【００４２】
＜実施の形態１：まとめ＞
以上のように、プログラム更新の際に、差分データを格納する車両制御装置のエリアの容量に応じて、ゲートウェイが送信するデータ量を制御することで、車両制御装置は、全ての差分データを格納していなくても、その受信した部分データ用いて、順次、復元および、プログラム更新を行うことができる。よって、差分データを受信するためのメモリが十分に確保できない場合にも差分更新を可能にする車両制御装置を提供することができ、その結果、車両制御装置のメモリ領域を小さく設計することが可能となる。
【００４３】
＜実施の形態２＞
実施の形態１において説明した差分によるプログラムの更新において、復元した新プログラムが正しく復元され、更新ができたか診断するための妥当性診断処理について述べた。この場合の課題として、もし診断結果が異常の場合には、不揮発性メモリには既に旧プログラムが存在しないので差分によるリプログラミングが不可能になってしまい、最悪、車両が動作不能に陥ることが想定される。ここでは、車両制御装置１１のＦｌａｓｈＲＯＭのメモリ領域を小さく抑えながら、かつ、この課題を解決するための手段の一例を説明する。
【００４４】
図１５は、本発明の実施形態２に係る車両制御装置１１の構成図である。基本的には、実施の形態１の車両制御装置１１の構成図と同じであるが、実施の形態２においては、ＦｌａｓｈＲＯＭ１１２に第３のエリア１１２５を設け、特定のプログラム（例えば、緊急時用プログラム）Ｄ１４を圧縮した状態（圧縮データ）で配置する。
【００４５】
図１６は、本発明の実施形態２に係る更新プログラムＤ１０の機能構成を示す図である。
前述の圧縮データＤ１４を解凍するための手段として、解凍手段５０６を設ける。
【００４６】
第１エリア１１２３の実行用プログラムＤ１１と第２エリア１１２４に格納された差分データを入力とする差分復元手段５０５により差分を復元し、復元された新プログラムにより、第１エリア１１２３の実行用プログラムＤ１１を書換える。その後、妥当性診断による診断結果が異常であった場合、第３エリア１１２５に配置した緊急時用プログラムの圧縮データＤ１４を解凍復元手段５０６により解凍して、第１エリア１１２３へ書込む。
そして、この特定のプログラムを動作させることで、車両制御装置１１を動作可能とすることができる。
【００４７】
＜実施の形態２：まとめ＞
以上のように、ＦｌａｓｈＲＯＭ１１２に第３のエリア１１２５を設け、特定のプログラム（例えば、緊急時用プログラム）Ｄ１４を圧縮した状態（圧縮データ）で配置し、差分更新異常が発生した場合は、そのプログラムを解凍することで、車両を動作可能な状態にすることができる。さらに、特定のプログラムは、車両を動かすために必要な緊急機能に限定できるため、より小さなプログラムサイズにすることができる。従って、その圧縮データはさらに小さなサイズになるので、結果としてバックアップ用不揮発性メモリの容量を小さく抑えることが可能となる。
【００４８】
＜変形例について＞
本発明は上記実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換える事が可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について他の構成の追加・削除・置換をすることができる。
【００４９】
実施形態１においては、制御プログラムを格納するエリアの例としてＦｌａｓｈＲＯＭ１１２を挙げたが、その他の不揮発性記憶装置を用いてもよい。
【００５０】
実施形態１においては、ＦｌａｓｈＲＯＭ１１２が第１エリア１１２３と第２エリア１１２４に分かれている構成例を説明したが、同様の構成を２つの記憶装置によって実現することもできる。
【００５１】
ＨＭＩ１４においては、ダッシュボート中央に埋め込まれた各種表示用の液晶ディスプレイ装置としたが、音声認識装置であったり、スマートホンのようなユーザの許諾確認が行える別の手段であっても良い。
【００５２】
更新シーケンスにおいては、制御プログラムの最新版を書き込むのが通常であるが、諸事情によってはダウンバージョンした制御プログラムで更新する可能性もある。この場合、制御プログラムの更新版とはそのダウンバージョンした制御プログラムである。すなわち制御プログラムの更新版とは、直前の更新シーケンスによって書き込まれた制御プログラムのことを指す。
【００５３】
上記各構成、機能、処理部、処理手段等は、それらの一部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
以上の各実施形態及び実施形態の組み合わせによれば、車両制御装置のメモリ容量に応じたサイズの差分データをダウンロードし、その差分に基づいた更新を行う。この動作を繰り返すことで、差分データが大きい場合であっても、制御プログラムの全ての更新を実現する。つまり、差分データを格納するメモリが小さくても差分更新を実現可能となるので、結果として、車両制御装置の差分データ格納領域（第２のメモリ部）の容量を小さく設計でき、コスト低減の効果が得られる。
【符号の説明】
【００５４】
１：車両、２：サーバ、３：インターネット回線、４：無線基地局、５：更新パッケージ、１１：車両制御装置、１１２２：ブートブロック、１１２３：第１エリア、１１２４：第２エリア、１１２５：第３エリア、１２：ゲートウェイ、１３：車載ネットワーク、１４：ＨＭＩ、Ｄ１０：更新プログラム、Ｄ１１：実行用プログラム、Ｄ１３：差分データ、Ｄ１４：特定バージョンの圧縮データ
【図１】
2019159715.tif 000003
【図２】
2019159715.tif 000004
【図３】
2019159715.tif 000005
【図４】
2019159715.tif 000006
【図５】
2019159715.tif 000007
【図６】
2019159715.tif 000008
【図７】
2019159715.tif 000009
【図８Ａ】
2019159715.tif 000010
【図８Ｂ】
2019159715.tif 000011
【図９】
2019159715.tif 000012
【図１０】
2019159715.tif 000013
【図１１】
2019159715.tif 000014
【図１２】
2019159715.tif 000015
【図１３】
2019159715.tif 000016
【図１４】
2019159715.tif 000017
【図１５】
2019159715.tif 000018
【図１６】
2019159715.tif 000019
【国際調査報告】
2019159715.tif 000020
2019159715.tif 000021
2019159715.tif 000022
2019159715.tif 000023