(57)【要約】少ないＲＡＭ使用量でかつ大きなブロックで構成されたフラッシュメモリを内蔵したマイコンを使用した車載制御装置においても、差分リプログラミングの復元処理を実現可能とし、かつ、大きな変更が加えられた新プログラムであっても、差分データのサイズを小さくすることによって、短時間で新プログラムを復元することができる車載制御装置を提供する。更新ツールから提供される更新内容に基づいてプログラムを更新可能な車載制御装置であって、プログラムを格納する複数のブロックを備える第１のメモリと、第２のメモリとを備え、プログラムの更新の際、プログラムと更新プログラムとの差分データを第２のメモリに格納し、差分データと更新前の旧プログラムとを用いて、複数のブロックの中の更新対象ブロック用の更新プログラムを、更新対象ブロックとは異なる他のブロックに再現し、他のブロックに再現された更新プログラムを更新対象ブロックに書き込む。
2017057111.tif 000002
【特許請求の範囲】
【請求項１】
更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新可能な車載制御装置であって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、
前記更新ツールは、更新対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
前記車載制御装置は、前記差分データを第２のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む、車載制御装置。
【請求項２】
前記車載制御装置は、前記全ての更新対象ブロックの更新が完了した後に、前記更新ツールから送信された前記他のブロックの新プログラムを圧縮した圧縮データを受信して前記第２のメモリへ格納し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込む、請求項１記載の車載制御装置。
【請求項３】
前記更新対象ブロックを含む複数のブロックの旧プログラムは、更新対象ブロックに隣接し、かつ上位アドレスの連続したブロックの旧プログラムである、請求項１記載の車載制御装置。
【請求項４】
更新ツールから提供される更新内容に基づいて、車載制御装置に格納されている旧プログラムを新プログラムヘ更新可能なプログラム更新システムであって
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、
前記更新ツールは、更新対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
前記車載制御装置は、差分データを前記第２のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む、プログラム更新システム。
【請求項５】
更新ツールから提供される更新内容に基づいて車載制御装置に格納されている旧プログラムを新プログラムヘ更新するように、前記車載制御装置に搭載される演算装置を機能させるプログラム更新ソフトウェアであって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、
前記更新ツールは、更新対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
前記プログラム更新ソフトウェアは、差分データを前記第２のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込むように前記演算装置を機能させる、プログラム更新ソフトウェア。
【請求項６】
前記全ての更新対象ブロックの更新が完了した後に、前記更新ツールから送信された前記他のブロックの新プログラムを圧縮した圧縮データを受信して前記第２のメモリへ格納し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込むように前記演算装置を機能させる、請求項５記載のプログラム更新ソフトウェア。
【請求項７】
更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新可能な車載制御装置であって、
前記車載制御装置は、前記プログラムを格納する複数のブロックで構成された不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、さらにプログラムまたはデータを受信すると一時的に第２のメモリへ格納し、その後にプログラムまたはデータを前記不揮発性の第１のメモリへ書込むダウンロード手段を備え、
前記更新ツールは、差分または圧縮による更新手段を有する復元ソフトを車載制御装置へ送信し、次に対象である更新対象ブロックの新プログラムと更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
前記車載制御装置は、前記復元ソフトを受信すると前記第３のダウンロード手段により前記不揮発性の第１のメモリの予め定めたブロックへ書込みを行う第１の手順と、前記復元ソフトを実行して、前記差分データを受信すると差分データを前記第２のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む第２手順で構成されたプログラム更新を行う、車載制御装置。
【請求項８】
前記車載制御装置は、前記全ての更新対象ブロックの更新が完了した後に、前記更新ツールから送信された前記他のブロックの新プログラムを圧縮した圧縮データを受信して前記第２のメモリへ格納し、前記復元ソフトを実行し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込む、請求項７記載の車載制御装置。
【請求項９】
更新ツールから提供される更新内容に基づいて車載制御装置に格納されている旧プログラムを新プログラムヘ更新するように、前記車載制御装置に搭載される演算装置を機能させるプログラム更新ソフトウェアであって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリと、プログラムまたはデータを受信すると一時的に第２のメモリへ格納し、その後に前記プログラムまたはデータを前記不揮発性の第１のメモリへ書込むダウンロード手段とを備え、
前記更新ツールは、差分または圧縮による更新手段を有する復元ソフトを車載制御装置へ送信し、次に対象である更新対象ブロックの新プログラムと、更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
前記プログラム更新ソフトウェアは、前記復元ソフトを受信すると前記ダウンロード手段により前記不揮発性の第１のメモリの予め定めたブロックへ書込みを行う第１の手順と、前記復元ソフトを実行して、前記差分データを受信すると差分データを前記第２のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む第２の手順とを実行するように前記演算装置を機能させる、プログラム更新ソフトウェア。
【請求項１０】
前記全ての更新対象ブロックの更新が完了した後に、前記更新ツールから送信された前記他のブロックの新プログラムを圧縮した圧縮データを受信して前記第２のメモリへ格納し、前記復元ソフトを実行し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込むように前記演算装置を機能させる、請求項９記載のプログラム更新ソフトウェア。
【請求項１１】
更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新可能な車載制御装置であって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、さらにプログラムまたはデータを受信すると一時的に第２のメモリへ格納し、その後にプログラムまたはデータを前記不揮発性の第１のメモリへ書込むダウンロード手段を備え、
前記更新ツールは、差分または圧縮による更新手段と差分データまたは圧縮データの通信手段を有する復元回復ソフトを車載制御装置へ送信し、次に対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、次に予め定めたブロックの新プログラムを送信し、
前記車載制御装置は、前記復元回復ソフトを受信すると前記ダウンロード手段により前記不揮発性の第１のメモリの予め定めたブロックへ書込みを行う第１の手順と、前記復元回復ソフトの通信手段を実行して、前記差分データを受信すると差分データを前記第２のメモリに格納し、前記復元回復ソフトの更新手段を実行して前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムを入力として前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに復元し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む第２の手順と、前記予め定めたブロックの新プログラムを受信すると前記ダウンロード手段により前記不揮発性の第１のメモリの予め定めたブロックへ前記新プログラムを書込む第３の手順で構成されたプログラム更新を行う、車載制御装置。
【請求項１２】
前記差分データによる更新対象ブロックの更新が完了した後に、前記更新ツールは前記他のブロックの新プログラムを圧縮した圧縮データを送信し、車載制御装置は、前記圧縮データを受信して前記第２のメモリへ格納し、前記復元回復ソフトは前記圧縮データを解凍し、新プログラムを前記他のブロックへ書込む、請求項１１記載の車載制御装置。
【請求項１３】
更新ツールから提供される更新内容に基づいて車載制御装置に格納されている旧プログラムを新プログラムヘ更新可能なプログラム更新ソフトウェアであって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、さらにプログラムまたはデータを受信すると一時的に第２のメモリへ格納し、その後にプログラムまたはデータを前記不揮発性の第１のメモリへ書込む第３のダウンロード手段を備え、
前記更新ツールは、差分または圧縮による更新手段と差分データまたは圧縮データの通信手段を有する復元回復ソフトを車載制御装置へ送信し、次に対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、次に予め定めたブロックの新プログラムを送信し、
前記プログラム更新ソフトウェアは、前記復元回復ソフトを受信すると前記第３のダウンロード手段により前記不揮発性の第１のメモリの予め定めたブロックへ書込みを行う第１の手順と、前記復元回復ソフトの通信手段を実行して、前記差分データを受信すると差分データを前記第２のメモリに格納し、前記復元回復ソフトの更新手段を実行して、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを入力として前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに復元し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む第２の手順と、前記予め定めたブロックの新プログラムを受信すると前記第３のダウンロード手段により前記不揮発性の第１のメモリの予め定めたブロックへ前記新プログラムを書込む第３の手順とを実行するように前記演算装置を機能させる、プログラム更新ソフトウェア。
【請求項１４】
前記差分データによる更新対象ブロックの更新が完了した後に、前記更新ツールは前記他のブロックの新プログラムを圧縮した圧縮データを送信し、
前記プログラム更新ソフトウェアは受信した圧縮データを前記第２のメモリへ格納し、前記復元回復ソフトを実行し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込むように前記演算装置を機能させる、請求項１３記載のプログラム更新ソフトウェア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車載制御装置、プログラム書き込み装置、プログラム生成装置及びプログラムに関する。
【背景技術】
【０００２】
従来のリプログラミングでは、低速なＣＡＮ（Controller Area Network）を介して書込みツールとしてのＰＣ（Personal Computer）と車載制御装置（ＥＣＵ：Engine Control Unit）を接続し、ロードモジュール（新プログラム）を分割転送しながらＥＣＵのフラッシュメモリへ書込みを行っている。【０００３】
また、旧プログラムに対する新プログラムの更新部分が小さい場合においても、新プログラム全体をＣＡＮ経由で転送し、新プログラム全体の書込みを行っている。【０００４】
従って、書込みに要する時間がかかるという問題があった。これに対し、従来から差分リプログラミングの考え方が提案されている（例えば、特許文献１参照）。すなわち、特許文献１の段落〔００１９〕には、書き換え方式の１つとして「ブロック単位で新旧プログラムの差分データを作成する手段」が記載されている。さらに段落〔００６４〕には、更新対象ブロックの旧プログラムをＳＤＲＡＭへ転送して、差分データと旧プログラムを用いて新プログラムをＳＤＲＡＭへ復元し、更新対象ブロックを消去してから、新プログラムを書込んでいる。【０００５】
特許文献２では、段落〔０００６〕において、少ないＲＡＭ使用量で差分更新を実現する手段が記載されている。更新対象のブロックの旧プログラムをＲＡＭへ転送するのでは無く、フラッシュメモリの他のブロックへ転送する方法である。転送した後に、更新対象のブロックを消去し、差分データと転送した旧プログラムを用いて新プログラムを復元し、新プログラムを更新対象ブロックへ書込むというやりかたである。この処理を全ての更新対象ブロックに対して繰返し行うことで新プログラムをフラッシュメモリへ書込むことができる。ただし、他のブロックにも書込むべき新プログラムが存在する場合は、旧プログラムは既に消去されているので、全文データを用いた従来の更新を行っている。【０００６】
このように、少ないＲＡＭ使用量でも差分リプログラミングを実現する技術が開発されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−１９００７５号公報
【特許文献２】特開２０１１−８１５６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１の技術は、更新対象ブロックの旧プログラムと差分データと復元した新プログラム全てをＲＡＭ上に配置している。結果として、ＲＡＭ容量よりも大きなブロックで構成されたフラッシュメモリを内蔵したマイコンを使用した車載制御装置では原理的に差分復元できないことになる。さらに、新プログラムの差分データは、同一ブロックに配置された旧プログラムから生成しており、差分データのサイズが大きくなってしまう問題がある。差分データのサイズが大きくなると車載制御装置への差分データの転送時間が長くなり、結果として更新時間が長くなってしまう。【０００９】
以下、詳しく説明する。特許文献１の段落〔００１９〕に記載されている差分データを作成する手段では、更新対象のブロックに配置される新プログラムの差分データを、同じ更新対象のプロックに配置されている旧プログラムを用いて生成している。一般的に、差分データサイズを小さくするには、差分データの差分抽出処理などにおいて、新プログラムの部分列（部分命令列）と類似の部分列を旧プログラムから検索して見つけ出し、部分列をコピーコマンドなどに置き換える。一方、新規に追加された部分列の場合には、旧プログラムには存在しないことが多い。この場合は、追加コマンドで新規部分列を記憶しておく。このコピーコマンドと追加コマンド及び記憶された新規部分列が差分データとなる。この観点から、類似の部分列を検索する範囲が１つのブロックに限定されていることが問題となる。できるだけ多くの旧プログラムを検索して、より類似性のある部分列を見つけて、コピーコマンドへ置き換えたほうが差分データのサイズを小さくできると考えられるからである。【００１０】
特許文献２記載の方式によれば、差分更新時にＲＡＭ使用量を少なくできる。前述したように、まず更新対象のブロック以外の他のブロックを選択し、その選択したブロックを消去してから更新対象ブロックの旧プログラムを前記選択したブロックへ転送している。次に、更新対象ブロックを消去し、ＲＡＭ上の差分データと前記選択したブロックの旧プログラムから新プログラムを更新対象ブロックへ書込んでいる。このようにフラッシュメモリの他のブロックを使用することで、ＲＡＭの使用量を少なくしている。【００１１】
しかし、この方式の復元処理は、差分データと、選択したブロックの旧プログラムだけから新プログラムを復元していることがわかる。従って、差分データ生成時も更新対象ブロックの新プログラムと、同じ１つのブロックの旧プログラムの範囲から類似性のある部分列を検索していることを意味するため、検索範囲が狭いという意味で、差分データのサイズが大きくなってしまうという問題がある。もちろん旧プログラムと新プログラムが小さな変更であった場合は、旧プログラムの検索範囲が狭いとは言えないが、大きな変更があった場合には旧プログラムの検索範囲を大きくしたほうが、類似性のある部分列を見つけ易いと言える。【００１２】
本発明の目的は、少ないＲＡＭ使用量でかつ大きなブロックで構成されたフラッシュメモリを内蔵したマイコンを使用した車載制御装置においても、差分リプログラミングの復元処理を実現可能とし、かつ、大きな変更が加えられた新プログラムであっても、差分データのサイズを小さくすることによって、短時間で新プログラムを復元することができる車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェアを提供することにある。
【課題を解決するための手段】
【００１３】
本発明は、更新ツールから提供される更新内容に基づいてプログラムを更新可能な車載制御装置であって、前記プログラムを格納する複数のブロックを備える第１のメモリと、第２のメモリとを備え、前記プログラムの更新の際、前記プログラムと前記更新プログラムとの差分データを前記第２のメモリに格納し、前記差分データと更新前の旧プログラムとを用いて、前記複数のブロックの中の更新対象ブロック用の更新プログラムを、前記更新対象ブロックとは異なる他のブロックに再現し、前記他のブロックに再現された更新プログラムを前記更新対象ブロックに書き込む。
【発明の効果】
【００１４】
本発明によれば、小さなＳＲＡＭと大きなブロックを有するフラッシュメモリを内蔵するマイコンで構成された車載制御装置において、大きな変更が加えられた新プログラムであっても、差分更新を高速かつ容易に行うことができる。上記以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１５】
【図１】発明の実施形態によるシステムの全体構成を示す模式図である。
【図２】図１に示すＰＣの構成図である。
【図３】図１に示す車載システムの構成図である。
【図４】図３に示すＥＣＵのＳＲＡＭの内部の構成を示す模式図である。
【図５】図３に示すＥＣＵのＦＬＡＳＨメモリの内部の構成を示す模式図である
【図６】図７に示す符合化制御ソフトの差分データ生成、圧縮データ生成の基本概念の説明図である。
【図７】図８に示す符合化ソフトを制御する符合化制御ソフトのフローチャートである。
【図８】更新対象ブロックの差分データまたは圧縮データを生成する符合化ソフトのフローチャートである。
【図９】図１に示すＰＣの通信ソフトのフローチャートである。
【図１０】図１に示すサーバの通信ソフトのフローチャートである。
【図１１】図３に示すプログラム書込み装置の通信ソフトのフローチャートである。
【図１２】図３に示すプログラム書込み装置と車載制御装置を接続する車載ネットワークＣＡＮの通信フレーム構成である。
【図１３】図５に示す車載制御装置のフラッシメモリに配置された復元回復ソフトのフローチャートである。
【図１４】図１３に示す復元回復ソフトから起動される復元制御ソフトのフローチャートである。
【図１５】図１４に示す復元制御ソフトから起動される復元ソフトのフローチャートである。
【図１６】復元回復ソフトを用いた既存ＥＣＵの差分更新概念図である。
【図１７】復元回復ソフトを用いた既存ＥＣＵ差分更新の手順を示すフローチャートである。
【図１８】復元回復ソフトをダウンロードするＥＣＵ差分更新の手順を示すフローチャートである。
【発明を実施するための形態】
【００１６】
本実施形態は、下記２つの課題を同時に解決する手段を提供するものである。
【００１７】
１つ目の課題は、小さなＲＡＭ容量でかつ大きなブロックで構成されたフラッシュメモリを内蔵するマイコンでも差分更新を可能にすることである。
【００１８】
２つ目の課題は、新プログラムに大きな変更が加えられたとしても、差分データのサイズをできるだけ小さくすることである。
【００１９】
上記２つの課題を解決する方法を説明する。まず、更新対象ブロックの新プログラムを復元するために、更新対象ブロック以外の他のブロックをフラッシュメモリに確保し、消去しておく。ここで、前記他のブロックを一時ブロックと呼ぶことにする。車載制御装置は、受信したＲＡＭ上の差分データと、更新対象ブロックを含む複数のブロックに配置された旧プログラムから、新プログラムを復元し、前記一時ブロックへ新プログラムを書込む。次に、一時ブロックへの書込みが完了してから更新対象ブロックを消去し、一時ブロックの新プログラムを更新対象ブロックへ書込む。この処理を全ての更新対象ブロックに繰返し行うことで、差分更新による新プログラムへの更新を行うことができる。ここで注意すべきことは、一時ブロックに書込むべき新プログラムが存在する場合には、既に旧プログラムは消去されているので、差分更新はできない。本発明では、一時ブロックの書込むべき新プログラムは、新プログラム自身を圧縮した圧縮データを使用する。圧縮データは、解凍時に旧プログラムを参照する必要が無い。また圧縮データは、予め全て０や１などの決められたデータとの差分でも良い。この場合も復元時に旧プログラムを参照する必要が無い。以上のように一時ブロックの新プログラムの圧縮データを用いて、車載制御装置へ圧縮データを送信し、車載制御装置は受信した圧縮データを解凍して新プログラムを復元し、一時ブロックへ新プログラムを書込む手段を提供する。
【００２０】
このように、新プログラムの復元にはフラッシュメモリの一時ブロックを使用するので、ＲＡＭの使用は、差分データまたは圧縮データを受信する受信エリアで済むという特徴をもつ。
【００２１】
もう１つの課題は、前記「差分データと、更新対象ブロックを含む複数のブロックに配置された旧プログラムから、新プログラムを復元し、前記一時ブロックへ新プログラムを書込む。」手段で実現している。以下、その理由を詳しく説明する。簡単に説明するため、新プログラムに大きな機能追加があった場合を考える。この場合、新プログラムのどこかのブロックに新たな機能を実現するプログラムが追加されたことになる。これは、大まかに言うと、新機能が配置されるブロックを基準に、その上位アドレスの前半のブロックの新ブログラムは旧プログラムとほとんど同じであり、下位アドレスの後半のブロックの新プログラムは新機能のプログラムが割り込んだことにより、１つ下位のブロックへ移動することになる。この結果、同一ブロックの新プログラムと旧ブログラムの差分データは、上位アドレスの前半の同一ブロックではその差分データのサイズを小さくできるが、下位アドレスの後半のブロックでは類似性のあるプログラムがブロック１つ分ずれるため、同一ブロックの差分データのサイズは大きくなってしまう。そこで本発明は、更新対象ブロックの新プログラムの差分データは、更新対象ブロックを含む複数のブロックの広範囲の旧プログラムを利用して、ブロックが１つずれても類似性のある旧プログラムを検索できるようになるため、差分データを小さくすることができる。
【００２２】
以上の方法により、少ないＲＡＭ使用量でかつ大きなブロックで構成されたフラッシュメモリを内蔵したマイコンを使用した車載制御装置においても、差分更新を可能とし、かつ、大きな変更が加えられた新プログラムであっても、高速に差分リプログラミングを行うことができる。詳細は、以下で図を用いて詳細に述べる。
【００２３】
以下、図面を用いて本発明の実施形態による車載制御装置を含むシステムの構成及び動作を説明する。
【００２４】
最初に、図１を用いて、システムの全体構成を説明する。図１は、本発明の実施形態によるシステムの全体構成を示す模式図である。
【００２５】
本システムは、プログラム生成装置１００、車載システム３を備える。
【００２６】
プログラム生成装置１００は、新プログラムと車載システム３に含まれる車載制御装置に記憶されたプログラムと同一のプログラムからデータを生成し、生成したデータを車載システム３に送信する。なお、その詳細は、図７〜図１１を用いて後述する。
【００２７】
プログラム生成装置１００は、ＰＣ１、サーバ２を備える。ＰＣ１は、例えば、ＬＡＮ（Local Area Network）を介して、サーバ２に接続される。なお、クロスケーブルを用いて、直接ＰＣ１とサーバ２を接続してもよい。
【００２８】
プログラム生成装置１００は、無線で車載システム３と通信を行う。通信は、例えば、インターネット、携帯電話網、無線LANなどを経由して行われる。なお、図１では、図面を見やすくするため、ルータ、アクセスポイントなどの中継機器は表示していない。
【００２９】
車載システム３は、プログラム生成装置１００からデータを受信し、受信したデータに基づいて、車載システム３に含まれる車載制御装置のプログラムを更新する。なお、その詳細は、図１１〜図１５を用いて後述する。
【００３０】
次に、図２を用いて、ＰＣ１の構成を説明する。図２は、図１に示すＰＣ１の構成図である。
【００３１】
ＰＣ１は、ＣＰＵ（Central Processing Unit）などの演算装置２０１、キーボード及びマウスなどの入力装置２０２、ＬＣＤ（Liquid Crystal Display）などの表示装置２０３、ＮＩＣ(Network Interface Card）などの通信装置２０４、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）などの記憶装置２０５を備える。演算装置２０１、入力装置２０２、表示装置２０３、通信装置２０４は、バスに接続されている。
【００３２】
記憶装置２０５は、車載システム３に含まれる車載制御装置のフラッシュメモリに記憶されたプログラムと同じ旧プログラム及び旧プログラムを更新した新プログラムを記憶している。旧プログラムと新プログラムは、車載制御制御装置のマイコンのフラッシュメモリのブロックに配置されるイメージで表記されている。すなわち、新、旧プログラムは、プログラムの先頭が１２８ｋＢのブロックであり、次に５つの２５６ｋＢのブロックへ連続的に配置されている。
【００３３】
なお、図１に示したサーバ２の構成もＰＣ１の構成と同様である。すなわち、サーバ２は、演算装置２０１Ｓ、入力装置２０２Ｓ、表示装置２０３Ｓ、通信装置２０４Ｓ、記憶装置２０５Ｓを備える。
【００３４】
次に、図３を用いて、車載システム３の構成を説明する。図３は、図１に示す車載システム３の構成図である。
【００３５】
車載システム３は、プログラム書き込み装置３１０（ゲートウェイ）、複数のＥＣＵ３００（３００１〜３００ｎ）を備える。プログラム書き込み装置３１０及びＥＣＵ３００は、相互に車載ネットワークＣＡＮを介して通信する。
【００３６】
プログラム書き込み装置３１０は、認証が成功した場合、車両の外部のネットワークと車両の内部のＣＡＮの間でデータを中継する。
【００３７】
ＥＣＵ３００は、マイコン３０１、ＥＣＵ３００毎の用途に応じた各種のＩＣ（Integrated Circuit）３０４、ＣＡＮトランシーバなどの通信装置３０５を備える。マイコン３０１は、ＳＲＡＭ３０２（揮発性メモリ）、ＦＬＡＳＨメモリ３０３（不揮発性メモリ）を内蔵する。
【００３８】
なお、プログラム書き込み装置３１０の構成もＥＣＵ３００の構成と基本的に同じであるが、車両の外部のネットワークのプロトコルに応じた通信装置をさらに備える。すなわち、プログラム書き込み装置３１０は、マイコン３１１、各種のＩＣ３１４、ＣＡＮトランシーバなどの通信装置３１５、車両の外部のネットワークのプロトコルに応じた通信装置３１６を備える。マイコン３１１は、ＳＲＡＭ３１２、ＦＬＡＳＨメモリ３１３を内蔵する。
【００３９】
次に、図４を用いて、ＥＣＵ３００のＳＲＡＭ３０２の構成を説明する。図４は、図３に示すＳＲＡＭ３０２の内部の構成を示す模式図である。
【００４０】
ＳＲＡＭ３０２は、データを一時的に記憶するための第１の領域３０２ａ、第１の領域３０２ａに記憶されたデータを復元するための第２の領域３０２ｂを備える。
【００４１】
本実施形態では、一例として、ＳＲＡＭ３０２のサイズは４８ｋＢであり、第１の領域３０２ａのサイズは２５６Ｂであり、第２の領域３０２ｂのサイズは４ｋＢである。
【００４２】
次に、図５を用いて、ＦＬＡＳＨメモリ３０３の構成を説明する。図５は、図３に示すＦＬＡＳＨメモリ３０３の内部の構成を示す模式図である。
【００４３】
ＦＬＡＳＨメモリ３０３は、複数のサイズのブロックから構成される。本実施形態では、一例として、ＦＬＡＳＨメモリ３０３のサイズは１．５ＭＢである。ＦＬＡＳＨメモリ３０３は、１２８ｋＢ、２５６ｋＢの２種類のブロックから構成される。ここで、ブロックとは、データを消去する最小単位である。例えば、１２８ｋＢのブロックに４ｋＢのデータを書き込む場合、１２８ｋＢのデータを消去してから４ｋＢのデータを書き込む。
【００４４】
図５に示すように、ＦＬＡＳＨメモリ３０３では、先頭の１２８ｋＢのブロックにはプログラム書込み装置３１０と通信を行う通信ソフトと受信データが差分データまたは圧縮データまたは全更新データのいずれかを識別して復元ソフトを起動する復元制御ソフトと復元ソフトで構成された復元回復ソフトが配置されている。次の１２８ｋＢ、２５６ｋＢ、２５６ｋＢ、２５６ｋＢ、２５６ｋＢ、２５６ｋＢのブロックには、旧プログラムが記憶されている。
【００４５】
前記通信ソフトは、プログラム書込み装置３１０から受信した受信データをＳＲＡＭ３０２の第１の領域３０２ａに一時的に記憶し、復元制御ソフトは、そのデータの種類が差分データであれば、復元ソフトを起動して第１の領域３０２aのデータと既にＦＬＡＳＨメモリ３０３に存在する旧プログラムからＳＲＡＭ３０２の第２の領域３０２ｂに新プログラムを復元したり、圧縮データであれば第１の領域３０２aの圧縮データを伸長してＳＲＡＭ３０２の第２の領域３０２ｂへ新プログラムを復元した後に、前記一時ブロックへ書込みを行う処理などを行う。車載制御装置の復元処理の詳しい説明は、後で図を使用して詳しく説明する。
【００４６】
次に、プログラム生成装置１００のＰＣ１で行う更新対象ブロックの差分データ生成、圧縮データ生成の基本概念を図６を用いて説明する。
【００４７】
まず、図６は、旧プログラムと新プログラムをフラッシュメモリのブロック＃１からブロック＃６に配置した図である。ブロック＃１が上位アドレスのブロックであり、ブロック＃６が下位アドレスのブロックである。旧プログラムは、ブロック＃１にはＡ、ブロック＃２にはＢ，ブロック＃３にはＣ，ブロック＃４にはＤ，ブロック＃５にはＥ，ブロック＃６にはＦというプログラムが配置されている。一方、新プログラムは、ブロック＃２にＺというプログラムが追加されている。このため、ブロック＃１にはＡ，ブロック＃２にはＺ，ブロック＃３にはＢ，ブロック＃４にはＣ，ブロック＃５にはＤ，ブロック＃６にはＥというプログラムが配置されている。このように新プログラムは、Ｚというプログラムが追加されたことによりＢ〜Ｅのプログラムが１つ後ろの下位アドレスのブロックへ移動している。ここで、一時ブロックを６−０で示す最後のブロック＃６として考えてみよう。
【００４８】
まず更新対象ブロックは、下位アドレスのブロックから上位アドレスのブロックの順序で選択する。６−１で示すブロック＃５を最初の更新対象ブロックとする。旧プログラムは更新対象ブロックを含む複数の上位アドレスのブロックを選択する。この結果、旧ブログラムはブロック＃１〜＃５のプログラム、Ｅ，Ｄ，Ｃ，Ｂ，Ａとなる。ブロック＃５の差分データ生成は、ブロック＃５の新プログラムＤと、ブロック＃１〜５の旧プログラムＥ，Ｄ，Ｃ，Ｂ，Ａを入力として行う。明らかに、新プログラムＤは旧プログラムＤと類似しているので、差分データを生成する符合化ソフトは、旧プログラムＤを類似部分列とすることで、前述したコピーコマンドに変換可能である。このように符合化することで、小さなサイズの差分データを生成できる。もし同一ブロック間で差分データを生成すると、旧プログラムはＥなのでＤほどの類似性は無いことは明らかである。
【００４９】
次に６−２で更新対象ブロック＃４を選択する。新プログラムＣに対して旧プログラムはＤ，Ｃ，Ｂ，Ａとなる。同様に旧プログラムにはＣが含まれているのでＣを類似部分列とすることで、コピーコマンドへ変換できる。このように符合化することで小さな差分データを生成できる。次に６−３で更新対象ブロックは＃３を選択する。新プログラムＢに対して旧プログラムはＣ，Ｂ，Ａなので、同様に旧プログラムにＢが含まれているので小さな差分データを生成できる。次に６−４で更新対象ブロックは＃２を選択する。新プログラムＺに対して旧プログラムはＢ，Ａである。残念ながら追加されたプログラムＺは旧プログラムとの類似性は不明である。差分データは必ずしも小さくならない。次に６−５で先頭の更新対象ブロック＃１を選択する。新プログラムＡに対して旧プログラムもＡである。差分データを小さくできる。
【００５０】
最後に６−０の一時ブロックを更新対象ブロック＃６として選択する。前述したように、一時ブロックの旧プログラムは書換えられてしまっている。このため差分更新はできないので、新プログラムＥを圧縮して圧縮データを生成する。
【００５１】
以上で、更新対象ブロックの差分データ生成、圧縮データ生成の基本概念を詳しく説明した。ここで６−１，６−２，６−３，６−４，６−５における旧プログラムは、更新対象ブロックとその上位アドレスの複数のブロックに配置されているプログラムを選択したが、その理由は、前記説明したように、後ろの下位アドレスのブロックを優先的に更新対象ブロックにしているので、更新対象ブロックの下位アドレスのブロックは、既に新プログラムになっており、旧プログラムではないからである。差分データは新プログラムと旧プログラムから生成するものであるという概念を重要視した結果である。
【００５２】
もちろん更新対象ブロックの新プログラムに対して、旧プログラムの選択を旧プログラムと新プログラムの組合せにしても良い。例えば、更新対象ブロックとして＃４を選択した場合に、新プログラムＣに対するプログラムをブロック＃５の新プログラムＤと、ブロック＃１〜＃４の旧プログラムＤ，Ｃ，Ｂ，Ａを用いて差分データを生成できる。このようにすれば、さらに広い範囲のプログラムの中から類似部分列を検索できるので差分デー
タのサイズをさらに小さくできる可能性がある。しかし差分データを生成する符合化ソフトは旧プログラムと新プログラムを混在して差分データを生成しなければならず、処理が複雑になるおそれがある。
【００５３】
以上述べた更新対象ブロックの差分データ生成、圧縮データ生成の基本概念に基づき、実施例を説明する。
【００５４】
図７は、プログラム生成装置１００のＰＣ１で実行する符合化制御ソフトのフローチャートである。図８は、符合化制御ソフトから呼び出されて更新対象ブロックの差分データや圧縮データを生成する符合化ソフトのフローチャートである。また図９は、ＰＣ１からサーバ２へデータ送信する通信ソフトのフローチャートである。図１０は、ＰＣ１からデータを受信し、プログラム書込み装置３１０へデータを送信するサーバ２の通信ソフトのフローチャートである。図１１はサーバ２からデータを受信し、プログラム書込み装置３１０へデータを送信する通信ソフトのフローチャートである。図１２はプログラム書込み装置３１０と車載制御装置３００の通信フレーム構成図である。３種のコマンドが定義されている。図１３は、車載制御装置３００の復元回復ソフトの動作を示すフローチャートである。復元回復ソフトは、通信ソフト、復元制御ソフトと復元ソフトで構成されている。図１４は、復元制御ソフトの動作を示すフローチャートである。図１５は、復元ソフトのフローチャートである。
【００５５】
以上の図を用いて、実施例を詳しく説明する。
【００５６】
図７は、ＰＣ１で実行される符合化制御ソフト７００のフローチャートである。入力は、マイコンの各ブロックのサイズに分割した旧プログラムOLD(n), n=1〜Ｎ７２０と、新プログラムNEW(n), n=1〜N７２５、一時ブロックを一意に特定できるブロック番号K７１５と、差分データ生成を指示する種別指示情報ＩＮＳＴ７１０である。本実施例では、種別指示情報ＩＮＳＴ７１０は、差分データ生成指示だけであるが、全てのブロックに対して圧縮データを生成する指示ヘ拡張することも可能である。処理内容は、更新対象ブロックの選択、符合化ソフトへ差分または圧縮の指示、更新対象ブロック毎に符合化ソフトを起動して差分データまたは圧縮データの生成を行うことである。
【００５７】
符合化制御ソフト７００は、最初に７３０でＩＮＳＴが差分データ生成を指示しているか判定する。このＩＮＳＴは、符合化制御ソフト７００の使用者が指示するパラメータである。ＹＥＳであれば７３０を経由して７３５において変数iへ初期値Ｎを設定する。変数iは更新対象ブロック番号である。またＮは最後のブロック番号である。次に７４０で変数iが一時ブロック番号Ｋであるかチェックし、NOならば７４５で変数Genへ差分を設定し、７５０で変数OldBへ更新対象ブロックと複数のブロックOLD(j), j=1〜iの旧ブロクラムを設定し、７５５で変数NewBへ更新対象ブロックiの新プログラムNEW(i)を設定する。そして７６０で符合化ソフトを起動している。
【００５８】
符合化ソフトは、図８に示すように、種別指示Gen, 旧プログラムOldB, 新プログラムNesBを入力として差分データ生成を行い、差分データは変数DIFFへ格納され、さらに差分データサイズは変数DIFFSIZEに格納される。詳細な説明は、図８で後述する。ここで重要なことは、更新対象ブロックiの新プログラムに対する旧プログラムとして、更新対象ブロックiに加えて複数のブロック1〜 (i-1)の旧プログラムが符合化ソフトの入力になっている点である。
【００５９】
次に符合化ソフトの実行が完了すると７６５で変数Diff(i)へ差分データDIFFが格納され、７６６で変数DiffSize(i)へ差分データサイズDIFFSIZEが格納される。このように、更新対象ブロックiの差分データはDiff(i),差分データサイズはDiffSize(i)へ格納される。次に７７０で変数iをデクリメントして次の更新対象ブロックを選択する。７７５で、もしi=0ならば全ての更新対象ブロックの符合化が完了し、0で無いならば完了していないので７８０を経由して再び７４０を繰返し実行する。７４０は更新対象ブロックiが一時ブロックKであるかチェックしている。YESであれば７８５で変数Genへ圧縮データ生成指示を設定する。７８６では変数NewBへ一時ブロックKの新プログラムNew(K)を格納し、７８７で符合化ソフトを起動する。
【００６０】
符合化ソフトは、図８に示すように、種別指示Gen, 新プログラムNesBを入力として圧縮データ生成を行う。圧縮データは変数DIFFへ格納され、さらに圧縮データサイズは変数DIFFSIZEに格納される。詳細な説明は、図８で後述する。次に符合化ソフトの実行が完了すると７８８で変数Diff(i)へ圧縮データDIFFが格納され、７８９で変数DiffSize(i)へ圧縮データサイズDIFFSIZEが格納される。このように、更新対象ブロックiの差分データはDiff(i),差分データサイズはDiffSize(i)へ格納される。以上述べたように、変数Diff(i), i=1〜Nへ差分データまたは圧縮データが格納され、変数DiffSize(i), i=1〜Nへ差分データサイズまたは圧縮データサイズが格納された。また圧縮データはi=Kの場合であることがわかる。
【００６１】
次に図８を用いて、符合化ソフト８００のフローチャートを説明する。
【００６２】
入力は、種別指示Gen８１０、更新対象ブロックを含む複数ブロックの旧プログラムOldB８２０と更新対象ブロックの新プログラム８３０である。符合化ソフト８００は、まず８４０で種別指示Genが差分か判定する。YESであれば以下差分データ生成を行う。８５０で差分生成部は、入力であるOldB８２０とNewB８３０を用いて新プログラムと旧プログラムの類似部分列を検索して、新プログラムの部分列をコピーコマンドに符号化する。コピーコマンドは、旧プログラムの類似部分列のアドレスとサイズを含めて符合化しておけば、復号化可能である。もし新プログラムの部分列と類似した部分列が旧プログラムに存在しない場合は、新プログラムのその部分列を追加コマンドに加えて符合化する。
【００６３】
このように差分生成部８５０は、コピーコマンドと追加コマンドを用いて符合化したが、他の差分生成方法を用いて符合化しても良い。例えば、新プログラムの部分列に類似した旧プログラムの部分列が存在した場合、新プログラムの部分列から旧プログラムの部分列をビット単位で引き算して減算部分列を生成し、減算部分列と減算コマンドのペアを符合化データとしても良い。
【００６４】
また新プログラムの部分列が旧プログラムのいかなる部分列にも類似していない場合には、新プログラムの部分列と新規コマンドのペアを符合化データとして符号化する。このように符合化した符合化データを８５５を経由して圧縮部８６０へ入力する。圧縮部８６０では符合化データをさらに小さなサイズの差分データへ符号化し、８７０で差分データを変数ＤＩＦＦへ格納する。ここで圧縮部８６０は、可逆性のある圧縮アルゴリズムであればどのようなものでも良い。例えばZIPでもLZ77のようなスライディングウィンドウを使用した辞書式アルゴリズムでも良い。圧縮アルゴリズムは、同じ数値が連続している部分列は効率良く圧縮できるので、前述した減算部分列は非常に小さくできる。結果として差分データを小さなサイズにできる。最後に８８０で差分データのサイズを変数DIFFSIZEへ格納して終了する。
【００６５】
一方、８４０でNOであれば、８４５を経由して圧縮部８６０を実行する。８３５を経由して新プログラムNewBを入力して圧縮を行い、圧縮データを生成する。次に８６５を経由して８７０で変数DIFFへ圧縮データを格納する。次に８８０で変数DIFFSIZEへ圧縮データサイズを格納して終了する。
【００６６】
図９は、ＰＣ１がサーバ２へ差分データを送信するフローチャートである。通信ソフト９００は、９１０でＰＣ１で生成した差分データDiff(i), 1〜Nと、差分データサイズDiffSize(i), 1〜Nと一時ブロックNoを送信する。
【００６７】
図１０は、サーバ２がＰＣ１から差分データを受信し、プログラム書込み装置３１０へデータを送信する通信ソフト１０００のフローチャートである。
【００６８】
１０１０でＰＣ１から差分データを受信し、１０２０でデータを記録し、１０３０で差分データをプログラム書込み装置３１０へ送信している。
【００６９】
図１１は、プログラム書込み装置３１０がサーバ２から差分データを受信し、車内ネットワークを介して車載制御装置３００へ差分データを送信する通信ソフト１１００のフローチャートである。１１１０でサーバ２から差分データを受信し、１１２０でデータを記録する。次に１１３０で車両の状態に応じてソフトウェア更新が可能か判定する。つまり、車両が停止状態で鉛バッテリの消費が少ない状態にあり、かつ鉛バッテリの蓄電容量が十分にある状態であるか判定する。ＹＥＳであれば１１４０でフレームを生成して、１１５０で差分データを車載制御装置３００へ送信する。１１３０でNOならば、車両がソフトウェア更新可能な状態になるまで待つ。
【００７０】
ここで１１５０の差分データの送信について、図１２を用いて詳しく説明する。
【００７１】
図１２は、差分データを車載制御装置３００へ送信する場合のフレームの種類を示している。フレームには図１２に示す３種の形式がある。
【００７２】
（a）は更新対象ブロックの情報を車載制御装置３００へ通知するフレームである。コマンドf1はダウンロードコマンドであり、種類f2は送信データが差分データまたは圧縮データまたは新プログラムそのもののいづれであるかを示す。サイズf3は送信データのサイズを示す。種類f2のデータのサイズである。ブロックアドレスf4は更新対象ブロックの先頭アドレスを示す。
【００７３】
次に（b）はデータを車載制御装置３００へ送信するフレームである。コマンドf1は転送データコマンドであり、カウンタf5は転送データフレームの送信回数を示すカウンタである。送信する度にカウンをインクリメントする。ブロックデータf6は送信するデータである。転送データフレームは、前記ダウンロードフレームのサイズf3で指定されたサイズのデータを送信するために用いるフレームであるが、車載制御装置３００の受信バッファのサイズ以上のデータを連続して送ることはできない。このため一定サイズのデータを複数回に分割して連続送信した後、必ず車載制御装置３００からのレスポンスを待ってから次の一定サイズのデータを送信するものとする。ここでは受信バッファである第１の領域302aのサイズが256Bなので６バイト毎に分割して256Bのデータを送信する。さらに256B単位の送信を繰返すことによってサイズf3のデータを送信する。
【００７４】
最後に（c）はダウンロード終了コマンドである。コマンドf1はダウンロード終了を示す。すなわちダウンロードコマンドのサイズf3のデータを送信完了した場合に車載制御装置３００へ送信する。
【００７５】
以上、プログラム書込み装置３１０と車載制御装置３００のフレームを説明したが、通信の詳細を説明する前に、車載制御装置３００の復元回復ソフトの全体動作を図１３を用いて説明する。
【００７６】
更新対象ブロックの差分データは、第Ｎ番目のブロックの差分データDiff(N)から第１番目のブロックの差分データDiff(1)の順序で車載制御装置３００へ送信される。プログラム書込み装置３１０から、最初に第Ｎ番目の更新対象ブロックの差分データDiff(N)を車載制御装置３００へ送信する。
【００７７】
車載制御装置３００の復元回復ソフト１３００は、差分データDiff(N)を受信すると、１３１０で復元制御ソフトを実行し、復元ソフトで復元された新プログラムを第Ｎブロックへ書込む。書込み完了すると応答をプログラム書込み装置３１０へ返す。同様に、第Ｎ−１番目の更新対象ブロックの差分データDiff(N-1)を車載制御装置３００へ送信する。
【００７８】
車載制御装置３００の復元回復ソフト１３００は、差分データDiff(N-1)を受信すると、１３２０で復元制御ソフトを実行し、復元ソフトで復元された新プログラムを第Ｎ−１ブロックへ書込む。書込み完了すると応答をプログラム書込み装置３１０へ返す。同様に第１番目の更新対象ブロックの差分データDiff(1)を車載制御装置３００へ送信する。
【００７９】
車載制御装置３００の復元回復ソフト１３００は、差分データDiff(1)を受信すると、１３３０で復元制御ソフトを実行し、復元ソフトで復元された新プログラムを第１ブロックへ書込む。書込み完了すると応答をプログラム書込み装置３１０へ返す。最後に一時ブロックの圧縮データDiff(K)を車載制御装置３００へ送信する。
【００８０】
車載制御装置３００の復元回復ソフト１３００は、圧縮データDiff(K)を受信すると、１３３０で復元制御ソフトを実行し、復元ソフトで復元された新プログラムを一時ブロックである第Kブロックへ書込む。書込み完了すると応答をプログラム書込み装置３１０へ返す。以上の復元回復ソフト１３００の動作で新プログラムへ更新することができる。
【００８１】
図１４は、復元制御ソフト１４００のフローチャートである。１つの更新対象ブロックにおける詳細な動作を説明する。
【００８２】
最初に、プログラム書込み装置３１０から第i番目のブロックのデータDiff(i)の種類f2と更新対象ブロックのブロックアドレスf4とデータのサイズf3をダウンロードフレームで車載制御装置３００へ送信する。ここでダウンロードフレームの種類f2は、一時ブロックであれば圧縮、その他のブロックであれば差分である。サイズf3はデータのサイズDiffSize(i)である。またブロックアドレスf4は第i番目ブロックの先頭アドレスである。
【００８３】
車載制御装置３００の復元制御ソフト１４００は、１４１０でダウンロードフレームの種類f1を記録する。さらに更新対象ブロックの先頭アドレスを示すブロックアドレスf4, データのサイズf3も記録する。次に予め決めておいた一時ブロックを消去する。消去が完了した後にプログラム書込み装置３１０へ応答を返す。次にプログラム書込み装置３１０は転送データフレームを送信する。まずカウンタf5はインクリメントして設定し、ブロックデータf6にはDiff(i)の256バイトのデータを設定して分割送信する。
【００８４】
車載制御装置３００の復元制御ソフト１４００は、１４１１で第１の領域302aに２５６Ｂのデータを受信すると、既に記録しておいた種類f1を復元ソフトへ入力し、復元ソフトを起動する。復元ソフトは、種類f1に応じて新プログラムを第２の領域302bに生成する。復元制御ソフト１４００は、生成された新プログラムを一時ブロックへ書込む。書込み完了すると応答をプログラム書込み装置３１０へ返送する。復元制御ソフト１４００は、転送データフレームにより２５６Ｂ受信する度に復元して新プログラムを一時ブロックへ書込む処理を１４１２、１４１３で繰返す。プログラム書込み装置３１０は、更新対象ブロックの差分データまたは圧縮データを送信完了すると、ダウンロード終了フレームを送信する。
【００８５】
車載制御装置３００は、ダウンロード終了フレームを受信すると、既に記録しておいた更新対象ブロックのブロックアドレスf4から更新対象ブロックを特定し、消去する。次に一時ブロックの新プログラムを更新対象ブロックへコピーする。コピー完了後にプログラム書込み装置３１０へ応答を返して処理を終了する。以上で更新対象ブロックへ新プログラムを書込み完了できた。
【００８６】
次に図１５を用いて、復元ソフト１５００のフローチャートを説明する。
【００８７】
入力は、１５１０の受信データの種類f2、１５１５の第１の領域302aの受信データ２５６Ｂ、１５２０の第２の領域302b、１５２５のフラッシュメモリの第１〜第iブロックの旧プログラムである。１５２５の第１〜第iブロックの旧プログラムは、図６に示した旧プログラムの範囲を示している。
【００８８】
復元ソフト１５００は、大まかに解凍部１５３０と差分復元部１５４５の２つの部分で構成される。入力１５１５の受信データ２５６Ｂは圧縮データまたは差分データであるが、共に圧縮されているので、まず１５３０の解凍部で解凍する。その結果１５３５の解凍データが生成される。ここで解凍部の解凍ソフトウェアは図８の圧縮部８６０と対を成すソフトウェアである。しかし圧縮部８６０と解凍部１５３０は、可逆性のある圧縮、解凍ソフトであれば何でも良く制限は無い。例えばＺＩＰでもいいし、スライディング辞書式のＬＺ７７でも良い。
【００８９】
次に１５４０で受信データの種類f2が差分か圧縮か判定し、もし差分であれば１５３５の解凍データと１５２５の第１〜第iブロックの旧プログラムを用いて１５４５の差分復元部で１５５０の復元プログラムを復元する。詳しく説明すると、解凍データ１５３５はコピーコマンドと追加コマンドと新規部分列で構成されている場合を考える。１５４５の差分復元部は、コピーコマンドであれば１５２５の旧プログラムからコピーして１５５０の復元プログラムを生成する。一方追加コマンドであれば新規部分列を１５５０の復元プログラムを生成する。この操作を繰返すことで新プログラムを復元できる。
【００９０】
また解凍データ１５３５が減算コマンドと減算部分列のペアや新プログラムの部分列と新規コマンドのペアで構成されている場合を考える。減算コマンドは新プログラムの部分列と旧プログラムの類似部分列の差分である。このため差分復元部１５４５は減算部分列と１５２５の旧プログラムの指定された部分列を加算して１５５０の復元プログラムへ生成する。
【００９１】
また新規コマンドであれば新規コマンドのペアである部分列を１５５０の復元プログラムへ生成する。このように、１５４５の差分復元部は、新プログラムを復元して１５５０の復元プログラムを生成できる。次に１５５０の復元プログラムを第２領域３０２aへ格納する。
【００９２】
次に１５４０で種類f2が圧縮の場合の処理を説明する。種類f2が圧縮であれば、１５３５の解凍データは新プログラム自身である。このため１５６０で解凍データ１５６０を第２の領域３０２bへ格納して処理を終了する。
【００９３】
このように、復元ソフト１５００は種類f2に応じて、圧縮または差分を識別して新プログラムを復元できるので、図１３の１３１０〜１３３０の差分データから新プログラムを復元し、１３４０の圧縮データから新プログラムを復元することができる。
【００９４】
以上で、少ないＲＡＭ使用量で、かつ大きなブロックで構成されたブラッシュメモリを内蔵したマイコンを使用した車載制御装置において、差分リプログラミングの復元処理を可能とし、かつ、大きな変更が加えられた新プログラムであっても、差分データのサイズを小さくすることによって、短時間で新プログラムを復元することができる実施例を説明した。
【００９５】
次に本実施例で詳細に説明した復元回復ソフトを用いて、既に出荷済みの車載制御装置のリプログラミングを短時間で完了する実施例を説明する。
【００９６】
まず、既に出荷済みの車載制御装置とは、図１６の(a)既存ＥＣＵ構成のフラッシュメモリ構成のＥＣＵである。すなわちブート部と旧プログラムで構成され、ブート部には差分更新ソフトは実装されておらず、全文データによる更新ソフトが実装されている。このような既存ＥＣＵを差分による高速更新を実現する手段を提供することを目的とする。
【００９７】
差分データによる更新を実現するには、当然差分データを復元する復元回復ソフトを車載制御装置にダウンロードし、かつ実行する必要がある。図１６を用いてその概念と手順を説明する。
【００９８】
まず（a）既存ＥＣＵ構成は、既に説明したように、ブート部と旧プログラムで構成され、ブート部には初期化処理や従来の全文データによる更新ソフトが実装されている。また初期化処理で異常があればブート部の全文データによる更新ソフトを実行し、異常がなければアプリケーションを実行する制御を行っている。
【００９９】
（b）復元回復ソフトダウンロードは、フラッシュメモリの１２８ｋＢのブロックへ復元回復ソフトをプログラム書込み装置からダウンロードし、書込んだ状態を示している。このように、予め定めたブロックへ復元回復ソフトをダウンロードしている。
【０１００】
次に（c）差分更新は、復元回復ソフトを起動して、残りの全てのブロックを既に実施例で説明した手順で差分更新により新プログラムへ書き換える。
【０１０１】
最後に、（d）復元回復ソフト部更新では、残された１２８ｋＢのブロックの復元回復ソフトを新プログラムへ書き換える。このような手順で全文データによる更新と差分データによる差分更新を組み合わせることによって、リプログラミングの時間短縮を図る。
【０１０２】
このような手順を実現する詳細な動作を図１７を用いて説明する。１７００は既存ＥＣＵ差分更新の手順である。本実施例では第２ブロックへ復元回復ソフトを書込むものとする。
【０１０３】
プログラム書込み装置３１０から車載制御装置３００へ（ｂ）復元回復ソフトを第２ブロックへダウンロードする。このダウンロードはブート部の全文データ更新ソフトによって実現される。車載制御装置３００は１７１０で受信した復元回復ソフト（復元制御ソフト、復元ソフト）を第２ブロックへ書込む。書込み完了すると応答をプログラム書込み装置３１０へ返す。
【０１０４】
次にプログラム書込み装置３１０は車載制御装置３００へＥＣＵリセット要求する。１７２０で車載制御装置はＥＣＵリセットを実行し、ブート部の初期化処理を実行後、異常が無ければ第２ブロックの復元制御ソフトを起動し、応答を返す。
【０１０５】
次にプログラム書込み装置３１０は（ｃ）第Ｎ〜第３ブロックの符合化データ（差分データまたは圧縮データ）を車載制御装置３００へ送信し、車載制御装置３００は１７３０で符合化データDiff(N)〜Diff(3)を受信する毎に復元制御ソフトと復元ソフトを実行し、差分データや圧縮データを用いて新プログラムを復元して、第Ｎブロックから第３ブロックへ新プログラムを書込み、診断異常コードを設定して応答を返す。
【０１０６】
次にプログラム書込み装置３１０はＥＣＵリセットを要求する。車載制御装置は１７４０でＥＣＵリセットを実行してブート部の初期化処理を実行し、診断異常によりブート部の全文データ更新ソフトを起動し、応答を返す。
【０１０７】
次にプログラム書込み装置３１０は（ｄ）第２ブロックの新プログラムをダウンロードする。車載制御装置３００は１７５０で第２ブロックの新プログラムを受信し、新プログラムを第２ブロックへ書込む。
【０１０８】
以上で、旧プログラムは、新プログラムへ書き換えられた。
【０１０９】
本実施例では、ＥＣＵリセット後にアプリケーションとして復元制御ソフトを起動したり、ブート部の全文データ更新ソフトを起動する制御に診断異常コードを設定することで制御したが、モードによる設定でも可能である。すなわちリプロモード時はブート部の全文データ更新ソフトを起動し、通常モード時は復元制御ソフトを起動するが可能となる。どのような方法で切り替えても良い。
【０１１０】
このように、本実施例の既存ＥＣＵ更新手順は、３つのフェーズで構成されていることがわかる。第１フェーズは全文データ更新による復元回復ソフトのダウンロード。第２フェーズは復元回復ソフト実行による差分更新。第３フェーズは全文データ更新による復元回復ソフト部の新プログラム書込みである。
【０１１１】
第１８図は、予め復元ソフトをフラッシュメモリに格納したＥＣＵであっても復元ソフトに不良があり、更新することを目的としたフローチャートである。従って、ＥＣＵには予め決められた復元ソフトと復元制御ソフトを格納するフラッシュメモリのブロックが存在する。図１８では、まず復元ソフトをダウンロードして、復元ソフトを第２ブロックへ書込む処理１８１０を行う。次にＥＣＵリセットをして復元制御ソフトを実行する１８２０。次に第Ｎ〜第３ブロックの符合化データDiff（Ｎ）〜Diff（３）をダウンロードし、１８３０では符合化データDiff(N)〜Diff(3)を受信する毎に復元制御ソフトとダウンロードした復元ソフトを実行し、差分データや圧縮データを用いて新プログラムを復元して、第Ｎブロックから第３ブロックへ新プログラムを書込み、診断異常コードを設定して応答を返す。
【０１１２】
このように復元ソフトと符合化データを連続して更新するフローチャートであるが、当然、復元ソフトだけを更新することも可能である。
【０１１３】
纏めると、本実施例に係る車載制御装置は、以下のように述べることができる。
【０１１４】
更新ツールから提供される更新内容に基づいてプログラムを更新可能な車載制御装置であって、前記プログラムを格納する複数のブロックを備える第１のメモリと、第２のメモリとを備え、
前記プログラムの更新の際、前記プログラムと前記更新プログラムとの差分データを前記第２のメモリに格納し、
前記差分データと更新前の旧プログラムとを用いて、前記複数のブロックの中の更新対象ブロック用の更新プログラムを、前記更新対象ブロックとは異なる他のブロックに再現し、
前記他のブロックに再現された更新プログラムを前記更新対象ブロックに書き込む、車載制御装置。
【０１１５】
また、上記処理は、システムの観点からは、以下のように述べることができる。
【０１１６】
車載制御装置に実装されるプログラムを更新ツールから提供される更新内容に基づいてプログラムを更新するプログラム更新システムであって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える第１のメモリと、第２のメモリとを備え、
前記プログラムの更新の際、前記更新ツールは、前記プログラムと更新プログラムとの差分データを前記車載制御装置へ送信し、
前記車載制御装置は、受信した前記差分データを前記第２のメモリに格納し、前記差分データと更新前の旧プログラムとを用いて、前記複数のブロックの中の更新対象ブロック用の更新プログラムを、前記更新対象ブロックとは異なる他のブロックに再現し、前記他のブロックに再現された更新プログラムを前記更新対象ブロックに書き込む、プログラム更新システム。
【０１１７】
また、上記処理は、方法の観点からは、以下のように述べることができる。
【０１１８】
車載制御装置に実装されるプログラムを更新ツールから提供される更新内容に基づいてプログラムを更新するプログラム更新方法であって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える第１のメモリと、第２のメモリとを備え、
前記更新ツールが、前記プログラムと更新プログラムとの差分データを前記車載制御装置へ送信するステップと、前記車載制御装置が受信した前記差分データを前記第２のメモリに格納するステップと、前記車載制御装置が前記差分データと更新前の旧プログラムとを用いて、前記複数のブロックの中の更新対象ブロック用の更新プログラムを、前記更新対象ブロックとは異なる他のブロックに再現するステップと、前記車載制御装置が前記他のブロックに再現された更新プログラムを前記更新対象ブロックに書き込むステップと、を備えるプログラム更新システム。
【０１１９】
また、上記処理は、差分更新ソフトウェアの観点からは、以下のように述べることができる。
【０１２０】
車載制御装置に実装されるプログラムを更新内容に基づいて更新するように前記車載制御装置に搭載される演算装置を機能させるプログラム更新ソフトウェアであって、
前記車載制御装置には、前記プログラムを格納する複数のブロックを備える第１のメモリと、第２のメモリとが備えられ、
前記プログラムの更新の際、前記プログラムと更新プログラムとの差分データを前記第２のメモリから参照するとともに、更新前の旧プログラムを前記第１のメモリから参照し、前記複数のブロックの中の更新対象ブロック用の更新プログラムを、前記更新対象ブロックとは異なる他のブロックに再現し、前記他のブロックに再現された更新プログラムを前記更新対象ブロックに書き込むように、前記演算装置を機能させる、プログラム更新ソフトウェア。
【０１２１】
以上、詳しく述べたが、再度本実施例の全体に渡って整理すると下記のようになる。まず、本実施例の目的は２つある。１つには、少ないＲＡＭ使用量でかつ複数のブロックで構成された大きなフラッシュメモリを内蔵したマイコンを使用した車載制御装置においても差分リプログラミングの復元処理を実現可能とし、かつ、大きな変更が加えられた新プログラムであっても、差分データのサイズを小さくすることによって、短時間で新プログラムを復元することができるようにすること。
【０１２２】
２つには、差分更新機能を有さない、いわゆる既存の車載制御装置あるいは既存ＥＣＵを、差分更新する手段を提供することである。既存の車載制御装置とは、少なくともマイコンなどの初期化ソフト、プログラム書換え装置と通信を行う通信ソフト、フラッシュ書込みソフト、全文データによる全文更新ソフトを配置したブート部と呼ぶ書換え不可エリアと、プログラムやデータを配置したアプリ部と呼ぶ書換え可能エリアで構成したフラッシュメモリと、ワークエリアとして使用する一時記憶を有する車載制御装置のことである。本実施例は、上記２つの目的を実現する車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェアを提供することにある。
【０１２３】
本実施例の課題を解決するための１つの手段は、プログラムを格納する複数のブロックを備える第１のメモリと、一時的にデータを記憶する第２のメモリとを備え、前記プログラムの更新の際、前記プログラムと更新プログラムとの差分データを前記第２のメモリに格納し、前記格納した差分データと更新前の複数個のブロックの旧プログラムとを用いて、更新対象ブロック用の更新プログラムを、前記更新対象ブロックとは異なる他のブロックに復元・生成してから、前記他のブロックを前記更新対象ブロックへコピーする手段である。このように連続した複数個の旧プログラムを参照して更新対象ブロックの新プログラムを復元・生成することで、差分データサイズを小さくできる点がポイントである。ここで、一時的に他のブロックへ復元・生成してから、更新対象ブロックへコピーすることから、前記他のブロックを一時ブロックと呼ぶことにする。
【０１２４】
本実施例の課題を解決するための２つ目の手段は、差分更新機能を有さない車載制御装置、すなわち既存ＥＣＵを差分更新するために、３つのフェーズで構成した更新手段で解決する。ここで当然ながら差分更新機能を有した復元回復ソフトをダウンロードする必要があるが、単純に差分更新ソフトのみをダウンロードすれば良いというわけでは無い。ダウンロードする復元回復ソフトは、プログラム書込み装置から通信コマンドや差分データを受信する通信機能と、受信した差分データと旧プログラムから新プログラムを復元・生成する復元機能と、通信コマンドの種類を識別して復元機能を起動し復元・生成された新プログラムをアプリ部のブロックへ書込む処理を行う復元制御機能などの機能で構成する。さらにこのような構成の復元回復ソフトをアプリ部の先頭へダウンロードすることがポイントとなる。
【０１２５】
また、既存ＥＣＵは、ブート部と呼ぶ書換え不可エリアとアプリ部と呼ぶ書換え可能エリアで構成されたフラッシュメモリ構成とし、ブート部には全文データによる全文更新ソフトが存在し、アプリ部には更新可能なプログラム、データが配置されているものとする。
【０１２６】
以下に、３つのフェーズで構成した更新手段を説明する。
最初の第１フェーズで既存ＥＣＵへ既存の全文更新ソフトを利用してアプリ部の先頭へ前記復元回復ソフトをダウンロードしてリセットする。第２フェーズで前記復元回復ソフトをアプリケーションソフトとして起動して、差分更新により差分データと旧プログラムから新プログラムを復元・生成してアプリ部のブロックを更新してリセットする。第３フェーズで既存の全文更新ソフトを利用して前記アプリ部の先頭へ新プログラムをダウンロードする。以上で課題を解決するための基本概念を説明したが、以下にさらに詳細に説明する。
【０１２７】
最初の第１フェーズでアプリ部の先頭へ復元回復ソフトをダウンロードしてリセットを行う。第２フェーズでは、リセット直後に、まずブート部が実行される。その実行後にアプリ部の先頭に配置された復元回復ソフトが実行される。復元回復ソフトは更新対象ブロックの差分データを受信してアプリ部の複数個のブロックの旧プログラムを参照して新プログラムを一時ブロックへ復元・生成し、その後に一時ブロックを更新対象ブロックへコピーする。全ての更新対象ブロックに対して上記復元・生成とコピー処理を終了した後にリセットする。最後の第３フェーズでは、ブート部の全文更新ソフトがアプリ部の先頭へ新プログラムを書込む。以上の基本動作でアプリ部の全てのブロックが新プログラムへ書換えられたことになる。
【０１２８】
本実施例の１つ目の手段によれば、大きな変更が加えられた新プログラムであっても、復元時に大きなエリアの旧プログラムを参照できる。結果として差分データサイズを小さくすることができるので車載制御装置の復元ソフトは、高速に新プログラム復元・生成できることになる。さらに、もう１つ大きな効果がある。もし差分更新途中で車載バッテリの容量が無くなり、電源断など思いもよらぬ事象が発生しても、リトライ可能である点である。差分更新中のブロックは前記一時ブロックなので、更新対象ブロックの旧プログラムはそのまま残っている。従ってこの時点で電源断が発生しても、電源復帰後に再度旧プログラムを参照して新プログラムを復元・生成することができる。また、もし一時プロックを更新対象ブロックへコピー中に電源断が発生した場合でも、更新対象ブロックの旧プログラムは途中まで破壊されているが、新プログラムが一時ブロックに残っているので電源回復後に再度新プログラムを更新対象ブロックへ書き込めば良い。このように、一時ブロックへ復元・生成する手段により、差分データを小さくすることが可能となり、かつ電源断などの異常発生した場合でもリトライすれば、復元できるメリットがある。
【０１２９】
本実施例の２つの手段によれば、差分更新機能を有していない車載制御装置を高速に差分更新できるので、車載制御装置の差分更新対象範囲を大幅に拡大できるメリットがある。
前述したように、差分更新機能を有していない車載制御装置、いわゆる既存ＥＣＵの差分更新には、３つのフェーズがある。
【０１３０】
既存ＥＣＵは、ブート部のプログラムが最初に実行される。マイコン内のメモリに異常が無いか、外部の回路に異常が無いかなど診断を行った結果、異常が無い場合にアプリ部のプログラムが実行される。アプリ部のプログラムが実行されている状態で、車載書込み装置は、ブート部の全文更新ソフトを起動できる。すなわち既存ＥＣＵに既に実装されている「全文更新ソフトを起動しろ」コマンド処理は、既存ＥＣＵに既に搭載されているものとする。第１フェーズで全文更新ソフトを利用して「全文更新ソフトを起動しろ」コマンドを受信して復元回復ソフトのダウンロード、リセットを実行する。第２フェーズでは、ブート部実行後にアプリ部のソフト、つまり復元回復ソフトが実行される。復元回復ソフトは、車載書込み装置からのコマンド待ち状態である。この状態では、通常プログラム更新は不可である。なぜなら、復元回復ソフトはアプリ部のフラッシュ上で動作しており、プログラム更新は、そのフラッシュを書換える処理なので、自分で自分自身を書換えることになるからである。そのため、車載書込み装置から「自分で自分自身を書換えろ」という意味の特別なコマンドを受信した場合のみ、フラッシュメモリを書き換えることができるものとする。前述したように、復元回復ソフトは、アプリ部の先頭ブロックまたは隣接した２〜３のブロックの範囲内に配置されていれば、その他のアプリ部の大多数のブロックを差分更新により書き換えることができる。このように復元回復ソフト搭載ブロックを除いて、アプリ部のブロックを差分更新する点がポイントである。第２フェーズの最後にリセットする。
【０１３１】
最後に第３フェーズでは、ブート部が実行された後に、アプリ部の復元回復ソフトが、また実行される。ここで車載書込み装置から「全文更新ソフトを起動しろ」コマンドを受信してブート部の全文更新ソフトを起動する。全文更新ソフトを利用することで、復元回復ソフトが搭載されているブロックを全文更新して新プログラムへ書き換える。
【０１３２】
以上のように、第１、第３フェーズでは、既存ＥＣＵに既に実装されている「全文更新ソフトを起動しろ」コマンドが存在するので、そのコマンドを利用して全文更新すること、第２フェーズでは、復元回復ソフトの一部である通信ソフトが動作しており、この通信ソフトが「自分で自分自身を書き換えろ」コマンドを受信し、差分更新する点がポイントである。このような新しいコマンドを復元回復ソフトは受信できるようにしている。
【０１３３】
次に既に出荷済みの車載制御装置へダウンロードする復元回復ソフトの構成を変更した実施例を示す。
【０１３４】
図１６は、既存ＥＣＵのフラッシュメモリ構成図である。既存ＥＣＵのフラッシュメモリ構成は、既に詳しく述べているが、もう一度説明する。まず、(a)既存ＥＣＵ構成において、フラッシュメモリは、プログラム書換え不可エリアのブート部とプログラム書換え可能エリアのアプリ部で構成されている。ブート部は、メモリ初期化やプログラムが壊れていないかを診断するプログラムや既存ＥＣＵのアプリ部に配置された旧プログラムを全文更新するための全文更新ソフト、プログラム書込み装置からの指示コマンドや全文の新プログラムを受信するための通信ソフト、アプリ部へ新プログラムを書込むためのフラッシュメモリ書込みソフトを有している。次に、(b)復元回復ソフトダウンロードの図において、アプリ部の先頭は第２ブロックである。物理的配置が先頭という意味では無く、ブート部から最初に実行されるアプリ部のプログラムの先頭という意味である。ここでは、第２ブロックの先頭をブート部からアプリへ分岐する先頭とする。すなわち差分回復ソフトをダウンロードする先のブロックは第２ブロックである。ここにダウンロードすればブート部から差分回復ソフトを実行できるからである。
【０１３５】
(c)差分更新の図は、第２ブロックへ復元回復ソフトをダウンロードし、フラッシュメモリのアプリ部へ書き込んだ図である。このように、第２ブロックの旧プログラムは復元回復ソフトで上書きされた状態になる。次にＥＣＵリセット後に復元回復ソフトが起動し、差分データを受信して新プログラムを復元・生成し、他のブロック全てを新プログラムへ書き換えた後の図である。最後の(d)復元回復ソフト部更新の図は、ブート部の全文更新ソフトにより、第２ブロックが新プログラムへ書き換えられた図であり、全てのブロックが新プログラムへ書き換えられたことがわかる。以上の既存ＥＣＵのフラッシュメモリ構成を詳しく述べた。
【０１３６】
次に、図１７を用いて、構成を変更した復元回復ソフトについて説明する。まず、(b)復元回復ソフトの構成は、差分データとフラッシュメモリのアプリ部に配置されている旧プログラムを用いて新プログラムを復元・生成する復元ソフトと、差分更新時にプログラム書換え装置からの通信コマンドや差分指示コマンドなどを受信したり、応答を送信する通信ソフトと、前記復元ソフトを起動して新プログラムを復元・生成し、生成された新プログラムをフラッシュメモリのアプリ部へ書込みを指示する復元制御ソフトと、フラッシュメモリへ新プログラムを書込むフラッシュ書込みソフトの４つで構成する。これまでの復元回復ソフトの構成にフラッシュ書込みソフトを追加した構成である。
【０１３７】
既存ＥＣＵの差分更新は、以下３つのフェーズで実行する。フェーズ１では、既存ＥＣＵはブート部の通信ソフトと全文更新ソフトを用いて、(b)ダウンロードされた復元回復ソフトを受信し、ブート部のフラッシュメモリ書込みソフトを用いて復元回復ソフトを旧プログラムが配置されている第２ブロックへ書込み、リセットを行う。すなわち、旧プログラムを破壊して復元回復ソフトを書込む処理である。
【０１３８】
フェーズ２では、既存ＥＣＵはリセットによってブート部を実行後にアプリ部の第２ブロックへダウンロードした復元回復ソフトを実行する。最初に通信ソフトやフラッシュ書込みソフトなどを初期化し、実行可能状態に設定する。次に復元制御ソフトを実行してプログラム書換え装置からのコマンド待ち状態に設定する。次にプログラム書換え装置から (c)第Ｎブロック〜第３ブロックの差分データ(Diff)を受信すると、復元ソフトを起動して第Ｎブロック〜第３ブロックの差分データと旧プログラムから差分更新して新プログラムを復元・生成し、フラッシュ書込みソフトを用いて第Ｎ〜第３ブロックの新プログラムを第Ｎ〜第３ブロックのフラッシュメモリへ書込む。そしてリセットする。
【０１３９】
フェーズ３は、既存ＥＣＵのブート部の通信ソフトと全文更新ソフトを用いて、プログラム書込み装置から送信される (d)第２ブロックの新プログラムを受信し、ブート部のフラッシュ書込みソフトを用いて第２ブロックの新プログラムを第２ブロックへ書込み、リセットを行う。これで復元回復ソフトによって破壊された第２ブロックを新プログラムヘ書換えたことになる。
【０１４０】
以上、３つのフェーズで構成した既存ＥＣＵの差分更新方法は、全文更新処理が第２ブロックの２回（フェーズ１と３）に限定され、かつ第３〜第Ｎブロックは差分更新できるので高速書換えが期待できる。
【０１４１】
次にフェーズ１〜３の処理をまとめて記載する。フェーズ１は、既存ＥＣＵへ復元回復ソフトをアプリ部の先頭へダウンロードするフェーズである。まずプログラム書換え装置からプログラム更新指示があると、既存ＥＣＵはブート部に配置されている既存の全文更新ソフトを起動する。次にプログラム書換え装置から差分回復ソフトがアプリ部（第２ブロック）へ転送されると、既存ＥＣＵはブート部の既存の全文更新ソフトを用いて受信する。ここで受信した差分回復ソフトの内訳は、差分復元を行う復元ソフト、アプリ部で動作する通信ソフト、復元制御ソフト、フラッシュ書込みソフトの４つである。次にブート部の既存フラッシュメモリ書込みソフトを用いて差分回復ソフトをアプリ部の第２ブロックへ書込む。そしてリセットを行い、フェーズ１を終了する。
【０１４２】
次にフェーズ２を説明する。リセット後に、まずブート部のプログラムを実行する。ブート部の診断処理などが正常であれば、アプリ部の先頭（第２ブロックの先頭）に配置されたプログラム（復元回復ソフト）を実行する。復元回復ソフトの実行順序は、まず通信ソフトの通信部を初期化し、通信ソフトを実行する。次にフラッシュ書込みソフトを初期化し、フラッシュ書込みソフトを実行可能状態にする。次に、復元制御ソフトを実行する。復元制御ソフトの詳細な動作を説明する。まず、プログラム書換え装置から差分データDiff(N)〜Diff(3)をアプリ部の通信ソフトから受信する。次に復元ソフトを実行してDiff(N)〜Diff(3)と第Ｎ〜第３ブロックに配置されている旧プログラムを用いて第Ｎ〜第３ブロックの新プログラムを復元・生成し、第Ｎ〜第３ブロックへアプリ部のフラッシュ書込みソフトを用いて書込む。次にＥＣＵをリセットし、フェーズ２を終了する。
【０１４３】
最後にフェーズ３を説明する。リセット後はフェーズ２同様、ブート部を実行して次に第２ブロックの復元回復ソフトを実行する。プログラム書換え装置からプログラム更新指示があると、既存ＥＣＵはブート部に配置されているブート部の通信ソフトやフラッシュ書込みソフトを初期化し実行し、既存の全文更新ソフトを起動する。次にプログラム書換え装置から送信された第２ブロックの新プログラムをブート部の通信ソフトを用いて受信する。次に、ブート部のフラッシュ書込みソフトを用いて第２ブロックの新プログラムをフラッシュメモリの第２ブロックへ書込む。フェーズ３を終了する。
【０１４４】
以上で、アプリ部の第２〜第Ｎブロックは、全て新プログラムへ書換えられた。ＥＣＵリセットすると、新プログラムが実行可能となる。このように、復元回復ソフトにフラッシュ書込みソフトを追加した構成の実施例を詳しく説明した。
【０１４５】
以上纏めると、本実施例に係る車載制御装置、プログラム更新ソフトウェアは、以下のように述べることができる。
【０１４６】
１．更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新可能な車載制御装置であって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、
前記更新ツールは、更新対象である更新対象ブロックの新プログラムと旧プログラムから生成した差分データを車載制御装置へ送信し、
前記車載制御装置は、前記差分データを第２のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第３の手段と、前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第４の手段を有し、全ての更新対象ブロックを第３と第４の手段を繰返し用いることにより、第１のメモリを新プログラムへ書き換えることを特徴とする車載制御装置。
【０１４７】
２．更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新するように、前記車載制御装置に搭載される演算装置を機能させるプログラム更新ソフトウェアであって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、
前記更新ツールは、更新対象である更新対象ブロックの新プログラムと旧プログラムから生成した差分データを車載制御装置へ送信し、
前記プログラム更新ソフトウェアは、前記差分データを第２のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第３の手段と、前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第４の手段を有し、全ての更新対象ブロックを第３と第４の手段を繰返し用いることにより、第１のメモリを新プログラムへ書き換えることを特徴とするプログラム更新ソフトウェア。
【０１４８】
３．更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新可能な車載制御装置であって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、第１のメモリは書き換え不可エリアと書き換え可能エリアで構成し、書換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアを配置し、書換え可能エリアには更新可能なプログラム及びデータを配置し、
書換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを書込み可能エリアの先頭のブロックへ書込む第１フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書換え可能エリアのブロックヘ書込む第２フェーズと、書換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第３フェーズの３つのフェーズでプログラム更新することを特徴とする車載制御装置。
【０１４９】
４．更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新するように、前記車載制御装置に搭載される演算装置を機能させるプログラム更新ソフトウェアであって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、第１のメモリは書き換え不可エリアと書き換え可能エリアで構成し、書換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアを配置し、書換え可能エリアには更新可能なプログラム及びデータを配置し、
書換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを書込み可能エリアの先頭のブロックへ書込む第１フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書換え可能エリアのブロックヘ書込む第２フェーズと、書換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第３フェーズの３つのフェーズでプログラム更新することを特徴とするプログラム更新ソフトウェア。
【０１５０】
５．更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新可能な車載制御装置であって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、第１のメモリは書き換え不可エリアと書き換え可能エリアで構成し、書換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアを配置し、書換え可能エリアには更新可能なプログラム及びデータを配置し、
書換え不可エリアの全文更新機能を有するソフトウェアは、更新ツールから通信コマンドや差分データを受信する通信機能と、受信した差分データと前記ブロックのプログラムから新プログラムを復元・生成する復元機能と、前記ブロックへ新プログラムを書込むフラッシュ書込み機能と、通信コマンドの種類を識別して前記復元機能により復元・生成された新プログラムを前記ブロックへ書込む処理を行う復元制御機能を有する復元回復ソフトを書換え不可エリアの通信機能により受信すると、前記復元回復ソフトを書換え不可エリアのフラッシュ書込み機能を用いて書換え可能エリアの先頭へ書込み、さらに車載制御装置をリセットして再起動し、
前記更新ツールは、書換え可能エリアの更新対象ブロックの新プログラムと複数のブロックの旧プログラムから生成された差分データを前記再起動後に車載制御装置へ送信し、前記車載制御装置は前記復元回復ソフトを起動して、前記差分データと旧プログラムを用いて新プログラムを復元・生成する第５の手段と、前記新プログラムを前記更新対象ブロックへ書き込む第６の手段を有し、全ての更新対象ブロックに対して第５と第６の手段を繰返し実行することにより前記書換え可能エリアの更新対象ブロックを新プログラムへ更新し、さらに車載制御装置をリセットして再起動し、
書換え不可エリアの全文更新機能を有するソフトウェアは、前記復元回復ソフトが配置された書換え可能エリアの先頭ブロックの新プログラムを書換え不可エリアの通信機能により受信すると、書換え不可エリアのフラッシュ書込み機能を用いて前記先頭ブロックへ書込むことにより、書換え可能エリアを新プログラムへ更新することを特徴とする車載制御装置。
【０１５１】
６．更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新するように、前記車載制御装置に搭載される演算装置を機能させるプログラム更新ソフトウェアであって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、第１のメモリは書き換え不可エリアと書き換え可能エリアで構成し、書換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアを配置し、書換え可能エリアには更新可能なプログラム及びデータを配置し、
書換え不可エリアの全文更新機能を有するソフトウェアは、更新ツールから通信コマンドや差分データを受信する通信機能と、受信した差分データと前記ブロックのプログラムから新プログラムを復元・生成する復元機能と、前記ブロックへ新プログラムを書込むフラッシュ書込み機能と、通信コマンドの種類を識別して前記復元機能により復元・生成された新プログラムを前記ブロックへ書込む処理を行う復元制御機能を有する復元回復ソフトを書換え不可エリアの通信機能により受信すると、前記復元回復ソフトを書換え不可エリアのフラッシュ書込み機能を用いて書換え可能エリアの先頭へ書込み、さらに車載制御装置をリセットして再起動し、
前記更新ツールは、書換え可能エリアの更新対象ブロックの新プログラムと複数のブロックの旧プログラムから生成された差分データを前記再起動後に車載制御装置へ送信し、前記車載制御装置は前記復元回復ソフトを起動して、前記差分データと旧プログラムを用いて新プログラムを復元・生成する第５の手段と、前記新プログラムを前記更新対象ブロックへ書き込む第６の手段を有し、全ての更新対象ブロックに対して第５と第６の手段を繰返し実行することにより前記書換え可能エリアの更新対象ブロックを新プログラムへ更新し、さらに車載制御装置をリセットして再起動し、
書換え不可エリアの全文更新機能を有するソフトウェアは、前記復元回復ソフトが配置された書換え可能エリアの先頭ブロックの新プログラムを書換え不可エリアの通信機能により受信すると、書換え不可エリアのフラッシュ書込み機能を用いて前記先頭ブロックへ書込むことにより、書換え可能エリアを新プログラムへ更新することを特徴とするプログ
【符号の説明】
【０１５２】
１…ＰＣ
２…サーバ
３…車載システム
１００…プログラム生成装置
１０１…演算装置
１０２…入力装置
１０３…表示装置
１０４…通信装置
１０５…記憶装置
２０１…演算装置
２０２…入力装置
２０３…表示装置
２０４…通信装置
２０５…記憶装置
３００…ＥＣＵ（車載制御装置）
３０１…マイコン（演算装置）
３０２…ＳＲＡＭ（揮発性メモリ）
３０２ａ…ＳＲＡＭの第１の領域
３０２ｂ…ＳＲＡＭの第２の領域
３０３…ＦＬＡＳＨメモリ（不揮発性メモリ）
３０４…各種のＩＣ
３０５…通信装置
３１０…ゲートウェイ（プログラム書き込み装置）
３１１…マイコン
３１２…ＳＲＡＭ
３１３…ＦＬＡＳＨメモリ
３１４…各種のＩＣ
３１５…通信装置（ＣＡＮプロトコル）
３１６…通信装置（車両の外部のネットワークのプロトコル）
７００…符合化制御ソフト
７１０…種別指示情報ＩＮＳＴ
７１５…一時ブロック番号K
７２０…旧プログラムOLD(n), n=1〜N
７２５…新プログラムNEW(n), n=1〜N
８００…符合化ソフト
８１０…種別指示Gen
８２０…更新対象ブロックを含む複数ブロックの旧プログラムOldB
８３０…更新対象ブロックの新プログラムNewB
９００…ＰＣの通信ソフト
１０００…サーバの通信ソフト
１１００…プログラム書込み装置の通信ソフト
１３００…復元回復ソフト
１４００…復元制御ソフト
１５００…復元ソフト
【図１】
2017057111.tif 000003
【図２】
2017057111.tif 000004
【図３】
2017057111.tif 000005
【図４】
2017057111.tif 000006
【図５】
2017057111.tif 000007
【図６】
2017057111.tif 000008
【図７】
2017057111.tif 000009
【図８】
2017057111.tif 000010
【図９】
2017057111.tif 000011
【図１０】
2017057111.tif 000012
【図１１】
2017057111.tif 000013
【図１２】
2017057111.tif 000014
【図１３】
2017057111.tif 000015
【図１４】
2017057111.tif 000016
【図１５】
2017057111.tif 000017
【図１６】
2017057111.tif 000018
【図１７】
2017057111.tif 000019
【図１８】
2017057111.tif 000020
【手続補正書】
【提出日】平成30年2月23日(2018.2.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新可能な車載制御装置であって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、
前記更新ツールは、更新対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
前記車載制御装置は、前記差分データを第２のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む、車載制御装置。
【請求項２】
前記車載制御装置は、前記全ての更新対象ブロックの更新が完了した後に、前記更新ツールから送信された前記他のブロックの新プログラムを圧縮した圧縮データを受信して前記第２のメモリへ格納し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込む、請求項１記載の車載制御装置。
【請求項３】
前記更新対象ブロックを含む複数のブロックの旧プログラムは、更新対象ブロックに隣接し、かつ上位アドレスの連続したブロックの旧プログラムである、請求項１記載の車載制御装置。
【請求項４】
前記差分データを前記第２のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第３の手段と、
前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第４の手段と、を有し、
全ての更新対象ブロックを前記第３の手段と前記第４の手段を繰返し用いることにより、前記第１のメモリを前記新プログラムへ書き換える、請求項１記載の車載制御装置。
【請求項５】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第１フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第２フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第３フェーズの３つのフェーズでプログラム更新する、請求項１記載の車載制御装置。
【請求項６】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
前記書き換え不可エリアには更新ソフトウェアが配置され、
前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項１記載の車載制御装置。
【請求項７】
前記復元回復ソフトは、
ａ：更新ツールと通信コマンドを受信するための通信機能と、
ｂ：前記新プログラムを再現する再現機能と、
ｃ：前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
ｄ：前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
を有する、請求項５または請求項６記載の車載制御装置。
【請求項８】
更新ツールから提供される更新内容に基づいて、車載制御装置に格納されている旧プログラムを新プログラムヘ更新可能なプログラム更新システムであって
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、
前記更新ツールは、更新対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
前記車載制御装置は、差分データを前記第２のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む、プログラム更新システム。
【請求項９】
前記差分データを前記第２のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第３の手段と、
前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第４の手段と、を有し、
全ての更新対象ブロックを前記第３の手段と前記第４の手段を繰返し用いることにより、前記第１のメモリを前記新プログラムへ書き換える、請求項８記載のプログラム更新システム。
【請求項１０】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第１フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第２フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第３フェーズの３つのフェーズでプログラム更新する、請求項８記載のプログラム更新システム。
【請求項１１】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
前記書き換え不可エリアには更新ソフトウェアが配置され、
前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項８記載のプログラム更新システム。
【請求項１２】
前記復元回復ソフトは、
ａ：更新ツールと通信コマンドを受信するための通信機能と、
ｂ：前記新プログラムを再現する再現機能と、
ｃ：前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
ｄ：前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
を有する、請求項１０または請求項１１記載のプログラム更新システム。
【請求項１３】
更新ツールから提供される更新内容に基づいて車載制御装置に格納されている旧プログラムを新プログラムヘ更新するように、前記車載制御装置に搭載される演算装置を機能させるプログラム更新ソフトウェアであって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、
前記更新ツールは、更新対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
前記プログラム更新ソフトウェアは、差分データを前記第２のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込むように前記演算装置を機能させる、プログラム更新ソフトウェア。
【請求項１４】
前記全ての更新対象ブロックの更新が完了した後に、前記更新ツールから送信された前記他のブロックの新プログラムを圧縮した圧縮データを受信して前記第２のメモリへ格納し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込むように前記演算装置を機能させる、請求項１３記載のプログラム更新ソフトウェア。
【請求項１５】
前記差分データを前記第２のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第３の手段と、
前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第４の手段と、を有し、
全ての更新対象ブロックを前記第３の手段と前記第４の手段を繰返し用いることにより、前記第１のメモリを前記新プログラムへ書き換える、請求項１３記載のプログラム更新ソフトウェア。
【請求項１６】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第１フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第２フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第３フェーズの３つのフェーズでプログラム更新する、請求項１３記載のプログラム更新ソフトウェア。
【請求項１７】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
前記書き換え不可エリアには更新ソフトウェアが配置され、
前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項１３記載のプログラム更新ソフトウェア。
【請求項１８】
前記復元回復ソフトは、
ａ：更新ツールと通信コマンドを受信するための通信機能と、
ｂ：前記新プログラムを再現する再現機能と、
ｃ：前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
ｄ：前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
を有する、請求項１６または請求項１７記載のプログラム更新ソフトウェア。
【請求項１９】
更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新可能な車載制御装置であって、
前記車載制御装置は、前記プログラムを格納する複数のブロックで構成された不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、さらにプログラムまたはデータを受信すると一時的に第２のメモリへ格納し、その後にプログラムまたはデータを前記不揮発性の第１のメモリへ書込む第３のダウンロード手段を備え、
前記更新ツールは、差分または圧縮による更新手段を有する復元ソフトを車載制御装置へ送信し、次に対象である更新対象ブロックの新プログラムと更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
前記車載制御装置は、前記復元ソフトを受信すると前記第３のダウンロード手段により前記不揮発性の第１のメモリの予め定めたブロックへ書込みを行う第１の手順と、前記復元ソフトを実行して、前記差分データを受信すると差分データを前記第２のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む第２手順で構成されたプログラム更新を行う、車載制御装置。
【請求項２０】
前記車載制御装置は、前記全ての更新対象ブロックの更新が完了した後に、前記更新ツールから送信された前記他のブロックの新プログラムを圧縮した圧縮データを受信して前記第２のメモリへ格納し、前記復元ソフトを実行し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込む、請求項１９記載の車載制御装置。
【請求項２１】
前記差分データを前記第２のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第３の手段と、
前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第４の手段と、を有し、
全ての更新対象ブロックを前記第３の手段と前記第４の手段を繰返し用いることにより、前記第１のメモリを前記新プログラムへ書き換える、請求項１９記載の車載制御装置。
【請求項２２】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第１フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第２フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第３フェーズの３つのフェーズでプログラム更新する、請求項１９記載の車載制御装置。
【請求項２３】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
前記書き換え不可エリアには更新ソフトウェアが配置され、
前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項１９記載の車載制御装置。
【請求項２４】
前記復元回復ソフトは、
ａ：更新ツールと通信コマンドを受信するための通信機能と、
ｂ：前記新プログラムを再現する再現機能と、
ｃ：前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
ｄ：前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
を有する、請求項２２または請求項２３記載の車載制御装置。
【請求項２５】
更新ツールから提供される更新内容に基づいて車載制御装置に格納されている旧プログラムを新プログラムヘ更新するように、前記車載制御装置に搭載される演算装置を機能させるプログラム更新ソフトウェアであって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリと、プログラムまたはデータを受信すると一時的に第２のメモリへ格納し、その後に前記プログラムまたはデータを前記不揮発性の第１のメモリへ書込むダウンロード手段とを備え、
前記更新ツールは、差分または圧縮による更新手段を有する復元ソフトを車載制御装置へ送信し、次に対象である更新対象ブロックの新プログラムと、更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
前記プログラム更新ソフトウェアは、前記復元ソフトを受信すると前記ダウンロード手段により前記不揮発性の第１のメモリの予め定めたブロックへ書込みを行う第１の手順と、前記復元ソフトを実行して、前記差分データを受信すると差分データを前記第２のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む第２の手順とを実行するように前記演算装置を機能させる、プログラム更新ソフトウェア。
【請求項２６】
前記全ての更新対象ブロックの更新が完了した後に、前記更新ツールから送信された前記他のブロックの新プログラムを圧縮した圧縮データを受信して前記第２のメモリへ格納し、前記復元ソフトを実行し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込むように前記演算装置を機能させる、請求項２５記載のプログラム更新ソフトウェア。
【請求項２７】
前記差分データを前記第２のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第３の手段と、
前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第４の手段と、を有し、
全ての更新対象ブロックを前記第３の手段と前記第４の手段を繰返し用いることにより、前記第１のメモリを前記新プログラムへ書き換える、請求項２５記載のプログラム更新ソフトウェア。
【請求項２８】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第１フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第２フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第３フェーズの３つのフェーズでプログラム更新する、請求項２５記載のプログラム更新ソフトウェア。
【請求項２９】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
前記書き換え不可エリアには更新ソフトウェアが配置され、
前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項２５記載のプログラム更新ソフトウェア。
【請求項３０】
前記復元回復ソフトは、
ａ：更新ツールと通信コマンドを受信するための通信機能と、
ｂ：前記新プログラムを再現する再現機能と、
ｃ：前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
ｄ：前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
を有する、請求項２８または請求項２９記載のプログラム更新ソフトウェア。
【請求項３１】
更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新可能な車載制御装置であって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、さらにプログラムまたはデータを受信すると一時的に第２のメモリへ格納し、その後にプログラムまたはデータを前記不揮発性の第１のメモリへ書込むダウンロード手段を備え、
前記更新ツールは、差分または圧縮による更新手段と差分データまたは圧縮データの通信手段を有する復元回復ソフトを車載制御装置へ送信し、次に対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、次に予め定めたブロックの新プログラムを送信し、
前記車載制御装置は、前記復元回復ソフトを受信すると前記ダウンロード手段により前記不揮発性の第１のメモリの予め定めたブロックへ書込みを行う第１の手順と、前記復元回復ソフトの通信手段を実行して、前記差分データを受信すると差分データを前記第２のメモリに格納し、前記復元回復ソフトの更新手段を実行して前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムを入力として前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに復元し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む第２の手順と、前記予め定めたブロックの新プログラムを受信すると前記ダウンロード手段により前記不揮発性の第１のメモリの予め定めたブロックへ前記新プログラムを書込む第３の手順で構成されたプログラム更新を行う、車載制御装置。
【請求項３２】
前記差分データによる更新対象ブロックの更新が完了した後に、前記更新ツールは前記他のブロックの新プログラムを圧縮した圧縮データを送信し、車載制御装置は、前記圧縮データを受信して前記第２のメモリへ格納し、前記復元回復ソフトは前記圧縮データを解凍し、新プログラムを前記他のブロックへ書込む、請求項３１記載の車載制御装置。
【請求項３３】
前記差分データを前記第２のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第３の手段と、
前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第４の手段と、を有し、
全ての更新対象ブロックを前記第３の手段と前記第４の手段を繰返し用いることにより、前記第１のメモリを前記新プログラムへ書き換える、請求項３１記載の車載制御装置。
【請求項３４】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第１フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第２フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第３フェーズの３つのフェーズでプログラム更新する、請求項３１記載の車載制御装置。
【請求項３５】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
前記書き換え不可エリアには更新ソフトウェアが配置され、
前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項３１記載の車載制御装置。
【請求項３６】
前記復元回復ソフトは、
ａ：更新ツールと通信コマンドを受信するための通信機能と、
ｂ：前記新プログラムを再現する再現機能と、
ｃ：前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
ｄ：前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
を有する、請求項３４または請求項３５記載の車載制御装置。
【請求項３７】
更新ツールから提供される更新内容に基づいて車載制御装置に格納されている旧プログラムを新プログラムヘ更新可能なプログラム更新ソフトウェアであって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第１のメモリと、データを一時的に記憶する第２のメモリとを備え、さらにプログラムまたはデータを受信すると一時的に第２のメモリへ格納し、その後にプログラムまたはデータを前記不揮発性の第１のメモリへ書込む第３のダウンロード手段を備え、
前記更新ツールは、差分または圧縮による更新手段と差分データまたは圧縮データの通信手段を有する復元回復ソフトを車載制御装置へ送信し、次に対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、次に予め定めたブロックの新プログラムを送信し、
前記プログラム更新ソフトウェアは、前記復元回復ソフトを受信すると前記第３のダウンロード手段により前記不揮発性の第１のメモリの予め定めたブロックへ書込みを行う第１の手順と、前記復元回復ソフトの通信手段を実行して、前記差分データを受信すると差分データを前記第２のメモリに格納し、前記復元回復ソフトの更新手段を実行して、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを入力として前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに復元し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む第２の手順と、前記予め定めたブロックの新プログラムを受信すると前記第３のダウンロード手段により前記不揮発性の第１のメモリの予め定めたブロックへ前記新プログラムを書込む第３の手順とを実行するように演算装置を機能させる、プログラム更新ソフトウェア。
【請求項３８】
前記差分データによる更新対象ブロックの更新が完了した後に、前記更新ツールは前記他のブロックの新プログラムを圧縮した圧縮データを送信し、
前記プログラム更新ソフトウェアは受信した圧縮データを前記第２のメモリへ格納し、前記復元回復ソフトを実行し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込むように前記演算装置を機能させる、請求項３７記載のプログラム更新ソフトウェア。
【請求項３９】
前記差分データを前記第２のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第３の手段と、
前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第４の手段と、を有し、
全ての更新対象ブロックを前記第３の手段と前記第４の手段を繰返し用いることにより、前記第１のメモリを前記新プログラムへ書き換える、請求項３７記載のプログラム更新ソフトウェア。
【請求項４０】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第１フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第２フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第３フェーズの３つのフェーズでプログラム更新する、請求項３７記載のプログラム更新ソフトウェア。
【請求項４１】
前記第１のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
前記書き換え不可エリアには更新ソフトウェアが配置され、
前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項３７記載のプログラム更新ソフトウェア。
【請求項４２】
前記復元回復ソフトは、
ａ：更新ツールと通信コマンドを受信するための通信機能と、
ｂ：前記新プログラムを再現する再現機能と、
ｃ：前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
ｄ：前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
を有する、請求項４０または請求項４１記載のプログラム更新ソフトウェア。
【国際調査報告】
2017057111.tif 000021
2017057111.tif 000022
2017057111.tif 000023
2017057111.tif 000024