(57)【要約】【課題】バックアップ用のバッテリを必要とすることなく、停電や誤操作によって電源がオフになっても書き込みエラーを正常に判断する。【解決手段】最初にチェックサム用のデータ領域１０２を特定の値を書き込んで初期化し（ステップＳ２０１）、データ１０４を実データ用のデータ領域１０３に書き込み（ステップＳ２０２）、データ１０４のチェックサムを演算してチェックサム用のデータ領域１０２に上書きし（ステップＳ２０３、Ｓ２０４）、チェックサム用のデータ領域１０２のチェックサムを読み出して特定の値と比較し（ステップＳ３０１、Ｓ３０２）、１バイトでも一致した場合に書き込みエラーと判断する（ステップＳ３０３）。【選択図】図２
2008269028.tif 000002
【特許請求の範囲】
【請求項１】
データが記憶されるデータ領域と、前記記憶されるデータのチェックサムが記憶されるチェックサム領域とが設けられたメモリの書き込み及び読出しを制御するメモリ制御装置において、
前記チェックサム領域に所定の値を書き込み初期化するチェックサム領域初期化手段と、
前記チェックサム領域を初期化した後に、前記データ領域にデータを書き込むデータ書き込み手段と、
前記データ領域に書き込んだデータに基づき第１のチェックサムを演算するチェックサム演算手段と、
前記演算して得た第１のチェックサムを前記チェックサム領域に上書きするチェックサム書き込み手段と、
前記チェックサム領域に書き込まれた第１のチェックサムを読み出して前記所定の値と比較し、一致する場合に前記データ領域に書き込まれたデータには書き込みエラーが発生していると判定する一方、一致しない場合には前記データ領域に書き込まれたデータを読み出してその読み出したデータに基づき第２のチェックサムを演算し、その演算して得た第２のチェックサムと前記チェックサム領域から読み出した第１のチェックサムとを比較し、一致しない場合に前記データ領域に書き込まれたデータには書き込みエラーが発生していると判定し、一致する場合には前記データ領域に書き込まれたデータは正常であると判定する判定手段とを、
備えたことを特徴とするメモリ制御装置。
【請求項２】
データが記憶されるデータ領域と、前記記憶されるデータのチェックサムが記憶されるチェックサム領域とが設けられたメモリの書き込み及び読出しを制御するメモリ制御方法において、
前記メモリへのデータ書き込みの際に、
前記チェックサム領域に所定の値を書き込み初期化するチェックサム領域初期化ステップと、
前記チェックサム領域を初期化した後に、前記データ領域にデータを書き込むデータ書き込みステップと、
前記データ領域に書き込んだデータに基づき第１のチェックサムを演算するチェックサム演算ステップと、
前記演算して得た第１のチェックサムを前記チェックサム領域に上書きするチェックサム書き込みステップとを有し、
前記メモリからのデータ読出しの際に、
前記チェックサム領域に書き込まれた第１のチェックサムを読み出して前記所定の値と比較し、一致する場合に前記データ領域に書き込まれたデータには書き込みエラーが発生していると判定する一方、一致しない場合には前記データ領域に書き込まれたデータを読み出してその読み出したデータに基づき第２のチェックサムを演算し、その演算して得た第２のチェックサムと前記チェックサム領域から読み出した第１のチェックサムとを比較し、一致しない場合に前記データ領域に書き込まれたデータには書き込みエラーが発生していると判定し、一致する場合には前記データ領域に書き込まれたデータは正常であると判定する判定ステップとを、
有することを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリのデータ領域にデータを書き込むとともに、メモリのチェックサム領域にデータ領域に書き込まれたデータのチェックサムを書き込むことにより、書き込みデータのエラー判定を行うメモリ制御装置及びメモリ制御方法に関し、特にメモリとしてＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）を用いた記憶装置に適用して有効な技術に関する。
【背景技術】
【０００２】
ＥＥＰＲＯＭは電気的な操作により消去を行えるメモリである。ＥＥＰＲＯＭは回路基板に実装したままで書込み・消去ができ、書き込み後はＲＯＭとしてデータを保持するので、利用時に書き換えが必要な用途、例えば機器の動作設定データや、利用者固有の情報を保存するのに広く用いられている。また近年広く普及してきているフラッシュメモリもＥＥＰＲＯＭの一種である。
【０００３】
ＥＥＰＲＯＭにデータを書き込むにあたっては、書き込み時のエラーを検出するため、チェックサムを同時に書き込んでいる場合がある。チェックサムはデータのバイト列を頭から順に加算して総計したもので、データの読み出し時に読み出したデータのバイト列の総計と、書き込まれているチェックサムとを比較し、一致しない場合に書き込みデータをエラーと判断する。ところで、ＥＥＰＲＯＭで書き込みエラーが発生する大きな要因の１つに、書き込みの中断があげられる。ＥＥＰＲＯＭにデータを書き込んでいる途中で停電や誤操作によってＥＥＰＲＯＭの電源がオフになると書き込み動作が中断されてしまう。
【０００４】
一方、このようなシステム側の電源遮断に影響されず、常に正しいデータを確実に記憶できるようにするために、バックアップ用のバッテリを持ち、記憶の最小単位である１ページ分はバッテリで動作を継続し、書き込みを中断しないようにした記憶装置も提案されている（例えば下記の特許文献１参照）。
【特許文献１】特開平７−４４４６８号公報（要約書）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載された記憶装置はバックアップ用のバッテリを持ち、記憶の最小単位である１ページ分はバッテリで動作を継続し、書き込みを中断しないように構成されているので、このような方法によれば最小単位のデータは必ず書き込みを終了し、さらにチェックサムを書き込むまで完了することができるが、バックアップ用のバッテリが必要であるため部品点数が増加しコストがかかってしまう。
【０００６】
ところで、ＥＥＰＲＯＭにデータを書き込んでいる途中で停電や誤操作によってＥＥＰＲＯＭの電源がオフになり、書き込み動作が中断された場合、チェックサムと途中まで書き込まれたデータの総計とは異なるが、偶然一致してしまうことがある。例えば図４を参照して、データの数が３バイトで、チェックサムとしてデータ合計値の下位１バイトでチェックする場合について考える。データが
０ｘ０１、０ｘ０４、０ｘＦ０
のとき、データ合計値は０ｘＦ５となり、その下位１バイトは０ｘＦ５となるので、チェックサム用データは０ｘＦ５となる。最初、データとしてこの０ｘ０１、０ｘ０４、０ｘＦ０がデータ領域に書かれており、チェックサム用データ領域に０ｘＦ５が書かれているときに、次のデータとして
０ｘ０２、０ｘ０３、０ｘ００
そして、チェックサム用データとして０ｘ０５を上書きする場合を考える。最初の状態は
データ：０ｘ０１，０ｘ０４，０ｘＦ０
チェックサム用データ：０ｘＦ５
である。
【０００７】
次のデータを書くときに、まずデータ領域の１バイト目に０ｘ０２を書き込み（ステップＳ４０１）、次にデータ領域の２バイト目に０ｘ０３を書き込み（ステップＳ４０２）、その後に電源オフがあったとする（ステップＳ４０３）。このとき３バイト目のデータとチェックサム用データは前の値がそのまま残っているので、データ値は次の通りとなる。
データ：０ｘ０２、０ｘ０３、０ｘＦ０
チェックサム用データ：０ｘＦ５
データ３バイトの合計をとると、０ｘＦ５となり、下位１バイトの値が”０ｘＦ５”になっているので、チェックサム用データの０ｘＦ５と合致し、書き込みに失敗したことが分からない。
【０００８】
本発明は、上記従来技術の問題点に鑑み、メモリバックアップ用のバッテリを必要とすることなく、停電や誤操作によって電源がオフになってもメモリへの書き込みエラーを正常に判断することができるメモリ制御装置及びメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は上記目的を達成するために、データが記憶されるデータ領域と、前記記憶されるデータのチェックサムが記憶されるチェックサム領域とが設けられたメモリの書き込み及び読出しを制御するメモリ制御装置において、
前記チェックサム領域に所定の値を書き込み初期化するチェックサム領域初期化手段と、
前記チェックサム領域を初期化した後に、前記データ領域にデータを書き込むデータ書き込み手段と、
前記データ領域に書き込んだデータに基づき第１のチェックサムを演算するチェックサム演算手段と、
前記演算して得た第１のチェックサムを前記チェックサム領域に上書きするチェックサム書き込み手段と、
前記チェックサム領域に書き込まれた第１のチェックサムを読み出して前記所定の値と比較し、一致する場合に前記データ領域に書き込まれたデータには書き込みエラーが発生していると判定する一方、一致しない場合には前記データ領域に書き込まれたデータを読み出してその読み出したデータに基づき第２のチェックサムを演算し、その演算して得た第２のチェックサムと前記チェックサム領域から読み出した第１のチェックサムとを比較し、一致しない場合に前記データ領域に書き込まれたデータには書き込みエラーが発生していると判定し、一致する場合には前記データ領域に書き込まれたデータは正常であると判定する判定手段とを、
備えたことを特徴とする。
【００１０】
また、本発明は上記目的を達成するために、データが記憶されるデータ領域と、前記記憶されるデータのチェックサムが記憶されるチェックサム領域とが設けられたメモリの書き込み及び読出しを制御するメモリ制御方法において、
前記メモリへのデータ書き込みの際に、
前記チェックサム領域に所定の値を書き込み初期化するチェックサム領域初期化ステップと、
前記チェックサム領域を初期化した後に、前記データ領域にデータを書き込むデータ書き込みステップと、
前記データ領域に書き込んだデータに基づき第１のチェックサムを演算するチェックサム演算ステップと、
前記演算して得た第１のチェックサムを前記チェックサム領域に上書きするチェックサム書き込みステップとを有し、
前記メモリからのデータ読出しの際に、
前記チェックサム領域に書き込まれた第１のチェックサムを読み出して前記所定の値と比較し、一致する場合に前記データ領域に書き込まれたデータには書き込みエラーが発生していると判定する一方、一致しない場合には前記データ領域に書き込まれたデータを読み出してその読み出したデータに基づき第２のチェックサムを演算し、その演算して得た第２のチェックサムと前記チェックサム領域から読み出した第１のチェックサムとを比較し、一致しない場合に前記データ領域に書き込まれたデータには書き込みエラーが発生していると判定し、一致する場合には前記データ領域に書き込まれたデータは正常であると判定する判定ステップとを、
有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、データを書き込む前にチェックサム領域を所定の値で初期化し、データを書き込んでその書き込みデータのチェックサムを演算してチェックサム領域に書き込み、チェックサム領域に書き込まれたチェックサムを読み出して所定の値と比較し、一致する場合にデータ領域に書き込んだデータは書き込みエラーと判断するので、バックアップ用のバッテリを必要とすることなく、停電や誤操作によって電源がオフになっても書き込みエラーを正常に判断することができる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して本発明の実施の形態について説明する。図１は本発明の一実施の形態を適用したメモリのメモリ領域を示す概念図、図２は本発明の一実施の形態においてデータを書き込む手順を示すフローチャート、図３は本発明の一実施の形態においてデータを読み出す手順を示すフローチャートである。
【００１３】
図１において、メモリであるＥＥＰＲＯＭ１０１は、２バイトのチェックサム用のデータ領域１０２と、実データ用のデータ領域１０３とを有し、この例では、データ領域１０２、１０３には既に、それぞれ
チェックサム用のデータ＝０ｘＦ０，０ｘ０５
実データ＝０ｘ０１，０ｘ０４，０ｘＦ０
が書き込まれている。そして、実データ用のデータ領域１０３には次のデータ１０４で書き込み（上書き）を行う。上書きデータ１０４はこの例では
０ｘ０２，０ｘ０３，０ｘ００
である。ここで、図１には、記憶装置のハードウエアの構成については示されていないが、公知の構成、例えばメモリであるＥＥＰＲＯＭ１０１の他に、ＥＥＰＲＯＭ１０１の書き込み／読み出しを制御するメモリコントローラと、後述するエラー判定を行うプロセッサなどにより構成することができる。
【００１４】
ＥＥＰＲＯＭ１０１にデータを書く手順について説明する。ここで、
・チェックサム用データの１バイト目の値をデータ合計値の下位１バイトとの０ｘＦ０との論理積、
・チェックサム用データの２バイト目の値をデータ合計値の下位１バイトとの０ｘ０Ｆとの論理積、
とする。このように演算すれば、どんなデータに基づいて演算を行っても、後述する特定の値である０ｘＦＦにはならない。また、チェックサム用データの１バイト目の値とチェックサム用データの２バイト目の値との合計は、データ合計値の下位１バイトとなる。
この場合、実データ用のデータ領域１０３に既に書かれているデータは
０ｘ０１、０ｘ０４、０ｘＦ０
であるので、その書き込み済みデータの下位１バイトは０ｘＦ５となるので、チェックサム用データは
０ｘＦ０，０ｘ０５
となる。したがって、図１に示すように、既にこの０ｘＦ０，０ｘ０５がチェックサム用データ領域１０２に書き込まれている。
【００１５】
つぎに、図２を参照して書き込み処理を説明する。最初にチェックサム用のデータ領域１０２を特定の値、例えば
０ｘＦＦ，０ｘＦＦ
の値を書き込んで初期化する（ステップＳ２０１）。ここで特定の値として用いた０ｘＦＦは、本実施の形態で用いたＥＥＰＲＯＭにおいて書き込みに先立って消去すると、領域の値が０ｘＦＦとなることから用いた値で、消去を行うだけで特定の値"０ｘＦＦ"を書き込んだことになる。消去の際に他の値になるＥＥＰＲＯＭであれば、その他の値を特定の値にしてもよい。
【００１６】
次にデータ１０４（０ｘ０２、０ｘ０３、０ｘ００）を実データ用のデータ領域１０３に書き込む（ステップＳ２０２）。ところで、２バイト（０ｘ０２、０ｘ０３）を書き込んだときに電源オフがあったとすると、
データ：０ｘ０２，０ｘ０３，０ｘＦ０、
チェックサム用データ：０ｘＦＦ，０ｘＦＦ
となる。
【００１７】
一方、ステップＳ２０２の後に電源オフなどがなく、正常に書き込みを終了すると、データ領域１０２のデータは
０ｘ０２，０ｘ０３，０ｘ００
となる。そしてこれらのデータの合計をとり、
・データ合計値の下位１バイトと０ｘＦ０との論理積をチェックサム用データの１バイト目の値として、また、
・データ合計値の下位１バイトと０ｘ０Ｆとの論理積をチェックサム用データの２バイト目の値として
計算すると（ステップＳ２０３）、チェックサム用データ１０５は
０ｘ００，０ｘ０５
となるので、これをチェックサム用データ領域に書き込む（ステップＳ２０４）。
【００１８】
これにより、正常に書き込みが終わった場合は、チェックサム用のデータ領域１０２には通常のチェックサムの値が書き込まれる。一方、電源オフなどで書き込みが途中で終わってしまった場合は、チェックサム用のデータ領域１０２には特定の値"０ｘＦＦ"が書き込まれたままとなっている。
【００１９】
このようにして記憶されたデータを読み出す場合は、図３に示すように、まずチェックサム用データ領域１０２からチェックサム用データ１０５を読み出す（ステップＳ３０１）。次いで、読み出したチェックサム用データ１０５を特定の値（０ｘＦＦ，０ｘＦＦ）と比較し（ステップＳ３０２）、１バイトでも一致した場合は書き込みが中断したものと判断し、エラー処理を行う（ステップＳ３０３）。エラーでない場合は、続いて実データ用のデータ領域１０３からデータ１０４を読み出す（ステップＳ３０４）。そして読み出したデータ１０４（３バイト）の合計の下位１バイトの値を演算し（ステップＳ３０５）、下位１バイトの値をチェックサム用データ２バイトの合計と比較し（ステップＳ３０６）、合計の下位１バイトがチェックサム用データ２バイトの合計と一致した場合は正常と判定し、読み出したデータを利用する（ステップＳ３０７）。また、ステップＳ３０６において一致しない場合には、エラー処理を行う（ステップＳ３０３）。このように、書き込みの中断がなかった場合、チェックサム用のデータ領域１０２には通常のチェックサムが記憶されているので、従来のチェックサムと同様にしてエラーを判定することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施の形態を適用したメモリにおけるメモリ領域を示す概念図である。
【図２】本発明の一実施の形態においてデータを書き込む手順を示すフローチャートである。
【図３】本発明の一実施の形態においてデータを読み出す手順を示すフローチャートである。
【図４】従来の記憶装置におけるデータの書き込みの手順を示すフローチャートである。
【符号の説明】
【００２１】
１０１  ＥＥＰＲＯＭ（メモリ）
１０２  チェックサム用のデータ領域
１０３  実データ用のデータ領域
１０４  書き込み(上書き)を行うデータ
１０５  チェックサム用データ
【図１】
2008269028.tif 000003
【図２】
2008269028.tif 000004
【図３】
2008269028.tif 000005
【図４】
2008269028.tif 000006