(57)【要約】【課題】書き換えられた制御プログラムによるデータの参照が正しく行われるようにする【解決手段】ＥＣＵ１のフラッシュＲＯＭ３には、制御プログラムを記憶するプログラム記憶領域３１と、データ記憶領域３２とが設けられ、制御プログラムはプログラム３１１〜３１３から構成され、データ記憶領域３２には、プログラム３１１〜３１３で使用されるデータ群３２１〜３２３を記憶するための記憶領域が設けられ、第１〜３制御プログラムにはそれぞれキーワードＫＷ１〜３が設定され、データ群３２１〜３２３を記憶する記憶領域にはそれぞれキーワードを記憶するキーワード領域ＫＲ１〜３が設けられている。そして、キーワードＫＷ１〜３と、キーワード領域ＫＲ１〜３に記憶されているキーワードとが一致しているか否かを判断し、一致していないと判断した場合に、データ群３２１〜３２３の値を初期化する。【選択図】図１
2014044640.tif 000002
【特許請求の範囲】
【請求項１】
所定の制御対象を制御するための制御プログラムを記憶して記憶内容の書き換えが可能な不揮発性メモリ（３）を備え、予め設定された書換条件が成立した場合に、前記不揮発性メモリに記憶された前記制御プログラムの内容を書き換えるように構成された電子制御装置（１）であって、
前記不揮発性メモリには、前記制御プログラムを記憶するためのプログラム記憶領域（３１）と、前記制御プログラムで使用される制御データを記憶するデータ記憶領域（３２）とが設けられ、
前記制御プログラムは、少なくとも、第１制御プログラム（３１１）と、前記第１制御プログラムとは異なる第２制御プログラム（３１２）とから構成され、
前記データ記憶領域には、前記第１制御プログラムで使用される制御データ（３２１）を記憶するための第１データ記憶領域と、前記第２制御プログラムで使用される制御データ（３２２）を記憶するための第２データ記憶領域とが設けられ、
前記第１制御プログラムおよび第２制御プログラムにはそれぞれ、前記制御データを初期化するか否かを判断するための第１初期化判断情報（ＫＷ１）および第２初期化判断情報（ＫＷ２）が設定され、
前記第１データ記憶領域には、前記第１初期化判断情報と照合するための第１照合情報が記憶され、
前記第２データ記憶領域には、前記第２初期化判断情報と照合するための第２照合情報が記憶され、
前記第１初期化判断情報と前記第１照合情報との間で予め設定された関係である第１設定情報間関係を有しているか否かを判断する第１判断手段（Ｓ２０）と、
前記第２初期化判断情報と前記第２照合情報との間で予め設定された関係である第２設定情報間関係を有しているか否かを判断する第２判断手段（Ｓ２０）と、
前記第１設定情報間関係を有していないと前記第１判断手段が判断した場合に、前記第１データ記憶領域に記憶されているデータの値を初期化する第１初期化手段（Ｓ３０）と、
前記第２設定情報間関係を有していないと前記第２判断手段が判断した場合に、前記第２データ記憶領域に記憶されているデータの値を初期化する第２初期化手段（Ｓ３０）とを備える
ことを特徴とする電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶するプログラムを書き換え可能な電子制御装置に関する。
【背景技術】
【０００２】
従来、車両を制御する電子制御装置として、記憶内容の書き換えが可能なフラッシュメモリまたはＥＥＰＲＯＭ等の不揮発性メモリ（以下、書換可能不揮発性メモリという）を備え、この書換可能不揮発性メモリに記憶された制御プログラムを書き換え可能に構成されたものが知られている（例えば、特許文献１を参照）。
【０００３】
また、車両を制御する電子制御装置では、車両を制御する過程で算出した制御データを、書換可能不揮発性メモリに書き込むことにより、電子制御装置の電源オフで制御データが消去されるのを防止し、次回の電源オン時に、この制御データを利用することができるように構成されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−２８２５６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、複数の制御プログラムを書換可能不揮発性メモリに記憶し、複数の制御プログラム毎に各制御プログラムに対応した制御データを記憶するデータ記憶領域を書換可能不揮発性メモリに設ける場合には、図６〜１０を用いて説明する以下の問題が生じる可能性がある。
【０００６】
まず図６に示すように、第１制御プログラムおよび第２制御プログラムのそれぞれに対応したデータ記憶領域１０１０およびデータ記憶領域１０２０が書換可能不揮発性メモリに設けられているとする。この場合に、データ記憶領域１０１０で使用するデータ量が増加することを考慮して、現時点で実際に使用されるデータ量（図６の使用領域１０１１を参照）よりも多くの記憶領域（図６の未使用領域１０１２を参照）を予め確保しなくてはならないという問題がある。
【０００７】
この理由を以下に説明する。まず、データ記憶領域１０１０において余分な領域を確保しない場合には、データ記憶領域１０１０の後に連続してデータ記憶領域１０２０が割り当てられることになる（すなわち、データ記憶領域１０１０の未使用領域１０１２が割り当てられている領域にデータ記憶領域１０２０が割り当てられることになる）。その後、データ記憶領域１０１０のデータ量が増加すると、データ記憶領域１０２０として割り当てられている領域が、データ記憶領域１０１０のために割り当てられる。このため、データ記憶領域１０１０のデータ量が増加した後に第２制御プログラムによる処理が実行され、この第２制御プログラムによる処理が、データ記憶領域１０１０のデータ量が増加する前と同じデータ記憶領域１０２０内の相対アドレスにアクセスしても、正しい値の制御データを参照することができなくなる。
【０００８】
次に図７に示すように、第１制御プログラムおよび第２制御プログラムのそれぞれに対応したデータ記憶領域１０３０およびデータ記憶領域１０４０が書換可能不揮発性メモリに設けられているとする。
【０００９】
そしてデータ記憶領域１０３０には、パラメータα０の値を格納する記憶領域１０３１と、パラメータα１の値を格納する記憶領域１０３２とが連続して設けられているとする。その後、第１制御プログラムが書き換えられ、新しい第１制御プログラムにおいてパラメータα０の定義が削除されたとする。すなわち、新しい第１制御プログラムでは、パラメータα０より後に定義されているパラメータについて、これらのパラメータをデータ記憶領域１０３０上で割り当てるためのアドレスが、パラメータ１つ分、前にずれることになる。
【００１０】
このため、新しい第１制御プログラムによる処理が実行され、この第１制御プログラムによる処理で、パラメータα１に割り当てられたアドレスにアクセスしても、パラメータα１の正しい値を参照することができなくなる。
【００１１】
次に図８に示すように、第１制御プログラムおよび第２制御プログラムのそれぞれに対応したデータ記憶領域１０５０およびデータ記憶領域１０６０が書換可能不揮発性メモリに設けられているとする。
【００１２】
そしてデータ記憶領域１０５０には、パラメータα２の値を格納する記憶領域１０５１が設けられているとする。その後、第１制御プログラムが書き換えられ、新しい第１制御プログラムにおいてパラメータα２の代わりにパラメータβ０が定義されたとする。すなわち、新しい第１制御プログラムでは、図９に示すように、データ記憶領域１０５０上でパラメータα２に割り当てられていたアドレスがパラメータβ０に割り当てられることになる。
【００１３】
このため、新しい第１制御プログラムによる処理が実行され、この第１制御プログラムによる処理で、パラメータβ０に割り当てられたアドレスにアクセスしても、パラメータβ０の正しい値を参照することができなくなる。
【００１４】
したがって、新しい第１制御プログラムでは、パラメータα２の定義を削除することなく、パラメータα２に割り当てられたアドレスを未使用とし、図１０に示すように、パラメータβ０の定義を追加することにより（記憶領域１０５２を参照）、パラメータβ０を記憶するための領域を新たに追加する必要がある。このため、パラメータα２のための領域を無駄に確保しなければならないという問題が生じる。
【００１５】
本発明は、こうした問題に鑑みてなされたものであり、制御プログラムの書き換えが行われても、制御プログラムによるデータの参照が正しく行われるようにすることを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するためになされた請求項１に記載の電子制御装置は、所定の制御対象を制御するための制御プログラムを記憶して記憶内容の書き換えが可能な不揮発性メモリを備え、予め設定された書換条件が成立した場合に、不揮発性メモリに記憶された制御プログラムの内容を書き換えるように構成された電子制御装置であって、不揮発性メモリには、制御プログラムを記憶するためのプログラム記憶領域と、制御プログラムで使用される制御データを記憶するデータ記憶領域とが設けられ、制御プログラムは、少なくとも、第１制御プログラムと、第１制御プログラムとは異なる第２制御プログラムとから構成され、データ記憶領域には、第１制御プログラムで使用される制御データを記憶するための第１データ記憶領域と、第２制御プログラムで使用される制御データを記憶するための第２データ記憶領域とが設けられ、第１制御プログラムおよび第２制御プログラムにはそれぞれ、制御データを初期化するか否かを判断するための第１初期化判断情報および第２初期化判断情報が設定され、第１データ記憶領域には、第１初期化判断情報と照合するための第１照合情報が記憶され、第２データ記憶領域には、第２初期化判断情報と照合するための第２照合情報が記憶される。
【００１７】
そして第１判断手段が、第１初期化判断情報と第１照合情報との間で予め設定された関係である第１設定情報間関係を有しているか否かを判断するとともに、第２判断手段が、第２初期化判断情報と第２照合情報との間で予め設定された関係である第２設定情報間関係を有しているか否かを判断する。
【００１８】
さらに第１初期化手段が、第１設定情報間関係を有していないと第１判断手段が判断した場合に、第１データ記憶領域に記憶されているデータの値を初期化するとともに、第２初期化手段が、第２設定情報間関係を有していないと第２判断手段が判断した場合に、第２データ記憶領域に記憶されているデータの値を初期化する。
【００１９】
このように構成された電子制御装置では、第１制御プログラムを書き換えることにより第１データ記憶領域を初期化する必要がある場合には、書き換えられた後の第１制御プログラムに、書き換えられる前の第１制御プログラムとは異なる第１初期化判断情報を設定するようにすればよい。これにより、第１制御プログラムを書き換えた後に、第１初期化判断情報と第１照合情報との間で第１設定情報間関係を有していないと第１判断手段により判断され、第１データ記憶領域に記憶されているデータの値が第１初期化手段により初期化される。
【００２０】
このため、第１制御プログラムが書き換えられ、新しい第１制御プログラムにおいて或るパラメータ（以下、第１パラメータという）の定義が削除された場合に、第１初期化手段により、このパラメータの削除に対応した初期化が行われるようにすることができる。これにより、新しい第１制御プログラムにおいて、第１パラメータより後に定義されているパラメータにアクセスした場合であっても、このパラメータに関する正しい値を参照することができる。
【００２１】
また、第１制御プログラムが書き換えられ、新しい第１制御プログラムにおいて、第１パラメータの代わりに別のパラメータ（以下、第２パラメータという）が定義されるパラメータの変更が行われた場合に、第１初期化手段により、このパラメータの変更に対応した初期化が行われるようにすることができる。これにより、新しい第１制御プログラムにおいて、第２パラメータにアクセスした場合であっても、このパラメータに関する正しい値を参照することができる。
【００２２】
同様に、第２制御プログラムを書き換えることにより第２データ記憶領域を初期化する必要がある場合には、書き換えられた後の第２制御プログラムに、書き換えられる前の第２制御プログラムとは異なる第２初期化判断情報を設定するようにすればよい。これにより、第２制御プログラムを書き換えた後に、第２初期化判断情報と第２照合情報との間で第２設定情報間関係を有していないと第２判断手段により判断され、第２データ記憶領域に記憶されているデータの値が第２初期化手段により初期化される。
【００２３】
このため、第２制御プログラムが書き換えられ、新しい第２制御プログラムにおいてパラメータの削除および変更が行われても、新しい第２制御プログラムにおいて、パラメータへのアクセスで正しい値を参照することができる。
【００２４】
さらに、第１制御プログラムが書き換えられ、新しい第１制御プログラムにおいて第１データ記憶領域のデータ量が増加し、第１制御プログラムの書換え前には第２制御プログラムの第２データ記憶領域として割り当てられていた領域が第１データ記憶領域のために割り当てられる初期化が行われた場合には、この初期化により、第２データ記憶領域に記憶されている第２照合情報が変更される場合がある。
【００２５】
そして、第２照合情報が変更された場合は、第１制御プログラムを書き換えた後に、第２初期化判断情報と第２照合情報との間で第２設定情報間関係を有していないと第２判断手段により判断され、第２データ記憶領域に記憶されているデータの値が第２初期化手段により初期化される。これにより、新しい第１制御プログラムにおいて第１データ記憶領域のデータ量が増加した場合であっても、第２制御プログラムにおいて、パラメータにアクセスすると正しい値を参照することができなくなるという事態の発生を抑制することができる。
【００２６】
なお、新しい第１制御プログラムにおいて第１データ記憶領域のデータ量が増加し、第１制御プログラムの書換え前には第２制御プログラムの第２データ記憶領域として割り当てられていた領域が第１データ記憶領域のために割り当てられるという状況が発生したことを確実に検出するためには、第２照合情報を第２データ記憶領域の先頭アドレスに記憶するようにするとよい。
【図面の簡単な説明】
【００２７】
【図１】ＥＣＵ１の構成を示すブロック図である。
【図２】初期化処理を示すフローチャートである。
【図３】初期化によりデータ量が増加する場合の記憶領域の変化を示す図である。
【図４】初期化によりパラメータが削除される場合の記憶領域の変化を示す図である。
【図５】初期化によりパラメータが変更される場合の記憶領域の変化を示す図である。
【図６】データ記憶領域１０１０，１０２０の構成を示す図である。
【図７】データ記憶領域１０３０，１０４０の構成を示す図である。
【図８】プログラム書き換え前のデータ記憶領域１０５０，１０６０の構成を示す図である。
【図９】データ記憶領域１０５０，１０６０の構成と記憶領域１０５１の配置を示す図である。
【図１０】データ記憶領域１０５０，１０６０の構成と記憶領域１０５１，１０５２の配置を示す図である。
【発明を実施するための形態】
【００２８】
以下に本発明の実施形態を図面とともに説明する。
本実施形態の電子制御装置（以下、ＥＣＵという）１は、車両に搭載され、図１に示すように、車両のエンジンＥＧの制御を行う。
【００２９】
ＥＣＵ１は、ＣＰＵ（中央演算装置）２、フラッシュＲＯＭ３、ＲＡＭ４、入出力回路５および通信回路６と、これらを相互に接続するバス７とを備える。
フラッシュＲＯＭ３は、データ書き換え可能な不揮発性メモリであり、ＣＰＵ２が実行するプログラムを記憶するためのプログラム記憶領域３１と、プログラムの実行時に参照されるデータを記憶するためのデータ記憶領域３２とが設けられている。
【００３０】
ＲＡＭ４は、揮発性メモリであり、ＣＰＵ２の演算結果等を一時的に記憶する。
ＣＰＵ２は、エンジンＥＧを制御するための情報として、吸気管圧力センサ、エンジン回転数センサ、エンジン水温センサ、排気系の酸素センサ（空燃比センサ）、車速センサおよびイグニッションスイッチ等から各種信号を入出力回路５を介して入力する。なお、図１に示すエンジンＥＧは、エンジン本体を含め、吸気系、排気系等、エンジンに関連する系を総称して示すものであって、本実施形態では詳細な説明を省略する。
【００３１】
そしてＣＰＵ２は、フラッシュＲＯＭ３に記憶されたプログラムに基づいて各種処理を実行する。またＣＰＵ２は、入出力回路５を介して入力される各種信号に基づいて制御演算を行い、その演算結果に基づき、点火装置およびインジェクタ等の電気負荷へ入出力回路５を介して駆動信号を出力することにより、エンジンＥＧの制御に関係する電気負荷を制御する。例えばＣＰＵ２は、インジェクタの開弁タイミングおよび開弁時間を演算し、その演算結果に基づいて、インジェクタを駆動するための駆動信号を出力することにより、エンジンＥＧへの燃料噴射を制御する。
【００３２】
また通信回路６には、フラッシュＲＯＭ３に記憶されるプログラムの書き換え等を行うためのプログラム書換装置ＲＰが、通信線１１を介して接続される。このプログラム書換装置ＲＰは、例えば、コネクタ（不図示）を介して着脱可能になっており、プログラムの書き換え時等にＥＣＵ１に接続される。なおプログラム書換装置ＲＰは、マイコンおよび表示装置を備えたハンディタイプの装置または小型のパソコン等である。
【００３３】
そしてＥＣＵ１は、通信回路６を介してプログラム書換装置ＲＰからプログラム書換要求を受信すると、プログラム書換装置ＲＰから送信される新たなプログラムをフラッシュＲＯＭ３に書き込む書換処理を行うように構成されている。
【００３４】
また、フラッシュＲＯＭ３のプログラム記憶領域３１には、複数のプログラムが記憶されている。なお図１では、プログラム３１１、プログラム３１２およびプログラム３１３を示している。
【００３５】
さらに、フラッシュＲＯＭ３のデータ記憶領域３２には、プログラム記憶領域３１に記憶されている複数のプログラムのそれぞれに対応した複数のデータ群が記憶されている。なお図１では、プログラム３１１、プログラム３１２およびプログラム３１３のそれぞれに対応するデータ群３２１、データ群３２２およびデータ群３２３を示している。
【００３６】
そして、プログラム記憶領域３１に記憶されている複数のプログラムにはそれぞれ、データ群を初期化するか否かを判断するために用いられるキーワードが設定されている（図１のキーワードＫＷ１，ＫＷ２，ＫＷ３を参照）。さらに、データ記憶領域３２に記憶されている複数のデータ群にはそれぞれ、データ群を初期化するか否かを判断するために用いられるキーワードを格納するためのキーワード領域が設けられている（図１のキーワード領域ＫＲ１，ＫＲ２，ＫＲ３を参照）。なお本実施形態では、キーワード領域は、対応するデータ群の先頭アドレスに設定されている。
【００３７】
このように構成されたＥＣＵ１において、ＣＰＵ２は、フラッシュＲＯＭ３に記憶されているデータ群を上記キーワードに基づいて初期化するための初期化処理を実行する。
この初期化処理は、上記キーワードに基づいて初期化するか否かを判断する必要があるプログラム毎に設けられている。本実施形態のＥＣＵ１では、プログラム３１１、プログラム３１２およびプログラム３１３のそれぞれに対応した初期化処理を実行するように構成されている。
【００３８】
そして、プログラム毎に設けられた複数の初期化処理は、複数の初期化処理の中での実行順が予め設定されている。本実施形態のＥＣＵ１では、ＥＣＵ１の電源オン時に、まず、プログラム３１１に対応した初期化処理が実行され、この初期化処理が終了した後に、プログラム３１２に対応した初期化処理が実行される。その後、プログラム３１２に対応した初期化処理が終了した後に、プログラム３１３に対応した初期化処理が実行される。そして、プログラム３１３に対応した初期化処理が終了すると、次の電源オン時まで初期化処理は行われない。
【００３９】
ここで、ＣＰＵ２が実行する初期化処理の手順を図２を用いて説明する。
この初期化処理が実行されると、ＣＰＵ２は、まずＳ１０にて、当該初期化処理に対応するプログラムについて、このプログラムに対応するデータ群の記憶領域に有効な値が存在しているか否かを判断する。ここで、工場出荷時のようにデータが書き込まれたことがない場合には、有効な値が存在しないと判断される。一方、データが１回でも書き込まれた場合には、有効な値が存在していると判断される。
【００４０】
ここで、対応するデータ群の記憶領域に有効な値が存在しない場合には（Ｓ１０：ＮＯ）、Ｓ３０に移行する。一方、対応するデータ群の記憶領域に有効な値が存在する場合には（Ｓ１０：ＹＥＳ）、Ｓ２０にて、当該初期化処理に対応するプログラムに設定されているキーワード（以下、プログラムキーワードという）の値と、対応するデータ群のキーワード領域に格納されているキーワード（以下、データ群キーワードという）の値とが一致するか否かを判断する。
【００４１】
ここで、プログラムキーワードとデータ群キーワードとが一致している場合には（Ｓ２０：ＹＥＳ）、初期化処理を終了する。これにより、対応するデータ群の値が保持される。一方、プログラムキーワードとデータ群キーワードとが一致していない場合には（Ｓ２０：ＮＯ）、Ｓ３０に移行する。
【００４２】
そしてＳ３０に移行すると、対応するデータ群の値を初期化し、初期化処理を一旦終了する。
次に、初期化によりデータ群のデータ量が増加する場合のＥＣＵ１の動作を図３を用いて説明する。
【００４３】
まず図３に示すように、プログラム記憶領域３１に記憶されているプログラム３１１，３１２，３１３のキーワードＫＷ１，ＫＷ２，ＫＷ３の値がそれぞれＸ０，Ｙ０，Ｚ０に設定されているとする。また、データ記憶領域３２に記憶されているデータ群３２１，３２２，３２３のキーワード領域ＫＲ１，ＫＲ２，ＫＲ３にはそれぞれ、値がＸ０，Ｙ０，Ｚ０のキーワードが格納されているとする（フラッシュＲＯＭ３ａを参照）。
【００４４】
その後、プログラム書換装置ＲＰを用いたプログラムの書き換えが行われ、プログラム記憶領域３１に記憶されているプログラム３１１，３１２，３１３のキーワードＫＷ１，ＫＷ２，ＫＷ３の値がそれぞれＸ０，Ｙ１，Ｚ０に設定されたとする（フラッシュＲＯＭ３ｂを参照）。
【００４５】
このプログラム書き換えの後にＥＣＵ１を起動すると、まず、プログラム３１１に対応した初期化処理が実行される。
そして、プログラム３１１のキーワードＫＷ１の値がＸ０であり、プログラム３１１に対応するデータ群３２１のキーワード領域ＫＲ１のキーワードの値がＸ０であるため、プログラムキーワードとデータ群キーワードとが一致し、データ群３２１の値が保持される。
【００４６】
次に、プログラム３１２に対応した初期化処理が実行される。そして、プログラム３１２のキーワードＫＷ２の値がＹ１であり、プログラム３１２に対応するデータ群３２２のキーワード領域ＫＲ２のキーワードの値がＹ０であるため、プログラムキーワードとデータ群キーワードとが不一致となり、データ群３２２の値が初期化される。なお、この初期化により、データ群３２２の記憶領域のデータ量が２５６バイトから５１２バイトに増加したとする。そして、データ群３２２の値が初期化された後に、データ群３２２のキーワード領域ＫＲ２に、値がＹ１のキーワードが格納される。
【００４７】
次に、プログラム３１３に対応した初期化処理が実行される。なお、データ群３２２の値が初期化されてデータ群３２２の記憶領域のデータ量が増加したことにより、プログラム書き換えの前においてデータ群３２３のキーワード領域ＫＲ３が割り当てられていたアドレスには、Ｚ０とは異なる値が格納されることとなる。このため、プログラム３１３のキーワードＫＷ３の値がＺ０であり、プログラム３１３に対応するデータ群３２３のキーワード領域ＫＲ３のキーワードの値がＺ０ではないため、プログラムキーワードとデータ群キーワードとが不一致となり、データ群３２３の値が初期化される。そして、データ群３２２の値が初期化された後に、データ群３２３のキーワード領域ＫＲ３に、値がＺ０のキーワードが格納される。なお、データ群３２２の記憶領域のデータ量が２５６バイトから５１２バイトに増加したため、初期化後のキーワード領域ＫＲ３のアドレスは、初期化前と異なる。
【００４８】
次に、データ群で使用されるパラメータが初期化により削除される場合のＥＣＵ１の動作を図４を用いて説明する。
まず図４に示すように、プログラム記憶領域３１に記憶されているプログラム３１１，３１２，３１３のキーワードＫＷ１，ＫＷ２，ＫＷ３の値がそれぞれＸ０，Ｙ０，Ｚ０に設定されているとする（フラッシュＲＯＭ３ｃを参照）。
【００４９】
また、データ記憶領域３２に記憶されているデータ群３２１，３２２，３２３のキーワード領域ＫＲ１，ＫＲ２，ＫＲ３にはそれぞれ、値がＸ０，Ｙ０，Ｚ０のキーワードが格納されているとする。さらに、データ群３２１には、パラメータα０の値を格納する記憶領域と、パラメータα１の値を格納する記憶領域とが連続して設けられている（フラッシュＲＯＭ３ｃを参照）。
【００５０】
その後、プログラム書換装置ＲＰを用いたプログラムの書き換えが行われ、プログラム記憶領域３１に記憶されているプログラム３１１，３１２，３１３のキーワードＫＷ１，ＫＷ２，ＫＷ３の値がそれぞれＸ１，Ｙ０，Ｚ０に設定されたとする（フラッシュＲＯＭ３ｄを参照）。
【００５１】
このプログラム書き換えの後にＥＣＵ１を起動すると、まず、プログラム３１１に対応した初期化処理が実行される。
そして、プログラム３１１のキーワードＫＷ１の値がＸ１であり、プログラム３１１に対応するデータ群３２１のキーワード領域ＫＲ１のキーワードの値がＸ０であるため、プログラムキーワードとデータ群キーワードとが不一致となり、データ群３２１の値が初期化される。なお、この初期化により、データ群３２１の記憶領域のデータ量は変化せず、初期化前にパラメータα０のために割り当てられていた記憶領域はパラメータα１のために割り当てられるとともに、初期化前にパラメータα１のために割り当てられていた記憶領域はパラメータα２のために割り当てられるとする（フラッシュＲＯＭ３ｄを参照）。そして、データ群３２１の値が初期化された後に、データ群３２１のキーワード領域ＫＲ１に、値がＸ１のキーワードが格納される。
【００５２】
次に、プログラム３１２に対応した初期化処理が実行される。そして、プログラム３１２のキーワードＫＷ２の値がＹ０であり、プログラム３１２に対応するデータ群３２２のキーワード領域ＫＲ２のキーワードの値がＹ０であるため、プログラムキーワードとデータ群キーワードとが一致し、データ群３２２の値が保持される。
【００５３】
次に、プログラム３１３に対応した初期化処理が実行される。そして、プログラム３１３のキーワードＫＷ３の値がＺ０であり、プログラム３１３に対応するデータ群３２３のキーワード領域ＫＲ３のキーワードの値がＺ０であるため、プログラムキーワードとデータ群キーワードとが一致し、データ群３２３の値が保持される。
【００５４】
次に、データ群で使用されるパラメータが初期化により変更される場合のＥＣＵ１の動作を図５を用いて説明する。
まず図５に示すように、プログラム記憶領域３１に記憶されているプログラム３１１，３１２，３１３のキーワードＫＷ１，ＫＷ２，ＫＷ３の値がそれぞれＸ０，Ｙ０，Ｚ０に設定されているとする（フラッシュＲＯＭ３ｅを参照）。
【００５５】
また、データ記憶領域３２に記憶されているデータ群３２１，３２２，３２３のキーワード領域ＫＲ１，ＫＲ２，ＫＲ３にはそれぞれ、値がＸ０，Ｙ０，Ｚ０のキーワードが格納されているとする。さらに、データ群３２１には、パラメータα３の値を格納する記憶領域が設けられている（フラッシュＲＯＭ３ｅを参照）。
【００５６】
その後、プログラム書換装置ＲＰを用いたプログラムの書き換えが行われ、プログラム記憶領域３１に記憶されているプログラム３１１，３１２，３１３のキーワードＫＷ１，ＫＷ２，ＫＷ３の値がそれぞれＸ２，Ｙ０，Ｚ０に設定されたとする（フラッシュＲＯＭ３ｆを参照）。
【００５７】
このプログラム書き換えの後にＥＣＵ１を起動すると、まず、プログラム３１１に対応した初期化処理が実行される。
そして、プログラム３１１のキーワードＫＷ１の値がＸ２であり、プログラム３１１に対応するデータ群３２１のキーワード領域ＫＲ１のキーワードの値がＸ０であるため、プログラムキーワードとデータ群キーワードとが不一致となり、データ群３２１の値が初期化される。なお、この初期化により、データ群３２１の記憶領域のデータ量は変化せず、初期化前にパラメータα３のために割り当てられていた記憶領域はパラメータβ０のために割り当てられるとする（フラッシュＲＯＭ３ｆを参照）。そして、データ群３２１の値が初期化された後に、データ群３２１のキーワード領域ＫＲ１に、値がＸ２のキーワードが格納される。
【００５８】
次に、プログラム３１２に対応した初期化処理が実行される。そして、プログラム３１２のキーワードＫＷ２の値がＹ０であり、プログラム３１２に対応するデータ群３２２のキーワード領域ＫＲ２のキーワードの値がＹ０であるため、プログラムキーワードとデータ群キーワードとが一致し、データ群３２２の値が保持される。
【００５９】
次に、プログラム３１３に対応した初期化処理が実行される。そして、プログラム３１３のキーワードＫＷ３の値がＺ０であり、プログラム３１３に対応するデータ群３２３のキーワード領域ＫＲ３のキーワードの値がＺ０であるため、プログラムキーワードとデータ群キーワードとが一致し、データ群３２３の値が保持される。
【００６０】
このように構成されたＥＣＵ１は、エンジンＥＧを制御するための制御プログラムを記憶して記憶内容の書き換えが可能なフラッシュＲＯＭ３を備え、プログラム書換装置ＲＰからプログラム書換要求を受信した場合に、フラッシュＲＯＭ３に記憶された制御プログラムの内容を書き換えるように構成され、フラッシュＲＯＭ３には、制御プログラムを記憶するためのプログラム記憶領域３１と、制御プログラムで使用される制御データを記憶するデータ記憶領域３２とが設けられ、制御プログラムは、プログラム３１１，３１２，３１３から構成され、データ記憶領域３２には、プログラム３１１で使用されるデータ群３２１を記憶するための記憶領域と、プログラム３１２で使用されるデータ群３２２を記憶するための記憶領域と、プログラム３１３で使用されるデータ群３２３を記憶するための記憶領域とが設けられ、第１，２，３制御プログラムにはそれぞれ、データ群３２１，３２２，３２３を初期化するか否かを判断するためのキーワードＫＷ１，ＫＷ２，ＫＷ３が設定され、データ群３２１，３２２，３２３を記憶する記憶領域にはそれぞれ、キーワードＫＷ１，ＫＷ２，ＫＷ３と照合するためのキーワードを記憶するキーワード領域ＫＲ１，ＫＲ２，ＫＲ３が設けられている。
【００６１】
そして、キーワードＫＷ１と、キーワード領域ＫＲ１に記憶されているキーワードとが一致しているか否かを判断し（Ｓ２０）、一致していないと判断した場合に（Ｓ２０：ＮＯ）、データ群３２１の値を初期化する（Ｓ３０）。
【００６２】
また、キーワードＫＷ２と、キーワード領域ＫＲ２に記憶されているキーワードとが一致しているか否かを判断し（Ｓ２０）、一致していないと判断した場合に（Ｓ２０：ＮＯ）、データ群３２２の値を初期化する（Ｓ３０）。
【００６３】
また、キーワードＫＷ３と、キーワード領域ＫＲ３に記憶されているキーワードとが一致しているか否かを判断し（Ｓ２０）、一致していないと判断した場合に（Ｓ２０：ＮＯ）、データ群３２３の値を初期化する（Ｓ３０）。
【００６４】
このように構成されたＥＣＵ１では、プログラム３１１，３１２，３１３を書き換えることによりデータ群３２１，３２２，３２３を初期化する必要がある場合には、書き換えられた後のプログラム３１１，３１２，３１３に、書き換えられる前のプログラム３１１，３１２，３１３とは異なるキーワードＫＷ１，ＫＷ２，ＫＷ３を設定するようにすればよい。これにより、プログラム３１１，３１２，３１３を書き換えた後に、キーワードＫＷ１，ＫＷ２，ＫＷ３と、データ群３２１，３２２，３２３に記憶されているキーワードとが一致していないと判断され、データ群３２１，３２２，３２３が初期化される。
【００６５】
このため、プログラム３１１，３１２，３１３が書き換えられ、新しいプログラム３１１，３１２，３１３において或るパラメータ（以下、第１パラメータという）の定義が削除された場合に、このパラメータの削除に対応した初期化が行われるようにすることができる。これにより、新しいプログラム３１１，３１２，３１３において、第１パラメータより後に定義されているパラメータにアクセスした場合であっても、このパラメータに関する正しい値を参照することができる。
【００６６】
また、プログラム３１１，３１２，３１３が書き換えられ、新しいプログラム３１１，３１２，３１３において、第１パラメータの代わりに別のパラメータ（以下、第２パラメータという）が定義されるパラメータの変更が行われた場合に、このパラメータの変更に対応した初期化が行われるようにすることができる。これにより、新しいプログラム３１１，３１２，３１３において、第２パラメータにアクセスした場合であっても、このパラメータに関する正しい値を参照することができる。
【００６７】
さらに、例えばプログラム３１１が書き換えられ、新しいプログラム３１１においてデータ群３２１のデータ量が増加し、プログラム３１１の書換え前にはプログラム３１２のデータ群３２２に割り当てられていた領域がデータ群３２１のために割り当てられる初期化が行われた場合には、この初期化により、データ群３２２のキーワード領域ＫＲ２に記憶されているキーワードが変更される場合がある。
【００６８】
そして、キーワード領域ＫＲ２に記憶されているキーワードが変更された場合は、プログラム３１１を書き換えた後に、キーワードＫＷ２と、データ群３２２に記憶されているキーワードとが一致していないと判断され、データ群３２２が初期化される。これにより、プログラム３１１においてデータ群３２１のデータ量が増加した場合であっても、プログラム３１２において、パラメータにアクセスすると正しい値を参照することができなくなるという事態の発生を抑制することができる。
【００６９】
なお、キーワード領域ＫＲ１，ＫＲ２，ＫＲ３はそれぞれ、データ群３２１，３２２，３２３の先頭アドレスに設定されている。このため、或るデータ群のために割り当てられていた領域が他のデータ群のために割り当てられるという状況が発生したことを確実に検出することができる。
【００７０】
以上説明した実施形態において、フラッシュＲＯＭ３は本発明における不揮発性メモリ、プログラム３１１に対応した初期化処理におけるＳ２０の処理は本発明における第１判断手段、プログラム３１２に対応した初期化処理におけるＳ２０の処理は本発明における第２判断手段、プログラム３１１に対応した初期化処理におけるＳ３０の処理は本発明における第１初期化手段、プログラム３１２に対応した初期化処理におけるＳ３０の処理は本発明における第２初期化手段である。
【００７１】
また、エンジンＥＧは本発明における制御対象、プログラム３１１は本発明における第１制御プログラム、プログラム３１２は本発明における第２制御プログラム、データ群３２１を記憶するための記憶領域は本発明における第１データ記憶領域、データ群３２２を記憶するための記憶領域は本発明における第２データ記憶領域、キーワードＫＷ１は本発明における第１初期化判断情報、キーワードＫＷ２は本発明における第２初期化判断情報、キーワード領域ＫＲ１に記憶されているキーワードは本発明における第１照合情報、キーワード領域ＫＲ２に記憶されているキーワードは本発明における第２照合情報、Ｓ３０の判断条件は本発明における第１設定情報間関係および第２設定情報間関係である。
【００７２】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採ることができる。
例えば上記実施形態では、キーワードＫＷ１，ＫＷ２，ＫＷ３と、データ群３２１，３２２，３２３に記憶されているキーワードとが一致していない場合に初期化が行われるものを示したが、例えば、キーワードＫＷ１，ＫＷ２，ＫＷ３と、データ群３２１，３２２，３２３に記憶されているキーワードとが一致している場合に初期化が行われるようにキーワードを設定するようにしてもよいし、キーワードＫＷ１，ＫＷ２，ＫＷ３の値と、データ群３２１，３２２，３２３に記憶されているキーワードの値との差が予め設定された初期化判定値と一致する場合に初期化が行われるようにキーワードを設定するようにしてもよい。
【符号の説明】
【００７３】
１…ＥＣＵ、２…ＣＰＵ、３…フラッシュＲＯＭ、３１…プログラム記憶領域、３２…データ記憶領域、３１１，３１２，３１３…プログラム、３２１，３２２，３２３…データ群、ＫＲ１，ＫＲ２，ＫＲ３…キーワード領域、ＫＷ１，ＫＷ２，ＫＷ３…キーワード
【図１】
2014044640.tif 000003
【図２】
2014044640.tif 000004
【図３】
2014044640.tif 000005
【図４】
2014044640.tif 000006
【図５】
2014044640.tif 000007
【図６】
2014044640.tif 000008
【図７】
2014044640.tif 000009
【図８】
2014044640.tif 000010
【図９】
2014044640.tif 000011
【図１０】
2014044640.tif 000012