(57)【要約】【課題】  データの整合性を一段と確実に維持し得るデータ記憶装置を実現する。【解決手段】  ＩＣカード４のＣＰＵ３１は、データ領域Ａの１面Ａ１又は２面Ａ２に対して更新後のデータを供給した後、ウェイト時間待機してから、１面Ａ１又は２面Ａ２のどちらに更新後のデータを記憶させたのかを判定するための選択面フラグＡＦをステータス領域ＳＡに書き込むようにしたことにより、この選択面フラグＡＦの示す面に記憶されているデータが、正常に記憶されている更新後のデータであると保証し得るので、常に正常に記憶されている更新後のデータを用いることができ、かくしてデータの整合性を一段と確実に維持することができる。【選択図】          図５
2006031276.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するための複数の記憶領域を有する記憶部と、
更新前のデータを上記記憶部の第１の記憶領域に記憶させている場合には、更新後のデータを上記記憶部の第２の記憶領域に供給し、更新前のデータを当該第２の記憶領域に記憶させている場合には、更新後のデータを上記第１の記憶領域に供給して記憶させる記憶制御手段と
を具え、
上記記憶制御手段は、
上記第１の記憶領域又は上記第２の記憶領域に上記更新後のデータを供給して完全に記憶させた後に、上記第１の記憶領域及び上記第２の記憶領域のどちらに更新後のデータを記憶させたのかを判定するための第１の判定データを上記記憶部の第３の記憶領域に供給して記憶させる
ことを特徴とする半導体集積回路。
【請求項２】
上記記憶制御手段は、
上記第１の記憶領域及び上記第２の記憶領域に対して、当該第１の記憶領域及び当該第２の記憶領域のどちらに更新後のデータを記憶させたのかを判定するための第２の判定データを供給して記憶させる
ことを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
上記記憶制御手段は、
上記複数の記憶領域に対して、記憶させたデータの誤りを検出するための誤り検出データを供給して記憶させる
ことを特徴とする請求項２に記載の半導体集積回路。
【請求項４】
上記第１の記憶領域及び上記第２の記憶領域に記憶させた上記データ、上記第２の判定データ及び上記誤り検出データと、上記第３の記憶領域に記憶させた上記第１の判定データ及び上記誤り検出データとをもとに、上記第１の記憶領域及び上記第２の記憶領域のどちらに更新後のデータが正常に記憶されているのかを判定する判定手段を具える
ことを特徴とする請求項３に記載の半導体集積回路。
【請求項５】
上記第３の記憶領域に記憶させた上記第１の判定データ及び上記誤り検出データが破壊されていた場合に、上記第１の記憶領域及び上記第２の記憶領域に記憶させた上記データ、上記第２の判定データ及び上記誤り検出データをもとに、上記第３の記憶領域に記憶させた上記第１の判定データ及び上記誤り検出データを修復する修復手段を具える
ことを特徴とする請求項３に記載の半導体集積回路。
【請求項６】
データを記憶するための複数の記憶領域を有する記憶部に対してデータを記憶するデータ記憶方法において、
更新前のデータを上記記憶部の第１の記憶領域に記憶させている場合には、更新後のデータを上記記憶部の第２の記憶領域に供給し、更新前のデータを当該第２の記憶領域に記憶させている場合には、更新後のデータを上記第１の記憶領域に供給して記憶させる第１の記憶ステップと
上記第１の記憶領域又は上記第２の記憶領域に上記更新後のデータを供給して完全に記憶させた後に、上記第１の記憶領域及び上記第２の記憶領域のどちらに更新後のデータを記憶させたのかを判定するための第１の判定データを上記記憶部の第３の記憶領域に供給して記憶させる第２の記憶ステップと
を具えることを特徴とするデータ記憶方法。
【請求項７】
上記第１の記憶ステップでは、
上記第１の記憶領域及び上記第２の記憶領域に対して、当該第１の記憶領域及び当該第２の記憶領域のどちらに更新後のデータを記憶させたのかを判定するための第２の判定データを供給して記憶させる
ことを特徴とする請求項６に記載のデータ記憶方法。
【請求項８】
上記第１の記憶ステップ及び上記第２の記憶ステップでは、
上記複数の記憶領域に対して、記憶させたデータの誤りを検出するための誤り検出データを供給して記憶させる
ことを特徴とする請求項７に記載のデータ記憶方法。
【請求項９】
上記第１の記憶領域及び上記第２の記憶領域に記憶させた上記データ、上記第２の判定データ及び上記誤り検出データと、上記第３の記憶領域に記憶させた上記第１の判定データ及び上記誤り検出データとをもとに、上記第１の記憶領域及び上記第２の記憶領域のどちらに更新後のデータが正常に記憶されているのかを判定する判定ステップを具える
ことを特徴とする請求項８に記載のデータ記憶方法。
【請求項１０】
上記第３の記憶領域に記憶させた上記第１の判定データ及び上記誤り検出データが破壊されていた場合に、上記第１の記憶領域及び上記第２の記憶領域に記憶させた上記データ、上記第２の判定データ及び上記誤り検出データをもとに、上記第３の記憶領域に記憶させた上記第１の判定データ及び上記誤り検出データを修復する修復ステップを具える
ことを特徴とする請求項８に記載のデータ記憶方法。
【請求項１１】
外部装置と通信する通信手段と、
データを記憶するための複数の記憶領域を有する記憶部と、
上記通信手段により受信した外部装置からの命令に応じて、更新前のデータを上記記憶部の第１の記憶領域に記憶させている場合には、更新後のデータを上記記憶部の第２の記憶領域に供給し、更新前のデータを当該第２の記憶領域に記憶させている場合には、更新後のデータを上記第１の記憶領域に供給して記憶させる記憶制御手段と
を具え、
上記記憶制御手段は、
上記第１の記憶領域又は上記第２の記憶領域に上記更新後のデータを供給して完全に記憶させた後に、上記第１の記憶領域及び上記第２の記憶領域のどちらに更新後のデータを記憶させたのかを判定するための第１の判定データを上記記憶部の第３の記憶領域に供給して記憶させる
ことを特徴とするデータ通信装置。
【請求項１２】
上記記憶制御手段は、
上記第１の記憶領域及び上記第２の記憶領域に対して、当該第１の記憶領域及び当該第２の記憶領域のどちらに更新後のデータを記憶させたのかを判定するための第２の判定データを供給して記憶させる
ことを特徴とする請求項１１に記載のデータ通信装置。
【請求項１３】
上記記憶制御手段は、
上記複数の記憶領域に対して、記憶させたデータの誤りを検出するための誤り検出データを供給して記憶させる
ことを特徴とする請求項１２に記載のデータ通信装置。
【請求項１４】
上記第１の記憶領域及び上記第２の記憶領域に記憶させた上記データ、上記第２の判定データ及び上記誤り検出データと、上記第３の記憶領域に記憶させた上記第１の判定データ及び上記誤り検出データとをもとに、上記第１の記憶領域及び上記第２の記憶領域のどちらに更新後のデータが正常に記憶されているのかを判定する判定手段を具える
ことを特徴とする請求項１３に記載のデータ通信装置。
【請求項１５】
上記第３の記憶領域に記憶させた上記第１の判定データ及び上記誤り検出データが破壊されていた場合に、上記第１の記憶領域及び上記第２の記憶領域に記憶させた上記データ、上記第２の判定データ及び上記誤り検出データをもとに、上記第３の記憶領域に記憶させた上記第１の判定データ及び上記誤り検出データを修復する修復手段を具える
ことを特徴とする請求項１３に記載のデータ通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路、データ記憶方法及びデータ通信装置に関し、例えば不揮発性メモリを有するＩＣカードやそのリーダライタがデータを記憶する際に適用して好適なものである。
【背景技術】
【０００２】
近年、電子マネーシステムや交通システム等においてＩＣ（Integrated Circuit）カードが広く利用されている。かかるＩＣカードは、例えばＥＥＰＲＯＭ（Electrically Erasable and Programmable ROM）等の不揮発性メモリを有し、この不揮発性メモリにシステムで利用するデータ（例えば課金データ等）を記憶すると共に、リーダライタとの間でこのデータをやり取りする。
【０００３】
また、かかるＩＣカードの中には、リーダライタと非接触で通信を行い得る非接触型のものがあり、例えばリーダライタから送信される電磁波により電力を発生して動作するものもある。
【０００４】
このように電磁波を受信して動作するＩＣカードの場合、当然のことながら電磁波を受信している状態でしか動作し得ない。ゆえに、かかる非接触型のＩＣカードにおいては、例えば不揮発性メモリにデータを書き込んでいる途中で、電磁波の受信状態が悪化することにより電源が瞬断される状況が想定し得、このような場合、書込途中のデータが破壊され、データの整合性に欠陥が生じる恐れがある。
【０００５】
そこで従来、不揮発性メモリ上に、第１の記憶領域と第２の記憶領域とを設け、例えば第１の記憶領域に更新前のデータが記憶されている場合、更新後のデータを第２の記憶領域に書き込んで記憶させることにより、第２の記憶領域に更新後のデータを書き込んでいる途中に動作終了してこのデータが破壊された場合でも、第１の記憶領域に記憶させている更新前のデータを用いるようにしてデータの整合性を維持する方法が提案されている（例えば特許文献１参照）。
【特許文献１】特開平１１−２５００３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、実際上ＩＣカードの制御部が不揮発性メモリに記憶させるためのデータを当該不揮発性メモリに供給し終えてから、この不揮発性メモリに対するデータの記憶が完全に終了するまでには所定時間を有する。つまりデータを供給し終えた後、この所定時間（以下、これをウェイト時間とも呼ぶ）経過した後でなければ、この供給したデータが正常に記憶されたことを保証できない。このため従来の方法を用いて、例えば第２の記憶領域に更新後のデータを供給し終えてからウェイト時間経過する前にＩＣカードの電源が瞬断されると、この更新後のデータが完全には記憶されていないため、例えばある一定期間はこの第２の記憶領域からこの更新後のデータが正常に読み出せることによりこの第２の記憶領域に記憶させた更新後のデータを用いることができるが、その後このデータの値が変化して破壊される場合があり、このような場合、データの整合性に欠陥を生じる恐れがある。
【０００７】
このように従来の方法を用いても、データの整合性を確実に維持することができるとは言い難いという問題があった。
【０００８】
本発明は以上の点を考慮してなされたもので、データの整合性を一段と確実に維持し得る半導体集積回路、データ記憶方法及びデータ通信装置を提案しようとするものである。
【課題を解決するための手段】
【０００９】
かかる課題を解決するため本発明の半導体集積回路においては、データを記憶するための複数の記憶領域を有する記憶部と、更新前のデータを上記記憶部の第１の記憶領域に記憶させている場合には、更新後のデータを上記記憶部の第２の記憶領域に供給し、更新前のデータを当該第２の記憶領域記憶させている場合には、更新後のデータを上記第１の記憶領域に供給して記憶させる記憶制御手段とを設け、記憶制御手段が、第１の記憶領域又は第２の記憶領域に更新後のデータを供給して完全に記憶させた後に、第１の記憶領域及び第２の記憶領域のどちらに更新後のデータを記憶させたのかを判定するための第１の判定データを記憶部の第３の記憶領域に供給して記憶させるようにした。
【００１０】
また本発明のデータ記憶方法においては、データを記憶するための複数の記憶領域を有する記憶部に対してデータを記憶するデータ記憶方法において、更新前のデータを記憶部の第１の記憶領域に記憶させている場合には、更新後のデータを記憶部の第２の記憶領域に供給し、更新前のデータを当該第２の記憶領域に記憶させている場合には、更新後のデータを第１の記憶領域に供給して記憶させる第１の記憶ステップと、第１の記憶領域又は第２の記憶領域に更新後のデータを供給して完全に記憶させた後に、第１の記憶領域及び第２の記憶領域のどちらに更新後のデータを記憶させたのかを判定するための第１の判定データを記憶部の第３の記憶領域に供給して記憶させる第２の記憶ステップとを設けるようにした。
【００１１】
さらに本発明のデータ通信装置においては、外部装置と通信する通信手段と、データを記憶するための複数の記憶領域を有する記憶部と、通信手段により受信した外部装置からの命令に応じて、更新前のデータを記憶部の第１の記憶領域に記憶させている場合には、更新後のデータを記憶部の第２の記憶領域に供給し、更新前のデータを当該第２の記憶領域に記憶させている場合には、更新後のデータを第１の記憶領域に供給して記憶させる記憶制御手段とを設け、記憶制御手段が、第１の記憶領域又は第２の記憶領域に更新後のデータを供給して完全に記憶させた後に、第１の記憶領域及び第２の記憶領域のどちらに更新後のデータを記憶させたのかを判定するための第１の判定データを記憶部の第３の記憶領域に供給して記憶させるようにした。
【００１２】
このように第１の記憶領域又は第２の記憶領域に対して更新後のデータを完全に記憶させた後に、第３の記憶領域に第１の記憶領域又は第２の記憶領域のどちらに更新後のデータを記憶させたのかを判定するための第１の判定データを記憶させるようにしたことにより、この第１の判定データが示す記憶領域に記憶されているデータが、正常に記憶された更新後のデータであると保証できる。
【発明の効果】
【００１３】
本発明によれば、第１の記憶領域又は第２の記憶領域に対して更新後のデータを完全に記憶させた後に、第３の記憶領域に第１の記憶領域又は第２の記憶領域のどちらに更新後のデータを記憶させたのかを判定するための第１の判定データを記憶させるようにしたことにより、この第１の判定データが示す記憶領域に記憶されているデータが、正常に記憶された更新後のデータであると保証し得るので、常に正常に記憶された新しいデータを用いることができ、かくしてデータの整合性を一段と確実に維持し得る半導体集積回路、データ記憶方法及びデータ通信装置を実現できる。
【発明を実施するための最良の形態】
【００１４】
以下図面について、本発明の一実施の形態を詳述する。
【００１５】
（１）データ通信システム
（１−１）システム構成
図１において、１は全体としてデータ通信システムを示し、パーソナルコンピュータ構成のコントローラ２に接続されたリーダライタ３に、非接触型のＩＣカード４が近接されると、当該リーダライタ３とＩＣカード４との間で認証処理を実行する。その結果、リーダライタ３とＩＣカード４との認証が成功すると、コントローラ２は、当該リーダライタ３を介してＩＣカード４に対し各種データの書込命令や読出命令を与える。
【００１６】
このリーダライタ３にはＩＣチップ１０が搭載されており、このＩＣチップ１０の内部に、全体を統括的に制御するＣＰＵ（Central Processing Unit）１１、プログラム等を格納するＲＯＭ（Read Only Memory）１２、一時作業領域となるＲＡＭ（Random Access Memory）１３、各種データの暗号化を行う暗号回路１４、各種データを記憶するＥＥＰＲＯＭ（Electrically Erasable and Programmable ROM）１５、コントローラ２と各種データやコマンドをやり取りするコントローラインタフェース部１６、及びＩＣカード４と各種データやコマンドをやり取りするＩＣカードインタフェース部１７がバス１８を介して接続されている。
【００１７】
さらにＩＣチップ１０の外部には、コントローラ２と通信するための有線通信用の通信処理回路及び通信接続端子等からなるコントローラ通信部１９、及びＩＣカード４と通信するための無線通信用のアナログ送受信回路及びアンテナ素子からなるＩＣカード通信部２０が設けられ、これらがそれぞれＩＣチップ１０内のコントローラインタフェース部１６及びＩＣカードインタフェース部１７に接続されている。
【００１８】
これによりリーダライタ３は、コントローラインタフェース部１６及びコントローラ通信部１９を介してコントローラ２と通信し得、またＩＣカードインタフェース部１７及びＩＣカード通信部２０を介してＩＣカード４と通信し得るようになされている。
【００１９】
一方、ＩＣカード４にもＩＣチップ３０が搭載されており、このＩＣチップ３０の内部に、全体を統括的に制御するＣＰＵ３１、プログラム等を格納するＲＯＭ３２、一時作業領域となるＲＡＭ３３、各種データの暗号化を行う暗号回路３４、各種データを記憶するＥＥＰＲＯＭ３５、及びリーダライタ３と各種データやコマンドをやり取りするリーダライタインタフェース部３６がバス３７を介して接続されている。
【００２０】
さらにＩＣチップ３０の外部には、リーダライタ３と通信するための無線通信用のアナログ送受信回路及びアンテナ素子からなるリーダライタ通信部３８が設けられ、これがＩＣチップ３０内のリーダライタインタフェース部３６に接続されている。
【００２１】
これによりＩＣカード４は、リーダライタインタフェース部３６及びリーダライタ通信部３８を介してリーダライタ３と通信し得るようになされている。
【００２２】
（１−２）ＥＥＰＲＯＭのメモリマップ構成
次にリーダライタ３及びＩＣカード４に内蔵されているＥＥＰＲＯＭ１５及び３５のメモリマップ構成について説明する。なお、本実施の形態におけるＥＥＰＲＯＭ１５及び３５のメモリマップ構成は同一であるので、ここではＩＣカード４のＥＥＰＲＯＭ３５についてのみ説明し、リーダライタ３のＥＥＰＲＯＭ１５についての説明は省略する。
【００２３】
ＥＥＰＲＯＭ３５は、図２に示すように、１又は複数のページからなる複数の領域に分割されており、後述する選択面フラグを格納するステータス領域ＳＡと、リーダライタ３とやり取りする種々のデータを格納する複数のデータ領域Ａ、Ｂ、Ｃ、…とで構成される。
【００２４】
さらにデータ領域Ａ、Ｂ、Ｃ、…は、それぞれ１面Ａ１、Ｂ１、Ｃ１、…と２面Ａ２、Ｂ２、Ｃ２、…とに分割されており、ＩＣカード４ではこれら２つの面を交互に用いてデータの更新を行う。
【００２５】
すなわちＩＣカード４のＣＰＵ３１は、例えばあるデータをデータ領域Ａの１面Ａ１に記憶させておき、このデータの更新時、１面Ａ１からこのデータをＲＡＭ３３上に読み出して更新し、このＲＯＭ３３上で更新したデータを２面Ａ２に記憶させる。そして、どちらの面に更新後のデータを記憶させたのかを示す選択面フラグをステータス領域ＳＡに記憶させる。
【００２６】
このように、かかるＥＥＰＲＯＭ３５においては、データの格納領域を２面ずつ設けておくことにより、更新後のデータを一方の面に書き込んで記憶している途中に、書き込みエラーが生じてこの更新後のデータが破壊された場合でも、他方の面に保持している更新前のデータを用いてデータを復旧させることができる。
【００２７】
なお、かかるＥＥＰＲＯＭ３５は、読出及び書込が１ページ単位で行われるものであり、本実施の形態の場合、ステータス領域ＳＡ、及びデータ領域Ａ、Ｂ、Ｃ、…の各面にそれぞれ１ページずつ割り当てている。
【００２８】
（１−２−１）ステータス領域の構成
次にステータス領域ＳＡの構成について詳述する。図３に示すようにステータス領域ＳＡには、その先頭からデータ領域Ａ、Ｂ、Ｃ、…のそれぞれに対応する選択面フラグＡＦ、ＢＦ、ＣＦ、…が格納され、最後にこのステータス領域ＳＡに対する誤り検出のためのチェックサムＣＳが格納される。なお、以降の説明においては、選択面フラグＡＦ、ＢＦ、ＣＦ、…とチェックサムＣＳとをまとめてステータス領域ＳＡのデータとも呼ぶ。
【００２９】
この選択面フラグＡＦ、ＢＦ、ＣＦ、…は、上述したように、それぞれ対応するデータ領域Ａ、Ｂ、Ｃ、…の２つの面のどちらが現在選択すべき面（以下、これを選択面とも呼ぶ）であるのかを示すフラグであり、このフラグの値が「００Ｈ」である場合に１面Ａ１、Ｂ１、Ｃ１、…を示し、この値が「ＦＦＨ」である場合に２面Ａ２、Ｂ２、Ｃ２、…を示す。
【００３０】
すなわちＩＣカード４のＣＰＵ３１は、例えば読み出した選択面フラグＡＦの値が「００Ｈ」であれば、データ領域Ａの１面Ａ１を選択し、この値が、「ＦＦＨ」であれば、データ領域Ａの２面Ａ２を選択する。
【００３１】
またチェックサムＣＳは、ステータス領域ＳＡ内の選択面フラグＡＦ、ＢＦ、ＣＦ、…の合計値であり、当該選択面フラグＡＦ、ＢＦ、ＣＦ、…の更新時に毎回計算されて、更新した選択面フラグＡＦ、ＢＦ、ＣＦ、…と共にステータス領域ＳＡに書き込まれて記憶される。そして、このチェックサムＣＳと実際に計算した合計値とが一致すれば、ステータス領域ＳＡに記憶されている選択面フラグＡＦ、ＢＦ、ＣＦ、…の値が正常であることを示し、一致しなければ、ステータス領域ＳＡに記憶されている選択面フラグＡＦ、ＢＦ、ＣＦ、…の値が異常であることを示す。
【００３２】
（１−２−２）データ領域の構成
続いてデータ領域Ａ、Ｂ、Ｃ、…の構成について詳述する。なお、本実施の形態におけるデータ領域Ａ、Ｂ、Ｃ、…の構成は全て同一であるので、ここではデータ領域Ａについて説明し、データ領域Ｂ、Ｃ、…についての説明は省略する。
【００３３】
図４に示すようにデータ領域Ａは、同様の構成でなる１面Ａ１及び２面Ａ２に分割されており、１面Ａ１の先頭からデータＤＡ１が格納され、その後にカウンタＣＡ１が格納され、最後に１面Ａ１に対する誤り検出のためのチェックサムＣＳＡ１が格納される。また同様に２面Ａ２の先頭からデータＤＡ２が格納され、その後にカウンタＣＡ２が格納され、最後に２面Ａ２に対する誤り検出のためのチェックサムＣＳＡ２が格納される。なお、以降の説明においては、データＤＡ１とカウンタＣＡ１とチェックサムＣＳＡ１とをまとめて１面Ａ１のデータとも呼び、またデータＤＡ２とカウンタＣＡ２とチェックサムＣＳＡ２とをまとめて２面Ａ２のデータとも呼ぶ。
【００３４】
このカウンタＣＡ１及びＣＡ２は、データＤＡ１とデータＤＡ２とに記憶されているデータのどちらが新しいデータであるのかを示す値であり、データを更新する毎に、１ずつインクリメントされる。例えば１面Ａ１のデータを更新して、２面Ａ２に書き込む場合には、１面Ａ１のカウンタＣＡ１に１インクリメントした値をカウンタＣＡ２の値として、２面Ａ２に書き込む。この結果、このときのカウンタＣＡ２の値は、カウンタＣＡ１の値＋１となるので、２面Ａ２に記憶されているデータが新しいデータであると認識できる。
【００３５】
（２）データ更新処理
次に、データ領域Ａ、Ｂ、Ｃ、…におけるデータの更新処理の手順について、図５のフローチャートを用いて詳細に説明する。なお、ここでは一例として、データ領域Ａのデータ（１面Ａ１のデータ、及び２面Ａ２のデータ）を更新する際の手順を述べる。
【００３６】
ＩＣカード４のＣＰＵ３１は、例えば外部からデータ領域Ａに対するデータ更新命令を受け付けると、データ更新処理手順ＲＴ１を開始してステップＳＰ１に移る。
【００３７】
ステップＳＰ１においてＣＰＵ３１は、ステータス領域ＳＡのデータを読み出して、選択面フラグＡＦを参照することによりデータ領域Ａの選択面を認識し、次のステップＳＰ２に移る。なお、ここでは一例として参照した選択面フラグＡＦの値が「００Ｈ」であり、１面Ａ１を選択面として認識したものとする。
【００３８】
ステップＳＰ２においてＣＰＵ３１は、データ領域Ａの選択面として認識した１面Ａ１のデータ（データＤＡ１、カウンタＣＡ１、及びチェックサムＣＳＡ１）を読み出してＲＡＭ３３上にコピーし、次のステップＳＰ３に移る。
【００３９】
ステップＳＰ３においてＣＰＵ３１は、ＲＡＭ３３上にコピーした１面Ａ１のデータＤＡ１を編集すると共に、カウンタＣＡ１を１インクリメントし、さらにデータＤＡ１及びカウンタＣＡ１をもとにチェックサムＣＳＡ１を再計算して次のステップＳＰ４に移る。
【００４０】
ステップＳＰ４においてＣＰＵ３１は、ＲＡＭ３３上で編集したデータＤＡ１と、１インクリメントしたカウンタＣＡ１と、再計算したチェックサムＣＳＡ１とを、それぞれ２面Ａ２のデータＤＡ２、カウンタＣＡ２、及びチェックサムＣＳＡ２としてＥＥＰＲＯＭ３５に供給して２面Ａ２に書き込ませ、次のステップＳＰ５に移る。
【００４１】
ステップＳＰ５においてＣＰＵ３１は、２面Ａ２に対するデータ（データＤＡ２、カウンタＣＡ２、及びチェックサムＣＳＡ２）の記憶が保証されるまでのウェイト時間待機する。すなわち２面Ａ２に対するデータの書込処理はこのステップＳＰ４とステップＳＰ５とを経た時点で正常に終了したことになり、このとき２面２Ａに対して正常にデータが記憶されたことを保証できる。このようにしてウェイト時間待機後、ＣＰＵ３１は、次のステップＳＰ６に移る。
【００４２】
ステップＳＰ６においてＣＰＵ３１は、ステータス領域ＳＡのデータを読み出してＲＡＭ３３上にコピーし、次のステップＳＰ７に移る。
【００４３】
ステップＳＰ７においてＣＰＵ３１は、ＲＡＭ３３上にコピーしたステータス領域ＳＡの選択面フラグＡＦの値を「００Ｈ」から「ＦＦＨ」に編集すると共に、編集した選択面フラグＡＦと、選択面フラグＢＦ、ＣＦ、…とをもとにチェックサムＣＳを再計算して次のステップＳＰ８に移る。
【００４４】
ステップＳＰ８においてＣＰＵ３１は、ＲＡＭ３３上で編集した選択面フラグＡＦと、選択面フラグＢＦ、ＣＦ、…と、再計算したチェックサムＣＳとを、ＥＥＰＲＯＭ３５に供給してステータス領域ＳＡに書き込ませ、次のステップＳＰ９に移る。
【００４５】
ステップＳＰ９においてＣＰＵ３１は、ステータス領域ＳＡに対するウェイト時間待機する。すなわちステータス領域ＳＡに対するデータの書込処理も、このステップＳＰ８とステップＳＰ９とを経た時点で正常に終了したことになり、このときステータス領域ＳＡに対して正常にデータが記憶されたことを保証できる。このようにしてウェイト時間待機後、ＣＰＵ３１は、次のステップＳＰ１０に移り、このデータ更新処理を終了する。
【００４６】
このようにこのデータ更新処理においては、データ領域Ａの２面Ａ２に更新後のデータを供給した後、ウェイト時間待機してから、更新後のデータを２面Ａ２に記憶させたことを示す選択面フラグＡＦをステータス領域ＳＡに記憶させるようにした。これによりステータス領域ＳＡのチェックサムＣＳが正しければ、選択面フラグＡＦから選択面が２面Ａ２であると判定し得ると共に、この２面Ａ２に対して正常にデータが記憶されたことを保証できる。一方、ステータス領域ＳＡのチェックサムＣＳが正しくなければ、ステータス領域ＳＡに対するデータの書込途中でデータ更新処理が中断したことを意味し、選択面フラグＡＦからデータ領域Ａの選択面を判定することはできないが、その場合の対策については後述する。
【００４７】
（３）選択面判定処理
上述したように非接触型のＩＣカード４においては、ＥＥＰＲＯＭ３５に対するデータ更新処理の途中で、電磁波の受信状態が悪化すること等により電源が瞬断される状況が想定し得、例えばステータス領域ＳＡやデータ領域Ａ、Ｂ、Ｃ、…の各面に対する書込処理の途中でデータ更新処理が中断された場合、ステータス領域ＳＡのデータやデータ領域Ａ、Ｂ、Ｃ、…の各面のデータが破壊される恐れがある。
【００４８】
特にステータス領域ＳＡのデータが破壊された場合、上述したように、選択面フラグＡＦ、ＢＦ、ＣＦ、…からはデータ領域Ａ、Ｂ、Ｃ、…それぞれの選択面を判定することができなくなる。
【００４９】
そこで本実施の形態のＩＣカード４においては、電源投入時に、毎回ステータス領域ＳＡ及びデータ領域Ａ、Ｂ、Ｃ、…の各面の状態を調べ、これらの状態に応じて、データ領域Ａ、Ｂ、Ｃ、…それぞれの選択面を判定する選択面判定機能を有しており、以下、この選択面判定機能における処理（以下、これを選択面判定処理とも呼ぶ）の流れについて図６のフローチャートを用いて説明する。
【００５０】
ＩＣカード４のＣＰＵ３１は、例えば電源が投入されると、この選択面判定処理手順ＲＴ２を開始してステップＳＰ２０に移る。ステップＳＰ２０においてＣＰＵ３１は、ステータス領域ＳＡ及びデータ領域Ａ、Ｂ、Ｃ、…の各面の状態を調べる。なお、ここでは、説明の便宜上、ステータス領域ＳＡとデータ領域Ａの１面Ａ１及び２面Ａ２の状態とを調べる場合を一例として説明する。
【００５１】
すなわちＣＰＵ３１は、このステップＳＰ２０において、ステータス領域ＳＡの状態として選択面フラグＡＦ、ＢＦ、ＣＦ、…の値とチェックサムＣＳとを調べ、またデータ領域Ａの１面Ａ１及び２面Ａ２の状態としてデータＤＡ１及びＤＡ２の値とチェックサムＣＳＡ１及びＣＳＡ２とを調べる。
【００５２】
そしてＣＰＵ３１は、選択面フラグＡＦ、ＢＦ、ＣＦ、…の値が全て「０」である場合（すなわちまだ何も記憶されていない状態）、及びステータス領域ＳＡのチェックサムＣＳが正しい場合に、このステータス領域ＳＡの状態を「有効」とし、このチェックサムＣＳが正しくない場合に、このステータス領域ＳＡの状態を「破壊」とする。
【００５３】
またＣＰＵ３１は、１面Ａ１のデータＤＡ１の値が全て「０」である場合（すなわちまだ何も記憶されていない状態）に１面Ａ１の状態を「未定義」とし、１面Ａ１のデータＤＡ１の値に「０」以外の値が存在し、かつチェックサムＣＳＡ１が正しい場合に１面Ａ１の状態を「有効」とし、チェックサムＣＳＡ１が正しくない場合に１面Ａ１の状態を「破壊」とする。さらにＣＰＵ３１は、２面Ａ２の状態（「未定義」、「有効」、「破壊」）も１面Ａ１と同様に調べる。
【００５４】
このようにしてこのステップＳＰ２０でステータス領域ＳＡとデータ領域Ａの１面Ａ１及び２面Ａ２の状態を調べた後、ＣＰＵ３１は、次のステップＳＰ２１に移る。
【００５５】
ステップＳＰ２１においてＣＰＵ３１は、ステータス領域ＳＡの状態が「破壊」であるか否かを判定する。ここで肯定結果を得ると、このことは、ステータス領域ＳＡのデータが破壊されていることを表しており、このときＣＰＵ３１はステップＳＰ２２に移る。
【００５６】
ステップＳＰ２２においてＣＰＵ３１は、データ領域Ａの１面Ａ１及び２面Ａ２のうち少なくともどちらか一方の状態が「破壊」であるか否かを判定する。ここで肯定結果を得ると、このことはステータス領域ＳＡのデータが破壊され、かつデータ領域Ａのデータも破壊されていることを表しており、このときＣＰＵ３１はステップＳＰ２３に移る。
【００５７】
ステップＳＰ２３においてＣＰＵ３１は、ステータス領域ＳＡとデータ領域Ａの両方のデータが破壊されていることから、例えば単に上述のデータ更新処理が中断されたのではなく、ＥＥＰＲＯＭ３５の復旧が困難な状態であると判断して選択面を判定せずに、例えばこのことをリーダライタ３に通知し、ステップＳＰ２４に移ってこの選択面判定処理を終了する。因みに、このようにステータス領域ＳＡとデータ領域Ａの両方の状態が「破壊」である場合として想定されるのは、例えばデータが改竄された場合や、ＥＥＰＲＯＭ３５に対する書込回数が上限を超えて寿命に達している場合である。
【００５８】
これに対してステップＳＰ２２で否定結果を得ると、このことはデータ領域Ａの１面Ａ１及び２面Ａ２の状態がそれぞれ「有効」又は「未定義」のどちらかであること、すなわちステータス領域ＳＡのデータは破壊されているもののデータ領域Ａのデータは破壊されていないことを表しており、このときＣＰＵ３１はステップＳＰ２５に移る。
【００５９】
ステップＳＰ２５においてＣＰＵ３１は、１面Ａ１及び２面Ａ２の状態がどちらも「有効」であるか否かを判定する。ここで肯定結果を得ると、このことは、ステータス領域ＳＡのデータは破壊されているもののデータ領域Ａのデータは破壊されておらず、さらに１面Ａ１及び２面Ａ２のそれぞれに「０」以外の値を有するデータＤＡ１及びＤＡ２が正常に記憶され、カウンタＣＡ１及びＣＡ２が正常にインクリメントされていることを表しており、このときＣＰＵ３１はステップＳＰ２６に移る。因みに、このようにステータス領域ＳＡの状態が「破壊」であるものの、データ領域Ａの両面の状態が「有効」である場合として想定されるのは、例えばステータス領域ＳＡに対してデータを書き込んでいる途中で上述のデータ更新処理が電源の瞬断等により中断した場合である。
【００６０】
ステップＳＰ２６においてＣＰＵ３１は、１面Ａ１のカウンタＣＡ１と２面Ａ２のカウンタＣＡ２との値を比較し、この値が大きい方の面を選択面と判定して次のステップＳＰ２７に移る。
【００６１】
これに対してステップＳＰ２５で否定結果を得ると、このことはデータ領域Ａの１面Ａ１及び２面Ａ２の状態のうち少なくともどちらか一方が「未定義」であることを表しており、このときＣＰＵ３１はステップＳＰ２８に移る。
【００６２】
ステップＳＰ２８においてＣＰＵ３１は、１面Ａ１及び２面Ａ２の状態がどちらも「未定義」であるか否かを判定する。ここで肯定結果を得ると、このことは１面Ａ１及び２面Ａ２のどちらにもデータが記憶されていないことを表しており、このときＣＰＵ３１は、ステップＳＰ２９に移る。
【００６３】
ステップＳＰ２９においてＣＰＵ３１は、データ領域Ａのどちらか一方の面（例えば１面Ａ１）を選択面と判定し、次のステップＳＰ２７に移る。なお、ここでは一例として１面Ａ１を選択面と判定したが、２面Ａ２を選択面としてもよい。因みに、このようにステータス領域ＳＡの状態が「破壊」であるものの、データ領域Ａの両面の状態が「未定義」である場合として想定されるのは、例えばデータ領域ＢやＣに対するデータ更新処理が電源の瞬断等により中断した場合である。
【００６４】
これに対してステップＳＰ２８で否定結果を得ると、このことはデータ領域Ａの１面Ａ１及び２面Ａ２の状態の一方が「未定義」であり他方が「有効」であることを表しており、このときＣＰＵ３１はステップＳＰ３０に移る。因みに、このようにステータス領域ＳＡの状態が「破壊」であるものの、データ領域Ａの一方の面の状態が「有効」であり他方の面の状態が「未定義」である場合として想定されるのは、例えばステータス領域ＳＡに対してデータを書き込んでいる途中で上述のデータ更新処理が電源の瞬断等により中断した場合である。
【００６５】
ステップＳＰ３０においてＣＰＵ３１は、１面Ａ１及び２面Ａ２のうち状態が「有効」である方を選択面と判定して次のステップＳＰ２７に移る。
【００６６】
ステップＳＰ２７においてＣＰＵ３１は、選択面が１面Ａ１であるのかあるいは２面Ａ２であるのかに応じてステータス領域ＳＡの選択面フラグＡＦを編集すると共に、同様に判定したデータ領域Ｂ、Ｃ、…の選択面に応じて選択面フラグＢＦ、ＣＦ、…を編集し、チェックサムＣＳを再計算してステータス領域ＳＡのデータを修復し、次のステップＳＰ２４に移ってこの選択面判定処理を終了する。
【００６７】
このようにステップＳＰ２１で否定結果を得た場合（すなわちステータス領域ＳＡのデータが破壊されている場合）には、データ領域Ａのデータが破壊されていなければ、当該データ領域Ａの１面Ａ１及び２面Ａ２の状態に応じて選択面を判定すると共に、その判定結果に応じてステータス領域ＳＡのデータを修復するようになされている。
【００６８】
一方、ステップＳＰ２１で肯定結果を得ると、このことは、ステータス領域ＳＡのデータが破壊されていないことを表しており、このときＣＰＵ３１はステップＳＰ３１に移る。
【００６９】
ステップＳＰ３１においてＣＰＵ３１は、ステータス領域ＳＡの選択面フラグＡＦの値と、データ領域Ａの１面Ａ１及び２面Ａ２の状態とに応じて選択面を判定する。ここで、この場合の選択面の判定基準を図７の表に示す。
【００７０】
すなわち選択面フラグＡＦの値が「００Ｈ」であり選択面として１面Ａ１を示している場合、ＣＰＵ３１は、１面Ａ１の状態が「有効」又は「未定義」（ＣＡＳＥ１、２、３、７、８、９）であれば、選択面フラグＡＦの示す通り選択面を１面Ａ１と判定する。また１面Ａ１の状態が「破壊」（ＣＡＳＥ４、５、６）であれば、選択面フラグＡＦが１面Ａ１を示しているにもかかわらず１面Ａ１のデータが破壊されており、単にデータ更新処理が中断された場合であるとは考えにくいので、ＣＰＵ３１は選択面を判定せずに、例えばこのことをリーダライタ３に通知する。
【００７１】
またＣＰＵ３１は、選択面フラグＡＦの値が「ＦＦＨ」であり選択面として２面Ａ２を示している場合も、選択面フラグＡＦが１面Ａ１を示している場合と同様に、２面Ａ２の状態が「有効」又は「未定義」（ＣＡＳＥ１０、１２、１３、１５、１６、１８）であれば、選択面フラグＡＦの示す通り選択面を２面Ａ２と判定し、２面Ａ２の状態が「破壊」（ＣＡＳＥ１１、１４、１７）であれば、選択面を判定せずに、例えばこのことをリーダライタ３に通知する。
【００７２】
このようにしてＣＰＵ３１は、ステータス領域ＳＡの状態が「有効」である場合の選択面を判定した後、次のステップＳＰ２４に移ってこの選択面判定処理を終了する。
【００７３】
かくしてＣＰＵ３１は、電源の瞬断等により例えばステータス領域ＳＡの書込処理の途中でデータ更新処理が中断されて、ステータス領域ＳＡのデータが破壊されたとしても、残ったデータ領域Ａの１面Ａ１及び２面Ａ２のデータをもとに選択面を判定することができ、さらにこの判定結果をもとにステータス領域ＳＡのデータを復旧することもできる。
【００７４】
なお、ここではデータ領域Ａの１面Ａ１及び２面Ａ２に対するデータ更新処理及び選択面判定処理について述べたが、実際には、データ領域Ｂ、Ｃ、…に対しても、同様のデータ更新処理及び選択面判定処理を実行するようになされている。
【００７５】
ここで、実際に上述のデータ更新処理（図５）の途中で電源の瞬断等が起こることによりこのデータ更新処理が中断された場合について説明する。
【００７６】
まず図５に示したステップＳＰ１のステータス領域ＳＡのデータを読み出している途中で、データ更新処理が中断した場合、このときまだＥＥＰＲＯＭ３５に対する書込処理が開始されていないので、ステータス領域ＳＡ、及びデータ領域Ａのデータ破壊は起こらず、再度電源投入されたときに、データ更新処理実行前の状態に戻ることができる。
【００７７】
またステップＳＰ２のデータ領域Ａの１面Ａ１のデータを読み出している途中や、ステップＳＰ３のＲＡＭ３３上にコピーした１面Ａ１のデータの編集途中で、データ更新処理が中断した場合も、このときまだＥＥＰＲＯＭ３５に対する書込処理が開始されていないので、ステータス領域ＳＡ、及びデータ領域Ａのデータ破壊は起こらず、再度電源投入されたときに、データ更新処理実行前の状態に戻ることができる。
【００７８】
さらにステップＳＰ４のデータ領域Ａの２面Ａ２に対してデータを供給して書き込ませている途中で、データ更新処理が中断した場合、このとき２面Ａ２に記憶させたデータは破壊されている可能性があるものの、１面Ａ１及びステータス領域ＳＡにはデータ更新処理実行前のデータが保持されているので、例えば再度電源投入されたときに、選択面判定処理でステータス領域ＳＡの選択面フラグＡＦをもとに１面Ａ１を選択面と判定し得、これによりデータ更新処理実行前の状態に戻ることができる。
【００７９】
さらにステップＳＰ５の２面Ａ２のウェイト時間待機している途中で、データ更新処理が中断した場合、このとき２面Ａ２に対するデータの書込処理がまだ完全に終了していないため、例えば再度電源投入されたときに、最初から２面Ａ２のデータが破壊されている場合や、しばらくこのデータが正常に読み出せるもののその後このデータの値が変化して破壊される場合がある。しかしながらこの場合も、ステータス領域ＳＡにはデータ更新処理実行前のデータとして１面Ａ１を示す選択面フラグＡＦが保持されているので、再度電源投入されたときに、選択面判定処理でこの選択面フラグＡＦをもとに１面Ａ１を選択面と判定し得、これにより２面Ａ２のデータを使用せずに、データ更新処理実行前の状態に戻ることができる。
【００８０】
さらにステップＳＰ６のステータス領域ＳＡのデータを読み出している途中や、ステップＳＰ７でＲＡＭ３３上にコピーしたステータス領域ＳＡのデータの編集途中で、データ更新処理が中断した場合、このときＥＥＰＲＯＭ３５に対する書込処理は実行されていないので、ステータス領域ＳＡ、及びデータ領域Ａのデータ破壊は起こらない。そしてこのときステータス領域ＳＡには、データ更新処理実行前のデータとして１面Ａ１を示す選択面フラグＡＦが保持されているので、再度電源投入されたときに、選択面判定処理で１面Ａ１を選択面と判定し得、データ更新処理実行前の状態に戻ることができる。
【００８１】
さらにステップＳＰ８のステータス領域ＳＡに対してデータを供給して書き込ませている途中で、データ更新処理が中断した場合、このときステータス領域ＳＡに記憶させたデータは破壊されている可能性があるものの、データ領域Ａの１面Ａ１及び２面Ａ２には正常に記憶されたデータが保持されている。従って例えば再度電源投入されたときに、選択面判定処理で１面Ａ１及び２面Ａ２のカウンタＣＡ１及びＣＡ２の値をもとに選択面（この場合２面Ａ２）を判定し得、さらにこの判定結果をもとにステータス領域ＳＡのデータを修復することで、データ更新処理が正常に終了した状態と同じ状態にすることができる。
【００８２】
さらにステップＳＰ９のステータス領域ＳＡの書込ウェイト時間待機している途中で、データ更新処理が中断した場合、このときステータス領域ＳＡに対するデータの書込処理がまだ完全に終了していないため、例えば再度電源投入されたときに、最初からステータス領域ＳＡのデータが破壊されている場合や、しばらくこのデータが正常に読み出せるもののその後このデータの値が変化して破壊される場合がある。しかしながらステータス領域ＳＡのデータが正常に読み出せるときには、このステータス領域ＳＡの選択面フラグＡＦから選択面を判定し得、その後ステータス領域ＳＡのデータが破壊されたときには、１面Ａ１及び２面Ａ２のカウンタＣＡ１及びＣＡ２の値をもとに選択面（この場合２面Ａ２）を判定し得、さらにこの判定結果をもとにステータス領域ＳＡのデータを修復することで、データ更新処理が正常に終了した状態と同じ状態にすることができる。
【００８３】
このようにＣＰＵ３１は、データ更新処理が中断されることによりステータス領域ＳＡのデータやデータ領域Ａの各面のデータのいずれかが破壊されても、残ったデータをもとに、ＥＥＰＲＯＭ３５のデータを復旧させることができる。
【００８４】
（４）動作及び効果
以上の構成において、ＩＣカード４のＣＰＵ３１は、例えばデータ領域Ａの１面Ａ１のデータを更新する際、まずこの１面Ａ１のデータをＲＡＭ３３上に読み出して更新し、この更新したデータをデータ領域Ａの２面Ａ２に供給して書き込ませる。
【００８５】
そしてＣＰＵ３１は、２面Ａ２におけるウェイト時間待機した後、ステータス領域ＳＡのデータをＲＡＭ３３上に読み出して選択面フラグＡＦを、１面Ａ１を示す「００Ｈ」から２面Ａ２を示す「ＦＦＨ」に更新し、この更新したデータをステータス領域ＳＡに供給して書き込ませる。
【００８６】
このようにＣＰＵ３１は、データ領域Ａの２面Ａ２に更新したデータを供給した後、ウェイト時間待機してデータを完全に記憶させてから、この更新したデータを２面Ａ２に正常に記憶させたことを示す選択面フラグＡＦをステータス領域ＳＡに書き込むようにした。これによりステータス領域ＳＡのデータが破壊されていなければ、選択面フラグＡＦの示す２面Ａ２が、更新したデータが正常に記憶されている面であると保証し得る。
【００８７】
またＣＰＵ３１は、例えば電源投入時、ステータス領域ＳＡの状態と、データ領域Ａの１面Ａ１及び２面Ａ２の状態とを調べる。つまりＣＰＵ３１は、ステータス領域ＳＡの選択面フラグＡＦ、ＢＦ、ＣＦ、…の値が全て「０」である場合及びステータス領域ＳＡのチェックサムＣＳが正しい場合に、このステータス領域ＳＡの状態を「有効」とし、このチェックサムＣＳが正しくない場合に、このステータス領域ＳＡの状態を「破壊」とする。またＣＰＵ３１は、１面Ａ１のデータＤＡ１の値が全て「０」である場合に１面Ａ１の状態を「未定義」とし、１面Ａ１のデータＤＡ１の値に「０」以外の値が存在しかつチェックサムＣＳＡ１が正しい場合に１面Ａ１の状態を「有効」とし、チェックサムＣＳＡ１が正しくない場合に１面Ａ１の状態を「破壊」とする。さらにＣＰＵ３１は、同様に２面Ａ２の状態（「未定義」、「有効」、「破壊」）も調べる。
【００８８】
そしてＣＰＵ３１は、これらの状態に応じて１面Ａ１及び２面Ａ２のどちらが、更新したデータが正常に記憶されている面（すなわち選択面）であるのかを判定する。
【００８９】
これによりＣＰＵ３１は、電源の瞬断等により例えばステータス領域ＳＡの書込処理の途中でデータ更新処理が中断されて、ステータス領域ＳＡのデータが破壊されたとしても、残ったデータ領域Ａの１面Ａ１及び２面Ａ２の状態をもとに選択面を判定することができ、さらにこの判定結果をもとにステータス領域ＳＡのデータを復旧することもできる。
【００９０】
以上の構成によれば、ＩＣカード４のＣＰＵ３１は、データ領域Ａの１面Ａ１又は２面Ａ２に対して更新後のデータを供給した後、ウェイト時間待機してデータを完全に記憶させてから、１面Ａ１又は２面Ａ２のどちらに更新後のデータを記憶させたのかを判定するための選択面フラグＡＦをステータス領域ＳＡに書き込むようにしたことにより、この選択面フラグＡＦの示す面に記憶されているデータが、正常に記憶されている更新後のデータであると保証し得るので、常に正常に記憶されている新しいデータを用いることができ、かくしてデータの整合性を一段と確実に維持することができる。
【００９１】
（５）他の実施の形態
なお上述の実施の形態においては、不揮発性メモリとしてＥＥＰＲＯＭ１５及び３５を用いるようにした場合について述べたが、本発明はこれに限らず、フラッシュメモリや、ＭＲＡＭ（Magnetic RAM）、ＦｅＲＡＭ（Ferroelectric RAM）等、この他種々の不揮発性メモリを用いるようにしてもよい。
【００９２】
また上述の実施の形態においては、ＥＥＰＲＯＭ１５及び３５を有するリーダライタ３及びＩＣカード４に本発明を適用するようにした場合について述べたが、本発明はこれに限らず、不揮発性メモリを有する種々の装置（例えば携帯電話機や、ノートブック型パーソナルコンピュータ、ＰＤＡ等）や、ＩＣチップ等に適用するようにしてもよい。
【００９３】
さらに上述の実施の形態においては、ステータス領域ＳＡと、データ領域Ａ、Ｂ、Ｃ、…それぞれの各面に１ページずつ割り当てた場合について述べたが、本発明はこれに限らず、これらに複数のページを割り当てるようにしてもよい。
【００９４】
さらに上述の実施の形態においては、ステータス領域ＳＡに第１の判定データとしての選択面フラグＡＦ、ＢＦ、ＣＦ、…を書き込んで記憶させるようにした場合について述べたが、本発明はこれに限らず、各データ領域のどちらの面を選択面とするのかを示すデータであればよい。
【００９５】
さらに上述の実施の形態においては、ステータス領域ＳＡに書き込まれたデータや、データ領域Ａ、Ｂ、Ｃ、…の各面に書き込まれたデータの誤りを検出するための誤り検出データとしてチェックサムを用いるようにした場合について述べたが、本発明はこれに限らず、ＣＲＣやハッシュ関数等、この他種々の誤り検出データを用いるようにしてもよい。
【００９６】
さらに上述の実施の形態においては、データ領域Ａの１面Ａ１及び２面Ａ２に第２の判定データとしてのカウンタＣＡ１及びカウンタＣＡ２を書き込んで記憶させるようにした場合について述べたが、本発明はこれに限らず、各データ領域のどちらの面を選択面とするのかを示すデータであればよい。
【００９７】
さらに上述の実施の形態においては、電源投入時に選択面判定処理を実行するようにした場合について述べたが、本発明はこれに限らず、例えば、データ更新処理の実行前に毎回選択面判定処理を実行するようにしてもよい。
【００９８】
さらに上述の実施の形態においては、第１の記憶領域としての１面Ａ１、Ｂ１、Ｃ１、…、第２の記憶領域としての２面Ａ２、Ｂ２、Ｃ２、…、及び第３の記憶領域としてのステータス領域ＳＡを有する記憶部としてのＥＥＰＲＯＭ３５や、記憶制御手段、判定手段及び修復手段としてのＣＰＵ３１により半導体集積回路としてのＩＣチップ３０を構成するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成を用いるようにしてもよい。
【００９９】
さらに上述の実施の形態においては、外部装置としてのリーダライタ３と通信する通信手段としてのリーダライタ通信部３８や、第１の記憶領域としての１面Ａ１、Ｂ１、Ｃ１、…、第２の記憶領域としての２面Ａ２、Ｂ２、Ｃ２、…、及び第３の記憶領域としてのステータス領域ＳＡを有する記憶部としてのＥＥＰＲＯＭ３５や、記憶制御手段、判定手段及び修復手段としてのＣＰＵ３１によりデータ通信装置としてのＩＣカード４を構成するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成を用いるようにしてもよい。
【０１００】
さらに本発明はデータ通信装置としてのリーダライタ３にも適用できるので、この場合、外部装置としてのコントローラ２やＩＣカード４と通信する通信手段としてコントローラ通信部１９及びＩＣカード通信部２０を用いると共に、半導体集積回路としてのＩＣチップ１０内に設けられた第１の記憶領域としての１面Ａ１、Ｂ１、Ｃ１、…、第２の記憶領域としての２面Ａ２、Ｂ２、Ｃ２、…、及び第３の記憶領域としてのステータス領域ＳＡを有する記憶部としてＥＥＰＲＯＭ１５を用い、記憶制御手段、判定手段及び修復手段としてＣＰＵ１１を用いるようにしてもよく、またこの他種々の構成を用いるようにしてもよい。
【産業上の利用可能性】
【０１０１】
本発明は、複数の記憶領域を用いてデータの書き替えを行うデータ記憶装置において広く利用できる。
【図面の簡単な説明】
【０１０２】
【図１】本発明によるデータ通信システムの構成を示す略線図である。
【図２】ＥＥＰＲＯＭのメモリマップ構成を示す略線図である。
【図３】ステータス領域の構成を示す略線図である。
【図４】データ領域の構成を示す略線図である。
【図５】データ更新処理手順を示すフローチャートである。
【図６】選択面判定処理手順を示すフローチャートである。
【図７】選択面の判定基準を示す略線図である。
【符号の説明】
【０１０３】
１……データ通信システム、２……コントローラ、３……リーダライタ、４……ＩＣカード、１０、３０……ＩＣチップ、１１、３１……ＣＰＵ、１２、３２……ＲＯＭ、１３、３３……ＲＡＭ、１５、３５……ＥＥＰＲＯＭ、Ａ、Ｂ、Ｃ……データ領域、Ａ１、Ｂ１、Ｃ１……１面、Ａ２、Ｂ２、Ｃ２……２面、ＡＦ、ＢＦ、ＣＦ……選択面フラグ、ＣＡ１、ＣＡ２……カウンタ、ＣＳ、ＣＳＡ１、ＣＳＡ２……チェックサム、ＤＡ１、ＤＡ２……データ、ＳＡ……ステータス領域。
【図１】
2006031276.tif 000003
【図２】
2006031276.tif 000004
【図３】
2006031276.tif 000005
【図４】
2006031276.tif 000006
【図５】
2006031276.tif 000007
【図６】
2006031276.tif 000008
【図７】
2006031276.tif 000009