(57)【特許請求の範囲】
【請求項１】
書換えを必要とし、個別に更新要求がなされる複数の制御データからなる特定の制御データ群の保存に、書換え可能な不揮発性メモリとして、フラッシュメモリを用いる電子制御装置の制御データ記憶装置において、
フラッシュメモリの１ブロック内に、前記特定の制御データ群を書込むことのできる大きさの保存領域をアドレス順に複数設定する一方、
前記特定の制御データ群の使用時に、前記複数の保存領域のうち、書込み済の領域で、かつそのうちアドレス順で末尾の領域から、前記特定の制御データ群を読出す制御データ読出し手段と、
前記特定の制御データ群のうち少なくとも１つの制御データの更新時に、前記複数の保存領域のうち、未書込みの領域で、かつそのうちアドレス順で先頭の領域に、更新する制御データと更新しない制御データとを含む前記特定の制御データ群の全てを書込む制御データ書込み手段と、
を設けたことを特徴とする電子制御装置の制御データ記憶装置。
【請求項２】
前記複数の保存領域のそれぞれに、当該領域への書込みの有無を示す識別データの記憶部を具備させ、この識別データを読出して、制御データを読出す保存領域及び制御データを書込む保存領域を判定することを特徴とする請求項１記載の電子制御装置の制御データ記憶装置。
【請求項３】
前記特定の制御データ群に、フラッシュメモリの診断のため該メモリ内の全データに基づいて計算されるキャリブレーションベリフィケーション値を含み、制御データの更新時に、キャリブレーションベリフィケーション値を更新することを特徴とする請求項１又は請求項２記載の電子制御装置の制御データ記憶装置。
【請求項４】
前記複数の保存領域について、書込み済の領域と未書込みの領域とを調査し、空き状況を外部のモニタ手段に出力することを特徴とする請求項１〜請求項３のいずれか１つに記載の電子制御装置の制御データ記憶装置。
【請求項５】
前記複数の保存領域について、書込み済の領域と未書込みの領域とを調査し、未書込みの領域がないときにその旨を外部のモニタ手段に出力することを特徴とする請求項１〜請求項４のいずれか１つに記載の電子制御装置の制御データ記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子制御装置（例えば車両制御用マイコン）の制御データ記憶装置に関する。
【０００２】
【従来の技術】
従来、車両においては、エンジンの制御や自動変速機を含む駆動系の制御などにマイコンが使用されており、制御データは、バッテリが外されても消去されないように、不揮発性メモリ（ＲＯＭ）に記憶させているが、車両開発段階あるいは市場（ディーラー）にて、マイコンの制御内容を変更する場合、制御データの書換えが要求される。
【０００３】
このため、書換え可能な不揮発性メモリを使用し、車載のマイコンに対し、非車載のメモリ書換装置（コンサルト等の電子システム診断テスター等）を通信手段を介して接続し、メモリの書換えを行っている。
電気的に書換え可能な不揮発性メモリとしては、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory ）や、フラッシュメモリ（ＦＬＡＳＨ  ＥＥＰＲＯＭ）がある。
【０００４】
ＥＥＰＲＯＭは、１ワード（２バイト）単位で消去して、書込みでき、書換え保証回数も１００万回以上と大きいものの、内部回路が複雑で、極めて高価である。
フラッシュメモリは、安価であり、１バイト単位で書込むことはできるものの、書換える場合の消去は１ブロック（例えば２Ｋバイトあるいは４Ｋバイト）単位で行う必要が有り、書換え保証回数も１００回程度である。このため、特開２０００−４５８５８号公報に記載の技術では、フラッシュメモリの書換え回数を容易に判断することができ、しかも、ビット化けが生じても書換え回数を正確に判定できるようにするため、フラッシュメモリの書換え回数を記憶するための回数情報記憶領域を、フラッシュメモリにて連続した複数のアドレスとして設定し、フラッシュメモリに対する書込み処理を行う毎に、回数情報記憶領域のうちでデータが未書込みのアドレスの先頭から順に１つを選択し、そのアドレスに書換え回数を表す数値データを書込むようにしている。
【０００５】
以上のようなＥＥＰＲＯＭ及びフラッシュメモリの特性から、従来は、両方を搭載して、双方の特徴に応じて使い分けしている。
すなわち、プログラムや、ＲＯＭ診断のためのキャリブレーションベリフィケーション値（ＣＶＮ）などは、フラッシュメモリに、各種調整値（アイドル回転数調整値、点火時期調整値等）や、故障発生前後の運転データを記憶保持するたのフリーズフレームデータ（ＦＦＤ）などは、データ更新の容易なＥＥＰＲＰＭへそれぞれ割付けている。
【０００６】
【発明が解決しようとする課題】
しかしながら、ＥＥＰＲＰＭ及びフラッシュメモリのいずれも、電気的に書換え可能であるにもかかわらず、従来では、両方を搭載していることにより、コスト高となっている。
そこで、本発明者らは、高価なＥＥＰＲＯＭを廃止し、フラッシュメモリに１本化することができないかを検討した。
【０００７】
その結果、従来ＥＥＰＲＯＭに割付けていたデータのうち、フリーズフレームデータなどは、バックアップＲＡＭへデータを移動させることが可能であり、残りのデータ（アイドル回転数調整値、点火時期調整値、イモビライザ暗号化キー等）について、書込み方法（更新方法）を工夫することで、フラッシュメモリに割付けることができるとの結論に至った。
【０００８】
本発明は、このような背景の下になされたもので、書換えを必要とする特定の制御データ群の保存に、書換え可能な不揮発性メモリとして、フラッシュメモリを用いる場合に好適な電子制御装置の制御データ記憶装置を提供することを目的とする。
【０００９】
【課題を解決するための手段】
このため、請求項１に係る発明では、フラッシュメモリの１ブロック内に、前記特定の制御データ群を書込むことのできる大きさの保存領域をアドレス順に複数設定する一方、前記特定の制御データ群の使用時に、前記複数の保存領域のうち、書込み済の領域で、かつそのうちアドレス順で末尾の領域から、前記特定の制御データ群を読出す制御データ読出し手段と、前記特定の制御データ群のうち少なくとも１つの制御データの更新時に、前記複数の保存領域のうち、未書込みの領域で、かつそのうちアドレス順で先頭の領域に、更新する制御データと更新しない制御データとを含む前記特定の制御データ群の全てを書込む制御データ書込み手段と、を設けたことを特徴とする。
【００１０】
請求項２に係る発明では、前記複数の保存領域のそれぞれに、当該領域への書込みの有無を示す識別データの記憶部を具備させ、この識別データを読出して、制御データを読出す保存領域及び制御データを書込む保存領域を判定することを特徴とする。
請求項３に係る発明では、前記特定の制御データ群に、フラッシュメモリの診断のため該メモリ内の全データに基づいて計算されるキャリブレーションベリフィケーション値を含み、制御データの更新時に、キャリブレーションベリフィケーション値を更新することを特徴とする。
【００１１】
請求項４に係る発明では、前記複数の保存領域について、書込み済の領域と未書込みの領域とを調査し、空き状況を外部のモニタ手段に出力することを特徴とする。
請求項５に係る発明では、前記複数の保存領域について、書込み済の領域と未書込みの領域とを調査し、未書込みの領域がないときにその旨を外部のモニタ手段に出力することを特徴とする。
【００１２】
【発明の効果】
請求項１に係る発明によれば、フラッシュメモリに各種調整値などを格納し、かつ簡単に更新することが可能となり、これによって市場での書換えを可能としつつ高価なＥＥＰＲＯＭを削除でき、原価を低減できることから、市場に安価な制御データ記憶装置を供給できる。
【００１３】
請求項２に係る発明によれば、各保存領域の識別データにより、書込み済の領域と未書込みの領域との判別、すなわち、読出し領域と書込み領域との判別が容易となる。
請求項３に係る発明によれば、制御データの更新時に、キャリブレーションベリフィケーション値（ＣＶＮ）を再計算して更新することで、ＲＯＭ診断を保証することができる。
【００１４】
請求項４に係る発明によれば、書込み済の領域と未書込みの領域とを調査し、空き状況を外部のモニタ手段に出力することで、更新可能回数等を知ることができる。
請求項５に係る発明によれば、書込み済の領域と未書込みの領域とを調査し、未書込みの領域がないときにその旨を外部のモニタ手段に出力することで、更新不能であることを知ることができる。
【００１５】
【発明の実施の形態】
以下に本発明の実施の形態を図面に基づいて説明する。
図１は電子制御装置（車両制御用マイコン）のシステム構成を示している。
車載のマイコン１は、ＣＰＵ２、不揮発性のフラッシュメモリ（ＦＬＡＳＨ  ＥＥＰＲＯＭ）３、揮発性のＲＡＭ４、各種センサ・アクチュエータとの入出力のためのＩ／Ｏ５及び通信Ｉ／Ｆ６等を備えている。
【００１６】
通信Ｉ／Ｆ６には、コネクタ７を介して、非車載のメモリ書換装置（コンサルト等の電子システム診断テスター）８を接続可能である。尚、８ａは表示用ディスプレーを示している。
ここにおいて、フラッシュメモリ３は、電気的に書換え可能な不揮発性メモリであり、例えば５１２Ｋバイトの容量で、その１アドレス当たりに１バイト（８ビット）のデータが記憶されるようになっている。
【００１７】
図２を参照し、このフラッシュメモリ（ＦＬＡＳＨ  ＥＥＰＲＯＭ）３には、制御プログラムや制御データが書込まれるが、所定のアドレス位置に、書換えを必要とする特定の制御データ群の保存のため、例えば２Ｋバイトの制御データ記憶用ブロックを設定してある。
そして、この制御用データ記憶用ブロック内に、書換えを必要とする特定の制御データ群を書込むことのできる大きさの保存領域を、アドレス順に、複数設定してある（Ａ１〜Ａ１６）。各保存領域Ａ１〜Ａ１６は、例えば１２８バイトの大きさを有し、２Ｋバイトのブロック内に１６個（2048／128 ）設けられることになる。尚、図２中のアドレスは相対アドレスである。
【００１８】
前記特定の制御データ群としては、アイドル回転数調整値ＡＤＪＮＳＥＴ、点火時期調整値ＡＤＪＡＤＶ、イモビライザ暗号化キー等の他、キャリブレーションベリフィケーション値（ＣＶＮ）を挙げることができる。ＣＶＮとは、ＲＯＭ診断のために、予めＲＯＭ内の全データから計算したサム値及び／又はパリティ値である。
【００１９】
また、各保存領域Ａ１〜Ａ１６の先頭アドレスには、当該領域への書込みの有無を示す２バイトの識別データの記憶部を具備させる。この識別データの記憶部は、書込みを行わない状態では、ＦＦＨ（各ビットが全て１）となっており、書込みを行ったときに、００Ｈ（各ビットが全て０）が書込まれるようになっている。従って、図２の例では、第１保存領域Ａ１が書込み済、第２保存領域Ａ２以降が未書込みである。
【００２０】
図３及び図４は制御データ記憶用ブロックの各保存領域内の制御データが更新される様子を示している。
図３の左側は初期状態であり、第１保存領域Ａ１に、書換えを必要とする特定の制御データ群、例えばアイドル回転数調整値ＡＤＪＮＳＥＴ、点火時期調整値ＡＤＪＡＤＶ等（但し、初期状態では、調整値は通常０；補正なし）や、キャリブレーションベリフィケーション値ＣＶＮの書込みがなされており、また、第１保存領域Ａ１の先頭アドレスにある識別データ記憶部には、書込み済であることを示す００Ｈが書込まれている。第２保存領域Ａ２以降は未書込みである。
【００２１】
制御データを使用する際は、前記複数の保存領域Ａ１〜Ａ１６のうち、識別データが００Ｈである書込み済の領域であって、アドレス順で末尾の領域、この場合は第１保存領域Ａ１から、制御データ（ＡＤＪＮＳＥＴ，ＡＤＪＡＤＶ，・・・，ＣＶＮ）を読出して使用する。
この状態（図３の左側の状態）から、前記特定の制御データ群のうち、少なくとも１つの制御データ（例えばアイドル回転数調整値ＡＤＪＮＳＥＴ）の更新要求があると、前記複数の保存領域Ａ１〜Ａ１６のうち、識別データがＦＦＨである未書込みの領域であって、アドレス順で先頭の領域、この場合は第２保存領域Ａ２に、更新する制御データ（アイドル回転数調整値ＡＤＪＮＳＥＴ）と、更新しない制御データ（点火時期調整値ＡＤＪＡＤＶ等）とを含む前記特定の制御データ群の全てを書込む。同時に、第２保存領域Ａ２の先頭アドレスにある識別データ記憶部には、書込み済であることを示す００Ｈを書込む。また、キャリブレーションベリフィケーション値ＣＶＮの記憶部には、更新後のＲＯＭ内の全データに基づいて再計算したサム値及び／又はパリティ値をＣＶＮとして書込む。この結果、図３の右側の状態となる。尚、＊付きは更新されたデータであることを示している。
【００２２】
この後、制御データを使用する際は、前記複数の保存領域Ａ１〜Ａ１６のうち、識別データが００Ｈである書込み済の領域であって、アドレス順で末尾の領域、この場合は第２保存領域Ａ２から、制御データ（ＡＤＪＮＳＥＴ* ，ＡＤＪＡＤＶ，・・・，ＣＶＮ* ）を読出して使用する。
この状態（図４の左側の状態）から、前記特定の制御データ群のうち、少なくとも１つの制御データ（例えば点火時期調整値ＡＤＪＡＤＶ）の更新要求があると、前記複数の保存領域Ａ１〜Ａ１６のうち、識別データがＦＦＨである未書込みの領域であって、アドレス順で先頭の領域、この場合は第３保存領域Ａ３に、更新する制御データ（点火時期調整値ＡＤＪＡＤＶ）と、更新しない制御データ（アイドル回転数調整値ＡＤＪＮＳＥＴ* 等）とを含む前記特定の制御データ群の全てを書込む。同時に、第３保存領域Ａ３の先頭アドレスにある識別データ記憶部には、書込み済であることを示す００Ｈを書込む。また、キャリブレーションベリフィケーション値ＣＶＮの記憶部には、更新後のＲＯＭ内の全データに基づいて再計算したサム値及び／又はパリティ値をＣＶＮとして書込む。この結果、図４の右側の状態となる。尚、＊＊付きは２回更新されたデータであることを示している。
【００２３】
この後、制御データを使用する際は、前記複数の保存領域Ａ１〜Ａ１６のうち、識別データが００Ｈである書込み済の領域であって、アドレス順で末尾の領域、この場合は第３保存領域Ａ３から、制御データ（ＡＤＪＮＳＥＴ* ，ＡＤＪＡＤＶ* ，・・・，ＣＶＮ**）を読出して使用する。
図５は上記のようなメモリ書換えのための制御フローを示している。
【００２４】
ステップ１（図にはＳ１と記す。以下同様）では、キーＯＮされたか否かを判定し、キーＯＮされた場合にステップ２へ進む。
ステップ２では、キーＯＮ時の周知の処理として、ＲＡＭの初期化、レジスタの初期化を行う。
ステップ３では、フラッシュメモリの制御データ記憶用ブロック内の複数の保存領域Ａ１〜Ａ１６の中から、制御データを読出す最新に書込みが行われた保存領域を判定する。
【００２５】
具体的には、先ず制御用データ記憶用ブロック（第１保存領域Ａ１）の先頭アドレスから識別データを読出す。この結果、識別データが００Ｈであれば、アドレスカウンタを８０Ｈ増加させて、次の保存領域（第２保存領域Ａ２）の先頭アドレスから識別データを読出す。
この結果、図３の左側の例のように、第２保存領域Ａ２の識別データがＦＦＨであれば、この第２保存領域Ａ２は、未書込みであり、その前の第１保存領域Ａ１が最新に書込みされた領域で、読出すべき領域であると判定する。
【００２６】
また、図４の左側の例のように、第２保存領域Ａ２の識別データが００Ｈであれば、アドレスカウンタを更に８０Ｈ増加させて、次の第３保存領域Ａ３の先頭アドレスから識別データを読出す。この結果、識別データがＦＦＨであれば、この第３保存領域Ａ３は、未書込みであり、その前の第２保存領域Ａ２が最新に書込みされた領域で、読出すべき領域であると判定する。
【００２７】
ステップ４では、ステップ３にて読出すべき領域と判定された保存領域より、制御データ（ＡＤＪＮＳＥＴ，ＡＤＪＡＤＶ，・・・，ＣＶＮ）を読出して、ＲＡＭへストアする。ここで、ステップ３，４の部分が制御データ読出し手段に相当する。
ステップ５では、ＲＯＭ診断を実行する。ＲＯＭ診断は、ＲＯＭ内の全データのサム値及び／又はパリティ値を算出し、これをステップ４で読出した制御データのうちのＣＶＮ（サム値及び／又はパリティ値の期待値）と比較し、一致の有無を診断するものである。ここで、一致した場合は、ＲＯＭ診断ＯＫとして、ステップ６での通常時制御に移行するが、一致しない場合は、ＲＯＭ診断ＮＧとして、フェイルセーフモードに移行する（図示省略）。
【００２８】
ステップ６で通常時制御を行っているときは、同時にステップ７にて、制御データの更新要求があるか否かをチェックしている。制御データの更新要求は、車載のマイコンに、メモリ書換装置を接続して、人為的に所定の操作を行ったときに生じるものである。
制御データの更新要求がない限り、また、ステップ１２にてキーＯＦＦが検出されない限り、ステップ６での通常時制御が続行される。
【００２９】
通常時制御中に制御データの更新要求があった場合は、ステップ７での判定に基づき、ステップ８以降へ進む。
ステップ８では、フラッシュメモリの制御データ記憶用ブロック内の複数の保存領域の中から、制御データを更新して新たに書込むべき未書込みの保存領域を判定する。これは、フラッシュメモリの制御データ記憶用ブロックの空き状況のチェックを兼ねる。
【００３０】
具体的には、前記と同様に、先ず制御用データ記憶用ブロック（第１保存領域Ａ１）の先頭アドレスから識別データを読出す。この結果、識別データが００Ｈであれば、アドレスカウンタを８０Ｈ増加させて、次の保存領域（第２保存領域Ａ２）の先頭アドレスから識別データを読出す。
この結果、図３の左側の例のように、第２保存領域Ａ２の識別データがＦＦＨであれば、この第２保存領域Ａ２は、未書込みであり、この第２保存領域Ａ２が書込むべき領域であると判定する。この場合は、１／１６が書込み済であり、１５／１６が未書込みであることになり、かかる空き状況をメモリ書換装置側に出力して、モニタ手段としての表示用ディスプレイに表示させる。
【００３１】
また、図４の左側の例のように、第２保存領域Ａ２の識別データが００Ｈであれば、アドレスカウンタを更に８０Ｈ増加させて、次の第３保存領域Ａ３の先頭アドレスから識別データを読出す。この結果、識別データがＦＦＨであれば、この第３保存領域Ａ３は、未書込みであり、この第３保存領域Ａ３が書込むべき領域であると判定する。この場合は、２／１６が書込み済であり、１４／１６が未書込みであることになり、かかる空き状況をメモリ書換装置側に出力して、モニタ手段としての表示用ディスプレイに表示させる。
【００３２】
ステップ９では、上記の空き状況より、空きの有無を判定し、空き無しの場合（１６／１６が書込み済の場合）は、ステップ１０へ進んで、更新不能である旨をメモリ書換装置側に出力して、モニタ手段としての表示用ディスプレイに表示させた後、ステップ１２でキーＯＦＦを検出しないかぎり、ステップ６での通常時制御に戻る。
【００３３】
空き有りの場合は、ステップ１１へ進む。
ステップ１１では、制御データの更新要求に基づいて、新しい制御データを計算する。例えば、アイドル回転数の調整要求に対し、新しいアイドル回転数調整値ＡＤＪＮＳＥＴを算出したり、点火時期の調整要求に対し、新しい点火時期調整値ＡＤＪＡＤＶを算出したりする。
【００３４】
そして、キーＯＦＦ後に更新を実行するため、また、更新する制御データと更新しない制御データとを含む新しい制御データ群の全てを一時的にＲＡＭにストアする。
この新制御データ群には、書込み済を示す００Ｆの識別データを含んでいる。また、更新による新たな領域への書込みにより、キャリブレーションベリフィケーション値ＣＶＮを変更しなければならないので、更新後のＲＯＭ内の全データに基づくサム値及び／又はパリティ値として新たなＣＶＮを算出し、このＣＶＮも新制御データ群に含める。
【００３５】
そして、キーＯＦＦ後の更新実行を指示するため、更新要求フラグを１にセットする。この後は、ステップ１２でキーＯＦＦを検出しないかぎり、ステップ６での通常時制御に戻る。
ステップ１２にてキーＯＦＦが検出された場合は、ステップ１３へ進む。
ステップ１３では、更新要求フラグが１にセットされているか否かを判定し、更新要求フラグ＝０の場合は、本フローを終了する。
【００３６】
更新要求フラグ＝１の場合は、ステップ１４へ進む。
ステップ１４では、更新を実行する。すなわち、ステップ８にて制御データを書込む保存領域として判定された保存領域（図３の例では第２保存領域Ａ２、図４の例では第３保存領域Ａ３）に、ステップ１１にてＲＡＭに一時的にストアしてある新制御データ群を書込んで、本フローを終了する。このとき、書込んだ保存領域の先頭アドレスにある識別データ記憶部は、書込み済であることを示す００Ｈとなる。
【００３７】
ここで、ステップ７，８，１１，１４の部分が制御データ書込み手段に相当する。
【図面の簡単な説明】
【図１】  本発明の一実施形態を示すシステム図
【図２】  フラッシュメモリのデータ割付けを示す図
【図３】  制御データが更新される様子を示す図
【図４】  制御データが更新される様子を示す図
【図５】  メモリ書換えのためのフローチャート
【符号の説明】
１  車両制御用マイコン
２  ＣＰＵ
３  フラッシュメモリ（ＦＬＡＳＨ  ＥＥＰＲＯＭ）
４  ＲＡＭ
５  Ｉ／Ｏ
６  通信Ｉ／Ｆ
７  コレクタ
８  メモリ書換装置（電子システム診断テスター）
８ａ  表示用ディスプレー
【図１】
0003726663.tif 000002
【図２】
0003726663.tif 000003
【図３】
0003726663.tif 000004
【図４】
0003726663.tif 000005
【図５】
0003726663.tif 000006