(57)【特許請求の範囲】
【請求項１】
データを記憶する第１のメモリと、
復元アドレスと復元データとを対応付けてメモリ保障データとして記憶する第２のメモリと、
外部機器から送信された書込みコマンドを受信する受信部と、
前記書込みコマンドからアドレス及び書込みデータを取得し、前記アドレスと、前記書込みデータのデータサイズと、に基づいて前記第１のメモリ上の領域を特定し、特定された前記領域のデータを復元データとして前記第２のメモリに記憶し、前記アドレスを復元アドレスとして前記第２のメモリに記憶する制御部と、
特定された前記第１のメモリ上の前記領域に前記書込みデータを書込む書込み処理部と、
レスポンスを前記外部機器に送信する送信部と、
を具備し、
前記制御部は、前記外部機器から前記第２のメモリの容量を問い合わせるコマンドを受信した場合、前記第２のメモリの容量を確認し、前記第２のメモリの容量に基づいて前記レスポンスを生成する携帯可能電子装置。
【請求項２】
データを記憶する第１のメモリと、
復元アドレスと復元データとを対応付けてメモリ保障データとして記憶する第２のメモリと、
外部機器から送信された書込みコマンドを受信する受信部と、
前記書込みコマンドからアドレス及び書込みデータを取得し、前記アドレスと、前記書込みデータのデータサイズと、に基づいて前記第１のメモリ上の領域を特定し、特定された前記領域のデータを復元データとして前記第２のメモリに記憶し、前記アドレスを復元アドレスとして前記第２のメモリに記憶する制御部と、
特定された前記第１のメモリ上の前記領域に前記書込みデータを書込む書込み処理部と、
レスポンスを前記外部機器に送信する送信部と、
を具備し、
前記制御部は、前記第２のメモリの容量が前記書込みデータのデータサイズ未満である場合、エラーを示す前記レスポンスを生成する携帯可能電子装置。
【請求項３】
前記第２のメモリは、異なる復元アドレス毎に前記メモリ保障データを記憶する、請求項１または２に記載の携帯可能電子装置。
【請求項４】
前記制御部は、当該携帯可能電子装置の起動時に前記第２のメモリに前記メモリ保障データが存在する場合、前記メモリ保障データの前記復元アドレスに基づいて前記第１のメモリ上の位置を特定し、特定された位置に前記メモリ保障データの前記復元データを書き込む、請求項１または２に記載の携帯可能電子装置。
【請求項５】
前記受信部は、前記外部機器から開始を示す情報と、終了を示す情報とを受信し、
前記制御部は、前記受信部により前記開始を示す情報を受信してから、前記終了を示す情報を受信するまでの間、前記復元データ及び前記復元アドレスを前記第２のメモリに記憶する、請求項１または２に記載の携帯可能電子装置。
【請求項６】
前記制御部は、前記受信部により前記終了を示す情報を受信した場合、前記第２のメモリにより記憶されている前記メモリ保障データを削除する、請求項５に記載の携帯可能電子装置。
【請求項７】
データを記憶する第１のメモリと、復元アドレスと復元データとを対応付けてメモリ保障データとして記憶する第２のメモリと、外部機器から送信された書込みコマンドを受信する受信部と、前記書込みコマンドからアドレス及び書込みデータを取得し、前記アドレスと、前記書込みデータのデータサイズと、に基づいて前記第１のメモリ上の領域を特定し、特定された前記領域のデータを復元データとして前記第２のメモリに記憶し、前記アドレスを復元アドレスとして前記第２のメモリに記憶する制御部と、特定された前記第１のメモリ上の前記領域に前記書込みデータを書込む書込み処理部と、レスポンスを前記外部機器に送信する送信部と、を備えるＩＣモジュールと、
前記ＩＣモジュールが配設される本体と、
を具備し、
前記制御部は、前記外部機器から前記第２のメモリの容量を問い合わせるコマンドを受信した場合、前記第２のメモリの容量を確認し、前記第２のメモリの容量に基づいて前記レスポンスを生成するＩＣカード。
【請求項８】
データを記憶する第１のメモリと、復元アドレスと復元データとを対応付けてメモリ保障データとして記憶する第２のメモリと、外部機器から送信された書込みコマンドを受信する受信部と、前記書込みコマンドからアドレス及び書込みデータを取得し、前記アドレスと、前記書込みデータのデータサイズと、に基づいて前記第１のメモリ上の領域を特定し、特定された前記領域のデータを復元データとして前記第２のメモリに記憶し、前記アドレスを復元アドレスとして前記第２のメモリに記憶する制御部と、特定された前記第１のメモリ上の前記領域に前記書込みデータを書込む書込み処理部と、レスポンスを前記外部機器に送信する送信部と、を備えるＩＣモジュールと、
前記ＩＣモジュールが配設される本体と、
を具備し、
前記制御部は、前記第２のメモリの容量が前記書込みデータのデータサイズ未満である場合、エラーを示す前記レスポンスを生成するＩＣカード。
【請求項９】
データを記憶する第１のメモリと、復元アドレスと復元データとを対応付けてメモリ保障データとして記憶する第２のメモリと、を具備する携帯可能電子装置に用いられる携帯可能電子装置の制御方法であって、
外部機器から送信された書込みコマンドを受信し、
前記書込みコマンドからアドレス及び書込みデータを取得し、前記アドレスと、前記書込みデータのデータサイズと、に基づいて前記第１のメモリ上の領域を特定し、特定された前記領域のデータを復元データとして前記第２のメモリに記憶し、前記アドレスを復元アドレスとして前記第２のメモリに記憶し、
特定された前記第１のメモリ上の前記領域に前記書込みデータを書込み、
前記外部機器から前記第２のメモリの容量を問い合わせるコマンドを受信した場合、前記第２のメモリの容量を確認し、前記第２のメモリの容量に基づいてレスポンスを生成し、
前記レスポンスを前記外部機器に送信する、
携帯可能電子装置の制御方法。
【請求項１０】
データを記憶する第１のメモリと、復元アドレスと復元データとを対応付けてメモリ保障データとして記憶する第２のメモリと、を具備する携帯可能電子装置に用いられる携帯可能電子装置の制御方法であって、
外部機器から送信された書込みコマンドを受信し、
前記書込みコマンドからアドレス及び書込みデータを取得し、前記アドレスと、前記書込みデータのデータサイズと、に基づいて前記第１のメモリ上の領域を特定し、特定された前記領域のデータを復元データとして前記第２のメモリに記憶し、前記アドレスを復元アドレスとして前記第２のメモリに記憶し、
特定された前記第１のメモリ上の前記領域に前記書込みデータを書込み、
前記第２のメモリの容量が前記書込みデータのデータサイズ未満である場合、エラーを示すレスポンスを生成し、
前記レスポンスを前記外部機器に送信する、
携帯可能電子装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、携帯可能電子装置、ＩＣカード、及び携帯可能電子装置の制御方法に関する。
【背景技術】
【０００２】
一般的に、携帯可能電子装置として用いられるＩＣカードは、プラスチックなどで形成されたカード状の本体と本体に埋め込まれたＩＣモジュールとを備えている。ＩＣモジュールは、ＩＣチップを有している。ＩＣチップは、電源が無い状態でもデータを保持することができるＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）またはフラッシュＲＯＭなどの不揮発性メモリと、種々の演算を実行するＣＰＵとを有している。
【０００３】
ＩＣカードは、例えば、国際標準規格ＩＳＯ／ＩＥＣ７８１６に準拠したＩＣカードである。ＩＣカードは、携帯性に優れ、且つ、外部装置との通信及び複雑な演算処理を行う事ができる。また、偽造が難しい為、ＩＣカードは、機密性の高い情報などを格納してセキュリティシステム、電子商取引などに用いられることが想定される。
【０００４】
ＩＣカードは、ＩＣカードを処理する処理装置からコマンドを受信した場合、受信したコマンドに応じてアプリケーションを実行する。これにより、ＩＣカードは、種々の機能を実現することができる。例えば、ＩＣカードは、書き込みコマンドを受信した場合、受信した書込みコマンドに基づいてデータを不揮発性メモリに書き込む。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−３２０４５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＩＣカードが１つのコマンドで受信することができるデータサイズは、通信方式に応じた制限値が存在する。ＩＣカードに書き込むデータ量が、１つのコマンドに付加することができるデータ量を上回る場合、処理装置は、データを複数のデータに分割し、分割されたデータを複数の書き込みコマンドに付加してＩＣカードに送信する。
【０００７】
しかし、複数の書き込みコマンドに応じてデータの書き込みを行っている際に処理装置からの電源の供給が断たれた場合、ＩＣカードの不揮発性メモリ内のデータに不整合が生じる可能性がある。
【０００８】
そこで、より安定して動作する携帯可能電子装置、ＩＣカード、及び携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
一実施形態に係る携帯可能電子装置は、データを記憶する第１のメモリと、復元アドレスと復元データとを対応付けてメモリ保障データとして記憶する第２のメモリと、外部機器から送信された書込みコマンドを受信する受信部と、前記書込みコマンドからアドレス及び書込みデータを取得し、前記アドレスと、前記書込みデータのデータサイズと、に基づいて前記第１のメモリ上の領域を特定し、特定された前記領域のデータを復元データとして前記第２のメモリに記憶し、前記アドレスを復元アドレスとして前記第２のメモリに記憶する制御部と、特定された前記第１のメモリ上の前記領域に前記書込みデータを書込む書込み処理部と、レスポンスを前記外部機器に送信する送信部と、を具備する。前記制御部は、前記外部機器から前記第２のメモリの容量を問い合わせるコマンドを受信した場合、前記第２のメモリの容量を確認し、前記第２のメモリの容量に基づいて前記レスポンスを生成する。
【図面の簡単な説明】
【００１０】
【図１】図１は、一実施形態に係るＩＣカード処理システムの例について説明するための図である。
【図２】図２は、一実施形態に係るＩＣカードの例について説明するための図である。
【図３】図３は、一実施形態に係るＩＣカード処理システムの例について説明するための図である。
【図４】図４は、一実施形態に係るＩＣカード処理システムの例について説明するための図である。
【図５】図５は、一実施形態に係るＩＣカード処理システムの例について説明するための図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら、一実施形態に係る携帯可能電子装置、ＩＣカード、及び携帯可能電子装置の制御方法について詳細に説明する。
【００１２】
本実施形態に係る携帯可能電子装置（ＩＣカード）２０及びＩＣカード２０を処理する処理装置（端末装置）１０は、例えば、接触通信、及び／または非接触通信の機能を備える。これにより、ＩＣカード２０及び端末装置１０は、互いにデータの送受信を行うことができる。
【００１３】
図１は、一実施形態に係るＩＣカード処理システム１の構成例を示す。  
ＩＣカード処理システム１は、ＩＣカード２０を処理する端末装置１０と、ＩＣカード２０と、を備える。
【００１４】
端末装置１０は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、不揮発性メモリ１４、カードリーダライタ１５、操作部１７、ディスプレイ１８、及び電源部１９を備える。ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、不揮発性メモリ１４、カードリーダライタ１５、操作部１７、及びディスプレイ１８は、それぞれバスを介して互いに接続されている。
【００１５】
ＣＰＵ１１は、端末装置１０全体の制御を司る制御部として機能する。ＣＰＵ１１は、ＲＯＭ１２又は不揮発性メモリ１４に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。例えば、ＣＰＵ１１は、カードリーダライタ１５を介してＩＣカード２０とコマンド及びレスポンスの送受信を行う。
【００１６】
ＲＯＭ１２は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。ＲＡＭ１３は、ワーキングメモリとして機能する揮発性のメモリである。ＲＡＭ１３は、ＣＰＵ１１の処理中のデータなどを一時的に格納する。例えば、ＲＡＭ１３は、カードリーダライタ１５を介して外部の機器と送受信するデータを一時的に格納する。また、ＲＡＭ１３は、ＣＰＵ１１が実行するプログラムを一時的に格納する。
【００１７】
不揮発性メモリ１４は、例えばＥＥＰＲＯＭ、ＦＲＡＭなどを備える。不揮発性メモリ１４は、例えば、制御用のプログラム、制御データ、アプリケーション、及びアプリケーションに用いられるデータなどを記憶する。
【００１８】
カードリーダライタ１５は、ＩＣカード２０と通信を行うためのインターフェース装置である。カードリーダライタ１５は、接触通信、または非接触通信によりＩＣカード２０とデータの送受信を行う。
【００１９】
接触通信のインターフェースとして用いられる場合、カードリーダライタ１５は、ＩＣカード２０が装着されるスロットと、ＩＣカード２０が備えるコンタクトパターンと接続される複数の接触端子を備える。
【００２０】
スロットにＩＣカード２０が装着される場合、カードリーダライタ１５の複数の接触端子は、ＩＣカード２０のコンタクトパターンに接続される。これにより、端末装置１０とＩＣカード２０とは電気的に接続される。カードリーダライタ１５は、スロットに装着されるＩＣカード２０に対して、電力の供給、クロックの供給、リセット信号の入力、及びデータの送受信などを行う。
【００２１】
また、非接触通信のインターフェースとして用いられる場合、カードリーダライタ１５は、送受信するデータに対して信号処理を施す信号処理部と、所定の共振周波数を有するアンテナとを備える。
【００２２】
カードリーダライタ１５は、例えば、信号処理部により、送受信するデータに対して符号化、復号、変調、及び復調などの信号処理を行なう。また、カードリーダライタ１５は、符号化及び変調を施したデータをアンテナに供給する。アンテナは、供給されたデータに応じて磁界を発生させる。これにより、端末装置１０は、通信可能範囲に存在するＩＣカード２０に対してデータを非接触で送信することができる。
【００２３】
さらに、カードリーダライタ１５のアンテナは、磁界を検知し、検知した磁界に応じて信号を生成する。これにより、カードリーダライタ１５は、信号を非接触で受信することができる。信号処理部は、アンテナにより受信された信号に対して復調及び復号を行う。これにより、端末装置１０は、ＩＣカード２０から送信された元のデータを取得することができる。
【００２４】
操作部１７は、例えば操作キーなどを備え、操作者により入力される操作に基づいて、操作信号を生成する。操作部１７は、生成した操作信号をＣＰＵに入力する。これにより、ＣＰＵ１１は、操作者により入力された操作に基づいて処理を事項することができる。
【００２５】
ディスプレイ１８は、ＣＰＵ１１、または図示されないグラフィックコントローラなどの表示処理モジュールから入力される映像を表示するための信号に基づいて種々の情報を表示する。
【００２６】
電源部１９は、端末装置１０の各部に電力を供給する。電源部１９は、例えば、商用電源より電力を受け取り、所定の電圧に変換し、端末装置１０の各部に供給する。
【００２７】
図２は、一実施形態に係るＩＣカード２０の構成例を示す。  
図２に示すように、ＩＣカード２０は、例えば、矩形状の本体２１と、本体２１内に内蔵されたＩＣモジュール２２とを備える。ＩＣモジュール２２は、ＩＣチップ２３と、通信部２４とを備える。ＩＣチップ２３と通信部２４とは、互いに接続された状態でＩＣモジュール２２内に形成されている。
【００２８】
なお、本体２１は、少なくとも通信部２４が配設されるＩＣモジュール２２を設置可能な形状であれば、矩形状に限らず如何なる形状であっても良い。
【００２９】
ＩＣチップ２３は、通信部２４、ＣＰＵ２５、ＲＯＭ２６、ＲＡＭ２７、不揮発性メモリ２８、電源部３１、及びロジック部３２などを備える。通信部２４、ＣＰＵ２５、ＲＯＭ２６、ＲＡＭ２７、不揮発性メモリ２８、電源部３１、及びロジック部３２は、バスを介して互いに接続されている。
【００３０】
通信部２４は、端末装置（外部機器）１０のカードリーダライタ１５と通信を行うためのインターフェースである。通信部２４は、接触通信、または非接触通信により、端末装置１０とデータの送受信を行う。
【００３１】
接触通信のインターフェースとして用いられる場合、通信部２４は、カードリーダライタ１５の接触端子と接続されるコンタクトパターンを備える。コンタクトパターンは、導電性を有する金属などによりＩＣモジュール２２の表面に形成される接触端子である。即ち、コンタクトパターンは、端末装置１０のカードリーダライタ１５の接触端子と接触可能に形成されている。
【００３２】
コンタクトパターンは、金属により形成される面が複数のエリアに区切られて形成される。区切られた各エリアは、それぞれ端子として機能する。通信部２４は、コンタクトパターンを介してカードリーダライタ１５とデータの送受信を行うことができる。
【００３３】
また、非接触通信のインターフェースとして用いられる場合、通信部２４は、信号処理部とアンテナとを備える。
【００３４】
信号処理部は、端末装置１０に送信するデータに対して符号化、負荷変調などの信号処理を行う。例えば、信号処理部は、端末装置１０に送信するデータの変調（増幅）を行う。信号処理部は、信号処理を施したデータをアンテナに供給する。
【００３５】
アンテナは、例えば、ＩＣモジュール２２内に所定の形状で配設される金属線により構成される。ＩＣカード２０は、端末装置１０に送信するデータに応じてアンテナにより磁界を発生させる。これにより、ＩＣカード２０は、端末装置１０に対してデータを送信することができる。また、ＩＣカード２０は、電磁誘導によりアンテナに発生する誘導電流に基づいて端末装置１０から送信されるデータを認識する。
【００３６】
例えば、信号処理部は、アンテナに発生する誘導電流に対して復調、及び復号を行う。例えば、信号処理部は、アンテナにより受信する信号の解析を行う。これにより、通信部２４は、２値の論理データを取得する。通信部２４は、解析したデータをバスを介してＣＰＵ２５に送信する。
【００３７】
ＣＰＵ２５は、ＩＣカード２０全体の制御を司る制御部として機能する。ＣＰＵ２５は、ＲＯＭ２６あるいは不揮発性メモリ２８に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。例えば、端末装置１０から受信したコマンドに応じて種々の処理を行い、処理結果としてのレスポンスなどのデータの生成を行なう。
【００３８】
ＲＯＭ２６は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。ＲＯＭ２６は、製造段階で制御プログラム及び制御データなどを記憶した状態でＩＣカード２０内に組み込まれる。即ち、ＲＯＭ２６に記憶される制御プログラム及び制御データは、予めＩＣカード２０の仕様に応じて組み込まれる。
【００３９】
ＲＡＭ２７は、ワーキングメモリとして機能する揮発性のメモリである。ＲＡＭ２７は、ＣＰＵ２５の処理中のデータなどを一時的に格納する。例えば、ＲＡＭ２７は、通信部２４を介して端末装置１０から受信したデータを一時的に格納する。またＲＡＭ２７は、通信部２４を介して端末装置１０に送信するデータを一時的に格納する。またさらに、ＲＡＭ２７は、ＣＰＵ２５が実行するプログラムを一時的に格納する。
【００４０】
不揮発性メモリ２８は、例えば、ＥＥＰＲＯＭあるいはフラッシュＲＯＭなどのデータの書き込み及び書換えが可能な不揮発性のメモリを備える。不揮発性メモリ２８は、ＩＣカード２０の運用用途に応じて制御プログラム及び種々のデータを格納する。
【００４１】
たとえば、不揮発性メモリ２８では、プログラムファイル及びデータファイルなどが創成される。創成された各ファイルには、制御プログラム及び種々のデータなどが書き込まれる。ＣＰＵ２５は、不揮発性メモリ２８、または、ＲＯＭ２６に記憶されているプログラムを実行することにより、種々の処理を実現することができる。
【００４２】
例えば、不揮発性メモリ２８は、Ｍａｓｔｅｒ  Ｆｉｌｅ（ＭＦ）、Ｄｅｄｉｃａｔｅｄ  Ｆｉｌｅ（ＤＦ）、及びＥｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ（ＥＦ）などを有する。
【００４３】
ＭＦは、ファイル構造の根幹となるファイルである。ＤＦは、ＭＦの下位に創成される。ＤＦは、アプリケーション及びアプリケーションに用いられるデータなどをグループ化して格納するファイルである。ＥＦは、ＤＦの下位に創成される。ＥＦは、様々なデータを格納するためのファイルである。また、ＭＦの直下にＥＦが置かれる場合もある。
【００４４】
ＥＦには、Ｗｏｒｋｉｎｇ  Ｅｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ（ＷＥＦ）及びＩｎｔｅｒｎａｌ  Ｅｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ（ＩＥＦ）などの種類がある。ＷＥＦは、作業用ＥＦであり、個人情報などを格納する。ＩＥＦは、内部ＥＦであり、例えば、セキュリティのための暗号鍵（暗証番号）などのデータを記憶する。
【００４５】
さらに、不揮発性メモリ２８内には、管理ファイルなどが格納される。ＩＣカード２０は、管理ファイルにより、不揮発性メモリ２８内のデータをファイル構造として認識することができる。
【００４６】
また、不揮発性メモリ２８は、自身が保持しているデータを保障する処理（メモリ保障処理）に用いるコミットバッファメモリ（コミットバッファ）２８ａを有する。メモリ保障処理、及びコミットバッファについては後述する。
【００４７】
電源部３１は、端末装置１０の各部に電力を供給する。ＩＣカード２０が接触通信を行う構成を備える場合、電源部３１は、通信部２４のコンタクトパターンを介してカードリーダライタ１５から供給される電力をＩＣカード２０の各部に供給する。
【００４８】
また、ＩＣカード２０が非接触通信を行う構成を備える場合、カードリーダライタ１５のアンテナから送信される電波、特にキャリア波に基づいて電力を生成する。さらに、電源部３１は、動作クロックを生成する。電源部３１は、発生させた電力及び動作クロックをＩＣカード２０の各部に電力を供給する。ＩＣカード２０の各部は、電力の供給を受けた場合、動作可能な状態になる。
【００４９】
ロジック部３２は、演算処理をハードウエアにより行う演算部である。例えば、ロジック部３２は、端末装置１０からのコマンドに基づいて、暗号化、復号、ハッシュ計算、及び乱数の生成などの処理を行う。例えば、端末装置１０から相互認証コマンドを受信する場合、ロジック部３２は、乱数を生成し、生成した乱数をＣＰＵ２５に伝送する。
【００５０】
例えば、端末装置１０は、１つのコマンドで送信することができるデータ量を上回るデータをＩＣカード２０に書き込む場合、データを複数のデータに分割し、分割されたデータを複数の書き込みコマンドに付加してＩＣカード２０に送信する。なお、本例では、ＩＣカード２０に書き込むデータを第１の書込みコマンド、第２の書込みコマンド、及び第３の書込みコマンドに付加する。
【００５１】
図３は、端末装置１０によるＩＣカード２０の発行処理の例を示す。  
まず、端末装置１０は、ＩＣカード２０にコマンドを送信することにより、ＩＣカード２０との間で論理チャネルを開設することができる。これにより、端末装置１０は、ＩＣカード２０との間で通信路が確立される。さらに、端末装置１０は、不揮発性メモリ２８内のファイルを選択する為のコマンドをＩＣカード２０に送信する。これにより、ＩＣカード２０は、コマンドにより指定されたファイルを選択する状態になる。
【００５２】
ここで、メモリ保障処理を用いてＩＣカード２０にデータ（書込みデータ）を書き込む場合、端末装置１０は、ＩＣカード２０の不揮発性メモリ２８のコミットバッファ２８ａの容量を問い合わせるコマンド（コミットバッファ問合せコマンド）をＩＣカード２０に送信する（ステップＳ１１）。
【００５３】
コミットバッファ２８ａは、ＩＣカード２０のオペレーティングシステムにより管理されるシステムエリアである。コミットバッファ２８ａは、不揮発性メモリ２８内のファイルに用いられなかった領域である。即ち、コミットバッファ２８ａのサイズ（容量）は、不揮発性メモリ２８のスペック、及び不揮発性メモリ２８内のファイルの容量に関連する。
【００５４】
ＩＣカード２０は、コミットバッファ問合せコマンドを受信した場合、自身の不揮発性メモリ２８のコミットバッファ２８ａの容量を確認する（ステップＳ１２）。例えば、ＩＣカード２０は、自身が保持する仕様書と、ファイルとして用いられている容量とに基づいて、コミットバッファ２８ａの容量を算出する。ＩＣカード２０は、コミットバッファ２８ａの容量を示す情報を含むレスポンスを生成し、生成されたレスポンスを端末装置１０に送信する（ステップＳ１３）。
【００５５】
端末装置１０は、受信したレスポンスを解析することにより、ＩＣカード２０のコミットバッファ２８ａの容量を認識する。さらに、端末装置１０は、コミットバッファ２８ａの容量と、ＩＣカード２０に書き込む書込みデータの容量とに基づいて、メモリ保障処理の実行の可否を判断する。例えば、端末装置１０は、コミットバッファ２８ａの容量が書込みデータの容量以上である場合、メモリ保障処理を実行可能と判断する。
【００５６】
端末装置１０は、ＩＣカード２０に送信する書込みコマンドを生成する（ステップＳ１４）。上記したように、端末装置１０は、書込みデータが１つのコマンドで送信することができるデータ量を上回る場合、書込みデータを複数の書込みデータに分割する。端末装置１０は、分割した各書込みデータをそれぞれ有する書込みコマンドを生成する。
【００５７】
例えば、書込みデータを第１の書込みデータ、第２の書込みデータ、及び第３の書込みデータに分割した場合、端末装置１０は、第１の書込みデータを有する第１の書込みコマンド、第２の書込みデータを有する第２の書込みコマンド、及び第３の書込みデータを有する第３の書込みコマンドを生成する。
【００５８】
さらに、端末装置１０は、メモリ保障処理の開始、または終了を示す情報を上記の各書込みコマンドに付加する。例えば、第１の書込みコマンド、第２の書込みコマンド、第３の書込みコマンドの順でコマンドがＩＣカード２０に送信される場合、端末装置１０は、第１の書込みコマンドにメモリ保障処理の開始を示す情報を付加し、第３の書込みコマンドにメモリ保障処理の終了を示す情報を付加する。
【００５９】
端末装置１０は、生成した書込みコマンドをＩＣカード２０に順次送信する。まず、端末装置１０は、第１の書込みコマンドをＩＣカード２０に送信する（ステップＳ１５）。ＩＣカード２０は、受信した書込みコマンドがメモリ保障処理の開始を示す情報を有する場合、メモリ保障処理を用いてデータの書込みを行う（ステップＳ１６）。ＩＣカード２０は、メモリ保障処理の結果に基づいてレスポンスを生成し、生成されたレスポンスを端末装置１０に送信する（ステップＳ１７）。
【００６０】
端末装置１０は、第１の書込みコマンドに対するレスポンスを受信した場合、第２の書込みコマンドをＩＣカード２０に送信する（ステップＳ１８）。ＩＣカード２０は、既にメモリ保障処理が開始されている場合、メモリ保障処理を用いてデータの書込みを行う（ステップＳ１９）。ＩＣカード２０は、メモリ保障処理の結果に基づいてレスポンスを生成し、生成されたレスポンスを端末装置１０に送信する（ステップＳ２０）。
【００６１】
端末装置１０は、第２の書込みコマンドに対するレスポンスを受信した場合、第３の書込みコマンドをＩＣカード２０に送信する（ステップＳ２１）。ＩＣカード２０は、既にメモリ保障処理が開始されている場合、メモリ保障処理を用いてデータの書込みを行う（ステップＳ２２）。ＩＣカード２０は、メモリ保障処理の結果に基づいてレスポンスを生成し、生成されたレスポンスを端末装置１０に送信する（ステップＳ２３）。
【００６２】
さらに、ＩＣカード２０は、受信した書込みコマンドがメモリ保障処理の終了を示す情報を有する場合、コミットバッファ２８ａ内の全てのデータを消去する。即ち、ＩＣカード２０は、コミットバッファ２８ａをクリアする。
【００６３】
図４は、ＩＣカード２０の処理の例を示す。  
ＩＣカード２０は、起動した場合、端末装置１０からのコマンドを待つ状態を保持する。ＩＣカード２０は、端末装置から受信するコマンドに応じて初期設定を行い、論理チャネルを開設する。さらに、ＩＣカード２０は、端末装置１０から受信したコマンドに応じて、不揮発性メモリ２８内のファイルを選択する。
【００６４】
ここで、ＩＣカード２０は、端末装置１０から送信された書込みコマンドを受信する（ステップＳ３１）。さらに、ＩＣカード２０は、受信した書込みコマンドを解析する（ステップＳ３２）。これにより、ＩＣカード２０は、書込みコマンドから書込みデータと、書込みデータの書込み先を示すアドレスと、メモリ保障処理に関する情報と、を取得する。
【００６５】
書込みコマンドは、例えば「ＣＬＡ」、「ＩＮＳ」、「Ｐ１」、「Ｐ２」、「Ｌｃ」、「Ｄａｔａ」、及び「Ｌｅ」を有する。
【００６６】
「ＣＬＡ」は、コマンドの層別を示すｃｌａｓｓ  ｂｙｔｅである。「ＩＮＳ」は、コマンドの種別を示すｉｎｓｔｒｕｃｔｉｏｎ  ｂｙｔｅである。「Ｐ１」及び「Ｐ２」は、「ＩＮＳ」に応じたパラメータを示すｐａｒａｍｅｔｅｒ  ｂｙｔｅである。
【００６７】
「Ｌｃ」は、「Ｄａｔａ」のデータの長さ（バイト数）を示すｌｅｎｇｔｈ  ｆｉｅｌｄ  ｆｏｒ  ｃｏｒｄｉｎｇ  ｎｕｍｂｅｒ  Ｎｃである。「Ｄａｔａ」は、当該コマンドのデータ本体を示すｃｏｍｍａｎｄ  ｄａｔａ  ｆｉｅｌｄである。「Ｌｅ」は、当該コマンドに対するレスポンスのデータ長を示すｌｅｎｇｔｈ  ｆｉｅｌｄ  ｆｏｒ  ｃｏｒｄｉｎｇ  ｎｕｍｂｅｒ  Ｎｅである。
【００６８】
即ち、「ＣＬＡ」及び「ＩＮＳ」により、当該コマンドが書込みコマンドであるのか、または他のコマンドであるのかが示される。ＩＣカード２０は、受信したコマンドの「ＣＬＡ」及び「ＩＮＳ」の値を解析することにより、受信したコマンドの種類を認識することができる。
【００６９】
例えば、コマンドが書込みコマンドである場合、ＩＣカード２０は、「Ｄａｔａ」内から書込みデータを取得する。また、ＩＣカード２０は、「Ｄａｔａ」、「Ｐ１」、または「Ｐ２」などからアドレスを取得する。また、ＩＣカード２０は、「Ｄａｔａ」、「Ｐ１」、または「Ｐ２」などからメモリ保障処理に関する情報を取得する。メモリ保障処理に関する情報は、メモリ保障処理の開始を示す情報、またはメモリ保障処理の終了を示す情報である。
【００７０】
ＩＣカード２０は、メモリ保障処理を開始するか否か判定する（ステップＳ３３）。即ち、ＩＣカード２０は、受信した書込みコマンドにメモリ保障処理の開始を示す情報が含まれている場合、メモリ保障処理を開始すると判定する。
【００７１】
ステップＳ３３で、受信した書込みコマンドにメモリ保障処理の開始を示す情報が含まれていると判定した場合、ＩＣカード２０は、復元アドレスをセットする（ステップＳ３４）。すなわち、ＩＣカード２０は、書込みコマンドから取得したアドレスを復元アドレスとして不揮発性メモリ２８のコミットバッファ２８ａに記憶する。
【００７２】
また、ステップＳ３３で、受信した書込みコマンドにメモリ保障処理の開始を示す情報が含まれていないと判定した場合、ＩＣカード２０は、ステップＳ３５に移行する。
【００７３】
ＩＣカード２０は、メモリ保障処理が継続中であるか否か判定する（ステップＳ３５）。ＩＣカード２０は、上記のステップＳ３３において、メモリ保障処理を開始すると判定した場合、メモリ保障処理が継続中であることを示す情報をＲＡＭ２７、または不揮発性メモリ２８に記憶する。ＩＣカード２０は、メモリ保障処理が継続中であることを示す情報の有無に基づいて、メモリ保障処理が継続中であるか否か判定する。
【００７４】
ステップＳ３５でメモリ保障処理が継続中であると判定した場合、ＩＣカード２０は、データサイズをセットする（ステップＳ３６）。ＩＣカード２０は、取得した書込みデータのサイズに基づいて書込みデータのサイズを示す情報（データサイズ）を生成し、不揮発性メモリ２８のコミットバッファ２８ａに記憶する。ＩＣカード２０は、ステップＳ３４でコミットバッファ２８ａに記憶した復元アドレスに対応付けてデータサイズを記憶する。また、既に復元アドレスにデータサイズが対応付けられている場合、生成したデータサイズが示す値を、復元アドレスに対応付けられているデータサイズに加算する。
【００７５】
ＩＣカード２０は、メモリ保障処理を実行することが出来るか否か判定する（ステップＳ３７）。例えば、ＩＣカード２０は、復元アドレスに対応付けられているデータサイズが示す容量が、自身のコミットバッファ２８ａの容量以下であるか否か判定する。ＩＣカード２０は、復元アドレスに対応付けられているデータサイズが示す容量が、自身のコミットバッファ２８ａの容量以下である場合、メモリ保障処理を実行することが出来ると判定する。
【００７６】
ステップＳ３７で、メモリ保障処理を実行することが出来ると判定した場合、ＩＣカード２０は、書込みコマンドから取得したアドレスにより示される位置に記憶されているデータを退避する（ステップＳ３８）。
【００７７】
ＩＣカード２０は、不揮発性メモリ２８から、書込みコマンドから取得したアドレスにより示される位置から、書込みコマンドに含まれている書込みデータのデータサイズに相当する量のデータを読み出す。即ち、ＩＣカード２０は、書込みコマンドから取得したアドレスと、書込みデータのデータサイズとに基づいて不揮発性メモリ２８上の領域を特定し、特定した領域に記憶されているデータを読み出す。
【００７８】
ＩＣカード２０は、読み出したデータをコミットバッファ２８ａ中の復元アドレスに対応付けて復元データとして記憶する。即ち、ＩＣカード２０は、書込みデータが書き込まれる位置に記憶されているデータをコミットバッファ２８ａに退避させる。また、既に復元アドレスに復元データが対応付けられている場合、復元データを既に記憶されている復元データに追記する。
【００７９】
上記の処理により、不揮発性メモリ２８のコミットバッファ２８ａ内には、図５により示されるようにメモリ保障データ２８１が記憶される。メモリ保障データ２８１は、復元アドレスと、データサイズと、復元データとを対応付けて記憶する。また、不揮発性メモリ２８のコミットバッファ２８ａ内には、メモリ保障データ２８１の復元アドレスとは異なる復元アドレスを有するメモリ保障データ２８２をさらに記憶する構成であってもよい。この場合、不揮発性メモリ２８中の連続していない複数の領域のデータを保障することができる。なお、連続していない複数の領域のデータを保障する処理については後述する。
【００８０】
また、ステップＳ３５でメモリ保障処理が継続中ではないと判定した場合、ＩＣカード２０は、ステップＳ３９に移行する。
【００８１】
ＩＣカード２０は、書込みコマンドから取得したアドレスにより示される不揮発性メモリ２８上の領域に、書込みコマンドから取得した書込みデータを書き込む（ステップＳ３９）。
【００８２】
ＩＣカード２０は、メモリ保障処理を終了するか否か判定する（ステップＳ４０）。即ち、ＩＣカード２０は、受信した書込みコマンドにメモリ保障処理の終了を示す情報が含まれている場合、メモリ保障処理を終了すると判定する。
【００８３】
ステップＳ４０で、受信した書込みコマンドにメモリ保障処理の終了を示す情報が含まれていると判定した場合、ＩＣカード２０は、コミットバッファ２８ａをクリアする（ステップＳ４１）。すなわち、ＩＣカード２０は、コミットバッファ２８ａにより記憶されているメモリ保障データのうち、受信した書込みコマンドに対応するメモリ保障データを削除する。
【００８４】
ステップＳ４０で、受信した書込みコマンドにメモリ保障処理の終了を示す情報が含まれていないと判定した場合、ＩＣカード２０は、ステップＳ４２に移行する。
【００８５】
ＩＣカード２０は、受信した書込みコマンドに基づいて実行した処理の結果に基づいて、レスポンスを生成する（ステップＳ４２）。即ち、ＩＣカード２０は、書込み処理を正常に完了させることができた場合、正常終了を示すレスポンスを生成する。ＩＣカード２０は、書込み処理においてエラーが発生した場合、エラーが発生したことを示すレスポンスを生成する。
【００８６】
また、ステップＳ３７で、メモリ保障処理を実行することが出来ないと判定した場合、ＩＣカード２０は、メモリ保障処理においてエラー（オーバーフロー）が発生したことを示すレスポンスを生成する（ステップＳ４３）。
【００８７】
ＩＣカード２０は、生成したレスポンスを端末装置１０に送信し、１つのコマンドに基づく処理を終了する。
【００８８】
ここで、図３に示すように関連する複数の書込みコマンドの処理中にＩＣカード２０に対する電力の供給が断たれた場合、ＩＣカード２０は、上記のメモリ保障データをコミットバッファ２８ａに記憶したまま停止する。
【００８９】
ＩＣカード２０は、次に起動した際に、コミットバッファ２８ａ内にメモリ保障データが存在するか否か判定する。即ち、ＩＣカード２０は、起動した場合、コミットバッファ２８ａを参照し、メモリ保障データの有無を判定する。
【００９０】
ＩＣカード２０は、メモリ保障データがコミットバッファ２８ａに存在すると判定した場合、メモリ保障データの復元アドレスに基づいて、不揮発性メモリ２８内の位置を特定する。ＩＣカード２０は、メモリ保障データの復元データを読み出し、読み出した復元データを特定した位置から書き込む。これにより、ＩＣカード２０は、不揮発性メモリ２８のデータを復元することができる。さらに、ＩＣカード２０は、復元に用いたメモリ保障データをコミットバッファ２８ａから削除する。
【００９１】
また、ＩＣカード２０は、端末装置１０から所定のコマンドを受信した場合に上記の復元を行う構成であってもよい。例えば、ＩＣカード２０は、端末装置１０から書込み処理の中止を指示するコマンドを受信した場合に上記の復元を行う構成であってもよい。
【００９２】
また、ＩＣカード２０は、書込みコマンドに基づく書込み処理を中止する必要があると自身で判定した場合に上記の復元を行う構成であってもよい。例えば、ICカード２０は、コミットバッファ２８ａのオーバーフローが発生した場合、端末装置１０側で異常が検知された場合、または後続の書込みコマンドが端末装置１０から送信されなくなった場合などに復元を行う。
【００９３】
上記したように、ＩＣカード２０は、不揮発性メモリ２８上の書込みデータを書き込む先に既に記憶されているデータをアドレスと供にメモリ保障データとしてコミットバッファ２８ａに記憶する。さらに、ＩＣカード２０は、起動時にメモリ保障データの有無を確認し、メモリ保障データが存在する場合、メモリ保障データに基づいて、不揮発性メモリ２８のデータを復元する。
【００９４】
これにより、連続する複数の書込みコマンドの処理の途中でＩＣカード２０が停止した場合であっても、不揮発性メモリ２８のデータを復元することが出来る。これにより、不揮発性メモリ２８上のデータに不整合が生じることを防ぐことができる。この結果、より安定して動作する携帯可能電子装置、ＩＣカード、及び携帯可能電子装置の制御方法を提供することができる。
【００９５】
また、上記したように、ＩＣカード２０は、不揮発性メモリ２８上の不連続な領域のデータを保障することもできる。
【００９６】
この場合、ＩＣカード２０は、書込みコマンドから取得したアドレス毎にメモリ保障データを生成する。ＩＣカード２０は、例えば、書込みコマンドに含まれるアドレスに基づいて、対応するメモリ保障データを特定することができる。新たに書込みコマンドを受信した場合、ＩＣカード２０は、書込みコマンドからアドレスを取得し、取得したアドレスに対応するメモリ保障データに対して、データサイズのセット、及び復元データの退避を行う。これにより、ＩＣカード２０は、不揮発性メモリ２８上の複数の不連続な領域のデータを保障することができる。
【００９７】
上記した実施形態では、ＩＣカード２０は、コミットバッファ問合せコマンドを受信した場合、コミットバッファ２８ａの容量を端末装置１０に通知する構成として説明したが、この構成に限定されない。例えば、ＩＣカード２０は、論理チャネルの確立などを指示する初期設定コマンドを端末装置１０から受信した場合にコミットバッファ２８ａの容量を端末装置１０に通知する構成であってもよい。
【００９８】
また、端末装置１０は、メモリ保障処理の開始または終了を示す情報を書込みコマンドに付加する構成として説明したが、この構成に限定されない。
【００９９】
例えば、端末装置１０は、関連するコマンドの数を示す情報を書込みコマンドに付加する構成であってもよい。この場合、ＩＣカード２０は、書込みコマンドに付加された関連するコマンドの数に基づいて、メモリ保障処理を行うコマンドを特定する。
【０１００】
また、例えば、端末装置１０は、関連するコマンドがさらに存在するか否かを示す情報を書込みコマンドに付加する構成であってもよい。この場合、ＩＣカード２０は、関連するコマンドがさらに存在しないことを示す情報を受信するまでの間、メモリ保障処理を行う。
【０１０１】
また、例えば、端末装置１０は、メモリ保障処理の開始と終了とを所定のコマンドで指示する構成であってもよい。この場合、ＩＣカード２０は、メモリ保障処理の開始を指示するコマンドを受信してから、メモリ保障処理の終了を指示するコマンドを受信するまでの間、メモリ保障処理を行う。
【０１０２】
なお、上述の各実施の形態で説明した機能は、ハードウエアを用いて構成するに留まらず、ソフトウエアを用いて各機能を記載したプログラムをコンピュータに読み込ませて実現することもできる。また、各機能は、適宜ソフトウエア、ハードウエアのいずれかを選択して構成するものであっても良い。
【０１０３】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【０１０４】
１…ＩＣカード処理システム、１０…端末装置、１１…ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、１４…不揮発性メモリ、１５…カードリーダライタ、１７…操作部、１８…ディスプレイ、１９…電源部、２０…ＩＣカード、２１…本体、２２…ＩＣモジュール、２３…ＩＣチップ、２４…通信部、２５…ＣＰＵ、２６…ＲＯＭ、２７…ＲＡＭ、２８…不揮発性メモリ、２８ａ…コミットバッファ、３１…電源部、３２…ロジック部。
【図１】
0005684051.tif 000002
【図２】
0005684051.tif 000003
【図３】
0005684051.tif 000004
【図４】
0005684051.tif 000005
【図５】
0005684051.tif 000006