(57)【特許請求の範囲】
【請求項１】
書き換え可能な不揮発性メモリを有し、外部の書き換え装置から転送された一連のデータブロックで該メモリを書き換える車両制御装置であって、
前記メモリは、所定のアドレス範囲により特定されるメモリ領域に区切られており、それぞれのメモリ領域は、少なくとも１つの書き込み領域を有しており、該書き込み領域は、所定の固定長に設定されており、
前記一連のデータブロックのそれぞれは、前記書き込み領域の前記所定の固定長以下の大きさに設定される固定長または可変長のデータを含むデータフィールドと、該データが書き込まれるべき前記書き込み領域の先頭アドレスを含むアドレスフィールドとを有しており、該アドレスフィールドに含まれる該先頭アドレスは、該一連のデータブロック間で異なるよう設定されており、
該車両制御装置は、
前記書き換え装置から転送されたデータブロックを受信する受信手段と、
前記受信されたデータブロックのアドレスフィールドから前記先頭アドレスを抽出するアドレス抽出手段と、
前記抽出された先頭アドレスを、前記メモリ領域のそれぞれのアドレス範囲と比較して、該抽出された先頭アドレスを含むアドレス範囲を持つメモリ領域を識別する識別手段と、
前記識別されたメモリ領域が消去済み領域かどうかを判断する領域判断手段と、
前記識別されたメモリ領域が消去済み領域と判断されたならば、前記受信したデータブロックのデータフィールドの前記データを、前記識別されたメモリ領域の、前記抽出された先頭アドレスから開始する書き込み領域に書き込む第１の書き込み手段と、
前記識別されたメモリ領域が消去済み領域でないと判断されたならば、該メモリ領域に書き込まれているデータを消去して消去済み領域にし、前記受信したデータブロックのデータフィールドの前記データを、該消去済み領域の、前記抽出された先頭アドレスから開始する書き込み領域に書き込む第２の書き込み手段と、
を備える、車両制御装置。
【請求項２】
前記メモリ領域のそれぞれには、該メモリ領域が消去済みかどうかを示すフラグが関連づけられており、
前記領域判断手段は、前記識別されたメモリ領域の該フラグを調べることにより、該メモリ領域が消去済み領域かどうかを判断するよう構成されており、
前記一連のデータブロックの転送が終了する際に、該一連のデータブロックが書き込まれたメモリ領域についての前記フラグを、消去済みでないことを示す値にセットするフラグセット手段をさらに備える、
請求項１に記載の車両制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、外部の書き換え装置から転送されたデータで、車両制御装置の不揮発性メモリを書き換える書き換えシステムに関する。
【０００２】
【従来の技術】
現在、車両は、複数の車両制御装置（以下、「ＥＣＵ」という）によって様々に制御されている。ＥＣＵは、車両に搭載された様々なセンサによって検出された運転状態に基づいて、車両を制御する。これらの制御には、空燃比、燃料噴射量、エミッションなどのエンジンに関する制御、パワーウィンドウ、エアバッグ、ＡＢＳなどの車体に関する制御が含まれる。
【０００３】
ＥＣＵは、中央演算処理装置（ＣＰＵ）、制御プログラムおよびデータを格納するＲＯＭ（読み取り専用メモリ）、ＣＰＵの作業領域を提供するＲＡＭ（ランダムアクセスメモリ）、各種センサからの信号を受け取り、およびエンジン各部に制御信号を送る入出力インターフェースを備えている。上記ＲＯＭは、典型的には、フラッシュメモリ、ＥＥＰＲＯＭのような書き換え可能（すなわち、消去および書き込み可能）な不揮発性メモリである。
【０００４】
ＥＣＵの不揮発性メモリに格納されたデータを書き換えるシステムが知られている。このシステムは、書き換え装置、不揮発性メモリを有するＥＣＵ、およびそれらを接続するシリアル通信路を備える。
【０００５】
特開平９−１２８２２９号公報には、以下のステップからなる書き換え動作が開示されている。
【０００６】
１）書き換え装置は、消去コマンドをＥＣＵに送信する。
【０００７】
２）ＥＣＵは、消去コマンドに応答し、不揮発性メモリの全領域に対して消去操作を実行する。
【０００８】
３）書き換え装置は、アドレスおよびデータを含むデータブロックをＥＣＵに送信する。
【０００９】
４）ＥＣＵは、受信したアドレスによって示されるメモリ領域に、受信したデータを書き込む。
【００１０】
５）すべてのデータブロックの書き込みが終了するまで、ステップ３）および４）を繰り返す。
【００１１】
６）すべてのデータブロックの書き込みが終了したならば、ＥＣＵは、メモリの予め決められた領域に、予め決められたコードで表される終了データを書き込む。
【００１２】
７）ＥＣＵは、書き換え完了信号を書き換え装置に送信する。
【００１３】
フラッシュメモリおよびＥＥＰＲＯＭのような不揮発性メモリにおいては、メモリ領域の一部に対する書き換え操作が可能である。図９に、このような不揮発性メモリに対する、従来の書き換え処理の概略的なフローを示す。最初に、書き換え装置は、ＥＣＵに、データを書き込むべきメモリ領域（書き換え領域）を消去するよう要求する。この要求は、通常、アドレスフィールド２０１およびサイズフィールド２０２を含む消去コマンドによって行われる。アドレスフィールド２０１は、書き換え領域の先頭アドレスを含む。サイズフィールド２０２は、書き換え領域の大きさを含む。ＥＣＵは、消去コマンドで指定された先頭アドレスおよびサイズから、消去領域を算出する。算出された消去領域に対し、消去操作が実行される。この例では、先頭アドレスは３Ｆ００であり、サイズは１２８バイトである。したがって、メモリのアドレス３Ｆ００から３Ｆ７Ｆまでの領域が消去される。
【００１４】
消去された領域にデータを書き込むため、書き換え装置は、一連のデータブロックを順番にＥＣＵに送信する。データブロックは、通常、アドレスフィールド２０３およびデータフィールド２０４を含む。ＥＣＵは、データブロックを受信し、アドレスフィールド２０３からアドレスを抽出する。ＥＣＵは、該抽出したアドレスで指定されたメモリ場所に、データフィールド２０４に含まれるデータを書き込む。データブロック１を参照すると、該データブロック１は、メモリのアドレス３Ｆ００に書き込まれる。
【００１５】
図１０は、図９に示される書き換え処理において、書き換え装置が実行するプロセスのフローチャートの一例を示す。ステップＳ２５１において、前述した消去コマンドをＥＣＵに送信することにより、書き換え処理が開始する。ＥＣＵから消去完了信号を受信したならば（Ｓ２５２）、データブロックをＥＣＵに送信する（Ｓ２５３）。ＥＣＵから書き込み完了信号を受信したならば（Ｓ２５４）、ステップＳ２５５において、送信待ちのデータブロックがあるかどうか判断される。送信待ちのデータブロックがあるならば、次のデータブロックをＥＣＵに送信する。こうして、図９に示されるように、データブロック１〜ｎが順番にＥＣＵに送信される。ステップＳ２５５において送信待ちのデータブロックが無ければ、書き換え装置は書き換え処理を終了する。
【００１６】
図１１に、図９に示される書き換え処理において、ＥＣＵが実行するプロセスのフローチャートの一例を示す。ステップＳ２７１において書き換え装置から消去コマンドを受信したとき、またはステップＳ２７４において書き換え装置からデータブロックを受信したとき、このルーチンに入る。ステップＳ２７１において書き換え装置から消去コマンドを受信したならば、前述したように、消去コマンドで示される消去領域に対して消去操作を実行する（Ｓ２７２）。消去操作を終えたならば、消去完了信号を書き換え装置に送信し（Ｓ２７３）、このルーチンを抜ける。
【００１７】
図９を参照して前述したように、消去完了信号を書き換え装置に送信した後、書き換え装置からＥＣＵへのデータブロックの転送が開始される。書き換え装置からデータブロックを受信したとき、ステップＳ２７１の判断はＮｏとなり、ステップＳ２７４の判断はＹｅｓとなり、再びこのルーチンに入る。ステップＳ２７５において、受信したデータブロックのアドレスフィールドからアドレスを抽出する。データフィールドからは、データが抽出される（Ｓ２７６）。抽出されたアドレスで示されるメモリ場所に、抽出したデータが書き込まれる（Ｓ２７７）。書き込み操作を終えたならば、書き込み完了信号を書き換え装置に送信する（Ｓ２７８）。
【００１８】
【発明が解決しようとする課題】
書き換え装置は、ＥＣＵとの通信を介してメモリの書き換え処理を実施するための制御プログラムを有している。書き換え領域の開始および終了アドレスは、この制御プログラムに指定される。終了アドレスに代えて、書き換え領域のサイズを指定してもよい。制御プログラムは、指定された開始および終了アドレスに従って、消去コマンドを作成する。
【００１９】
ＥＣＵの不揮発性メモリには、様々なプログラムおよびデータが記憶されている。このようなプログラム／データを修正することによって該プログラム／データのサイズが変わるということは頻繁に起こる。プログラム／データのサイズが変わったとき、制御プログラムにおいて指定されている該プログラム／データについての書き換え領域の終了アドレスを変更しなければならない。プログラム／データの修正を行うたびに制御プログラムを変更することは、該プログラム／データの仕様変更の管理を煩雑にする。
【００２０】
また、意図していないメモリ領域に対して消去操作が実行されるのを防ぐために、制御プログラムに指定される書き換え領域は正確でなければならない。しかしながら、プログラム／データの修正を行うたびに制御プログラムを変更するので、書き換え領域の誤った指定を完全に防ぐことはできない。
【００２１】
したがって、メモリの書き換え処理において、書き換え領域の終了アドレスを管理する必要のない書き換えシステムが必要とされている。
【００２２】
【課題を解決するための手段】
この発明の一つの側面によると、車両制御装置は、書き換え可能な不揮発性メモリを有し、外部の書き換え装置から転送されたデータで該メモリを書き換える。それぞれのデータブロックは、メモリに書き込むべきデータを含むデータフィールドと、該データが書き込まれるべきメモリアドレスを含むアドレスフィールドとを有する。車両制御装置は、書き換え装置から転送されたデータブロックを受信する。受信されたデータブロックのアドレスフィールドからアドレスが抽出される。抽出されたアドレスによって示されるメモリ領域が消去済み領域かどうか判断される。メモリの領域が消去済み領域と判断されたならば、車両制御装置は、受信されたデータブロックのデータフィールドからデータを抽出し、アドレスによって示されるメモリ領域に、該データを書き込む。
【００２３】
この発明によると、データブロックのアドレスフィールドに含まれるアドレスを使用して、データが書き込まれるべきメモリ領域が消去済み領域かどうか判断される。消去済み領域と判断されれば、書き込み操作が実施される。データブロックに含まれるアドレスを用いて書き換え処理を実行することができるので、書き換え装置の制御プログラムに書き換え領域の終了アドレスを指定する必要がない。プログラム／データの仕様変更における管理項目が減り、よって管理の煩雑さを低減することができる。
【００２４】
この発明の他の側面によると、メモリ領域が消去済み領域でないと判断されたならば、該領域に書き込まれているデータを消去して消去済み領域にする。データフィールドから抽出されたデータは、該消去済み領域に書き込まれる。
【００２５】
この発明によると、データブロックのアドレスフィールドに含まれるアドレスを使用して、データが書き込まれるべき領域に対する消去操作が確実に行われる。データブロックに含まれるアドレスを用いて書き換え処理を実行することができるので、プログラム／データの仕様変更における管理項目が減り、よって管理の煩雑さを低減することができる。また、消去コマンドが不要となるので、書き換え処理の効率が向上する。
【００２６】
この発明の他の側面によると、データブロックから抽出されたアドレスと、メモリの消去済み領域のアドレスとを比較することにより、該抽出されたアドレスによって示されるメモリ領域が消去済み領域かどうか判断される。アドレスの比較によって、消去済み領域かどうかを容易に判断することができる。したがって、車両制御装置の負荷を増やすことなく、かつ仕様変更における管理負荷を低減する書き換え処理を実現することができる。
【００２７】
【発明の実施の形態】
次に図面を参照してこの発明の実施の形態を説明する。図１は、この発明に従う書き換えシステムの全体的な機能ブロック図を示す。書き換えシステムは、ＥＣＵ１０およびその外部に設けられた書き換え装置２０を備える。
【００２８】
書き換え装置２０は、ＥＣＵ１０が搭載される車両のメーカーによって認可された正規の書き換え装置である。書き換え装置２０は、シリアル通信バスを介してＥＣＵ１０に接続される。
【００２９】
書き換え装置２０は、送受信部２１およびデータブロック組立部２２を備える。データブロック組立部２２は、ＥＣＵ１０に送信されるプログラムおよび／またはデータから、一連のデータブロックを組み立てる。プログラムおよび／またはデータは、一連のデータブロックとして、送受信部２１からＥＣＵ１０に送信される。
【００３０】
ＥＣＵ１０は、典型的にはマイクロコンピュータおよびこれに付随する回路素子で構成される。ＥＣＵ１０は、中央演算処理装置（以下「ＣＰＵ」という）、実行するプログラムおよびデータを格納するＲＯＭ１６、実行時の作業領域を提供し演算結果などを記憶するＲＡＭ（ランダムアクセスメモリ）を備える。ＥＣＵ１０は、さらに、車両に設けられた様々なセンサから検出信号を受け取り、車両の各部に制御信号を送る入出力インターフェースを備える。センサからの検出信号には、エンジン回転数、エンジン水温、吸気温、バッテリ電圧、イグニションスイッチなどの信号が含まれる。ＣＰＵは、入出力インターフェースから入力された検出信号に基づいて、ＲＯＭ１６に記憶された制御プログラムおよびデータを用いて演算を行う。ＣＰＵは、演算結果を、入出力インターフェースを介して車両の各部に出力し、車両の様々な機能を制御する。簡単にするため、図１には、ＲＯＭ１６のみが表されている。
【００３１】
ＲＯＭ１６は、所定の領域に記憶されたデータを消去して、該領域に新たなデータを書き込むことができる不揮発性メモリである。フラッシュメモリおよびＥＥＰＲＯＭなどの不揮発性メモリによって、ＲＯＭ１６を実現することができる。
【００３２】
アドレス抽出部１２、領域判断部１３、データ抽出部１４および書き込み部１５は、典型的にはソフトウェアプログラムとして実現される。これらのプログラムは、たとえば書き換え不可能なＲＯＭ（図示せず）に格納される。書き換え不可能なＲＯＭは、記憶されたデータを変更することができない不揮発性メモリである。
【００３３】
書き換え不可能なＲＯＭは、製造時にデータが決められ、その後に消去および書き込みができないマスクＲＯＭ、または１度だけデータを書き込むことができるＰＲＯＭなどによって実現することができる。
【００３４】
代替的に、フラッシュメモリ、ＥＥＰＲＯＭのような書き換え可能（すなわち、消去および書き込みが可能）なＲＯＭ１６の所定のメモリ領域を変更不可領域に設定することによって実現してもよい。
【００３５】
書き換え装置２０から受信したデータブロックは、アドレス抽出部１２およびデータ抽出部１４によって、アドレスおよびデータがそれぞれ抽出される。領域判断部１３は、抽出されたアドレスによって示されるＲＯＭ１６のメモリ領域が、消去済み領域かどうか判断する。消去済み領域と判断されたならば、書き込み部１５は、抽出されたデータを該消去済み領域に書き込む。消去済み領域でないと判断されたならば、領域判断部１３は、該領域に記憶されているデータを消去する。その後、書き込み部１５が、該データが消去された領域に、抽出されたデータを書き込む。
【００３６】
以下、ＲＯＭ１６に格納されているプログラムを書き換える動作の実施例について説明する。しかし、以下の実施例は、ＲＯＭ１６に格納されている任意のデータを書き換える場合にも同様に適用される。
【００３７】
図２は、書き換え装置２０からＥＣＵ１０に転送されるプログラムの一例を示す。プログラム３０のサイズは、５６０バイトである。プログラム３０は、それぞれが所定の長さ（この例では、８バイト）を持つプログラムコードに細分される。データブロックは、プログラムコードを含むデータフィールド３２と、該プログラムコードが書き込まれるべきメモリアドレスを含むアドレスフィールド３３を有する。プログラム３０から、７０個のデータブロックが作成される。図２に示されるプログラムのサイズ、プログラムコードの長さおよびデータブロック数は単なる例であることに注意されたい。
【００３８】
図３は、この発明の第１の実施例に従う、ＲＯＭ１６を実現する不揮発性メモリ４０のメモリ領域の一例を示す。不揮発性メモリ４０は、それぞれが予め決められた大きさを持つ複数のメモリブロックに区切られている。不揮発性メモリ４０の仕様により、消去操作はメモリブロック単位に実行されるよう規定されている。書き込み操作はビット単位に実行されることができる。
【００３９】
図３には、例として２つのメモリブロック４１および４２が示されている。メモリブロックの大きさはメモリ４０の仕様に依存する。この例では、メモリブロック４１および４２のそれぞれの大きさが５１２バイトと仮定する。書き換え装置から転送されるデータブロックは、領域４４、４５、．．．４９に順番に書き込まれる。
【００４０】
ＥＣＵ１０は、それぞれのメモリブロックの開始アドレスおよび終了アドレスを有している。また、ＥＣＵ１０は、それぞれのメモリブロックについて消去済みフラグを有する。あるメモリブロックに対して消去操作が実行されたとき、該メモリブロックの消去済みフラグがセットされる。
【００４１】
図４は、この発明の第１の実施例に従う書き換え処理の概略的なフローを示す。データブロックは、メモリブロックの先頭アドレスから書き込まれると仮定する。
【００４２】
ステップＳ５１において、書き換え装置２０は、データブロック１をＥＣＵ１０に送信する。ＥＣＵ１０は、データブロック１を受け取る。ＥＣＵ１０は、データブロック１のアドレスフィールドからアドレス３Ｆ００を抽出する。
【００４３】
ＥＣＵ１０は、アドレス３Ｆ００と、それぞれのメモリブロックの開始および終了アドレスを比較する。その結果、アドレス３Ｆ００はメモリブロック４１（図３）に含まれると判断される。ＥＣＵ１０は、メモリブロック４１の消去済みフラグを調べる。
【００４４】
メモリブロック４１の消去済みフラグがセットされていれば、ＥＣＵ１０は、メモリブロック４１は消去済み領域と判断する。一方、メモリブロック４１の消去済みフラグがセットされていなければ、ＥＣＵ１０は、メモリブロック４１が消去済み領域ではないと判断する。消去済み領域でないと判断した場合、ＥＣＵ１０は、メモリブロック４１に対して消去操作を実行する（ステップＳ５１）。消去操作を終えた後、メモリブロック４１について消去済みフラグがセットされる。
【００４５】
ＥＣＵ１０は、データブロック１のデータフィールドからプログラムコードを抽出し、それをメモリブロック１のアドレス３Ｆ００から開始する書き込み領域４４（図３）に書き込む（ステップＳ５１）。データブロック１のプログラムコードの書き込みを終了したとき、ＥＣＵ１０は、書き換え装置２０に書き込み完了信号を送信する（ステップＳ５２）。ここで、ステップＳ５１およびＳ５２に示される処理は、書き換え処理の１サイクルを示す。
【００４６】
ステップＳ５３およびＳ５４において、次の書き換え処理サイクルが実行される。ステップＳ５３において、書き換え装置２０は、データブロック２をＥＣＵ１０に送信する。ＥＣＵ１０は、データブロック２のアドレスフィールドから、アドレス３Ｆ０８を抽出する。ＥＣＵ１０は、メモリブロック１にアドレス３Ｆ０８が含まれることを確認する。メモリブロック４１の消去済みフラグがセットされているので、ＥＣＵ１０は、メモリブロック４１は消去済み領域であると判断する。
【００４７】
ＥＣＵ１０は、データブロック２のデータフィールドからプログラムコードを抽出し、それをメモリブロック４１のアドレス３Ｆ０８から開始する書き込み領域４５（図３）に書き込む（ステップＳ５３）。データブロック２のプログラムコードの書き込みを終了したとき、ＥＣＵ１０は、書き換え装置２０に書き込み完了信号を送信する（ステップＳ５３）。
【００４８】
書き換え装置２０は、データブロック３〜６４を順番にＥＣＵ１０に送信し、ＥＣＵ１０は、これらのデータブロックに含まれるプログラムコードをメモリブロック４１に書き込む。
【００４９】
ステップＳ５７およびＳ５８の書き換え処理サイクルにおいて、書き換え装置２０は、データブロック６５をＥＣＵ１０に送信する。ＥＣＵ１０は、データブロック６５を受け取る。ＥＣＵ１０は、データブロック６５のアドレスフィールドから、アドレス４１００を抽出する。
【００５０】
ＥＣＵ１０は、アドレス４１００がメモリブロック１に含まれないので、その他のメモリブロックの開始および終了アドレスと比較する。その結果、アドレス４１００は、メモリブロック４２（図３）に含まれると判断される。ＥＣＵ１０は、メモリブロック４２の消去済みフラグを調べる。
【００５１】
メモリブロック４２の消去済みフラグがセットされていれば、ＥＣＵ１０は、メモリブロック４２は消去済み領域と判断する。メモリブロック４２の消去済みフラグがセットされていなければ、ＥＣＵ１０は、メモリブロック４２が消去済み領域でないと判断する。消去済み領域でないと判断した場合、ＥＣＵ１０は、メモリブロック４２に対して消去操作を実行する（ステップＳ５７）。消去操作を終えた後、メモリブロック４２について消去済みフラグがセットされる。
【００５２】
ＥＣＵ１０は、データブロック６５のデータフィールドからプログラムコードを抽出し、それをメモリブロック４２のアドレス４１００から開始する領域４８（図３）に書き込む（ステップＳ５７）。データブロック６５のプログラムコードの書き込みを終了したとき、ＥＣＵ１０は、書き換え装置２０に書き込み完了信号を送信する（ステップＳ５８）。
【００５３】
ステップＳ５９およびＳ６０において、最後の書き換え処理サイクルが実行される。ステップＳ５９において、書き換え装置２０はデータブロック７０をＥＣＵ１０に送信する。ＥＣＵ１０は、データブロック７０のアドレスフィールドから、アドレス４１２８を抽出する。ＥＣＵ１０は、アドレス４１２８がメモリブロック４２に含まれると判断する。メモリブロック４２には消去済みフラグがセットされている。したがって、ＥＣＵ１０は、メモリブロック４２は消去済み領域であると判断する。
【００５４】
ＥＣＵ１０は、データブロック７０のデータフィールドからプログラムコードを抽出し、それをメモリブロック４２のアドレス４１２８から開始する領域４９（図３）に書き込む（ステップＳ５９）。データブロック７０のプログラムコードの書き込みを終了したとき、ＥＣＵ１０は、書き換え装置２０に書き込み完了信号を送信する（ステップＳ６０）。
【００５５】
こうして、プログラム３０のプログラムコードのすべてがＥＣＵ１０に送信される。書き換え装置２０は、データブロック７０の書き込み完了信号をＥＣＵ１０から受信したとき、書き換え処理を終了するための信号をＥＣＵ１０に送信する。ＥＣＵ１０は、それに応答して、メモリブロック４１および４２についての消去済みフラグをリセットする。メモリブロック４１の消去済みフラグのリセットのタイミングは、メモリブロックの書き込み領域４７に対する書き込みが完了したときでもよい。
【００５６】
代替的に、書き換え装置からＥＣＵに転送されるデータブロックは可変長でもよい。たとえば、転送効率を向上させるため、データフィールドに含まれるプログラムコードに、メモリの空きを示す“ＦＦ”バイトを含めないようデータブロックを作成することができる。また、データブロックのアドレスフィールドに含まれる書き込み開始アドレスは、任意のアドレスを指定することができる。言い換えると、メモリブロック内の任意のアドレスから書き込みを開始するようにしてもよい。
【００５７】
こうして、ＥＣＵ１０は、データブロックのアドレスフィールドに含まれる書き込み開始アドレスを使用して、メモリブロックに対して消去操作を行うかどうかを判断する。本発明に従う書き換え処理においては、書き換え領域の終了アドレス（図３の例では、アドレス４１２Ｆ）は使用されない。該終了アドレスを書き換え装置２０に指定する必要がない。したがって、不揮発性メモリに含まれるプログラムおよび／またはデータの仕様変更における管理項目を減らして、管理負荷を低減させることができる。
【００５８】
図５は、この発明の第２の実施例に従う、ＲＯＭ１６を実現する不揮発性メモリ７０のメモリ領域の一例を示す。不揮発性メモリ７０は、消去および書き込み操作をビット単位に実行することができるように構成されたメモリである。言い換えると、消去および書き込み操作を不揮発性メモリ８０の任意の領域に対して実施することができる。
【００５９】
書き換え装置２０から転送されるデータブロックのそれぞれは、書き込み領域７１、７２、．．．７６に書き込まれる。ＥＣＵ１０は、それぞれの書き込み領域の開始アドレスを有している。また、ＥＣＵ１０は、それぞれの書き込み領域について消去済みフラグを有している。ある書き込み領域に対して消去操作が実行されたとき、該書き込み領域についての消去済みフラグがセットされる。
【００６０】
図６は、第２の実施例に従う書き換え処理の概略的なフローを示す。ステップＳ８１において、書き換え装置２０は、データブロック１をＥＣＵ１０に送信する。ＥＣＵ１０は、データブロック１を受け取る。ＥＣＵ１０は、データブロック１のアドレスフィールドから、アドレス３Ｆ００を抽出する。
【００６１】
ＥＣＵ１０は、先頭アドレスがアドレス３Ｆ００である書き込み領域７１（図５）の消去済みフラグを調べる。消去済みフラグがセットされていれば、書き込み領域が消去済み領域であることを示す。ＥＣＵ１０は、データブロック１のデータフィールドからプログラムコードを抽出し、それをメモリブロック１のアドレス３Ｆ００から開始する領域７１に書き込む。
【００６２】
消去済みフラグがセットされていなければ、書き込み領域７１が消去されていないことを示す。ＥＣＵ１０は、書き込み領域７１に対して消去操作を実行する（ステップＳ８１）。消去操作を終えた後、書き込み領域７１についての消去済みフラグがセットされる。ＥＣＵ１０は、データブロック１のデータフィールドからプログラムコードを抽出し、消去操作が実行された書き込み領域７１に該プログラムコードを書き込む（ステップＳ８１）。
【００６３】
データブロック１のプログラムコードの書き込みを終了したとき、ＥＣＵ１０は、書き換え装置２０に書き込み完了信号を送信する（ステップＳ８２）。ＥＣＵ１０は、書き込み領域７１について消去済みフラグをリセットする。
【００６４】
ステップＳ８１およびＳ８２に示される処理は、書き換え処理の１サイクルを示す。ＥＣＵ１０は、データブロックを受信するたびに、ステップＳ８１およびＳ８２で示されるものと同様の書き換え処理サイクルを実行する。
【００６５】
代替的に、書き換え装置２０からＥＣＵ１０に転送されるデータは、それぞれの書き込み領域（図５）の大きさ以下である可変長データであってもよい。
【００６６】
こうして、ＥＣＵ１０は、データブロックのアドレスフィールドに含まれるアドレスを使用して、該データブロックのデータが書き込まれる領域に対して消去操作を行うかどうか判断する。この第２の実施例に従う書き換え処理においても、書き換え領域の終了アドレス（図５の例では、アドレス４１２Ｆ）は使用されない。したがって、不揮発性メモリに含まれるプログラムおよび／またはデータの仕様変更における管理項目を減らして、管理負荷を低減させることができる。
【００６７】
図３に示されるような不揮発性メモリにおいて、メモリブロックの大きさとそれぞれのデータブロックに含まれるデータの大きさとが同じである場合、上記の第２の実施例に従って書き換え処理を実施することができる。
【００６８】
消去する領域の大きさは、１回の転送によってメモリに書き込まれるデータ量以上の大きさをもつ。この条件を満たす限り、第１および第２のいずれの実施例においても、また不揮発性メモリの仕様にかかわらず、消去する領域の大きさを任意に定めることができる。
【００６９】
図７は、この発明の一実施形態に従う、書き換え装置が実行するプロセスのフローチャートを示す。このプロセスは、図４の第１の実施例および図６の第２の実施例の両方に適用されることができる。この場合、図４に示されるそれぞれの書き換え処理サイクル（たとえば、ステップＳ５１およびＳ５２）において、または図６に示されるそれぞれの書き換え処理サイクル（たとえば、ステップＳ８１およびＳ８２）において、ステップＳ１０１〜Ｓ１０３が実施される。
【００７０】
ステップＳ１０１において、書き換え装置がデータブロックをＥＣＵに送信することにより、書き換え処理が開始する。書き換え装置は、書き換え完了信号をＥＣＵから受信するまで待つ（Ｓ１０２）。書き換え完了信号を受信したならば、送信待ちのデータブロックが存在するかどうか判断する（Ｓ１０３）。送信待ちのデータブロックが存在するならば、ステップＳ１０１に戻り、次のデータブロックをＥＣＵに送信する。送信待ちのデータブロックが存在しなければ、書き換え処理を終了する。
【００７１】
図８は、この発明の一実施形態に従う、ＥＣＵが実行するプロセスのフローチャートを示す。このプロセスは、図４の第１の実施例および図６の第２の実施例の両方に適用されることができる。この場合、図４に示されるそれぞれの書き換え処理サイクル（たとえば、ステップＳ５１およびＳ５２）、および図６に示されるそれぞれの書き換え処理サイクル（たとえば、ステップＳ８１およびＳ８２）において、ステップＳ１１１〜Ｓ１１７が実施される。
【００７２】
ステップＳ１１１においてデータブロックを受信したとき、このルーチンに入る。ステップＳ１１２に進み、受信したデータブロックのアドレスフィールドから、アドレスを抽出する（Ｓ１１２）。ステップＳ１１３に進み、抽出したアドレスによって示される領域が消去済み領域かどうか判断する。前述した第１の実施例に従うと、抽出したアドレスによって示される領域は、該アドレスが含まれるメモリブロックである。前述した第２の実施例に従うと、抽出したアドレスによって示される領域は、該アドレスから開始する、１個のデータブロックに含まれるデータが書き込まれる書き込み領域である。
【００７３】
消去済み領域と判断されたならば、ステップＳ１１５に進む。消去済み領域でないと判断されたならば、ステップＳ１１４に進む。ステップＳ１１４において、抽出されたアドレスによって示される領域に記憶されているデータを消去し、該領域を消去済み領域にする。
【００７４】
ステップＳ１１５において、受信したデータブロックのデータフィールドから、データを抽出する。抽出されたデータを、抽出したアドレスによって示される消去済み領域に書き込む（Ｓ１１６）。書き込みが終了したならば、書き込み完了信号を書き換え装置に送信する（Ｓ１１７）。
【００７５】
【発明の効果】
この発明によると、不揮発性メモリにおけるプログラム／データの仕様変更におけるアドレス管理の負荷を低減することができる。
【図面の簡単な説明】
【図１】この発明の一実施例における、書き換えシステムの全体を示すブロック図。
【図２】この発明の一実施例における、転送されるプログラムおよびデータブロックの形態を示す図。
【図３】この発明の第１の実施例における、不揮発性メモリの領域を示す図。
【図４】この発明の第１の実施例における、書き換え処理の概略的なフローを示す図。
【図５】この発明の第２の実施例における、不揮発性メモリの領域を示す図。
【図６】この発明の第２の実施例における、書き換え処理の概要的なフローを示す図。
【図７】この発明の一実施例における、書き換え装置によって実行される書き換え処理のフローチャート。
【図８】この発明の一実施例における、ＥＣＵによって実行される書き換え処理のフローチャート。
【図９】従来技術における、書き換え処理の概要的なフローを示す図。
【図１０】従来技術における、書き換え装置によって実行される書き換え処理のフローチャート。
【図１１】従来技術における、ＥＣＵによって実行される書き換え処理のフローチャート。
【符号の説明】
１０  ＥＣＵ
１６  ＲＯＭ
２０  書き換え装置
【図１】
0003623481.tif 000002
【図２】
0003623481.tif 000003
【図３】
0003623481.tif 000004
【図４】
0003623481.tif 000005
【図５】
0003623481.tif 000006
【図６】
0003623481.tif 000007
【図７】
0003623481.tif 000008
【図８】
0003623481.tif 000009
【図９】
0003623481.tif 000010
【図１０】
0003623481.tif 000011
【図１１】
0003623481.tif 000012