(57)【要約】【課題】コマンドチェイニングを用いて１つのデータを複数のコマンドに分割して送信した場合であっても、当該コマンド処理のエラー内容に応じた効率的なリトライ処理が実現可能となるＩＣカードおよびＩＣカード処理システムを提供できる。【解決手段】ＩＣカード２は、コマンドチェイニングされた複数の書込みコマンドを受信し、受信した各コマンドのデータを連結し、連結したデータに対する書込み処理を実行する。ＩＣカード２は、連結したデータに対する書込み処理中にエラーが発生した場合、コマンドに対するエラー通知だけでなく、どのようなデータの書込みでエラーが発生したかを示す情報をコマンドの送信元としてのＩＣカード処理装置１に通知するようにしたものである。【選択図】図１
2011065471.tif 000002
【特許請求の範囲】
【請求項１】
上位装置から与えられるコマンドに応じた処理を行う携帯可能電子装置であって、
前記上記装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定する判定手段と、
前記判定手段により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じて当該コマンドの正常終了を前記上位装置へ通知する通知手段と、
前記通知手段により連結指示を含むコマンドの受信完了を通知した後に前記判定手段により前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行する実行手段と、
前記実行手段による実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成する生成手段と、
前記生成手段により生成されたエラー内容を示す情報を前記連結指示を含まないと判定されたコマンドに対するエラー通知とともに前記上位装置へ出力する出力手段と、
を有することを特徴とする携帯可能電子装置。
【請求項２】
前記連結指示により連結される複数のコマンドは、１つの書込みデータを分割した複数のデータを格納し、
前記実行手段は、前記連結指示に基づいて複数のコマンドに格納されたデータを連結した１つの書込みデータをデータメモリに書込む処理を実行し、
前記生成手段は、前記実行手段による連結したデータの書込み処理中にエラーが発生した場合、書込みエラーとなったデータを示す情報を生成し、
前記出力手段は、前記連結指示により連結したデータの書込みエラー通知とともに、前記生成手段により生成した書込みエラーとなったデータを示す情報を前記上位装置へ出力する、
を有することを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項３】
前記生成手段は、書込みエラーとなったデータを示す情報として、書込みエラーが発生した位置を書込みデータ全体の先頭からの位置で示す情報を生成する、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項４】
上位装置から与えられるコマンドに応じた処理を行うＩＣカードであって、
前記上記装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定する判定手段と、前記判定手段により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じて当該コマンドの正常終了を前記上位装置へ通知する通知手段と、前記通知手段により連結指示を含むコマンドの受信完了を通知した後に前記判定手段により前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行する実行手段と、前記実行手段による実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成する生成手段と、前記生成手段により生成されたエラー内容を示す情報を前記連結指示を含まないと判定されたコマンドに対するエラー通知とともに前記上位装置へ出力する出力手段と、を有するＩＣモジュールと、
前記ＩＣモジュールを収納したＩＣカード本体と、
を有することを特徴とするＩＣカード。
【請求項５】
上位装置と前記上位装置から与えられるコマンドに応じた処理を行う携帯可能電子装置とを有する携帯可能電子装置の処理システムであって、
前記上位装置は、
前記携帯可能電子装置が処理すべき１つのデータを複数のデータに分割して複数のコマンドに格納し、それれらのコマンドを連結指示とともに順に前記携帯可能電子装置へ送信する送信手段と、
前記送信手段により前記複数のコマンドを送信した後、前記ＩＣカードからエラー通知とともに供給されるエラー内容を示す情報に基づいて当該エラーに対するリカバリ処理の内容を決定する決定手段と、
前記決定手段により決定したリカバリ処理を実行させるためのコマンドを生成し、生成したコマンドを前記携帯可能電子装置へ送信するリトライ処理手段と、を有し、
前記携帯可能電子装置は、
前記上位装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定する判定手段と、
前記判定手段により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じてコマンドの正常終了を前記上位装置へ通知する通知手段と、
前記通知手段により連結指示を含むコマンドの受信完了を通知した後に前記判定手段により前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行する実行手段と、
前記実行手段による実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成する生成手段と、
前記生成手段により生成されたエラー内容を示す情報を前記連結指示を含まないと判定されたコマンドに対するエラー通知とともに前記上位装置へ出力する出力手段と、を有する、
ことを特徴とする携帯可能電子装置の処理システム。
【請求項６】
上位装置から与えられるコマンドに応じた処理を行う携帯可能電子装置の制御方法であって、
前記上記装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定し、
前記判定により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じて当該コマンドの正常終了を前記上位装置へ通知し、
前記連結指示を含むコマンドの受信完了を通知した後に前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行し、
前記実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成し、
前記生成されたエラー内容を示す情報を前記連結指示を含まないと判定されたコマンドに対するエラー通知とともに前記上位装置へ出力する、
を有することを特徴とする携帯可能電子装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、たとえば、書込みあるいは書換えが可能な不揮発性メモリおよびＣＰＵなどの制御部を具備し、上位装置から与えられるコマンドに応じた処理を行うＩＣカードなどの携帯可能電子装置、携帯可能電子装置の処理システムおよび携帯可能電子装置の制御方法に関する。
【背景技術】
【０００２】
従来、携帯可能電子装置としてのＩＣカードは、不揮発性メモリとしてのデータメモリ、揮発性メモリとしてのワーキングメモリ、これらのメモリに対してアクセス（データの読出しおよびまたは書込み等）を行う制御部、および、制御部の動作用プログラム等を格納したプログラムメモリを有する。このようなＩＣカードでは、外部装置から供給される命令（コマンド）に応じてデータの入出力などの処理を行なう。近年では、上記のようなＩＣカードが産業各方面で利用されることが多くなってきている。さらに、ＩＣカードに用いられるデータメモリが大容量化されてきている。このため、ＩＣカードでは、サイズの大きなデータを処理することが多くなってきている。
【０００３】
一方、ＩＣカードなどの携帯可能電子装置に適用される国際標準規格である「ＩＳＯ７８１６−４  Ｓｅｃｏｎｄ  ｅｄｉｔｉｏｎ」では、コマンドチェイニング（ｃｏｍｍａｎｄ  ｃｈａｉｎｉｎｇ）という仕様が規定されている。コマンドチェイニングは、複数のコマンドで供給するデータを連結させてＩＣカードに処理させる仕様である。たとえば、コマンドチェイニングは、１回のコマンドでは送信しきれないデータを複数のコマンドで送信するのに用いることが想定される。
【０００４】
現状のＩＣカードでは、コマンドチェイニングで連結すべきデータを全て受信した場合、連結したデータを用いた処理を通常のコマンド処理と同様に実行する。このため、現状のＩＣカードでは、コマンドチェイニングで連結したデータに対する処理がエラーとなった場合、通常のコマンド処理と同様に、コマンド処理でエラーが発生したことを示すステータスを返す。このようなステータスだけではコマンドの送信元が詳細なエラー内容を把握できない。このため、現在のシステムでは、エラーが発生した場合、コマンドチェイニングで連結させる全コマンドを再度ＩＣカードへ供給し、ＩＣカードに全工程の処理を再度実行させる。しかしながら、コマンドチェイニングで送信されるデータは大きい。このため、コマンドチェイニングで連結する全データの再送信および全データに対する再度の処理には、多大な時間がかかるという問題がある。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】ＩＳＯ７８１６−４  Ｓｅｃｏｎｄ  ｅｄｉｔｉｏｎ
【発明の概要】
【発明が解決しようとする課題】
【０００６】
この発明の一形態は、処理対象とするデータのサイズが大きい場合であっても効率的に処理を行うことができる携帯可能電子装置、ＩＣカード、携帯可能電子装置の処理システムおよび携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
この発明の一形態としての携帯可能電子装置は、上位装置から与えられるコマンドに応じた処理を行うものであって、前記上記装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定する判定手段と、前記判定手段により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じて当該コマンドの正常終了を前記上位装置へ通知する通知手段と、前記通知手段により連結指示を含むコマンドの受信完了を通知した後に前記判定手段により前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行する実行手段と、前記実行手段による実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成する生成手段と、前記生成手段により生成されたエラー内容を示す情報を前記連結指示を含まないと判定されるコマンドに対するエラー通知とともに前記上位装置へ出力する出力手段とを有する。
【０００８】
この発明の一形態としてのＩＣカードは、上位装置から与えられるコマンドに応じた処理を行うものであって、前記上記装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定する判定手段と、前記判定手段により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じて当該コマンドの正常終了を前記上位装置へ通知する通知手段と、前記通知手段により連結指示を含むコマンドの受信完了を通知した後に前記判定手段により前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行する実行手段と、前記実行手段による実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成する生成手段と、前記生成手段により生成されたエラー内容を示す情報を前記連結指示を含まないと判定されるコマンドに対するエラー通知とともに前記上位装置へ出力する出力手段とを有するＩＣモジュールと、前記ＩＣモジュールを収納したＩＣカード本体と、を有する。
【０００９】
この発明の一形態としての携帯可能電子装置の処理システムは、上位装置と前記上位装置から与えられるコマンドに応じた処理を行う携帯可能電子装置とを有するシステムであって、前記上位装置は、前記携帯可能電子装置が処理すべき１つのデータを複数のデータに分割して複数のコマンドに格納し、それれらのコマンドを連結指示とともに順に前記携帯可能電子装置へ送信する送信手段と、前記送信手段により前記複数のコマンドを送信した後、前記ＩＣカードからエラー通知とともに供給されるエラー内容を示す情報に基づいて当該エラーに対するリカバリ処理の内容を決定する決定手段と、前記決定手段により決定したリカバリ処理を実行させるためのコマンドを生成し、生成したコマンドを前記携帯可能電子装置へ送信するリトライ処理手段とを有し、前記携帯可能電子装置は、前記上位装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定する判定手段と、前記判定手段により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じてコマンドの正常終了を前記上位装置へ通知する通知手段と、前記通知手段により連結指示を含むコマンドの受信完了を通知した後に前記判定手段により前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行する実行手段と、前記実行手段による実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成する生成手段と、前記生成手段により生成されたエラー内容を示す情報を前記連結指示を含まないと判定されるコマンドに対するエラー通知とともに前記上位装置へ出力する出力手段とを有する。
【００１０】
この発明の一形態としての携帯可能電子装置の制御方法は、上位装置から与えられるコマンドに応じた処理を行う方法であって、前記上記装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定し、前記判定により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じて当該コマンドの正常終了を前記上位装置へ通知し、前記連結指示を含むコマンドの受信完了を通知した後に前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行し、前記実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成し、前記生成されたエラー内容を示す情報を前記連結指示を含まないと判定されるコマンドに対するエラー通知とともに前記上位装置へ出力する。
【発明の効果】
【００１１】
この発明の一形態によれば、処理対象とするデータのサイズが大きい場合であっても効率的に処理を行うことができる携帯可能電子装置、ＩＣカード、携帯可能電子装置の処理システムおよび携帯可能電子装置の制御方法を提供できる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態に係るＩＣカード処理システムの構成例を概略的に示すブロック図である。
【図２】図２は、ＩＣカードのハードウエア構成例を概略的に示すブロック図である。
【図３】図３は、ＩＣカードに与えられるコマンドフォーマットの構成例を示す図である。
【図４】図４は、ＩＣカードにおけるコマンド処理の流れを説明するためのフローチャートである。
【図５】図５は、コマンドチェイニングにより連結させるデータの書込み処理の流れを説明するためのシーケンス図である。
【発明を実施するための形態】
【００１３】
以下、この発明の実施の形態について図面を参照して説明する。  
図１は、本実施の形態に係るＩＣカード処理システム全体の構成を概略的に示すブロック図である。図１に示す構成例において、ＩＣカード処理システムは、ＩＣカード（携帯可能電子装置）２、および、ＩＣカード２との通信機能を有する上位装置としてのＩＣカード処理装置１により構成されている。  
まず、上記ＩＣカード処理装置１の構成について説明する。  
上記ＩＣカード処理装置１は、図１に示すように、制御装置１１、ディスプレイ１２、キーボード１３、テンキー１４、及び、カードリーダライタ１５などを有している。
【００１４】
上記制御装置１１は、ＩＣカード処理装置１全体の動作を制御するものである。上記制御装置１１は、ＣＰＵ、種々のメモリ及び各種インターフェースなどにより構成される。たとえば、上記制御装置１１は、パーソナルコンピュータ（ＰＣ）により構成される。  
上記制御装置１１は、上記カードリーダライタ１５によりＩＣカード２へコマンドを送信する機能、ＩＣカード２から受信したデータを基に種々の処理を行う機能などを有している。たとえば、上記制御装置１１は、カードリーダライタ１５を介してＩＣカード２にデータの書き込みコマンドを送信することによりＩＣカード２内の不揮発性メモリにデータを書き込む制御を行う。また、上記制御装置１１は、ＩＣカード２に読み取りコマンドを送信することによりＩＣカード２からデータを読み出す制御を行う。
【００１５】
上記ディスプレイ１２は、上記制御装置１１の制御により種々の情報を表示する表示装置である。上記キーボード１３は、当該ＩＣカード処理装置１の操作員が操作する操作部として機能し、操作員により種々の操作指示やデータなどが入力される。上記テンキー１４は、使用者ＩＤあるいはパスワードなど数字などの情報を入力する為の入力部として機能する。
【００１６】
上記カードリーダライタ１５は、上記ＩＣカード２との通信を行うためのインターフェース装置である。上記カードリーダライタ１５は、上記ＩＣカード２の通信方式に応じたインターフェースにより構成される。たとえば、上記ＩＣカード２が接触型のＩＣカードである場合、上記カードリーダライタ１５は、ＩＣカード２のコンタクト部と物理的かつ電気的に接続するための接触部などにより構成される。また、上記ＩＣカード２が非接触型のＩＣカードである場合、上記カードリーダライタ１５は、ＩＣカード２との無線通信を行うためのアンテナおよび通信制御などにより構成される。上記カードリーダライタ１５では、上記ＩＣカード２に対する電源供給、クロック供給、リセット制御、データの送受信が行われるようになっている。このような機能によってカードリーダライタ１５は、上記制御装置１１による制御に基づいて上記ＩＣカード２の活性化（起動）、種々のコマンドの送信、及び送信したコマンドに対する応答の受信などを行なう。
【００１７】
次に、上記ＩＣカード２について説明する。  
上記ＩＣカード２は、上記ＩＣカード処理装置１などの上位機器から電力などの供給を受けた際、活性化される（動作可能な状態になる）ようになっている。例えば、上記ＩＣカード２が接触型の通信によりＩＣカード処理装置１と接続される場合、つまり、ＩＣカード２が接触型のＩＣカードで構成される場合、上記ＩＣカード２は、通信インターフェースとしてのコンタクト部を介してＩＣカード処理装置１からの動作電源及び動作クロックの供給を受けて活性化される。
【００１８】
また、上記ＩＣカード２が非接触型の通信方式によりＩＣカード処理装置１と接続される場合、つまり、上記ＩＣカード２が非接触式のＩＣカードで構成される場合、上記ＩＣカード２は、通信インターフェースとしてのアンテナ及び変復調回路などを介してＩＣカード処理装置１からの電波を受信し、その電波から図示しない電源部により動作電源及び動作クロックを生成して活性化するようになっている。
【００１９】
次に、上記ＩＣカード２の構成例について説明する。  
図２は、本実施の形態に係るＩＣカード２の構成例を概略的に示すブロック図である。上記ＩＣカード２は、本体Ｃを構成する筐体内にモジュールＭが内蔵されている。上記モジュールＭは、１つまたは複数のＩＣチップＣａと通信用の外部インターフェース（通信インターフェース）とが接続された状態で一体的に形成され、ＩＣカード２の本体Ｃ内に埋設されている。また、上記ＩＣカード２のモジュールＭは、図２に示すように、制御部２１、通信インターフェース２２、ＲＯＭ２３、ＲＡＭ２４、不揮発性メモリ２５などを有してしている。
【００２０】
上記制御部２１は、当該ＩＣカード２全体の制御を司るものである。上記制御部２１は、上記ＲＯＭ２３あるいは上記不揮発性メモリ２５に記憶されている制御プログラムや制御データに基づいて動作することにより、種々の機能を実現する。また、各種の機能のうちの一部は、ハードウエア回路により実現されるものであっても良い。この場合、上記制御部２１は、ハードウエア回路により実行される機能を制御する。
【００２１】
上記通信インターフェース２２は、上記ＩＣカード処理装置１のカードリーダライタ１５との通信を行うためのインターフェースである。当該ＩＣカード２が接触型のＩＣカードとして実現される場合、上記通信インターフェース２２は、上記ＩＣカード処理装置１のカードリーダライタ１５と物理的かつ電気的に接触して信号の送受信を行うための通信制御部とコンタクト部とにより構成される。また、当該ＩＣカード２が非接触型のＩＣカードとして実現される場合、通信インターフェース２２は、上記ＩＣカード処理装置１のカードリーダライタ１５との無線通信を行うための変復調回路などの通信制御部とアンテナとにより構成される。
【００２２】
上記ＲＯＭ２３は、予め制御用のプログラムや制御データなどが記憶されている不揮発性のメモリである。上記ＲＯＭ２３は、製造段階で制御プログラムや制御データなどが記憶された状態でＩＣカード２内に組み込まれるものである。つまり、上記ＲＯＭ２３に記憶されている制御プログラムや制御データは、予め当該ＩＣカード２の仕様に応じて組み込まれる。たとえば、上記ＲＯＭ２３には、ＩＣカード処理装置１から受信したコマンドに応じた処理を制御部２１が実行するためのプログラムが記憶される。
【００２３】
上記ＲＡＭ２４は、ワーキングメモリとして機能する揮発性のメモリである。また、上記ＲＡＭ２４は、制御部２１が処理中のデータなどを一時保管するバッファとしても機能する。例えば、上記ＲＡＭ２４は、上記通信インターフェース２２を介してＩＣカード処理装置１から受信したデータを一時保管するようになっている。
【００２４】
上記不揮発性メモリ２５は、例えば、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read  Only  Memory）あるいはフラッシュＲＯＭなどのデータの書き込み及び書換えが可能な不揮発性のメモリにより構成される。上記不揮発性メモリ２５には、当該ＩＣカード２の運用用途に応じて制御プログラムや種々のデータが書込まれる。たとえば、上記不揮発性メモリ２５では、プログラムファイルあるいはデータファイルなどが定義され、それらのファイルに制御プログラムや種々のデータが書き込まれる。
【００２５】
次に、本ＩＣカード２が対応するコマンドチェイニング（ｃｏｍｍａｎｄ  ｃｈａｉｎｉｎｇ）という仕様について詳細に説明する。  
コマンドチェイニングは、ＩＣカード２が連続する複数のコマンドで受信したデータを連結させ、連結したデータ全体を処理対象の１つのデータとしてコマンド処理を実行する仕様である。たとえば、「ｃｏｍｍａｎｄ  ｃｈａｉｎｉｎｇ」という仕様は、ＩＣカードの国際標準規格である「ＩＳＯ７８１６−４  Ｓｅｃｏｎｄ  ｅｄｉｔｉｏｎ」で規定されている。ここでは、コマンドチェイニングの仕様は、「ＩＳＯ７８１６−４  Ｓｅｃｏｎｄ  ｅｄｉｔｉｏｎ」で規定されている「ｃｏｍｍａｎｄ  ｃｈａｉｎｉｎｇ」の仕様を想定するものとする。
【００２６】
上記コマンドチェイニングは、複数のコマンドで１つのデータをＩＣカード２へ供給するために用いられる。つまり、上記コマンドチェイニングを用いれば、サイズが大きなサイズのデータであっても、複数のコマンドでＩＣカード２へ送信できる。たとえば、ＩＣカード処理装置１がコマンドチェイニングを用いて書込み用のデータを複数のコマンドに分けて送信すれば、ＩＣカード２では、コマンドチェイニングにより連結すべき複数のコマンドのデータを連結して書込み処理を実行する。
【００２７】
通常のＩＣカード処理システムでは、コマンドデータとして送信可能なデータサイズの上限が規定されている。このため、ＩＣカード処理装置１は、上限サイズを超えるサイズの大きなデータを複数のコマンドに分割してＩＣカード２へ送信する必要がある。言い換えれば、所定のコマンドデータの上限サイズを超えるサイズの大きなデータは、上記コマンドチェイニングにより連結される複数のコマンドデータとして複数のコマンドでＩＣカード２へ送信することが可能である。
【００２８】
ＩＣカード２では、コマンドチェイニングを指示するコマンドを受信した場合、当該コマンドのデータと次に受信するコマンドのデータとを順にＲＡＭ２４等にバッファリングする。これにより、ＩＣカード２では、コマンドチェイニングを指示されたコマンドのデータと次に受信するコマンドのデータとを連結させる。ＩＣカード２は、コマンドチェイニングで連結すべきデータを全て受信した後、連結したデータを用いたコマンドに応じた処理（たとえば、データの書込み処理）を実行する。
【００２９】
また、ＩＣカード２は、コマンドチェインニングで連結したデータに対する処理結果をＩＣカード処理装置１に送信する。たとえば、コマンドチェインニングで連結したデータに対する処理が正常に終了した場合、当該ＩＣカード２では、正常終了を示すステータスを送信する。コマンドチェインニングで連結したデータに対する処理中にエラーが発生した場合、当該ＩＣカード２は、エラーが発生したことを示すステータスだけでなく、エラー内容を示す情報もＩＣカード処理装置１へ送信する。つまり、本ＩＣカード２は、コマンドチェイニングで連結したデータに対する処理でエラーが発生した場合、単に、エラーが発生したことだけなく、エラーの具体的な内容をＩＣカード処理装置１へ通知する機能を有している。
【００３０】
上記エラー内容を示す情報は、ＩＣカード処理装置１がＩＣカード２に対して、当該処理の再度試行を効率良く行わせるために必要な情報である。たとえば、コマンドチェイニングで連結したデータを不揮発性メモリ２５に書込み処理においてエラーが発生した場合、エラー内容を示す情報は、書込みエラーとなったデータを示す情報が考えられる。書込みエラーとなったデータを示す情報としては、例えば、不揮発性メモリ２５における書込みエラーが発生したメモリアドレス、あるいは、連結したデータ（書込みデータ全体）の先頭から書込みエラーとなったデータまでのデータ長（オフセット）を示す情報などが考えられる。
【００３１】
次に、ＩＣカード２に与えられるコマンドのフォーマットについて説明する。  
図３は、コマンドフォーマットの構成例を示す図である。図３に示すコマンドは、「ＣＬＡ」部、「ＩＮＳ」部、「Ｐ１」部、「Ｐ２」部、「Ｌｃ」部、「Ｄａｔａ」部により構成される。
【００３２】
「ＣＬＡ」部および「ＩＮＳ」部は、コマンドの種類（実行すべき処理内容）を示す情報が格納される。上述したコマンドチェイニングの有無は、「ＣＬＡ」部に格納される情報により指定される。たとえば、「ＩＳＯ７８１６−４  Ｓｅｃｏｎｄ  ｅｄｉｔｉｏｎ」では、「ＣＬＡ」部に格納される情報が「０１ｘ１ｘｘｘｘ」である場合にはコマンドチェイニングを指示し、「０１ｘ０ｘｘｘｘ」である場合にはコマンドチェイニングしないことを指示するものと規定されている。なお、「ｘ」は任意の値を示すものとする。
【００３３】
また、「Ｐ１」部および「Ｐ２」部には、当該コマンドの処理パラメータを示す情報が格納される。「Ｌｃ」部には、当該コマンドにおけるデータの長さを示す情報が格納される。上記「Ｄａｔａ」部には、当該コマンドにおけるデータが格納される。たとえば、当該コマンドがデータの書込みを要求するコマンドである場合、書込むべきデータが「Ｄａｔａ」部に格納され、その「Ｄａｔａ」部に格納されたデータの長さ（サイズ）を示す情報が「Ｌｃ」部に格納される。
【００３４】
上記のように構成されるコマンドに対して、ＩＣカード２は、レスポンスを送信する。たとえば、コマンドで要求される処理を正常に実行した場合、ＩＣカード２は、正常終了を示すステータスワード（ＳＷ）（たとえば、「９０００」）を含むレスポンスデータをコマンドの送信元へ送信する。また、コマンドで要求されるデータの書込み処理がエラーとなった場合、ＩＣカード２は、書込みエラーとなったことを示すステータスワード（たとえば、「６５８１」）を含むレスポンスデータをコマンドの送信元へ送信する。
【００３５】
上記コマンドチェイニングを指示するコマンドを受信した場合、ＩＣカード２は、当該コマンドのデータのバッファリングが完了したのに基づいて、正常終了を示すステータスワード（たとえば、「９０００」）を含むレスポンスデータをコマンドの送信元へ送信する。このようなレスポンスデータを受けて、ＩＣカード処理装置１では、コマンドチェイニングで連結すべきデータを複数のコマンドで順次ＩＣカード２へ供給する。
【００３６】
コマンドチェイニング無しを指定するコマンドは、当該コマンドが次のコマンドと連鎖しないことを示す。つまり、コマンドチェイニング無しを指定するコマンドは、単独で実行すべきコマンド、あるいは、コマンドチェイニングにより連結される最後のデータを含むコマンドの何れかである。
【００３７】
すなわち、ＩＣカード処理装置１は、連結すべき最後のデータを含むコマンドにおいてコマンドチェイニング無しを指示することにより、連結したデータによる当該コマンドの実行を要求する。また、コマンドチェイニングにより連結したデータに対する処理でエラーが発生した場合、ＩＣカード２は、データ書込みがエラーとなったことを示すステータスワード（たとえば、「６５８１」）ととともに、エラー内容を示す情報を含むレスポンスデータをコマンドの送信元としてのＩＣカード処理装置１へ送信する。
【００３８】
次に、ＩＣカード２におけるコマンドチェイニングが指示されたコマンドに対する処理の流れについて説明する。  
図４は、ＩＣカード２におけるコマンド処理の流れを説明するためのフローチャートである。  
電源供給を受けているＩＣカード２では、待機状態において、通信インターフェース２２によりＩＣカード処理装置１からのコマンドが受信可能となっている（ステップＳ１１）。この状態においてＩＣカード処理装置１からのコマンドを上記通信インターフェース２２が受信した場合（ステップＳ１１、ＹＥＳ）、ＩＣカード２の制御部２１は、受信したコマンドがコマンドチェイニングの指示を含んでいるか否かを判断する（ステップＳ１２）。たとえば、制御部２１は、受信したコマンドのＣＬＡ部における特定ビットの値によりコマンドチェイニングが指示されているか否かを判断する。
【００３９】
上記判断によりコマンドチェイニングの指示が無いと判断した場合（ステップＳ１２、ＮＯ）、制御部２１は、当該受信したコマンドを単独で処理すべきであると判断する。この場合、制御部２１は、通常のコマンド処理として、受信したコマンドに応じた処理を実行する。
【００４０】
また、上記判断によりコマンドチェイニングの指示が有ると判断した場合（ステップＳ１２、ＹＥＳ）、制御部２１は、当該コマンドに対する処理として、通信インターフェース２２により受信するコマンドのデータをＲＡＭ２４にバッファリングする。制御部２１は、コマンドチェイニングが指示されている場合、当該コマンドのデータをＲＡＭ２４に正常に格納したのに基づいて当該コマンドが正常に処理されたものと判断する。従って、上記制御部２１は、コマンドのデータをＲＡＭ２４に正常に格納したのに基づいて、当該コマンドの正常終了を示すレスポンスをＩＣカード処理装置１へ送信する（ステップＳ１３）。
【００４１】
上記コマンドチェイニングが指示されているコマンドに対する正常終了を示すレスポンスを送信すると、制御部２１は、ＲＡＭ２４にバッファリングしたデータに連結するデータを含むコマンドの受信待ち状態となる（ステップＳ１４）。この状態において通信インターフェース２２によりコマンドを受信すると、制御部２１は、ＲＡＭ２４に格納済みのデータ（前回受信したコマンドのデータ）に連結させて、受信するコマンドのデータをＲＡＭ２４に格納する（ステップＳ１５）。
【００４２】
また、上記制御部２１は、受信したコマンドがさらにコマンドチェイニングの指示を含んでいるか否かを判断する（ステップＳ１６）。このステップＳ１６では、受信したコマンドがコマンドチェイニングの指示を含むか否かを上記ステップＳ１２と同様な手法で判断する。ただし、上記ステップＳ１６の判断は、前のコマンドと連結するコマンドに対する判断である。これは、上記ステップＳ１６では、受信したコマンドのデータがコマンドチェイニングにより連結すべき最後のデータであるか否かを判断することを意味している。
【００４３】
つまり、上記ステップＳ１６でコマンドチェイニングしないと判断した場合（受信したコマンドがコマンドチェイニングの指示を含まない場合）、制御部２１は、コマンドチェイニングにより連結すべき最後のデータであると判断する。  
上記ステップＳ１６で受信したコマンドがコマンドチェイニングの指示を含むと判断した場合（ステップＳ１６、ＹＥＳ）、制御部２１は、上記ステップＳ１３〜Ｓ１６の処理を繰り返し実行する。
【００４４】
上記ステップＳ１６で受信したコマンドがコマンドチェイニングの指示を含まないと判断した場合（ステップＳ１６、ＮＯ）、制御部２１は、当該受信コマンドのデータがコマンドチェイニングにより連結すべき最後のデータであると判断する。コマンドチェイニングにより連結すべき最後のデータを受信すると、制御部２１は、連結したデータ全体を用いたコマンド処理を実行する（ステップＳ１７）。たとえば、当該コマンドがデータの書込みを要求するコマンドである場合、制御部２１は、コマンド処理として、連結したデータ全体を不揮発性メモリ２５に書込む処理を実行する。
【００４５】
このようなコマンド処理が正常に完了した場合（ステップＳ１８、ＮＯ）、制御部２１は、受信したコマンドに対する処理が正常終了したことを示すステータスワード（例えば、９０００）を含むレスポンスデータをＩＣカード処理装置１へ送信する（ステップＳ１９）。
【００４６】
上記コマンド処理においてエラーが発生した場合（ステップＳ１８、ＹＥＳ）、制御部２１は、コマンド処理中に発生したエラーの具体的な内容を解析し、エラー内容の解析結果としてのエラー内容を示す情報を生成する（ステップＳ２０）。エラー内容を示す情報を生成すると、制御部２１は、受信したコマンドに対する処理がエラーとなったことを示すステータスワード（例えば、６５８１）とともに、発生したエラーの具体的な内容を示す情報（エラー内容を示す情報）を含むレスポンスデータをＩＣカード処理装置１へ送信する（ステップＳ２１）。
【００４７】
これにより、コマンドチェイニングにより連結するデータを複数のコマンドで送信したＩＣカード処理装置１では、コマンド処理を実行中にどのようなエラーが発生したかを具体的に判別することが可能となる。この結果として、ＩＣカード処理装置１では、単純にコマンドチェイニングを用いて送信した全てのコマンドを再送信することでリトライを実行するのではなく、実際に発生したエラー内容に応じたリトライ処理などのリカバリ処理を効率的に実施することができる。
【００４８】
次に、ＩＣカード処理システム全体におけるコマンドチェイニングを用いた処理の流れについて説明する。  
図５は、コマンドチェイニングにより連結するデータの書込み処理の流れを説明するためのシーケンス図である。  
まず、ＩＣカード処理装置１には、ＩＣカード２の不揮発性メモリ２５に書込むべき書込みデータをセットする（ステップＳ３１）。ここでは、セットされた書込データのサイズが３００バイトであるものとする。ここでは、１つのコマンドで送信可能な書込みデータの上限サイズが１００バイトであるものとする。
【００４９】
このような場合、ＩＣカード処理装置１の制御装置１１は、３００バイトの書込みデータを１００バイトを上限とした複数のデータに分割する。ＩＣカード処理装置１の制御装置１１は、分割した複数のデータを１つの書込みデータとしてＩＣカード２に書込み処理させるため、分割した各データをコマンドチェイニングで連結させる複数のコマンドのデータ部にそれぞれ格納する。ここでは、制御装置１１は、３００バイトの書込みデータを３つに分割し、分割した３つのデータをそれぞれコマンドチェイニングで連結させる３つのコマンド（第１、第２、第３コマンド）のデータ部に格納する（ステップＳ３２）。
【００５０】
コマンドチェイニングで連結させる複数のコマンドを生成すると、ＩＣカード処理装置１の制御装置１１は、各コマンドを順にＩＣカード２へ送信する。すなわち、ＩＣカード処理装置１の制御装置１１は、まず、ＣＬＡ部をコマンドチェイニング有りにセットし、かつ、データ部に１〜１００バイト目のデータを格納した第１コマンドをＩＣカード２へ送信する（ステップＳ３３）。
【００５１】
上記第１コマンドが供給されたＩＣカード２の制御部２１は、当該第１コマンドのＣＬＡ部の情報によりコマンドチェイニングが指示されていること判断する。この場合、ＩＣカード２の制御部２１は、受信する第１コマンドのデータ部に格納されているデータ（１〜１００バイト目の書込みデータ）をＲＡＭ２４にバッファリングする（ステップＳ３４）。このバッファリングが正常に完了すると、制御部２１は、第１コマンドに対する処理が正常終了したことを示すステータスワード（ＳＷ＝９０００）をセットしたレスポンスデータをＩＣカード処理装置１へ送信する。
【００５２】
ＩＣカード２から第１コマンドに対する正常終了を示すレスポンスデータを受信したＩＣカード処理装置１の制御装置１１は、ＣＬＡ部をコマンドチェイニング有りにセットし、かつ、データ部に１０１〜２００バイト目のデータを格納した第２コマンドをＩＣカード２へ送信する（ステップＳ３５）。
【００５３】
上記第２コマンドが供給されたＩＣカード２の制御部２１は、当該第２コマンドのＣＬＡ部の情報によりコマンドチェイニングが指示されていること判断する。この場合、ＩＣカード２の制御部２１は、第２コマンドのデータ部に格納されているデータ（１０１〜２００バイト目の書込みデータ）を第１コマンドのデータに連結させてＲＡＭ２４にバッファリングする（ステップＳ３６）。このバッファリングが正常に完了すると、ＩＣカード２の制御部２１は、第２コマンドに対する処理が正常終了したことを示すステータスワード（ＳＷ＝９０００）をセットしたレスポンスデータをＩＣカード処理装置１へ送信する。
【００５４】
ＩＣカード２から第２コマンドに対する正常終了を示すレスポンスデータを受信したＩＣカード処理装置１の制御装置１１は、ＣＬＡ部をコマンドチェイニング無しにセットし、かつ、データ部に２０１〜３００バイト目のデータを格納した第３コマンドをＩＣカード２へ送信する（ステップＳ３７）。
【００５５】
上記第３コマンドが供給されたＩＣカード２の制御部２１は、当該第３コマンドのＣＬＡ部の情報によりコマンドチェイニングが指示されていないこと判断する。この場合、ＩＣカード２の制御部２１は、第３コマンドがコマンドチェイニングする最後のコマンドであると判断する。すなわち、ＩＣカード２の制御部２１は、第３コマンドのデータ部に格納されているデータ（２０１〜３００バイト目の書込みデータ）を第２コマンドのデータに連結させてＲＡＭ２４にバッファリングする（ステップＳ３８）。このバッファリングが正常に完了すると、ＩＣカード２の制御部２１は、ＲＡＭ２４にバッファリングした書込みデータ（連結データ）全体を不揮発性メモリ２５に書込むコマンド処理を実行する（ステップＳ３９）。
【００５６】
ここで、連結したデータの実際の書込み処理中にエラーが発生したものとする。コマンドチェイニングで連結したデータの書込み処理中にエラーが発生した場合、ＩＣカード２の制御部２１は、エラー内容を解析する処理を行う（ステップＳ４０）。たとえば、書込み処理のエラー内容として、ＩＣカード２の制御部２１は、書込みがエラーとなったデータを解析するものとする。ここで、書込みデータ全体における先頭から１５１バイト目のデータの書込みがエラーとなったものとする。この場合、ＩＣカード２の制御部２１は、エラー内容として１５１バイト目が書込みエラーとなったことを示す情報を生成する。
【００５７】
このエラー内容を示す情報は、書込みエラーとなったデータを示す情報である。書込みエラーとなったデータを示す情報としては、たとえば、書込みデータ（連結したデータ）全体におけるオフセット値（データの先頭から何バイト目かを示す情報）が考えられる。また、書込みエラーとなったデータを示す情報としては、書込みエラーとなった不揮発性メモリにおけるメモリアドレスを示すようにしても良い。
【００５８】
コマンド処理におけるエラー内容を示す情報を生成すると、ＩＣカード２の制御部２１は、上記のようなエラー内容を示す情報をエラー通知とともに送信する（ステップＳ４１）。すなわち、ＩＣカード２の制御部２１は、第３コマンドに対する処理が書込み異常となったことを示すステータスワード（ＳＷ＝６５８１）とともに、エラー内容が１５１バイト目で書込みエラーとなったことを示す情報をセットしたレスポンスデータをＩＣカード処理装置１へ送信する。
【００５９】
ＩＣカード２から第３コマンドに対するエラー通知を含むレスポンスデータを受信したＩＣカード処理装置１の制御装置１１は、当該レスポンスデータに含まれるエラー内容を示す情報に基づいて続いて実行すべき処理（リカバリ処理）の内容を決定する（ステップＳ４２）。ここでは、リカバリ処理として、書込みエラーとなったデータの再書込み（リトライ）処理を行うものとする。従って、上述した動作例では、ＩＣカード処理装置１の制御装置１１は、ＩＣカード２から受信したエラー内容により送信した３００バイトの書込みデータのうち１５１バイト目で書込みエラーとなったことを判別する。この場合、ＩＣカード処理装置１の制御装置１１は、１５１バイト目以降のデータの再書込みをＩＣカードに実行させるためのコマンドを生成する。すなわち、ＩＣカード処理装置１の制御装置１１は、１５１バイト目以降のデータ（１５１〜３００バイト目のデータ）を書込みデータ（再書込みデータ）としてセットする（ステップＳ４２）。
【００６０】
このような場合、ＩＣカード処理装置１の制御装置１１は、１５０バイト分の再書込みデータを１００バイトを上限とした複数のデータに分割する。ＩＣカード処理装置１の制御装置１１は、分割した複数のデータを１つの書込みデータとしてＩＣカード２に書込み処理させるため、分割した各データをコマンドチェイニングで連結させる複数のコマンドのデータ部にそれぞれ格納する。ここでは、制御装置１１は、１５０バイトの書込みデータを２つに分割し、分割した２つのデータをそれぞれコマンドチェイニングで連結させる２つのコマンドのデータ部に格納する（ステップＳ４３）。
【００６１】
リトライ処理のためにコマンドとしてコマンドチェイニングで連結させる２つのコマンドを生成すると、ＩＣカード処理装置１の制御装置１１は、各コマンドを順にＩＣカード２へ送信する。すなわち、ＩＣカード処理装置１の制御装置１１は、まず、ＣＬＡ部をコマンドチェイニング有りにセットし、かつ、データ部に１５１〜２５０バイト目のデータを格納した第１リトライ用コマンドをＩＣカード２へ送信する（ステップＳ４４）。
【００６２】
上記第１リトライ用コマンドが供給されたＩＣカード２の制御部２１は、当該コマンドのＣＬＡ部の情報によりコマンドチェイニングが指示されていること判断する。この場合、ＩＣカード２の制御部２１は、受信する第１リトライ用コマンドのデータ部に格納されているデータ（１５１〜２５０バイト目の書込みデータ）をＲＡＭ２４にバッファリングする（ステップＳ４５）。このバッファリングが正常に完了すると、制御部２１は、第１リトライ用コマンドに対する処理が正常終了したことを示すステータスワード（ＳＷ＝９０００）をセットしたレスポンスデータをＩＣカード処理装置１へ送信する。
【００６３】
ＩＣカード２から第１リトライ用コマンドに対する正常終了を示すレスポンスデータを受信したＩＣカード処理装置１の制御装置１１は、ＣＬＡ部をコマンドチェイニング無しにセットし、かつ、データ部に２５１〜３００バイト目のデータを格納した第２リトライ用コマンドをＩＣカード２へ送信する（ステップＳ４６）。
【００６４】
上記第２リトライ用コマンドが供給されたＩＣカード２の制御部２１は、当該コマンドのＣＬＡ部の情報によりコマンドチェイニングが指示されていないこと判断する。この場合、ＩＣカード２の制御部２１は、第２リトライ用コマンドがコマンドチェイニングする最後のコマンドであると判断する。
【００６５】
すなわち、ＩＣカード２の制御部２１は、第２リトライ用コマンドのデータ部に格納されているデータ（２５１〜３００バイト目の書込みデータ）を第１リトライ用コマンドのデータに連結させてＲＡＭ２４にバッファリングする（ステップＳ４７）。このバッファリングが正常に完了すると、ＩＣカード２の制御部２１は、ＲＡＭ２４にバッファリングした再書込みデータ（連結データ）全体を先に書込んだ１５０バイト目のデータに続けて不揮発性メモリ２５に書込む処理を実行する（ステップＳ４８）。
【００６６】
上記のような書込み処理が正常に成功すると、ＩＣカード２の制御部２１は、第２リトライ用コマンドに対する処理が正常終了したことを示すステータスワード（ＳＷ＝９０００）をセットしたレスポンスデータをＩＣカード処理装置１へ送信する。これにより、３００バイト分の書込みデータを全てＩＣカード２の不揮発性メモリ２５に書込む処理が完了したこととなる。
【００６７】
なお、上記動作例では、上記ステップＳ４３〜Ｓ４７の処理において、書込みエラーとなった部分のデータをＩＣカード処理装置１からＩＣカード２へ再度送信するようにしたしている。これに対して、ＩＣカード２のバッファに書込みエラーとなった部分のデータが保持されている状態であれば、上記ステップＳ４３〜Ｓ４７に替わる処理として、ＩＣカード処理装置１は、エラー部分のデータを再送信することなく、バッファリングされているデータを用いてデータの再書込みを指示するコマンドをＩＣカード２に与えるようにしても良い。
【００６８】
通常、ＩＣカード２への電源が供給されている状態であれば、ＲＡＭ２４上にバッファリングされたデータは、通常、別のコマンドを受けるまで保持される。ただし、処理を確実に行うために、ＩＣカード２からは書込みデータを保持していることをエラー通知とともにＩＣカード処理装置１へ通知するようにしても良い。  
このような処理形態では、エラー発生した後もＩＣカード２が書込みデータ（連結したデータ）をＲＡＭ２４上に保持しておく必要があるが、ＩＣカード処理装置１からＩＣカード２へエラーとなったデータを再送信する必要がないため、リトライ処理が高速化できると考えられる。
【００６９】
上記のように、本実施の形態で説明したＩＣカード２は、コマンドチェイニングされた複数のコマンドに対する処理の実行中にエラーが発生した場合、エラーが発生したことを通知するだけでなく、エラーの具体的な内容もコマンドの送信元としてのＩＣカード処理装置１に送信するようにしたものである。これにより、ＩＣカード処理装置１では、ＩＣカード２から受信したエラー内容に応じた効率的なリカバリ処理を決定することが可能とする。この結果として、ＩＣカード処理システム全体では、コマンドチェイニングを用いたコマンドの処理を実行する場合にエラーが発生しても、効率的に処理を行うことが可能となる。
【００７０】
たとえば、ＩＣカード２は、コマンドチェイニングされた複数の書込みコマンドに対する書込み処理の実行中にエラーが発生した場合、エラー通知とともに、どのようなデータの書込み時にエラーが発生したか示す情報をコマンドの送信元としてのＩＣカード処理装置１に通知する。これにより、ＩＣカード処理装置１では、ＩＣカード２から受信したエラー内容に応じて再書込みすべきデータを特定でき、効率的なリトライ処理を行うためのコマンドをＩＣカード２に対して再供給することができる。この結果として、ＩＣカード処理システム全体では、コマンドチェイニングにより複数のコマンドでＩＣカード２に供給するサイズの大きなデータの書込み処理中にエラーが発生しても、効率的にデータの再書込み処理を行うことが可能となる。
【符号の説明】
【００７１】
１…ＩＣカード処理装置、２…ＩＣカード、Ｃ…本体、Ｍ…モジュール、Ｃａ…ＩＣチップ、２１…制御部、２２…通信インターフェース、２３…ＲＯＭ、２４…ＲＡＭ、２５…不揮発性メモリ。
【図１】
2011065471.tif 000003
【図２】
2011065471.tif 000004
【図３】
2011065471.tif 000005
【図４】
2011065471.tif 000006
【図５】
2011065471.tif 000007