説明

電子機器

【課題】フラッシュROMに対し、効率的にデータを書込可能な技術を提供する。
【解決手段】電子制御装置のMPUは、フラッシュROM13への書込対象データを、1バイト単位のデータ(バイトデータ)に分割し(S130)、この書込対象データを構成するバイトデータの夫々を、順に処理対象データに選択する(S140)。そして、処理対象データと、フラッシュROMが記憶する当該処理対象データに対応するバイトデータとを比較し(S150)、処理対象データが、フラッシュROMが記憶するものから内容変更されたものである場合には(S150でYes)、これをフラッシュROMに追記する形式で書き込む(S160)。一方、処理対象データがフラッシュROMが記憶するものから内容変更されたものでなければ(S150でNo)、この処理対象データのフラッシュROMへの書込については行わないようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電気的にデータ書換可能な不揮発性メモリを備え、この不揮発性メモリに対してデータの書込を行う電子機器に関する。
【背景技術】
【0002】
従来、電気的にデータ書換可能な不揮発性メモリとしては、EEPROMやフラッシュROMが知られている。この種のメモリは、電源供給なしでデータを記憶保持することができるため、近年、学習データや設定情報等の記憶に広く利用されている。
【0003】
ところで、EEPROMやフラッシュROMのような不揮発性メモリのデータ消去回数には、限界がある。このため、不要なデータ書込や消去等を抑えてメモリの長寿命化を図るための技術が、従来から研究されている。
【0004】
例えば、従来技術としては、EEPROMへのデータ書込の際に、EEPROMへの書込対象データが、EEPROMに既に書き込まれている旧データに対して変更されたものであるか否かを判断し、変更されたものでない場合には、EEPROMに対してデータ書込を行わないことで、メモリの長寿命化を図る技術が知られている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平11−141391号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来技術は、書込対象データが、その一部でも旧データから変更されたものである場合には、書込対象データ全体を、EEPROMに書き込むものであるため、不揮発性メモリ(EEPROMやフラッシュROM)に対するデータ書込を十分に効率化できているとは言えなかった。
【0007】
本発明は、こうした問題に鑑みなされたものであり、EEPROMやフラッシュROM等の電気的にデータ書換可能な不揮発性メモリに対し、効率的にデータ書込可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するためになされた本発明は、電気的にデータ書換可能な不揮発性メモリを備える電子機器であって、比較手段と、書込制御手段と、を備えるものである。比較手段は、不揮発性メモリに対する書込対象データが生じると、書込対象データと不揮発性メモリが記憶する書込対象データに対応する旧データとを比較し、書込対象データを構成する要素データ群の内、上記旧データから内容変更された要素データを特定する。一方、書込制御手段は、書込対象データを構成する要素データ群の内、比較手段により特定された旧データから内容変更された要素データ群を選択的に、不揮発性メモリに書き込む。これによって、書込対象データを不揮発性メモリに書き込む。
【0009】
この電子機器(請求項1)によれば、書込対象データを構成する要素データ群の内、旧データから内容変更された要素データ群を選択的に不揮発性メモリに書き込むので、書込対象データが、その一部でも旧データから変更されたものである場合には、書込対象データ全体を不揮発性メモリに書き込む従来技術と比較して、不揮発性メモリに対するデータ書込量を抑えることができる。そして、データ書込量を抑えることができれば、データ消去回数についても抑えることができ、不揮発性メモリの寿命を長くすることができる。即ち、この電子機器によれば、データ消去回数を抑えて不揮発性メモリの寿命を長くすることができるように、不揮発性メモリに対して効率的にデータ書込をすることができる。
【0010】
尚、上記比較手段は、不揮発性メモリに対する書込要求が生じると、この書込要求にて指定された書込対象データを、不揮発性メモリが記憶する書込対象データに対応する旧データと比較し、書込対象データを構成する要素データ群の内、旧データから内容変更された要素データを特定する構成にすることができ、書込制御手段は、上記書込要求が生じると、書込対象データを構成する要素データ群の内、比較手段により特定された上記旧データから内容変更された要素データ群を、不揮発性メモリに書き込む構成にすることができる。
【0011】
また、上記電子機器は、読出要求が生じると、読出要求にて指定された読出対象データを構成する要素データ毎の上記不揮発性メモリが記憶する最新データを読み出して、読み出した各要素データの最新データを、上記読出対象データとして読出要求元に提供する読出制御手段を備えた構成とすることができる(請求項2)。
【0012】
更に、上記読出制御手段は、上記読み出した各要素データの最新データを結合して、この結合データを、上記読出対象データとして読出要求元に提供する構成にすることができる。このように電子機器を構成すれば、読出要求元では、不揮発性メモリに記憶されたデータを要素データ毎に管理する必要がなく、大変便利である。
【0013】
ところで、上記不揮発性メモリが、要素データ複数個分に対応する予め定められたエリア単位でのデータ消去が必要なメモリである場合には、各要素データを個別に一つずつ不揮発性メモリから消去することができない。このため、データ消去を行って不揮発性メモリ内に空きスペースを確保する際に、何ら工夫しなければ、エリア内に旧データ(不要データ)と共に最新データが含まれることで、そのエリアを消去対象とすることができないといった問題や、データ消去動作と共に、消去すべきでない最新データまでもが不揮発性メモリから消えてしまうといった問題が発生する可能性がある。
【0014】
従って、上記電子機器は、次のように構成されるとよい。即ち、上記電子機器は、空きスペースを確保するために、不揮発性メモリが記憶する要素データ群を、エリア単位で消去する一方、消去に際しては、消去対象のエリアにおいて記憶される要素データ群の内、最新データに対応する要素データ群を、消去対象のエリアに該当しない不揮発性メモリ内の他のエリアに書き込んで退避させる消去制御手段を備える構成にされるとよい(請求項3)。
【0015】
このように電子機器を構成すれば、上記種類の問題が発生するのを回避しつつ、適切にエリア単位で不揮発性メモリ内のデータを消去して、不揮発性メモリ内に空きスペースを確保することができる。尚、消去制御手段は、不揮発性メモリ内において、空きスペースとなっているエリアが規定数未満となる等の所定条件が満足されると、不揮発性メモリ内の複数エリアの一つを、消去対象のエリアとして選択して、このエリアのデータを消去する構成にすることができる。
【0016】
また、要素データの夫々に、予め固有の識別コードが割り当てられる場合、上記電子機器の書込制御手段及び比較手段は、次のように構成することができる。即ち、書込制御手段は、不揮発性メモリに要素データを書き込む際、この要素データと関連付けて当該要素データに割り当てられた識別コードを不揮発性メモリに書き込む構成にすることができる。そして、比較手段は、書込対象データを不揮発性メモリが記憶する旧データと比較する際、書込対象データを構成する要素データ毎に、この要素データと、当該要素データに割り当てられた識別コードと同一の識別コードに関連付けて不揮発性メモリが記憶する要素データとを比較して、書込対象データを構成する要素データ群の内、旧データから内容変更された要素データを特定する構成にすることができる(請求項4)。
【0017】
このようにして識別コードを利用すれば、書込対象データの各要素データと、不揮発性メモリに記憶された旧データの各要素データとを、容易に比較することができる。
また、上述した要素データは、不揮発性メモリに書込可能な最小単位のデータとして定義することができる。即ち、各要素データは、不揮発性メモリに書込可能な最小のデータ単位で、書込対象データを区画化して表される各区画のデータとして定義することができる(請求項5)。
【0018】
この他、不揮発性メモリがバイト単位でデータを書込可能なものである場合、各要素データの夫々は、バイト単位で書込対象データを区画化して表される各区画のデータとして定義することができる(請求項6)。
【0019】
また、上述した不揮発性メモリとしては、EEPROMやフラッシュROMを挙げることができるが、本発明は、電気的にデータ書換可能な不揮発性メモリとしてフラッシュROMを備えた電子機器に適用されると、特に好ましい(請求項7)。フラッシュROMは、EEPROMよりも更に少ないデータ消去回数で寿命を迎えてしまうため、このような電子機器に本発明を提供されると不揮発性メモリの長寿命化による効果が一層発揮される。
【0020】
この他、電子機器が備える各手段としての機能は、プログラムにより、コンピュータに実現させることができる。そして、上述の電子機器が備える各手段としての機能をコンピュータに実現させるためのプログラムは、コンピュータ読取可能な記録媒体に記録して、ユーザに提供することができる。記録媒体としては、ハードディスク等の磁気ディスク、CDやDVD等の光ディスク、及び、光磁気ディスク等の他、メモリカード等の半導体製メモリを挙げることができる。
【図面の簡単な説明】
【0021】
【図1】電子制御装置1の構成を表すブロック図である。
【図2】フラッシュROM13の構成(a)及び記憶ブロックの構成(b)を表す図である。
【図3】MPU11が実行する書込制御処理を表すフローチャートである。
【図4】管理テーブルの構成を表す図である。
【図5】本実施例によるフラッシュROM13へのデータ書込態様(a)及び従来技術によるフラッシュROM13へのデータ書込態様(b)を説明した図である。
【図6】MPU11が実行する消去制御処理を表すフローチャートである。
【図7】記憶ブロック内のデータを消去する際の手順について説明した図である。
【図8】MPU11が実行する読出制御処理を表すフローチャートである。
【発明を実施するための形態】
【0022】
以下に本発明の実施例について、図面と共に説明する。
図1に示す本実施例の電子制御装置(ECU)1は、車両に搭載されて、車両各部を制御するものである。この電子制御装置1は、車両に搭載されたセンサ類5からの出力信号に基づき、制御対象3としての車両に搭載された各種アクチュエータを制御することによって、車両各部を制御する。電子制御装置1としては、例えば、エンジン制御を行う電子制御装置を挙げることができる。
【0023】
具体的に、この電子制御装置1は、マイクロプロセッサ(MPU)11と、フラッシュROM13と、入出力回路15と、を備える。MPU11は、各種プログラムに従う処理を実行することによって、車両制御を実現する。このMPU11は、上記各種プログラムを記憶するROM11aと、ROM11aに記憶されたプログラムに基づく各種処理の実行時に作業領域として使用されるRAM11bと、を備える。
【0024】
即ち、MPU11は、ROM11aに記憶された各種プログラムを実行することにより、入出力回路15を通じて、センサ類5からの出力信号を取得し、この出力信号に基づき、制御対象3への制御信号を生成し、これを入出力回路15を通じて、制御対象3に入力する。このような処理によって制御対象3を制御し、車両制御を実現する。
【0025】
一方、電気的にデータ書換可能な不揮発性メモリとして知られるフラッシュROM13は、車両制御に関わる種々のデータを記憶するものである。電子制御装置1がエンジン制御用の電子制御装置である場合、フラッシュROM13には、エンジン制御用の制御パラメータが記憶される。制御パラメータには、学習更新される制御パラメータ(以下、「学習パラメータ」と表現する。)が含まれる。学習パラメータは、その値がMPU11による車両制御の結果に従って学習更新されて、フラッシュROM13に書き込まれる。この他、フラッシュROM13には、電源投入回数が書き込まれる。例えば、アクセサリスイッチがオンされて、電子制御装置1に電源が投入される度に最新の電源投入回数が書き込まれる。
【0026】
このフラッシュROM13は、周知のフラッシュROMと同様、複数の記憶ブロックを備え(図2(a)参照)、1バイト単位でのデータ書込が可能であるものの、データ消去については記憶ブロック単位での消去が必要なものである。即ち、このフラッシュROM13は、最小の書込単位が1バイト単位であり、最小の消去単位が記憶ブロック単位である構成にされ、データ消去された状態の記憶ブロックには、新規データを1バイト単位で書き込むことができるものの、データが書き込まれた記憶ブロック内の領域に対しては、記憶ブロック全体に対してデータ消去動作を行わない限り、新たなデータを上書きすることができない構成にされている。
【0027】
このフラッシュROM13が備える各記憶ブロックは、先頭にブロックヘッダ領域を備え(図2(b)参照)、このブロックヘッダ領域に、ブロックIDやブロックの状態を表す情報等を記憶する。また、各記憶ブロックは、ブロックヘッダ領域に続く領域を、データヘッダ及びユーザデータを記憶するための領域として備える。データヘッダは、ユーザデータ管理用のデータである。一方、ユーザデータは、上述した制御パラメータや電源投入回数等のデータのことである。要するに、管理用のデータ以外のフラッシュROM13に記憶させる目的のデータは、ユーザデータとしてフラッシュROM13に記憶される。
【0028】
但し、ユーザデータは、1バイトのデータとして定義されており、複数バイトのデータで構成される制御パラメータや電源投入回数等のデータは、1バイトのデータ(以下、「バイトデータ」と表現する。)に分割されて、ユーザデータとしてフラッシュROM13に書き込まれる。具体的に、ユーザデータは、図2(b)に示すように、上記ブロックヘッダ領域に続く領域において、その領域の後端から順に書き込まれる。
【0029】
一方、データヘッダは、対応するユーザデータのIDコード、このユーザデータの格納位置に対応するメモリアドレス(換言すれば、このユーザデータにアクセスするためのアドレスポインタ)、及び、このユーザデータの状態を表すフラグデータを含む。このデータヘッダは、図2(b)に示すように、上記ブロックヘッダ領域に続く領域において、その領域の先端から順に書き込まれる。
【0030】
即ち、MPU11は、制御データや電源投入回数等の書込対象データをフラッシュROM13に書き込む際には、これをバイトデータに分割し、書込対象データを構成するバイトデータの夫々を、このバイトデータに対応するデータヘッダと共に、フラッシュROM13に書き込む。この際、バイトデータについては、上記ブロックヘッダ領域に続く領域の後端側から書きこみ、データヘッダについては、上記ブロックヘッダ領域に続く領域の先端側から書き込む。
【0031】
但し、書込対象データを分割して当該書込対象データを構成するバイトデータの夫々を、データヘッダと共にフラッシュROM13に書き込む際には、書込対象データを構成する各バイトデータと、フラッシュROM13が記憶する当該書込対象データに対応する旧データを構成する各バイトデータとを比較し、旧データから内容変更のあったバイトデータを選択的に、フラッシュROM13に追記形式で書き込む。
【0032】
ここで、旧データを削除せずに追記形式でバイトデータをフラッシュROM13に書き込むのは、フラッシュROM13では、データの上書きができず、内容変更のあったバイトデータについての旧データを消去するためには、記憶ブロック単位での消去が必要になるためである。
【0033】
詳述すれば、各記憶ブロックは、ユーザデータ(バイトデータ)のデータ量よりも十分大きい記憶容量に設定されており、複数バイト分のユーザデータ(バイトデータ)を記憶可能に構成されている。従って、書込対象データにおいて旧データから内容変更のあったバイトデータが存在することで、旧データから内容変更のあったバイトデータを、フラッシュROM13に書き込む度に、このバイトデータに対応するフラッシュROM13に記憶された旧データを、記憶ブロック単位でのデータ消去により、フラッシュROM13から削除していたのでは、データ消去の無駄が大きく、フラッシュROM13の寿命が早く到来してしまう。
【0034】
このため、本実施例では、旧データから内容変更のあった最新データを、フラッシュROM13を書き込む際、旧データをフラッシュROM13から消去せずに最新データをフラッシュROM13に追記することによって、この最新データを、旧データを残したままフラッシュROM13に記憶させるのである。このような追記動作の繰返しによれば、フラッシュROM13におけるデータ消去回数を抑えることができ、フラッシュROM13の長寿命化を図ることができる。
【0035】
但し、追記動作の繰返しによっては、記憶ブロックの空きスペースが次第に減ってしまう。このため、空きスペースのなくなった記憶ブロックについては、順次、この記憶ブロック内のデータを消去することによって、フラッシュROM13に必要な空きスペースを確保する。MPU11は、図2(a)に矢印で示すように、予め定められた順序で各記憶ブロックにデータを書き込むが、空きブロック(ユーザデータ及びデータヘッダが一つも登録されていない記憶ブロック)が規定数未満となる場合には、空きブロックでない記憶ブロックの内、データ書込時期が最も古い記憶ブロック内のデータを消去する。このようにして、MPU11は、空きスペースを確保する。
【0036】
続いて、MPU11によるデータの書込動作、消去動作、及び、読出動作についての詳細を、フローチャートを用いて説明する。
MPU11は、フラッシュROM13に対する書込要求が生じると、図3に示す書込制御処理を実行し、書込要求にて指定された書込対象データを、フラッシュROM13に書き込む。書込要求は、例えば、車両制御の結果に従って学習パラメータを更新する処理タスクや電源投入回数をカウントアップする処理タスクから入力される。
【0037】
この書込制御処理を実行すると、MPU11は、書込要求元からフラッシュROM13への書込対象データを取得すると共に、書込対象データの種類を判別可能な識別コードであるIDコードを取得する(S110)。但し、ここで取得するIDコードは、上記データヘッダに用いられる上述のIDコードであってもよいし、書込要求元で管理される別のIDコードであってもよい。取得するIDコードが書込要求元で管理されるIDコードである場合には、これを上記データヘッダに用いるIDコードに変換する必要があるため、その変換テーブルを予めROM11a等に記憶させておく必要がある。
【0038】
S110での処理を終えると、MPU11は、上記取得した書込対象データが2バイト以上のデータであるか否かを判断し(S120)、2バイト以上のデータであると判断すると(S120でYes)、この書込対象データを1バイト毎のデータに分割する。即ち、この書込対象データを、バイトデータの一群に分割する(S130)。その後、S140に移行する。一方、書込対象データが1バイトのデータであると判断すると(S120でNo)、MPU11は、S130の処理を実行することなく、この書込対象データをバイトデータと取り扱って、S140に移行する。
【0039】
S140に移行すると、MPU11は、書込対象データを構成するバイトデータ群の中から、処理対象のバイトデータを一つ選択し、この処理対象のバイトデータが、フラッシュROM13に記憶されている旧データから内容変更されたものであるか否かを判断する(S150)。
【0040】
具体的には、処理対象のバイトデータと、当該処理対象のバイトデータに対して割り当てられたIDコードと同一のIDコードを有するデータヘッダに関連付けられてフラッシュROM13が記憶するバイトデータの内の最新データと、を比較することによって、処理対象のバイトデータが、フラッシュROM13に記憶されている旧データから内容変更されたものであるか否かを判断する(S150)。
【0041】
但し、本実施例では、電子制御装置1の起動時に、MPU11がフラッシュROM13全体を参照し、フラッシュROM13に記憶されているバイトデータに関して、IDコード毎の最新のバイトデータの格納先アドレスを表す管理テーブルを作成する。そして、これをRAM11bに記憶する。そして、フラッシュROM13に最新のバイトデータが書き込まれる度、そのバイトデータの格納先アドレスを管理テーブル内において更新する。
【0042】
図4には、この管理テーブルの構成を示す。図4は、フラッシュROM13のアドレス「***3000H」に、第一のデータ(DATA1)を構成するバイトデータであってIDコードが「****0」のバイトデータの最新データが格納され、フラッシュROM13のアドレス「***3001H」に、第二のデータ(DATA2)を構成するバイトデータであってIDコードが「****1」である第二のデータの上位バイト(DATA2_H)についてのバイトデータの最新データが格納され、フラッシュROM13のアドレス「***3010H」に、第二のデータ(DATA2)を構成するバイトデータであってIDコードが「****2」である第二のデータの下位バイトDATA2_Lについてのバイトデータの最新データが格納されているときの、管理テーブルの構成を表すものである。第一及び第二のデータとしては、上述した学習パラメータや電源投入回数等のデータを挙げることができる。
【0043】
即ち、MPU11は、S150において、処理対象のバイトデータと、処理対象のバイトデータに対応するフラッシュROM13が記憶するバイトデータとを比較する際、データヘッダを介さずに、RAM11bが記憶する上記管理テーブルを参照して、処理対象のバイトデータに割り当てられたIDコードに対応するフラッシュROM13が記憶するバイトデータの最新データの格納先アドレスを特定する。そして、このアドレスに格納されたバイトデータを参照することで、比較対象のバイトデータにアクセスする。但し、MPU11は、このような方法に限らず、データヘッダのIDコードを参照して、比較対象のバイトデータをフラッシュROM13内において検索してもよい。
【0044】
MPU11は、このような比較動作を通じて、処理対象のバイトデータが、フラッシュROM13に記憶されている旧データ(フラッシュROM13に記憶されている同一IDコードのバイトデータの内、最新のもの)から内容変更されたものであると判断すると(S150でYes)、S160に移行し、処理対象のバイトデータをユーザデータとして、そのデータヘッダと共に、フラッシュROM13内のアクティブブロックに書き込む(S160)。
【0045】
尚、ここで言うアクティブブロックとは、フラッシュROM13が有する複数の記憶ブロックの内、新たにバイトデータ(ユーザデータ)をフラッシュROM13に書き込む際の書込先ブロックのことを言う。MPU11は、上述したように、予め定められた順序で各記憶ブロックにデータを書き込むが、この動作は、アクティブブロックに空きがなくなった場合には、アクティブブロックを次ブロックに切り替えて、切替後のアクティブブロックに、新たなバイトデータを書き込むといった処理手順により実現される。
【0046】
図2(a)に示す例によれば、MPU11は、第0記憶ブロック、第1記憶ブロック、第2記憶ブロック、…、第M記憶ブロックといった順序で、アクティブブロックを切り替え、書込順が最後の記憶ブロックである第M記憶ブロックに空きがなくなった場合には、次ブロックとしての第0記憶ブロックにアクティブブロックを切り替えて、バイトデータをデータヘッダと共に当該アクティブブロックに書き込む。このように、アクティブブロックは、第0から第M記憶ブロックをループするように順に切り替えられる。
【0047】
このアクティブブロックに対し、処理対象のバイトデータ及びデータヘッダを書き込むと、MPU11は、続くS170(図3参照)にて、RAM11bが記憶する管理テーブルを更新する。即ち、処理対象のバイトデータのフラッシュROM13における書込先に応じて、RAM11bが記憶する管理テーブルにおける該当バイトデータの格納先アドレスを、その書込先のアドレスに更新する(S170)。その後、S180に移行する。
【0048】
また、S180に移行すると、MPU11は、書込対象データを構成する全バイトデータについて、これを処理対象のバイトデータに選択し、S150以降の処理を実行したか否かを判断する。そして、実行していないと判断すると(S180でNo)、S140に戻って、新たなバイトデータを処理対象のバイトデータに選択し、S150以降の処理を実行する。
【0049】
このようにして、書込対象データを構成する全バイトデータについてS150以降の処理を実行すると(S180でYes)、MPU11は、当該書込制御処理を終了する。MPU11は、このような手順により、書込対象データを1バイト単位のデータであるバイトデータの一群に分割し、これらバイトデータ群の内、フラッシュROM13が記憶するデータから内容変更のあったバイトデータ群のみを選択的に、フラッシュROM13に追記形式で書き込む。
【0050】
例えば、図5(a)に示すように、書込対象データが2バイトのデータであり、上位バイト(DATA_H)及び下位バイト(DATA_L)の内、下位バイト(DATA_L)のみが、フラッシュROM13に記憶されたデータから更新されたデータ(DATA_L*)である場合には、上位バイト及び下位バイトの内、下位バイトのバイトデータ(DATA_L*)のみを選択的に、フラッシュROM13に書き込む。
【0051】
尚、図5(a)は、本実施例によるフラッシュROM13へのデータ書込態様を表す図であり、図5(b)は、従来技術によるフラッシュROM13へのデータ書込態様を表す図である。従来技術によれば、図5(b)に示すように、下位バイト(DATA_L)のみが、フラッシュROM13に記憶されたデータから更新されたデータ(DATA_L*)であっても、書込対象データが2バイトのデータである場合には、これを、そのまま分割せずにフラッシュROM13に書き込む。このため、フラッシュROM13における空きスペースが早く失われ、データ消去回数を効率的に抑えることができない。本実施例によれば、このような従来技術と比較してデータ消去回数を効率的に抑えることができる。
【0052】
続いて、図6を用いて、フラッシュROM13に対するデータ消去動作について説明する。MPU11は、フラッシュROM13へのデータ書込が行われる度、図6に示す消去制御処理を実行する。
【0053】
消去制御処理を実行すると、MPU11は、まず、フラッシュROM13が次データの書込時に空きブロックが規定数(例えば、2個)未満となる状態であるか否かを判断する(S310)。そして、このような状態ではないと判断すると(S310でNo)、当該消去制御処理を終了する。
【0054】
図7の第一段に示す例は、1バイトのデータであるDATA1、2バイトのデータであるDATA2及びDATA3がフラッシュROM13に記憶されている状態を示すものである。図7に太実線で示す矩形は、記憶ブロックを表す。図7では、DATA2及びDATA3の上位バイトに対してサフィックス「_H」を付し、DATA2及びDATA3の下位バイトに対してサフィックス「_L」を付す。図7の第一段に示す状態では、アクティブブロックに空きがあり、フラッシュROM13が次データの書込時に空きブロックが規定数である2個未満となる状態ではないため、S310では、否定判断される。
【0055】
一方、MPU11は、空きブロックが規定数未満となると判断すると(S310でYes)、S320に移行する。図7第二段は、図7第一段に示す状態から、アクティブブロックに新たなデータ(DATA1,DATA2_L)が書き込まれて、当該アクティブブロックに空きがなくなり、アクティブブロックが次ブロックに変更された状態を示すものである。この図7第二段に示す状態は、上記規定数が「2」である場合における、次データの書込時には、空きブロックが規定数(2個)未満となる状態に対応する。
【0056】
このような状態となると、MPU11は、続くS320にて、空きブロックではない記憶ブロック(以下、「非空きブロック」と表現する。)の一群の内、最も早い時期に空きスペースのなくなった記憶ブロックを消去対象の記憶ブロック(以下、「消去対象ブロック」と表現する。)に選択する。図7に示す例では、最も右に示す記憶ブロックが消去対象ブロックに対応する。
【0057】
その後、MPU11は、選択した消去対象ブロックが記憶するバイトデータ群の内、最新データに対応するバイトデータ群を特定する(S330)。図7第二段に示す例では、消去対象ブロックに、最新データとして、DATA3の上位バイト(DATA3_H)及びDATA2の上位バイト(DATA2_H)が記憶保持されているものとする。図7では、最新データを、塗り潰し画像により示す。
【0058】
ここで、消去対象ブロックが記憶する上記最新データに対応するバイトデータの特定は、S150での処理と同様、RAM11bに記憶された管理テーブルを参照することにより実現することができる。上述したように管理テーブルには、IDコード毎に、そのIDコードに対応するバイトデータの最新データの格納先アドレスが記述されている。このため、管理テーブルにおいて消去対象ブロックに該当する格納先アドレスが記述されているIDコードに対応するバイトデータは、消去対象ブロックが記憶する上記最新データに対応するバイトデータに該当する。従って、S330では、管理テーブルにおいて、消去対象ブロックに該当する格納先アドレスが記述されたIDコードに対応するバイトデータの一群を、消去対象ブロックが記憶する上記最新データに対応するバイトデータ群として特定することができる。
【0059】
但し、別例として、MPU11は、フラッシュROM13内のバイトデータの配置を特定することで、消去対象ブロックが記憶する上記最新データに対応するバイトデータ群を特定されてもよい。即ち、同一IDコードのバイトデータが複数フラッシュROM13に記憶されている場合には、これら同一IDコードのバイトデータ群の内、フラッシュROM13における現時点での書込位置終端からデータ書込方向上流に遡ったときに最初に現れるバイトデータを、最新データであると判断し、同一IDコードのバイトデータが複数記憶されていないバイトデータについては、フラッシュROM13に記憶されている唯一のバイトデータを、最新データであると判断することで、消去対象ブロックに記憶されているバイトデータ群の内、最新データに対応するバイトデータ群を特定することができる。
【0060】
この他、データヘッダに、上記フラグデータとして、対応するバイトデータの更新回数(バージョン)を表すデータが書き込まれる場合には、このフラグデータを参照し、フラッシュROM13に記憶されている同一IDコードのバイトデータ群の内、更新回数が最大のバイトデータ(最新バージョンのバイトデータ)を、最新データと判断することが可能である。このような最新データの判断は、S150の処理にも採用することが可能である。
【0061】
また、データヘッダに、上記フラグデータとして、正常にバイトデータがフラッシュROM13に書き込まれたか否かを表す情報が書き込まれる場合には、このフラグデータを参照し、正常に書き込まれてないバイトデータについては、フラッシュROM13に記憶されていないものと形式的に取り扱って、最新データを特定されてもよい。この場合には、RAM11bの管理テーブルに対しても、上記正常に書き込まれていないバイトデータについてはフラッシュROM13に記憶されていないものと形式的に取り扱って、IDコード毎の最新データに対応する格納先アドレスを記述すればよい。
【0062】
S330の処理後、MPU11は、消去対象ブロックに記憶されているバイトデータ群の内、上記特定された最新データに対応するバイトデータの夫々を、前回のデータ書込時に更新された新たなアクティブブロックに、ユーザデータとして書き込むことで、これらバイトデータを、消去対象ブロックではない記憶ブロックに退避させる(S340)。勿論、この際には、これらバイトデータに対応するデータヘッダを、アクティブブロックに書き込む。図7第三段には、消去対象ブロックにおいて記憶保持される最新データ(DATA3_H,DATA2_H)が、アクティブブロックに退避された例を示す。
【0063】
その後、MPU11は、消去対象ブロック内のデータをブロック単位で消去して(S350)、当該消去制御処理を終了する。尚、消去対象ブロック内のデータを消去する際には、消去対象ブロックにおけるブロックヘッダ領域内のデータを、一旦RAM11bに退避させ、消去対象ブロック内のデータを消去した後、上記RAM11bに退避させたデータに基づき、消去後の記憶ブロックにおけるブロックヘッダ領域内に必要データを書き込む。
【0064】
本実施例では、このような手順でフラッシュROM13内のデータを記憶ブロック単位で消去することによって、必要データがフラッシュROM13から消去されないようにする。
【0065】
また、本実施例の電子制御装置1によれば、図8に示すようにして、フラッシュROM13に記憶されたデータを読み出す。即ち、MPU11は、フラッシュROM13に記憶されたデータの読出要求が生じると、図8に示す読出制御処理を実行する。読出要求は、例えば、読出対象データを必要とするタスクから入力される。
【0066】
読出制御処理を開始すると、MPU11は、読出要求にて指定された読出対象データを構成する各バイトデータの最新データのフラッシュROM13における格納先アドレスを、読出要求元から通知される読出対象データに対応するIDコードの情報に基づいて特定する(S510)。具体的には、RAM11bが記憶する管理テーブルを参照することにより、特定することができる。尚、読出要求元から通知されるIDコードが、フラッシュROM13で用いられる上記IDコードと異なる場合には、上述したように変換テーブルに基づいて、読出対象データを構成する各バイトデータのIDコードを特定すればよい。
【0067】
その後、MPU11は、上記特定された各バイトデータの格納先アドレスを参照して、読出対象データを構成する各バイトデータについての最新データをフラッシュROM13から読み出し(S520)、読み出した各バイトデータを、そのIDコードに基づき、読出対象データにおけるバイトコードの配列順に結合する。これによって、読出対象データに対応する複数バイトデータを結合してなる結合データを生成する(S530)。その後、この結合データ(読出対象データ)を、読出要求元に提供し(S540)、当該読出制御処理を終了する。
【0068】
このようにして読出制御処理を実行する本実施例の電子制御装置1によれば、フラッシュROM13から読み出されたバイトデータを読出要求元で結合する必要がないことから、制御パラメータや電源投入回数を取り扱うアプリケーションプログラム側の仕様を大幅に変更することなく、本発明に対応する処理を実現することができる。即ち、メモリドライバ(プログラム)を、上述した書込制御処理、消去制御処理及び読出制御処理を実行可能なプログラム構成とする程度で、本発明に対応する処理を実現することができる。
【0069】
そして、このようなプログラムをROM11aに組み込んで、MPU11にこれらの処理を実行させるように電子制御装置1を構成することで、利便性が高く、しかもフラッシュROM13に対するデータ書込量を減らしてフラッシュROM13の寿命を延長させることのできる電子制御装置1を構成することができる。
【0070】
以上、本発明の実施例について説明したが、本実施例によれば、例えば、電源投入回数を2バイトのデータとして、フラッシュROM13に記憶させるとき、次のような利点がある。即ち、電源投入回数については、電源投入毎に1インクリメントされるため、下位バイトについては毎回、その値が更新されるが、上位バイトについては、256回に1回しか更新されないことになる。従って、電源投入回数について256回の書込をフラッシュROM13に行ったとすると、従来技術によれば、その書込量の合計は、2バイト×256回=512バイトとなるが、本実施例によれば、その書込量の合計は、1バイト(下位バイト)×256回+1バイト(上位バイト)×1回=257バイトとなり、フラッシュROM13への書込量を大幅に低減することができる。よって、本実施例によれば、フラッシュROM13におけるデータ消去回数を低減することができ、その結果として、フラッシュROM13の長寿命化を実現することができる。
【0071】
尚、上述した実施例においてMPU11が実行するS150の処理は、比較手段によって実現される処理の一例に対応し、MPU11が実行するS160の処理は、書込制御手段によって実現される処理の一例に対応し、MPU11が実行する読出制御処理は、読出制御手段によって実現される処理の一例に対応し、MPU11が実行する消去制御処理は、消去制御手段によって実現される処理の一例に対応する。
【0072】
また、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。
例えば、上記実施例では、フラッシュROM13を備える電子制御装置1に本発明を適用した例について説明したが、本発明は、フラッシュROM13に代えて、1バイト単位でのデータ消去が可能なEEPROMに適用されてもよい。本発明によれば、データ書込量を抑えることができるので、結果として、EEPROMにおいてもデータ消去回数を抑えることができ、EEPROMの長寿命化を実現することができる。但し、EEPROMでは数10万回程度のデータ消去が可能であるのに対し、フラッシュROMでは、1万回程度のデータ消去しかできないので、本発明は、フラッシュROMに適用されると、その効果が一層発揮される。
【0073】
また、上記実施例では、本発明を、車両制御用の電子制御装置1に適用した例を説明したが、本発明は、その他の種々の電子機器に適用することが可能である。
【符号の説明】
【0074】
1…電子制御装置、3…制御対象、5…センサ類、11…MPU、11a…ROM、11b…RAM、13…・フラッシュROM、15…入出力回路

