(57)【要約】【課題】フラッシュＲＯＭに対し、効率的にデータを書込可能な技術を提供する。【解決手段】電子制御装置のＭＰＵは、フラッシュＲＯＭ１３への書込対象データを、１バイト単位のデータ（バイトデータ）に分割し（Ｓ１３０）、この書込対象データを構成するバイトデータの夫々を、順に処理対象データに選択する（Ｓ１４０）。そして、処理対象データと、フラッシュＲＯＭが記憶する当該処理対象データに対応するバイトデータとを比較し（Ｓ１５０）、処理対象データが、フラッシュＲＯＭが記憶するものから内容変更されたものである場合には（Ｓ１５０でＹｅｓ）、これをフラッシュＲＯＭに追記する形式で書き込む（Ｓ１６０）。一方、処理対象データがフラッシュＲＯＭが記憶するものから内容変更されたものでなければ（Ｓ１５０でＮｏ）、この処理対象データのフラッシュＲＯＭへの書込については行わないようにする。【選択図】図３
2012248094.tif 000002
【特許請求の範囲】
【請求項１】
電気的にデータ書換可能な不揮発性メモリと、
前記不揮発性メモリに対する書込対象データが生じると、前記書込対象データと前記不揮発性メモリが記憶する前記書込対象データに対応する旧データとを比較して、前記書込対象データを構成する要素データ群の内、前記旧データから内容変更された要素データを特定する比較手段と、
前記書込対象データを構成する要素データ群の内、前記比較手段により特定された前記旧データから内容変更された要素データ群を選択的に、前記不揮発性メモリに書き込む書込制御手段と、
を備えることを特徴とする電子機器。
【請求項２】
読出要求が生じると、読出要求にて指定された読出対象データを構成する要素データ毎の前記不揮発性メモリが記憶する最新データを読み出し、読み出した各要素データの最新データを、前記読出対象データとして前記読出要求元に提供する読出制御手段
を備えることを特徴とする請求項１記載の電子機器。
【請求項３】
前記不揮発性メモリは、前記要素データ複数個分に対応する予め定められたエリア単位でのデータ消去が必要なメモリであり、
前記電子機器は、
空きスペースを確保するために、前記不揮発性メモリが記憶する前記要素データ群を前記エリア単位で消去する一方、前記消去に際しては、消去対象のエリアにおいて記憶される前記要素データ群の内、最新データに対応する要素データ群を、前記消去対象のエリアに該当しない前記不揮発性メモリ内の他のエリアに書き込んで退避させる消去制御手段
を備えることを特徴とする請求項１又は請求項２記載の電子機器。
【請求項４】
前記要素データの夫々には、固有の識別コードが予め割り当てられており、
前記書込制御手段は、前記不揮発性メモリに前記要素データを書き込む際、前記要素データと関連付けて当該要素データに割り当てられた識別コードを前記不揮発性メモリに書き込み、
前記比較手段は、前記書込対象データを前記不揮発性メモリが記憶する旧データと比較する際、前記書込対象データを構成する要素データ毎に、この要素データと、当該要素データに割り当てられた識別コードと同一の識別コードに関連付けて前記不揮発性メモリが記憶する要素データとを比較して、前記書込対象データを構成する要素データ群の内、前記旧データから内容変更された要素データを特定すること
を特徴とする請求項１〜請求項３のいずれか一項記載の電子機器。
【請求項５】
前記要素データの夫々は、前記不揮発性メモリに書込可能な最小のデータ単位で前記書込対象データを区画化して表される各区画のデータであること
を特徴とする請求項１〜請求項４のいずれか一項記載の電子機器。
【請求項６】
前記不揮発性メモリは、バイト単位でデータを書込可能なメモリであり、
前記要素データの夫々は、前記バイト単位で前記書込対象データを区画化して表される各区画のデータであること
を特徴とする請求項１〜請求項４のいずれか一項記載の電子機器。
【請求項７】
前記不揮発性メモリは、フラッシュＲＯＭであることを特徴とする請求項１〜請求項６のいずれか一項記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電気的にデータ書換可能な不揮発性メモリを備え、この不揮発性メモリに対してデータの書込を行う電子機器に関する。
【背景技術】
【０００２】
従来、電気的にデータ書換可能な不揮発性メモリとしては、ＥＥＰＲＯＭやフラッシュＲＯＭが知られている。この種のメモリは、電源供給なしでデータを記憶保持することができるため、近年、学習データや設定情報等の記憶に広く利用されている。
【０００３】
ところで、ＥＥＰＲＯＭやフラッシュＲＯＭのような不揮発性メモリのデータ消去回数には、限界がある。このため、不要なデータ書込や消去等を抑えてメモリの長寿命化を図るための技術が、従来から研究されている。
【０００４】
例えば、従来技術としては、ＥＥＰＲＯＭへのデータ書込の際に、ＥＥＰＲＯＭへの書込対象データが、ＥＥＰＲＯＭに既に書き込まれている旧データに対して変更されたものであるか否かを判断し、変更されたものでない場合には、ＥＥＰＲＯＭに対してデータ書込を行わないことで、メモリの長寿命化を図る技術が知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１４１３９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術は、書込対象データが、その一部でも旧データから変更されたものである場合には、書込対象データ全体を、ＥＥＰＲＯＭに書き込むものであるため、不揮発性メモリ（ＥＥＰＲＯＭやフラッシュＲＯＭ）に対するデータ書込を十分に効率化できているとは言えなかった。
【０００７】
本発明は、こうした問題に鑑みなされたものであり、ＥＥＰＲＯＭやフラッシュＲＯＭ等の電気的にデータ書換可能な不揮発性メモリに対し、効率的にデータ書込可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するためになされた本発明は、電気的にデータ書換可能な不揮発性メモリを備える電子機器であって、比較手段と、書込制御手段と、を備えるものである。比較手段は、不揮発性メモリに対する書込対象データが生じると、書込対象データと不揮発性メモリが記憶する書込対象データに対応する旧データとを比較し、書込対象データを構成する要素データ群の内、上記旧データから内容変更された要素データを特定する。一方、書込制御手段は、書込対象データを構成する要素データ群の内、比較手段により特定された旧データから内容変更された要素データ群を選択的に、不揮発性メモリに書き込む。これによって、書込対象データを不揮発性メモリに書き込む。
【０００９】
この電子機器（請求項１）によれば、書込対象データを構成する要素データ群の内、旧データから内容変更された要素データ群を選択的に不揮発性メモリに書き込むので、書込対象データが、その一部でも旧データから変更されたものである場合には、書込対象データ全体を不揮発性メモリに書き込む従来技術と比較して、不揮発性メモリに対するデータ書込量を抑えることができる。そして、データ書込量を抑えることができれば、データ消去回数についても抑えることができ、不揮発性メモリの寿命を長くすることができる。即ち、この電子機器によれば、データ消去回数を抑えて不揮発性メモリの寿命を長くすることができるように、不揮発性メモリに対して効率的にデータ書込をすることができる。
【００１０】
尚、上記比較手段は、不揮発性メモリに対する書込要求が生じると、この書込要求にて指定された書込対象データを、不揮発性メモリが記憶する書込対象データに対応する旧データと比較し、書込対象データを構成する要素データ群の内、旧データから内容変更された要素データを特定する構成にすることができ、書込制御手段は、上記書込要求が生じると、書込対象データを構成する要素データ群の内、比較手段により特定された上記旧データから内容変更された要素データ群を、不揮発性メモリに書き込む構成にすることができる。
【００１１】
また、上記電子機器は、読出要求が生じると、読出要求にて指定された読出対象データを構成する要素データ毎の上記不揮発性メモリが記憶する最新データを読み出して、読み出した各要素データの最新データを、上記読出対象データとして読出要求元に提供する読出制御手段を備えた構成とすることができる（請求項２）。
【００１２】
更に、上記読出制御手段は、上記読み出した各要素データの最新データを結合して、この結合データを、上記読出対象データとして読出要求元に提供する構成にすることができる。このように電子機器を構成すれば、読出要求元では、不揮発性メモリに記憶されたデータを要素データ毎に管理する必要がなく、大変便利である。
【００１３】
ところで、上記不揮発性メモリが、要素データ複数個分に対応する予め定められたエリア単位でのデータ消去が必要なメモリである場合には、各要素データを個別に一つずつ不揮発性メモリから消去することができない。このため、データ消去を行って不揮発性メモリ内に空きスペースを確保する際に、何ら工夫しなければ、エリア内に旧データ（不要データ）と共に最新データが含まれることで、そのエリアを消去対象とすることができないといった問題や、データ消去動作と共に、消去すべきでない最新データまでもが不揮発性メモリから消えてしまうといった問題が発生する可能性がある。
【００１４】
従って、上記電子機器は、次のように構成されるとよい。即ち、上記電子機器は、空きスペースを確保するために、不揮発性メモリが記憶する要素データ群を、エリア単位で消去する一方、消去に際しては、消去対象のエリアにおいて記憶される要素データ群の内、最新データに対応する要素データ群を、消去対象のエリアに該当しない不揮発性メモリ内の他のエリアに書き込んで退避させる消去制御手段を備える構成にされるとよい（請求項３）。
【００１５】
このように電子機器を構成すれば、上記種類の問題が発生するのを回避しつつ、適切にエリア単位で不揮発性メモリ内のデータを消去して、不揮発性メモリ内に空きスペースを確保することができる。尚、消去制御手段は、不揮発性メモリ内において、空きスペースとなっているエリアが規定数未満となる等の所定条件が満足されると、不揮発性メモリ内の複数エリアの一つを、消去対象のエリアとして選択して、このエリアのデータを消去する構成にすることができる。
【００１６】
また、要素データの夫々に、予め固有の識別コードが割り当てられる場合、上記電子機器の書込制御手段及び比較手段は、次のように構成することができる。即ち、書込制御手段は、不揮発性メモリに要素データを書き込む際、この要素データと関連付けて当該要素データに割り当てられた識別コードを不揮発性メモリに書き込む構成にすることができる。そして、比較手段は、書込対象データを不揮発性メモリが記憶する旧データと比較する際、書込対象データを構成する要素データ毎に、この要素データと、当該要素データに割り当てられた識別コードと同一の識別コードに関連付けて不揮発性メモリが記憶する要素データとを比較して、書込対象データを構成する要素データ群の内、旧データから内容変更された要素データを特定する構成にすることができる（請求項４）。
【００１７】
このようにして識別コードを利用すれば、書込対象データの各要素データと、不揮発性メモリに記憶された旧データの各要素データとを、容易に比較することができる。
また、上述した要素データは、不揮発性メモリに書込可能な最小単位のデータとして定義することができる。即ち、各要素データは、不揮発性メモリに書込可能な最小のデータ単位で、書込対象データを区画化して表される各区画のデータとして定義することができる（請求項５）。
【００１８】
この他、不揮発性メモリがバイト単位でデータを書込可能なものである場合、各要素データの夫々は、バイト単位で書込対象データを区画化して表される各区画のデータとして定義することができる（請求項６）。
【００１９】
また、上述した不揮発性メモリとしては、ＥＥＰＲＯＭやフラッシュＲＯＭを挙げることができるが、本発明は、電気的にデータ書換可能な不揮発性メモリとしてフラッシュＲＯＭを備えた電子機器に適用されると、特に好ましい（請求項７）。フラッシュＲＯＭは、ＥＥＰＲＯＭよりも更に少ないデータ消去回数で寿命を迎えてしまうため、このような電子機器に本発明を提供されると不揮発性メモリの長寿命化による効果が一層発揮される。
【００２０】
この他、電子機器が備える各手段としての機能は、プログラムにより、コンピュータに実現させることができる。そして、上述の電子機器が備える各手段としての機能をコンピュータに実現させるためのプログラムは、コンピュータ読取可能な記録媒体に記録して、ユーザに提供することができる。記録媒体としては、ハードディスク等の磁気ディスク、ＣＤやＤＶＤ等の光ディスク、及び、光磁気ディスク等の他、メモリカード等の半導体製メモリを挙げることができる。
【図面の簡単な説明】
【００２１】
【図１】電子制御装置１の構成を表すブロック図である。
【図２】フラッシュＲＯＭ１３の構成（ａ）及び記憶ブロックの構成（ｂ）を表す図である。
【図３】ＭＰＵ１１が実行する書込制御処理を表すフローチャートである。
【図４】管理テーブルの構成を表す図である。
【図５】本実施例によるフラッシュＲＯＭ１３へのデータ書込態様（ａ）及び従来技術によるフラッシュＲＯＭ１３へのデータ書込態様（ｂ）を説明した図である。
【図６】ＭＰＵ１１が実行する消去制御処理を表すフローチャートである。
【図７】記憶ブロック内のデータを消去する際の手順について説明した図である。
【図８】ＭＰＵ１１が実行する読出制御処理を表すフローチャートである。
【発明を実施するための形態】
【００２２】
以下に本発明の実施例について、図面と共に説明する。
図１に示す本実施例の電子制御装置（ＥＣＵ）１は、車両に搭載されて、車両各部を制御するものである。この電子制御装置１は、車両に搭載されたセンサ類５からの出力信号に基づき、制御対象３としての車両に搭載された各種アクチュエータを制御することによって、車両各部を制御する。電子制御装置１としては、例えば、エンジン制御を行う電子制御装置を挙げることができる。
【００２３】
具体的に、この電子制御装置１は、マイクロプロセッサ（ＭＰＵ）１１と、フラッシュＲＯＭ１３と、入出力回路１５と、を備える。ＭＰＵ１１は、各種プログラムに従う処理を実行することによって、車両制御を実現する。このＭＰＵ１１は、上記各種プログラムを記憶するＲＯＭ１１ａと、ＲＯＭ１１ａに記憶されたプログラムに基づく各種処理の実行時に作業領域として使用されるＲＡＭ１１ｂと、を備える。
【００２４】
即ち、ＭＰＵ１１は、ＲＯＭ１１ａに記憶された各種プログラムを実行することにより、入出力回路１５を通じて、センサ類５からの出力信号を取得し、この出力信号に基づき、制御対象３への制御信号を生成し、これを入出力回路１５を通じて、制御対象３に入力する。このような処理によって制御対象３を制御し、車両制御を実現する。
【００２５】
一方、電気的にデータ書換可能な不揮発性メモリとして知られるフラッシュＲＯＭ１３は、車両制御に関わる種々のデータを記憶するものである。電子制御装置１がエンジン制御用の電子制御装置である場合、フラッシュＲＯＭ１３には、エンジン制御用の制御パラメータが記憶される。制御パラメータには、学習更新される制御パラメータ（以下、「学習パラメータ」と表現する。）が含まれる。学習パラメータは、その値がＭＰＵ１１による車両制御の結果に従って学習更新されて、フラッシュＲＯＭ１３に書き込まれる。この他、フラッシュＲＯＭ１３には、電源投入回数が書き込まれる。例えば、アクセサリスイッチがオンされて、電子制御装置１に電源が投入される度に最新の電源投入回数が書き込まれる。
【００２６】
このフラッシュＲＯＭ１３は、周知のフラッシュＲＯＭと同様、複数の記憶ブロックを備え（図２（ａ）参照）、１バイト単位でのデータ書込が可能であるものの、データ消去については記憶ブロック単位での消去が必要なものである。即ち、このフラッシュＲＯＭ１３は、最小の書込単位が１バイト単位であり、最小の消去単位が記憶ブロック単位である構成にされ、データ消去された状態の記憶ブロックには、新規データを１バイト単位で書き込むことができるものの、データが書き込まれた記憶ブロック内の領域に対しては、記憶ブロック全体に対してデータ消去動作を行わない限り、新たなデータを上書きすることができない構成にされている。
【００２７】
このフラッシュＲＯＭ１３が備える各記憶ブロックは、先頭にブロックヘッダ領域を備え（図２（ｂ）参照）、このブロックヘッダ領域に、ブロックＩＤやブロックの状態を表す情報等を記憶する。また、各記憶ブロックは、ブロックヘッダ領域に続く領域を、データヘッダ及びユーザデータを記憶するための領域として備える。データヘッダは、ユーザデータ管理用のデータである。一方、ユーザデータは、上述した制御パラメータや電源投入回数等のデータのことである。要するに、管理用のデータ以外のフラッシュＲＯＭ１３に記憶させる目的のデータは、ユーザデータとしてフラッシュＲＯＭ１３に記憶される。
【００２８】
但し、ユーザデータは、１バイトのデータとして定義されており、複数バイトのデータで構成される制御パラメータや電源投入回数等のデータは、１バイトのデータ（以下、「バイトデータ」と表現する。）に分割されて、ユーザデータとしてフラッシュＲＯＭ１３に書き込まれる。具体的に、ユーザデータは、図２（ｂ）に示すように、上記ブロックヘッダ領域に続く領域において、その領域の後端から順に書き込まれる。
【００２９】
一方、データヘッダは、対応するユーザデータのＩＤコード、このユーザデータの格納位置に対応するメモリアドレス（換言すれば、このユーザデータにアクセスするためのアドレスポインタ）、及び、このユーザデータの状態を表すフラグデータを含む。このデータヘッダは、図２（ｂ）に示すように、上記ブロックヘッダ領域に続く領域において、その領域の先端から順に書き込まれる。
【００３０】
即ち、ＭＰＵ１１は、制御データや電源投入回数等の書込対象データをフラッシュＲＯＭ１３に書き込む際には、これをバイトデータに分割し、書込対象データを構成するバイトデータの夫々を、このバイトデータに対応するデータヘッダと共に、フラッシュＲＯＭ１３に書き込む。この際、バイトデータについては、上記ブロックヘッダ領域に続く領域の後端側から書きこみ、データヘッダについては、上記ブロックヘッダ領域に続く領域の先端側から書き込む。
【００３１】
但し、書込対象データを分割して当該書込対象データを構成するバイトデータの夫々を、データヘッダと共にフラッシュＲＯＭ１３に書き込む際には、書込対象データを構成する各バイトデータと、フラッシュＲＯＭ１３が記憶する当該書込対象データに対応する旧データを構成する各バイトデータとを比較し、旧データから内容変更のあったバイトデータを選択的に、フラッシュＲＯＭ１３に追記形式で書き込む。
【００３２】
ここで、旧データを削除せずに追記形式でバイトデータをフラッシュＲＯＭ１３に書き込むのは、フラッシュＲＯＭ１３では、データの上書きができず、内容変更のあったバイトデータについての旧データを消去するためには、記憶ブロック単位での消去が必要になるためである。
【００３３】
詳述すれば、各記憶ブロックは、ユーザデータ（バイトデータ）のデータ量よりも十分大きい記憶容量に設定されており、複数バイト分のユーザデータ（バイトデータ）を記憶可能に構成されている。従って、書込対象データにおいて旧データから内容変更のあったバイトデータが存在することで、旧データから内容変更のあったバイトデータを、フラッシュＲＯＭ１３に書き込む度に、このバイトデータに対応するフラッシュＲＯＭ１３に記憶された旧データを、記憶ブロック単位でのデータ消去により、フラッシュＲＯＭ１３から削除していたのでは、データ消去の無駄が大きく、フラッシュＲＯＭ１３の寿命が早く到来してしまう。
【００３４】
このため、本実施例では、旧データから内容変更のあった最新データを、フラッシュＲＯＭ１３を書き込む際、旧データをフラッシュＲＯＭ１３から消去せずに最新データをフラッシュＲＯＭ１３に追記することによって、この最新データを、旧データを残したままフラッシュＲＯＭ１３に記憶させるのである。このような追記動作の繰返しによれば、フラッシュＲＯＭ１３におけるデータ消去回数を抑えることができ、フラッシュＲＯＭ１３の長寿命化を図ることができる。
【００３５】
但し、追記動作の繰返しによっては、記憶ブロックの空きスペースが次第に減ってしまう。このため、空きスペースのなくなった記憶ブロックについては、順次、この記憶ブロック内のデータを消去することによって、フラッシュＲＯＭ１３に必要な空きスペースを確保する。ＭＰＵ１１は、図２（ａ）に矢印で示すように、予め定められた順序で各記憶ブロックにデータを書き込むが、空きブロック（ユーザデータ及びデータヘッダが一つも登録されていない記憶ブロック）が規定数未満となる場合には、空きブロックでない記憶ブロックの内、データ書込時期が最も古い記憶ブロック内のデータを消去する。このようにして、ＭＰＵ１１は、空きスペースを確保する。
【００３６】
続いて、ＭＰＵ１１によるデータの書込動作、消去動作、及び、読出動作についての詳細を、フローチャートを用いて説明する。
ＭＰＵ１１は、フラッシュＲＯＭ１３に対する書込要求が生じると、図３に示す書込制御処理を実行し、書込要求にて指定された書込対象データを、フラッシュＲＯＭ１３に書き込む。書込要求は、例えば、車両制御の結果に従って学習パラメータを更新する処理タスクや電源投入回数をカウントアップする処理タスクから入力される。
【００３７】
この書込制御処理を実行すると、ＭＰＵ１１は、書込要求元からフラッシュＲＯＭ１３への書込対象データを取得すると共に、書込対象データの種類を判別可能な識別コードであるＩＤコードを取得する（Ｓ１１０）。但し、ここで取得するＩＤコードは、上記データヘッダに用いられる上述のＩＤコードであってもよいし、書込要求元で管理される別のＩＤコードであってもよい。取得するＩＤコードが書込要求元で管理されるＩＤコードである場合には、これを上記データヘッダに用いるＩＤコードに変換する必要があるため、その変換テーブルを予めＲＯＭ１１ａ等に記憶させておく必要がある。
【００３８】
Ｓ１１０での処理を終えると、ＭＰＵ１１は、上記取得した書込対象データが２バイト以上のデータであるか否かを判断し（Ｓ１２０）、２バイト以上のデータであると判断すると（Ｓ１２０でＹｅｓ）、この書込対象データを１バイト毎のデータに分割する。即ち、この書込対象データを、バイトデータの一群に分割する（Ｓ１３０）。その後、Ｓ１４０に移行する。一方、書込対象データが１バイトのデータであると判断すると（Ｓ１２０でＮｏ）、ＭＰＵ１１は、Ｓ１３０の処理を実行することなく、この書込対象データをバイトデータと取り扱って、Ｓ１４０に移行する。
【００３９】
Ｓ１４０に移行すると、ＭＰＵ１１は、書込対象データを構成するバイトデータ群の中から、処理対象のバイトデータを一つ選択し、この処理対象のバイトデータが、フラッシュＲＯＭ１３に記憶されている旧データから内容変更されたものであるか否かを判断する（Ｓ１５０）。
【００４０】
具体的には、処理対象のバイトデータと、当該処理対象のバイトデータに対して割り当てられたＩＤコードと同一のＩＤコードを有するデータヘッダに関連付けられてフラッシュＲＯＭ１３が記憶するバイトデータの内の最新データと、を比較することによって、処理対象のバイトデータが、フラッシュＲＯＭ１３に記憶されている旧データから内容変更されたものであるか否かを判断する（Ｓ１５０）。
【００４１】
但し、本実施例では、電子制御装置１の起動時に、ＭＰＵ１１がフラッシュＲＯＭ１３全体を参照し、フラッシュＲＯＭ１３に記憶されているバイトデータに関して、ＩＤコード毎の最新のバイトデータの格納先アドレスを表す管理テーブルを作成する。そして、これをＲＡＭ１１ｂに記憶する。そして、フラッシュＲＯＭ１３に最新のバイトデータが書き込まれる度、そのバイトデータの格納先アドレスを管理テーブル内において更新する。
【００４２】
図４には、この管理テーブルの構成を示す。図４は、フラッシュＲＯＭ１３のアドレス「＊＊＊３０００Ｈ」に、第一のデータ（ＤＡＴＡ１）を構成するバイトデータであってＩＤコードが「＊＊＊＊０」のバイトデータの最新データが格納され、フラッシュＲＯＭ１３のアドレス「＊＊＊３００１Ｈ」に、第二のデータ（ＤＡＴＡ２）を構成するバイトデータであってＩＤコードが「＊＊＊＊１」である第二のデータの上位バイト（ＤＡＴＡ２＿Ｈ）についてのバイトデータの最新データが格納され、フラッシュＲＯＭ１３のアドレス「＊＊＊３０１０Ｈ」に、第二のデータ（ＤＡＴＡ２）を構成するバイトデータであってＩＤコードが「＊＊＊＊２」である第二のデータの下位バイトＤＡＴＡ２＿Ｌについてのバイトデータの最新データが格納されているときの、管理テーブルの構成を表すものである。第一及び第二のデータとしては、上述した学習パラメータや電源投入回数等のデータを挙げることができる。
【００４３】
即ち、ＭＰＵ１１は、Ｓ１５０において、処理対象のバイトデータと、処理対象のバイトデータに対応するフラッシュＲＯＭ１３が記憶するバイトデータとを比較する際、データヘッダを介さずに、ＲＡＭ１１ｂが記憶する上記管理テーブルを参照して、処理対象のバイトデータに割り当てられたＩＤコードに対応するフラッシュＲＯＭ１３が記憶するバイトデータの最新データの格納先アドレスを特定する。そして、このアドレスに格納されたバイトデータを参照することで、比較対象のバイトデータにアクセスする。但し、ＭＰＵ１１は、このような方法に限らず、データヘッダのＩＤコードを参照して、比較対象のバイトデータをフラッシュＲＯＭ１３内において検索してもよい。
【００４４】
ＭＰＵ１１は、このような比較動作を通じて、処理対象のバイトデータが、フラッシュＲＯＭ１３に記憶されている旧データ（フラッシュＲＯＭ１３に記憶されている同一ＩＤコードのバイトデータの内、最新のもの）から内容変更されたものであると判断すると（Ｓ１５０でＹｅｓ）、Ｓ１６０に移行し、処理対象のバイトデータをユーザデータとして、そのデータヘッダと共に、フラッシュＲＯＭ１３内のアクティブブロックに書き込む（Ｓ１６０）。
【００４５】
尚、ここで言うアクティブブロックとは、フラッシュＲＯＭ１３が有する複数の記憶ブロックの内、新たにバイトデータ（ユーザデータ）をフラッシュＲＯＭ１３に書き込む際の書込先ブロックのことを言う。ＭＰＵ１１は、上述したように、予め定められた順序で各記憶ブロックにデータを書き込むが、この動作は、アクティブブロックに空きがなくなった場合には、アクティブブロックを次ブロックに切り替えて、切替後のアクティブブロックに、新たなバイトデータを書き込むといった処理手順により実現される。
【００４６】
図２（ａ）に示す例によれば、ＭＰＵ１１は、第０記憶ブロック、第１記憶ブロック、第２記憶ブロック、…、第Ｍ記憶ブロックといった順序で、アクティブブロックを切り替え、書込順が最後の記憶ブロックである第Ｍ記憶ブロックに空きがなくなった場合には、次ブロックとしての第０記憶ブロックにアクティブブロックを切り替えて、バイトデータをデータヘッダと共に当該アクティブブロックに書き込む。このように、アクティブブロックは、第０から第Ｍ記憶ブロックをループするように順に切り替えられる。
【００４７】
このアクティブブロックに対し、処理対象のバイトデータ及びデータヘッダを書き込むと、ＭＰＵ１１は、続くＳ１７０（図３参照）にて、ＲＡＭ１１ｂが記憶する管理テーブルを更新する。即ち、処理対象のバイトデータのフラッシュＲＯＭ１３における書込先に応じて、ＲＡＭ１１ｂが記憶する管理テーブルにおける該当バイトデータの格納先アドレスを、その書込先のアドレスに更新する（Ｓ１７０）。その後、Ｓ１８０に移行する。
【００４８】
また、Ｓ１８０に移行すると、ＭＰＵ１１は、書込対象データを構成する全バイトデータについて、これを処理対象のバイトデータに選択し、Ｓ１５０以降の処理を実行したか否かを判断する。そして、実行していないと判断すると（Ｓ１８０でＮｏ）、Ｓ１４０に戻って、新たなバイトデータを処理対象のバイトデータに選択し、Ｓ１５０以降の処理を実行する。
【００４９】
このようにして、書込対象データを構成する全バイトデータについてＳ１５０以降の処理を実行すると（Ｓ１８０でＹｅｓ）、ＭＰＵ１１は、当該書込制御処理を終了する。ＭＰＵ１１は、このような手順により、書込対象データを１バイト単位のデータであるバイトデータの一群に分割し、これらバイトデータ群の内、フラッシュＲＯＭ１３が記憶するデータから内容変更のあったバイトデータ群のみを選択的に、フラッシュＲＯＭ１３に追記形式で書き込む。
【００５０】
例えば、図５（ａ）に示すように、書込対象データが２バイトのデータであり、上位バイト（ＤＡＴＡ＿Ｈ）及び下位バイト（ＤＡＴＡ＿Ｌ）の内、下位バイト（ＤＡＴＡ＿Ｌ）のみが、フラッシュＲＯＭ１３に記憶されたデータから更新されたデータ（ＤＡＴＡ＿Ｌ＊）である場合には、上位バイト及び下位バイトの内、下位バイトのバイトデータ（ＤＡＴＡ＿Ｌ＊）のみを選択的に、フラッシュＲＯＭ１３に書き込む。
【００５１】
尚、図５（ａ）は、本実施例によるフラッシュＲＯＭ１３へのデータ書込態様を表す図であり、図５（ｂ）は、従来技術によるフラッシュＲＯＭ１３へのデータ書込態様を表す図である。従来技術によれば、図５（ｂ）に示すように、下位バイト（ＤＡＴＡ＿Ｌ）のみが、フラッシュＲＯＭ１３に記憶されたデータから更新されたデータ（ＤＡＴＡ＿Ｌ＊）であっても、書込対象データが２バイトのデータである場合には、これを、そのまま分割せずにフラッシュＲＯＭ１３に書き込む。このため、フラッシュＲＯＭ１３における空きスペースが早く失われ、データ消去回数を効率的に抑えることができない。本実施例によれば、このような従来技術と比較してデータ消去回数を効率的に抑えることができる。
【００５２】
続いて、図６を用いて、フラッシュＲＯＭ１３に対するデータ消去動作について説明する。ＭＰＵ１１は、フラッシュＲＯＭ１３へのデータ書込が行われる度、図６に示す消去制御処理を実行する。
【００５３】
消去制御処理を実行すると、ＭＰＵ１１は、まず、フラッシュＲＯＭ１３が次データの書込時に空きブロックが規定数（例えば、２個）未満となる状態であるか否かを判断する（Ｓ３１０）。そして、このような状態ではないと判断すると（Ｓ３１０でＮｏ）、当該消去制御処理を終了する。
【００５４】
図７の第一段に示す例は、１バイトのデータであるＤＡＴＡ１、２バイトのデータであるＤＡＴＡ２及びＤＡＴＡ３がフラッシュＲＯＭ１３に記憶されている状態を示すものである。図７に太実線で示す矩形は、記憶ブロックを表す。図７では、ＤＡＴＡ２及びＤＡＴＡ３の上位バイトに対してサフィックス「＿Ｈ」を付し、ＤＡＴＡ２及びＤＡＴＡ３の下位バイトに対してサフィックス「＿Ｌ」を付す。図７の第一段に示す状態では、アクティブブロックに空きがあり、フラッシュＲＯＭ１３が次データの書込時に空きブロックが規定数である２個未満となる状態ではないため、Ｓ３１０では、否定判断される。
【００５５】
一方、ＭＰＵ１１は、空きブロックが規定数未満となると判断すると（Ｓ３１０でＹｅｓ）、Ｓ３２０に移行する。図７第二段は、図７第一段に示す状態から、アクティブブロックに新たなデータ（ＤＡＴＡ１，ＤＡＴＡ２＿Ｌ）が書き込まれて、当該アクティブブロックに空きがなくなり、アクティブブロックが次ブロックに変更された状態を示すものである。この図７第二段に示す状態は、上記規定数が「２」である場合における、次データの書込時には、空きブロックが規定数（２個）未満となる状態に対応する。
【００５６】
このような状態となると、ＭＰＵ１１は、続くＳ３２０にて、空きブロックではない記憶ブロック（以下、「非空きブロック」と表現する。）の一群の内、最も早い時期に空きスペースのなくなった記憶ブロックを消去対象の記憶ブロック（以下、「消去対象ブロック」と表現する。）に選択する。図７に示す例では、最も右に示す記憶ブロックが消去対象ブロックに対応する。
【００５７】
その後、ＭＰＵ１１は、選択した消去対象ブロックが記憶するバイトデータ群の内、最新データに対応するバイトデータ群を特定する（Ｓ３３０）。図７第二段に示す例では、消去対象ブロックに、最新データとして、ＤＡＴＡ３の上位バイト（ＤＡＴＡ３＿Ｈ）及びＤＡＴＡ２の上位バイト（ＤＡＴＡ２＿Ｈ）が記憶保持されているものとする。図７では、最新データを、塗り潰し画像により示す。
【００５８】
ここで、消去対象ブロックが記憶する上記最新データに対応するバイトデータの特定は、Ｓ１５０での処理と同様、ＲＡＭ１１ｂに記憶された管理テーブルを参照することにより実現することができる。上述したように管理テーブルには、ＩＤコード毎に、そのＩＤコードに対応するバイトデータの最新データの格納先アドレスが記述されている。このため、管理テーブルにおいて消去対象ブロックに該当する格納先アドレスが記述されているＩＤコードに対応するバイトデータは、消去対象ブロックが記憶する上記最新データに対応するバイトデータに該当する。従って、Ｓ３３０では、管理テーブルにおいて、消去対象ブロックに該当する格納先アドレスが記述されたＩＤコードに対応するバイトデータの一群を、消去対象ブロックが記憶する上記最新データに対応するバイトデータ群として特定することができる。
【００５９】
但し、別例として、ＭＰＵ１１は、フラッシュＲＯＭ１３内のバイトデータの配置を特定することで、消去対象ブロックが記憶する上記最新データに対応するバイトデータ群を特定されてもよい。即ち、同一ＩＤコードのバイトデータが複数フラッシュＲＯＭ１３に記憶されている場合には、これら同一ＩＤコードのバイトデータ群の内、フラッシュＲＯＭ１３における現時点での書込位置終端からデータ書込方向上流に遡ったときに最初に現れるバイトデータを、最新データであると判断し、同一ＩＤコードのバイトデータが複数記憶されていないバイトデータについては、フラッシュＲＯＭ１３に記憶されている唯一のバイトデータを、最新データであると判断することで、消去対象ブロックに記憶されているバイトデータ群の内、最新データに対応するバイトデータ群を特定することができる。
【００６０】
この他、データヘッダに、上記フラグデータとして、対応するバイトデータの更新回数（バージョン）を表すデータが書き込まれる場合には、このフラグデータを参照し、フラッシュＲＯＭ１３に記憶されている同一ＩＤコードのバイトデータ群の内、更新回数が最大のバイトデータ（最新バージョンのバイトデータ）を、最新データと判断することが可能である。このような最新データの判断は、Ｓ１５０の処理にも採用することが可能である。
【００６１】
また、データヘッダに、上記フラグデータとして、正常にバイトデータがフラッシュＲＯＭ１３に書き込まれたか否かを表す情報が書き込まれる場合には、このフラグデータを参照し、正常に書き込まれてないバイトデータについては、フラッシュＲＯＭ１３に記憶されていないものと形式的に取り扱って、最新データを特定されてもよい。この場合には、ＲＡＭ１１ｂの管理テーブルに対しても、上記正常に書き込まれていないバイトデータについてはフラッシュＲＯＭ１３に記憶されていないものと形式的に取り扱って、ＩＤコード毎の最新データに対応する格納先アドレスを記述すればよい。
【００６２】
Ｓ３３０の処理後、ＭＰＵ１１は、消去対象ブロックに記憶されているバイトデータ群の内、上記特定された最新データに対応するバイトデータの夫々を、前回のデータ書込時に更新された新たなアクティブブロックに、ユーザデータとして書き込むことで、これらバイトデータを、消去対象ブロックではない記憶ブロックに退避させる（Ｓ３４０）。勿論、この際には、これらバイトデータに対応するデータヘッダを、アクティブブロックに書き込む。図７第三段には、消去対象ブロックにおいて記憶保持される最新データ（ＤＡＴＡ３＿Ｈ，ＤＡＴＡ２＿Ｈ）が、アクティブブロックに退避された例を示す。
【００６３】
その後、ＭＰＵ１１は、消去対象ブロック内のデータをブロック単位で消去して（Ｓ３５０）、当該消去制御処理を終了する。尚、消去対象ブロック内のデータを消去する際には、消去対象ブロックにおけるブロックヘッダ領域内のデータを、一旦ＲＡＭ１１ｂに退避させ、消去対象ブロック内のデータを消去した後、上記ＲＡＭ１１ｂに退避させたデータに基づき、消去後の記憶ブロックにおけるブロックヘッダ領域内に必要データを書き込む。
【００６４】
本実施例では、このような手順でフラッシュＲＯＭ１３内のデータを記憶ブロック単位で消去することによって、必要データがフラッシュＲＯＭ１３から消去されないようにする。
【００６５】
また、本実施例の電子制御装置１によれば、図８に示すようにして、フラッシュＲＯＭ１３に記憶されたデータを読み出す。即ち、ＭＰＵ１１は、フラッシュＲＯＭ１３に記憶されたデータの読出要求が生じると、図８に示す読出制御処理を実行する。読出要求は、例えば、読出対象データを必要とするタスクから入力される。
【００６６】
読出制御処理を開始すると、ＭＰＵ１１は、読出要求にて指定された読出対象データを構成する各バイトデータの最新データのフラッシュＲＯＭ１３における格納先アドレスを、読出要求元から通知される読出対象データに対応するＩＤコードの情報に基づいて特定する（Ｓ５１０）。具体的には、ＲＡＭ１１ｂが記憶する管理テーブルを参照することにより、特定することができる。尚、読出要求元から通知されるＩＤコードが、フラッシュＲＯＭ１３で用いられる上記ＩＤコードと異なる場合には、上述したように変換テーブルに基づいて、読出対象データを構成する各バイトデータのＩＤコードを特定すればよい。
【００６７】
その後、ＭＰＵ１１は、上記特定された各バイトデータの格納先アドレスを参照して、読出対象データを構成する各バイトデータについての最新データをフラッシュＲＯＭ１３から読み出し（Ｓ５２０）、読み出した各バイトデータを、そのＩＤコードに基づき、読出対象データにおけるバイトコードの配列順に結合する。これによって、読出対象データに対応する複数バイトデータを結合してなる結合データを生成する（Ｓ５３０）。その後、この結合データ（読出対象データ）を、読出要求元に提供し（Ｓ５４０）、当該読出制御処理を終了する。
【００６８】
このようにして読出制御処理を実行する本実施例の電子制御装置１によれば、フラッシュＲＯＭ１３から読み出されたバイトデータを読出要求元で結合する必要がないことから、制御パラメータや電源投入回数を取り扱うアプリケーションプログラム側の仕様を大幅に変更することなく、本発明に対応する処理を実現することができる。即ち、メモリドライバ（プログラム）を、上述した書込制御処理、消去制御処理及び読出制御処理を実行可能なプログラム構成とする程度で、本発明に対応する処理を実現することができる。
【００６９】
そして、このようなプログラムをＲＯＭ１１ａに組み込んで、ＭＰＵ１１にこれらの処理を実行させるように電子制御装置１を構成することで、利便性が高く、しかもフラッシュＲＯＭ１３に対するデータ書込量を減らしてフラッシュＲＯＭ１３の寿命を延長させることのできる電子制御装置１を構成することができる。
【００７０】
以上、本発明の実施例について説明したが、本実施例によれば、例えば、電源投入回数を２バイトのデータとして、フラッシュＲＯＭ１３に記憶させるとき、次のような利点がある。即ち、電源投入回数については、電源投入毎に１インクリメントされるため、下位バイトについては毎回、その値が更新されるが、上位バイトについては、２５６回に１回しか更新されないことになる。従って、電源投入回数について２５６回の書込をフラッシュＲＯＭ１３に行ったとすると、従来技術によれば、その書込量の合計は、２バイト×２５６回＝５１２バイトとなるが、本実施例によれば、その書込量の合計は、１バイト（下位バイト）×２５６回＋１バイト（上位バイト）×１回＝２５７バイトとなり、フラッシュＲＯＭ１３への書込量を大幅に低減することができる。よって、本実施例によれば、フラッシュＲＯＭ１３におけるデータ消去回数を低減することができ、その結果として、フラッシュＲＯＭ１３の長寿命化を実現することができる。
【００７１】
尚、上述した実施例においてＭＰＵ１１が実行するＳ１５０の処理は、比較手段によって実現される処理の一例に対応し、ＭＰＵ１１が実行するＳ１６０の処理は、書込制御手段によって実現される処理の一例に対応し、ＭＰＵ１１が実行する読出制御処理は、読出制御手段によって実現される処理の一例に対応し、ＭＰＵ１１が実行する消去制御処理は、消去制御手段によって実現される処理の一例に対応する。
【００７２】
また、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。
例えば、上記実施例では、フラッシュＲＯＭ１３を備える電子制御装置１に本発明を適用した例について説明したが、本発明は、フラッシュＲＯＭ１３に代えて、１バイト単位でのデータ消去が可能なＥＥＰＲＯＭに適用されてもよい。本発明によれば、データ書込量を抑えることができるので、結果として、ＥＥＰＲＯＭにおいてもデータ消去回数を抑えることができ、ＥＥＰＲＯＭの長寿命化を実現することができる。但し、ＥＥＰＲＯＭでは数１０万回程度のデータ消去が可能であるのに対し、フラッシュＲＯＭでは、１万回程度のデータ消去しかできないので、本発明は、フラッシュＲＯＭに適用されると、その効果が一層発揮される。
【００７３】
また、上記実施例では、本発明を、車両制御用の電子制御装置１に適用した例を説明したが、本発明は、その他の種々の電子機器に適用することが可能である。
【符号の説明】
【００７４】
１…電子制御装置、３…制御対象、５…センサ類、１１…ＭＰＵ、１１ａ…ＲＯＭ、１１ｂ…ＲＡＭ、１３…・フラッシュＲＯＭ、１５…入出力回路
【図１】
2012248094.tif 000003
【図２】
2012248094.tif 000004
【図３】
2012248094.tif 000005
【図４】
2012248094.tif 000006
【図５】
2012248094.tif 000007
【図６】
2012248094.tif 000008
【図８】
2012248094.tif 000009
【図７】
2012248094.tif 000010