(57)【要約】【課題】不揮発性メモリのデータ書換えに要する時間を短縮する。【解決手段】電子制御装置（ＥＣＵ）は、消去ブロック単位でデータを消去可能であると共に、これよりも小さい書込ブロック単位でデータを書込み可能な不揮発性メモリを有する。ＥＣＵに書き込む書換えデータとＥＣＵに書き込まれている被書換えデータとの間で、対応する消去ブロックに差異があるデータについて（Ｓ１００〜Ｓ１０２）、不揮発性メモリの消去ブロックのデータを消去すると共に（Ｓ１０３〜Ｓ２０２）、ツールからＥＣＵへと送信されたデータを書込ブロック単位で不揮発性メモリに書き込む（Ｓ１０４〜Ｓ２０４）。そして、ツールからＥＣＵへと送信されるデータ量を削減し、不揮発性メモリのデータ書換えに要する時間を短縮する。【選択図】図５
2014182859.tif 000002
【特許請求の範囲】
【請求項１】
消去ブロック単位でデータを消去可能であると共に、前記消去ブロックよりも小さい書込ブロック単位でデータを書込み可能な不揮発性メモリを有する電子制御装置であって、
外部からのデータ書換え要求に応答して、前記不揮発性メモリの一部のデータを消去ブロック単位で消去し、前記不揮発性メモリの一部に書込ブロック単位でデータを書き込む、
ことを特徴とする電子制御装置。
【請求項２】
前記消去ブロック単位で、前記不揮発性メモリに書き込むデータの識別情報と、前記不揮発性メモリに書き込まれているデータの識別情報と、の同一性を判定し、前記同一性がないと判定された消去ブロックについて、データの消去及び書込みを実行する、
ことを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記消去ブロック単位で、前記不揮発性メモリに書き込まれているデータを揮発性メモリに退避してから消去し、
前記書込ブロック単位で、前記不揮発性メモリに書き込むデータの識別情報と、前記揮発性メモリに退避されたデータの識別情報と、の同一性を判定し、前記同一性がある場合、前記揮発性メモリに退避されたデータを前記不揮発性メモリに書き込む一方、前記同一性がない場合、外部からのデータを不揮発性メモリに書き込む、
ことを特徴とする請求項１又は請求項２に記載の電子制御装置。
【請求項４】
前記電子制御装置に対して接続されるツールを更に含み、
前記ツールは、前記不揮発性メモリに書き込むデータと前記不揮発性メモリに書き込まれているデータとの差分情報に基づいて、前記電子制御装置にデータ書換え要求を送信する、
ことを特徴とする請求項１〜請求項３のいずれか１つに記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置のデータを書き換える技術に関する。
【背景技術】
【０００２】
電子制御装置においては、フラッシュＲＯＭ（Read Only Memory）などの不揮発性メモリに書き込まれたデータを書き換える場合、特開平９−１２８２２９号公報（特許文献１）に記載されるような方法が採用されていた。即ち、電子制御装置に接続されたツールからの指示に応答して、不揮発性メモリのデータ書換え領域を消去してから、ツールから順次送信されるデータを不揮発性メモリに書き込んでいた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−１２８２２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、不揮発性メモリに書き込まれたデータと一部分のみが異なるデータを書き換える場合にも、データ書換え領域のすべてのデータを消去し、ツールから電子制御装置へとすべてのデータを転送しなければならなかった。このため、データ転送速度が低いことと相俟って、不揮発性メモリのデータ書換えに長時間を要していた。
【０００５】
そこで、本発明は、フラッシュＲＯＭなどの不揮発性メモリのデータ書換えに要する時間を短縮可能な、電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
電子制御装置は、消去ブロック単位でデータを消去可能であると共に、消去ブロックよりも小さい書込ブロック単位でデータを書込み可能な不揮発性メモリを有する。そして、電子制御装置は、外部からのデータ書換え要求に応答して、不揮発性メモリの一部のデータを消去ブロック単位で消去し、不揮発性メモリの一部に書込ブロック単位でデータを書き込む。
【発明の効果】
【０００７】
本発明によれば、フラッシュＲＯＭなどの不揮発性メモリのデータ書換えに要する時間を短縮することができる。
【図面の簡単な説明】
【０００８】
【図１】データ書換えシステムの一例を示す概要図である。
【図２】電子制御装置の一例を示す内部構造図である。
【図３】フラッシュＲＯＭのメモリマップの一例を示す説明図である。
【図４】ツールの一例を示す内部構造図である。
【図５】データ書換え処理の第１実施形態の一例を示すフローチャートである。
【図６】フラッシュＲＯＭのメモリマップを簡略標記する方法の説明図である。
【図７】データ書換え処理の第２実施形態の一例を示すフローチャートである。
【図８】フラッシュＲＯＭのデータをＲＡＭに退避した状態を示す説明図である。
【図９】データ書換え処理の第３実施形態の一例を示すフローチャートである。
【図１０】データ書換え処理の第１実施形態及び第２実施形態を組み合わせた、第１応用実施形態の一例を示すフローチャートである。
【図１１】データ書換え処理の第１実施形態及び第２実施形態を組み合わせた、第１応用実施形態の一例を示すフローチャートである。
【図１２】データ書換え処理の第１実施形態及び第２実施形態を組み合わせた、第２応用実施形態の一例を示すフローチャートである。
【図１３】データ書換え処理の第１実施形態及び第２実施形態を組み合わせた、第２応用実施形態の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
図１は、自動車に搭載される電子制御装置（ＥＣＵ：Electronic Control Unit）のデータを書き換える、データ書換えシステムの一例を示す。
【００１０】
データ書換え対象となるＥＣＵ１００は、ＣＡＮ（Controller Area Network），シリアル通信，ＦｌｅｘＲａｙ（登録商標）などのネットワークケーブル２００を介して、作業者がＥＣＵ１００のデータ書換え作業を行う、ツール３００に着脱可能に接続される。なお、ＥＣＵ１００とツール３００とは、ネットワークケーブル２００を使用した有線に限らず、無線送受信機を使用した無線によって相互に接続されるようにしてもよい。
【００１１】
ＥＣＵ１００は、自動車に搭載された各種機器、例えば、燃料噴射弁，変速機，電動ブレーキシステム，ＡＢＳ（Antilock Brake System），可変バルブタイミング機構，ブラシレスモータなどを制御する電子機器であって、マイクロコンピュータを内蔵している。具体的には、ＥＣＵ１００は、図２に示すように、ＣＰＵ（Central Processing Unit）などのプロセッサ１１０と、ネットワークに接続するための通信回路１２０と、不揮発性メモリの一例としてのフラッシュＲＯＭ１３０と、揮発性メモリの一例としてのＲＡＭ（Random Access Memory）１４０と、プロセッサ１１０，通信回路１２０，フラッシュＲＯＭ１３０及びＲＡＭ１４０を相互に接続するバス１５０と、を有している。ここで、通信回路１２０は、ネットワークケーブル２００を着脱可能に接続するコネクタ（図示せず）を含む。
【００１２】
フラッシュＲＯＭ１３０は、図３に示すように、所定サイズ（例えば、３２Ｋバイト，６４Ｋバイトなど）の複数の消去ブロック１〜ｎと、消去ブロックごとに所定サイズ（例えば、２５６バイト）の複数の書込ブロック１〜ｍと、に区画されている。ここで、消去ブロックは、データを消去する最小単位を規定し、書込ブロックは、データを書き込む最小単位を規定する概念であり、消去ブロックが書込ブロックより大きいという特性を有している。そして、ある書込ブロックのデータを書き換える場合、その書込ブロックが属する消去ブロックのデータをすべて消去した後、データを消去した消去ブロックに属するすべての書込ブロックにデータを書き込む、という手順を経るようになっている。これは、フラッシュＲＯＭ１３０のデータを書き換える場合の保障を確保するためである。なお、フラッシュＲＯＭ１３０における消去ブロックのサイズが同一でない場合には、各消去ブロックに属する書込ブロックの数は異なっていてもよい。
【００１３】
ツール３００は、作業者がＥＣＵ１００のデータ書換え作業を行う電子機器であって、例えば、パーソナルコンピュータなどのコンピュータから構成される。具体的には、ツール３００は、図４に示すように、ＣＰＵなどのプロセッサ３１０と、ネットワークに接続するための通信回路３２０と、ハードディスク装置，ＳＳＤ（Solid State Drive）などのストレージ３３０と、作業者へのインターフェースとなる入出力装置３４０と、を有している。ここで、通信回路３２０は、ネットワークケーブル２００を着脱可能に接続するコネクタ（図示せず）を含む。また、入出力装置３４０は、ＬＣＤ（Liquid Crystal Display）などのディスプレイと、キーボードと、マウスなどのポインティングデバイスと、を含む。なお、ストレージ３３０は、例えば、図示しないネットワークに接続されたＮＡＳ（Network Attached Storage），サーバのストレージなどであってもよい。
【００１４】
ストレージ３３０には、ＥＣＵ１００のフラッシュＲＯＭ１３０を書き換えるための書換えデータが格納されている。書換えデータは、例えば、自動車に搭載された各種機器を制御する制御プログラム、その制御プログラムで使用される定数，マップなどの制御パラメータなどを含む。
【００１５】
図５は、ＥＣＵ１００のフラッシュＲＯＭ１３０のデータを書き換える、データ書換え処理の第１実施形態の一例を示す。データ書換え処理は、作業者がネットワークケーブル２００を介してＥＣＵ１００とツール３００とを接続した後、ツール３００において、作業者が書換えデータ及び被書換えデータを指定して、所定の操作を行ったときに実行される。なお、図５に示すデータ書換え処理は、書換えデータの消去ブロックごとに実行される（第２実施形態でも同様）。
【００１６】
ここでは、ＥＣＵ１００は、ネットワークケーブル２００を介してツール３００と接続されたときに、電力が供給されて起動することを前提とするが、別の電源ケーブルの接続により起動する形態もあり得る。また、以下の説明では、説明の便宜上、ＥＣＵ１００におけるフラッシュＲＯＭ１３０のメモリマップは、図６に示すように、消去ブロックを「ＥＢｎ」、書込ブロックを「ＷＢｍ」（ｍ，ｎ：自然数）で表すこととする。
【００１７】
ステップ１００（図では「Ｓ１００」と略記する。以下同様。）では、ツール３００のプロセッサ３１０は、消去ブロックＥＢｘ（ｘ：自然数１〜ｎ）のハッシュ値を算出する。即ち、プロセッサ３１０は、ＳＨＡ（Secure Hash Algorithm），ＭＤ５（Message Digest Algorithm 5）などの公知のハッシュ関数を使用して、書換えデータにおける消去ブロックＥＢｘのデータのハッシュ値を算出する。ここで、ハッシュ値は、データの同一性を比較するための識別情報の一例であって、類似するデータでも大きく異なる値をとるものを採用する。そして、プロセッサ３１０は、消去ブロックＥＢｘのデータから算出したハッシュ値を、図示しないＲＡＭなどの記憶媒体に一時的に記憶させておく。
【００１８】
ステップ１０１では、ツール３００のプロセッサ３１０が、ＥＣＵ１００に対して、例えば、消去ブロックＥＢｘのアドレスを指定することで、フラッシュＲＯＭ１３０に書き込まれている被書換えデータにおける消去ブロックＥＢｘのデータのハッシュ値を要求する。
【００１９】
ステップ２００では、ＥＣＵ１００のプロセッサ１１０が、ツール３００からのハッシュ値の要求に応答して、フラッシュＲＯＭ１３０に書き込まれている被書換えデータの指定アドレスから始まる消去ブロックＥＢｘのデータのハッシュ値を算出する。ここで、プロセッサ１１０は、ツール３００においてハッシュ値の比較が可能となるように、ツール３００と同一のハッシュ関数を使用してハッシュ値を算出する。そして、プロセッサ１１０は、消去ブロックＥＢｘから算出したハッシュ値をツール３００に返送する。
【００２０】
ステップ１０２では、ツール３００のプロセッサ３１０が、記憶媒体に記憶されているハッシュ値とＥＣＵ１００から返送されたハッシュ値とを比較することで、２つのハッシュ値に差異があるか否かを判定する。即ち、プロセッサ３１０は、書換えデータと被書換えデータとの間で、対応する消去ブロックのデータに違いがあるか否か、要するに、同一性があるか否かを判定する。そして、プロセッサ３１０は、２つのハッシュ値に差異があると判定すれば処理をステップ１０３へと進める一方（Ｙｅｓ）、２つのハッシュ値に差異がないと判定すれば消去ブロックＥＢｘの処理を終了させる（Ｎｏ）。
【００２１】
ステップ１０３では、ツール３００のプロセッサ３１０が、ＥＣＵ１００に対して、フラッシュＲＯＭ１３０における消去ブロックＥＢｘのデータ消去を要求する。即ち、書換えデータと被書換えデータとの間で対応する消去ブロックのデータに差異があったため、消去ブロックのデータ書換えを可能にすべく、プロセッサ３１０は、ＥＣＵ１００に対して消去ブロックＥＢｘのデータ消去を要求する。
【００２２】
ステップ２０１では、ＥＣＵ１００のプロセッサ１１０が、ツール３００からの消去要求に応答して、例えば、フラッシュＲＯＭ１３０における消去ブロックＥＢｘに所定データを書き込むことで、そのデータを消去する。
【００２３】
ステップ２０２では、ＥＣＵ１００のプロセッサ１１０が、ツール３００に対して、フラッシュＲＯＭ１３０における消去ブロックＥＢｘのデータ消去が終了したことを通知する。なお、このような通知は、ＥＣＵ１００とツール３００との間で同期をとるために行われる（以下同様）。
【００２４】
ステップ１０４では、ツール３００のプロセッサ３１０が、ＥＣＵ１００からの通知に応答して、書換えデータから消去ブロックＥＢｘに属する書込ブロックＷＢｙ（ｙ：自然数１〜ｍ）のデータを順次抽出し、これをＥＣＵ１００に対して送信する。即ち、プロセッサ３１０は、ＥＣＵ１００のフラッシュＲＯＭ１３０の記憶領域のうち、データを消去した領域に書き込むデータをＥＣＵ１００に順次送信する。
【００２５】
ステップ２０３では、ＥＣＵ１００のプロセッサ１１０が、ツール３００から受信したデータをフラッシュＲＯＭ１３０の書込ブロックＷＢｙに書き込む。
ステップ２０４では、ＥＣＵ１００のプロセッサ１１０が、ツール３００に対して、フラッシュＲＯＭ１３０の書込ブロックＷＢｙへのデータ書き込みが終了したことを通知する。
【００２６】
ステップ１０５では、ツール３００のプロセッサ３１０が、ＥＣＵ１００からの通知に応答して、例えば、書込ブロックＷＢｍまで処理が終了したか否かを介して、消去ブロックＥＢｘへのデータの書込みが終了したか否かを判定する。そして、プロセッサ３１０は、データ書込みが終了したと判定すれば消去ブロックＥＢｘの処理を終了させる一方（Ｙｅｓ）、データ書込みが終了していないと判定すれば処理をステップ１０４へと戻す（Ｎｏ）。
【００２７】
かかるデータ書換え処理の第１実施形態によれば、データの同一性を評価可能なハッシュ値を使用して、消去ブロックごとに、書換えデータと被書換えデータとの間に差異があるか否かが判定される。そして、書換えデータと被書換えデータとの間で対応する消去ブロックのデータに差異がある場合には、ツール３００からＥＣＵ１００に対して、差異がある消去ブロックのデータ消去要求が送信されると共に、その消去ブロックに属する書込ブロックを書き込むためのデータが順次送信される。ＥＣＵ１００においては、ツール３００からのデータ消去要求に応答して、消去ブロックのデータを消去すると共に、ツール３００から順次送信されたデータを書込ブロックに書き込む。
【００２８】
一方、書換えデータと被書換えデータとの間で対応する消去ブロックのデータに差異がない場合には、ツール３００からＥＣＵ１００へのデータ消去要求及びデータ通信を行わず、次の消去ブロックの処理へと移行する。
【００２９】
従って、制御パラメータの変更など、被書換えデータの一部分のみが変更された書換えデータでＥＣＵ１００のフラッシュＲＯＭ１３０を書き換える場合、変更箇所を含む消去ブロックについて、フラッシュＲＯＭ１３０のデータ消去及びデータ転送が行われる。このため、ツール３００からＥＣＵ１００へと転送する情報の総量が減り、フラッシュＲＯＭ１３０のデータ書換えに要する時間を短縮することができる。なお、フラッシュＲＯＭ１３０のデータ書換えに要する時間は、ツール３００からＥＣＵ１００へのデータ転送時間が過半数を占めるため、データ転送量の低減による効果は大であるといえる。
【００３０】
要するに、書換えデータと被書換えデータとの間で差異がある消去ブロックについてのみ、データ消去及びデータ転送を行うことで、通信量の削減を通して、フラッシュＲＯＭ１３０のデータ書換えに要する時間を短縮することができる。
【００３１】
図７は、ＥＣＵ１００のフラッシュＲＯＭ１３０のデータを書き換える、データ書換え処理の第２実施形態の一例を示す。データ書換え処理は、作業者がネットワークケーブル２００を介してＥＣＵ１００とツール３００とを接続した後、ツール３００において、作業者が書換えデータ及び被書換えデータを指定して、所定の操作を行ったときに実行される。なお、以下の説明では、先の第１実施形態と共通する処理については、重複説明を排除する観点から、簡略化することとする（以下同様）。
【００３２】
ステップ３００では、ツール３００のプロセッサ３１０が、ＥＣＵ１００に対して、フラッシュＲＯＭ１３０における消去ブロックＥＢｘのデータ消去を要求する。
ステップ４００では、ＥＣＵ１００のプロセッサ１１０が、ツール３００からの消去要求に応答して、図８に示すように、フラッシュＲＯＭ１３０の消去ブロックＥＢｘに書き込まれている書込ブロックＷＢｙのデータをＲＡＭ１４０に退避（コピー）する。
【００３３】
ステップ４０１では、ＥＣＵ１００のプロセッサ１１０が、フラッシュＲＯＭ１３０における消去ブロックＥＢｘのデータを消去する。
ステップ４０２では、ＥＣＵ１００のプロセッサ１１０が、ツール３００に対して、フラッシュＲＯＭ１３０における消去ブロックＥＢｘのデータ消去が終了したことを通知する。
【００３４】
ステップ３０１では、ツール３００のプロセッサ３１０が、公知のハッシュ関数を使用して、書換えデータの消去ブロックＥＢｘに属する各書込ブロックＷＢｙのデータのハッシュ値を順次算出する。そして、プロセッサ３１０は、書込ブロックＷＢｙのデータから算出したハッシュ値を記憶媒体に一時的に記憶させておく。
【００３５】
ステップ３０２では、ツール３００のプロセッサ３１０が、ＥＣＵ１００に対して、例えば、書込ブロックＷＢｙのアドレスを指定することで、フラッシュＲＯＭ１３０に書き込まれている被書換えデータにおける書込ブロックＷＢｙのデータのハッシュ値を要求する。
【００３６】
ステップ４０３では、ＥＣＵ１００のプロセッサ１１０が、ツール３００からのハッシュ値の要求に応答して、フラッシュＲＯＭ１３０に書き込まれている被書換えデータの指定アドレスから始まる書込ブロックＷＢｙのデータのハッシュ値を算出する。ここで、プロセッサ１１０は、ツール３００においてハッシュ値の比較が可能となるように、ツール３００と同一のハッシュ関数を使用してハッシュ値を算出する。そして、プロセッサ１１０は、書込ブロックＷＢｙから算出したハッシュ値をツール３００に返送する。
【００３７】
ステップ３０３では、ツール３００のプロセッサ３１０が、記憶媒体に記憶されているハッシュ値とＥＣＵ１００から返送されたハッシュ値とを比較することで、２つのハッシュ値に差異があるか否かを判定する。即ち、プロセッサ３１０は、書換えデータと被書換えデータとの間で、対応する書込ブロックのデータに違いがあるか否か、要するに、同一性があるか否かを判定する。そして、プロセッサ３１０は、２つのハッシュ値に差異があると判定すれば処理をステップ３０４へと進める一方（Ｙｅｓ）、２つのハッシュ値に差異がないと判定すれば処理をステップ３０５へと進める（Ｎｏ）。
【００３８】
ステップ３０４では、ツール３００のプロセッサ３１０が、書換えデータから書込ブロックＷＢｙのデータを順次抽出し、これをＥＣＵ１００に対して送信する。
ステップ４０４では、ＥＣＵ１００のプロセッサ１１０が、ツール３００から受信したデータをフラッシュＲＯＭ１３０の書込ブロックＷＢｙに書き込む。その後、プロセッサ１１０は、処理をステップ４０６へと進める。
【００３９】
ステップ３０５では、ツール３００のプロセッサ３１０が、ＥＣＵ１００に対して、ＲＡＭ１４０に退避してある消去ブロックＥＢｘのデータについて、書込ブロックＷＢｙのデータをフラッシュＲＯＭ１３０の書込ブロックＷＢｙに書き込むことを要求する。
【００４０】
ステップ４０５では、ＥＣＵ１００のプロセッサ１１０が、ツール３００からの書込み要求に応答して、ＲＡＭ１４０に退避してある消去ブロックＥＢｘのデータについて、書込ブロックＷＢｙのデータをフラッシュＲＯＭ１３０の書込ブロックＷＢｙに書き込む。
【００４１】
ステップ４０６では、ＥＣＵ１００のプロセッサ１１０が、ツール３００に対して、書込ブロックＷＢｙのデータの書き込みが終了したことを通知する。
ステップ３０６では、ツール３００のプロセッサ３１０が、ＥＣＵ１００からの通知に応答して、例えば、書込ブロックＷＢｍまで処理したか否かを介して、消去ブロックＥＢｘへのデータ書込みが終了したか否かを判定する。そして、プロセッサ３１０は、データ書込みが終了したと判定すれば消去ブロックＥＢｘの処理を終了させる一方（Ｙｅｓ）、データ書込みが終了していないと判定すれば処理をステップ３０１へと戻す（Ｎｏ）。
【００４２】
かかるデータ書換え処理の第２実施形態によれば、ＥＣＵ１００は、ツール３００からの消去要求に応答して、フラッシュＲＯＭ３００の消去ブロックＥＢｘのデータをＲＡＭ１４０に退避させてから、消去ブロックＥＢｘのデータを消去する。その後、データの同一性を評価可能なハッシュ値を使用して、書換えデータの書込ブロックＷＢｙと被書換えデータの書込ブロックＷＢｙとの間に差異があるか否かが判定される。そして、書換えデータと被書換えデータとの間に差異がある場合には、ツール３００からＥＣＵ１００へと送信された書込ブロックＷＢｙのデータがフラッシュＲＯＭ１３０に書き込まれる。一方、書換えデータと被書換えデータとの間に差異がない場合には、ＲＡＭ１４０に退避させてある書込ブロックＷＢｙのデータがフラッシュＲＯＭ１３０に書き込まれる。
【００４３】
従って、ツール３００とＥＣＵ１００との間で送受信されるデータは、各種の要求及び応答を除き、書換えデータと被書換えデータとの間で差異がある書込データＷＢｙのみとなる。このため、先の第１実施形態と比べて、ツール３００からＥＣＵ１００へと送信されるデータの総量が更に減り、データ転送時間の更なる短縮により、フラッシュＲＯＭ１３０のデータ書換えに要する時間をより短縮することができる。
【００４４】
ＥＣＵ１００において、フラッシュＲＯＭ１３０からＲＡＭ１４０へのデータ退避に要する時間と、ＲＡＭ１４０のデータをフラッシュＲＯＭ１３０に書き込むのに要する時間との和は、同一サイズのデータをツール３００からＥＣＵ１００へと送信するのに要する時間よりも短い。なぜならば、ＥＣＵ１００の内部でのデータ転送速度は、ツール３００からＥＣＵ１００へのデータ転送速度よりも速いためである。このため、ツール３００とＥＣＵ１００との間で送受信される要求及び応答が多少増えても、ツール３００からＥＣＵ１００へと送信されるデータが減るため、先の第１実施形態と比較して、フラッシュＲＯＭ１３０のデータ書換えに要する時間が短くなる。
【００４５】
図９は、ＥＣＵ１００のフラッシュＲＯＭ１３０のデータを書き換える、データ書換え処理の第３実施形態の一例を示す。データ書換え処理は、作業者がネットワークケーブル２００を介してＥＣＵ１００とツール３００とを接続した後、ツール３００において、作業者が書換えデータ及び被書換えデータを指定して、所定の操作を行ったときに実行される。
【００４６】
データ書換え処理の第３実施形態の前提として、ツール３００のストレージ３３０には、消去ブロックＥＢｘごとに、書換えデータと被書換えデータとの間に差異があるか否かを特定するためのレコードが格納されたデータベースが構築されている。なお、データベースにおいては、書込ブロックＷＢｙごとに、書換えデータと被書換えデータとの間に差異があるか否かを特定するためのレコードを格納しておいてもよい。
【００４７】
ステップ５００では、ツール３００のプロセッサ３１０が、ＥＣＵ１００に対して、被書換えデータを識別するためのデータ識別情報を要求する。
ステップ６００では、ＥＣＵ１００のプロセッサ１１０が、例えば、フラッシュＲＯＭ１３０に書き込まれている被書換えデータからデータ識別情報を読み出し、これをツール３００へと返送する。
【００４８】
ステップ５０１では、ツール３００のプロセッサ３１０が、ＥＣＵ１００から返送されたデータ識別情報に基づいて、ＥＣＵ１００のフラッシュＲＯＭ１３０に書き込まれている被書換えデータを特定する。
【００４９】
ステップ５０２では、ツール３００のプロセッサ３１０が、ストレージ３３０のデータベースを参照し、書換えデータと被書換えデータとの差分情報、即ち、どの消去ブロックＥＢｘに差異があるかを特定するための情報を算出する。具体的には、プロセッサ３１０は、データベースを参照し、書換えデータのデータ識別情報及び被書換えデータの識別情報により特定されるレコードを検索する。そして、プロセッサ３１０は、そのレコードの内容を読み出し、書換えデータ及び被書換えデータの対応する消去ブロックＥＢｘを比較することで、差分情報を生成する。
【００５０】
ステップ５０３では、ツール３００のプロセッサ３１０が、書換えデータと被書換えデータとの間で差異がある消去ブロックＥＢｘについて、ＥＣＵ１００に対してフラッシュＲＯＭ１３０の消去ブロックＥＢｘのデータ消去を順次要求する。
【００５１】
ステップ６０１では、ＥＣＵ１００のプロセッサ１１０が、ツール３００からの消去要求に応答して、フラッシュＲＯＭ１３０の消去ブロックＥＢｘのデータを消去する。
ステップ６０２では、ＥＣＵ１００のプロセッサ１１０が、ツール３００に対して、フラッシュＲＯＭ１３０の消去ブロックＥＢｘのデータ消去が終了したことを通知する。
【００５２】
ステップ５０４では、ツール３００のプロセッサ３１０が、ＥＣＵ１００からの通知に応答して、書込みデータから消去ブロックＥＢｘに属する書込ブロックＷＢｙのデータを順次抽出し、これをＥＣＵ１００に対して送信する。
【００５３】
ステップ６０３では、ＥＣＵ１００のプロセッサ１１０が、ツール３００から受信したデータをフラッシュＲＯＭ１３０の書込ブロックＷＢｙに書き込む。
ステップ６０４では、ＥＣＵ１００のプロセッサ１１０が、ツール３００に対して、フラッシュＲＯＭ１３０の書込ブロックＷＢｙへのデータ書き込みが終了したことを通知する。
【００５４】
ステップ５０５では、ツール３００のプロセッサ３１０が、ＥＣＵ１００からの通知に応答して、消去ブロックＥＢｘへのデータの書込みが終了したか否かを判定する。そして、プロセッサ３１０は、データ書込みが終了したと判定すれば処理をステップ５０６へと進める一方（Ｙｅｓ）、データ書込みが終了していないと判定すれば処理をステップ５０４へと戻す（Ｎｏ）。
【００５５】
ステップ５０６では、ツール３００のプロセッサ３１０が、書換えデータと被書換えデータとの間で差異があるすべての消去ブロックＥＢｘについて処理をしたか否かを介して、すべての差分の書込みが終了したか否かを判定する。そして、プロセッサ３１０は、すべての差分の書込みが終了したと判定すればデータ書換え処理を終了させる一方（Ｙｅｓ）、すべての差分の書込みが終了していないと判定すれば処理をステップ５０３へと戻す（Ｎｏ）。
【００５６】
かかるデータ書換え処理の第３実施形態によれば、ツール３００において、ストレージ３３０のデータベースが参照され、書換えデータと被書換えデータとの間の差分情報が算出される。そして、差分情報により特定される、書換えデータと被書換えデータとの間で差異がある消去ブロックＥＢｘについて、フラッシュＲＯＭ１３０の消去ブロックＥＢｘのデータ消去、及び、ツール３００からＥＣＵ１００への書込ブロックＷＢｙのデータ転送が行われる。従って、先の第１実施形態及び第２実施形態とは異なり、書換えデータと被書換えデータとの同一性を評価するためにハッシュ値を算出する必要がなく、第２実施形態よりも、フラッシュＲＯＭ１３０のデータ書換えに要する時間を短縮することができる。
【００５７】
書換えデータと被書換えデータとの間で差異がある消去ブロックＥＢｘを書き換えるとき、先の第２実施形態のように、消去ブロックＥＢｘのデータをＲＡＭ１４０に退避し、ツール３００からＥＣＵ１００に差異がある書込ブロックＷＢｙのデータのみを送信して、フラッシュＲＯＭ１３０のデータを書き換えるようにしてもよい。この場合には、ツール３００のストレージ３３０のデータベースには、書込ブロックＷＢｙごとに、書換えデータと被書換えデータとの間に差異があるか否かを特定するためのレコードを格納しておく必要がある。
【００５８】
ここで、データ書換え処理の第１実施形態〜第３実施形態に関し、技術的に矛盾がないことを条件として、各実施形態の技術的思想を適宜組み合わせたり、また、各実施形態の技術的思想を適宜入れ替えたりしてもよい。また、データ書換え処理の第１実施形態〜第３実施形態においては、データ書換え処理はツール３００が主体となっていたが、ＥＣＵ１００が主体となっていてもよい。以下、その具体例について説明する。
【００５９】
図１０及び図１１は、第１実施形態及び第２実施形態の技術的思想を組み合わせた、データ書換え処理の第１応用実施形態の一例を示す。なお、第１応用実施形態は、データ書換え処理の主体をツール３００にしたものである。
【００６０】
ステップ７００では、ツール３００のプロセッサ３１０が、書換えデータにおける消去ブロックＥＢｘのデータのハッシュ値を算出する。
ステップ７０１では、ツール３００のプロセッサ３１０が、ＥＣＵ１００に対して、被書換えデータにおける消去ブロックＥＢｘのデータのハッシュ値を要求する。
【００６１】
ステップ８００では、ＥＣＵ１００のプロセッサ１１０が、ツール３００からのハッシュ値の要求に応答して、被書換えデータにおける消去ブロックＥＢｘのデータのハッシュ値を算出する。そして、プロセッサ１１０は、消去ブロックＥＢｘから算出したハッシュ値をツール３００に返送する。
【００６２】
ステップ７０２では、ツール３００のプロセッサ３１０が、対応する消去ブロックＥＢｘについて、書換えデータのハッシュ値と被書換えデータのハッシュ値との間に差異があるか否かを判定する。そして、プロセッサ３１０は、２つのハッシュ値に差異があると判定すれば処理をステップ７０３へと進める一方（Ｙｅｓ）、２つのハッシュ値に差異がないと判定すれば消去ブロックＥＢｘの処理を終了させる（Ｎｏ）。
【００６３】
ステップ７０３では、ツール３００のプロセッサ３１０が、ＥＣＵ１００に対して、フラッシュＲＯＭ１３０における消去ブロックＥＢｘのデータ消去を要求する。
ステップ８０１では、ＥＣＵ１００のプロセッサ１１０が、ツール３００からの消去要求に応答して、フラッシュＲＯＭ１３０の消去ブロックＥＢｘに書き込まれているデータをＲＡＭ１４０に退避する。
【００６４】
ステップ８０２では、ＥＣＵ１００のプロセッサ１１０が、フラッシュＲＯＭ１３０における消去ブロックＥＢｘのデータを消去する。
ステップ８０３では、ＥＣＵ１００のプロセッサ１１０が、ツール３００に対して、フラッシュＲＯＭ１３０における消去ブロックＥＢｘのデータ消去が終了したことを通知する。
【００６５】
ステップ７０４では、ツール３００のプロセッサ３１０が、公知のハッシュ関数を使用して、書換えデータの消去ブロックＥＢｘに属する各書込ブロックＷＢｙのデータのハッシュ値を順次算出する。
【００６６】
ステップ７０５では、ツール３００のプロセッサ３１０が、ＥＣＵ１００に対して、被書換えデータにおける書込ブロックＷＢｙのデータのハッシュ値を要求する。
ステップ８０４では、ＥＣＵ１００のプロセッサ１１０が、ツール３００からのハッシュ値の要求に応答して、被書換えデータにおける書込ブロックＷＢｙのデータのハッシュ値を算出する。そして、プロセッサ１１０は、書込ブロックＷＢｙから算出したハッシュ値をツール３００に返送する。
【００６７】
ステップ７０６では、ツール３００のプロセッサ３１０が、対応する書込ブロックＷＢｙについて、書換えデータのハッシュ値と被書換えデータのハッシュ値との間に差異があるか否かを判定する。そして、プロセッサ３１０は、２つのハッシュ値に差異があると判定すれば処理をステップ７０７へと進める一方（Ｙｅｓ）、２つのハッシュ値に差異がないと判定すれば処理をステップ７０８へと進める（Ｎｏ）。
【００６８】
ステップ７０７では、ツール３００のプロセッサ３１０が、書換えデータから書込ブロックＷＢｙのデータを順次抽出し、これをＥＣＵ１００に対して送信する。
ステップ８０５では、ＥＣＵ１００のプロセッサ１１０が、ツール３００から受信したデータをフラッシュＲＯＭ１３０の書込ブロックＷＢｙに書き込む。その後、プロセッサ１１０は、処理をステップ８０７へと進める。
【００６９】
ステップ７０８では、ツール３００のプロセッサ３１０が、ＥＣＵ１００に対して、ＲＯＭ１４０に退避してある消去ブロックＥＢｘのデータについて、書込ブロックＷＢｙのデータをフラッシュＲＯＭ１３０の書込ブロックＷＢｙに書き込むことを要求する。
【００７０】
ステップ８０６では、ＥＣＵ１００のプロセッサ１１０が、ツール３００からの書込み要求に応答して、ＲＡＭ１４０に退避してある消去ブロックＥＢｘのデータについて、書込ブロックＷＢｙのデータをフラッシュＲＯＭ１３０の書込ブロックＷＢｙに書き込む。
【００７１】
ステップ８０７では、ＥＣＵ１００のプロセッサ１１０が、ツール３００に対して、書込ブロックＷＢｙのデータの書き込みが終了したことを通知する。
ステップ７０９では、ツール３００のプロセッサ３１０が、ＥＣＵ１００からの通知に応答して、消去ブロックＥＢｘへのデータ書込みが終了したか否かを判定する。そして、プロセッサ３１０は、データ書込みが終了したと判定すれば消去ブロックＥＢｘの処理を終了させる一方（Ｙｅｓ）、データ書込みが終了していないと判定すれば処理をステップ７０４へと戻す（Ｎｏ）。
【００７２】
かかるデータ書換え処理の第１応用実施形態によれば、書換えデータと被書換えデータとの間で差異がある消去ブロックについて、各書込ブロックの同一性が評価される。そして、対応する書込ブロックに同一性があれば、ＲＡＭ１４０に退避されたデータがフラッシュＲＯＭ１３０に書き込まれ、対応する書込ブロックに同一性がなければ、ツール３００からＥＣＵ１００に送信されたデータがフラッシュＲＯＭ１３０に書き込まれる。
【００７３】
従って、先の第１実施形態及び第２実施形態と比べて、ツール３００からＥＣＵ１００へと送信されるデータの総量が更に減り、フラッシュＲＯＭ１３０のデータ書込みに要する時間を短縮することができる。
【００７４】
図１２及び図１３は、第１実施形態及び第２実施形態の技術的思想を組み合わせた、データ書換え処理の第２応用実施形態の一例を示す。なお、第２応用実施形態は、データ書換え処理の主体をＥＣＵ１００にしたものである。
【００７５】
ステップ９００では、ツール３００のプロセッサ３１０が、書換えデータにおける消去ブロックＥＢｘのデータのハッシュ値を算出する。
ステップ９０１では、ツール３００のプロセッサ３１０が、ＥＣＵ１００に対して、被書換えデータにおける消去ブロックＥＢｘのデータ消去を要求すると共に、ステップ９００で算出したハッシュ値を送信する。
【００７６】
ステップ１０００では、ＥＣＵ１００のプロセッサ１１０が、ツール３００からの消去要求に応答して、被書換えデータにおける消去ブロックＥＢｘのデータのハッシュ値を算出する。
【００７７】
ステップ１００１では、ＥＣＵ１００のプロセッサ１１０が、ツール３００から受信したハッシュ値とステップ１０００で算出したハッシュ値とを比較することで、２つのハッシュ値に差異があるか否かを判定する。そして、プロセッサ１１０は、２つのハッシュ値に差異があると判定すれば処理をステップ１００２へと進める一方（Ｙｅｓ）、２つのハッシュ値に差異がないと判定すれば消去ブロックＥＢｘの処理を終了させる（Ｎｏ）。
【００７８】
ステップ１００２では、ＥＣＵ１００のプロセッサ１１０が、フラッシュＲＯＭ１３０の消去ブロックＥＢｘに書き込まれているデータをＲＡＭ１４０に退避する。
ステップ１００３では、ＥＣＵ１００のプロセッサ１１０が、フラッシュＲＯＭ１３０における消去ブロックＥＢｘのデータを消去する。
【００７９】
ステップ１００４では、ＥＣＵ１００のプロセッサ１１０が、ＲＡＭ１４０に退避してある消去ブロックＥＢｘのデータから、書込ブロックＷＢｙのデータのハッシュ値を順次算出する。
ステップ１００５では、ＥＣＵ１００のプロセッサ１１０が、ツール３００に対して、書換えデータの消去ブロックＥＢｘに属する書込ブロックＷＢｙのデータのハッシュ値を要求する。
【００８０】
ステップ９０２では、ツール３００のプロセッサ３１０が、ＥＣＵ１００からのハッシュ値の要求に応答して、書換えデータにおける書込ブロックＷＢｙのデータのハッシュ値を算出する。そして、プロセッサ３１０は、書込ブロックＷＢｙから算出したハッシュ値をＥＣＵ１００に返送する。
【００８１】
ステップ１００６では、ＥＣＵ１００のプロセッサ１１０が、対応する書込ブロックＷＢｙについて、書換えデータのハッシュ値と被書換えデータのハッシュ値との間に差異があるか否かを判定する。そして、プロセッサ１１０は、２つのハッシュ値に差異があると判定すれば処理をステップ１００７へと進める一方（Ｙｅｓ）、２つのハッシュ値に差異がないと判定すれば処理をステップ１００９へと進める（Ｎｏ）。
【００８２】
ステップ１００７では、ＥＣＵ１００のプロセッサ１１０が、ツール３００に対して、書換えデータにおける書込ブロックＷＢｙのデータを要求する。
ステップ９０３では、ツール３００のプロセッサ３１０が、ＥＣＵ１００からの要求に応答して、書換えデータから書込ブロックＷＢｙのデータを順次抽出し、これをＥＣＵ１００に対して送信する。
【００８３】
ステップ１００８では、ＥＣＵ１００のプロセッサ１１０が、ツール３００から受信したデータをフラッシュＲＯＭ１３０の書込ブロックＷＢｙに書き込む。その後、プロセッサ１１０は、処理をステップ１０１０へと進める。
【００８４】
ステップ１００９では、ＥＣＵ１００のプロセッサ１１０が、ＲＡＭ１４０に退避してある消去ブロックＥＢｘのデータについて、書込ブロックＷＢｙのデータをフラッシュＲＯＭ１３０の書込ブロックＷＢｙに書き込む。
【００８５】
ステップ１０１０では、ＥＣＵ１００のプロセッサ１１０が、消去ブロックＥＢｘへのデータ書込みが終了したか否かを判定する。そして、プロセッサ１１０は、データ書込みが終了したと判定すれば消去ブロックＥＢｘの処理を終了させる一方（Ｙｅｓ）、データ書込みが終了していないと判定すれば処理をステップ１００４へと戻す（Ｎｏ）。
【００８６】
かかるデータ書換え処理の第２応用実施形態によれば、データ書込み処理は、基本的な消去ブロックＥＢｘの消去要求，書込みブロックＷＢｙのハッシュ値の変更及び書込みブロックＷＢｙの送信を除き、ＥＣＵ１００において行われる。このため、例えば、機能追加などによりデータ書込み処理を変更しても、ツール３００における処理の変更を要しない。但し、例えば、書換えデータにおける消去ブロックＥＢｘ，書込ブロックＷＢｙのデータのハッシュ値を算出するハッシュ関数を変更する場合には、ツール３００における処理も変更する必要があるが、基本的な処理には影響が少ないため、その変更箇所を少なくすることができる。ツール３００は、多様なＥＣＵ１００に対して共通して使用されるため、このような効果は有用である。なお、他の作用及び効果は、先の第１応用実施形態と同様であるので、必要があればその説明を参照されたい。
【００８７】
このように、データ書換え処理の第１実施形態〜第３実施形態の技術的思想を適宜組み合わせたり、また、各実施形態の技術的思想を適宜入れ替えたりすることで、多様な作用及び効果を奏する、データ書換えシステムを構築することができる。
【００８８】
なお、第１実施形態及び第２実施形態において、消去ブロックＥＢｘ及び書込ブロックＷＢｙのデータのハッシュ値を前もって算出しておき、これを書換えデータ及び被書換えデータに関連付けて記憶させておいてもよい。このようにすれば、フラッシュＲＯＭ１３０のデータを書き換えるとき、ハッシュ値を算出する処理が不要となるため、ツール３００及びＥＣＵ１００の負荷を低減することができる。
【００８９】
また、ＥＣＵ１００のフラッシュＲＯＭ１３０へのデータ書込み処理は、ＥＣＵ１００が車両に搭載された状態で行うようにしてもよい。このようにすれば、例えば、機能拡張などにより制御プログラムなどが変更されても、車両に搭載されたＥＣＵ１００のデータを書き換えることができる。
【００９０】
ここで、前記実施形態から把握し得る請求項以外の技術的思想について、以下に効果と共に記載する。
【００９１】
（イ）前記データの識別情報は、ハッシュ値である、ことを特徴とする請求項２又は請求項３に記載の電子制御装置。
かかる技術的思想によれば、２つのデータの同一性を容易に判定することができる。
【００９２】
（ロ）前記ツールは、前記不揮発性メモリに書き込むデータと前記不揮発性メモリに書き込まれているデータとの間で同一性がない消去ブロック単位のデータについて、前記電子制御装置にデータ書換え要求を送信する、ことを特徴とする請求項４に記載の電子制御装置。
かかる技術的思想によれば、２つのデータ間で同一性がある消去ブロック単位のデータは、データの消去及び書き込みが実行されないため、データ転送量の削減を通して、不揮発性メモリのデータ書換えに要する時間を更に短縮することができる。
【００９３】
（ハ）前記ツールは、前記不揮発性メモリに書き込むデータと前記不揮発性メモリに書き込まれているデータとの差分情報が格納されたデータベースを参照し、前記電子制御装置から送信されたデータ識別情報に応じた差分情報を求める、ことを特徴とする請求項４又は（ロ）に記載の電子制御装置。
かかる技術的思想によれば、不揮発性メモリに書き込まれているデータに基づいて、不揮発性メモリに書き込むデータと不揮発性メモリに書き込まれているデータとの差分情報を求めることができる。
【符号の説明】
【００９４】
１００  ＥＣＵ
１１０  プロセッサ
１２０  通信回路
１３０  フラッシュＲＯＭ（不揮発性メモリ）
１４０  ＲＡＭ（揮発性メモリ）
２００  ネットワークケーブル
３００  ツール
３１０  プロセッサ
３２０  通信回路
【図１】
2014182859.tif 000003
【図２】
2014182859.tif 000004
【図３】
2014182859.tif 000005
【図４】
2014182859.tif 000006
【図５】
2014182859.tif 000007
【図６】
2014182859.tif 000008
【図７】
2014182859.tif 000009
【図８】
2014182859.tif 000010
【図９】
2014182859.tif 000011
【図１０】
2014182859.tif 000012
【図１１】
2014182859.tif 000013
【図１２】
2014182859.tif 000014
【図１３】
2014182859.tif 000015