【特許請求の範囲】
【請求項1】
電気的にデータ書換可能な不揮発性メモリと、
前記不揮発性メモリに対する書込対象データが生じると、前記書込対象データと前記不揮発性メモリが記憶する前記書込対象データに対応する旧データとを比較して、前記書込対象データを構成する要素データ群の内、前記旧データから内容変更された要素データを特定する比較手段と、
前記書込対象データを構成する要素データ群の内、前記比較手段により特定された前記旧データから内容変更された要素データ群を選択的に、前記不揮発性メモリに書き込む書込制御手段と、
を備えることを特徴とする電子機器。
【請求項2】
読出要求が生じると、読出要求にて指定された読出対象データを構成する要素データ毎の前記不揮発性メモリが記憶する最新データを読み出し、読み出した各要素データの最新データを、前記読出対象データとして前記読出要求元に提供する読出制御手段
を備えることを特徴とする請求項1記載の電子機器。
【請求項3】
前記不揮発性メモリは、前記要素データ複数個分に対応する予め定められたエリア単位でのデータ消去が必要なメモリであり、
前記電子機器は、
空きスペースを確保するために、前記不揮発性メモリが記憶する前記要素データ群を前記エリア単位で消去する一方、前記消去に際しては、消去対象のエリアにおいて記憶される前記要素データ群の内、最新データに対応する要素データ群を、前記消去対象のエリアに該当しない前記不揮発性メモリ内の他のエリアに書き込んで退避させる消去制御手段
を備えることを特徴とする請求項1又は請求項2記載の電子機器。
【請求項4】
前記要素データの夫々には、固有の識別コードが予め割り当てられており、
前記書込制御手段は、前記不揮発性メモリに前記要素データを書き込む際、前記要素データと関連付けて当該要素データに割り当てられた識別コードを前記不揮発性メモリに書き込み、
前記比較手段は、前記書込対象データを前記不揮発性メモリが記憶する旧データと比較する際、前記書込対象データを構成する要素データ毎に、この要素データと、当該要素データに割り当てられた識別コードと同一の識別コードに関連付けて前記不揮発性メモリが記憶する要素データとを比較して、前記書込対象データを構成する要素データ群の内、前記旧データから内容変更された要素データを特定すること
を特徴とする請求項1〜請求項3のいずれか一項記載の電子機器。
【請求項5】
前記要素データの夫々は、前記不揮発性メモリに書込可能な最小のデータ単位で前記書込対象データを区画化して表される各区画のデータであること
を特徴とする請求項1〜請求項4のいずれか一項記載の電子機器。
【請求項6】
前記不揮発性メモリは、バイト単位でデータを書込可能なメモリであり、
前記要素データの夫々は、前記バイト単位で前記書込対象データを区画化して表される各区画のデータであること
を特徴とする請求項1〜請求項4のいずれか一項記載の電子機器。
【請求項7】
前記不揮発性メモリは、フラッシュROMであることを特徴とする請求項1〜請求項6のいずれか一項記載の電子機器。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図8】
image rotate

【図7】
image rotate