(57)【特許請求の範囲】
【請求項１】
外部との信号の授受を非接触で行う送受信手段を持ち、内部装置の電力を外部から非接触で供給を受ける手段と外部からのデータを記憶するメモリとメモリの制御を行う制御手段を持ち、データの書き換え時に、書き換えの失敗に対応するために、前記メモリにデータ領域とバッファ領域を設け、外部より送られたデータをバッファ領域に書いてから、データ領域に書き込む機能を持ち、起動時にメモリブロックをチェックし異常があった場合は、代替ブロックのデータによりデータを修復する機能を設けることを特徴とするＩＣカード装置。
【請求項２】
請求項１記載のカードに於いて、記憶処理の書き換え回数を記憶する機能を設けたことを特徴とする非接触ＩＣカード装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
非接触ＩＣカードのデータの信頼性と保護の技術に関する。
【０００２】
【従来の技術】
ＩＣカードには、磁気結合、又は容量結合等により、接触端子を持たずに信号の送受信や電力の供給を受ける非接触ＩＣカードが知られている。しかし、非接触ＩＣカードでは、カードとリーダライタのコンタクトの状態が一定に定まらないため、データの送受や電力の供給が不安定になることがある。そのため、たとえば、カードにデータを書き込んでいる途中に、カードとリーダライタの距離が広がり、電力の供給が中断されると、メモリに記憶されるデータが不完全なものになる。この対策として、データ書き換え中の中断に伴うデータの破損に対応するために、メモリを二つないし複数のブロックに分け、交互に書き込みを行う方法が特開平４−３４４９９３に述べられている。
【０００３】
【発明が解決しようとする課題】
この方式では、同じ部分のデータを複数持つために、本来のデータを格納するために必要なメモリ容量の倍以上のメモリが必要になりコストがかかる。
【０００４】
【課題を解決するための手段】
ＥＥＰＲＯＭは、ブロック単位でメモリの書き換えを行うようになっている。そこで、本発明では、データ書き換え時のデータ退避用として複数のメモリブロックをバッファメモリブロックとして設けるようにした。（データを記憶するメモリ領域をデータメモリブロックと呼ぶ）、バッファメモリブロックを指定する手段とメモリブロックをチェックする手段と修正する手段を設けるようにした。
【０００５】
また、バッファメモリブロックには、データメモリブロックのデータを退避するさいに、併せてデータメモリブロックのアドレスも記憶するようにした。これにより、書き換えるデータメモリブロックが破損した場合には、事前に代替ブロックに退避したデータによって復旧する事が出来るようにし、起動時にカードのデータ領域の不良を修正する事が出来るようにした。
【０００６】
【発明の実施の形態】
以下、図面に従い本発明の実施の形態について説明する。
【０００７】
図１は、非接触カードの構成図である。本カードは、データを記憶するため電源が切れてもデータを失わないＥＥＰＲＯＭ等のメモリ４０を持ち、これは、内部でデータ領域４１とバッファ領域４５に分割される。ＥＥＰＲＯＭは、メモリをブロック単位でデータの書き換えを行うようになっており、バッファ領域４５はバッファ指定部５０により指定されるメモリ４０内の複数のメモリブロックとして構成される。バッファ領域４５は、データ書き換え前に、書き換えるデータ領域４１のメモリブロックのデータをバッファ領域４５に書き込むようにし、データ領域４１にデータが書き込み途中で処理が中断されデータメモリブロックの内容が破壊された場合には、バッファメモリブロックの内容をデータメモリブロックに戻すことにより、データの損失による処理の停止を防ぐようにしている。
【０００８】
メモリ制御部３０は、コイル１０からのデータを変復調部２０を等して送られてきたリーダライタからのコマンドに従ってメモリ４０に対して、データの読み出し、書き込み等を行う。バッファ指定部５０では、データのバッファを行うバッファメモリブロックを指定し、これに基づきメモリ制御部３０がバッファメモリブロックのリードライトを行う。電源回路６０は外部からの電磁誘導によるコイル７０からの誘導起電力により、ＩＣカードの回路に電力を供給している。
【０００９】
図２はデータ領域４１のメモリブロックのデータの構成図であり、図３は、バッファ領域４５のメモリブロックの構成図である。
【００１０】
データ領域４１は、メモリブロック単位で構成され、データの記憶されるデータ部と、データ書き換え回数を記憶する回数記憶部と書き込みエラーをチェックするチェックコード部から構成されている。本実施例では、４１０、４１１、４１２、４１３、．．．ｎというメモリブロックから構成される。
【００１１】
バッファ領域４５は、メモリブロック単位で構成され、データの記憶されるデータ部と、退避したエリアのデータ書き換え回数を記憶する回数記憶部と退避したデータエリアのアドレスを示すエリア番号部から構成されている。本実施例では、バッファメモリブロックは４５１、４５２、４５３、４５４の４つのメモリブロックによりバッファ領域４５を構成している。
【００１２】
このような構成によりバッファ４５領域のバッファメモリブロック毎に、バッファメモリブロックのエリア番号領域の示す退避したデータメモリブロックをチェックコードによってエラーチェックすることにより、書き込みエラーがあったかどうか分かる。エラーがあった場合、バッファメモリブロックのデータを該当データブロックにコピーし、チェックコードを作成しチェックコード領域に書き込み、書き込み回数を更新しデータメモリブロックに書き込む。データの損失を防ぐことが出来る。
【００１３】
例えば、バッファ４５１のエリア部を見ることにより、メモリブロック４１０のデータのバッファとして４５１が使用使用されていることが分かる。続いてメモリブロック４１０のデータ部のデータの良否をチェックコード部のコードにより判定することが出来る。このとき、データが正しいのならそのまま使用すればよく、データの不良の場合は、４５１のデータからエラーコードを生成し、書き込み回数を更新し、４５１のデータを４１０に書き込むことにより、書き込み失敗前の正常なデータを復帰できる。反対にバッファのデータが異常な場合は、エリア番号が正常でない範囲の値をとることにより分かるのだが、この場合は、４５１へのデータ書き込み中に何らかの異常が発生したためで、４１０の書き込み中では無いため、４１０のデータは異常がないはずであり、データ領域の読み出しは、問題なく処理できる。
【００１４】
図４、５、６、７、８は、ＩＣカードの処理の流れを示すフローチャートである。以下にフローチャートにより処理の流れを説明する。
【００１５】
まず、起動後処理８００で、バッファ指定部５０からアドレスが通知されるバッファメモリブロック４５１から、エリア番号領域を読み出し、データを退避したデータメモリブロックのデータをチェックする。エリア番号が設定した、データメモリエリアの範囲外の場合、サブルーチン８０１に移る。サブルーチン８０１では、処理８１１でバッファのデータを初期化し、処理８１２でバッファが正しく初期化されたか判定する。正しく初期化された場合サブルーチンから復帰する。初期化が上手く行かない場合は、処理８１３でバッファメモリブロックの不良を送信し復帰する。
【００１６】
処理８００でバッファのエリア番号が存在するデータメモリブロックを示していた場合はサブルーチン８０２に移る。
【００１７】
サブルーチン８０２では、処理８２１でバッファのエリア番号が示すデータメモリブロックのデータ領域をエラーチェックコードにより調べ、正常な場合はサブルーチンから復帰する。エラーチェックコードがおかしい場合には、処理８２２でバッファメモリブロックのデータ領域の内容とデータ領域のデータからチェックコードを作成し、書き込み回数を更新してバッファメモリブロックのエリア領域が示すデータメモリブロックに書き込む、処理８２３で、データメモリブロックに正常に書き込まれたかチェックする。正常に書き込まれた場合はサブルーチンから復帰する。正常に書き込むことが出来なかった場合には、処理８２４で該当データメモリブロックに書き込めなかった旨送信したのち、サブルーチンから復帰する。
【００１８】
以下、処理８００でバッファメモリブロック４５１に対するチェックと同様に、処理８０３、８０４、８０５でそれぞれバッファメモリブロック４５２、４５３、４５４に対してメモリのチェックと修復を行う。
【００１９】
上述の処理の終了後、処理８０８でバッファのチェックが終了した旨リーダライタに送信し、処理８０６に移る。処理８０６では、リーダライタ側からのコマンドをまち、コマンドが来たら処理０８７に移る。
【００２０】
処理８０７では、コマンドに対応した、処理へそれぞれ分岐する。読み出しの場合は、処理８３１移り、コマンドにより指定されたデータメモリブロックのデータを読み出し送信する。その後、処理８０６へ移り次のコマンドを待つ。
【００２１】
書き込み命令の場合は、処理８４１でコマンドに指定されたデータメモリブロックの内容をバッファ指定部５０により指定されるバッファメモリブロックにコピーする。このとき、エラーチェックコードのかわりに、データメモリブロックを指定するコードを書き込む。このコードを見れば、どこのデータメモリブロックのデータを退避したのかわかり、データメモリブロックの内容が壊れていた場合復帰できるわけである。データメモリブロックの内容を退避するバッファエリアの指定を本実施例では、書き込み回数とエリア番号の和をバッファの数で割った余りの数で行うようにしている。これは、データメモリブロックに依存したバッファの指定を行うと特定のバッファの書き込み回数が多くなり、メモリブロックの書き換え寿命が早く来るのを防ぐためである。処理８２３でバッファメモリブロックにデータが正しく退避できたか判定する。正しく退避できた場合は処理８４３で、書き込み更新回数を更新し、受信したデータをデータメモリブロックに書き込み、エラーチェックコードを書き込む。その後、処理８０６へ移り次のコマンドを待つ。
【００２２】
処理８０９は今回は説明しないが、データのリードライトの以外のコマンドの処理を行うサブルーチン群の存在を意味していて例えば、カードの寿命を知るために、書き換え回数を求めたりバッファとして指定するメモリブロックを変更を行ったりする処理を示している
また、本実施例ではバッファを切り換えるデータの単位として、メモリブロックを単位として行ったが、複数のメモリブロックをまとめて一単位とデータ書き換え用のバッファとするようにしてもよい。
【００２３】
また、本実施例では書き換えられるデータを事前にバッファ領域に記憶するようにしたが、書き込むデータを事前にバッファ領域に書き込んだ後、データ領域に書き込むようにしても、同様にデータの書き込みエラーに対応できデータ信頼性をあげることが出来る。
【００２４】
【発明の効果】
本発明の非接触ＩＣカードによれば、メモリがデータ領域とバッファ領域に分けられ、外部から送られてきたデータがデータ領域に書き込まれる前に、書き換えられるデータをメモリのバッファ領域に退避するために、書き込まれたデータが不良の場合でも、バッファに退避したデータによりデータ領域のデータを復元できるため、データの書き込みに以上があった場合でもデータの読み出しが不能になることがない。そのため、不良データの書き込みや、データの欠落に対しても、データを読み出して所定の処理が出来るようになる。さらに、データ領域をバッファの構成単位で書き換えるために、必要とするバッファ領域は、データ領域に比べ十分に少ない領域を確保することで実施出来るためメモリ容量が節約でき低コストで信頼性の高い非接触ＩＣカード装置が提供できる。
【図面の簡単な説明】
【図１】装置の構成図。
【図２】データ領域のメモリブロックのデータの構成を示す図。
【図３】バッファ領域のメモリブロックのバッファの構成を示す図。
【図４】非接触ＩＣカードの動作を示すフローチャート。
【図５】非接触ＩＣカードの動作を示すフローチャート。
【図６】非接触ＩＣカードの動作を示すフローチャート。
【図７】非接触ＩＣカードの動作を示すフローチャート。
【図８】非接触ＩＣカードの動作を示すフローチャート。
【図９】非接触ＩＣカードの動作を示すフローチャート。
【符号の説明】
１０データ伝送用コイル
２０データ変復調部
３０メモリ制御部
４０メモリ
４１データ領域
４５バッファ領域
４１１、４１２、４１３、４１４  データメモリブロック
４５１、４５２、４５３、４５４バッファメモリブロック。
【図１】
0003593818.tif 000002
【図２】
0003593818.tif 000003
【図３】
0003593818.tif 000004
【図４】
0003593818.tif 000005
【図５】
0003593818.tif 000006
【図６】
0003593818.tif 000007
【図７】
0003593818.tif 000008
【図８】
0003593818.tif 000009
【図９】
0003593818.tif 000010