(57)【要約】【課題】自己診断に要する処理時間を低減することができる携帯可能電子装置を提供することである。【解決手段】実施形態の携帯可能電子装置は、異常判定部と、診断処理部とを持つ。異常判定部は、ハードウェアに対する動作において異常が検出されたか否かを判定し、当該判定結果を示す診断情報を前記ハードウェアごとに記憶部に記憶させる。診断処理部は、起動時の自己診断において、前記異常判定部により判定された前記診断情報が異常と判定された判定結果である場合に、当該診断情報に対応する前記ハードウェアに関する診断処理を実行する。【選択図】図５
2016126441.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアに対する動作において異常が検出されたか否かを判定し、当該判定結果を示す診断情報を前記ハードウェアごとに記憶部に記憶させる異常判定部と、
起動時の自己診断において、前記異常判定部により判定された前記診断情報が異常と判定された判定結果である場合に、当該診断情報に対応する前記ハードウェアに関する診断処理を実行する診断処理部と
を備える携帯可能電子装置。
【請求項２】
前記診断処理部は、前記起動時の自己診断において、前記記憶部に記憶されている前記診断情報が正常であると判定された判定結果である場合に、当該診断情報に対応する前記ハードウェアに関する診断処理を実行しない
請求項１に記載の携帯可能電子装置。
【請求項３】
前記異常判定部は、外部装置から受信した処理要求であるコマンドに応じた処理を示すコマンド処理により前記ハードウェアが動作した際に、異常の検出を判定する
請求項１又は請求項２に記載の携帯可能電子装置。
【請求項４】
異常判定部は、異常が検出されたと判定した場合に、異常を示す前記診断情報を前記記憶部に記憶させ、正常であると判定した場合には、正常を示す前記診断情報を前記記憶部に記憶させない
請求項１から請求項３のいずれか一項に記載の携帯可能電子装置。
【請求項５】
前記診断処理部は、自己診断を処理要求する自己診断コマンドを受信した場合に、当該自己診断コマンドが要求する全ての診断処理を実行し、
前記異常判定部は、前記自己診断コマンドによる診断処理において、正常であると判定した場合に、正常を示す前記診断情報を前記記憶部に記憶させる
請求項１から請求項４のいずれか一項に記載の携帯可能電子装置。
【請求項６】
前記異常判定部は、所定の期間、前記診断情報の変更を実行しない
請求項１から請求項５のいずれか一項に記載の携帯可能電子装置。
【請求項７】
ハードウェアに対する動作において異常が検出されたか否かを判定し、当該判定結果を示す診断情報を前記ハードウェアごとに外部装置に送信させる異常判定部と、
起動時の自己診断において、複数の前記ハードウェアのうち、前記外部装置から指示された前記ハードウェアに関する診断処理を実行する診断処理部と
を備える携帯可能電子装置。
【請求項８】
情報を記憶する記憶部と、
ハードウェアに対する動作において異常が検出されたか否かを判定し、当該判定結果を示す診断情報を前記ハードウェアごとに記憶部に記憶させる異常判定部と、
起動時の自己診断において、前記異常判定部によって判定され、前記記憶部に記憶されている前記診断情報が異常と判定された判定結果である場合に、当該診断情報に対応する前記ハードウェアに関する診断処理を実行する診断処理部と
を備える携帯可能電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、携帯可能電子装置に関する。
【背景技術】
【０００２】
近年、ＩＣ（Integrated Circuit）チップを搭載したＩＣカードなどの携帯可能電子装置が普及している。携帯可能電子装置は、外部装置から受信したコマンドを処理し、コマンドに応じたレスポンスを送信させるコマンド処理を行う。また、自装置が備える各機能を自己診断する機能を備える携帯可能電子装置が知られている。しかしながら、従来の携帯可能電子装置では、例えば、携帯可能電子装置の高機能化などにより、起動時に実行される自己診断に要する処理時間が長くなる場合があった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２５２２８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、自己診断に要する処理時間を低減することができる携帯可能電子装置を提供することである。
【課題を解決するための手段】
【０００５】
実施形態の携帯可能電子装置は、異常判定部と、診断処理部とを持つ。異常判定部は、ハードウェアに対する動作において異常が検出されたか否かを判定し、当該判定結果を示す診断情報を前記ハードウェアごとに記憶部に記憶させる。診断処理部は、起動時の自己診断において、前記異常判定部により判定された前記診断情報が異常と判定された判定結果である場合に、当該診断情報に対応する前記ハードウェアに関する診断処理を実行する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態のＩＣカードの一例を示す外観図。
【図２】第１の実施形態のＩＣカードのハードウェア構成例を示す図。
【図３】第１の実施形態のＥＥＰＲＯＭの領域構成例を示す図。
【図４】第１の実施形態のシステム領域の情報例を示す図。
【図５】第１の実施形態のＩＣカードの機能構成例を示すブロック図。
【図６】第１の実施形態の診断情報領域のデータ例を示す図。
【図７】第１の実施形態のＥＥＰＲＯＭの書き込み処理の一例を示すフローチャート。
【図８】第１の実施形態の起動時の自己診断処理の一例を示すフローチャート。
【図９】第１の実施形態の自己診断コマンドによる自己診断処理の一例を示すフローチャート。
【図１０】第２の実施形態のＥＥＰＲＯＭの書き込み処理の一例を示すフローチャート。
【図１１】第３の実施形態の診断情報領域のデータ例を示す図。
【図１２】第３の実施形態のＥＥＰＲＯＭの書き込み処理の一例を示すフローチャート。
【図１３】第４の実施形態のＩＣカードシステムの一例を示す図。
【発明を実施するための形態】
【０００７】
以下、実施形態の携帯可能電子装置を、図面を参照して説明する。
【０００８】
（第１の実施形態）
図１は、第１の実施形態のＩＣカード１の一例を示す外観図である。
図１に示すように、ＩＣカード１は、ＩＣモジュール１０を備える。ＩＣモジュール１０は、ＩＣカード１が接触式ＩＣカードの場合は、コンタクト部３と、内部にＩＣチップ１００とを備える。なお、ＩＣカード１が非接触式ＩＣカードの場合は、ＩＣモジュール１０は、内部にアンテナ部とＩＣチップ１００とを備える。ＩＣカード１は、例えば、プラスチックのカード基材４（カード本体の一例）に、ＩＣモジュール１０を実装して形成されている。すなわち、ＩＣカード１は、ＩＣモジュール１０と、ＩＣモジュール１０が埋め込まれたカード基材４とを備えている。また、ＩＣカード１は、コンタクト部３を介して外部装置２と通信可能である。
なお、本実施形態では、携帯可能電子装置の一例として、ＩＣカード１について説明する。
【０００９】
ＩＣカード１は、例えば、外部装置２が送信したコマンド（処理要求）を、コンタクト部３を介して受信し、受信したコマンドに応じた処理（コマンド処理）を実行する。そして、ＩＣカード１は、コマンド処理の実行結果であるレスポンス（処理応答）を外部装置２にコンタクト部３を介して送信する。
ここで、外部装置２は、ＩＣカード１と通信する上位装置であり、例えば、リーダ／ライタ装置などである。
【００１０】
ＩＣモジュール１０は、コンタクト部３と、ＩＣチップ１００とを備え、例えば、テープ上にＩＣモジュール１０が複数配置されたＣＯＴ（Chip On Tape）などの形態で取引されるモジュールである。
コンタクト部３は、ＩＣカード１が動作するために必要な各種信号の端子を有している。ここで、各種信号の端子は、電源電圧、クロック信号、リセット信号などを外部装置２から供給を受ける端子、及び、外部装置２と通信するためのシリアルデ―タ入出力端子（ＳＩＯ端子）を有する。外部装置２から供給を受ける端子には、電源端子（ＶＤＤ端子、ＧＮＤ端子）、クロック信号端子（ＣＬＫ端子）、及びリセット信号端子（ＲＳＴ端子）が含まれる。
【００１１】
ＩＣチップ１００は、例えば、１チップのマイクロプロセッサなどのＬＳＩ（Large Scale Integration）である。
【００１２】
図２は、本実施形態のＩＣカード１のハードウェア構成例を示す図である。
この図に示すように、ＩＣチップ１００は、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）１１と、ＣＰＵ（Central Processing Unit）１２と、ＲＯＭ（Read Only Memory）１３と、ＲＡＭ（Random Access Memory）１４と、ＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）１５と、ＲＳＡコプロセッサ１６と、ＤＥＳコプロセッサ１７と、ＡＥＳコプロセッサ１８とを備えている。また、各構成要素（１１〜１８）は、内部バス１９を介して接続されている。
【００１３】
ＵＡＲＴ１１は、上述したＳＩＯ端子を介して、外部装置２とシリアルデータ通信を行う。ＵＡＲＴ１１は、ＳＩＯ端子を介して受信したシリアルデータ信号をパラレル変換したデータ（例えば、１バイトのデータ）を内部バス１９に出力する。また、ＵＡＲＴ１１は、内部バス１９を介して取得したデータをシリアル変換して、ＳＩＯ端子を介して外部装置２に出力する。ＵＡＲＴ１１は、例えば、ＳＩＯ端子を介してコマンドを外部装置２から受信する。また、ＵＡＲＴ１１は、ＳＩＯ端子を介してレスポンスを外部装置２から送信する。
【００１４】
ＣＰＵ１２は、ＲＯＭ１３又はＥＥＰＲＯＭ１５に記憶されているプログラムを実行して、ＩＣカード１の各種処理を行う。ＣＰＵ１２は、例えば、コンタクト部３を介して、ＵＡＲＴ１１が受信したコマンドに応じたコマンド処理を実行する。ＣＰＵ１２は、例えば、起動時などに、ＩＣカード１の自己診断を実行する。
【００１５】
ＲＯＭ１３は、例えば、マスクＲＯＭなどの不揮発性メモリであり、ＩＣカード１の各種処理を実行するためのプログラム、及びコマンドテーブルなどのデータを記憶する。
ＲＡＭ１４は、例えば、ＳＲＡＭ（Static RAM）などの揮発性メモリであり、ＩＣカード１の各種処理を行う際に利用されるデータを一時記憶する。ＲＡＭ１４は、例えば、受信用バッファ領域１４１と、送信用バッファ領域１４２と、作業用バッファ領域１４３とを備えている。
【００１６】
受信用バッファ領域１４１は、ＵＡＲＴ１１が受信したデータ（例えば、コマンドなど）を記憶する。
送信用バッファ領域１４２は、ＵＡＲＴ１１により送信するデータ（例えば、レスポンスなど）を記憶する。
作業用バッファ領域１４３は、ＣＰＵ１２が実行する各種処理の作業データ（ワークデータ）を記憶する。
【００１７】
ＥＥＰＲＯＭ１５（記憶部の一例）は、例えば、電気的に書き換え可能な不揮発性メモリ（不揮発性記憶部）である。ＥＥＰＲＯＭ１５は、ＩＣカード１を利用した各種サービス（アプリケーション）に使用される情報を記憶する。ＥＥＰＲＯＭ１５は、例えば、診断情報領域３０を備えており、後述する診断情報を記憶する。ここで、診断情報は、ハードウェア（例えば、ＲＯＭ１３、ＲＡＭ１４など）に対する動作において異常が検出されたか否かの判定結果を示す情報である。診断情報の詳細については、後述する。
【００１８】
ＲＳＡコプロセッサ１６は、ＲＳＡ暗号の処理（暗号処理及び復号処理）又は当該処理の一部を高速に行うための補助的な回路である。ＲＳＡコプロセッサ１６は、例えば、ＣＰＵ１２により指示されて、ＲＳＡ暗号処理又はＲＳＡ復号処理に関する処理を実行する。
【００１９】
ＤＥＳコプロセッサ１７は、ＤＥＳ（Data Encryption Standard）暗号の処理（暗号処理及び復号処理）又は当該処理の一部を高速に行うための補助的な回路である。ＤＥＳコプロセッサ１７は、例えば、ＣＰＵ１２により指示されて、ＤＥＳ暗号処理又はＤＥＳ復号処理に関する処理を実行する。
【００２０】
ＡＥＳコプロセッサ１８は、ＡＥＳ（Advanced Encryption Standard）暗号の処理（暗号処理及び復号処理）又は当該処理の一部を高速に行うための補助的な回路である。ＡＥＳコプロセッサ１８は、例えば、ＣＰＵ１２により指示されて、ＡＥＳ暗号処理又はＡＥＳ復号処理に関する処理を実行する。
内部バス１９は、例えば、内部バス１９に接続された各部の間におけるデータ転送を行うバスである。
【００２１】
次に、図３を参照して、ＥＥＰＲＯＭ１５の領域構成例について説明する。
図３は、本実施形態のＥＥＰＲＯＭ１５の領域構成例を示す図である。
この図に示すように、ＥＥＰＲＯＭ１５は、システム領域Ａ１と、ユーザ領域Ａ２とを含んでいる。
【００２２】
システム領域Ａ１は、ＩＣカード１のＯＳ（Operating System）によって利用される情報を記憶する情報領域である。システム領域Ａ１は、例えば、ＩＣカード１の発行時に情報が記憶される。また、システム領域Ａ１は、例えば、図４に示すような情報を記憶している。
【００２３】
図４は、本実施形態のシステム領域Ａ１の情報例を示す図である。
この図において、「開始アドレス」は、例えば、情報を記憶するＥＥＰＲＯＭ１５上の先頭の物理アドレスを示している。また、「名称」は、当該情報の名称（情報名）を示し、「初期値」は、当該情報の初期値（発行完了時の値）を示している。
【００２４】
図４に示す例では、システム領域Ａ１には、“製造フェーズ情報”、“ＡＴＲ（Ｗａｒｍ）情報”、“ＡＴＲ（Ｃｏｌｄ）情報”、及び“診断情報”などが記憶されている。ここで、ＡＴＲ（Answer to Reset）は、ＩＣカード１の活性化時（起動時）の初期応答情報である。また、“ＡＴＲ（Ｃｏｌｄ）情報”は、コールドリセット時のＡＴＲ情報であり、“ＡＴＲ（Ｗａｒｍ）情報”は、ウォームリセット時のＡＴＲ情報である。
なお、コールドリセットとは、電源電圧がコンタクト部３から最初に供給された場合のリセットのことである。また、ウォームリセットとは、コールドリセット後に、電源電圧の供給が維持された状態でＩＣカード１にリセット信号が再供給された場合のリセットのことである。
【００２５】
図４に示す例では、“診断情報”の「開始アドレス」が“０ｘＸＸＸ０３Ｄ”であり、「初期値」が“０ｘ００”である。なお、ここでの“０ｘ”は、ヘキサデシマル（１６進数）を示す。
【００２６】
図３の説明に戻り、ユーザ領域Ａ２は、ＩＣカード１を利用した各種サービス（アプリケーション）に使用される情報を記憶する情報領域である。ユーザ領域Ａ２は、例えば、ファイル定義情報領域Ａ２１と、データ領域Ａ２２と、空き領域Ａ２３とを含んでいる。
ファイル定義情報領域Ａ２１は、データ領域Ａ２２のファイル（例えば、ＥＦ（Elementary File）など）を定義するディレクトリ情報を記憶する。
【００２７】
データ領域Ａ２２は、各種サービス（アプリケーション）に使用される情報の管理情報及びデータ本体をファイルとして記憶する。
空き領域Ａ２３は、未使用の領域であり、例えば、ファイルの追加により、当該領域の大きさが減少する。なお、図３において、位置Ｐ１は、ディレクトリ情報を記憶する開始ポインタの位置を示し、位置Ｐ２は、ディレクトリ情報の最終ポインタの位置（次回に追加する位置）を示している。この開始ポインタ及び最終ポインタの値（情報）は、例えば、システム領域Ａ１に記憶されている。
【００２８】
次に、図５を参照して、本実施形態のＩＣカード１の機能構成例について説明する。
図５は、本実施形態のＩＣカード１の機能構成例を示すブロック図である。
この図に示すように、ＩＣカード１（ＩＣチップ１００）は、診断情報領域３０と、制御部４０とを備えている。
ここで、図５に示される各部は、図２に示されるハードウェアを用いて実現される。
【００２９】
診断情報領域３０は、ＥＥＰＲＯＭ１５内の一部領域であり、上述したようにＩＣカード１が備えるハードウェアに対する動作において異常が検出されたか否かの判定結果を示す情報である。診断情報領域３０は、自己診断を実行可能な各ハードウェアにおける判定結果を示す診断情報を、図６に示すように、ハードウェアごとに記憶する。
【００３０】
図６は、本実施形態の診断情報領域３０のデータ例を示す図である。
この図において、診断情報は８ビットのデータである。ここで、「ビット位置」は、診断情報８ビットのうちのどの位置のビットであるかを“ｂｉｔ１”〜“ｂｉｔ８”により表している。また、「ビット情報」は、各ビットに対応する診断情報の名称を示し、「内容」は、各診断情報の“０”及び“１”の意味を示している。
【００３１】
なお、本実施形態では、自己診断を実行可能なハードウェアは、ＲＯＭ１３、ＲＡＭ１４、ＥＥＰＲＯＭ１５、ＲＳＡコプロセッサ１６、ＤＥＳコプロセッサ１７、及びＡＥＳコプロセッサ１８の６つである場合の一例について説明する。
図６に示すように、診断情報領域３０の診断情報である各ビット（“ｂｉｔ１”〜“ｂｉｔ６”）のそれぞれは、上述したハードウェアに対応するＲＯＭ診断情報、ＲＡＭ診断情報、ＥＥＰＲＯＭ診断情報、ＲＳＡ診断情報、ＤＥＳ診断情報、及びＡＥＳ診断情報である。“ｂｉｔ１”〜“ｂｉｔ６”の各ビットは、診断結果が正常であると判定された場合に、“０”が記憶され、診断結果が異常であると判定された場合に、“１”が記憶される。
なお、この図において、“−（ＲＦＵ：Reserved for Future Use）”は、未使用の予備のビットを示している。したがって、“ｂｉｔ７”及び“ｂｉｔ８”は、“０”固定である。
【００３２】
図５の説明に戻り、制御部４０は、ＣＰＵ１２にＲＯＭ１３又はＥＥＰＲＯＭ１５に記憶されているプログラムを実行させて、上述したハードウェアを利用して各種処理を実行する。制御部４０は、例えば、通信処理部４１と、コマンド処理部４２と、異常判定部４３と、診断処理部４４とを備えている。
【００３３】
通信処理部４１は、例えば、ＵＡＲＴ１１と、ＣＰＵ１２と、ＲＯＭ１３に記憶されているプログラムとにより実現され、コンタクト部３を介して、例えば、外部装置２との間でコマンド及びレスポンスの送受信を行う。通信処理部４１は、例えば、ＵＡＲＴ１１を介して外部装置２から受信したコマンドを受信用バッファ領域１４１に記憶させる。また、通信処理部４１は、例えば、送信用バッファ領域１４２に記憶されているレスポンスを、ＵＡＲＴ１１を介して外部装置２に送信する。
【００３４】
コマンド処理部４２は、ＣＰＵ１２の制御により、コマンドの処理（コマンド処理）を実行する。ここで、コマンド処理とは、外部装置２から受信した処理要求であるコマンドに応じた処理を示す。なお、暗号処理や復号処理などの所定の処理については、コマンド処理部４２は、ＣＰＵ１２の制御により、ＲＳＡコプロセッサ１６、ＤＥＳコプロセッサ１７、又はＡＥＳコプロセッサ１８に、例えば、処理の一部を実行させる。
なお、コマンド処理部４２は、例えば、自己診断を処理要求する自己診断コマンドを受信した場合に、診断処理部４４に自己診断処理を実行させる。
【００３５】
異常判定部４３は、ハードウェアに対する動作において異常が検出されたか否かを判定し、当該判定結果を示す診断情報をハードウェアごとにＥＥＰＲＯＭ１５の診断情報領域３０に記憶させる。異常判定部４３は、例えば、上述したコマンド処理部４２により実行されるコマンド処理によりハードウェアが動作した際に、異常検出を判定する。異常判定部４３は、例えば、コマンド処理において、異常が検出されたと判定した場合に、異常を示す診断情報を診断情報領域３０に記憶させ、正常であると判定した場合には、正常を示す診断情報を診断情報領域３０に記憶させない。なお、異常判定部４３は、異常が検出されたと判定した場合に、当該ハードウェアに対応する診断情報のビットに、“１”を記憶させる。例えば、ＥＥＰＲＯＭ１５にデータを書き込むコマンド処理において、書き込みエラー（異常）が発生した場合に、異常判定部４３は、ＥＥＰＲＯＭ１５に対応する診断情報領域３０の“ｂｉｔ３”に“１”を記憶させる。
【００３６】
また、異常判定部４３は、上述した自己診断コマンドによる診断処理において、正常であると判定した場合に、正常を示す診断情報を診断情報領域３０に記憶させる。すなわち、異常判定部４３は、自己診断コマンドによる診断処理において、正常であると判定した場合に、当該ハードウェアに対応する診断情報のビットに“０”を記憶させる。
【００３７】
診断処理部４４は、例えば、ＩＣカード１の起動時や上述した自己診断コマンドを受信した際に、ＩＣカード１の機能を自己診断する。診断処理部４４は、ＩＣカード１の起動時の自己診断において、診断情報領域３０に記憶されている診断情報を取得し、当該診断情報が異常と判定された判定結果である場合に、当該診断情報に対応するハードウェアに関する診断処理を実行する。また、診断処理部４４は、起動時の自己診断において、診断情報領域３０に記憶されている診断情報が正常であると判定された判定結果である場合に、当該診断情報に対応するハードウェアに関する診断処理を実行しない。
【００３８】
例えば、ＲＯＭ１３に対応する診断情報の“ｂｉｔ１”が“１”である場合に、診断処理部４４は、起動時の自己診断において、ＲＯＭ１３に関する自己診断を実行する。ここで、ＲＯＭ１３に関する自己診断とは、例えば、ＲＯＭ１３に記憶されているデータのサムチェックである。また、例えば、ＲＯＭ１３に対応する診断情報の“ｂｉｔ１”が“０”である場合に、診断処理部４４は、起動時の自己診断において、ＲＯＭ１３に関する自己診断を実行せずに省略する。診断処理部４４は、ＲＯＭ１３以外のハードウェアについても同様に、診断情報領域３０に記憶されている診断情報の値に応じて、当該ハードウェアに関する自己診断を実行する又は省略する。
【００３９】
なお、診断処理部４４は、各ハードウェアに関する自己診断として、以下のような処理が実行する。
診断処理部４４は、ＲＡＭ１３に関して、テストパターン（例えば、０ｘ００、０ｘ５５、０ｘＡＡ、０ｘＦＦなど）を書き込みできるか否かを自己診断する。
また、診断処理部４４は、ＥＥＰＲＯＭ１５に関して、例えば、テストパターンを書き込みできるか否か、書き込み電圧が正常に出力されているか否かなどを自己診断する。
【００４０】
また、診断処理部４４は、ＲＳＡコプロセッサ１６、ＤＥＳコプロセッサ１７、及びＡＥＳコプロセッサ１８に関して、例えば、自己診断モードの処理を実行させて、正常終了したことを示すステータスが出力されるか否かにより自己診断する。ここで、診断処理部４４は、例えば、正常終了したことを示すステータスフラグの値を確認することにより、正常終了したか否かを判定してもよい。ここで、ステータスフラグの値は、ハードウェアに対する動作において異常が検出されたか否かを示す情報に含まれる。
なお、診断処理部４４は、上述した診断情報の値に応じて実行する自己診断であるハードウェアに関する自己診断の他に、起動時に常に実行する自己診断を実行する。ここで、起動時に常に実行する自己診断は、例えば、ソフト処理による自己診断（システム領域Ａ１の整合性チェックなど）等の診断処理である。
【００４１】
また、診断処理部４４は、上述した自己診断コマンドを受信した場合に、当該自己診断コマンドが要求する全ての診断処理を実行する。すなわち、診断処理部４４は、自己診断コマンドに基づく自己診断において、診断情報領域３０の診断情報とは関係なしに、全ての診断処理を実行する。
【００４２】
次に、本実施形態のＩＣカード１の動作について、図面を参照して説明する。
図７は、本実施形態のＥＥＰＲＯＭ１５の書き込み処理の一例を示すフローチャートである。
この図に示す例では、通信処理部４１が、ＥＥＰＲＯＭ１５の書き込み処理を行うコマンドを外部装置２から受信した場合の一例について説明する。この場合、通信処理部４１は、ＵＡＲＴ１１を介して受信したコマンドを受信用バッファ領域１４１に記憶させる。そして、コマンド処理部４２が受信したコマンドに対応する処理（ＥＥＰＲＯＭ書き込み処理）を実行する。
【００４３】
ＥＥＰＲＯＭ書き込み処理において、コマンド処理部４２は、まず、ＥＥＰＲＯＭ１５に書き込みを実行する（ステップＳ１０１）。すなわち、コマンド処理部４２は、受信用バッファ領域１４１に記憶されているデータのうち、ＥＥＰＲＯＭ１５に書き込むデータ及び書き込み先（例えば、論理アドレス）を取得する。コマンド処理部４２は、取得したＥＥＰＲＯＭ１５の書き込み先に、取得したデータの書き込み処理を実行する。
【００４４】
次に、異常判定部４３は、上述したデータの書き込み処理が正常に終了（正常終了）したか否かを判定する（ステップＳ１０２）。ここで、異常判定部４３は、書き込みデータのベリファイチェックを実行して、正常終了したか否かを判定してもよいし、データの書き込み処理が、ベリファイ処理を含んだ所定のサブルーチンコールにより実行され、当該サブルーチンコールの戻り値に基づいて、正常終了したか否かを判定してもよい。ここで、サブルーチンコールの戻り値は、ハードウェアに対する動作において異常が検出されたか否かを示す情報に含まれる。異常判定部４３は、戻り値を取得し、当該戻り値に基づいて正常終了したか否かの判定結果を判定する。
異常判定部４３は、書き込み処理が正常終了した場合（ステップＳ１０２：ＹＥＳ）に、処理を終了させる。また、異常判定部４３は、書き込み処理が正常終了していない場合（ステップＳ１０２：ＮＯ）に、異常が検出されたと判定して処理をステップＳ１０３に進める。
【００４５】
ステップＳ１０３において、異常判定部４３は、異常を診断情報領域３０（ＥＥＰＲＯＭ１５）に記憶させる。すなわち、異常判定部４３は、ＥＥＰＲＯＭ１５に対応する診断情報の“ｂｉｔ３”に“１”を記憶させる。ステップＳ１０３の処理後に、異常判定部４３は、処理を終了させる。
なお、図７に示すＥＥＰＲＯＭ１５の書き込み処理の後、コマンド処理部４２は、処理の実行結果であるステータス情報を含むレスポンスを送信用バッファ領域１４２に記憶させる。そして、通信処理部４１が、送信用バッファ領域１４２に記憶されているレスポンスを、ＵＡＲＴ１１を介して外部装置２に送信する。
【００４６】
図７に示す例では、一例としてＥＥＰＲＯＭ１５の書き込み処理について説明したが、他のハードウェアを動作させるコマンド処理についても同様である。
【００４７】
次に、図８を参照して、本実施形態のＩＣカード１の起動時における自己診断処理について説明する。
図８は、本実施形態の起動時の自己診断処理の一例を示すフローチャートである。
ＩＣカード１は、起動時（活性化時）に、自己診断処理を実行する。
この図に示すように、診断処理部４４は、まず、変数ｉを初期化（ｉ＝１）する（ステップＳ２０１）。
【００４８】
次に、診断処理部４４は、診断情報の“ｂｉｔｉ”が“１”であるか否かを判定する（ステップＳ２０２）。すなわち、診断処理部４４は、診断情報領域３０に記憶されている診断情報の“ｂｉｔｉ”の値を読み出して、当該“ｂｉｔｉ”の値が“１”であるか否かを判定する。診断処理部４４は、“ｂｉｔｉ”が“１”である場合（ステップＳ２０２：ＹＥＳ）に、処理をステップＳ２０３に進める。また、診断処理部４４は、“ｂｉｔｉ”が“０”である場合（ステップＳ２０２：ＮＯ）に、処理をステップＳ２０５に進める。
【００４９】
また、ステップＳ２０３において、診断処理部４４は、“ｂｉｔｉ”に対応する自己診断を実行する。すなわち、診断処理部４４は、“ｂｉｔｉ”に対応するハードウェアに関する自己診断処理を実行する。
【００５０】
次に、診断処理部４４は、診断結果が正常であるか否かを判定する（ステップＳ２０４）。診断処理部４４は、自己診断処理の診断結果が正常である場合（ステップＳ２０４：ＹＥＳ）に、処理をステップＳ２０６に進める。また、診断処理部４４は、自己診断処理の診断結果が正常でない（異常である）場合（ステップＳ２０４：ＮＯ）に、処理をステップＳ２０５に進める。
【００５１】
ステップＳ２０５において、診断処理部４４は、異常処理を実行して、処理を終了する。
また、ステップＳ２０６において、診断処理部４４は、変数ｉに“１”を加算して、変数ｉを更新する（ｉ＝ｉ＋１）。
【００５２】
次に、診断処理部４４は、変数ｉが“６”より大きい（ｉ＞６）か否かを判定する（ステップＳ２０７）。診断処理部４４は、変数ｉが“６”より大きい（ｉ＞６）場合（ステップＳ２０７：ＹＥＳ）に、処理をステップＳ２０８に進める。また、診断処理部４４は、変数ｉが“６”以下（ｉ≦６）場合（ステップＳ２０７：ＮＯ）に、処理をステップＳ２０２に戻し、ステップＳ２０２からステップＳ２０７までの処理を繰り返えさせる。
【００５３】
ステップＳ２０８において、診断処理部４４は、必須診断項目の自己診断を実行する。ここで、必須診断項目の自己診断は、例えば、上述したソフト処理による自己診断であるシステム領域Ａ１の整合性チェックなどである。
【００５４】
次に、診断処理部４４は、診断結果が正常であるか否かを判定する（ステップＳ２０９）。すなわち、診断処理部４４は、必須診断項目の自己診断の結果が正常終了であるか否かを判定する。診断処理部４４は、診断結果が正常である場合（ステップＳ２０９：ＹＥＳ）に、起動時の自己診断処理を終了し、次の処理（例えば、ＡＴＲの送信処理など）に進める。また、診断処理部４４は、診断結果が正常でない（異常である）場合（ステップＳ２０９：ＮＯ）に、処理をステップＳ２０５に進め、ステップＳ２０５の処理後に、起動時の自己診断処理を終了する。
【００５５】
このように、診断処理部４４は、起動時において、“ｂｉｔｉ”の値が“１”である場合（コマンド処理などで異常が発生している場合）に、当該“ｂｉｔｉ”に対応するハードウェアに関する自己診断を実施する。また、診断処理部４４は、“ｂｉｔｉ”の値が“０”である場合（コマンド処理などで異常が発生していない場合）に、当該“ｂｉｔｉ”に対応するハードウェアに関する自己診断を省略する。
【００５６】
次に、図９を参照して、本実施形態のＩＣカード１の自己診断コマンドの自己診断処理について説明する。
図９は、本実施形態の自己診断コマンドによる自己診断処理の一例を示すフローチャートである。
この図に示す例では、通信処理部４１が、自己診断コマンドを外部装置２から受信した場合の一例について説明する。
【００５７】
コマンド処理部４２は、自己診断コマンドを受信した場合に、まず、変数ｉを初期化（ｉ＝１）する（ステップＳ３０１）。
次に、コマンド処理部４２は、診断処理部４４に自己診断（ｉ）を実行させる（ステップＳ３０２）。すなわち、診断処理部４４は、診断情報領域３０に記憶される診断情報の“ｂｉｔｉ”に対応するハードウェアに関する診断処理を実行する。
【００５８】
次に、異常判定部４３は、上述した自己診断（ｉ）の診断処理の診断結果が正常であるか否かを判定する（ステップＳ３０３）。異常判定部４３は、診断結果が正常である場合（ステップＳ３０３：ＹＥＳ）に、処理をステップＳ３０６に進める。また、異常判定部４３は、診断結果が正常でない（異常である）場合（ステップＳ３０３：ＮＯ）に、処理をステップＳ３０４に進める。
【００５９】
ステップＳ３０４において、異常判定部４３は、診断情報領域３０の“ｂｉｔｉ”に“１”を記憶させる。すなわち、異常判定部４３は、異常があると判定された自己診断（ｉ）のハードウェアに対応する“ｂｉｔｉ”を“１”に変更する。
次に、診断処理部４４は、異常処理を実行して（ステップＳ３０５）、処理を終了する。
【００６０】
また、ステップＳ３０６において、異常判定部４３は、診断情報領域３０の“ｂｉｔｉ”に“０”を記憶させる。すなわち、異常判定部４３は、正常であると判定された自己診断（ｉ）のハードウェアに対応する“ｂｉｔｉ”を“０”に変更する。
【００６１】
次に、コマンド処理部４２は、変数ｉに“１”を加算して、変数ｉを更新する（ステップＳ３０７）。
次に、コマンド処理部４２は、変数ｉが“６”より大きい（ｉ＞６）か否かを判定する（ステップＳ３０８）。コマンド処理部４２は、変数ｉが“６”より大きい（ｉ＞６）場合（ステップＳ３０８：ＹＥＳ）に、処理をステップＳ３０９に進める。また、コマンド処理部４２は、変数ｉが“６”以下（ｉ≦６）場合（ステップＳ３０８：ＮＯ）に、処理をステップＳ３０２に戻し、ステップＳ３０２からステップＳ３０８までの処理を繰り返えさせる。
【００６２】
ステップＳ３０９において、コマンド処理部４２は、診断処理部４４に必須診断項目の自己診断を実行させる。すなわち、診断処理部４４は、必須診断項目の自己診断を実行する。ここで、必須診断項目の自己診断は、例えば、上述したソフト処理による自己診断であるシステム領域Ａ１の整合性チェックなどである。
【００６３】
次に、診断処理部４４は、診断結果が正常であるか否かを判定する（ステップＳ３１０）。すなわち、診断処理部４４は、必須診断項目の自己診断の結果が正常終了であるか否かを判定する。診断処理部４４は、診断結果が正常である場合（ステップＳ３１０：ＹＥＳ）に、自己診断コマンドによる自己診断処理を終了する。また、診断処理部４４は、診断結果が正常でない（異常である）場合（ステップＳ３１０：ＮＯ）に、処理をステップＳ３０５に進め、ステップＳ３０５の処理後に、自己診断コマンドによる自己診断処理を終了する。
【００６４】
なお、図９に示す自己診断コマンドによる自己診断処理の後、コマンド処理部４２は、処理の実行結果であるステータス情報を含むレスポンスを送信用バッファ領域１４２に記憶させる。そして、通信処理部４１が、送信用バッファ領域１４２に記憶されているレスポンスを、ＵＡＲＴ１１を介して外部装置２に送信する。
【００６５】
このように、診断処理部４４は、自己診断を処理要求する自己診断コマンドを受信した場合に、当該自己診断コマンドが要求する全ての診断処理を実行する。そして、異常判定部４３は、自己診断コマンドによる診断処理において、判定結果が正常であると判定した場合に、正常を示す診断情報（例えば、“０”）を診断情報領域３０（正常であると判定されたハードウェアに対応するビット）に記憶させる。
【００６６】
以上説明したように、本実施形態によるＩＣカード１は、異常判定部４３と、診断処理部４４とを備えている。異常判定部４３は、ハードウェアに対する動作において異常が検出されたか否かを判定し、当該判定結果を示す診断情報をハードウェアごとにＥＥＰＲＯＭ１５（診断情報領域３０）に記憶させる。診断処理部４４は、起動時の自己診断において、ＥＥＰＲＯＭ１５に記憶されている診断情報が異常と判定された判定結果（例えば、“ｂｉｔｉ”が“１”）である場合に、当該診断情報に対応するハードウェアに関する診断処理を実行する。また、診断処理部４４は、起動時の自己診断において、ＥＥＰＲＯＭ１５に記憶されている診断情報が正常であると判定された判定結果（例えば、“ｂｉｔｉ”が“０”）である場合に、当該診断情報に対応するハードウェアに関する診断処理を実行しない。
【００６７】
これにより、本実施形態によるＩＣカード１は、起動時の自己診断において、過去に異常が発生したハードウェアに関する診断処理を実行し、過去に異常が発生していないハードウェアに関する診断処理を省略する。よって、本実施形態によるＩＣカード１は、自己診断に要する処理時間を低減することができる。なお、ハードウェアに関する診断処理は、ソフトウェアに関する診断処理に比べて時間が掛かることが多い。そのため、本実施形態によるＩＣカード１は、ハードウェアに関する診断処理を取捨選択して実行することにより、信頼性とのバランスを取りながら適切に自己診断に要する処理時間を低減することができる。
また、自己診断に要する処理時間を低減することにより、起動時の処理時間が短縮されるので、本実施形態によるＩＣカード１は、利便性を向上させることができる。
【００６８】
また、本実施形態では、異常判定部４３は、外部装置２から受信した処理要求であるコマンドに応じた処理を示すコマンド処理によりハードウェアが動作した際に、異常の検出を判定する。
これにより、本実施形態によるＩＣカード１は、コマンド処理により、例えば、ハードウェアの経年変化による異常を適切に検出するので、信頼性とのバランスを取りながら適切に自己診断に要する処理時間を低減することができる。
【００６９】
また、本実施形態では、異常判定部４３は、異常が検出されたと判定した場合に、異常を示す診断情報（例えば、“１”）をＥＥＰＲＯＭ１５（診断情報領域３０）に記憶させ、正常であると判定した場合には、正常を示す診断情報（例えば、“０”）をＥＥＰＲＯＭ１５に記憶させない。
これにより、異常が発生したハードウェアに対して、例えば、以降に正常であると判定された場合であっても、本実施形態によるＩＣカード１は、当該ハードウェアに関する診断処理を実行する（省略しない）。そのため、本実施形態によるＩＣカード１は、ハードウェアを動作させる処理の信頼性を高めることができる。
【００７０】
また、本実施形態では、診断処理部４４は、自己診断を処理要求する自己診断コマンドを受信した場合に、当該自己診断コマンドが要求する全ての診断処理を実行する。そして。異常判定部４３は、自己診断コマンドによる診断処理において、正常であると判定した場合に、正常を示す診断情報をＥＥＰＲＯＭ１５に記憶させる。
これにより、本実施形態によるＩＣカード１は、一度異常を検出したハードウェアに関する診断処理を、再確認した結果が正常であった場合に、当該ハードウェアに関する診断処理を、起動時の診断処理の対象から適切に除外することができる。
【００７１】
（第２の実施形態）
次に、第２の実施形態のＩＣカード１について、図面を参照して説明する。
上述した第１の実施形態では、異常判定部４３が、コマンド処理において、ハードウェアが正常であると判定した場合に、診断情報領域３０の診断情報を変更しない例を説明したが、ハードウェアが正常であると判定した場合に診断情報を変更するようにしてもよい。本実施形態のＩＣカード１は、コマンド処理において、ハードウェアが正常であると判定した場合に診断情報領域３０の診断情報を変更する場合の一例について説明する。
なお、本実施形態のＩＣカード１のハードウェア構成及び機能構成は、第１の実施形態と同様であるので、ここではその説明を省略する。
【００７２】
図１０は、本実施形態のＥＥＰＲＯＭ１５の書き込み処理の一例を示すフローチャートである。
この図に示す例では、上述した図７に示す例と同様に、通信処理部４１が、ＥＥＰＲＯＭ１５の書き込み処理を行うコマンドを外部装置２から受信した場合の一例について説明する。
【００７３】
また、この図において、ステップＳ４０１からステップＳ４０３までの処理は、上述した図７に示すステップＳ１０１からステップＳ１０３までの処理と同様であるので、ここではその説明を省略する。
但し、本実施形態では、ステップＳ４０２において、異常判定部４３は、書き込み処理が正常終了した場合（ステップＳ４０２：ＹＥＳ）に、処理をステップＳ４０４に進める。
【００７４】
ステップＳ４０４において、異常判定部４３は、正常を診断情報領域３０（ＥＥＰＲＯＭ１５）に記憶させる。すなわち、異常判定部４３は、ＥＥＰＲＯＭ１５に対応する診断情報の“ｂｉｔ３”に“０”を記憶させる。ステップＳ４０４の処理後に、異常判定部４３は、処理を終了させる。
【００７５】
なお、図１０に示すＥＥＰＲＯＭ１５の書き込み処理の後、コマンド処理部４２は、処理の実行結果であるステータス情報を含むレスポンスを送信用バッファ領域１４２に記憶させる。そして、通信処理部４１が、送信用バッファ領域１４２に記憶されているレスポンスを、ＵＡＲＴ１１を介して外部装置２に送信する。
図１０に示す例では、一例としてＥＥＰＲＯＭ１５の書き込み処理について説明したが、他のハードウェアを動作させるコマンド処理についても同様である。
また、本実施形態のＩＣカード１の起動時における自己診断処理、及び自己診断コマンドの自己診断処理は、第１の実施形態と同様であるので、ここではその説明を省略する。
【００７６】
以上説明したように、本実施形態では、異常判定部４３は、外部装置２から受信した処理要求であるコマンドに応じた処理を示すコマンド処理によりハードウェアが動作した際に、異常の検出を判定する。そして、異常判定部４３は、当該ハードウェアの動作が正常であると判定した場合には、正常を示す診断情報（例えば、“０”）を診断情報領域３０（ＥＥＰＲＯＭ１５）に記憶させる。
これにより、本実施形態のＩＣカード１は、一度異常を検出したハードウェアに関する診断処理を、再確認した結果が正常であった場合に、当該ハードウェアに関する診断処理を、起動時の診断処理の対象から適切に除外することができる。
【００７７】
また、本実施形態では、第１の実施形態と同様に、診断処理部４４は、起動時の自己診断において、ＥＥＰＲＯＭ１５に記憶されている診断情報が異常と判定された判定結果（例えば、“ｂｉｔｉ”が“１”）である場合に、当該診断情報に対応するハードウェアに関する診断処理を実行する。また、診断処理部４４は、起動時の自己診断において、ＥＥＰＲＯＭ１５に記憶されている診断情報が正常であると判定された判定結果（例えば、“ｂｉｔｉ”が“０”）である場合に、当該診断情報に対応するハードウェアに関する診断処理を実行しない。
これにより、本実施形態によるＩＣカード１は、第１の実施形態と同様に、自己診断に要する処理時間を低減することができる。
【００７８】
（第３の実施形態）
次に、第３の実施形態のＩＣカード１について、図面を参照して説明する。
本実施形態では、異常判定部４３が、コマンド処理において、ハードウェアが正常であると所定の回数判定した場合に、診断情報を変更する場合の一例について説明する。
なお、本実施形態のＩＣカード１のハードウェア構成及び機能構成は、第１及び第２の実施形態と同様であるので、ここではその説明を省略する。但し、本実施形態では、診断情報領域３０に記憶されるデータ構成が、第１及び第２の実施形態と異なる。
【００７９】
図１１は、本実施形態の診断情報領域３０のデータ例を示す図である。
この図に示すように、本実施形態では、診断情報領域３０は、上述した診断情報と、各ハードウェアのカウント情報とを関連付けて記憶する。
【００８０】
図１１において、「ＲＯＭカウント情報」は、例えば、ＲＯＭ１３の診断結果が正常であった場合の回数の値を示している。また、「ＲＡＭカウント情報」は、例えば、ＲＡＭ１４の診断結果が正常であった場合の回数の値を示している。また、「ＥＥＰＲＯＭカウント情報」、「ＲＳＡカウント情報」、「ＤＥＳカウント情報」、及び「ＡＥＳカウント情報」のそれぞれは、例えば、ＥＥＰＲＯＭ１５、ＲＳＡコプロセッサ１６、ＤＥＳコプロセッサ１７、及びＡＥＳコプロセッサ１８のそれぞれの診断結果が正常であった場合の回数の値を示している。
【００８１】
図１２は、本実施形態のＥＥＰＲＯＭ１５の書き込み処理の一例を示すフローチャートである。
この図に示す例では、上述した図１０に示す例と同様に、通信処理部４１が、ＥＥＰＲＯＭ１５の書き込み処理を行うコマンドを外部装置２から受信した場合の一例について説明する。
【００８２】
また、この図において、ステップＳ５０１からステップＳ５０３までの処理は、上述した図１０に示すステップＳ４０１からステップＳ４０３までの処理と同様であるので、ここではその説明を省略する。
但し、本実施形態では、ステップＳ５０２において、異常判定部４３は、書き込み処理が正常終了した場合（ステップＳ５０２：ＹＥＳ）に、処理をステップＳ５０５に進める。
【００８３】
また、本実施形態では、ステップＳ５０３の処理後に、異常判定部４３は、ＥＥＰＲＯＭカウント情報を“０”にする（ステップＳ５０４）。すなわち、異常判定部４３は、診断情報領域３０の「ＥＥＰＲＯＭカウント情報」に“０”を記憶させて、ＥＥＰＲＯＭ１５の診断結果が正常であった場合の回数の値をリセットする。異常判定部４３は、ステップＳ５０４の処理後に、処理を終了させる。
【００８４】
また、ステップＳ５０５において、異常判定部４３は、ＥＥＰＲＯＭカウント情報の値を“＋１”（“１”を加算）する。すなわち、異常判定部４３は、診断情報領域３０の「ＥＥＰＲＯＭカウント情報」の値に、“１”を加算した値を記憶させて、ＥＥＰＲＯＭ１５の診断結果が正常であった場合の回数の値を更新する。
【００８５】
次に、異常判定部４３は、ＥＥＰＲＯＭカウント情報の値が所定の値（例えば、“３”）であるか否かを判定する（ステップＳ５０６）。異常判定部４３は、ＥＥＰＲＯＭカウント情報の値が所定の値である場合（ステップＳ５０６：ＹＥＳ）に、処理をステップＳ５０７に進める。また、異常判定部４３は、ＥＥＰＲＯＭカウント情報の値が所定の値でない場合（ステップＳ５０６：ＮＯ）に、処理を終了させる。
【００８６】
ステップＳ５０７において、異常判定部４３は、正常を診断情報領域３０（ＥＥＰＲＯＭ１５）に記憶させる。すなわち、異常判定部４３は、ＥＥＰＲＯＭ１５に対応する診断情報の“ｂｉｔ３”に“０”を記憶させる。ステップＳ５０７の処理後に、異常判定部４３は、処理を終了させる。
このように、本実施形態では、異常判定部４３は、所定の回数（例えば、３回）連続して、正常であると判定された場合に、診断情報を“０”に変更して、起動時に当該診断情報に対応する診断処理を省略させるようにする。すなわち、異常判定部４３は、所定の期間（ここでは、正常が例えば３回連続して検出されるまでの期間）、診断情報の変更を実行しない。
【００８７】
なお、図１２に示すＥＥＰＲＯＭ１５の書き込み処理の後、コマンド処理部４２は、処理の実行結果であるステータス情報を含むレスポンスを送信用バッファ領域１４２に記憶させる。そして、通信処理部４１が、送信用バッファ領域１４２に記憶されているレスポンスを、ＵＡＲＴ１１を介して外部装置２に送信する。
図１２に示す例では、一例としてＥＥＰＲＯＭ１５の書き込み処理について説明したが、他のハードウェアを動作させるコマンド処理についても同様である。
また、本実施形態のＩＣカード１の起動時における自己診断処理、及び自己診断コマンドの自己診断処理は、第１及び第２の実施形態と同様であるので、ここではその説明を省略する。
【００８８】
以上説明したように、本実施形態では、異常判定部４３は、所定の期間、診断情報の変更を実行しない。すなわち、異常判定部４３は、判定結果が正常であると所定の回数（例えば、３回）連続して検出された場合に診断情報の変更を実行し、所定の回数連続して検出されるまでの期間、診断情報の変更を実行しない。
これにより、本実施形態のＩＣカード１は、一度異常を検出したハードウェアに関する診断処理を、当該ハードウェアを動作させる処理の信頼性を低下させずに、当該ハードウェアに関する診断処理を、起動時の診断処理の対象から適切に除外することができる。
【００８９】
（第４の実施形態）
次に、第４の実施形態のＩＣカード１ａ及びＩＣカードシステム５０について、図面を参照して説明する。
本実施形態では、診断情報をＩＣカード１ａの外部に記憶させる場合の一例について説明する。
【００９０】
図１３は、本実施形態のＩＣカードシステム５０の一例を示す図である。
この図に示すように、ＩＣカードシステム５０は、ＩＣカード１ａと、外部装置２と、ホスト装置５とを備えている。なお、外部装置２と、ホスト装置５とは、例えば、ネットワークＮＴを介して接続されている。
なお、この図において、図２及び図５に示す構成と同一の構成については同一の符号を付し、その説明を省略する。
【００９１】
ホスト装置５は、外部装置２を介して、ＩＣカード１ａとデータの送受信を行う。ホスト装置５は、例えば、診断情報記憶部３０ａを備えている。ホスト装置５は、ＩＣカード１ａから外部装置２を介して受信した診断情報を当該ＩＣカード１ａの識別情報と関連付けて、診断情報記憶部３０ａに記憶させる。また、ホスト装置５は、診断情報記憶部３０ａが記憶する当該ＩＣカード１ａに対応する診断情報を、外部装置２を介してＩＣカード１ａに送信して、当該診断情報に基づく診断処理をＩＣカード１ａに実行させる。
【００９２】
診断情報記憶部３０ａ（記憶部の一例）は、ＩＣカード１ａの識別情報と、診断情報とを関連付けて記憶する。ここで、識別情報は、例えば、ＩＣカード１ａの製造番号、管理番号などである。また、診断情報は、上述した図６に示す診断情報領域３０が記憶する診断情報と同様である。
【００９３】
ＩＣカード１ａは、制御部４０ａを備え、診断情報領域３０を備えていない点が、上述したＩＣカード１と異なる。制御部４０ａは、通信処理部４１と、コマンド処理部４２と、異常判定部４３ａと、診断処理部４４ａとを備えている。なお、ＩＣカード１ａのハードウェア構成は、図１及び図２に示すＩＣカード１と同様であるので、ここではその説明を省略する。
【００９４】
なお、異常判定部４３ａは、ハードウェアに対する動作において異常が検出されたか否かを判定し、当該判定結果を示す診断情報をハードウェアごとに外部装置２に送信させる。すなわち、異常判定部４３ａは、通信処理部４１に対して、当該判定結果を示す診断情報をハードウェアごとに外部装置２を送信させる。そして、外部装置２は、ネットワークＮＴを介してハードウェアごとの診断情報をホスト装置５に送信する。
【００９５】
また、診断処理部４４ａは、起動時の自己診断において、複数のハードウェアのうち、外部装置２から指示されたハードウェアに関する診断処理を実行する。ここで、外部装置２からの指示は、上述したホスト装置５が診断情報記憶部３０ａに記憶する診断情報に基づいて外部装置２に送信された指示情報であり、外部装置２は、当該指示情報をＩＣカード１ａに送信する。
診断処理部４４ａは、通信処理部４１を介して、当該指示情報を取得し、当該指示情報に基づいて指示されたハードウェアに関する診断処理を実行する。
【００９６】
以上説明したように、本実施形態によるＩＣカード１ａは、異常判定部４３ａと、診断処理部４４ａとを備えている。異常判定部４３ａは、ハードウェアに対する動作において異常が検出されたか否かを判定し、当該判定結果を示す診断情報をハードウェアごとに外部装置２に送信させる。診断処理部４４ａは、起動時の自己診断において、複数のハードウェアのうち、外部装置２から指示されたハードウェアに関する診断処理を実行する。
これにより、本実施形態によるＩＣカード１ａは、第１〜第３の実施形態と同様に、起動時の自己診断において、過去に異常が発生したハードウェアに関する診断処理を実行し、過去に異常が発生していないハードウェアに関する診断処理を省略することができる。よって、本実施形態によるＩＣカード１ａは、自己診断に要する処理時間を低減することができる。
【００９７】
上記の各実施形態において、各実施形態を単独で実施する場合の例を説明したが、各実施形態を組み合わせて実施してもよい。
また、上記の各実施形態において、ＩＣカード１（１ａ）は、書き換え可能な不揮発性メモリとして、ＥＥＰＲＯＭ１５を備える構成としたが、これに限定されるものではない。例えば、ＩＣカード１（１ａ）は、ＥＥＰＲＯＭ１５の代わりに、フラッシュＥＥＰＲＯＭ、ＦｅＲＡＭ（Ferroelectric Random Access Memory：強誘電体メモリ）などを備えてもよい。
【００９８】
また、上記の各実施形態において、ＩＣカード１（１ａ）は、コンタクト部３を介して外部装置２と通信する例を説明したが、コイルなどを用いたコンタクトレスインターフェースを介して外部装置２と通信するように構成してもよい。
【００９９】
また、上記の各実施形態において、携帯可能電子装置の一例として、ＩＣカード１（１ａ）を用いる例を説明したが、これに限定されるものではない。携帯可能電子装置は、例えば、カード形状ではないＩＣタグなどの電子装置であってもよい。
また、自己診断の対象となるハードウェアは、上記の各実施形態に限定されるものではない。例えば、自己診断の対象となるハードウェアには、セキュリティ用のＣＰＵや耐タンパ用の異常検出回路などが含まれてもよい。
【０１００】
また、上記の第３の実施形態において、異常判定部４３は、所定の回数（例えば、３回）連続して、ハードウェアの動作（又は診断処理）が正常終了した場合に、当該ハードウェアに対応する診断情報を、正常を示す値（例えば、“０”）に変更する例を説明したが、これに限定されるものではない。例えば、異常判定部４３は、所定の回数（例えば、３回）連続して、ハードウェアの動作（又は診断処理）が異常終了した場合に、当該ハードウェアに対応する診断情報を、異常を示す値（例えば、“１”）に変更するようにしてもよい。
【０１０１】
また、上記の第３の実施形態において、診断情報を変更しない所定の期間が、所定の回数連続して正常終了するまでの期間である例を説明したが、これに限定されるものではない。診断情報を変更しない所定の期間は、例えば、ハードウェアの動作回数を所定の回数に達するまでの期間であってもよい。すなわち、例えば、ＥＥＰＲＯＭ１５のように書き込み回数に制限があるハードウェアに関しては、書き込み回数が所定の回数（例えば、故障が起こる可能性が高くなる回数）に達した後に、診断情報を変更するようにしてもよい。
【０１０２】
以上説明した少なくともひとつの実施形態によれば、ハードウェアに対する動作において異常が検出されたか否かを判定し、当該判定結果を示す診断情報をハードウェアごとにＥＥＰＲＯＭ１５に記憶させる異常判定部４３と、起動時の自己診断において、異常判定部４３により判定された診断情報が異常と判定された判定結果である場合に、当該診断情報に対応するハードウェアに関する診断処理を実行する診断処理部４４とを持つことにより、自己診断に要する処理時間を低減することができる。
【０１０３】
上記実施形態は、以下のように表現することができる。
ハードウェアに対する動作において異常が検出されたか否かを示す情報を取得し、当該情報に基づいて、前記ハードウェアに対する動作において異常が検出されたか否かを判定し、当該判定結果を示す診断情報を前記ハードウェアごとに記憶部に記憶させる異常判定部と、
起動時の自己診断において、前記異常判定部により判定された前記診断情報を取得し、当該診断情報が異常と判定された判定結果である場合に、当該診断情報に対応する前記ハードウェアに関する診断処理を実行する診断処理部と
を備える携帯可能電子装置。
【０１０４】
なお、実施形態におけるＩＣカード１（１ａ）が備える各構成の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述したＩＣカード１（１ａ）が備える各構成における処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【０１０５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１０６】
１，１ａ…ＩＣカード、２…外部装置、３…コンタクト部、４…カード基材、５…ホスト装置、１０‥ＩＣモジュール、１１…ＵＡＲＴ、１２…ＣＰＵ、１３…ＲＯＭ、１４…ＲＡＭ、１５…ＥＥＰＲＯＭ、１６…ＲＳＡコプロセッサ、１７…ＤＥＳコプロセッサ、１８…ＡＥＳコプロセッサ、１９…内部バス、３０,３０ａ…診断情報領域、４０，４０ａ…制御部、４１…通信処理部、４２…コマンド処理部、４３，４３ａ…異常判定部、４４，４４ａ…診断処理部、５０…ＩＣカードシステム、１００，１００ａ…ＩＣチップ、１４１…受信用バッファ領域、１４２…送信用バッファ領域、１４３…作業用バッファ領域、ＮＴ…ネットワーク
【図１】
2016126441.tif 000003
【図２】
2016126441.tif 000004
【図３】
2016126441.tif 000005
【図４】
2016126441.tif 000006
【図５】
2016126441.tif 000007
【図６】
2016126441.tif 000008
【図７】
2016126441.tif 000009
【図８】
2016126441.tif 000010
【図９】
2016126441.tif 000011
【図１０】
2016126441.tif 000012
【図１１】
2016126441.tif 000013
【図１２】
2016126441.tif 000014
【図１３】
2016126441.tif 000015