(57)【特許請求の範囲】
【請求項１】
データの消去及び書き込みが可能で、記憶領域の一部又は全部が書き換え対象領域（３１）になっている不揮発性メモリ（１９）と、
外部の書き換えツール（１５）から送信されてくる指令に応じて、前記不揮発性メモリにおける前記書き換え対象領域のデータを消去する消去手段（１７，Ｓ１０５）と、
前記書き換えツールから、前記書き換え対象領域に書き込むべきデータとして送信されてくる書き込みデータ（４１）を、前記消去手段によってデータの消去が行われた前記書き換え対象領域に書き込む書込制御手段（１７，Ｓ１１０〜Ｓ１９０）と、を備え、
前記書込制御手段は、
前記書き込みデータを所定のデータ量ずつにした処理単位データのそれぞれについて、エラーチェックを行い、前記エラーチェックでエラー無しと判定した前記処理単位データを、前記書き換え対象領域のうち、その処理単位データに対応する領域に書き込むようになっており、
更に、前記書込制御手段は、
前記エラーチェックでエラー有りと判定した場合には、そのエラー有りと判定した前記処理単位データの前記書き換え対象領域への書き込みを行わずに、前記書き換え対象領域のうち、そのエラー有りと判定した前記処理単位データに対応する領域を未書き込み状態にしたまま、次の前記処理単位データについての前記エラーチェックを実施すること、
を特徴とする電子制御装置。
【請求項２】
請求項１に記載の電子制御装置において、
前記書き換えツールから当該電子制御装置へは、前記書き込みデータと共に、その書き込みデータと比較されるベリファイデータ（４２）が送信されるようになっており、
前記エラーチェックは、
前記処理単位データと、前記ベリファイデータのうち、その処理単位データに対応する部分である部分ベリファイデータとが、一致しているか否かを判定して、不一致ならばエラー有りと判定するチェック（Ｓ１４０）であること、
を特徴とする電子制御装置。
【請求項３】
請求項２に記載の電子制御装置において、
前記書込制御手段は、
前記エラーチェックでエラー有りと判定した場合には、更に、エラー有りと判定した前記処理単位データと前記部分ベリファイデータとが特定の関係であるか否かを判定し（Ｓ１８０）、前記処理単位データと前記部分ベリファイデータとが特定の関係であれば、前記書き換え対象領域のうち、エラー有りと判定した前記処理単位データに対応する領域を未書き込み状態にしたまま、次の前記処理単位データについての前記エラーチェックを実施するが、前記処理単位データと前記部分ベリファイデータとが特定の関係でなければ、異常と判断して動作を終了すること（Ｓ１９０）、
を特徴とする電子制御装置。
【請求項４】
請求項１ないし請求項３の何れか１項に記載の電子制御装置（１３）と、
前記電子制御装置の前記不揮発性メモリ（１９）における前記書き換え対象領域（３１）に記憶されているソフトウェアを書き換えるために前記電子制御装置と通信する書き換えツール（１５）と、
を備えるソフトウェア書き換えシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置のソフトウェアを書き換える技術に関する。
【背景技術】
【０００２】
例えば、車両に搭載される電子制御装置として、電気的にデータの消去及び書き込みが可能な不揮発性メモリ（以下、書き換え可能不揮発性メモリともいう）に、制御対象を制御するためのプログラムやデータからなるソフトウェアを格納するものがある。そして、この種の電子制御装置では、外部装置である書き換えツール（メモリ書換機）によって、書き換え可能不発性メモリ内のソフトウェアを書き換えることができるようにしている。具体的には、電子制御装置の処理部は、書き換えツールからの消去命令に従い、書き換え可能不揮発性メモリにおける書き換え対象領域のデータ（詳しくは、ソフトウェアを構成するデータ）を消去し、その消去後の書き換え対象領域に、書き換えツールからの書き込みデータを書き込む（例えば、特許文献１参照）。
【０００３】
そして、書き換え可能不揮発性メモリとしては、フラッシュメモリが知られている。
従来のフラッシュメモリは、消去後は「１」の状態であり、「１」から「０」へ状態を変えられる特徴を持つ。このため、フラッシュメモリの書き換え対象領域に記憶されているデータ（ソフトウェア）を書き換える際には、書き換え対象領域のデータを消去してから、その書き換え対象領域に「１」または「０」を書き込むことで所望のデータ列を作成することとなる。また、フラッシュメモリの書き換え対象領域のうち、書き込み可能領域としたい領域には、「１」を書き込むようにする。書き込み可能領域は、電子制御装置の動作中において、例えば故障情報や制御に関する履歴情報など、電源供給が遮断されても保存しておきたいデータを、書き込んで保存するための記憶領域である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−１１９５３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年、フラッシュメモリとして、消去状態が「１」ではなく「不定」であるフラッシュメモリ（以下、新フラッシュメモリともいう）が登場した。新フラッシュメモリでは、消去後の「不定」から「１」または「０」を書き込むことでデータ列を作成することとなる。このため、書き換え対象領域のうち、書き込み可能領域については、消去状態である「不定」のままにする必要がある。
【０００６】
このような新フラッシュメモリにおいて、書き換え対象領域の中に書き込み可能領域を作るため（つまり、その領域を「不定」のままにするため）には、消去後に該当領域に何も書き込まないようにすれば良い。しかし、従来のソフトウェア書き換えシステムでは、書き換え対象領域全体に「１」か「０」を書き込む仕組みであるため、新フラッシュメモリの書き換え対象領域における任意の領域を「不定」のまま残すことができない。よって、書き込み可能領域を作ることができない。
【０００７】
そこで、例えば、書き換えツールから電子制御装置へ、消去後未書き込みのまま（換言すれば「不定」のまま）にすべき記憶領域を示す専用の位置情報が送信され、電子制御装置は、フラッシュメモリにおける消去後の書換え対象領域のうち、その位置情報が示す記憶領域に対しては書き込みを行わないようにすることが考えられる。
【０００８】
しかし、書き換えツールから電子制御装置へ上記専用の位置情報を送信する手法は、市場に既に流通している書き換えツールのロジック変更を招くため、実施するのが困難である。
【０００９】
そこで、本発明は、書き換えツールから、消去後未書き込みのままにすべき記憶領域を示す専用の位置情報を送信することなく、消去状態が「不定」である新フラッシュメモリの書き換え対象領域に、書き込み可能領域を作ることが可能な電子制御装置の提供、を目的としている。
【課題を解決するための手段】
【００１０】
第１発明の電子制御装置は、データの消去及び書き込みが可能で、記憶領域の一部又は全部が書き換え対象領域になっている不揮発性メモリと、外部の書き換えツールから送信されてくる指令に応じて、不揮発性メモリにおける書き換え対象領域のデータを消去する消去手段と、書き換えツールから、書き換え対象領域に書き込むべきデータとして送信されてくる書き込みデータを、消去手段によってデータの消去が行われた前記書き換え対象領域に書き込む書込制御手段と、を備える。
【００１１】
そして、書込制御手段は、書き込みデータを所定のデータ量ずつにした処理単位データのそれぞれについて、エラーチェックを行い、そのエラーチェックでエラー無しと判定した処理単位データを、前記書き換え対象領域のうち、その処理単位データに対応する領域に書き込むようになっている。更に、書込制御手段は、前記エラーチェックでエラー有りと判定した場合には、そのエラー有りと判定した処理単位データの前記書き換え対象領域への書き込みを行わずに、前記書き換え対象領域のうち、そのエラー有りと判定した処理単位データに対応する領域を未書き込み状態にしたまま、次の処理単位データについてのエラーチェックを実施する。
【００１２】
この電子制御装置によれば、書き換えツールから送信される書き込みデータのうち、書き込み可能領域としたい領域に対応する書き込みデータについては、エラーチェックでエラー有りと判定されるようにしておけば良い。そのようにすれば、不揮発性メモリにおける書き換え対象領域のうち、書き込み可能領域としたい領域を、消去後未書き込みのままにすることができる。そして、前記不揮発性メモリが、前述の新フラッシュメモリであれば、書き込み可能領域としたい領域を、消去後未書き込みの状態である「不定」のままにすることができる。よって、書き換えツールから、消去後未書き込みのままにすべき記憶領域を示す専用の位置情報を送信することなく、新フラッシュメモリの書き換え対象領域に書き込み可能領域を作ることができる。
【００１３】
なお、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１４】
【図１】実施形態のソフトウェア書き換えシステムを表す構成図である。
【図２】フラッシュメモリを説明する第１の説明図である。
【図３】フラッシュメモリを説明する第２の説明図である。
【図４】書き換えシーケンスを説明する説明図である。
【図５】消去処理を表すフローチャートである。
【図６】書込制御処理を表すフローチャートである。
【図７】実施形態の作用を説明する説明図である。
【発明を実施するための形態】
【００１５】
以下に、本発明が適用された実施形態のソフトウェア書き換えシステムについて説明する。
図１に示すように、実施形態のソフトウェア書き換えシステム１１は、車両に搭載された電子制御装置（以下、ＥＣＵという）１３と、ＥＣＵ１３に通信線１４を介して接続される外部装置としての書き換えツール１５とを備える。尚、ＥＣＵは、「Electronic Control Unit」の略である。
【００１６】
ＥＣＵ１３は、例えば、車両のエンジンを制御するＥＣＵである。書き換えツール１５は、例えば、マイクロコンピュータを主要部とした専用の装置あるいはパーソナルコンピュータである。車両において、ＥＣＵ１３は通信線１４に常時接続されている。そして、書き換えツール１５は、車両に装備されたコネクタ（図示省略）を介して通信線１４に接続される。
【００１７】
ＥＣＵ１３は、当該ＥＣＵ１３の動作を司るＣＰＵ（中央処理装置）１７と、ＣＰＵ１７が実行するプログラムやプログラムの実行時に参照されるデータからなるソフトウェアを格納するフラッシュメモリ１９と、ＣＰＵ１７による演算結果を記憶するＲＡＭ２１と、を備える。そして、ＣＰＵ１７とフラッシュメモリ１９とＲＡＭ２１は、バス２３を介して接続されている。更に、ＥＣＵ１３は、通信線１４に接続された書き換えツール１５を含む他の装置とＣＰＵ１７が通信するための通信回路２５も備える。
【００１８】
フラッシュメモリ１９は、データの消去及び書き込みが可能な不揮発性メモリ（書き換え可能不揮発性メモリ）であるが、この例では、消去状態が「不定」となる新フラッシュメモリである。図２に示すように、フラッシュメモリ１９では、数キロバイト程度の記憶領域であるブロック（ブロック１，ブロック２，…ブロックＮ）毎に、データの消去が行われ、そのブロックよりも小さい数バイト程度の書き込み単位毎に、データの書き込みが行われる。そして、図３に示すように、フラッシュメモリ１９では、消去後のビット値が、「０」と「１」との何れにも決まらない「不定」となる。尚、「不定」の場合、例えば、ビット値が読み出せないか、読み出す度に違う値が読み出される。また、フラッシュメモリ１９は、指定領域が未書き込み領域か書き込み済み領域かを、ソフトウェアによって問い合わせると、回答をする機能を有しているが、そのような機能がないものでも良い。
【００１９】
図１に示すように、フラッシュメモリ１９には、書き換え対象領域３１と、書き換え禁止領域３２とが設けられている。
書き換え対象領域３１は、１つ以上のブロックからなる。そして、書き換え対象領域３１には、制御対象（この例ではエンジン）を制御するためのプログラム及びデータからなるソフトウェアが格納されるが、その書き換え対象領域３１の一部は、書き込み可能領域３３として用いられる。書き込み可能領域３３は、ＥＣＵ１３の動作中において、例えば故障情報やエンジンの制御に関する履歴情報など、当該ＥＣＵ１３への電源供給が遮断されても保存しておきたいデータを、書き込んで保存するための記憶領域である。
【００２０】
書き換え禁止領域３２には、書き換え対象領域３１のデータ（詳しくは、ソフトウェアを構成するデータ）を書き換えるためのソフトウェアであるリプログソフト３５が記憶されている。そして、リプログソフト３５は、書き換え対象領域３１に対する消去や書き込みを制御するためのフラッシュ制御部３７と、書き換えツール１５との通信を制御するための通信制御部３８と、ベリファイ部３９と、を備える。ベリファイ部３９は、書き換え対象領域３１に書き込むべきデータとして書き換えツール１５から送信されてくる書き込みデータ４１が、正常か否かを判定するエラーチェックを行うための部分である。
【００２１】
また、図１に示すように、書き換えツール１５からＥＣＵ１３へは、書き換え対象領域３１に書き込むべきデータである書き込みデータ４１と共に、その書き込みデータ４１と比較されるベリファイデータ４２も送信される。
【００２２】
書き込みデータ４１とベリファイデータ４２のデータ量は、互いに同じであると共に、書き換え対象領域３１のサイズとも同じである。そして、書き込みデータ４１は、書き換え対象領域３１の先頭アドレスから、前述の書き込み単位毎に順番に書き込まれるようになっている。尚、書き込みデータ４１及びベリファイデータ４２のデータ量は、書き換え対象領域３１のサイズより小さくても良い。
【００２３】
また、本実施形態において、書き換えツール１５から送信する書き込みデータ４１とベリファイデータ４２のうち、書き換え対象領域３１において消去後「不定」のままにしたい領域に対応する部分については、両方のデータ４１，４２が不一致で且つ特定の関係となるように事前に加工される。消去後「不定」のままにしたい領域とは、消去後未書き込みのままにしたい領域であって、書き込み可能領域３３としたい領域のことである。この例では、書き込みデータ４１とベリファイデータ４２のうち、消去後「不定」のままにしたい領域に対応する部分（図１のベリファイデータ４２において、ハッチングを付した部分）は、両方のデータ４１，４２が、特定の関係としてビット反転の関係となるように加工される。
【００２４】
一方、書き換えツール１５に対する書き込みデータ４１及びベリファイデータ４２の設定は、例えばユーザが所定の記憶媒体を介して行う。この場合のユーザとは、書き換えツール１５を用いて上記書き換え対象領域３１内のソフトウェアを書き換えようとする人のことである。
【００２５】
次に、ソフトウェア書き換えシステム１１における書き換えシーケンスについて説明する。
図４における〈１〉，〈２〉，〈３〉に示すように、ユーザは、事前に用意されている書き換えデータ４０から、書き込みデータ４１とベリファイデータ４２を作成する。
【００２６】
書き換えデータ４０は、書き換え対象領域３１に書き込む予定の書き込みデータ４１と同じものである。
このため、ユーザは、書き換えデータ４０と同じデータを、書き込みデータ４１として作成する。また、ユーザは、書き換えデータ４０（＝書き込みデータ４１）のうち、書き換え対象領域３１において消去後「不定」のままにしたい領域（即ち、書き込み可能領域３３にしたい領域）に対応する部分を、ビット反転させる。そして、ユーザは、そのビット反転の加工を行った後の書き換えデータ４０を、ベリファイデータ４２とする。尚、ビット反転させる部分のデータ単位量であって、書き込み可能領域３３とする領域の単位は、本実施形態では、フラッシュメモリ１９の書き込み単位であるが、書き込み単位の２以上の整数倍であっても良い。また、図４に示すベリファイデータ４２において、「~ｄ」と記載したハッチングの部分は、書き込みデータ４１に対してビット反転されている部分を表している。そして、このことは、後述する図７についても同様である。また、変形例として、書き換えデータ４０と同じデータをベリファイデータ４２とし、上記ビット反転の加工を行った後の書き換えデータ４０を、書き込みデータ４１としても良い。一方、書き込みデータ４１及びベリファイデータ４２を作成する主体は、ユーザ以外のデータ提供者やデータ加工処理装置でも良い。
【００２７】
図４における〈４〉に示すように、ユーザは、書き込みデータ４１とベリファイデータ４２を、例えばＣＤＲＯＭやメモリカード等の記憶媒体を介して、書き換えツール１５に設定する。そして、ユーザは、書き換えツール１５に対して、開始指令を与える。
【００２８】
図４における〈５〉に示すように、書き換えツール１５は、ユーザによって開始指令が与えられると、ＥＣＵ１３に消去コマンドを送信する。
すると、ＥＣＵ１３において、ＣＰＵ１７は、リプログソフト３５を実行することにより、図４における〈６〉に示すように、消去処理を行う。ＣＰＵ１７は、消去処理では、図４における〈７〉に示すように、リプログソフト３５中の消去命令に従って、フラッシュメモリ１９における書き換え対象領域３１のデータを全て消去する。すると、書き換え対象領域３１の記憶内容は全て「不定」になる。尚、ＣＰＵ１７は、図５に示すように、消去処理では、書き換え対象領域３１のデータを、前述のブロック毎に消去する（Ｓ１０５）。
【００２９】
書き換え対象領域３１のデータ消去が完了すると、図４における〈８〉に示すように、書き換えツール１５は、ＥＣＵ１３に書き込みコマンドを送信し、その後、ＥＣＵ１３に書き込みデータ４１を送信する。
【００３０】
すると、ＥＣＵ１３において、ＣＰＵ１７は、リプログソフト３５を実行することにより、図４における〈９〉に示すように、書き換えツール１５からの書き込みデータ４１を受信してＲＡＭ２１に格納する。
【００３１】
ＥＣＵ１３において書き込みデータ４１のＲＡＭ２１への格納が完了すると、図４における〈１０〉に示すように、書き換えツール１５は、ＥＣＵ１３にベリファイコマンドを送信し、その後、ＥＣＵ１３にベリファイデータ４２を送信する。
【００３２】
すると、ＥＣＵ１３において、ＣＰＵ１７は、リプログソフト３５を実行することにより、書き換えツール１５からのベリファイデータ４２を受信してＲＡＭ２１に格納し、図４における〈１１〉に示すように、書き込みデータ４１のエラーチェックの処理として、ベリファイ処理を行う。
【００３３】
ベリファイ処理は、一致／不一致の比較チェックを行う処理である。ＣＰＵ１７は、ベリファイ処理では、書き換えツール１５からの書き込みデータ４１とベリファイデータ４２とを、フラッシュメモリ１９の書き込み単位毎に比較する。そして、ＣＰＵ１７は、ベリファイデータ４２と一致したと判定した書き込み単位の書き込みデータ４１を、図４における〈１２〉に示すように、リプログソフト３５中の書き込み命令に従って、フラッシュメモリ１９の書き換え対象領域３１に書き込む。
【００３４】
そして、ＣＰＵ１７は、書き換え対象領域３１へのデータの書き込みが全て完了すると、図４における〈１３〉に示すように、書き換えツール１５へ書き換え完了通知を送信する。すると、書き換えツール１５は、図４における〈１４〉に示すように、ユーザに対して書き換え完了を通知する。
【００３５】
次に、ＥＣＵ１３のＣＰＵ１７が行う書込制御処理について図６を用い説明する。尚、書込制御処理は、図４における〈９〉，〈１１〉，〈１２〉の動作を実現する処理である。
【００３６】
ＣＰＵ１７は、書き換えツール１５からの書き込みコマンドを受信すると、図６の書込制御処理を開始する。
そして、ＣＰＵ１７は、書込制御処理を開始すると、Ｓ１１０にて、書き換えツール１５から送信されてくる書き込みデータ４１を受信してＲＡＭ２１に格納する。その後、ＣＰＵ１７は、書き換えツール１５からのベリファイコマンドを受信すると、Ｓ１２０にて、書き換えツール１５から送信されてくるベリファイデータ４２を受信してＲＡＭ２１に格納する。
【００３７】
ＣＰＵ１７は、次のＳ１３０では、書き換えツール１５から受信した書き込みデータ４１とベリファイデータ４２とのそれぞれについて、先頭から書き込み単位ずつ切り出す処理を行う。尚、このＳ１３０の処理が実行される毎に、書き込み単位の書き込みデータ４１とベリファイデータ４２とが、１組切り出される。
【００３８】
そして、ＣＰＵ１７は、Ｓ１４０にて、今回のＳ１３０で切り出した書き込み単位の書き込みデータ４１とベリファイデータ４２とについて、ベリファイ処理（比較チェック）を行う。つまり、Ｓ１３０で切り出した書き込み単位の書き込みデータ４１とベリファイデータ４２とが、一致しているか否かを判定する。そして、書き込み単位の両方のデータ４１，４２が一致していれば（Ｓ１４０：ＹＥＳ）、今回のＳ１３０で切り出した書き込み単位の書き込みデータ４１にエラーは無いと判定して、Ｓ１５０に進む。
【００３９】
ＣＰＵ１７は、Ｓ１５０では、今回のＳ１３０で切り出した書き込み単位の書き込みデータ４１を、書き換え対象領域３１に書き込む。そして、ＣＰＵ１７は、次のＳ１６０にて、書き換え対象領域３１における書き込み位置を、Ｓ１３０で切り出すデータ量の分だけ（この例では、書き込み単位の分だけ）進める。尚、書き換え対象領域３１における書き込み位置の初期値は、書き換え対象領域３１の先頭アドレスである。
【００４０】
そして、ＣＰＵ１７は、次のＳ１７０にて、書き換え対象領域３１の全てについて処理を終了したか否かを判定する。具体的には、Ｓ１６０で進めた書き込み位置が、書き換え対象領域３１の最終アドレスに達したか否かを判定する。
【００４１】
ＣＰＵ１７は、Ｓ１７０にて、書き換え対象領域３１の全てについて処理を終了したと判定した場合には、当該書込制御処理を終了するが、書き換え対象領域３１の全てについて処理を未だ終了していないと判定した場合には、Ｓ１３０に戻る。
【００４２】
また、ＣＰＵ１７は、上記Ｓ１４０にて、今回のＳ１３０で切り出した書き込み単位の書き込みデータ４１とベリファイデータ４２とが、一致していないと判定した場合には、今回のＳ１３０で切り出した書き込み単位の書き込みデータ４１にエラーが有ると判定して、Ｓ１８０に進む。
【００４３】
ＣＰＵ１７は、Ｓ１８０では、今回のＳ１３０で切り出した書き込み単位の書き込みデータ４１とベリファイデータ４２とが、特定の関係（この例ではビット反転の関係）になっているか否かを判定する。そして、ＣＰＵ１７は、今回のＳ１３０で切り出した書き込み単位の書き込みデータ４１とベリファイデータ４２とが、特定の関係になっていると判定した場合には（Ｓ１８０：ＹＥＳ）、Ｓ１５０の処理を行うことなくＳ１６０に進む。つまり、今回のＳ１３０で切り出した書き込み単位の書き込みデータ４１を、書き換え対象領域３１に書き込むことなく、書き換え対象領域３１における書き込み位置を書き込み単位の分だけ進め、次のＳ１３０で切り出される書き込み単位の書き込みデータ４１について上記Ｓ１４０での判定を行う。よって、書き換え対象領域３１のうち、今回のＳ１３０で切り出した書き込み単位の書き込みデータ４１に対応する領域（つまり、その書き込み単位の書き込みデータ４１が書き込まれる予定であった領域）は、消去後未書き込みのままになる。
【００４４】
一方、ＣＰＵ１７は、Ｓ１８０にて、今回のＳ１３０で切り出した書き込み単位の書き込みデータ４１とベリファイデータ４２とが、特定の関係になっていないと判定した場合には、Ｓ１９０に進む。そして、ＣＰＵ１７は、Ｓ１９０では、ベリファイ異常と判定して、そのまま当該書込制御処理を終了する。ベリファイ異常は、書き換えツール１５から受信した書き込みデータ４１が異常であることを意味する。そして、ベリファイ異常と判定された場合、書込制御処理は異常終了することとなる。
【００４５】
以上のような書込制御処理により、図７に示すように、書き込みデータ４１のうち、ベリファイデータ４２と一致するデータについては、書き換え対象領域３１への書き込みが実施される（Ｓ１４０：ＹＥＳ→Ｓ１５０）。これに対して、書き込みデータ４１のうち、ベリファイデータ４２と不一致で且つビット反転の関係にあるデータ（以下、特定エラーデータという）については、書き換え対象領域３１への書き込みが実施されない。そして、書き換え対象領域３１のうち、その特定エラーデータに対応する領域は、未書き込みのままとなる（Ｓ１４０：ＮＯ→Ｓ１８０：ＹＥＳ→Ｓ１６０）。また、書き込み単位の書き込みデータ４１とベリファイデータ４２とが、不一致で、且つ、ビット反転の関係でなければ、ベリファイ異常と判定されて、書き換え対象領域３１への書き込みが中止される（Ｓ１４０：ＮＯ→Ｓ１８０：ＮＯ→Ｓ１９０）。
【００４６】
本実施形態では、Ｓ１３０で切り出される書き込み単位の書き込みデータ４１が、「書き込みデータ４１を所定のデータ量ずつにした処理単位データ」に相当している。また、Ｓ１３０で切り出される書き込み単位のベリファイデータ４２が、「ベリファイデータ４２のうち、処理単位データに対応する部分である部分ベリファイデータ」に相当している。そして、Ｓ１４０の判定（比較チェック）が、処理単位データのそれぞれについて行われるエラーチェックに相当している。
【００４７】
つまり、書込制御処理では、書き込みデータ４１を所定のデータ量ずつにした処理単位データのそれぞれについて、エラーチェックを行っている（Ｓ１３０，Ｓ１４０）。そして、エラーチェックでエラー無しと判定した処理単位データを、書き換え対象領域３１のうち、その処理単位データに対応する領域に書き込むようになっている（Ｓ１４０：ＹＥＳ→Ｓ１５０，Ｓ１６０）。一方、エラーチェックでエラー有りと判定した場合には（Ｓ１４０：ＮＯ）、エラー有りと判定した処理単位データと、それに対応する部分ベリファイデータとが特定の関係であるか否かを判定する（Ｓ１８０）。そして、特定の関係であれば、エラー有りと判定した処理単位データの書き換え対象領域３１への書き込みを行わずに、書き換え対象領域３１のうち、エラー有りと判定した処理単位データに対応する領域を未書き込み状態にしたまま、次の処理単位データについてのエラーチェックを実施する（Ｓ１８０：ＹＥＳ→Ｓ１６０→Ｓ１７０：ＮＯ→Ｓ１３０→Ｓ１４０）。また、エラーチェックでエラー有りと判定し、且つ、処理単位データと部分ベリファイデータとが特定の関係でなければ（Ｓ１４０：ＮＯ→Ｓ１８０：ＮＯ）、ベリファイ異常と判断して、書き換え対象領域３１への書き込みを中止する（Ｓ１９０→異常終了）。
【００４８】
本実施形態のＥＣＵ１３によれば、書き換えツール１５から送信される書き込みデータ４１のうち、書き込み可能領域３３としたい領域に対応するデータについては、図６のＳ１４０で「ＮＯ」と判定され、且つ、図６のＳ１８０で「ＹＥＳ」と判定されるようにしておけば良い。そのようにすれば、フラッシュメモリ１９における書き換え対象領域３１のうち、書き込み可能領域３３としたい領域を、消去後未書き込みのまま（つまり「不定」のまま）にすることができる。よって、書き換えツール１５から、消去後未書き込みのままにすべき記憶領域を示す専用の位置情報を送信することなく、フラッシュメモリ１９の書き換え対象領域３１に書き込み可能領域を３３作ることができる。
【００４９】
また、本実施形態では、書き込みデータ４１のエラーチェックとして、前述の処理単位データと部分ベリファイデータとが一致しているか否かを判定して、不一致ならばエラー有りと判定する比較チェックを用いている。このため、エラーチェックの処理が簡単であるという利点がある。
【００５０】
尚、本実施形態では、図６のＳ１４０で「ＮＯ」と判定した場合（即ち、エラーチェックでエラー有りと判定した場合）に、更にＳ１８０の判定を行うようになっているが、そのＳ１８０を削除して、Ｓ１４０で「ＮＯ」と判定した場合にそのままＳ１６０へ進むように変形しても良い。
【００５１】
但し、Ｓ１８０を設ければ、書き込み可能領域３３を作るために故意に発生させたエラーなのか、本当のエラー（例えばノイズ等によるデータ化け）なのかを区別することができるし、本当のエラーである場合には、書き込みの処理を中止して、無駄な書き込みを実施することを防ぐことができる。
【００５２】
［変形例１］
前述した特定の関係は、ビット反転の関係に限らず、例えばデータ４１，４２同士を加算すると、予め定められた所定値になる、といった関係等でも良い。
【００５３】
［変形例２］
前述した処理単位データのデータ量（図６のＳ１３０で切り出すデータの量）は、書き込み単位に限らず、例えば書き込み単位の２以上の整数倍でも良い。
【００５４】
［変形例３］
書き込みデータ４１のエラーチェックとしては、前述の比較チェックに限らず、他の方式のチェックでも良い。例えば、下記のように変形しても良い。
【００５５】
書き換えツール１５は、書き込みデータ４１を所定の変換規則でデータ変換し、そのデータ変換後の書き込みデータ４１をＥＣＵ１３へ送信する。データ変換としては、例えば圧縮化や暗号化などが考えられる。また、この例の場合、ベリファイデータ４２の送信は不要である。
【００５６】
ＥＣＵ１３において、ＣＰＵ１７は、書き換えツール１５から受信した書き込みデータ４１を、上記変換規則に対応した復元規則に基づいて、元のデータに復元する。そして、ＣＰＵ１７は、復元後の書き込みデータ４１について、図６のＳ１３０以降と同様の処理を行えば良い。
【００５７】
その場合、図６のＳ１３０では、復元後の書き込みデータ４１について、先頭から所定の処理単位ずつ（例えば書き込み単位ずつ）切り出す処理を行う。そして、Ｓ１４０では、Ｓ１３０で切り出した処理単位の書き込みデータ４１について、例えばサムチェックやＣＲＣ（Cyclic Redundancy Check）等のエラーチェックを行い、エラー無しと判定したならＳ１５０に進むが、エラー有りと判定したならＳ１６０へ進む。
【００５８】
このように変形しても、書き換え対象領域３１のうち、エラー有りと判定された処理単位の書き込みデータ４１に対応する領域は、消去後未書き込みの「不定」となり、書き込み可能な領域となる。よって、書き換えツール１５から送信される書き込みデータ４１のうち、書き込み可能領域３３としたい領域に対応するデータについては、エラー有りと判定されるようにしておけば良い。
【００５９】
［変形例４］
書き換え対象領域３１は、フラッシュメモリ１９の一部の記憶領域に限らず、全部の記憶領域であっても良い。また、フラッシュメモリ１９は、新フラッシュメモリに限らず、消去状態が「１」である従来のフラッシュメモリでも良い。つまり、ＥＣＵ１３によれば、フラッシュメモリ１９が、新フラッシュメモリと従来のフラッシュメモリとの何れであっても、書き換え対象領域３１内に書き込み可能領域３３を作成することができる。
【００６０】
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されることなく、種々の形態を採り得る。また、前述の数値も一例であり他の値でも良い。例えば、上記実施形態における１つの構成要素が有する機能を複数の構成要素として分散させたり、複数の構成要素が有する機能を１つの構成要素に統合させたりしてもよい。また、上記実施形態の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。また、上記実施形態の構成の一部を省略してもよい。なお、特許請求の範囲に記載した文言によって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。また、上述したＥＣＵ１３や当該ＥＣＵ１３を構成要素とするソフトウェア書き換えシステム１１の他、当該ＥＣＵ１３としてコンピュータを機能させるためのプログラムや、このプログラムを記録した媒体や、ソフトウェア書き換え方法など、種々の形態で本発明を実現することもできる。
【符号の説明】
【００６１】
１５…書き換えツール、１３…ＥＣＵ（電子制御装置）、１７…ＣＰＵ、１９…フラッシュメモリ、３１…書き換え対象領域、４１…書き込みデータ
【図１】
0006314859.tif 000002
【図２】
0006314859.tif 000003
【図３】
0006314859.tif 000004
【図４】
0006314859.tif 000005
【図５】
0006314859.tif 000006
【図６】
0006314859.tif 000007
【図７】
0006314859.tif 000008