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