(57)【特許請求の範囲】
【請求項１】
下位装置に搭載されたＣＰＵが、上位装置からのコマンドに基づき所定パターンを記憶する記憶手段を用いて、更新が必要なデータが属するセクタを消去するセクタ消去工程を含む不揮発性メモリのデータ更新方法であって、
前記セクタ消去工程は、
複数のセクタ消去手順に分割されるとともに、前記複数のセクタ消去手順のうち少なくとも最後のセクタ消去手順の前に、前記ＣＰＵが前記所定パターンの真偽を判定するパターン真偽判定工程を含み、
前記パターン真偽判定工程による判定結果が真であるとき、前記セクタを消去することを特徴とする不揮発性メモリのデータ更新方法。
【請求項２】
前記所定パターンは、前記記憶手段の各記憶領域に複数記憶され、
前記パターン真偽判定工程は、前記所定パターンの真偽を複数回判定するとともに、
前記セクタ消去工程は、前記パターン真偽判定工程による判定結果が全て真であるとき、前記セクタを消去することを特徴とする請求項１記載の不揮発性メモリのデータ更新方法。
【請求項３】
前記所定パターンが、前記記憶手段の各記憶領域に複数記憶される場合において、
直前に記憶された所定パターンが正常に記憶されていないときには、前記所定パターンの代わりに予め定められた異常パターンが前記記憶手段の各記憶領域に複数記憶されることを特徴とする請求項２記載の不揮発性メモリのデータ更新方法。
【請求項４】
前記所定パターンが、前記記憶手段の各記憶領域に複数記憶される場合において、
所定時間内に前記所定パターンが全て記憶されなかったときには、前記所定パターンの代わりに予め定められた異常パターンが前記記憶手段の各記憶領域に複数記憶されることを特徴とする請求項２又は３記載の不揮発性メモリのデータ更新方法。
【請求項５】
請求項１から４のいずれか記載の不揮発性メモリのデータ更新方法を実行する制御手段を備えた不揮発性メモリの制御装置。
【請求項６】
下位装置に搭載されたＣＰＵが、上位装置からのコマンドに基づき所定パターンを記憶する記憶手段を用いて、更新が必要なデータが属するセクタを消去するセクタ消去工程を実行する不揮発性メモリのデータ更新プログラムであって、
前記セクタ消去工程は、
複数のセクタ消去手順に分割されるとともに、前記複数のセクタ消去手順のうち少なくとも最後のセクタ消去手順の前に、前記ＣＰＵが前記所定パターンの真偽を判定するパターン真偽判定工程を含み、
前記パターン真偽判定工程による判定結果が真であるとき、前記セクタを消去することを特徴とする不揮発性メモリのデータ更新プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリのデータ更新方法、制御装置、及び不揮発性メモリのデータ更新プログラムに関するものであって、特に、意図しないデータ消去やデータ改竄を防ぐことが可能なものに関する。
【背景技術】
【０００２】
従来より、給電が遮断されても記憶内容を保持することができるとともに、プログラムによって電気的に内容を書き換えることが可能なメモリとして、例えばＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）やフラッシュメモリなどの不揮発性メモリが利用されている。この不揮発性メモリのデータ更新方法について、図５を用いて以下に説明する。
【０００３】
図５は、不揮発性メモリのデータ更新方法の流れを示すフローチャートである。
【０００４】
図５において、まず、ＲＡＭ（Random Access Memory）等の揮発性メモリにマッピングされたワーキングエリアを用意して、そのワーキングエリアに、更新が必要なデータが属するセクタをコピーして一時退避する（ステップＳ１０１）。そして、そのワーキングエリア上で更新が必要なデータについて更新作業（例えば、ソフトウェアによるｂｉｔシフト処理やＡＮＤ処理など）が行われる（ステップＳ１０２）。そして、不揮発性メモリにおいて、更新が必要なデータが属するセクタの消去が行われる（ステップＳ１０３）。最後に、上述したワーキングエリア上の更新後データが、ステップＳ１０３によって消去が行われたセクタに書き込まれ（ステップＳ１０４）、データの更新が完了する。
【０００５】
ここで、このような不揮発性メモリのデータ更新方法において、意図しないデータ消去やデータ改竄を防ぐプロテクト機能が付加されたデータ更新方法が提案されている（例えば特許文献１参照）。特許文献１に記載された発明によれば、フラッシュＲＯＭへの書き込みを禁止する状態（ライトプロテクト状態）を設定又は解除するライトプロテクト制御手段を用いて、フラッシュＲＯＭに対し、複数のライトプロテクト解除コードを所定の遅延時間を介在させつつ書き込んでいく。これにより、正常に動作している場合と、プログラムが暴走してライトプロテクトコードが発行した場合とを区別することができ、ひいては誤書き込みを防止することができる。
【０００６】
【特許文献１】特開２００３−１３２６８７号公報（図２）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した特許文献１記載の発明では、フラッシュＲＯＭの機種や製造メーカが異なると、ライトプロテクト状態を設定又は解除する方法（ソフトウェア）の変更だけでなく、場合によってはライトプロテクト状態を設定又は解除するライトプロテクト制御手段（ハードウェア）の変更も余儀なくされ、汎用性に欠ける。その結果、不揮発性メモリのデータ更新に関して、意図しないデータ消去やデータ改竄を防ぐための対策コストが嵩み、実用性にも欠ける。
【０００８】
本発明は、以上の点に鑑みてなされたものであり、その目的は、如何なる機種や如何なる製造メーカの不揮発性メモリに対しても、意図しないデータ消去やデータ改竄を防止しうる汎用性を備え、また、安価かつ簡易に実現しうる実用性をも兼ね備えた不揮発性メモリのデータ更新方法、制御装置、及び不揮発性メモリのデータ更新プログラムを提供することにある。
【課題を解決するための手段】
【０００９】
以上のような課題を解決するために、本発明は、以下のものを提供する。
【００１０】
（１）  下位装置に搭載されたＣＰＵが、上位装置からのコマンドに基づき所定パターンを記憶する記憶手段を用いて、更新が必要なデータが属するセクタを消去するセクタ消去工程を含む不揮発性メモリのデータ更新方法であって、前記セクタ消去工程は、複数のセクタ消去手順に分割されるとともに、前記複数のセクタ消去手順のうち少なくとも最後のセクタ消去手順の前に、前記ＣＰＵが前記所定パターンの真偽を判定するパターン真偽判定工程を含み、前記パターン真偽判定工程による判定結果が真であるとき、前記セクタを消去することを特徴とする不揮発性メモリのデータ更新方法。
【００１１】
本発明によれば、不揮発性メモリのデータ更新方法に、例えばホストコンピュータなどの上位装置からのコマンドに基づき所定パターンを記憶する記憶手段を用いて、更新が必要なデータが属するセクタを消去するセクタ消去工程が含まれている。また、そのセクタ消去工程は、複数のセクタ消去手順に分割されるとともに、そのセクタ消去手順の前後のうち少なくとも一において、所定パターンの真偽を判定するパターン真偽判定工程が含まれている。そして、そのパターン真偽判定工程による判定結果が真であるとき、セクタを消去することとしたので、パターン真偽判定工程というアプリケーションレベルでの工程による判定結果をトリガとして、セクタ消去可能か否かが決定されることとなる。
【００１２】
従って、如何なる機種や如何なる製造メーカの不揮発性メモリに対しても、意図しないデータ消去やデータ改竄を防止することができる。また、偶発的なプログラム暴走等が発生した場合であっても、パターン真偽判定手段が真偽を判定する所定パターンは、上位装置からのコマンドに基づき記憶手段に記憶されたものでなければ真のものとならないで、誤消去や誤書き込みを防ぐことができ、ひいては不揮発性メモリのデータ更新方法についての信頼性を高めることができる。さらに、本発明は、アプリケーションレベルでのプロテクト機能を実現しうるものなので、安価かつ簡易に意図しないデータ消去等を防ぐことができる。
【００１３】
前記セクタ消去工程は、前記複数のセクタ消去手順のうち最後のセクタ消去手順の前に、前記パターン真偽判定工程を含むことを特徴とする。
【００１４】
本発明によれば、複数のセクタ消去手順のうち最後のセクタ消去手順の前に、パターン真偽判定工程が含まれることとしたので、必要最小限の処理負荷で、アプリケーションレベルでのプロテクト機能を実現することができる。
【００１５】
（２）  前記所定パターンは、前記記憶手段の各記憶領域に複数記憶され、前記パターン真偽判定工程は、前記所定パターンの真偽を複数回判定するとともに、前記セクタ消去工程は、前記パターン真偽判定工程による判定結果が全て真であるとき、前記セクタを消去することを特徴とする（１）記載の不揮発性メモリのデータ更新方法。
【００１６】
本発明によれば、パターン真偽判定工程は、記憶手段の各記憶領域に複数記憶された所定パターンの真偽をそれぞれ判定するとともに、その判定結果が全て真であるときにセクタを消去することとしたので、アプリケーションレベルでのプロテクト機能を重畳させることができ、ひいては意図しないデータ消去やデータ改竄をより確実に防止することができる。
【００１７】
（３）  前記所定パターンが、前記記憶手段の各記憶領域に複数記憶される場合において、直前に記憶された所定パターンが正常に記憶されていないときには、前記所定パターンの代わりに予め定められた異常パターンが前記記憶手段の各記憶領域に複数記憶されることを特徴とする（２）記載の不揮発性メモリのデータ更新方法。
【００１８】
本発明によれば、記憶手段の各記憶領域に所定パターンが順番に複数記憶される場合において、直前に記憶された所定パターンが正常に記憶されていないときには、所定パターンの代わりに予め定められた異常パターン（例えばゼロ）が記憶手段の各記憶領域に複数記憶されることとしたので、上位装置からのコマンドに基づき所定パターンを記憶手段の記憶する段階でも、誤ったパターンが記憶されていないか否かをチェックすることができ、ひいては不揮発性メモリのデータ更新方法についての信頼性をより向上させることができる。
【００１９】
（４）  前記所定パターンが、前記記憶手段の各記憶領域に複数記憶される場合において、所定時間内に前記所定パターンが全て記憶されなかったときには、前記所定パターンの代わりに予め定められた異常パターンが前記記憶手段の各記憶領域に複数記憶されることを特徴とする（２）又は（３）記載の不揮発性メモリのデータ更新方法。
【００２０】
本発明によれば、記憶手段の各記憶領域に所定パターンが順番に複数記憶される場合において、所定時間内に所定パターンが全て記憶されなかったときには、所定パターンの代わりに予め定められた異常パターン（例えばゼロ）が記憶手段の各記憶領域に複数記憶されることとしたので、上位装置からのコマンドに基づき所定パターンを記憶手段の記憶する段階でも、偶発的なプログラム暴走等に起因して、誤ったパターンが記憶されていないか否かをチェックすることができ、ひいては不揮発性メモリのデータ更新方法についての信頼性をより向上させることができる。
【００２１】
（５）  （１）から（４）のいずれか記載の不揮発性メモリのデータ更新方法を実行する制御手段を備えた不揮発性メモリの制御装置。
【００２２】
本発明によれば、上述した不揮発性メモリのデータ更新方法を実行する制御手段を備えた不揮発性メモリの制御装置を用いることによって、如何なる機種や如何なる製造メーカの不揮発性メモリに対しても、意図しないデータ消去やデータ改竄を防止することができる。
【００２３】
（７）  下位装置に搭載されたＣＰＵが、上位装置からのコマンドに基づき所定パターンを記憶する記憶手段を用いて、更新が必要なデータが属するセクタを消去するセクタ消去工程を実行する不揮発性メモリのデータ更新プログラムであって、前記セクタ消去工程は、複数のセクタ消去手順に分割されるとともに、前記複数のセクタ消去手順のうち少なくとも最後のセクタ消去手順の前に、前記ＣＰＵが前記所定パターンの真偽を判定するパターン真偽判定工程を含み、前記パターン真偽判定工程による判定結果が真であるとき、前記セクタを消去することを特徴とする不揮発性メモリのデータ更新プログラム。
【００２４】
本発明によれば、複数のセクタ消去手順に分割されたセクタ消去工程を含む不揮発性メモリのデータ更新プログラムであって、そのセクタ消去手順の前後のうち少なくとも一に、上位装置からのコマンドに基づき記憶手段に記憶された所定パターンの真偽を判定するパターン真偽判定工程が含まれることとし、そのパターン真偽判定工程による判定結果が真であるときに、セクタが消去されるようにした不揮発性メモリのデータ更新プログラムを実行することによって、如何なる機種や如何なる製造メーカの不揮発性メモリに対しても、意図しないデータ消去やデータ改竄を防止することができる。
【発明の効果】
【００２５】
本発明に係る不揮発性メモリのデータ更新方法、制御装置、及び不揮発性メモリのデータ更新プログラムによれば、如何なる機種や如何なる製造メーカの不揮発性メモリに対しても、意図しないデータ消去やデータ改竄を防止しうる汎用性と、安価かつ簡易に実現しうる実用性とを兼ね備えた、アプリケーションレベルでのプロテクト機能を実現することができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。なお、以下では、不揮発性メモリの一例としてフラッシュＲＯＭを考え、このフラッシュＲＯＭがカードリーダに搭載された場合について説明する。
【００２７】
［電気的構成］
図１は、本発明の実施の形態に係る不揮発性メモリのデータ更新方法を実行するシステムの電気的構成を示すブロック図である。
【００２８】
図１において、本発明の実施の形態に係る不揮発性メモリのデータ更新方法を実行するシステムは、フラッシュＲＯＭ１，ＣＰＵ２，ＲＡＭ３，ＲＯＭ４，Ｉ／Ｆポート５を有するカードリーダ１０と、ＡＴＭなどのホストコンピュータ１１と、から構成される。
【００２９】
ホストコンピュータ１１は、Ｉ／Ｆポート５を介して、カードリーダ１０に搭載されたＣＰＵ２と電気的に接続され、また、フラッシュＲＯＭ１，ＲＯＭ４，及びＲＡＭ３も、このＣＰＵ２と電気的に接続されている。ＣＰＵ２は、フラッシュＲＯＭ１に対して、従来の不揮発性メモリのデータ更新方法と同様、ＲＡＭ３への退避，データ更新，セクタ消去，セクタ書き込みといった各工程の処理（図５参照）を実行しうる。
【００３０】
フラッシュＲＯＭ１は、複数のメモリ領域（セクタ）から構成されており、上述したセクタ消去（図５でいうステップＳ１０３）の工程処理では、セクタ内の全データを一旦消去しなければならないことになっている。また、フラッシュＲＯＭ１には、カードリーダ１０としての動作や機能をコントロールする実行プログラムを書き換えたり、その実行プログラムが正常であるか否かを判定したりするスーパーバイザープログラム（ＢＯＯＴプログラム）を格納するセクタ、バックアップデータを格納するセクタ、カードリーダ１０で実際に実行される実行プログラムを格納するセクタなど、格納対象の異なるセクタが複数存在している。
【００３１】
特に、ＢＯＯＴプログラムに関しては、書き換え処理は不要であり、仮に、意図しない誤消去或いは誤書き込みが行われると、カードリーダ１０の動作が不安定になる虞がある。このようなことから、本実施形態に係るカードリーダ１０では、このＢＯＯＴプログラムの誤消去或いは誤書き込みをも防ぐものとなっている。以下、更新が必要なデータが属するセクタを消去するセクタ消去工程について詳しく説明する。
【００３２】
［セクタ消去工程］
図２は、本発明の実施の形態に係る不揮発性メモリのデータ更新方法のうち、セクタ消去工程の流れを示すフローチャートである。図２（ａ）に示すように、セクタ消去工程は、複数のセクタ消去手順（セクタ消去手順１，セクタ消去手順２，・・・）に分割されている。
【００３３】
図２（ａ）において、まず、セクタ消去手順１が実行される（ステップＳ１）。より具体的には、カードリーダ１０のＣＰＵ２は、ＲＯＭ４に格納された関数ＲＯＭＣｌｅａｒ（）を読み出して、この関数の処理のうち最初の手順に相当するセクタ消去手順１を実行する。
【００３４】
次いで、セクタ消去手順１が終了すると、ＣＰＵ２は、パターン真偽判定工程の処理を実行する（ステップＳ２）。より具体的には、カードリーダ１０のＣＰＵ２は、ＲＯＭ４に格納された関数Ａｃｔｃｈｅｃｋ（）を読み出して、ＲＡＭ３にアクセスし、ホストコンピュータ１１からのコマンドに基づき記憶された所定パターン（例えば文字列，数字列，全く意味のないコード列など、如何なるものであってもよいが、予め定義されたものとする）に誤りがないか否かを判断する。誤りがない場合には、関数Ａｃｔｃｈｅｃｋ（）の戻り値として真が戻され、一箇所でも誤りがある場合には、関数Ａｃｔｃｈｅｃｋ（）の戻り値として偽が戻される。なお、このパターン真偽判定工程の詳細については、図３及び図４を用いて後述する。
【００３５】
次いで、ＣＰＵ２は、ステップＳ２のパターン真偽判定工程の判定結果が真であるか否かを判断する（ステップＳ３）。より具体的には、ＣＰＵ２は、上述のとおり、関数Ａｃｔｃｈｅｃｋ（）の戻り値として真が戻ってきたか、或いは偽が戻ってきたかを判断する。
【００３６】
関数Ａｃｔｃｈｅｃｋ（）の戻り値として真が戻ってきた場合には、処理をステップＳ４に移す一方で、関数Ａｃｔｃｈｅｃｋ（）の戻り値として偽が戻ってきた場合には、異常状態であるとして処理を中断する。
【００３７】
ステップＳ４では、セクタ消去手順２が実行される。より具体的には、ＣＰＵ２は、ステップＳ１で読み出された関数ＲＯＭＣｌｅａｒ（）の処理のうち２番目の手順に相当するセクタ消去手順２を実行する。
【００３８】
次いで、セクタ消去手順２が終了すると、ＣＰＵ２は、再びパターン真偽判定工程の処理を実行する（ステップＳ５）。そして、上述同様、関数Ａｃｔｃｈｅｃｋ（）の戻り値が真か偽かを判断し（ステップＳ６）、真である場合には処理を次のステップに移し、偽である場合には異常状態であるとして処理を中断する。
【００３９】
以上説明したように、セクタ消去手順→パターン真偽判定工程→真偽判断という一連の処理が複数回繰り返され、最後に、ＣＰＵ２によって消去完了か否かが判断される（ステップＳ７）。ＣＰＵ２は、消去が未だ完了していないと判定した場合には、ステップＳ７の処理を繰り返す一方で、消去が完了したと判定した場合には、セクタ消去工程を終了する。
【００４０】
このように、本実施形態に係るフラッシュＲＯＭ１のデータ更新方法では、複数のセクタ消去手順の中に、パターン真偽判定工程が適宜埋め込まれているので、意図しないデータ消去やデータ改竄が試みられた場合だけでなく、プログラム暴走などによってプログラムカウンタが偶然、関数ＲＯＭＣｌｅａｒ（）のコード上にジャンプしてきた場合であっても、実際にデータ消去やデータ改竄が行われることはない。従って、フラッシュＲＯＭ１のデータ更新を行う際の信頼性を向上させることができる。そして、上述したとおり、ＢＯＯＴプログラムの誤消去或いは誤書き込みをも防ぐことができる。
【００４１】
なお、図２（ａ）は、各セクタ消去手順の直後にパターン真偽判定工程を実行するようにしており、プロテクト機能を重畳させているので、意図しないデータ消去をより確実に防ぐことが可能である。また、図２（ａ）では、セクタ消去工程を考えたが、セクタ書き込み工程についても同様のことがいえる。すなわち、セクタ書き込み工程は、複数のセクタ書き込み手順に分割されており、ＲＯＭ４に格納された関数ＲＯＭＷｒｉｔｅ（）が読み出されることによって、各セクタ書き込み手順の直後にパターン真偽判定工程が実行される。このようにして、意図しないデータの書き込みをより確実に防ぐことができる。
【００４２】
一方で、図２（ｂ）では、セクタ消去工程において、まず、複数のセクタ消去手順（ステップＳ１１、ステップＳ１２、ステップＳ１３、・・・）までが実行され、その後、パターン真偽判定工程が実行される（ステップＳ１４）。そして、実際に消去を実行するセクタ消去手順Ｆが実行された後、消去完了か否かが判断されている（ステップＳ１６）。このように、パターン真偽判定工程は、最後のセクタ消去手順Ｆの前に１回だけ実行することも可能である。これにより、必要最小限の処理負荷で、アプリケーションレベルでのプロテクト機能を実現することができる。
【００４３】
次に、図２を用いて説明したパターン真偽判定工程、及び、そのパターン真偽判定工程の前提工程となるパターン記憶工程について、以下詳しく説明する。
【００４４】
図３は、パターン真偽判定工程の前提工程となるパターン記憶工程の流れを示すフローチャートである。特に、複数の所定パターンが順番にＲＡＭ３に記憶される際、直前に記憶された所定パターンが正常に記憶されているか否かを逐一判断することを特徴とするフローチャートである。
【００４５】
図３において、まず、ＣＰＵ２は、ホストコンピュータからのコマンドを受信すると、このコマンドに基づき、ＲＯＭ４から独立した関数ＳｅｔＡｒｅａ＿０（）を読み出して、予め決められた所定パターンをＲＡＭ３に記憶する。そして、ＣＰＵ２は、ホストコンピュータから次のコマンドを受信すると、このコマンドに基づき、ＲＯＭ４から独立した関数ＳｅｔＡｒｅａ＿１（）を読み出して、予め決められた所定パターンをＲＡＭ３に記憶する。
【００４６】
但し、２個目以降、所定パターンをＲＡＭ３に記憶する際には、直前に記憶されたパターンは正常であるか否か、すなわち直前に記憶された所定パターンに誤りがないか否かがＣＰＵ２によって判断される（ステップＳ２１）。
【００４７】
ＣＰＵ２は、正常であると判定した場合には、その所定パターンをＲＡＭ３に記憶した上で（ステップＳ２２）、本サブルーチンを終了する。一方で、正常でないと判定した場合には、その所定パターンをＲＡＭ３に記憶することはせず、直前まで記録されたＲＡＭ３上の所定パターン全てをゼロクリアした上で（ステップＳ２３）、本サブルーチンを終了する。なお、「ゼロクリア」は、ゼロが書き込まれるようにしてもよいが、他の決められた値（例えば「１」）が書き込まれるようにしてもよい。
【００４８】
このように、図３に示すパターン記憶工程によれば、ホストコンピュータ１１からのコマンドに基づき所定パターンをＲＡＭ３に記憶する段階でも、誤ったパターンが記憶されていないかチェックしているので、結果として、フラッシュＲＯＭ１のデータ更新方法についての信頼性をより向上させることができる。なお、関数ＳｅｔＡｒｅａ＿０（）〜関数ＳｅｔＡｒｅａ＿ｎ（）が決められた順番で実行されない限り、関数Ａｃｔｃｈｅｃｋ（）の戻り値が真になることはない。
【００４９】
なお、ＣＰＵ２は、ＲＯＭ４から独立した関数ＳｅｔＡｒｅａ＿０（）を読み出すと同時に、タイマ機能を作動させ（例えば変数ＡｒｅａＴｉｍｅｒにタイマ値をセットし）、最後の所定パターンを記憶するための関数ＳｅｔＡｒｅａ＿ｎ（）を読み出すまでの間に、所定時間が経過したことを判断すると（例えば変数ＡｒｅａＴｉｍｅｒがゼロになったことを判断すると）、全てのエリアをゼロクリアとするようにしてもよい。これにより、一連の処理が変数ＡｒｅａＴｉｍｅｒにセットされる時間内に完結しなければならないので、時間以内の処理完結が条件に加わることとなり、プロテクト機能を更に厳重化することができる。
【００５０】
図４は、図２に示すセクタ消去工程内で実行されるパターン真偽判定工程の流れを示すフローチャートである。なお、このパターン真偽判定工程が行われる前提工程として、図３に示すパターン記憶工程が終了しているものとする。
【００５１】
図４において、まず、ＣＰＵ２は、ＲＯＭ４に格納された関数Ａｃｔｃｈｅｃｋ（）を読み出して、ＲＡＭ３のエリア０にアクセスし、所定パターンに誤りがないか否かを判断する（ステップＳ３１）。誤りがなく正常であると判定した場合には、次にＲＡＭ３のエリア１にアクセスして、所定パターンに誤りがないか否かを判断する（ステップＳ３２）。以下同様にして、ＲＡＭ３のエリアｎまでアクセスして、所定パターンに誤りがないか否かを判断する（ステップＳ３４）。そして、エリア０〜エリアｎまでの全てのエリアについて、所定パターンに誤りがないと判定した場合には、関数Ａｃｔｃｈｅｃｋ（）の戻り値として真を戻す。一方で、エリア０〜エリアｎまでのいずれかのエリアについて、１つでも所定パターンに誤りがあると判定した場合には、エリア０〜エリアｎまでをゼロクリアした上で（ステップＳ３５）、関数Ａｃｔｃｈｅｃｋ（）の戻り値として偽を戻す。
【００５２】
以上説明したように、パターン記憶工程（図３参照）、パターン真偽判定工程（図４参照）、セクタ消去工程（図２参照）の各工程を含むフラッシュＲＯＭ１のデータ更新方法は、如何なる機種や如何なる製造メーカの不揮発性メモリに対しても、意図しないデータ消去やデータ改竄を防止しうる汎用性と、安価かつ簡易に実現しうる実用性とを兼ね備えたものとなる。
【００５３】
なお、上述したスーパーバイザープログラムは、それ自身は通常動作せずともメインのプログラムが何らかの事情により誤消去・誤書き込みされた場合には、それなりの復旧動作を司らなければならない。そのため、誤った操作による消去や書き込みはなされないのが前提となる。ただし、最悪の場合は、それらのプログラムを書き換えなくてはならない程のバグや仕様変更が発生した場合には、何らかの手段を残しておかなくては回収・アップデートができないことになる。
【００５４】
同様にして、例えば個体を識別するためのシリアル番号や製造時の履行データなどは、通常は一度書き込まれたら上書きや消去は不可能となっているのが原則である。しかし、全く書き換えや初期化ができないとなると、メンテナンスをすることができない。
【００５５】
このように、通常では、初期化・消去・上書きといったような処理は行うことができないようにするため、単純なコマンドや操作では実行を抑止し、場合によっては実行抑止を解除しうる仕組みが必要である。そこで、本実施形態に係る不揮発性メモリのデータ更新方法を用いれば、単純なコマンドや操作では実行を抑止することができる一方、アプリケーションレベルの様々な関数よりなる制御プログラムによって実行抑止を解除することができるので、不揮発性メモリがディスコンや欠品などの理由により、他メーカの代用品或いは代用機種に代えた場合であっても、プログラム変更をすることなく、プロテクト機能の利益を継続して受けることができる。
【産業上の利用可能性】
【００５６】
本発明に係る不揮発性メモリのデータ更新方法、制御装置、及びデータ更新プログラムは、如何なる機種や如何なる製造メーカの不揮発性メモリに対しても、意図しないデータ消去やデータ改竄を防止しうるものとして有用である。
【図面の簡単な説明】
【００５７】
【図１】本発明の実施の形態に係る不揮発性メモリのデータ更新方法を実行するシステムの電気的構成を示すブロック図である。
【図２】本発明の実施の形態に係る不揮発性メモリのデータ更新方法のうち、セクタ消去工程の流れを示すフローチャートである。
【図３】パターン真偽判定工程の前提工程となるパターン記憶工程の流れを示すフローチャートである。
【図４】図２に示すセクタ消去工程内で実行されるパターン真偽判定工程の流れを示すフローチャートである。
【図５】不揮発性メモリのデータ更新方法の流れを示すフローチャートである。
【符号の説明】
【００５８】
１  フラッシュＲＯＭ
２  ＣＰＵ
３  ＲＡＭ
４  ＲＯＭ
５  Ｉ／Ｆポート
１０  カードリーダ
１１  ホストコンピュータ
【図１】
0004734582.tif 000002
【図２】
0004734582.tif 000003
【図３】
0004734582.tif 000004
【図４】
0004734582.tif 000005
【図５】
0004734582.tif 000006