(57)【要約】【課題】差分更新機能を有さない車載制御装置を、差分更新可能にする。【解決手段】復元プログラムを不揮発性メモリの第１の特定ブロックへ書込み、復元プログラムを起動して、新たな実行可能なプログラムとのブロック毎の差分データと、不揮発性メモリに配置された実行プログラムを用いて新たな実行可能なプログラムを差分復元して、不揮発性メモリの第２の特定ブロックへ書込み、第１の特定ブロックと第２の特定ブロックとは別のブロックへ新たな実行可能なプログラムを書込み、第２の特定ブロックの新たな実行可能なプログラムの圧縮データを解凍復元して、解凍復元したプログラムを第２の特定ブロックへ書込み、全文更新手段を起動して、第１の特定ブロックの新たな実行可能なプログラムを第１の特定ブロックへ書込むことにより、実行可能なプログラムを新たな実行可能なプログラムへ更新する。【選択図】  図４
2018160206.tif 000002
【特許請求の範囲】
【請求項１】
実行可能なプログラムを配置した複数ブロックで構成された不揮発性メモリと揮発性メモリと全文更新手段とを備えた車載制御装置において、
前記全文更新手段を起動して、差分復元手段と解凍復元手段を備えた復元プログラムを前記不揮発性メモリの第１の特定ブロックへ書込み、
前記復元プログラムを起動して、該復元プログラムは、前記実行可能なプログラムと新たな前記実行可能なプログラムのブロック毎の差分データと、前記不揮発性メモリに配置された実行プログラムを用いて前記ブロックの新たな前記実行可能なプログラムを差分復元して、前記不揮発性メモリの第２の特定ブロックへ書込み、
該第２の特定ブロックのデータを前記ブロックへコピーすることを繰返して、前記第１の特定ブロックと前記第２の特定ブロックとは別の前記ブロックへ新たな前記実行可能なプログラムを書込み、前記第２の特定ブロックの新たな前記実行可能なプログラムの圧縮データを解凍復元して、該解凍復元したプログラムを前記第２の特定ブロックへ書込み、
前記全文更新手段を起動して、前記第１の特定ブロックの新たな前記実行可能なプログラムを前記第１の特定ブロックへ書込むことにより、前記実行可能なプログラムを新たな前記実行可能なプログラムへ更新する
ことを特徴とする車載制御装置。
【請求項２】
前記第２の特定ブロックは、前記不揮発性メモリの最大サイズのブロックであることを特徴とする、請求項１記載の車載制御装置。
【請求項３】
前記第２の特定ブロックは、前記不揮発性メモリの複数のブロックで構成したことを特徴とする請求項１の車載制御装置。
【請求項４】
実行可能なプログラムを配置した複数ブロックで構成された不揮発性メモリと揮発性メモリと全文更新手段とを備えた車載制御装置において、
前記全文更新手段を起動して、差分復元手段を備えた復元プログラムを前記不揮発性メモリの第１の特定ブロックへ書込み、
前記復元プログラムを起動して、該復元プログラムは、前記実行可能なプログラムと新たな前記実行可能なプログラムのブロック毎の差分データと、前記不揮発性メモリに配置された実行プログラムを用いて前記ブロックの新たな前記実行可能なプログラムを差分復元して、前記揮発性メモリへ書込み、
前記揮発性メモリのデータを前記ブロックへコピーすることを繰返して、前記第１の特定ブロックとは別の前記ブロックへ新たな前記実行可能なプログラムを書込み、
前記全文更新手段を起動して、前記第１の特定ブロックの新たな前記実行可能なプログラムを前記第１の特定ブロックへ書込むことにより、前記実行可能なプログラムを新たな前記実行可能なプログラムへ更新する
ことを特徴とする車載制御装置。
【請求項５】
実行可能なプログラムを配置した複数ブロックで構成された第１の不揮発性メモリと、第２の不揮発性メモリと、全文更新手段とを備えた車載制御装置において、
前記全文更新手段を起動して、差分復元手段を備えた復元プログラムを前記第１の不揮発性メモリの第１の特定ブロックへ書込み、
前記復元プログラムを起動して、該復元プログラムは、前記実行可能なプログラムと新たな前記実行可能なプログラムの前記ブロック毎の差分データと、前記第１の不揮発性メモリに配置された実行プログラムを用いて前記ブロックの新たな前記実行可能なプログラムを差分復元して、前記第２の不揮発性メモリへ書込み、
前記第２の不揮発性メモリのデータを前記ブロックへコピーすることを繰返して、前記第１の特定ブロックと別の前記ブロックへ新たな前記実行可能なプログラムを書込み、
前記全文更新手段を起動して、前記第１の特定ブロックの新たな前記実行可能なプログラムを前記第１の特定ブロックへ書込むことにより、前記実行可能なプログラムを新たな前記実行可能なプログラムへ更新する
ことを特徴とする車載制御装置。
【請求項６】
実行可能なプログラムを配置した複数ブロックで構成された不揮発性メモリと揮発性メモリと全文更新手段とを備えた車載制御装置において、
前記全文更新手段を起動して、差分復元手段を備えた復元プログラムを前記不揮発性メモリの第１の特定ブロックへ書込み、
前記復元プログラムを起動して、前記復元プログラムは、前記実行可能なプログラムと新たな前記実行可能なプログラムの前記ブロック毎の差分データと、前記不揮発性メモリに配置された実行プログラムを用いて前記ブロックの新たな前記実行可能なプログラムを差分復元して、前記不揮発性メモリの第２の特定ブロックへ書込み、
前記第２の特定ブロックのデータを前記ブロックへコピーすることを繰返して、前記第１の特定ブロックと前記第２の特定ブロックとは別の前記ブロックへ新たな前記実行可能なプログラムを書込み、
前記第２の特定ブロックの新たな前記実行可能なプログラムを前記第２の特定ブロックへ書込み、
前記全文更新手段を起動して、前記第１の特定ブロックの新たな前記実行可能なプログラムを前記第１の特定ブロックへ書込むことにより、前記実行可能なプログラムを新たな前記実行可能なプログラムへ更新する
ことを特徴とする車載制御装置。
【請求項７】
実行可能なプログラムを配置した複数ブロックで構成された不揮発性メモリと揮発性メモリと全文更新手段とを備えた車載制御装置において、
前記全文更新手段を起動して、差分復元手段と解凍復元手段を備えた復元プログラムを前記不揮発性メモリの第１の特定ブロックへ書込み、
前記復元プログラムを起動して、前記復元プログラムは、前記実行可能なプログラムと新たな前記実行可能なプログラムの前記ブロック毎の差分データと、前記不揮発性メモリに配置された実行プログラムを用いて前記ブロックの新たな前記実行可能なプログラムを差分復元して、前記不揮発性メモリの第２の特定ブロックへ書込み、
前記第２の特定ブロックのデータを前記ブロックへコピーすることを繰返して、前記第１の特定ブロックと前記第２の特定ブロックとは別の前記ブロックへ新たな前記実行可能なプログラムを書込み、
前記第２の特定ブロックの新たな前記実行可能なプログラムの圧縮データを解凍復元して、解凍復元したプログラムを前記第２の特定ブロックへ書込み、
前記全文更新手段を起動して、前記第１の特定ブロックの新たな前記実行可能なプログラムを前記第１の特定ブロックへ書込むことにより、前記実行可能なプログラムを新たな前記実行可能なプログラムへ更新する
ことを特徴とする車載制御装置のプログラム更新ソフトウェア。
【請求項８】
前記第２の特定ブロックは、前記不揮発性メモリの最大サイズのブロックであることを特徴とする、請求項７の車載制御装置のプログラム更新ソフトウェア。
【請求項９】
前記第２の特定ブロックは、前記不揮発性メモリの複数のブロックで構成したことを特徴とする、請求項７の車載制御装置のプログラム更新ソフトウェア。
【請求項１０】
実行可能なプログラムを配置した複数ブロックで構成された不揮発性メモリと揮発性メモリと全文更新手段とを備えた車載制御装置において、
前記全文更新手段を起動して、差分復元手段を備えた復元プログラムを前記不揮発性メモリの第１の特定ブロックへ書込み、
前記復元プログラムを起動して、前記復元プログラムは、前記実行可能なプログラムと新たな前記実行可能なプログラムの前記ブロック毎の差分データと、前記不揮発性メモリに配置された実行プログラムを用いて前記ブロックの新たな前記実行可能なプログラムを差分復元して、前記揮発性メモリへ書込み、
前記揮発性メモリのデータを前記ブロックへコピーすることを繰返して、第１の特定ブロックを除くブロックへ新たな実行可能なプログラムを書込み、
前記全文更新手段を起動して、前記第１の特定ブロックの新たな前記実行可能なプログラムを前記第１の特定ブロックへ書込むことにより、前記実行可能なプログラムを新たな前記実行可能なプログラムへ更新する
ことを特徴とする車載制御装置のプログラム更新ソフトウェア。
【請求項１１】
実行可能なプログラムを配置した複数ブロックで構成された第１の不揮発性メモリと、第２の不揮発性メモリと、全文更新手段とを備えた車載制御装置において、
前記全文更新手段を起動して、差分復元手段を備えた復元プログラムを前記第１の不揮発性メモリの第１の特定ブロックへ書込み、
前記復元プログラムを起動して、前記復元プログラムは、前記実行可能なプログラムと新たな前記実行可能なプログラムの前記ブロック毎の差分データと、前記第１の不揮発性メモリに配置された実行プログラムを用いて前記ブロックの新たな実行可能なプログラムを差分復元して、前記第２の不揮発性メモリへ書込み、
前記第２の不揮発性メモリのデータを前記ブロックへコピーすることを繰返して、第１の特定ブロックと別のブロックへ新たな前記実行可能なプログラムを書込み、
前記全文更新手段を起動して、前記第１の特定ブロックの新たな前記実行可能なプログラムを第１の特定ブロックへ書込むことにより、前記実行可能なプログラムを新たな前記実行可能なプログラムへ更新する
ことを特徴とする車載制御装置のプログラム更新ソフトウェア。
【請求項１２】
実行可能なプログラムを配置した複数ブロックで構成された不揮発性メモリと揮発性メモリと全文更新手段とを備えた車載制御装置において、
前記全文更新手段を起動して、差分復元手段を備えた復元プログラムを前記不揮発性メモリの第１の特定ブロックへ書込み、
前記復元プログラムを起動して、前記復元プログラムは、前記実行可能なプログラムと新たな前記実行可能なプログラムの前記ブロック毎の差分データと、前記不揮発性メモリに配置された実行プログラムを用いて前記ブロックの新たな実行可能なプログラムを差分復元して、不揮発性メモリの第２の特定ブロックへ書込み、
前記第２の特定ブロックのデータを前記ブロックへコピーすることを繰返して、前記第１の特定ブロックと前記第２の特定ブロックとは別の前記ブロックへ新たな前記実行可能なプログラムを書込み、
前記第２の特定ブロックの新たな前記実行可能なプログラムを前記第２の特定ブロックへ書込み、
前記全文更新手段を起動して、前記第１の特定ブロックの新たな前記実行可能なプログラムを前記第１の特定ブロックへ書込むことにより、前記実行可能なプログラムを新たな前記実行可能なプログラムへ更新する
ことを特徴とする車載制御装置のプログラム更新ソフトウェア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車載制御装置、プログラム更新ソフトウェアに関する。
【背景技術】
【０００２】
従来のリプログラミングでは、低速なＣＡＮ（Controller Area Network）を介してプログラム書込み装置としてのＰＣ（Personal Computer）と車載制御装置（ＥＣＵ：Engine Control Unit）を接続し、ロードモジュール（新プログラム）を分割転送しながらＥＣＵのフラッシュメモリへ書込みを行っている。
【０００３】
また、旧プログラムに対する新プログラムの更新部分が小さい場合においても、新プログラム全体をＣＡＮ経由で転送し、新プログラム全体の書込みを行っている。
【０００４】
従って、書込みに要する時間がかかるという問題があった。これに対し、従来から差分リプログラミングの考え方が提案されている（例えば、特許文献１参照）。すなわち、特許文献１の段落〔００１９〕には、書き換え方式の１つとして「ブロック単位で新旧プログラムの差分データを作成する手段」が記載されている。さらに段落〔００６４〕には、更新対象ブロックの旧プログラムをＳＤＲＡＭへ転送して、差分データと旧プログラムを用いて新プログラムをＳＤＲＡＭへ復元し、更新対象ブロックを消去してから、新プログラムを書込んでいる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１９００７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の技術は、更新対象ブロックの旧プログラムと差分データと復元した新プログラム全てをＲＡＭ上に配置している。結果として、ＲＡＭ容量よりも大きなブロックで構成されたフラッシュメモリを内蔵したマイコンを使用した車載制御装置では原理的に差分復元できないことになる。
【０００７】
そこで本発明の目的は、差分更新機能を有さない車載制御装置を、差分更新可能にすることである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の車載制御装置は一例として、実行可能なプログラムを配置した複数ブロックで構成された不揮発性メモリと揮発性メモリと全文更新手段とを備えた車載制御装置において、前記全文更新手段を起動して、差分復元手段と解凍復元手段を備えた復元プログラムを前記不揮発性メモリの第１の特定ブロックへ書込み、前記復元プログラムを起動して、該復元プログラムは、前記実行可能なプログラムと新たな前記実行可能なプログラムのブロック毎の差分データと、前記不揮発性メモリに配置された実行プログラムを用いて前記ブロックの新たな前記実行可能なプログラムを差分復元して、前記不揮発性メモリの第２の特定ブロックへ書込み、該第２の特定ブロックのデータを前記ブロックへコピーすることを繰返して、前記第１の特定ブロックと前記第２の特定ブロックとは別の前記ブロックへ新たな前記実行可能なプログラムを書込み、前記第２の特定ブロックの新たな前記実行可能なプログラムの圧縮データを解凍復元して、該解凍復元したプログラムを前記第２の特定ブロックへ書込み、前記全文更新手段を起動して、前記第１の特定ブロックの新たな前記実行可能なプログラムを前記第１の特定ブロックへ書込むことにより、前記実行可能なプログラムを新たな前記実行可能なプログラムへ更新する。
【発明の効果】
【０００９】
本発明によれば、差分更新機能を有さない車載制御装置を、差分更新可能にすることができる。
【図面の簡単な説明】
【００１０】
【図１】既存の車載制御装置のフラッシュメモリ構成と動作概要示す模式図である。
【図２Ａ】プログラム書込み装置と車載制御装置の全体構成を示す模式図である。
【図２Ｂ】図２Aに示す車載制御装置のＳＲＡＭの内部の構成を示す模式図である。
【図３】図２Aに示す車載制御装置のＦＬＡＳＨメモリの内部の構成を示す模式図である。ブート部とアプリ部の構成、およびアプリ先頭ブロックと一時ブロックが記載されている。
【図４】既存車載制御装置の差分更新ソフトの全体構成図である。
【図５】復元回復ソフトの全体構成図である。
【図６】プログラム書き込み装置から受信する通信コマンドの種類を示す図である。
【図７】プログラム書込み装置が車載制御装置へ発行する通信コマンドのフローチャートである。
【図８】差分通信ソフトのフローチャートである。
【図９】復元ソフトのフローチャートである。
【図１０】差分復元ソフトのフローチャートである。
【図１１】解凍復元ソフトのフローチャートである。
【発明を実施するための形態】
【００１１】
既存の車載制御装置は、少なくともマイコンなどの初期化ソフト、プログラム書換え装置から送信される全文更新用通信コマンドや全文データの通信を行う全文通信ソフト、フラッシュ書込みソフト、全文データによる全文更新ソフトをブート部と呼ぶフラッシュメモリの領域に配置し、更新対象のプログラムやデータはアプリ部と呼ぶフラッシュメモリの領域に配置されていることを前提とする。
【００１２】
図１を用いて、前提とする既存の車載制御装置のフラッシュメモリ構成と、動作を説明する。
【００１３】
２１０はブート部であり、２２０はアプリ部である。既存の車載制御装置は、パワーオンやイグニッションＯＮなどによるリセットが発生すると、ブート部内の初期化ソフトが実行される。初期化ソフトはＲＡＭの初期化やアプリ部２２０に配置されているプログラムの診断などを行い、異常がなければ２５０で指示されたアプリ部２２０の先頭を示すアプリ先頭２３０へ分岐する。図１ではアプリ先頭２３０は、アプリ部２２０の途中の位置に存在しているが、その位置は自由で良い。当然、予め定められた位置にアプリ先頭２３０の位置を示す情報を格納しておいても良い。このように、ブート部からアプリ部のプログラムへ分岐するための予め定められた規定が存在することが第１の重要なポイントである。
【００１４】
このようにしてアプリ部２２０のプログラムを実行するが、アプリ部２２０のプログラムから全文更新ソフトへ分岐する規定の存在することが、第２のポイントである。すなわち、プログラム実行中に、プログラム書込み装置から全文更新開始を意味する通信コマンドを受信すると、アプリ部２２０のプログラムは、車載制御装置を安全な状態にした後、２６０で指示されたブート部２１０の全文更新ソフト先頭２４０へ分岐する。全文更新ソフトは、通信ソフトを初期化し、全文更新の通信コマンドを受信できるようにすることで、プログラム書込み装置からの指示を待つことができる。当然、予め定められた位置に全文更新ソフト先頭２４０の位置を示す情報を格納しておいても良い。このように、アプリ部２２０のプログラムからブート部の全文更新ソフトへ分岐するための予め定められた規定が存在することが第２の重要なポイントである。既存の車載制御装置は、このように第１の規定と第２の規定を備えていることが前提である。
【００１５】
本実施例は、第１の規定と第２の規定を活用して、下記３つのフェーズで構成した既存車載制御装置の差分更新手段で、アプリ部２２０の旧プログラムを新プログラムへ更新する。
【００１６】
第１フェーズは、既存の車載制御装置へ前記全文更新ソフトを利用してアプリ先頭２３０を含むブロック（アプリ先頭ブロックと呼ぶことにする）へ復元回復ソフトをダウンロードしてリセットする手段である。ここで復元回復ソフトは、プログラム書込み装置から差分更新用通信コマンドやブロック毎のブロック差分データを受信する差分通信手段と、受信したブロック差分データとアプリ部２２０の旧プログラムから当該ブロックの新プログラムを復元する復元手段と、復元された当該ブロックの新プログラムをアプリ部２２０の当該ブロックへ書込む処理を行う書込み手段を備えたソフトウェアである。
【００１７】
第２フェーズは、ブート部の初期化ソフト実行後に前記復元回復ソフトを起動する。復元回復ソフトは、まず差分通信手段を初期化してプログラム書込み装置と差分更新用通信コマンドやブロック毎のブロック差分データを受信可能に設定する。その後、復元手段を用いて受信したブロック差分データとアプリ部２２０の旧プログラムから当該ブロックの新プログラムを復元し、アプリ部２２０内の最大サイズのブロック（一時ブロックと呼ぶことにする）へ書込む。次に一時ブロックのデータを書込み手段を用いて当該ブロックへコピーする。このように、ブロック差分データを受信する度に、上記処理を繰返すことで、アプリ部２２０の各ブロックを新プログラムへ更新することができる。ただし、前述したアプリ先頭ブロックと一時ブロックは、まだ新プログラムへ更新できていない。
【００１８】
まず、一時ブロックの選定理由を説明する。
【００１９】
本実施例の課題としていることは、小さなＳＲＡＭ容量でもフラッシュメモリの大きなブロックの差分更新を可能にすることであった。このケースの場合、当該ブロックの新プログラムは、ＳＲＡＭへ一時的にも保存することができない。さらに当該ブロックの差分更新は、旧プログラムを参照して当該ブロックの新プログラムを復元するので、復元完了するまで当該ブロックの旧プログラムを消去することができない。以上の理由から、ＳＲＡＭでは無くアプリ部２２０の最大サイズのブロックを一時ブロックに設定した。これにより、小さなＳＲＡＭ容量でもフラッシュメモリの大きなブロックを差分更新可能となる。
【００２０】
次に差分更新後に実行する一時ブロックの更新手段について説明する。一時ブロックは、他のブロックの差分更新時に当該ブロックの新プログラムを一時保存するワークメモリとして使用した。このため、本来の旧プログラムは破壊されている。このため、一時ブロックの更新は、差分更新では無く、全文更新または圧縮更新で実現する。すなわち、他のブロックの差分更新した後に、一時ブロックの新プログラムを全文データとしてプログラム書込み装置から受信し、一時ブロックへ新プログラムを書込めば良い。同様に、一時ブロックの新プログラムのブロック圧縮データをプログラム書込み装置から受信し、復元手段を用いてブロック圧縮データを解凍し、一時ブロックへ新プログラムを書込めば良い。ただし復元手段は、ブロック差分データを用いた差分復元機能とブロック圧縮データを解凍する解凍機能を有する必要である。
【００２１】
以上、一時ブロックの更新が終了した後に、プログラム書込み装置から全文更新開始を意味する通信コマンドを受信する。前述したように、アプリ部２２０の復元回復ソフトは、車載制御装置を安全な状態にした後、２６０で指示されたブート部２１０の全文更新ソフト先頭２４０へ分岐する。
【００２２】
残りは、アプリ先頭ブロックの更新である。これは、第３フェーズで行う。
【００２３】
第３フェーズは、既存の車載制御装置へ前記全文更新ソフトを利用してブート部２１０の全文更新ソフト先頭２４０を含むブロック（アプリ先頭ブロック）へ当該ブロックの新プログラムをダウンロード手段である。この手段を実行することにより、アプリ先頭ブロックへ新プログラムを書込むことができた。
【００２４】
以上の第１〜第３フェーズで構成された既存車載制御装置の差分更新手段により、アプリ部２２０の全てのブロックを新プログラムへ書換えることができた。
【００２５】
ＲＡＭ容量よりも大きなブロックで構成されたフラッシュメモリを内蔵したマイコンを使用した車載制御装置を差分更新できる。
【００２６】
さらに、もう１つ大きな効果がある。もし第２フェーズの差分更新途中で車載バッテリの容量が無くなり、電源断など思いもよらぬ事象が発生しても、差分更新途中であった当該ブロックからリトライ可能になる点である。第２フェーズの差分更新中は、当該ブロックは更新されず、一時ブロックへ復元した新プログラムを書き込んでいる。なので、当該ブロックの旧プログラムはそのまま残っている。従ってこの時点で電源断が発生しても、電源復帰後に再度旧プログラムを参照して新プログラムを一時ブロックへ復元することができる。また、もし一時プロックへ新プログラムを復元完了した後に、当該ブロックを消去し、一時ブロックから当該ブロックへコピーしている時に電源断が発生した場合でも、新プログラムは一時ブロックに残っているので電源回復後に再度一時ブロックの新プログラムを当該ブロックへ書き込むことができる。また、第２フェーズの差分更新後に行う一時ブロックの更新は、新プログラムの全文データまたは圧縮データを用いるので、旧プログラムが破壊されていても新プログラムへ更新可能である。さらに、第１フェーズと第３フェーズの更新は、全文データによる更新なので、当然リトライ可能である。
【００２７】
このように既存車載制御装置の差分更新手段は、電源断などの異常が発生した場合でも復電後にリトライすれば、更新中の当該ブロックから途中復元できるメリットがある。
【００２８】
また、一時ブロックは、複数の小さなブロックで構成しても良い。さらに、電源断の問題を解決可能で、ＲＡＭがある程度のサイズであれば、ＲＡＭに配置しても良い。
【００２９】
全文データによるソフトウェア更新手段を有し、少ない容量のＲＡＭと大きなブロックで構成されたフラッシュメモリを備えた車載制御装置において、差分更新を可能とする既存車載制御装置の差分更新手段の実施例を図２〜図１１を用いて詳細に述べる。
【００３０】
最初に、図２Aを用いて、システムの全体構成を説明する。図２Aは、本発明の実施形態によるシステムの全体構成を示す模式図である。
【００３１】
プログラム書き込み装置１００、複数の車載制御装置２００（２００１〜２００ｎ）を備える。プログラム書き込み装置１００及び車載制御装置２００は、相互に車載ネットワークＣＡＮを介して通信する。
【００３２】
車載制御装置２００は、マイコン２０１、車載制御装置２００毎の用途に応じた各種のＩＣ（Integrated Circuit）２０４、ＣＡＮトランシーバなどの通信装置２０５を備える。マイコン２０１は、ＳＲＡＭ２０２（揮発性メモリ）、ＦＬＡＳＨメモリ２０３（不揮発性メモリ）を内蔵する。
【００３３】
なお、プログラム書き込み装置１００の構成も車載制御装置２００の構成と基本的に同じであるが、車両の外部のネットワークのプロトコルに応じた通信装置をさらに備える。すなわち、プログラム書き込み装置１００は、マイコン１０１、各種のＩＣ１０４、ＣＡＮトランシーバなどの通信装置１０５、車両の外部のネットワークのプロトコルに応じた通信装置１０６を備える。マイコン１０１は、ＳＲＡＭ１０２、ＦＬＡＳＨメモリ１０３を内蔵する。
【００３４】
次に、図２Bを用いて、車載制御装置２００のＳＲＡＭ２０２の構成を説明する。図２Bは、図２Aに示すＳＲＡＭ２０２の内部の構成を示す模式図である。
【００３５】
ＳＲＡＭ２０２は、プログラム書込み装置１００からの受信データを一時的に記憶するための受信エリア２０２ａを備える。本実施形態では、一例として、ＳＲＡＭ２０２のサイズは１２８ｋＢであり、受信エリア２０２ａのサイズは６４ｋＢである。
【００３６】
次に、図３を用いて、ＦＬＡＳＨメモリ２０３の構成を説明する。図３は、図２Aに示すＦＬＡＳＨメモリ２０３の内部の構成を示す模式図である。
【００３７】
ＦＬＡＳＨメモリ２０３は、複数のサイズのブロックから構成される。本実施形態では、一例として、ＦＬＡＳＨメモリ２０３のサイズは２ＭＢである。ブート部２１０には、マイコンなどの初期化ソフト、プログラム書込み装置１００と全文更新用通信コマンドや全文データの通信を行う全文通信ソフト、フラッシュ書込みソフト、全文データによる全文更新ソフトが実装されている。アプリ部２２０は、ブロックB#1〜B#7で構成されており、第１フェーズで復元回復ソフトをダウンロードするアプリ先頭ブロック３００は、１２８ｋＢのブロックB#2である。また、第２フェーズで使用する一時ブロック３１０は、２５６ｋＢのブロックB#7である。本発明手段で説明したように、一時ブロック３１０をアプリ部２２０内のブロックの中で最大サイズのブロックB#7を選択している。また、ＳＲＡＭ２０２が１２８ｋＢであるのに対して、フラッシュメモリのアプリ部２２０のブロックの最大サイズは２５６ｋＢとしており、ブロックサイズよりも小さなＳＲＡＭ容量でも差分更新が可能であることを本実施例で説明する。ＦＬＡＳＨメモリ２０３は、１２８ｋＢと２５６ｋＢの２種類のブロックから構成されている。ブロックとは、データを消去する最小単位である。例えば、１２８ｋＢのブロックに４ｋＢのデータを書き込む場合、１２８ｋＢのデータを消去してから４ｋＢのデータを書き込む必要がある。
【００３８】
図４は、本発明の既存車載制御装置の差分更新ソフト４００のフローチャートである。第１フェーズ４１０は、ブート部２１０の全文更新ソフトを起動して、アプリ先頭ブロックB#2ヘ復元回復ソフトをダウンロードして書込んでいる。
【００３９】
第２フェーズ４２０は、ダウンロードした復元回復ソフトを起動して、アプリ部２２０のブロックB#n (n = 1, 3, 4, 5, 6)をブロック単位に差分更新して、当該ブロックへ新プログラムを書込んである。さらに、一時ブロックB#7の圧縮データを解凍する圧縮更新により新プログラムを復元し、一時ブロックB#7ヘ新プログラムを書込んでいる。
【００４０】
第３フェーズ４３０は、ブート部２１０の全文更新ソフトを起動して、アプリ先頭ブロックB#2ヘ当該ブロックの新プログラムを書込んでいる。
【００４１】
上記３つのフェーズでアプリ部２２０は、新プログラムへ更新できた。
【００４２】
以降、詳細に説明するが、第１フェーズと第３フェーズの処理は、既存の全文更新ソフトによるものなので、第２フェーズの復元回復ソフトの動作を中心に説明する。
【００４３】
図５は、復元回復ソフト５００の構成を示している。
【００４４】
差分復元ソフト５００は、プログラム書込み装置１００とネットワークを介して通信を行う差分通信手段を実現する差分通信ソフト５０１と復元手段を実現する復元ソフト５０２と、ブロック差分データを用いて新プログラムを復元する差分復元手段を実現する差分復元ソフト５０３と、圧縮データから新プログラムを復元する解凍復元手段を実現する解凍復元ソフト５０４と、データをフラッシュメモリへ格納する書き込み手段を実現する書き込みソフト５０５で構成されている。
【００４５】
図６は、車載書き込み装置１００から車載制御装置２００へ送信される通信コマンドの種類を示している。
【００４６】
６００は、プログラムの更新開始を示す通信コマンド$10である。
【００４７】
６１０は、更新対象ブロックB#n ( n=1,2,3,4,5,6,7)を指定する通信コマンド$20である。ここでKDは、送信データのデータ種別を示す情報、ＭＡは更新対象ブロックの先頭アドレス、ＭＳは更新対象ブロックのサイズを示している。データ種別KDは、送信データが差分データまたは圧縮データであることを示すことができる。
【００４８】
６２０は、更新対象ブロックの送信データを通信コマンドに付属させた通信コマンド$30である。ここでDATAは送信データであり、差分データまたは圧縮データである。
【００４９】
６３０は、更新対象ブロックへのデータ送信が完了したことを示す通信コマンド$40である。
【００５０】
６４０は、プログラム更新終了を示す通信コマンド$50である。
以上の通信コマンドを用いて、図７にプログラム書込み装置１００が通信コマンドを送信するフローチャートを示す。
【００５１】
７００は、通信コマンド“プログラム更新開始” ＄１０を送信する。
【００５２】
７１０は、通信コマンド“更新対象ブロック指定”＄２０を送信する。データ種別ＫＤ，更新対象ブロックの先頭アドレスＭＡ，サイズＭＳも一緒に送信する。
【００５３】
７２０は、通信コマンド“更新対象ブロック用の送信データ”＄２０を送信する。送信データは、ブロックの差分データまたは圧縮データである。
【００５４】
７３０は、通信コマンド“更新対象ブロックへのデータ送信完了”＄４０を送信する。
【００５５】
７４０では、アプリ先頭ブロック#B2を除き、全てのブロックのデータを送信完了したかチェックし、noならば７１０へ戻って、次の更新対象ブロックのデータ送信を繰返す。
【００５６】
一方、yesならば７５０で通信コマンド“プログラム更新終了”＄５０を送信して終了する。
【００５７】
このように、更新対象ブロックへのデータ送信は、７１０〜７３０を繰返すことで実現している。
【００５８】
図８は、車載制御装置２００が通信コマンドを受信する差分通信ソフト５０１のフローチャートである。
【００５９】
８００は、通信コマンドＣＭＤを受信する動作である。
【００６０】
８１０は、通信コマンドＣＭＤが＄１０であるか判定し、yesならば８１５を実行し、noならば８２０を実行する。８１５では、これからプログラム更新を開始するので、受信エリア２０２aを初期化する。
【００６１】
８２０は、通信コマンドＣＭＤが＄２０であるか判定し、yesならば８２５を実行し、noならば８３０を実行する。８２５では、受信データのデータ種別ＫＤ，復元対象ブロックの先頭アドレスＭＡ，サイズＭＳを記憶する。さらに一時ブロックＢ＃７を消去する。
【００６２】
８３０は、通信コマンドＣＭＤが＄３０であるか判定し、yesならば８３５を実行し、noならば８４０を実行する。８３５では、受信データＤＡＴＡを受信エリア２０２aへ記憶する。
【００６３】
８４０は、通信コマンドＣＭＤが＄４０であるか判定し、yesならば８４５を実行し、noならば８５０を実行する。８４５では、受信エリア２０２aに格納された差分データまたは圧縮データを用いて復元ソフト５０２を実行する。８５０は、通信コマンドＣＭＤの処理を終了する。
【００６４】
図９は、復元ソフト５０２のフローチャートである。
【００６５】
９００は、データ種別ＫＤが“差分データ”か判定し、もしyesならば９１０を実行し、もしnoならばＫＤは“圧縮データ”なので９３０を実行する。９３０は、解凍復元ソフト５０４を実行し、終了する。９１０は、差分復元ソフト５０３を実行し、復元結果を一時ブロック３１０ B#7ヘ格納する。９２０は、書込みソフト５０５を実行し、先頭アドレスＭＡ，サイズＭＳの更新対象ブロックへ一時ブロック３１０ B#7のデータをコピーして終了する。
【００６６】
図１０と図１１で差分復元ソフト５０３と、解凍復元ソフト５０４を説明する。
【００６７】
図１０、差分復元ソフト５０３のフローチャートである。
【００６８】
最初に、一般的な差分生成・差分復元ソフトの概要について説明する。差分生成ソフトは、差分抽出処理部において、新プログラムの部分命令列と類似の部分命令列を旧プログラムから検索して見つけ出し、その部分命令列を短い符号に置き換えてコピーコマンドに付属させる。一方、類似の部分命令列が見つからない場合には、追加コマンドにその部分命令列を付属させる。このコピーコマンドと追加コマンドの列が差分データである。このように、差分データとは、単に新プログラムから旧プログラムを減算した結果では無く、類似部分名列を短い符号に置き換えたコピーコマンドや追加コマンドなどの列で構成されている。
【００６９】
以上の準備を踏まえて、差分復元ソフト５０３の動作を説明する。
【００７０】
１０００は、受信エリア２０２aの差分データを読み出す。
【００７１】
１０１０は、差分コマンドの解析である。
【００７２】
１０２０は、差分コマンドがコピーコマンドか判定し、もしyesならば１０２５を実行し、もしnoならば１０３０を実行する。１０２５は、旧プログラムの部分命令列を一時ブロック３１０ B#7へ書込む。
【００７３】
１０３０は、差分コマンドが追加コマンドか判定し、もしyesならば１０３５を実行し、もしnoなばら１０４０を実行する。
【００７４】
１０３５は、追加コマンドに付属するデータを一時ブロック３１０ B#7へ追記して１０４０を実行する。
【００７５】
１０４０は、差分データを全て読み出したか判定し、もしyesならば差分復元処理５０３を終了し、もしnoならば１０００へ分岐して、次の差分コマンドを差分データから読み出し、１０１０〜１０４０を繰返す。
【００７６】
以上で、当該更新対象ブロックの新プログラムを一時ブロック３１０ B#7へ差分復元できた。
【００７７】
図１１は、解凍復元ソフト５０４のフローチャートである。
最初に、圧縮・解凍ソフトについて説明する。圧縮ソフトは、プログラム中の部分命令列と類似の部分命令列をプログラムから検索して見つけ出し、その部分命令列を短い符号に置き換えてコピーコマンドに付属させる。一方、類似の部分命令列が見つからない場合には、追加コマンドにその部分命令列を付属させる。このコピーコマンドと追加コマンドの列が圧縮データである。このように、圧縮データは、類似部分名列を短い符号に置き換えたコピーコマンドや追加コマンドなどの列で構成されている。
【００７８】
以上の準備を踏まえて、解凍復元ソフト５０４の動作を説明する。
【００７９】
１１００は、まず一時ブロック３１０ B#7を消去する。
【００８０】
１１１０は、受信エリア２０２aから圧縮データを読み出す。
【００８１】
１１２０は、圧縮コマンドを解析する。
【００８２】
１１３０は、圧縮コマンドがコピーコマンドか判定し、もしyesならば１１３５を実行し、もしnoならば１１４０を実行する。
【００８３】
１１３５は、圧縮データ内の部分命令列を一時ブロック３１０ B#7ヘ書込む。
【００８４】
１１４０は、圧縮コマンドが追加コマンドか判定し、もしyesならば１１４５を実行し、もしnoならば１１５０を実行する。
【００８５】
１１４５は、追加コマンドに付属するデータを一時ブロック３１０ B#7ヘ追記し、１１５０を実行する。
【００８６】
１１５０は、圧縮データを全て読み出したか判定し、もしyesならば解凍復元処理５０４を終了し、もしnoならば１１１０へ分岐して、次の圧縮コマンドを圧縮データから読み出し、１１１０〜１０５０を繰返す。
【００８７】
以上で、一時ブロックへ当該ブロックB#7の新プログラムを解凍復元できた。
【符号の説明】
【００８８】
１００…プログラム書込み装置
１０１…プログラム書込み装置のマイコン
１０２…プログラム書込み装置のＳＲＡＭ（揮発性メモリ）
１０３…プログラム書込み装置のＦＬＡＳＨ（不揮発性メモリ）
１０４…プログラム書込み装置の各種ＩＣ
１０５…プログラム書込み装置の車内通信装置
１０６…プログラム書込み装置の車外通信装置
２００…車載制御装置
２０１…車載制御装置のマイコン
２０２…車載制御装置のＳＲＡＭ（揮発性メモリ）
２０２a…受信エリア
２０３…車載制御装置のＦＬＡＳＨ（不揮発性メモリ）
２０４…車載制御装置の各種ＩＣ
２０５…車載制御装置の車内通信装置
２１０…ＦＬＡＳＨのブート部
２２０…ＦＬＡＳＨのアプリ部
２３０…アプリ先頭
２４０…全文更新ソフト先頭
２５０…ブート部からアプリ部への分岐
２６０…アプリ部からブート部への分岐
３００…アプリ先頭ブロック
３１０…一時ブロック
４００…既存車載制御装置の差分更新ソフト
５００…復元回復ソフト
５０１…差分通信ソフト
５０２…復元ソフト
５０３…差分復元ソフト
５０４…解凍復元ソフト
５０５…書込みソフト
【図１】
2018160206.tif 000003
【図２Ａ】
2018160206.tif 000004
【図２Ｂ】
2018160206.tif 000005
【図３】
2018160206.tif 000006
【図４】
2018160206.tif 000007
【図５】
2018160206.tif 000008
【図６】
2018160206.tif 000009
【図７】
2018160206.tif 000010
【図８】
2018160206.tif 000011
【図９】
2018160206.tif 000012
【図１０】
2018160206.tif 000013
【図１１】
2018160206.tif 000014