(57)【要約】【課題】  データバックアップを目的として、不揮発性メモリの複数箇所にそれぞれデータを保存する構成において、それぞれの記憶領域にて同時期に故障が生じ難い車両用制御装置を提供する。【解決手段】  制御主体１のプログラムが参照する制御データを単独で記憶する専用データエリア５２と、該制御データを異なる他の制御データと組み合わせた集合データの形で記憶する集合データエリア５１とで二重化した形で記憶されるとともに、専用データエリア５２では更新対象となる制御データのみが更新され、集合データエリア５１では、更新対象となる制御データの更新を、全ての更新非対象の制御データの同一内容によるリライトとともに実施する。【選択図】  図１
2008077221.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵを含んで構成され、車載用電子機器を前記ＣＰＵによるプログラム処理により動作制御する制御主体と、
前記制御主体の前記プログラムが参照する制御データを更新可能に記憶するとともに、個々の前記制御データをそれぞれ、当該制御データを単独で記憶する専用データエリアと、当該制御データとは異なる他の制御データと組み合わせた集合データの形で記憶する集合データエリアとに二重化した形で記憶する制御データ記憶部と、
前記制御データ記憶部において前記制御データを更新するために、前記専用データエリアにおいては更新対象となる制御データのみを更新する一方、前記集合データエリアにおいては、更新対象となる制御データの更新を、全ての更新非対象の制御データの同一内容によるリライトとともに実施する制御データ更新手段と、
を備えたことを特徴とする車両用制御装置。
【請求項２】
前記制御データ記憶部から前記制御データを読み出すために、前記専用データエリア及び前記集合データエリアの一方において対象となる制御データの読出しを試み、該正常な読出しに失敗した場合に、前記専用データエリア及び前記集合データエリアの他方において対応する制御データの読出しをリトライする制御データ読出し手段と、
前記リトライにて前記制御データの正常な読出しに成功した場合に、当該正常な読出しに成功した制御データを用いて、前記失敗した側のデータエリアの制御データを修復する制御データ修復手段と、を有する請求項１記載の車両用制御装置。
【請求項３】
前記制御データ読出し手段は、前記専用データエリア及び前記集合データエリアの一方が、前記制御データの読出しを先に試みる優先データエリアとして固定的に定められており、
前記制御データ修復手段は、前記専用データエリア及び前記集合データエリアの前記優先データエリアとして定められてないものに定期的にアクセスして前記制御データの読出しを試みるとともに、当該読出しにて前記制御データの正常な読出しに失敗した場合に、前記優先データエリア側にて正常な読出しに成功した制御データを用いて、前記失敗した側のデータエリアの制御データを修復するものである請求項２記載の車両用制御装置。
【請求項４】
前記制御データ記憶部は、メモリ記憶値が第一の値と第二の値との間で二値切替え可能とされたメモリセルの集合からなる主メモリブロックを複数備え、メモリ駆動のための電源供給が遮断されても、前記各メモリセルが記憶状態を保持可能であり、また、各主メモリブロックが当該主メモリブロックよりも少ない複数のメモリセルからなるサブメモリブロックに区画されてなり、消去モードにおいては前記主メモリブロック内の全メモリセルを一括して前記第一の値とする形でのみ消去処理が可能であり、データ書き込みモードでは、前記主メモリブロック内の前記第一の値となっている任意のメモリセルを前記第二の値へ変更することは可能であって、前記第二の値となっている任意のメモリセルを前記第一の値へ変更することは不能とされた不揮発性メモリにて構成され、前記専用データエリアと前記集合データエリアとが、それぞれ１又は複数の前記主メモリブロックからなるものとして形成され、
前記制御データ更新手段は、
ランダムアクセスメモリとして構成され、前記サブメモリブロックと一対一のアドレス対応関係を有するバッファメモリと、
前記バッファメモリと同一又はそれよりも小さいサイズからなる書込対象制御データを該バッファメモリに書き込むデータバッファリング手段と、
前記主メモリブロックにおいて、前記メモリセルの全てが前記第一の値となっているサブメモリブロックを未使用サブメモリブロックとし、前記メモリセルの少なくとも一部が前記第二の値となっているサブメモリブロックを使用済みサブメモリブロックとしてそれぞれ特定し、前記データ書き込みモードにおいて、前記未使用サブメモリブロックへのデータ書込みは許可し、前記使用済みサブメモリブロックへのデータ書込みは禁止するメモリ管理手段と、
前記書込対象制御データが書き込まれた前記バッファメモリの内容を、該書込対象制御データにより占有されていない空白領域も含めて、前記メモリ管理手段が特定する前記未使用サブメモリブロックに複写することにより、前記書込対象制御データを前記主メモリブロックに追記的に書き込むデータ書込手段と、
前記消去モードにおいて、前記不揮発性メモリを前記主メモリブロック単位で消去するデータ消去手段と、
前記主メモリブロックにおいて、全てのサブメモリブロックが前記使用済みサブメモリブロックとなっている場合に、当該主メモリブロックの消去を許可する消去制御手段と、を備える請求項１ないし請求項３のいずれか１項に記載の車両用制御装置。
【請求項５】
前記主メモリブロックには、複数のサブメモリブロックに対応して設けられ、各サブメモリブロックが前記未使用サブメモリブロックであるか使用済みサブメモリブロックであるかを特定するサブメモリブロック使用状態記憶部を有した管理用領域が形成されている請求項４記載の車両用制御装置。
【請求項６】
前記サブメモリブロック使用状態記憶部は、対応する前記サブメモリブロックが未使用サブメモリブロックである場合に前記第一の値となり、前記使用済みサブメモリブロックである場合に前記第二の値となる状態表示メモリセルであり、
前記状態表示メモリセルは前記主メモリブロックを一括消去する際に前記第一の値に設定されるものであり、
前記メモリ管理手段は、前記未使用サブメモリブロックが前記使用済みサブメモリブロックとなるに伴い、対応する状態表示メモリセルの記憶値を前記第一の値から前記第二の値へビットダウンする形で書き換えるものである請求項５記載の車両用制御装置。
【請求項７】
前記専用データエリアと前記集合データエリアとは、それぞれ前記制御データないし前記集合データの書込領域が、前記サブメモリブロックを単位として定められ、
前記制御データ更新手段は、前記データ消去手段が前記主メモリブロック単位で消去を実行するまでは、古い制御データ又は集合データを前記主メモリブロックに残した形で、前記専用データエリア内の前記制御データと、前記集合データエリア内の前記集合データとの更新を、当該主メモリブロック内の空きサブメモリブロック又は別の主メモリブロック内の空きサブメモリブロックへ追記する形で更新するものである請求項４ないし請求項６のいずれか１項に記載の車両用制御装置。
【請求項８】
前記データ書込手段は、前記専用データエリアと前記集合データエリアとのそれぞれにおいて、前記更新のために取得した前記制御データを、その取得の時系列に従い、前記主メモリブロック内の先頭のサブメモリブロック側から当該サブメモリブロック単位にて順次追記書込みするものであり、
前記主メモリブロックは、末尾に位置する使用済みサブメモリブロックほど時系列的に新しい制御データを格納するようになっており、さらに、
該主メモリブロックに形成されている使用済みサブメモリブロックのうち最も末尾に位置するものに記憶されている制御データのみ、これを最新の制御データとして読み出す制御データ読み出し手段を有する請求項７記載の車両用制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、車両用制御装置に関する。
【背景技術】
【０００２】
【特許文献１】特開２００３−２８０８２２号公報
【０００３】
従来、車載ＥＣＵにおいては不揮発性メモリとして、ＥＥＰＲＯＭ（Electrically
Erasable Programmable Read Only Memory）が広く使用されてきた。ＥＥＰＲＯＭは記憶情報をバイト単位で消去可能であり、消去／書込みの柔軟性はＲＡＭに準ずるが、記憶容量が高々数１００ｋバイト程度であり、大量の制御データの記憶には次第に適さなくなってきた。他方、より大容量の不揮発性メモリとしてフラッシュメモリがある（特許文献１）。フラッシュメモリは、ＥＥＰＲＯＭと同様に電気的な消去／書換が可能な不揮発性メモリでありながら、ＥＥＰＲＯＭよりも数桁大きい記憶容量を持つ（数１０ｋバイト〜数百Ｍバイト：例えば数１００ｋバイト）。
【０００４】
フラッシュメモリは大容量である反面、高集積化を図るための代償として、ＥＥＰＲＯＭではビット単位で可能であった消去処理が、数ｋバイトのブロック単位（セクタ単位）でしかできず、また、１回の消去に１秒から１０秒程度もの長時間を要する難点がある。また、ブロックの消去処理は、原理的に全てのメモリセル（ビット）の記憶値を「１」とする形で行われ、書込み処理に際しては、上記の消去状態から必要なメモリセルを「０」にビットダウンすることのみが可能であって、その逆（つまり、ビット単位の「０」→「１」への変更）が不可能なことも制約の一つである。
【０００５】
ところで、従来の車載ＥＣＵでは、重要度の高い制御データや永続的に保持すべきデータをこのフラッシュメモリに記憶することがある。多くの場合は、保存すべきデータを複数箇所にそれぞれ記憶して、一方をバックアップ用にする形態がとられる。このときのデータ保存処理は、予め定められた複数箇所の記憶対象領域に対し、同じ処理、同じタイミングで同じデータを書き込むことでなされるとともに、データ消去処理も同様に、複数箇所の記憶対象領域に対して同じ処理、同じタイミングで同じデータの消去がなされる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところが、こうした不揮発性メモリの場合、セクタを消去するたびにデバイスが劣化する傾向がある。データが書き込まれるフラッシュメモリ内のメモリセルは、製造環境、製造時期、製造条件等が極めて一致した、物理的にほぼ同条件のものであるので、複数箇所の記憶対象領域においてデータの書込み・消去が同一条件で繰り返し実行されると、メモリの劣化も同じ傾向で進み、それらの記憶対象領域において同じ時期に同じ箇所が故障する可能性があった。
【０００７】
データの保存対象となるデバイスを分けてもよいが、使用されるデバイスが同一ロットで製造されている場合もあり、上記の可能性を完全に排除することはできない。
【０００８】
本発明の課題は、データバックアップを目的として、不揮発性メモリの複数箇所にそれぞれデータを保存する構成において、それぞれの記憶領域にて同時期に故障が生じ難い車両用制御装置を提供することにある。
【課題を解決するための手段及び発明の効果】
【０００９】
上記の課題を解決するために、本発明の車両用制御装置は、
ＣＰＵを含んで構成され、車載用電子機器をＣＰＵによるプログラム処理により動作制御する制御主体と、
制御主体のプログラムが参照する制御データを更新可能に記憶するとともに、個々の制御データをそれぞれ、当該制御データを単独で記憶する専用データエリアと、当該制御データとは異なる他の制御データと組み合わせた集合データの形で記憶する集合データエリアとに二重化した形で記憶する制御データ記憶部と、
制御データ記憶部において制御データを更新するために、専用データエリアにおいては更新対象となる制御データのみを更新する一方、集合データエリアにおいては、更新対象となる制御データの更新を、全ての更新非対象の制御データの同一内容によるリライトとともに実施する制御データ更新手段と、
を備えたことを特徴とする。
【００１０】
上記本発明の構成によると、制御データ記憶部に制御データを保存するデータエリアとして専用データエリアと集合データエリアとが設けられており、それらデータエリアにおいて制御データを更新する際には、専用データエリアでは、更新対象となる制御データのみが更新されるのに対し、他方、集合データエリアでは、更新された制御データと残りの更新非対象の制御データとからなる制御データ全体（集合データ）が更新される。これにより、２つのエリアに書き込まれるデータの更新頻度が互いに異なるので、双方のエリアにおいて同時期に故障が生じる可能性が極めて低くなる。より具体的には、集合データエリアでは、更新対象として着目している制御データに対し他の制御データが組み合わされることにより、更新される制御データに冗長度が付加される。本発明の方式を採用することにより、その冗長度に対応してデータ書き換え頻度が増加する。その結果、集合データエリアにおける制御データの信頼性が増し、不良セクタ化が生じ難い。
【００１１】
上記本発明の構成において、制御データ記憶部から制御データを読み出すために、専用データエリア及び集合データエリアの一方において対象となる制御データの読出しを試み、該正常な読出しに失敗した場合に、専用データエリア及び集合データエリアの他方において対応する制御データの読出しをリトライする制御データ読出し手段と、リトライにて制御データの正常な読出しに成功した場合に、当該正常な読出しに成功した制御データを用いて、失敗した側のデータエリアの制御データを修復する制御データ修復手段と、を有することができる。この構成によると、先に読み出す側のデータが壊れていることがわかったらすぐに修復でき、正常な制御データが二重に記憶されている状態を維持できる。
【００１２】
上記構成の場合、制御データ読出し手段は、専用データエリア及び集合データエリアの一方が、制御データの読出しを先に試みる優先データエリアとして固定的に定められており、制御データ修復手段は、専用データエリア及び集合データエリアの優先データエリアとして定められてないものに定期的にアクセスして制御データの読出しを試みるとともに、当該読出しにて制御データの正常な読出しに失敗した場合に、優先データエリア側にて正常な読出しに成功した制御データを用いて、失敗した側のデータエリアの制御データを修復するものとできる。これにより、先に読み出す側（優先データエリア）のデータが連続して正常に読み出せた場合に、残りの一方についても定期的に調べることで、正常な制御データが二重に記憶されているかどうかを把握でき、異常が見つかったらすぐに修復できる。
【００１３】
また、本発明の構成において、制御データ記憶部は、メモリ記憶値が第一の値と第二の値との間で二値切替え可能とされたメモリセルの集合からなる主メモリブロックを複数備え、メモリ駆動のための電源供給が遮断されても、各メモリセルが記憶状態を保持可能であり、また、各主メモリブロックが当該主メモリブロックよりも少ない複数のメモリセルからなるサブメモリブロックに区画されてなり、消去モードにおいては主メモリブロック内の全メモリセルを一括して第一の値とする形でのみ消去処理が可能であり、データ書き込みモードでは、主メモリブロック内の第一の値となっている任意のメモリセルを第二の値へ変更することは可能であって、第二の値となっている任意のメモリセルを第一の値へ変更することは不能とされた不揮発性メモリにて構成され、専用データエリアと集合データエリアとが、それぞれ１又は複数の主メモリブロックからなるものとして形成され、
制御データ更新手段は、
ランダムアクセスメモリとして構成され、サブメモリブロックと一対一のアドレス対応関係を有するバッファメモリと、
バッファメモリと同一又はそれよりも小さいサイズからなる書込対象制御データを該バッファメモリに書き込むデータバッファリング手段と、
主メモリブロックにおいて、メモリセルの全てが第一の値となっているサブメモリブロックを未使用サブメモリブロックとし、メモリセルの少なくとも一部が第二の値となっているサブメモリブロックを使用済みサブメモリブロックとしてそれぞれ特定し、データ書き込みモードにおいて、未使用サブメモリブロックへのデータ書込みは許可し、使用済みサブメモリブロックへのデータ書込みは禁止するメモリ管理手段と、
書込対象制御データが書き込まれたバッファメモリの内容を、該書込対象制御データにより占有されていない空白領域も含めて、メモリ管理手段が特定する未使用サブメモリブロックに複写することにより、書込対象制御データを主メモリブロックに追記的に書き込むデータ書込手段と、
消去モードにおいて、不揮発性メモリを主メモリブロック単位で消去するデータ消去手段と、
主メモリブロックにおいて、全てのサブメモリブロックが使用済みサブメモリブロックとなっている場合に、当該主メモリブロックの消去を許可する消去制御手段と、を備えるものとして構成できる。
【００１４】
本発明の適用対象となる不揮発性メモリの代表例は、既に説明したごとくフラッシュメモリであり、本発明では、その消去の単位となるブロックを「主メモリブロック」と呼ぶことにする。また、消去モードにおいて、主メモリブロック内の全メモリセル（メモリセル）に設定される「第一の値」はフラッシュメモリの場合「１」であり、データ書き込みモードでは、この第一の値である「１」を、第二の値である「０」にビットダウンする処理のみが可能である。
【００１５】
上記不揮発性メモリは、１つの主メモリブロックに１つのデータのみを書き込むようにしておけば、記憶領域を最適化するためにフラッシュメモリ側の主メモリブロックをバッファメモリに一旦コピーする必要がなくなり、データ書換え／書込の自由度は増大するように思われる。しかし、制御データのごとき小サイズ（例えば１バイト以上１００バイト以下）のデータから見て、消去単位となる主メモリブロックのサイズ（例えば１ｋバイト以上１００ｋバイト以下）は余りにも大きすぎ、大容量のメモリチップの大半が無駄になってしまう問題がある。そこで、本発明では、その主メモリブロックを複数のサブメモリブロックに区画するとともに、ＲＡＭに設けるバッファメモリを、該サブメモリブロックと一対一のアドレス対応関係を有するものとしておく。書込対象制御データは、上記バッファメモリと同一又はそれよりも小さいサイズとして該バッファメモリに書き込んだ後、そのバッファメモリの内容を、該書込対象制御データにより占有されていない空白領域も含め、未使用サブメモリブロックを選ぶ形でここに複写する（つまり、書込対象制御データを主メモリブロックに追記的に書き込む）。すなわち、サブメモリブロックは、未使用のものに限り初回の１回だけ書き込みを許し、一旦使用済みになったサブメモリブロックについては、主メモリブロック単位での消去を行うまではデータの追記を禁止するのである。
【００１６】
上記構成とすることで、以下の効果を得ることができる。
（１）主メモリブロックを複数のサブメモリブロックに区画することで、制御データのような小さなデータの書込みに際しても、主メモリブロックに１個のみデータを書き込む場合と比較すれば、不揮発性メモリの容量の利用効率を大幅に改善できる。
（２）データを書き込むのは、全てのメモリセルが第一の値になっている未使用サブメモリブロックだけなので、メモリセルを第一の値から第二の値に変更する制限された環境下でも、問題なく書込み処理可能である。
（３）一旦使用済みとなったサブメモリブロックについては、空き領域にデータを追記する処理は一切行わないので、（２）を前提とすることで、主メモリブロックの内容をバッファメモリにコピーする処理が全く不要となり、かつ、メモリセルの値を一方向的に変更する処理だけで書込みが終了するので、フラッシュメモリ等での既成概念を打ち破るに足るデータ書込の迅速性を確保できる。
（４）例えば制御データの場合、時系列的な到来頻度は高いが、最新の内容が刻々更新される結果、データがいわば「用済み」となるサイクルも短い。従って、サブメモリブロックの中だけで見れば、メモリ容量の利用効率は必ずしもよくないが、「用済み」データの発生頻度も高いから、そうした「用済み」データで一杯になった主メモリブロック（つまり、全てが使用済みサブメモリブロックとなっている主メモリブロック）を、不揮発性メモリが本来有しているブロック消去機能を用いて、データ書込の合間にどんどん始末（消去）することで、新たな未使用サブメモリブロックを容易にかつ速やかに補充できる。その結果、ユーザー操作履歴記録等に関連した膨大な量の制御データ等も極めて効率的に記憶処理できる。
【００１７】
主メモリブロックには、複数のサブメモリブロックに対応して設けられ、各サブメモリブロックが未使用サブメモリブロックであるか使用済みサブメモリブロックであるかを特定するサブメモリブロック使用状態記憶部を有した管理用領域を形成することができる。記憶すべきデータサイズがサブメモリブロックのサイズ以下に制限され、かつ、一度使用済みとなったサブメモリブロックは、主メモリブロック単位での一括消去時まではデータの追記処理が全く行われないので、サブメモリブロックの使用状態を表す情報としては、当該のサブメモリブロックが未使用であるか使用済みであるかが判別できれば十分であり、特許文献１のごとき複雑な管理情報（ファイルアロケーションテーブルに相当するもの）とする必要性は全くない。
【００１８】
この場合、サブメモリブロック使用状態記憶部は、対応するサブメモリブロックが未使用サブメモリブロックである場合に第一の値となり、使用済みサブメモリブロックである場合に第二の値となる状態表示メモリセルとすることができる。この状態表示メモリセルは、主メモリブロックを一括消去する際に第一の値に設定すればよく、メモリ管理手段は、未使用サブメモリブロックが使用済みサブメモリブロックとなるに伴い、対応する状態表示メモリセルの記憶値を第一の値から第二の値へビットダウンする形で書き換えればよい。この書換え処理は、不揮発性メモリに対してバッファメモリを経由することなく直接実行可能であり、サブメモリブロック使用状態の内容更新に迅速に対応することができる。
【００１９】
また、本発明における専用データエリアと集合データエリアとは、それぞれ制御データないし集合データの書込領域を、サブメモリブロックを単位として定めることができる。この場合、制御データ更新手段は、データ消去手段が主メモリブロック単位で消去を実行するまでは、古い制御データ又は集合データを主メモリブロックに残した形で、専用データエリア内の制御データと、集合データエリア内の集合データとの更新を、当該主メモリブロック内の空きサブメモリブロック又は別の主メモリブロック内の空きサブメモリブロックへ追記する形で更新するものとできる。この構成のよると、更新のたびに制御データの領域を消去する必要がなくなり、更新に必要なシーケンスを大幅に短縮できる。また、更新のたびに制御データが書き込まれるサブメモリブロックが移動してゆくので、同じメモリ領域にデータが連続して繰り返し書き込まれることがなくなり、メモリの寿命が延びる。
【００２０】
この場合、データ書込手段は、専用データエリアと集合データエリアとのそれぞれにおいて、更新のために取得した制御データを、その取得の時系列に従い、主メモリブロック内の先頭のサブメモリブロック側から当該サブメモリブロック単位にて順次追記書込みするものであり、主メモリブロックは、末尾に位置する使用済みサブメモリブロックほど時系列的に新しい制御データを格納するようになっており、さらに、該主メモリブロックに形成されている使用済みサブメモリブロックのうち最も末尾に位置するものに記憶されている制御データのみ、これを最新の制御データとして読み出す制御データ読み出し手段を有するものとして構成できる。このように構成しておくと、主メモリブロック内のアドレス順に従ったサブメモリブロックの配列に対して、古い制御データから順に前詰めで記憶してゆけばよく、最も末尾に位置するサブメモリブロックが常に最新の制御データを記憶保持する形にできるので、該最新制御データの読出し時における検索処理を大幅に簡略化できる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施の形態を、図面を参照して説明する。
図１は、本発明の自動車用制御システムの一例を示すブロック図である。該自動車用制御システム３００においては、その要部をなす管理ＥＣＵ１に、本発明の車両用制御装置の概念が組み込まれている。管理ＥＣＵ１には、シリアル通信バス３０（通信ネットワーク）を介して複数の端末ＥＣＵ２０（端末制御ユニット）が接続されている。各端末ＥＣＵ２０の要部のハードウェア構成は、後述の管理ＥＣＵ１と同様であり、ＣＰＵ３からなる主制御部を各々有し、自動車上に搭載される複数の電子機器の制御処理を対応するアプリケーションの実行に基づいて実施する（すなわち、電子機器制御手段として機能する）。
【００２２】
各端末ＥＣＵ２０は、例えば自動車のボデー系の制御を司るボデー系ＥＣＵとして構成され、各々車両利用者による車両各部の操作に係る機能であるボデー系機能を実現するためのアプリケーションを個別に搭載・実行するものである。このボデー系機能とは、具体的には、ドア開閉に伴う制御、窓開閉に伴う制御、ライトスイッチのオン／オフに伴う制御、キーレスエントリ方式等に採用されるワイヤレスドアロック機構の制御、・・・といったものをいう。具体的には、以下のようなものを例示できる：
・運転席ドア、助手席ドア、後部右側座席ドア、後部左側座席ドア、ルーフなどのロック／ロック解除、パワーウィンドウ動作など。
・エアコン、カーオーディオ、カーナビゲーションシステムなどの電源動作など。
・ルームランプ、コックピットランプ、ヘッドライト、スモールランプ、ハザードランプ、テールランプなどのスイッチ点灯制御など。
【００２３】
次に、管理ＥＣＵ１において、シリアル通信バス３０と、管理ＥＣＵ１（及び端末ＥＣＵ２０）の内部バスとは、シリアル通信インターフェース６を介して接続されている。管理ＥＣＵ１は、具体的には、ＣＰＵ３、ＲＯＭとして機能するフラッシュメモリ（不揮発性メモリ）５、ＲＡＭ４、及び入出力部（Ｉ／Ｏポート）２がバス接続されたマイクロプロセッサからなる。フラッシュメモリ５には、アプリケーション５ａ、通信用ファームウェア５ｂ、プラットフォーム５ｃ及びメモリ管理プログラム５ｄとが格納されている。さらに、フラッシュメモリ５には制御データ記憶部５ｅが形成されている。入出力部（Ｉ／Ｏポート）２には、制御データの記録日時を取得するためのカレンダクロック７が接続されている。
【００２４】
プラットフォーム５ｃは、ベースとなるハードウェアが相違する場合にも、搭載されるアプリケーションに共通の動作環境を与えるためのものであり、ＲＡＭ４にそのワークエリア４ｃが形成され、ＣＰＵ３により実行される。該プラットフォーム５ｃは、アプリケーションに対する基本ソフト（ＯＳ）のほか、アプリケーションとハードウェアとの連携を図るインターフェースプログラムなどを含んで構成されるが、概念的には周知の部分なので説明の詳細は省略する。また、通信用ファームウェア５ｂは、各端末ＥＣＵ２０からの制御データの受信などシリアル通信バス３０を介したデータ送受信処理を司るものであり（制御データ取得手段を構成している）、ＲＡＭ４内のワークエリア４ｂを利用してＣＰＵ３により実行される。
【００２５】
また、アプリケーション５ａ（ソフトウェア）は、ＲＡＭ４内のワークエリア４ａを利用してＣＰＵ３により実行されるものであり、電子機器の制御データ、特に重要度が高いデータや永続的に保存されるべきデータを、対応する端末ＥＣＵ２０からシリアル通信バス３０を介して取得し、当該制御データを、記憶内容を電気的に書換可能なフラッシュメモリ５に記憶する制御データ管理処理を司る。なお、各アプリケーションプログラムは、フラッシュメモリ以外にも、マスクＲＯＭなど他の種別の不揮発性メモリに格納しておくこともできる。また、各アプリケーションプログラムは、ＲＡＭ４内のワークエリアを経由せず、不揮発性メモリの指定の番地からＣＰＵ３のレジスタに直接プログラム情報をストアして実行するようにしてもよい。
【００２６】
フラッシュメモリ５は、メモリ記憶値が「１」と「０」との間で二値切替え可能とされたメモリセルの集合からなる主メモリブロック５ｆ（各サイズは、例えば１ｋバイト以上１００ｋバイト以下）を複数備えている。そして、消去モードにおいては主メモリブロック５ｆ内の全メモリセルを一括して「１」とする形でのみ消去処理が可能であり、書込モードにあっては、主メモリブロック５ｆ内の任意のメモリセルを「１」から「０」へ変更する処理は可能であって、「０」から「１」へ変更する処理は不能である。
【００２７】
図９は、フラッシュメモリのメモリセルと、その動作原理を模式的に示すものである。該メモリセル２００はＭＯＳトランジスタ構造を有し、シリコン基板上に薄いトンネル酸化膜２０８を介してフローティングゲート２０３とコントロールゲート２０２とを積層形成したものである。フローティングゲート２０３とコントロールゲート２０２との間には、トンネル酸化膜２０８よりも厚い絶縁酸化膜２０９が介挿されており、フローティングゲート２０３は周囲を絶縁体で取り囲まれた形になっている。
【００２８】
書込み時にはワード線２０１を介してコントロールゲート２０２に書込み用制御電圧（例えば＋約１２Ｖ）を印加しつつ、接地されたソース２０５に対し、ドレイン２０６に書込みバイアス電圧（例えば＋約７Ｖ）を印加すると、ソース／ドレイン間で電荷が移動するとともに、その一部がトンネル効果によって、トンネル酸化膜２０８を隔てたフローティングゲート２０３側に注入される。読み出し時は、コントロールゲート２０２に書込み時よりも低い読出し用制御電圧（例えば約５Ｖ）を印加し、ドレイン２０６に接続されたビット線２０４に読出しバイアス電圧（例えば＋１Ｖ）を印加する。もし、フローティングゲート２０３に電荷が注入されていれば、該電荷による電界によりチャネルが開いてソース／ドレイン間に電流が流れ、ビット線２０４の入力は低インピーダンス（この場合の記憶値を「０」と定義するのが一般的である）となる。他方、フローティングゲート２０３に電荷が注入されていなければチャネルが閉じてソース／ドレイン間電流は遮断され、ビット線２０４の入力は高インピーダンス（この場合の記憶値を「１」と定義するのが一般的である）となる。コントロールゲート２０２への印加電圧がゼロになっても、絶縁体に囲まれたフローティングゲート２０３の電荷注入状態は保持されるので、上記記憶状態を保つことができる。
【００２９】
一方、消去処理は、トンネル酸化膜２０８に対し書込み時とは逆向きの電界勾配を付与することにより、フローティングゲート２０３中の電荷をソース２０５側へ引き抜くことにより行う。フローティングゲート２０３中の残留電荷はデータエラーに直結するので、確実に電荷を引き抜くため、コントロールゲート２０２に書き込み時と逆極性の消去用制御電圧（−約９Ｖ）を印加するのに加え、ソース２０５に対してもコントロールゲート２０２側と逆極性の消去用バイアス電圧（＋約６Ｖ）を印加する。
【００３０】
ソース２０５は、書込み時には接地されているから、消去時には接地から消去用電源へと接続を切替えなければならない。もしもソース２０５がメモリセル２００毎に独立して消去用電源への切替えが可能となっていれば、書込みと同様、消去もビット単位での処理が可能となる。しかし、この構造の場合、各メモリセル２００のソース２０５をアイソレートさせた基板構造が必要となり、また、消去用電源と接地との切替え用の配線も引き回さなければならず、メモリセル２００当たりの基板占有面積が大幅に増加するので、高集積化には明らかに不利となる。そこで、フラッシュメモリの場合は、大容量化を図るために、図１０に示すように、メモリセル２００を１ｋバイト以上１００ｋバイト以下の範囲でブロック（本発明でいう主メモリブロック５ｆ）にまとめるとともにソース２０５を共通結線し、ブロック内の全てのメモリセル２００を一括して接地２０７と消去用電源３０８との間で切り替える構造としている。その結果、フラッシュメモリでは主メモリブロック５ｆの単位でしか消去ができないのである。すなわち、消去モードにおいて、主メモリブロック５ｆ単位でデータを消去するデータ消去手段の機能は、フラッシュメモリ５のハードウェア構造自体が内包している。
【００３１】
また、フローティングゲート２０３への電荷の注入（つまり、記憶値を「１」から「０」へ変更すること）はメモリセル（ビット）単位で行えるが、フローティングゲート２０３からの電荷の抜き取りは、ブロック単位での消去時にしか行えない。従って、ビット単位処理の組み合わせとなるデータの書込みに際しては、記憶値を「１」から「０」へビットダウンすることのみが可能であり、その逆、つまり、記憶値を「０」から「１」へビットアップすることは構造上不可能である。
【００３２】
次に、フラッシュメモリ５内の制御データ記憶部５ｅは、集合データエリア５１と専用データエリア５２とからなる。そして、双方のデータエリア５１，５２が複数の主メモリブロック５ｆの集合からなり、図２に示すように、各主メモリブロック５ｆは、当該主メモリブロック５ｆよりも少ない複数のメモリセルからなるサブメモリブロック５ｍ（例えば、各サイズが１０バイト以上１ｋバイト以下（望ましくは１０バイト以上１００バイト以下））に区画されている。ＲＡＭ４内のバッファメモリ４ｄは、各サブメモリブロック５ｍと一対一のアドレス対応関係を有するものとして形成されている。書込対象となる制御データはバッファメモリ４ｄと同一又はそれよりも小さいサイズからなり、該バッファメモリ４ｄに一旦バッファリングされる（データバッファリング手段：プラットフォーム５ｃの一部に組み込まれている）。
【００３３】
そして、図１のメモリ管理プログラム５ｄは、ＣＰＵ３上で実行されることにより、上記フラッシュメモリの使用形態を前提として、以下のような機能を実現する。
・メモリ管理手段：主メモリブロック５ｆにおいて、メモリセルの全てが「１」となっているサブメモリブロック５ｍ（図３の状態１）を未使用サブメモリブロック５ｍとし（図３の状態１）、メモリセルの少なくとも一部が「０」となっているサブメモリブロック５ｍを使用済みサブメモリブロック５ｍとして（図３の状態２〜状態４）、それぞれ特定する（例えば、サブメモリブロック内のメモリセル記憶値のチェックサムから容易に確認できる）。データ書込みモードにおいて、未使用サブメモリブロック５ｍへのデータ書込みは許可し、使用済みサブメモリブロック５ｍへのデータ書込み（あるいは上書き）は禁止する。
・データ書込手段：図４に示すように、書込対象制御データが書き込まれたバッファメモリ４ｄの内容を、該書込対象制御データにより占有されていない空白領域も含めて、メモリ管理プログラム５ｄが特定する未使用サブメモリブロック５ｍに複写することにより、書込対象制御データを主メモリブロック５ｆに追記的に書き込む。
・消去制御手段：主メモリブロック５ｆにおいて、全てのサブメモリブロック５ｍが使用済みサブメモリブロックとなっている場合（図３の状態４）に、当該主メモリブロック５ｆの消去を許可する。
【００３４】
次に、図２に示すように、集合データエリア５１及び専用データエリア５２において、各主メモリブロック５ｆには、サブメモリブロック５ｍの集合からなる本体データ領域５ｈと、それらサブメモリブロック５ｍが未使用サブメモリブロック５ｍであるか使用済みサブメモリブロック５ｍであるかを特定するサブメモリブロック使用状態記憶部５ｊを有した管理用領域５ｇが形成されている。管理用領域５ｇには、上記サブメモリブロック使用状態記憶部５ｊのほか、そのサブメモリブロック５ｍに格納される制御データの識別情報５ｉ、及びデータのエラーを検出するためのチェックコード５ｋ（例えばチェックサムやパリティデータなど）の記憶部も合せて形成されている。なお、図２では、主メモリブロック５ｆ内の各サブメモリブロック５ｍの管理用領域５ｇを一箇所に集合形成しているが、図８に示すように、サブメモリブロック５ｍ毎に管理用領域５ｇを随伴させたサブユニット５ｍ’を形成し、主メモリブロック５ｆ内に管理用領域５ｇを分散形成するようにしてもよい。
【００３５】
サブメモリブロック使用状態記憶部５ｊは、対応するサブメモリブロック５ｍが未使用サブメモリブロック５ｍである場合に「１」となり、使用済みサブメモリブロックである場合に「０」となる状態表示メモリセル５ｐの集合からなる。各状態表示メモリセル５ｐは、主メモリブロック５ｆを一括消去する際に一括して「１」に設定され、前述のメモリ管理プログラム５ｄにより、未使用サブメモリブロック５ｍが使用済みサブメモリブロックとなるに伴い、対応する状態表示メモリセル５ｐの記憶値が「１」から「０」へ変更する形で書き換えられる。
【００３６】
図２においては、先頭の主メモリブロック５ｆにおいて、その先頭から３番目までのサブメモリブロック５ｍが使用済みであり、末尾（４番目）のサブメモリブロック５ｍは未使用である。各使用済みサブメモリブロック５ｍにおいて、ハッチングを付与した領域は書込み済の領域を、ハッチングを付与していない領域は未書込みの領域を示している。しかし、この使用済みサブメモリブロック５ｍに残っている未書込みの領域は、該サブメモリブロック５ｍが属する主メモリブロック５ｆの一括消去がなされるまでは、新たなデータの追記に使用されることはない。
【００３７】
メモリ管理プログラム５ｄは、図３に示すように、順次取得した複数の制御データを、その取得の時系列に従い、主メモリブロック５ｆ内の先頭のサブメモリブロック５ｍから当該サブメモリブロック５ｍ単位にて順次追記書込みする。主メモリブロック５ｆは、末尾に位置する使用済みサブメモリブロック５ｍほど、時系列的に新しい制御データを格納するようになっている。そして、主メモリブロック５ｆに形成されている使用済みサブメモリブロック５ｍのうち最も末尾に位置するものに記憶されている制御データのみが、最新の制御データとして読み出される。図３において、状態２ではサブメモリブロック５ｍ１が、状態３ではサブメモリブロック５ｍ２が、状態４ではサブメモリブロック５ｍ４が、それぞれ最新の制御データを示している。
【００３８】
また、メモリ管理プログラム５ｄは、図４に示すように、同種の制御データについては、その時系列的セットを、定められた複数の主メモリブロック５ｆにまたがる形で順次書き込む（ここでは、簡単のために、主メモリブロック１及び主メモリブロック２の２つのみを描いているが、３以上の主メモリブロック５ｆにまたがって書き込むようにしてもよい）。制御データにはＩＤ（識別情報）が付与され、これと同一のＩＤが付与された主メモリブロック５ｆが格納先として指定される。複数の主メモリブロック５ｆの各サブメモリブロック５ｍには、時系列的に順次到来する制御データの格納順序が予め定められていて、上位アドレス側から順次前詰で格納されてゆく。図４では、第一の主メモリブロック５ｆの、途中のサブメモリブロックまでが使用済となっており、第二の主メモリブロック５ｆは全てのサブメモリブロック５ｍが未使用である。制御データは、第一の主メモリブロック５ｆのサブメモリブロック５ｍを全て埋めた後、第二の主メモリブロック５ｆにその記憶処理が引き継がれる。
【００３９】
メモリ管理プログラム５ｄは、全てのサブメモリブロック５ｍが使用済みサブメモリブロックとなっている主メモリブロック５ｆであって、それら使用済みサブメモリブロックに格納されている制御データが、他のいずれの主メモリブロック５ｆに格納されている制御データよりも時系列的に古い主メモリブロック５ｆについて、当該主メモリブロック５ｆの消去を許可する。図５では、管理用領域５ｇ内のサブメモリブロック使用状態記憶部５ｊが、第一の主メモリブロック５ｆについては全てのサブメモリブロックが使用済み（「０」）になっている状態を示し、第二の主メモリブロック５ｆについては１番目のサブメモリブロックまでが使用済み（「０」）になっている状態を示している。従って、第二の主メモリブロック５ｆの全てのサブメモリブロック５ｍが使用済みとなる前に、第一の主メモリブロック５ｆを消去する。そして、第二の主メモリブロック５ｆが一杯になれば、再び第一の主メモリブロック５ｆに記憶処理を受け渡す。
【００４０】
以上の処理を実現するプログラムの流れを、図６〜図８のフローチャートに従って説明する。図６は、メモリ管理プログラム５ｄによるデータ書込処理の流れを示すものである。Ｓ１では、アプリケーション５ａからのデータ書込要求があるかどうかを調べ、Ｓ２で制御データをバッファメモリ４ｄに書き込むとともに、その制御データの種別を識別情報の内容から確認する。Ｓ３では、確認された種別に対応する第一の主メモリブロック５ｆ及び第二の主メモリブロック５ｆの空き状況を調べる。Ｓ４でその結果を確認し、未使用サブメモリブロック５ｍが第一の主メモリブロック５ｆにのみ存在する場合にはＳ９に進み、バッファメモリ４ｄ内の制御データを読み出して、第一の主メモリブロック５ｆの先頭の未使用サブメモリブロック５ｍに格納し、Ｓ１０で、サブメモリブロック使用状態記憶部５ｊの対応する状態表示メモリセル５ｐ（図２参照）をビットダウンして「０」とする。Ｓ１１では、第一の主メモリブロック５ｆの最後のサブメモリブロック５ｍが使用済みになったかどうかを確認する。Ｙｅｓの場合、Ｓ４にて未使用サブメモリブロック５ｍが第一の主メモリブロック５ｆにのみ存在することを確認済だから、この時点で第二の主メモリブロック５ｆは古い制御データにより一杯になっている。従って、Ｓ１２で第二の主メモリブロック５ｆの消去を指令する。
【００４１】
また、Ｓ４で未使用サブメモリブロック５ｍが第二の主メモリブロック５ｆにのみ存在する場合にはＳ５〜Ｓ８に進み、上記の第一の主メモリブロックと第二の主メモリブロックとを入れ替えた形で、Ｓ９〜Ｓ１２と同様の処理を行う。また、フラッシュメモリの初期化を行った後では、第一の主メモリブロックと第二の主メモリブロックの両方のサブメモリブロックが全て未使用となっているから、Ｓ１３に進み、バッファメモリ４ｄ内の制御データを読み出して、第一の主メモリブロックの先頭の未使用サブメモリブロックに格納し、Ｓ１４で、サブメモリブロック使用状態記憶部５ｊの対応する状態表示メモリセル５ｐ（図２参照）をビットダウンして「０」とする。
【００４２】
図７は、メモリ管理プログラム５ｄによるデータ消去制御処理の流れを示し、Ｓ５１では、制御データ記憶部５ｅに対する現在受付中のデータ書込要求があるかどうかを確認し、要求がない場合にＳ５２，Ｓ５３に進み、どちらの主メモリブロック５ｆに消去指令が出ているかを確認する。第一の主メモリブロック５ｆに消去指令がある場合はＳ５３に進んでこれを一括消去し、第二の主メモリブロック５ｆに消去指令がある場合はＳ５５に進んでこれを一括消去する。また、どちらの主メモリブロック５ｆについても消去指令がない場合、あるいはＳ５１で、制御データ記憶部５ｅに対する現在受付中のデータ書込要求がある場合は、消去処理自体をスキップしてリターンする。
【００４３】
本実施形態の自動車用制御システムは、上記のメモリ方式をベースに構築されたものであり、さらに、図１１に示すように、制御データ記憶部５ｅが、ＥＣＵ（制御主体）１のプログラムが参照する制御データを更新可能に記憶するとともに、個々の制御データをそれぞれ、当該制御データを単独で記憶する専用データエリア５２と、当該制御データとは異なる他の制御データと組み合わせた集合データの形で記憶する集合データエリア５１とに二重化した形で記憶するように構成されている。この構成により、不揮発性メモリ（上記実施形態におけるフラッシュメモリ）の制御データ記憶部５ｅに対し、制御データを二重化した形で記憶し、それぞれの領域に記憶される制御データの保存処理を、異なるタイミング、異なる条件で行うことができる。
【００４４】
ところで、従来は、図１６に示すように、制御データ記憶部５ｅの主データエリアに記憶する制御データをバックアップエリアにも記憶する場合、双方のデータエリアへのデータの書き込みが同じ処理かつ同じタイミングにて行われ、データの消去も同じ処理かつ同じタイミングで行われていた。つまり、制御データ記憶部５ｅに複数領域を設けたとしても、領域の使われ方が全く同じであるため、故障の傾向と時期が同じになりやすく、同時期に故障が生じた場合には、主データエリアだけではなく、バックアップエリアに記憶されていたデータまで使用できなくなる可能性があった。
【００４５】
本実施形態において、専用データエリア５２と集合データエリア５１とは、それぞれ制御データないし集合データの書込領域は、サブメモリブロック５ｍを単位として定められている。そして、主メモリブロック５ｆ単位で消去を実行するまでは、古い制御データ又は集合データを主メモリブロック５ｆに残した形で、専用データエリア５２内の制御データと、集合データエリア５１内の集合データとの更新を、当該主メモリブロック５ｆ内の空きサブメモリブロック５ｍ又は別の主メモリブロック５ｆ内の空きサブメモリブロック５ｍへ追記する形で行うよう構成されている。
【００４６】
まず、集合データエリア５１への保存処理について説明する。集合データエリア５１への保存は、更新対象となる制御データの更新を、全ての更新非対象の制御データの同一内容によるリライトする形で行う。その具体例を図１２に示す。図１２では、個別の制御データＡ，Ｂ，Ｃ，Ｘが１つの集合データの形となって、サブメモリブロック５ｍに保存されている。なお、この集合データは、個別の制御データＡ，Ｂ，Ｃ，Ｘのそれぞれを識別可能となるよう、個々の制御データＡ，Ｂ，Ｃ，Ｘに対し補助識別情報を付与した形で保存しており、個別の制御データの読出し要求があった場合には、その補助識別情報により集合データの中から個々の制御データを読み出すことが可能となっている。
【００４７】
図１２では、まず、状態ａ１において、集合データＡ，Ｂ，Ｃ，Ｘが、セクタ（主メモリブロック）１内のサブメモリブロック５ｍに集合データＡ１，Ｂ１，Ｃ１，Ｘ１として書き込まれている。この状態ａ１から個別の制御データＢ１をＢ２に更新する場合には、サブメモリブロック５ｍに書き込まれている最新の集合データＡ１，Ｂ１，Ｃ１，Ｘ１を、集合データＡ１，Ｂ２，Ｃ１，Ｘ１として、次のサブメモリブロック５ｍに書き込む。これにより、個別の制御データＢが更新された状態ａ２となる。このとき更新対象となる制御データＢは、制御データＢ１をＢ２に更新されているが、残りの制御データＡ１，Ｃ１，Ｘ１は、同一内容のままとなっている。この状態ａ２から個別の制御データＡ１をＡ２に更新して状態ａ３とする場合も同様であり、最新の集合データＡ１，Ｂ２，Ｃ１，Ｘ１を集合データＡ２，Ｂ２，Ｃ１，Ｘ１として、次のサブメモリブロック５ｍに書き込む。状態ａ３から個別の制御データＸ１をＸ２に更新して状態ａ４とする場合も、最新の集合データＡ２，Ｂ２，Ｃ１，Ｘ１を集合データＡ２，Ｂ２，Ｃ１，Ｘ２として作成して、次のサブメモリブロック５ｍに書き込む。このように、集合データの中で更新対象となる制御データのみを更新して、その集合データ全体を次のサブメモリブロック５ｍに書き込む形で行う。
【００４８】
ただし、図１２において、状態ａ４となると、セクタ１の全てのサブメモリブロック５ｍが使用済みとなる。この場合はセクタ１の次のセクタ２を利用して更新がなされる。具体的に、状態ａ４から個別の制御データＣ１をＣ２に更新する場合には、セクタ１のサブメモリブロック５ｍに書き込まれている最新の集合データＡ２，Ｂ２，Ｃ１，Ｘ２から、集合データＡ２，Ｂ２，Ｃ２，Ｘ２を作成して、セクタ２の先頭のサブメモリブロック５ｍに書き込む。これにより状態ａ７となる。なお、書き込みが完了したセクタ１は消去される。このように、全てのサブメモリブロック５ｍが使用済みとなったセクタは、次のセクタに新たな制御データが書き込まれると消去され、時系列的に古い制御データが順次消去される。
【００４９】
また、全てのサブメモリブロック５ｍが使用済みとなって次のセクタにて更新を行う際に、次のセクタが不良セクタであった場合には、その不良セクタをスキップして更新を行う。例えば、図１２において、状態ａ４から個別の制御データＸ１をＸ２に更新する場合に、セクタ２が故障して不良セクタとなっていた場合には、セクタ２をスキップしてセクタ３の先頭のサブメモリブロック５ｍに集合データＡ２，Ｂ２，Ｃ１，Ｘ２が書き込まれる。これにより状態ａ６のようになる。
【００５０】
次に、専用データエリア５２への保存処理について説明する。専用データエリア５２への保存は、更新対象となる制御データのみを個別に更新する形で行う。具体的には、集合データＡ，Ｂ，Ｃ，Ｘに含まれる個別の制御データ毎に専用データエリア５２が割り振られており、更新される制御データをその識別情報から、対応する専用データエリア５２を特定して書き込む。
【００５１】
例えば、図１２における集合データエリア５１の更新処理の流れの中で、集合データＡ，Ｂ，Ｃ，Ｘに含まれる個別の制御データＸの専用データエリア５２への更新は、図１３に示すとおり、状態ａ３から状態ａ４にかけて、制御データＸがＸ１からＸ２に更新される形で行われている。具体的には、セクタ１０１内にて制御データＸ１が書き込まれていたサブメモリブロック５ｍの次のサブメモリブロック５ｍに、制御データＸ２が書き込まれている。なお、専用データエリア５２も集合データエリア５１と同様に、セクタ１０１内のサブメモリブロック５ｍが全て使用済みとなると、次のセクタ１０２の先頭のサブメモリブロック５ｍに更新された制御データが書き込まれ、セクタ１０１は消去される。また、次のセクタ１０２が不良セクタであれば、セクタ１０２をスキップしてセクタ１０３の先頭のサブメモリブロック５ｍに更新された制御データが書き込まれる。
【００５２】
ここで、これら集合データエリア５１及び専用データエリア５２への制御データの保存を実行する具体的な処理の流れを、図１４のフローチャートを用いて説明する。Ｓ２０１では、ＣＰＵ３が実行しているアプリケーション５ａにおいて、データ保存要求があるか否かを判定する。データ保存要求がなければ本プログラムを終了し、データ保存要求があればＳ２０２に進む。Ｓ２０２では、データ保存要求を受けた要求データにチェックコードを付与した保存データを作成する。Ｓ２０３では、まず、集合データエリア５１から最新の集合データを読み出して、その最新の集合データ全体をＲＡＭ４のバッファメモリ４ｄに書き込み、バッファメモリ４ｄ上でこの集合データの中から更新対象となる制御データのみを保存データにより上書きし、新たな集合データをよって更新する。Ｓ２０４では、バッファメモリ４ｄ上で更新された集合データを集合データエリア５１のセクタ１又はセクタ２の未使用サブメモリブロック５ｍに書き込む。Ｓ２０５では、保存データに対応する専用データエリア５１の、セクタ１０１又はセクタ１０２の未使用サブメモリブロック５ｍにこの保存データを保存する。なお、このデータ保存処理は所定の周期で繰り返し実行される。
【００５３】
このデータ保存処理により、制御データは、集合データエリア５１と専用データエリア５２とに、それぞれ異なる保存タイミング、保存形態にて記憶がなされるから、それぞれのエリアの劣化傾向が異なり、双方が同時期に故障が生じる可能性が極めて低くなる。
【００５４】
次に、これら集合データエリア５１及び専用データエリア５２に保存された制御データの読出しを、アプリケーション５ａ（図１）が実行する具体的な処理の流れを、図１５のフローチャートを用いて説明する。Ｓ３０１では、実行中のアプリケーションからデータの読出し要求があるか否かを判定する。要求が無ければ本プログラムを終了し、要求があればＳ３０２に進む。Ｓ３０２では、集合データエリア５１から、要求された制御データの読出しを試みる。Ｓ３０３では、その読出しが成功したか否か、さらにチェックコードが一致したか否かを判定する。
【００５５】
Ｓ３０３にて読出し失敗、あるいはチェックコードが不一致とされた場合にはＳ３０４に進む。Ｓ３０４では、今度は専用データエリア５２から、要求された制御データの読出しを試みる。Ｓ３０５では、その読出しが成功したか否か、さらにチェックコードが一致したか否かを判定する。読出しが正常に成功し、チェックコードも一致していた場合には、Ｓ３０２で読出しを試みて失敗した集合データエリア５１の制御データを、成功した専用データエリア５２の制御データにより修復する。修復は、上記図１４のデータ保存処理を利用して行われる。修復後にはＳ３０７に進み、読出しを要求したアプリケーションに対し読出した制御データを返し、本プログラムを終了する。他方、Ｓ３０５で読出しが失敗、あるいはチェックコードが不一致とされた場合には、読出しを要求したアプリケーションに対し読出し失敗を返し、本プログラムを終了する。
【００５６】
Ｓ３０３にて、集合データエリア５１からの制御データの読出しが正常に成功し、チェックコードも一致していた場合には、Ｓ３０９に進む。管理ＥＣＵ１には、本プログラムの実行により要求されたデータをアプリケーションに返すことができた連続回数（Ｓ３０７の連続実行回数）をカウントするカウンタが設けられており、Ｓ３０９では、そのカウンタのカウント値を読み出して、Ｎ回（Ｎ：予め定められた回数、例えば３０回）連続で読み出し処理が成功しているか否かを判定する。連続して集合データエリア５１が利用され、専用データエリア５２が放置されている中で、放置されている専用データエリア５２のデータが故障して使用できない状態となる可能性があるので、Ｎ回連続で成功している場合にはＳ３１０〜Ｓ３１２を実行して、専用データエリア５２の読出し確認を行う。
【００５７】
具体的には、Ｓ３０１にて要求された制御データの専用データエリア５２からの読出しを試みて、Ｓ３０１１にて、その読出しが成功したか否か、さらにチェックコードが一致したか否かを判定する。読出しが正常に成功し、チェックコードも一致していた場合には、Ｓ３０７に進む。Ｓ３１１で読出しが失敗、あるいはチェックコードが不一致とされた場合には、読出しを試みて失敗した専用データエリア５２の制御データを、成功した集合データエリア５１の制御データにより修復し、Ｓ３０７に進む。これにより、先に読み出す側（優先データエリア）のデータが連続して正常に読み出せた場合に、残りの一方についても定期的に調べることができ、異常が見つかったらすぐに修復できる。
【００５８】
他方、Ｓ３０９にて、過去にＮ回の間に専用データエリア５２の制御データが使用されていたとされた場合には、Ｓ３０７に進み、読出しを要求したアプリケーションに対し読出した制御データを返し、本プログラムを終了する。
【００５９】
このデータ読出処理では、制御データ記憶部５ｅから制御データを読み出すために、専用データエリア５２及び集合データエリア５１の一方において対象となる制御データの読出しを試みた際に、該正常な読出しに失敗した場合に、専用データエリア５２及び集合データエリア５１の他方において対応する制御データの読出しをリトライし、リトライにて制御データの正常な読出しに成功した場合に、当該正常な読出しに成功した制御データを用いて、失敗した側のデータエリアの制御データを修復するようになっている。これにより、先に読み出す側のデータが壊れていることがわかったらすぐに修復でき、正常な制御データが二重に記憶されている状態を維持できる。
【００６０】
また、この処理では、専用データエリア５２及び集合データエリア５１の一方が、制御データの読出しを先に試みる優先データエリアとして固定的に定められ、優先データエリアとして定められてないものに定期的にアクセスして制御データの読出しを試みるなっており、当該読出しにて制御データの正常な読出しに失敗した場合には、優先データエリア側にて正常な読出しに成功した制御データを用いて、失敗した側のデータエリアの制御データを修復することが可能とされている。これにより、先に読み出す側（優先データエリア）のデータが連続して正常に読み出せた場合に、残りの一方についても定期的に調べることで、正常な制御データが二重に記憶されているかどうかを把握でき、異状が見つかったらすぐに修復できる。
【００６１】
なお、本実施形態のデータ読出し処理においては、集合データエリア５１を積極的に利用する優先データエリアとして固定的に定め、専用データエリア５２をバックアップエリアとして扱っているが、これらを逆に設定してもよい。
【図面の簡単な説明】
【００６２】
【図１】本発明のフラッシュメモリ制御装置の一実施形態を示すブロック図。
【図２】フラッシュメモリ内の記憶部の概念説明図。
【図３】サブメモリブロックの使用方法説明図。
【図４】データ書込時の機能説明図。
【図５】データ消去時の機能説明図。
【図６】データ書込処理の流れを示すフローチャート。
【図７】データ消去処理の流れを示すフローチャート。
【図８】サブメモリブロックの使用方法の変形例説明図。
【図９】フラッシュメモリのメモリセルの構造説明図。
【図１０】フラッシュメモリにおけるブロック消去構造を説明する回路図。
【図１１】本発明のデータ二重保存形態を説明する概念説明図。
【図１２】集合データエリアの更新の流れを説明する概念説明図。
【図１３】専用データエリアの更新の流れを説明する概念説明図。
【図１４】データ保存処理の流れを示すフローチャート。
【図１５】データ読出処理の流れを示すフローチャート。
【図１６】従来のデータ二重保存形態を説明する概念説明図。
【符号の説明】
【００６３】
１  管理ＥＣＵ
３  ＣＰＵ
４  ＲＡＭ
４ｄ  バッファメモリ
５  フラッシュメモリ（不揮発性メモリ、データ消去手段）
５ａ  アプリケーション（制御データ更新手段、制御データ読出し手段、制御データ修復手段）
５ｂ  通信用ファームウェア（制御データ取得手段）
５ｄ  メモリ管理プログラム（メモリ管理手段、データ書込手段、消去制御手段）
５ｃ  プラットフォーム（データバッファリング手段、データ消去手段）
５ｆ  主メモリブロック
５ｍ  サブメモリブロック
５ｇ  管理用領域
５ｊ  サブメモリブロック使用状態記憶部
５ｐ  状態表示メモリセル
５１  集合データエリア
５２  専用データエリア
２０  端末ＥＣＵ（電子機器制御手段）
２１  書き換えバッファ領域
３０  シリアル通信バス（通信ネットワーク、制御データ取得手段）
３００  自動車用制御システム
【図１】
2008077221.tif 000003
【図２】
2008077221.tif 000004
【図３】
2008077221.tif 000005
【図４】
2008077221.tif 000006
【図５】
2008077221.tif 000007
【図６】
2008077221.tif 000008
【図７】
2008077221.tif 000009
【図８】
2008077221.tif 000010
【図９】
2008077221.tif 000011
【図１０】
2008077221.tif 000012
【図１１】
2008077221.tif 000013
【図１２】
2008077221.tif 000014
【図１３】
2008077221.tif 000015
【図１４】
2008077221.tif 000016
【図１５】
2008077221.tif 000017
【図１６】
2008077221.tif 000018