JP3764206B2 - Icカード、プログラム導入方法及びプログラム実行方法 - Google Patents
Icカード、プログラム導入方法及びプログラム実行方法 Download PDFInfo
- Publication number
- JP3764206B2 JP3764206B2 JP11990696A JP11990696A JP3764206B2 JP 3764206 B2 JP3764206 B2 JP 3764206B2 JP 11990696 A JP11990696 A JP 11990696A JP 11990696 A JP11990696 A JP 11990696A JP 3764206 B2 JP3764206 B2 JP 3764206B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- application program
- address
- cpu
- search
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明は、不揮発性メモリにCPUが実行可能なアプリケーション・プログラムを格納することが可能なICカード等に関するものである。
【0002】
【従来の技術】
ICカードは、磁気カードに代わる新しい情報記憶媒体として、近年注目を集めている。特に、CPUを内蔵したICカードは、高度なセキュリティを実現できることから、高度情報化社会の種々の分野において利用されることが期待されている。
【0003】
一般にICカードは、ROM、RAM、EEPROMの3種類のメモリと、それらメモリにアクセスするCPUとを備えている。EEPROMは、書換え可能な不揮発性メモリであり、ICカードユーザの個人情報等のデータが保存される。RAMは、CPUがプログラムを実行するときに作業領域として使用する揮発性のメモリである。ROMは、読み出し専用メモリであり、CPUが実行すべきプログラムが格納されている。
【0004】
ROMが格納するプログラムは、ICカードの用途ごとに異なる。したがって、ICカードの用途が多種多様化すると、それだけ多くの種類のROMを用意することとなる。しかし、一般にROMは、その開発に多大の費用を必要とする。このために、ICカードの用途の多様化に合わせ、ROMを多品種少量生産することとすれば、ROMの単価が上がり、ICカードの製造原価が増大する。
【0005】
上記の問題に対し、従来ROMに格納されていたプログラムを2種類に大別し、一方をROMに、他方をEEPROMに格納するICカードが、提案されている。ここで、2種類のプログラムの一方は、ICカードの用途によらず汎用的に使用できるプログラム(以下「汎用プログラム」という)である。また、他方は、ICカードの各種用途固有の処理を行うプログラム(以下「アプリケーション・プログラム」という)である。
【0006】
上記のICカードでは、全用途のICカードについて、同一のROMを使用することとなるので、安価なROMを用いた安価なICカードが生産される。一方、ICカードのEEPROMには、各用途に対応した1つのアプリケーション・プログラムが書き込まれることから、用途に応じた木目細かい処理を行うICカードを提供することが可能となっている。
【0007】
【発明が解決しようとする課題】
上記のように、従来のICカードでは、1のアプリケーション・プログラムをEEPROMに格納することにより、ICカードを各種用途へ適切に対応させることを可能としていた。しかし、ICカードに対するユーザーの要求は年々高度化・複雑化し、多種多様の機能をユーザー側で任意に選択・実行できる、柔軟性の高いICカードが望まれている。
【0008】
このような要求に応える一つの方法として、EEPROMに複数個のアプリケーション・プログラムを格納することが考えられる。ところが、前述のようにアプリケーション・プログラムは各種用途に合わせて任意に製作されるものであり、このために各アプリケーション・プログラムの長さ(バイト数)はまちまちである。したがって、EEPROMに2個以上のアプリケーション・プログラムを格納しようとする場合には、先に格納されたプログラムにより占有されているメモリ領域が一定でないために、次のアプリケーション・プログラムを格納すべきメモリ領域を特定できないという問題があった。
【0009】
また、複数のアプリケーション・プログラムが格納されたEEPROMにおいては、上記と同様の理由により、2番目以降のプログラムの格納されている領域を一義的に特定することはできない。このために、任意のアプリケーション・プログラムを選択して、実行することが困難であるという問題があった。
【0010】
そこで、本発明の課題は、複数のアプリケーション・プログラムを格納し、任意のものを選択・実行することが可能なICカード等を提供することである。
【0011】
【課題を解決するための手段】
前記課題を解決するために、請求項1の発明は、CPUと、書き換え可能な不揮発性メモリと、前記CPUが実行可能なプログラムを格納する読み出し専用メモリと、を備えるICカードであって;前記不揮発性メモリは、自身に格納されている、前記CPUが実行可能なアプリケーション・プログラムの個数情報を格納しており;前記読み出し専用メモリは、前記不揮発性メモリの所定アドレスに初期設定されるアドレス情報と、前記アドレス情報により特定される前記アプリケーション・プログラムの有する先頭アドレス情報に基づいて、前記アドレス情報を更新する更新プログラムと、外部より付与された前記アプリケーション・プログラムを前記不揮発性メモリに書き込み、かつ、前記個数情報を更新する書込プログラムと、を格納しており;前記書込プログラムは、前記個数情報に示される回数だけ前記更新プログラムが実行された後に、前記アドレス情報により特定される前記アプリケーション・プログラムを格納可能な領域に書き込みを行う、ことを特徴とするICカードである。
【0014】
請求項2の発明は、CPUと、書き換え可能な不揮発性メモリと、前記CPUが実行可能なプログラムを格納する読み出し専用メモリと、を備えるICカードであって;前記不揮発性メモリは、前記CPUが実行可能な1又は2以上のアプリケーション・プログラムと、自身に格納されている前記アプリケーション・プログラムの個数情報を格納しており;前記読み出し専用メモリは、前記不揮発性メモリの所定アドレスに初期設定される検索アドレス情報と、外部より付与された参照情報と前記検索アドレス情報によって特定される前記アプリケーション・プログラムが有する識別情報とを照合する照合プログラムと、前記照合プログラムによる照合が成功しなかったときに、前記検索アドレス情報により特定される前記アプリケーション・プログラムの有する先頭アドレス情報に基づいて、前記検索アドレス情報を更新する検索アドレス更新プログラムと、を格納しており;前記照合プログラム及び前記検索アドレス更新プログラムを繰り返し実行することにより、前記アプリケーション・プログラムを順次検索し、前記照合が成功した場合、又は、前記検索アドレスの更新回数が前記個数情報に示される値に達したときは、前記検索が終了する、ことを特徴とするICカードである。
【0018】
請求項3の発明は、CPUと、書き換え可能な不揮発性メモリとを備えるICカードの前記不揮発性メモリに前記CPUが実行可能なアプリケーション・プログラムを導入するプログラム導入方法であって、前記CPUが、アドレス情報を前記不揮発性メモリの所定アドレスに初期設定し、前記アドレス情報により特定される前記アプリケーション・プログラムの有する先頭アドレス情報に基づき前記アドレス情報を更新する更新処理を、前記不揮発性メモリに格納されている前記アプリケーション・プログラムの個数と等しい回数実行し、更新された前記アドレス情報により特定される、前記アプリケーション・プログラムを格納可能な領域に、外部より付与された前記アプリケーション・プログラムを書き込み、前記個数情報を更新する、ことを特徴とするプログラム導入方法である。
【0019】
請求項4の発明は、CPUと、前記CPUが実行可能な1又は2以上のアプリケーションプログラムを格納する書き換え可能な不揮発性メモリとを備えるICカードの前記アプリケーション・プログラムを実行するプログラム実行方法であって、前記CPUが、検索アドレス情報を前記不揮発性メモリの所定アドレスに初期設定し、外部より付与された参照情報と、前記検索アドレス情報によって特定される前記アプリケーション・プログラムが有する識別情報とを照合する照合処理、及び、前記照合処理が成功しなかった場合に、前記検索アドレス情報により特定される前記アプリケーション・プログラムの有する先頭アドレス情報に基づいて、前記アプリケーション・プログラムを順次検索し、前記照合処理が成功した場合には、前記検索を終了して、そのときの前記検索アドレス情報により特定されるアプリケーションプログラムを実行し、前記更新処理が前記アプリケーション・プログラムの個数と等しい回数実行された場合には、前記検索を終了し、いずれの前記アプリケーション・プログラムも実行しない、ことを特徴とするプログラム実行方法である。
【0020】
【発明の実施の形態】
以下、図面等を参照して、本発明に係る一実施形態について、さらに詳しく説明する。
図1は、本発明に係るICカードの構成を示す図である。
図1に示されるように、ICカード10は、読み出し専用メモリであるROM12、揮発性メモリであるRAM14、随時書換え可能な不揮発性メモリのEEPROM16及びそれらメモリにアクセスするCPU18を備えている。
【0021】
また、ICカード10は、リーダ/ライタ(不図示)と電気信号等の授受を行うための複数の接点(Vcc〜GND)を備えている。ICカードをリーダ/ライタに挿入すると、リーダ/ライタの接点がこのICカードの接点と接続され、電気信号の授受が行われる。各接点には、それぞれ異なる電気信号が割り付けられている。例えば、VccはICが動作するために必要な電源電圧の供給を受けるための接点であり、I/0は、CPUがリーダ/ライタと通信を行うための接点(シリアルポート)である。
【0022】
CPU18は、上記接点を介してリーダ・ライタからコマンド付与され、そのコマンドに従いROM12又はEEPROM16に格納されているプログラムを実行し、その結果、EEPROM16等にアクセスする。本実施形態では、CPU18が実行すべきコマンドを前述した汎用プログラムとアプリケーション・プログラムとに分割し、汎用プログラムをROM12に、アプリケーション・プログラムをEEPROM16に格納することとしている。
【0023】
図2は、本実施形態の各メモリーに割り付けられているアドレスの一例を示す図である。本実施形態では、例えばROM12にH’0000〜H’27FF、RAM14にH’4000〜H’40FF、EEPROM16にH’6000〜H’7FFFなるアドレスを割り当てている。なお、本明細書において数値の前に付されている「H’」は、その数値が16進数に基づいて表記されていることを意味する。
【0024】
図3は、EEPROM16のメモリ・マップを示す図である。
本実施形態では、EEPROM16の先頭の領域、すなわちH’6000からH’600Fをシステムエリアとして確保している。システムエリアの先頭アドレスH’6000には、変数NOAが格納されている。NOAは、EEPROM16に格納(登録)されているアプリケーション・プログラムの個数を示す変数である。NOAは、0に初期設定され、後述するように1のアプリケーション・プログラムがEEPROM16に格納されるごとにその値を1ずつ加算される。アドレスH’6001〜H’600Fまでの領域(RFU)は、将来ICカードの仕様を変更したときに、その仕様において必要とされる各種パラメータ等を格納するための予備的な空白領域である。
【0025】
アドレスH’6010以降は、アプリケーション・プログラムを格納することが可能な領域である。図3には、一例として、2つのアプリケーション・プログラムが格納されている状態が示されている。第1のアプリケーション・プログラムはH’6010〜H’607Fの領域に、第2のアプリケーション・プログラムは、H’6080〜H’60DBの領域にそれぞれ格納されている。このように本実施形態では、2以上のアプリケーション・プログラムを格納する場合は、後のプログラムを先のプログラムの直後に格納し、それらの間に未使用のメモリ領域が存在しないようにしている。すなわち、本実施形態では、限られたメモリ資源を最大限有効に活用できるよう、アプリケーション・プログラムをEEPROM16に格納しているのである。なお、アプリケーション・プログラムの具体的な格納方法については、図6等において詳細に説明する。
【0026】
EEPROM16に格納されているアプリケーション・プログラムは、an_1からapplication program までの5つの情報から構成されている。
an_1及びapplication _nameは、アプリケーション・プログラムを識別するための情報である。すなわち、application _nameは、当該アプリケーション・プログラムの名前であり、an_1は、application _nameの長さ(バイト数)を示す1バイトのデータである。
【0027】
NA_ADDは、当該アプリケーション・プログラムの次に格納されている、又は、格納されるべきアプリケーション・プログラムの先頭アドレスを示す2バイトのデータである。図3の例では、第1のアプリケーション・プログラムが有するNA_ADDは、第2番目のアプリケーション・プログラムの先頭アドレスH’6080を示している。また、第2番目のアプリケーション・プログラムが有するNA_ADDは、将来第3番目のアプリケーション・プログラムが格納されるべき領域の先頭アドレスH’60DCを示している。なお、本実施形態では、NA_ADDは、必ずapplication _nameの次の領域に格納される。
【0028】
apl_1は、NA_ADDの次に格納されている2バイトのデータであり、その直後に格納されているapplication program の長さ(バイト数)を示している。application program は、アプリケーション・プログラムのCPU命令コード、及びプログラム実行時に参照されるべきデータ等の集合である。
【0029】
図3に示されるように、本実施形態では、EEPROM16に複数のアプリケーション・プログラムをメモリ資源を有効に利用しながら格納している。このように、2以上のアプリケーション・プログラムをEEPROM16に格納し、それぞれを実行するために、本実施形態では、Application Loadコマンド及びSelectコマンドという2つのコマンドを新たに用意した。Application Loadコマンドは、アプリケーション・プログラムをEEPROM16に格納するためのコマンドである。また、Selectコマンドは、EEPROM16に格納されている特定のアプリケーション・プログラムを実行するためのコマンドである。
【0030】
図4は、Application Loadコマンド及びSelectコマンドのフォーマットを示す図である。
図に示されるように、Application Loadコマンドは、5種類の情報より構成されている。第1バイト目であるINSは、このコマンド識別するための1バイトからなる種別コードである。本実施形態では、Application Loadコマンドの種別コードとして例えば「01」を割り当てている。また、Application Loadコマンドの第2バイト目以降には、順に、格納すべきアプリケーション・プログラムに関するan_1、application _name、apl_1、及びapplication program が配置されている。
【0031】
一方、Selectコマンドは、3種類の情報から構成されている。第1バイト目は、Application Loadと同様にINSが配置されている。本実施形態では、SelectコマンドのINSとして、例えば「02」なるコードを割り当てている。また、Selectコマンドの第2バイト目以降には、実行すべきアプリケーション・プログラムのan_1とapplication _nameとが順に配置されている。
【0032】
図5は、ROM12に格納されている汎用プログラムの流れ図である。以下、図5に基づき、ICカード10の動作の概要について説明する。
ICカード10とリーダ・ライタとが接続され、リーダ・ライタによりICカードがリセット(活性化)されると、CPU18は、まず初期応答情報(ATR)をレスポンスとして出力する(S502)。次に、CPU18は、リーダ・ライタからのコマンド待ち状態となる(S504、S506)。
【0033】
リーダ・ライタからのコマンドを受信すると(S506:Yes)、CPU18は、そのコマンドの第1バイト目であるINSを確認する(S508)。ここでINSの内容が「01」であると、本実施形態では、コマンドがApplication Loadコマンドであると判断され、アプリケーション・プログラムをEEPROM16へ格納するための処理が実行される(S510)。
【0034】
一方、ステップ508において、INSの内容が「02」である場合には、コマンドがSelectコマンドであると判断される。この結果、Selectコマンドが指定するアプリケーション・プログラムの、EEPROM16におけるアドレスを特定するための処理が実行される(S512)。
【0035】
ステップ508において、INSの内容が「01」又は「02」のいずれでもない場合には、CPU18は、ステップ514へ進む。ステップ514では、すでにSelectコマンドが処理され、所定のアプリケーション・プログラムが選択済みであるか否かが判断される。具体的には、RAM14の所定領域に、Selectコマンドを処理することにより特定された、アプリケーション・プログラムのアドレスが存在するか否かが判断される。
【0036】
ステップ514において、アプリケーションが選択済みであると判断されると、受信されたコマンドのパラメータに基づいて、当該アプリケーション・プログラムが実行される(S516)。
一方、ステップ514において、アプリケーションが選択されていないと判断されると、コマンド・エラー・ステータスがRAM14の所定領域にレスポンス情報として編集される(S518)。
【0037】
次に、ステップ510、512、516又は518のいずれかの処理が終了すると、RAM14の所定領域に編集されたレスポンス情報が、リーダ・ライタに送信される(S520)。レンスポンス情報が送信された後は、再びステップ504に戻り、ステップ520までの処理が繰り返される。
【0038】
次に、ステップ510、512、及び516のそれぞれにおいてなされる処理について説明する。
図6は、ステップ510の処理内容、つまり、Application Loadコマンドが受信された場合にCPU18が実行する処理内容を示す流れ図である。
CPU18は、Application Loadコマンドが受信されると、まずシステムエリアのアドレスH’6000を参照し、NOAのデータを読み出す(S602)。次に、CPU18は、2つの変数search_address 及びcounter を初期設定する。search_address は、アプリケーション・プログラムを格納する領域の先頭アドレスH’6010に初期設定される(S604)。また、counter は、ステップ602において取得されたNOAの値に初期設定される(S606)。
【0039】
次に、アプリケーション・プログラムを新たに格納することが可能なEEPROM16上の領域の先頭アドレスが特定される(S608〜S612)。
具体的には、search_address にNA_ADDの内容を代入し、counter の値を1だけデクリメントする一連の処理(S610、S612)が、counter の値が0となるまで(S608:Yes)繰り返される。なお、ステップ610におけるNA_ADDは、ステップ608においてsearch_address が示すアドレス以降に現れる最初のNA_ADD、すなわち、search_address によって特定されるアプリケーション・プログラムが有するNA_ADDである。
【0040】
ステップ608から612間での処理は、例えば、図3に示した例では、2回繰り返されて行われる。すなわち、search_address の内容は、1回目の処理により、第2番目のアプリケーション・プログラムの先頭アドレスであるH’6080に更新される。また、2回目の処理では、第3番目のアプリケーション・プログラムを格納することが可能である領域の先頭アドレス、H’60DCに更新される。
【0041】
次に、上記処理により特定されたアドレス以降に、アプリケーション・プログラムを書き込む処理が実行される(S614〜S636)。
まず、変数write _address にsearch_address の値が代入され(S614)、そのwrite _address が示すアドレスにApplication Loadコマンドのan_1が書き込まれる(S616)。書込が終了すると、write _address は、an_1の長さ(バイト数)を加算することにより更新される(S618)。
【0042】
次に、更新されたwrite _address が示すアドレスよりApplication Loadコマンドのapplication _nameの内容が書き込まれる(S620)。書込が終了すると、write _address は、an_1の示す値だけ、すなわち、書き込んだapplication _nameの長さ(バイト数)を加算することにより再び更新される(S624)。
【0043】
次に、後にNA_ADDを上記application _nameの直後に書き込むための処理が行われる。すなわち、更新されたwrite _address の値は、変数NA_ADD _address に代入され(S624)、その後に、NA_ADDの長さ(2バイト)がwrite _address に加算される(S626)。
【0044】
次に、write _address が示すアドレスに、Application Loadコマンドのapl_1の内容が書き込まれ(S628)、その後にwrite _address にapl_1の長さが加算される(S630)。
さらに、write _address が示すアドレスに、application program が書き込まれ(S632)、write _address にapl_1が示す値が加算される(S634)。
【0045】
次に、write _address の値は、NA_ADD _address が示すアドレスに書き込まれる(S636)。また、システム・エリアのNOAが1だけ加算され、EEPROM16に格納されているアプリケーション・プログラムが1つ増えたことが記録される(S638)。最後に、アプリケーション・プログラムが正常に終了した旨のステータスが、RAM14の所定領域にレスポンス情報として編集され(S640)、Application Loadコマンド処理が終了される。
【0046】
図7は、ステップ512の処理内容、つまり、Selectコマンドが受信された場合にCPU18が実行する処理内容を示す流れ図である。
ステップ512において、CPU18は、はじめに変数seach _address をアプリケーション・プログラムが格納されている領域の先頭アドレスに初期設定する(S702)。本実施形態の場合には、search_address は、H’6010に設定される。
【0047】
次に、CPU18は、EEPROM16のシステムエリアよりNOAの値を読み出し(S704)、その値をもって変数counter を設定する。例えば図3に示すようにEEPROM16が2つのアプリケーション・プログラムを格納している場合には、counter は2に初期設定される。
【0048】
次に、CPU18は、Selectコマンドに指定されたアプリケーション・プログラムと同一のものがあるか否かについて、EEPROM16に格納されているアプリケーション・プログラムを順次検索する(S708〜S716)。具体的には、search_address が示すアドレスのan_1及びそのan_1に続く
application _nameと、Selectコマンドのan_1及びapplication _nameとが比較される(S710)。比較の結果、一致しない場合には、counter の値を1だけデクリメントするとともに、search_address にNA_ADDの内容を代入する(S714、S716)。ここで、ステップ716におけるNA_ADDは、ステップ710においてsearch_address が示したアドレス以降に現れる最初のNA_ADDである。ステップ716においてsearch_address の内容を更新することにより、search_address は、次に格納されているアプリケーション・プログラムの先頭アドレスを示すこととなる。
【0049】
ステップ710から716までの処理は、ステップ712において比較されたデータが一致するまで、又は、ステップ708においてcounter の値が0となるまで継続される。
ステップ712において、比較されたデータが一致した場合(S712:Yes)には、Selectコマンドによって指定されたアプリケーション・プログラムが発見され、search_address はその先頭アドレスを示していることが意味される。そこで、CPU18は、search_address にan_1の長さ(バイト数)及びan_1が示す値、すなわちapplication _nameの長さ(バイト数)を加算する(S718)。この結果、search_address は当該アプリケーション・プログラムにおけるapplication program の先頭アドレスを示すこととなる。CPU18は、このsearch_address の内容をRAM14上の所定領域に格納する(S720)。そして、Searchコマンドの処理が正常に終了した旨のステータスをRAM14の所定領域にレスポンス情報として格納し(S722)、その処理を終了する。
【0050】
一方、ステップ708において、counter の値が0となった場合(S708:Yes)には、EEPROM16に格納されているいずれのアプリケーション・プログラムもSelectコマンドが指定するものに該当しなかったことが意味される。この場合には、CPU18は、該当するアプリケーション・プログラムがなかった旨のエラーステータスをRAM14の所定領域にレスポンス情報として格納し(S724)、処理を終了する。
【0051】
図8は、図5のステップ516においてCPU18が実行する処理内容を示す流れ図である。
図5のステップ514において、アプリケーションが選択済みであると判断されると、CPU18は、図7のステップ722においてRAM14に格納されたsearch_address の内容を取得し、それに示されるアドレスをサブルーチンコールする。これにより、Selectコマンドにより選択されたアプリケーション・プログラムが実行される。
【0052】
以上説明したように、本実施形態では、EEPROM16のシステムエリアに、格納されているアプリケーション・プログラムの個数を示す変数NOAを格納することとした。また、本実施形態では、アプリケーション・プログラムをEEPROM16に格納するときには、次のアプリケーション・プログラムが格納されるべきメモリ領域の先頭アドレスを示すデータNA_ADDを当該アプリケーション・プログラムとともに、換言すれば、当該アプリケーション・プログラムと関連づけてEEPROM16に格納することとした。
【0053】
これにより、本実施形態は、変数search_address に、格納されている各アプリケーション・プログラムが有するNA_ADDを順に代入してsearch_address の内容を更新することにより、各アプリケーション・プログラムの先頭アドレスを順次特定することが可能となっている。また、上記search_address の更新をNOAに示される回数だけ行うことにより、次にアプリケーション・プログラムを格納することができる領域の先頭アドレスを特定することも可能となっている。ここで、本実施形態は、特にNA_ADDを用いてsearch_address を更新し、アプリケーション・プログラムの先頭アドレスを特定することとしているので、先頭アドレスが迅速に特定される。
【0054】
また、本実施形態は、上記のように次にアプリケーション・プログラムを格納することができる領域の先頭アドレスを特定できることから、2以上の任意の長さ(バイト数)のアプリケーション・プログラムをEEPROM16に格納することが可能となっている。しかも、本実施形態では、新たなアプリケーション・プログラムを、その直前に格納されたアプリケーション・プログラムの直後に書き込むこととしているので、限られたEEPROM16のメモリを効率的に利用することを可能としている。
【0055】
また、各アプリケーション・プログラムの先頭アドレスを順次特定できることから、格納された複数のアプリケーション・プログラムを検索し、その中から所定のものを選択してそのアドレスを特定すること、さらに、特定されたアドレスを用いて、所定のアプリケーションプログラムを実行することが可能となっている。
【0056】
また、本実施形態では、上記search_address を更新する回数をNOAを用いて制限することとしている。これにより、本実施形態では、アプリケーション・プログラムを検索する場合に、アプリケーション・プログラムが格納されていない領域までも検索し、無益に検索時間が増大することを防止している。
一方、新たにアプリケーション・プログラムを格納する場合には、search_addresの更新は、必ずNOAに示される回数だけ行われる。よって、本実施形態では、新しいアプリケーション・プログラムが既に格納されていたものに上書きされ、その結果既存のアプリケーション・プログラムが損なわれることが防止されている。
【0057】
(その他の実施形態)
なお、本発明は、上記実施形態に限定されるものではない。上記実施形態は、例示であり、本発明の特許請求の範囲に記載された技術的思想と実質的に同一な構成を有し、同様な作用効果を奏するものは、いかなるものであっても本発明の技術的範囲に包含される。
【0058】
例えば、上記実施形態において、NA_ADDは必須の要件ではなく、NA_ADDを用いずに同様の効果を得ることも可能である。
例えば、search_address の更新は、search_address にan_1の長さ、an_1の示すapplication _nameの長さ、apl_1の長さ、及びapl_1の示すapplication program の長さを加算すること、すなわち、アプリケーション・プログラムが消費しているメモリ容量をsearch_address に加算することであっても、上記実施形態と同様の効果を得ることが可能である。
【0059】
また、あらかじめ1つのアプリケーション・プログラムが占有しうるメモリ領域の大きさを定め、search_address の更新は、その定められたメモリ容量の大きさをsearch_address に加算することであっても、2以上のアプリケーション・プログラムをEEPROM16に格納すること等の効果を取得することが可能である。
【0060】
なお、本明細書において、「ICカード」とは、CPUと、このCPUによってアクセスされるメモリとを備え、CPUは、そのメモリに格納されているプログラムにしたがい動作する携帯可能な情報記録媒体を意味する。したがって、「ICカード」は、例えばその形状が平面的かつ四角形であるいわゆるカード状に限定されるものではなく、コイン形状等の媒体にCPU及びメモリを備えたものであってもよい。
【0061】
【発明の効果】
以上詳しく説明したように、本発明によれば、不揮発性メモリに、2以上のアプリケーション・プログラムを格納することが可能となった。
【0062】
また、本発明によれば、不揮発性メモリに1又は2以上のアプリケーション・プログラムが格納されている場合に、それらアプリケーション・プログラムから特定のものを検索することが可能となった。
【図面の簡単な説明】
【図1】本発明に係るICカードの構成を示す図である。
【図2】本発明に係るICカードの各メモリーに割り付けられているアドレスの一例を示す図である。
【図3】EEPROM16のメモリ・マップを示す図である。
【図4】 Application Loadコマンド、及びSelectコマンドのフォーマットを示す図である。
【図5】ROM12に格納されている汎用プログラムの流れ図である。
【図6】 Application Loadコマンドが受信された場合にCPU18が実行する処理内容を示す流れ図である。
【図7】 Selectコマンドが受信された場合にCPU18が実行する処理内容を示す流れ図である。
【図8】図5のステップ516においてCPU18が実行する処理内容を示す流れ図である。
【符号の説明】
10 ICカード
12 ROM
14 RAM
16 EEPROM
18 CPU
Claims (4)
- CPUと、
書き換え可能な不揮発性メモリと、
前記CPUが実行可能なプログラムを格納する読み出し専用メモリと、
を備えるICカードであって;
前記不揮発性メモリは、自身に格納されている、前記CPUが実行可能なアプリケーション・プログラムの個数情報を格納しており;
前記読み出し専用メモリは、
前記不揮発性メモリの所定アドレスに初期設定されるアドレス情報と、
前記アドレス情報により特定される前記アプリケーション・プログラムの有する先頭アドレス情報に基づいて、前記アドレス情報を更新する更新プログラムと、
外部より付与された前記アプリケーション・プログラムを前記不揮発性メモリに書き込み、かつ、前記個数情報を更新する書込プログラムと、
を格納しており;
前記書込プログラムは、前記個数情報に示される回数だけ前記更新プログラムが実行された後に、前記アドレス情報により特定される前記アプリケーション・プログラムを格納可能な領域に書き込みを行う、
ことを特徴とするICカード。 - CPUと、
書き換え可能な不揮発性メモリと、
前記CPUが実行可能なプログラムを格納する読み出し専用メモリと、
を備えるICカードであって;
前記不揮発性メモリは、前記CPUが実行可能な1又は2以上のアプリケーション・プログラムと、
自身に格納されている前記アプリケーション・プログラムの個数情報を格納しており;
前記読み出し専用メモリは、
前記不揮発性メモリの所定アドレスに初期設定される検索アドレス情報と、
外部より付与された参照情報と前記検索アドレス情報によって特定される前記アプリケーション・プログラムが有する識別情報とを照合する照合プログラムと、
前記照合プログラムによる照合が成功しなかったときに、前記検索アドレス情報により特定される前記アプリケーション・プログラムの有する先頭アドレス情報に基づいて、前記検索アドレス情報を更新する検索アドレス更新プログラムと、
を格納しており;
前記照合プログラム及び前記検索アドレス更新プログラムを繰り返し実行することにより、前記アプリケーション・プログラムを順次検索し、
前記照合が成功した場合、又は、前記検索アドレスの更新回数が前記個数情報に示される値に達したときは、前記検索が終了する、
ことを特徴とするICカード。 - CPUと、書き換え可能な不揮発性メモリとを備えるICカードの前記不揮発性メモリに前記CPUが実行可能なアプリケーション・プログラムを導入するプログラム導入方法であって、
前記CPUが、
アドレス情報を前記不揮発性メモリの所定アドレスに初期設定し、
前記アドレス情報により特定される前記アプリケーション・プログラムの有する先頭アドレス情報に基づき前記アドレス情報を更新する更新処理を、前記不揮発性メモリに格納されている前記アプリケーション・プログラムの個数と等しい回数実行し、
更新された前記アドレス情報により特定される、前記アプリケーション・プログラムを格納可能な領域に、外部より付与された前記アプリケーション・プログラムを書き込み、
前記個数情報を更新する、
ことを特徴とするプログラム導入方法。 - CPUと、前記CPUが実行可能な1又は2以上のアプリケーションプログラムを格納する書き換え可能な不揮発性メモリとを備えるICカードの前記アプリケーション・プログラムを実行するプログラム実行方法であって、
前記CPUが、
検索アドレス情報を前記不揮発性メモリの所定アドレスに初期設定し、外部より付与された参照情報と、前記検索アドレス情報によって特定される前記アプリケーション・プログラムが有する識別情報とを照合する照合処理、及び、前記照合処理が成功しなかった場合に、前記検索アドレス情報により特定される前記アプリケーション・プログラムの有する先頭アドレス情報に基づいて、前記アプリケーション・プログラムを順次検索し、
前記照合処理が成功した場合には、前記検索を終了して、そのときの前記検索アドレス情報により特定されるアプリケーションプログラムを実行し、
前記更新処理が前記アプリケーション・プログラムの個数と等しい回数実行された場合には、前記検索を終了し、いずれの前記アプリケーション・プログラムも実行しない、
ことを特徴とするプログラム実行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11990696A JP3764206B2 (ja) | 1996-05-15 | 1996-05-15 | Icカード、プログラム導入方法及びプログラム実行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11990696A JP3764206B2 (ja) | 1996-05-15 | 1996-05-15 | Icカード、プログラム導入方法及びプログラム実行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09305734A JPH09305734A (ja) | 1997-11-28 |
JP3764206B2 true JP3764206B2 (ja) | 2006-04-05 |
Family
ID=14773141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11990696A Expired - Fee Related JP3764206B2 (ja) | 1996-05-15 | 1996-05-15 | Icカード、プログラム導入方法及びプログラム実行方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3764206B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2786901B1 (fr) * | 1998-12-08 | 2001-04-27 | Schlumberger Systems & Service | Dispositif et procede d'initialisation d'un programme applicatif d'une carte a circuit integre |
EP1306760A4 (en) | 2000-07-07 | 2009-07-01 | Fujitsu Ltd | IC CARD |
JP2004029945A (ja) * | 2002-06-21 | 2004-01-29 | Dainippon Printing Co Ltd | Icカード及びicカードプログラム |
-
1996
- 1996-05-15 JP JP11990696A patent/JP3764206B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH09305734A (ja) | 1997-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4949240A (en) | Data storage system having circuitry for dividing received data into sequential wards each stored in storage region identified by chain data | |
EP2278501B1 (en) | Smartcard for portable electronic device | |
US7308433B1 (en) | Application managing method and information processing apparatus using the method | |
US20020083427A1 (en) | Embedded system capable of rapidly updating software and method for rapidly updating software of embedded system | |
JP3764206B2 (ja) | Icカード、プログラム導入方法及びプログラム実行方法 | |
KR20070074134A (ko) | 메모리 카드의 저장용량을 확장시키는 장치 및 그를 이용한메모리 카드의 동작 방법 | |
EP2367115A1 (en) | Portable electronic apparatus and method of controlling a portable electronic apparatus | |
US20040076033A1 (en) | Access apparatus, data processing system, computer program product and computer data signal | |
JP3512252B2 (ja) | Cpuを内蔵した情報記録媒体 | |
JPH103525A (ja) | Icカード、命令コード格納方法及び命令コード実行方法 | |
JPH1040350A (ja) | Icカード及びコマンド実行方法 | |
US20100235393A1 (en) | Portable electronic device and access control method in portable electronic device | |
JP7005934B2 (ja) | 電子情報記憶媒体、icカード、データ送信方法、データ書き込み方法、データ送信プログラム及びデータ書き込みプログラム | |
JPH09231113A (ja) | Icカード | |
JP2005301657A (ja) | 複数のコマンドテーブルを書き換え可能なメモリに記憶したicカードおよびコマンドの実行方法 | |
JP2002150246A (ja) | 携帯可能電子装置 | |
JP3168572B2 (ja) | Cpu暴走検知機能付きicカード | |
JPH103526A (ja) | Icカード | |
JP2012133656A (ja) | 携帯可能電子装置及びicカード | |
JPH09282426A (ja) | Icカード及びその通信方法 | |
JPH1063793A (ja) | Icカード及びicカードのコマンド確立方法 | |
JP7397402B2 (ja) | 電子情報記憶媒体、データ送信方法、及びプログラム | |
JP2019160190A (ja) | 携帯可能電子装置、及びicカード | |
JPH103385A (ja) | Icカード及びアプリケーション・プログラム導入方法 | |
JP6823289B2 (ja) | Icカードおよびコンピュータプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050706 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050927 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051125 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060119 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090127 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100127 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100127 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110127 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110127 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120127 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120127 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130127 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130127 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140127 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |