JPH103525A - Icカード、命令コード格納方法及び命令コード実行方法 - Google Patents
Icカード、命令コード格納方法及び命令コード実行方法Info
- Publication number
- JPH103525A JPH103525A JP8153582A JP15358296A JPH103525A JP H103525 A JPH103525 A JP H103525A JP 8153582 A JP8153582 A JP 8153582A JP 15358296 A JP15358296 A JP 15358296A JP H103525 A JPH103525 A JP H103525A
- Authority
- JP
- Japan
- Prior art keywords
- address
- instruction code
- memory
- program
- cpu
- 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.)
- Pending
Links
Abstract
(57)【要約】
【課題】 メモリに偶数アドレスからのみアクセスする
CPUを備えたICカードであって、不揮発性メモリに
格納された、奇数バイトからなるデータコードを含むプ
ログラムを確実に実行するICカードを提供する。 【解決手段】 メモリに偶数アドレスからのみアクセス
するCPU(18)と、前記CPUが実行可能であり、
データコード部と命令コード部とを含むプログラムを格
納する書き換え可能な不揮発性メモリ(16)とを備
え、前記命令コード部を必ず偶数アドレスから格納する
ことにより、前記不揮発性メモリに奇数バイトからなる
データコード部を含む前記プログラムを格納可能とした
ことを特徴とする。
CPUを備えたICカードであって、不揮発性メモリに
格納された、奇数バイトからなるデータコードを含むプ
ログラムを確実に実行するICカードを提供する。 【解決手段】 メモリに偶数アドレスからのみアクセス
するCPU(18)と、前記CPUが実行可能であり、
データコード部と命令コード部とを含むプログラムを格
納する書き換え可能な不揮発性メモリ(16)とを備
え、前記命令コード部を必ず偶数アドレスから格納する
ことにより、前記不揮発性メモリに奇数バイトからなる
データコード部を含む前記プログラムを格納可能とした
ことを特徴とする。
Description
【0001】
【発明の属する技術分野】本発明は、メモリに偶数アド
レスからのみアクセスするCPUを備えるICカード等
に関するものである。
レスからのみアクセスするCPUを備えるICカード等
に関するものである。
【0002】
【従来の技術】ICカードは、磁気カードに代わる新し
い情報記憶媒体として、近年注目を集めている。特に、
CPUを内蔵したICカードは、高度なセキュリティを
実現できることから、高度情報化社会の種々の分野にお
いて利用されることが期待されている。
い情報記憶媒体として、近年注目を集めている。特に、
CPUを内蔵したICカードは、高度なセキュリティを
実現できることから、高度情報化社会の種々の分野にお
いて利用されることが期待されている。
【0003】一般にICカードは、ROM、RAM、E
EPROMの3種類のメモリと、それらメモリにアクセ
スするCPUとを備えている。EEPROMは、書換え
可能な不揮発性メモリであり、ICカードユーザの個人
情報等のデータが保存される。RAMは、CPUがプロ
グラムを実行するときに作業領域として使用する揮発性
のメモリである。ROMは、読み出し専用メモリであ
り、CPUが実行すべきプログラムが格納されている。
EPROMの3種類のメモリと、それらメモリにアクセ
スするCPUとを備えている。EEPROMは、書換え
可能な不揮発性メモリであり、ICカードユーザの個人
情報等のデータが保存される。RAMは、CPUがプロ
グラムを実行するときに作業領域として使用する揮発性
のメモリである。ROMは、読み出し専用メモリであ
り、CPUが実行すべきプログラムが格納されている。
【0004】ROMが格納するプログラムは、ICカー
ドの用途ごとに異なる。したがって、ICカードの用途
が多種多様化すると、それだけ多くの種類のROMを用
意することとなる。しかし、一般にROMは、その開発
に多大の費用を必要とする。このために、ICカードの
用途の多様化に合わせ、ROMを多品種少量生産するこ
ととすれば、ROMの単価が上がり、ICカードの製造
原価が増大する。
ドの用途ごとに異なる。したがって、ICカードの用途
が多種多様化すると、それだけ多くの種類のROMを用
意することとなる。しかし、一般にROMは、その開発
に多大の費用を必要とする。このために、ICカードの
用途の多様化に合わせ、ROMを多品種少量生産するこ
ととすれば、ROMの単価が上がり、ICカードの製造
原価が増大する。
【0005】上記の問題に対し、従来ROMに格納され
ていたプログラムを2種類に大別し、一方をROMに、
他方をEEPROMに格納するICカードが、提案され
ている。ここで、2種類のプログラムの一方は、ICカ
ードの用途によらず汎用的に使用できるプログラム(以
下「汎用プログラム」という)である。また、他方は、
ICカードの各種用途固有の処理を行うプログラム(以
下「アプリケーション・プログラム」という)である。
ていたプログラムを2種類に大別し、一方をROMに、
他方をEEPROMに格納するICカードが、提案され
ている。ここで、2種類のプログラムの一方は、ICカ
ードの用途によらず汎用的に使用できるプログラム(以
下「汎用プログラム」という)である。また、他方は、
ICカードの各種用途固有の処理を行うプログラム(以
下「アプリケーション・プログラム」という)である。
【0006】上記のICカードでは、全用途のICカー
ドについて、同一のROMを使用することとなるので、
安価なROMを用いた安価なICカードが生産される。
一方、ICカードのEEPROMには、各用途に対応し
た1つのアプリケーション・プログラムが書き込まれる
ことから、用途に応じた木目細かい処理を行うICカー
ドを提供することが可能となっている。
ドについて、同一のROMを使用することとなるので、
安価なROMを用いた安価なICカードが生産される。
一方、ICカードのEEPROMには、各用途に対応し
た1つのアプリケーション・プログラムが書き込まれる
ことから、用途に応じた木目細かい処理を行うICカー
ドを提供することが可能となっている。
【0007】一方、従来のICカードでは、安価なカー
ドを提供することその他の理由により、その構成要素に
機能が限定されたICを使用することがある。その一例
として、いわゆるプログラム・カウンタが偶数の値しか
とりえないCPU(以下「偶数プログラムカウンタ実行
CPU」という)を用いたICカードがある。偶数プロ
グラムカウンタ実行CPUは、プログラム・カウンタが
奇数の値をとりえないために、メモリにアクセスする場
合には、偶数アドレスからのみアクセスする。したがっ
て、CPUが実行すべき命令コードが奇数アドレスから
格納されていると、偶数プログラムカウンタ実行CPU
はその命令コードを正しく読み取ることができず、その
命令コードの実行中に誤動作することとなる。このため
に、偶数プログラムカウンタ実行CPUを用いたICカ
ードでは、各命令コードが偶数アドレスから格納される
ように、CPUが実行可能なプログラムをそれぞれのメ
モリに導入しなければならない。
ドを提供することその他の理由により、その構成要素に
機能が限定されたICを使用することがある。その一例
として、いわゆるプログラム・カウンタが偶数の値しか
とりえないCPU(以下「偶数プログラムカウンタ実行
CPU」という)を用いたICカードがある。偶数プロ
グラムカウンタ実行CPUは、プログラム・カウンタが
奇数の値をとりえないために、メモリにアクセスする場
合には、偶数アドレスからのみアクセスする。したがっ
て、CPUが実行すべき命令コードが奇数アドレスから
格納されていると、偶数プログラムカウンタ実行CPU
はその命令コードを正しく読み取ることができず、その
命令コードの実行中に誤動作することとなる。このため
に、偶数プログラムカウンタ実行CPUを用いたICカ
ードでは、各命令コードが偶数アドレスから格納される
ように、CPUが実行可能なプログラムをそれぞれのメ
モリに導入しなければならない。
【0008】
【発明が解決しようとする課題】しかし、従来のICカ
ードでは、アプリケーション・プログラムをEEPRO
Mに導入する際に、命令コードが偶数アドレスから格納
されない場合があった。このことは、アプリケーション
・プログラムが命令コード及びデータコードより構成さ
れることに起因している。データコードとは、例えばそ
のプログラムの識別名を示すデータ等のことである。デ
ータコードの長さ(バイト数)は、代入されるデータの
内容によって増減する。このために、データコードは、
代入されるデータによっては奇数バイトから構成される
ことがあり、また、そのデータコードの後に続いて格納
される命令コードも、奇数アドレスから格納される場合
が生じるのである。ここで、データコードの後に続いて
格納される命令コードとは、データコードの後に命令コ
ードが続く構成を有するアプリケーション・プログラム
をEEPROMに格納する場合の当該命令コード、又
は、命令コードの後にデータコードが続く構成を有する
アプリケーションプログラムを複数EEPROMに格納
することが可能なICカードにおいて、第2番目以降の
アプリケーション・プログラムを格納する場合の当該命
令コードを意味する。
ードでは、アプリケーション・プログラムをEEPRO
Mに導入する際に、命令コードが偶数アドレスから格納
されない場合があった。このことは、アプリケーション
・プログラムが命令コード及びデータコードより構成さ
れることに起因している。データコードとは、例えばそ
のプログラムの識別名を示すデータ等のことである。デ
ータコードの長さ(バイト数)は、代入されるデータの
内容によって増減する。このために、データコードは、
代入されるデータによっては奇数バイトから構成される
ことがあり、また、そのデータコードの後に続いて格納
される命令コードも、奇数アドレスから格納される場合
が生じるのである。ここで、データコードの後に続いて
格納される命令コードとは、データコードの後に命令コ
ードが続く構成を有するアプリケーション・プログラム
をEEPROMに格納する場合の当該命令コード、又
は、命令コードの後にデータコードが続く構成を有する
アプリケーションプログラムを複数EEPROMに格納
することが可能なICカードにおいて、第2番目以降の
アプリケーション・プログラムを格納する場合の当該命
令コードを意味する。
【0009】上記のように奇数アドレスから格納された
命令コードを偶数プログラムカウンタ実行CPUが実行
した場合には、前述のように、偶数プログラムカウンタ
実行CPUは正しく命令コードを読み取ることができず
誤動作を起こすこととなる。このために、従来の偶数プ
ログラムカウンタ実行CPUを用いたICカードでは、
奇数バイトからなるデータコードを含むアプリケーショ
ン・プログラムを不揮発性メモリに格納した場合に、I
Cカードが正常に動作しない恐れがあるという問題があ
った。
命令コードを偶数プログラムカウンタ実行CPUが実行
した場合には、前述のように、偶数プログラムカウンタ
実行CPUは正しく命令コードを読み取ることができず
誤動作を起こすこととなる。このために、従来の偶数プ
ログラムカウンタ実行CPUを用いたICカードでは、
奇数バイトからなるデータコードを含むアプリケーショ
ン・プログラムを不揮発性メモリに格納した場合に、I
Cカードが正常に動作しない恐れがあるという問題があ
った。
【0010】そこで、本発明の課題は、メモリに偶数ア
ドレスからのみアクセスするCPUを備えたICカード
であって、不揮発性メモリに格納された、奇数バイトか
らなるデータコードを含むプログラムを確実に実行する
ICカードを提供することである。
ドレスからのみアクセスするCPUを備えたICカード
であって、不揮発性メモリに格納された、奇数バイトか
らなるデータコードを含むプログラムを確実に実行する
ICカードを提供することである。
【0011】
【課題を解決するための手段】前記課題を解決するため
に、請求項1に係る発明は、メモリに偶数アドレスから
のみアクセスするCPU(18)と、前記CPUが実行
可能であり、データコード部と命令コード部とを含むプ
ログラムを格納する書き換え可能な不揮発性メモリ(1
6)とを備え、前記命令コード部を必ず偶数アドレスか
ら格納することにより、前記不揮発性メモリに奇数バイ
トからなるデータコード部を含む前記プログラムを格納
可能としたことを特徴とする。
に、請求項1に係る発明は、メモリに偶数アドレスから
のみアクセスするCPU(18)と、前記CPUが実行
可能であり、データコード部と命令コード部とを含むプ
ログラムを格納する書き換え可能な不揮発性メモリ(1
6)とを備え、前記命令コード部を必ず偶数アドレスか
ら格納することにより、前記不揮発性メモリに奇数バイ
トからなるデータコード部を含む前記プログラムを格納
可能としたことを特徴とする。
【0012】請求項2に係る発明は、請求項1に記載の
ICカードにおいて、読み出しメモリ(12)を備え、
前記読み出し専用メモリは、前記命令コード部を格納し
ようとするアドレスが偶数であるときは、前記アドレス
から前記命令コード部を格納し、前記アドレスが奇数で
あるときは、前記アドレスの次の偶数アドレスから前記
命令コード部を格納する命令コード格納プログラムを有
することを特徴としている。
ICカードにおいて、読み出しメモリ(12)を備え、
前記読み出し専用メモリは、前記命令コード部を格納し
ようとするアドレスが偶数であるときは、前記アドレス
から前記命令コード部を格納し、前記アドレスが奇数で
あるときは、前記アドレスの次の偶数アドレスから前記
命令コード部を格納する命令コード格納プログラムを有
することを特徴としている。
【0013】請求項3に係る発明は、請求項1に記載の
ICカードにおいて、読み出し専用メモリ(12)を備
え、前記読み出し専用メモリは、前記不揮発性メモリに
おける未使用領域の先頭アドレスを特定する格納アドレ
ス特定プログラムと、前記先頭アドレスが奇数である場
合に、前記先頭アドレスの次のアドレスを指定すること
により、偶数アドレスを取得する奇数アドレス変換プロ
グラムと、前記先頭アドレスが偶数であるときは、前記
先頭アドレスから前記命令コード部を格納し、前記先頭
アドレスが奇数であるときは、前記偶数アドレスから前
記命令コード部を格納する格納プログラムとを有するこ
とを特徴とする。
ICカードにおいて、読み出し専用メモリ(12)を備
え、前記読み出し専用メモリは、前記不揮発性メモリに
おける未使用領域の先頭アドレスを特定する格納アドレ
ス特定プログラムと、前記先頭アドレスが奇数である場
合に、前記先頭アドレスの次のアドレスを指定すること
により、偶数アドレスを取得する奇数アドレス変換プロ
グラムと、前記先頭アドレスが偶数であるときは、前記
先頭アドレスから前記命令コード部を格納し、前記先頭
アドレスが奇数であるときは、前記偶数アドレスから前
記命令コード部を格納する格納プログラムとを有するこ
とを特徴とする。
【0014】請求項4に係る発明は、請求項1に記載の
ICカードにおいて、読み出し専用メモリ(12)を備
え、前記読み出し専用メモリは、前記不揮発性メモリに
おいて、前記CPUがアクセスすべきアドレスが偶数で
あるときは、前記アドレスから前記命令コード部を実行
し、前記アドレスが奇数であるときは、前記アドレスの
次の偶数アドレスから前記命令コード部を実行する命令
コード実行プログラムとを有することを特徴とする。
ICカードにおいて、読み出し専用メモリ(12)を備
え、前記読み出し専用メモリは、前記不揮発性メモリに
おいて、前記CPUがアクセスすべきアドレスが偶数で
あるときは、前記アドレスから前記命令コード部を実行
し、前記アドレスが奇数であるときは、前記アドレスの
次の偶数アドレスから前記命令コード部を実行する命令
コード実行プログラムとを有することを特徴とする。
【0015】請求項5に係る発明は、請求項1に記載の
ICカードにおいて、読み出し専用メモリ(12)を備
え、前記読み出し専用メモリは、前記不揮発性メモリに
おいて、前記CPUが実行すべき前記命令コード部に割
り当てられた領域の先頭アドレスを特定する実行アドレ
ス特定プログラムと、前記先頭アドレスが奇数であると
きは、前記先頭アドレスの次のアドレスを指定すること
により、偶数アドレスを取得する実行アドレス指定プロ
グラムと、前記先頭アドレスが偶数であるときは、前記
先頭アドレスから前記命令コード部を実行し、前記先頭
アドレスが奇数であるときは、前記偶数アドレスから前
記命令コード部を実行する実行プログラムとを有するこ
とを特徴とする。
ICカードにおいて、読み出し専用メモリ(12)を備
え、前記読み出し専用メモリは、前記不揮発性メモリに
おいて、前記CPUが実行すべき前記命令コード部に割
り当てられた領域の先頭アドレスを特定する実行アドレ
ス特定プログラムと、前記先頭アドレスが奇数であると
きは、前記先頭アドレスの次のアドレスを指定すること
により、偶数アドレスを取得する実行アドレス指定プロ
グラムと、前記先頭アドレスが偶数であるときは、前記
先頭アドレスから前記命令コード部を実行し、前記先頭
アドレスが奇数であるときは、前記偶数アドレスから前
記命令コード部を実行する実行プログラムとを有するこ
とを特徴とする。
【0016】請求項6に係る発明は、メモリに偶数アド
レスからアクセスするCPUと、前記CPUが実行可能
であり、命令コード部と奇数バイトからなるデータコー
ド部とを含むプログラムを格納できる書き換え可能な不
揮発性メモリとを備えるICカードへの命令コード格納
方法であって、前記不揮発性メモリの未使用領域におけ
る先頭アドレスを特定し、前記先頭アドレスが偶数であ
るときは、前記先頭アドレスから前記命令コード部を格
納し、前記先頭アドレスが奇数であるときは、前記先頭
アドレスの次の偶数アドレスから前記命令コード部を格
納することを特徴とする。
レスからアクセスするCPUと、前記CPUが実行可能
であり、命令コード部と奇数バイトからなるデータコー
ド部とを含むプログラムを格納できる書き換え可能な不
揮発性メモリとを備えるICカードへの命令コード格納
方法であって、前記不揮発性メモリの未使用領域におけ
る先頭アドレスを特定し、前記先頭アドレスが偶数であ
るときは、前記先頭アドレスから前記命令コード部を格
納し、前記先頭アドレスが奇数であるときは、前記先頭
アドレスの次の偶数アドレスから前記命令コード部を格
納することを特徴とする。
【0017】請求項7に係る発明は、メモリに偶数アド
レスからアクセスするCPUと、前記CPUが実行可能
であり、命令コード部と奇数バイトからなるデータコー
ド部とを含むプログラムを格納している書き換え可能な
不揮発性メモリとを備えるICカードの命令コード実行
方法であって、前記不揮発性メモリにおいて、前記CP
Uが実行すべき前記命令コード部に割り当てられた領域
の先頭アドレスを特定し、前記先頭アドレスが偶数であ
るときは、前記先頭アドレスから前記命令コード部を実
行し、前記先頭アドレスが奇数であるときは、前記先頭
アドレスの次の偶数アドレスから前記命令コード部を実
行することを特徴とする。
レスからアクセスするCPUと、前記CPUが実行可能
であり、命令コード部と奇数バイトからなるデータコー
ド部とを含むプログラムを格納している書き換え可能な
不揮発性メモリとを備えるICカードの命令コード実行
方法であって、前記不揮発性メモリにおいて、前記CP
Uが実行すべき前記命令コード部に割り当てられた領域
の先頭アドレスを特定し、前記先頭アドレスが偶数であ
るときは、前記先頭アドレスから前記命令コード部を実
行し、前記先頭アドレスが奇数であるときは、前記先頭
アドレスの次の偶数アドレスから前記命令コード部を実
行することを特徴とする。
【0018】
【発明の実施の形態】以下、図面等を参照して、本発明
に係る一実施形態について、さらに詳しく説明する。図
1は、本発明に係るICカードの構成を示す図である。
図1に示されるように、ICカード10は、読み出し専
用メモリであるROM12、揮発性メモリであるRAM
14、随時書換え可能な不揮発性メモリのEEPROM
16及びそれらメモリにアクセスするCPU18を備え
ている。
に係る一実施形態について、さらに詳しく説明する。図
1は、本発明に係るICカードの構成を示す図である。
図1に示されるように、ICカード10は、読み出し専
用メモリであるROM12、揮発性メモリであるRAM
14、随時書換え可能な不揮発性メモリのEEPROM
16及びそれらメモリにアクセスするCPU18を備え
ている。
【0019】また、ICカード10は、リーダ/ライタ
(不図示)と電気信号等の授受を行うための複数の接点
(Vcc〜GND)を備えている。ICカードをリーダ
/ライタに挿入すると、リーダ/ライタの接点がこのI
Cカードの接点と接続され、電気信号の授受が行われ
る。各接点には、それぞれ異なる電気信号が割り付けら
れている。例えば、VccはICが動作するために必要
な電源電圧の供給を受けるための接点であり、I/0
は、CPUがリーダ/ライタと通信を行うための接点
(シリアルポート)である。
(不図示)と電気信号等の授受を行うための複数の接点
(Vcc〜GND)を備えている。ICカードをリーダ
/ライタに挿入すると、リーダ/ライタの接点がこのI
Cカードの接点と接続され、電気信号の授受が行われ
る。各接点には、それぞれ異なる電気信号が割り付けら
れている。例えば、VccはICが動作するために必要
な電源電圧の供給を受けるための接点であり、I/0
は、CPUがリーダ/ライタと通信を行うための接点
(シリアルポート)である。
【0020】CPU18は、メモリにアクセスするとき
に、偶数アドレスからのみアクセスするCPU(偶数プ
ログラムカウンタ実行CPU)である。CPU18は、
上記接点を介してリーダ・ライタからコマンドを付与さ
れ、そのコマンドに従いROM12又はEEPROM1
6に格納されているプログラムを実行する。CPU18
が上記コマンドを実行することにより、EEPROM1
6等へデータが書き込まれ、あるいは、そのデータが読
み出される。なお、本実施形態では、CPU18が実行
すべきコマンドを前述した汎用プログラムとアプリケー
ション・プログラムとに分割し、汎用プログラムをRO
M12に、アプリケーション・プログラムをEEPRO
M16に格納することとしている。
に、偶数アドレスからのみアクセスするCPU(偶数プ
ログラムカウンタ実行CPU)である。CPU18は、
上記接点を介してリーダ・ライタからコマンドを付与さ
れ、そのコマンドに従いROM12又はEEPROM1
6に格納されているプログラムを実行する。CPU18
が上記コマンドを実行することにより、EEPROM1
6等へデータが書き込まれ、あるいは、そのデータが読
み出される。なお、本実施形態では、CPU18が実行
すべきコマンドを前述した汎用プログラムとアプリケー
ション・プログラムとに分割し、汎用プログラムをRO
M12に、アプリケーション・プログラムをEEPRO
M16に格納することとしている。
【0021】図2は、本実施形態の各メモリに割り付け
られているアドレスの一例を示す図である。本実施形態
では、例えばROM12にH’0000〜H’27F
F、RAM14にH’4000〜H’40FF、EEP
ROM16にH’6000〜H’7FFFなるアドレス
を割り当てている。なお、本明細書において数値の前に
付されている「H’」は、その数値が16進数に基づい
て表記されていることを意味する。
られているアドレスの一例を示す図である。本実施形態
では、例えばROM12にH’0000〜H’27F
F、RAM14にH’4000〜H’40FF、EEP
ROM16にH’6000〜H’7FFFなるアドレス
を割り当てている。なお、本明細書において数値の前に
付されている「H’」は、その数値が16進数に基づい
て表記されていることを意味する。
【0022】図3は、EEPROM16のメモリ・マッ
プを示す図である。本実施形態では、EEPROM16
の先頭の領域、すなわちH’6000からH’600F
をシステムエリアとして確保している。システムエリア
の先頭アドレスH’6000には、変数NOAが格納さ
れている。NOAは、EEPROM16に格納(登録)
されているアプリケーション・プログラムの個数を示す
変数である。NOAは、0に初期設定され、後述するよ
うに1のアプリケーション・プログラムがEEPROM
16に格納されるごとにその値を1ずつ加算される。ア
ドレスH’6001〜H’600Fまでの領域(RF
U)は、将来ICカードの仕様を変更したときに、その
仕様において必要とされる各種パラメータ等を格納する
ための予備的な空白領域である。
プを示す図である。本実施形態では、EEPROM16
の先頭の領域、すなわちH’6000からH’600F
をシステムエリアとして確保している。システムエリア
の先頭アドレスH’6000には、変数NOAが格納さ
れている。NOAは、EEPROM16に格納(登録)
されているアプリケーション・プログラムの個数を示す
変数である。NOAは、0に初期設定され、後述するよ
うに1のアプリケーション・プログラムがEEPROM
16に格納されるごとにその値を1ずつ加算される。ア
ドレスH’6001〜H’600Fまでの領域(RF
U)は、将来ICカードの仕様を変更したときに、その
仕様において必要とされる各種パラメータ等を格納する
ための予備的な空白領域である。
【0023】アドレスH’6010以降は、アプリケー
ション・プログラムを格納することが可能な領域であ
る。図3には、一例として、2つのアプリケーション・
プログラムが格納されている状態が示されている。第1
のアプリケーション・プログラムはH’6010〜H’
607Fの領域に、第2のアプリケーション・プログラ
ムは、H’6080〜H’60DBの領域にそれぞれ格
納されている。このように本実施形態では、2以上のア
プリケーション・プログラムを格納する場合は、後のプ
ログラムを先のプログラムの直後に格納し、それらの間
に未使用のメモリ領域が存在しないようにしている。す
なわち、本実施形態では、限られたメモリ資源を最大限
有効に活用できるよう、アプリケーション・プログラム
をEEPROM16に格納しているのである。なお、ア
プリケーション・プログラムの具体的な格納方法につい
ては、図6等において詳細に説明する。
ション・プログラムを格納することが可能な領域であ
る。図3には、一例として、2つのアプリケーション・
プログラムが格納されている状態が示されている。第1
のアプリケーション・プログラムはH’6010〜H’
607Fの領域に、第2のアプリケーション・プログラ
ムは、H’6080〜H’60DBの領域にそれぞれ格
納されている。このように本実施形態では、2以上のア
プリケーション・プログラムを格納する場合は、後のプ
ログラムを先のプログラムの直後に格納し、それらの間
に未使用のメモリ領域が存在しないようにしている。す
なわち、本実施形態では、限られたメモリ資源を最大限
有効に活用できるよう、アプリケーション・プログラム
をEEPROM16に格納しているのである。なお、ア
プリケーション・プログラムの具体的な格納方法につい
ては、図6等において詳細に説明する。
【0024】EEPROM16に格納されているアプリ
ケーション・プログラムは、an_1からapplication
program までの5つの情報から構成されている。an_
1及びapplication _nameは、アプリケーション・プロ
グラムを識別するための情報である。すなわち、applic
ation _nameは、当該アプリケーション・プログラムの
名前であり、an_1は、application _nameの長さ
(バイト数)を示す1バイトのデータである。
ケーション・プログラムは、an_1からapplication
program までの5つの情報から構成されている。an_
1及びapplication _nameは、アプリケーション・プロ
グラムを識別するための情報である。すなわち、applic
ation _nameは、当該アプリケーション・プログラムの
名前であり、an_1は、application _nameの長さ
(バイト数)を示す1バイトのデータである。
【0025】NA_ADDは、当該アプリケーション・
プログラムの次に格納されている、又は、格納されるべ
きアプリケーション・プログラムの先頭アドレスを示す
2バイトのデータである。図3の例では、第1のアプリ
ケーション・プログラムが有するNA_ADDは、第2
番目のアプリケーション・プログラムの先頭アドレス
H’6080を示している。また、第2番目のアプリケ
ーション・プログラムが有するNA_ADDは、将来第
3番目のアプリケーション・プログラムが格納されるべ
き領域の先頭アドレスH’60DCを示している。な
お、本実施形態では、NA_ADDは、必ずapplicatio
n _nameの次の領域に格納される。
プログラムの次に格納されている、又は、格納されるべ
きアプリケーション・プログラムの先頭アドレスを示す
2バイトのデータである。図3の例では、第1のアプリ
ケーション・プログラムが有するNA_ADDは、第2
番目のアプリケーション・プログラムの先頭アドレス
H’6080を示している。また、第2番目のアプリケ
ーション・プログラムが有するNA_ADDは、将来第
3番目のアプリケーション・プログラムが格納されるべ
き領域の先頭アドレスH’60DCを示している。な
お、本実施形態では、NA_ADDは、必ずapplicatio
n _nameの次の領域に格納される。
【0026】apl_1は、NA_ADDの次に格納さ
れている2バイトのデータであり、その直後に格納され
ているapplication program の長さ(バイト数)を示し
ている。application program は、アプリケーション・
プログラムのCPU命令コード、及びプログラム実行時
に参照されるべきデータ等の集合である。application
program を構成するCPU命令コード及びデータは、全
て偶数バイト(2バイト、4バイト等)で構成されてい
る。なお、an_1、application _name、NA_AD
D、apl_1は、本発明に係るICカードのデータコ
ード部に該当し、application program は、命令コード
部に該当する。
れている2バイトのデータであり、その直後に格納され
ているapplication program の長さ(バイト数)を示し
ている。application program は、アプリケーション・
プログラムのCPU命令コード、及びプログラム実行時
に参照されるべきデータ等の集合である。application
program を構成するCPU命令コード及びデータは、全
て偶数バイト(2バイト、4バイト等)で構成されてい
る。なお、an_1、application _name、NA_AD
D、apl_1は、本発明に係るICカードのデータコ
ード部に該当し、application program は、命令コード
部に該当する。
【0027】図4は、本実施形態固有のコマンドである
Application Loadコマンド及びSelectコマンドのフォー
マットを示す図である。Appliction Load コマンドは、
アプリケーション・プログラムをEEPROM16に格
納するためのコマンドである。また、Selectコマンド
は、EEPROM16に格納されている特定のアプリケ
ーション・プログラムを実行するためのコマンドであ
る。
Application Loadコマンド及びSelectコマンドのフォー
マットを示す図である。Appliction Load コマンドは、
アプリケーション・プログラムをEEPROM16に格
納するためのコマンドである。また、Selectコマンド
は、EEPROM16に格納されている特定のアプリケ
ーション・プログラムを実行するためのコマンドであ
る。
【0028】図に示されるように、Application Loadコ
マンドは、5種類の情報より構成されている。第1バイ
ト目であるINSは、このコマンド識別するための1バ
イトからなる種別コードである。本実施形態では、Appl
ication Loadコマンドの種別コードとして例えば「H’
A4」を割り当てている。また、Application Loadコマ
ンドの第2バイト目以降には、順に、格納すべきアプリ
ケーション・プログラムに関するan_1、applicatio
n _name、apl_1、及びapplication program が配
置されている。
マンドは、5種類の情報より構成されている。第1バイ
ト目であるINSは、このコマンド識別するための1バ
イトからなる種別コードである。本実施形態では、Appl
ication Loadコマンドの種別コードとして例えば「H’
A4」を割り当てている。また、Application Loadコマ
ンドの第2バイト目以降には、順に、格納すべきアプリ
ケーション・プログラムに関するan_1、applicatio
n _name、apl_1、及びapplication program が配
置されている。
【0029】一方、Selectコマンドは、3種類の情報か
ら構成されている。第1バイト目は、Application Load
と同様にINSが配置されている。本実施形態では、Se
lectコマンドのINSとして、例えば「H’F0」なる
コードを割り当てている。また、Selectコマンドの第2
バイト目以降には、実行すべきアプリケーション・プロ
グラムのan_1とapplication _nameとが順に配置さ
れている。
ら構成されている。第1バイト目は、Application Load
と同様にINSが配置されている。本実施形態では、Se
lectコマンドのINSとして、例えば「H’F0」なる
コードを割り当てている。また、Selectコマンドの第2
バイト目以降には、実行すべきアプリケーション・プロ
グラムのan_1とapplication _nameとが順に配置さ
れている。
【0030】図5は、ROM12に格納されている汎用
プログラムの流れ図である。以下、図5に基づき、IC
カード10の動作の概要について説明する。ICカード
10とリーダ・ライタとが接続され、リーダ・ライタに
よりICカードがリセット(活性化)されると、CPU
18は、まず初期応答情報(ATR)をレスポンスとし
て出力する(S502)。次に、CPU18は、リーダ
・ライタからのコマンド待ち状態となる(S504、S
506)。
プログラムの流れ図である。以下、図5に基づき、IC
カード10の動作の概要について説明する。ICカード
10とリーダ・ライタとが接続され、リーダ・ライタに
よりICカードがリセット(活性化)されると、CPU
18は、まず初期応答情報(ATR)をレスポンスとし
て出力する(S502)。次に、CPU18は、リーダ
・ライタからのコマンド待ち状態となる(S504、S
506)。
【0031】リーダ・ライタからのコマンドを受信する
と(S506:Yes)、CPU18は、そのコマンド
の第1バイト目であるINSを確認する(S508)。
ここでINSの内容が「01」であると、本実施形態で
は、コマンドがApplicationLoadコマンドであると判断
され、アプリケーション・プログラムをEEPROM1
6へ格納するための処理が実行される(S510)。
と(S506:Yes)、CPU18は、そのコマンド
の第1バイト目であるINSを確認する(S508)。
ここでINSの内容が「01」であると、本実施形態で
は、コマンドがApplicationLoadコマンドであると判断
され、アプリケーション・プログラムをEEPROM1
6へ格納するための処理が実行される(S510)。
【0032】一方、ステップ508において、INSの
内容が「02」である場合には、コマンドがSelectコマ
ンドであると判断される。この結果、Selectコマンドが
指定するアプリケーション・プログラムの、EEPRO
M16におけるアドレスを特定するための処理が実行さ
れる(S512)。
内容が「02」である場合には、コマンドがSelectコマ
ンドであると判断される。この結果、Selectコマンドが
指定するアプリケーション・プログラムの、EEPRO
M16におけるアドレスを特定するための処理が実行さ
れる(S512)。
【0033】ステップ508において、INSの内容が
「01」又は「02」のいずれでもない場合には、CP
U18は、ステップ514へ進む。ステップ514で
は、すでにSelectコマンドが処理され、所定のアプリケ
ーション・プログラムが選択済みであるか否かが判断さ
れる。具体的には、RAM14の所定領域に、Selectコ
マンドを処理することにより特定された、アプリケーシ
ョン・プログラムのアドレスが存在するか否かが判断さ
れる。
「01」又は「02」のいずれでもない場合には、CP
U18は、ステップ514へ進む。ステップ514で
は、すでにSelectコマンドが処理され、所定のアプリケ
ーション・プログラムが選択済みであるか否かが判断さ
れる。具体的には、RAM14の所定領域に、Selectコ
マンドを処理することにより特定された、アプリケーシ
ョン・プログラムのアドレスが存在するか否かが判断さ
れる。
【0034】ステップ514において、アプリケーショ
ンが選択済みであると判断されると、受信されたコマン
ドのパラメータに基づいて、当該アプリケーション・プ
ログラムが実行される(S516)。一方、ステップ5
14において、アプリケーションが選択されていないと
判断されると、コマンド・エラー・ステータスがRAM
14の所定領域にレスポンス情報として編集される(S
518)。
ンが選択済みであると判断されると、受信されたコマン
ドのパラメータに基づいて、当該アプリケーション・プ
ログラムが実行される(S516)。一方、ステップ5
14において、アプリケーションが選択されていないと
判断されると、コマンド・エラー・ステータスがRAM
14の所定領域にレスポンス情報として編集される(S
518)。
【0035】次に、ステップ510、512、516又
は518のいずれかの処理が終了すると、RAM14の
所定領域に編集されたレスポンス情報が、リーダ・ライ
タに送信される(S520)。レンスポンス情報が送信
された後は、再びステップ504に戻り、ステップ52
0までの処理が繰り返される。
は518のいずれかの処理が終了すると、RAM14の
所定領域に編集されたレスポンス情報が、リーダ・ライ
タに送信される(S520)。レンスポンス情報が送信
された後は、再びステップ504に戻り、ステップ52
0までの処理が繰り返される。
【0036】次に、ステップ510、512、及び51
6のそれぞれにおいてなされる処理について説明する。
図6は、ステップ510の処理内容、つまり、Applicat
ion Loadコマンドが受信された場合にCPU18が実行
する処理内容を示す流れ図である。CPU18は、Appl
ication Loadコマンドが受信されると、まずシステムエ
リアのアドレスH’6000を参照し、NOAのデータ
を読み出す(S602)。次に、CPU18は、2つの
変数search_address 及びcounter を初期設定する。se
arch_address は、アプリケーション・プログラムを格
納する領域の先頭アドレスH’6010に初期設定され
る(S604)。また、counter は、ステップ602に
おいて取得されたNOAの値に初期設定される(S60
6)。
6のそれぞれにおいてなされる処理について説明する。
図6は、ステップ510の処理内容、つまり、Applicat
ion Loadコマンドが受信された場合にCPU18が実行
する処理内容を示す流れ図である。CPU18は、Appl
ication Loadコマンドが受信されると、まずシステムエ
リアのアドレスH’6000を参照し、NOAのデータ
を読み出す(S602)。次に、CPU18は、2つの
変数search_address 及びcounter を初期設定する。se
arch_address は、アプリケーション・プログラムを格
納する領域の先頭アドレスH’6010に初期設定され
る(S604)。また、counter は、ステップ602に
おいて取得されたNOAの値に初期設定される(S60
6)。
【0037】次に、アプリケーション・プログラムを新
たに格納することが可能な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である。
たに格納することが可能な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である。
【0038】ステップ608から612間での処理は、
例えば、図3に示した例では、2回繰り返されて行われ
る。すなわち、search_address の内容は、1回目の処
理により、第2番目のアプリケーション・プログラムの
先頭アドレスであるH’6080に更新される。また、
2回目の処理では、第3番目のアプリケーション・プロ
グラムを格納することが可能である領域の先頭アドレ
ス、H’60DCに更新される。
例えば、図3に示した例では、2回繰り返されて行われ
る。すなわち、search_address の内容は、1回目の処
理により、第2番目のアプリケーション・プログラムの
先頭アドレスであるH’6080に更新される。また、
2回目の処理では、第3番目のアプリケーション・プロ
グラムを格納することが可能である領域の先頭アドレ
ス、H’60DCに更新される。
【0039】次に、上記処理により特定されたアドレス
以降に、アプリケーション・プログラムを書き込む処理
が実行される(S614〜S636)。まず、変数writ
e _address にsearch_address の値が代入され(S6
14)、そのwrite _address が示すアドレスにApplic
ation Loadコマンドのan_1が書き込まれる(S61
6)。書き込みが終了すると、write _address は、a
n_1の長さ(バイト数)を加算することにより更新さ
れる(S618)。
以降に、アプリケーション・プログラムを書き込む処理
が実行される(S614〜S636)。まず、変数writ
e _address にsearch_address の値が代入され(S6
14)、そのwrite _address が示すアドレスにApplic
ation Loadコマンドのan_1が書き込まれる(S61
6)。書き込みが終了すると、write _address は、a
n_1の長さ(バイト数)を加算することにより更新さ
れる(S618)。
【0040】次に、更新されたwrite _address が示す
アドレスよりApplication Loadコマンドのapplication
_nameの内容が書き込まれる(S620)。書き込みが
終了すると、write _address は、an_1の示す値だ
け、すなわち、書き込んだapplication _nameの長さ
(バイト数)を加算することにより再び更新される(S
622)。
アドレスよりApplication Loadコマンドのapplication
_nameの内容が書き込まれる(S620)。書き込みが
終了すると、write _address は、an_1の示す値だ
け、すなわち、書き込んだapplication _nameの長さ
(バイト数)を加算することにより再び更新される(S
622)。
【0041】次に、後にNA_ADDを上記applicatio
n _nameの直後に書き込むための処理が行われる。すな
わち、更新されたwrite _address の値は、変数NA_AD
D _address に代入され(S624)、その後に、NA
_ADDの長さ(2バイト)がwrite _address に加算
される(S626)。
n _nameの直後に書き込むための処理が行われる。すな
わち、更新されたwrite _address の値は、変数NA_AD
D _address に代入され(S624)、その後に、NA
_ADDの長さ(2バイト)がwrite _address に加算
される(S626)。
【0042】次に、write _address が示すアドレス
に、Application Loadコマンドのapl_1の内容が書
き込まれる(S628)。また、write _address にa
pl_1の長さが加算される(S630)。これによ
り、write _address は、application progaramを書き
込むことが可能な領域の先頭アドレスを示すようにな
る。
に、Application Loadコマンドのapl_1の内容が書
き込まれる(S628)。また、write _address にa
pl_1の長さが加算される(S630)。これによ
り、write _address は、application progaramを書き
込むことが可能な領域の先頭アドレスを示すようにな
る。
【0043】ここで、本実施形態では、application pr
ogram を書き込む前にwrite _address によって指定さ
れているアドレスが奇数アドレスであるか否かを判断す
る(S632)。この結果、write _address が偶数で
ある場合には、そのまま直接ステップ636の処理へ進
み、write _address が示すアドレスにapplicationpro
gram を書き込む。一方、write _address が奇数アド
レスを示しているときは、write _address がその次の
偶数アドレスを示すよう、write _address にさらに1
を加算し(S632)、その後にステップ636の処理
を実行する。これにより、本実施形態では、applicatio
n progaramが必ず偶数アドレスから格納される。
ogram を書き込む前にwrite _address によって指定さ
れているアドレスが奇数アドレスであるか否かを判断す
る(S632)。この結果、write _address が偶数で
ある場合には、そのまま直接ステップ636の処理へ進
み、write _address が示すアドレスにapplicationpro
gram を書き込む。一方、write _address が奇数アド
レスを示しているときは、write _address がその次の
偶数アドレスを示すよう、write _address にさらに1
を加算し(S632)、その後にステップ636の処理
を実行する。これにより、本実施形態では、applicatio
n progaramが必ず偶数アドレスから格納される。
【0044】次に、write _address にはapl_1の
値が加算され(S638)、さらに、その値は、NA_AD
D _address が示すアドレスに書き込まれる(S64
0)。また、システム・エリアのNOAが1だけ加算さ
れ、EEPROM16に格納されているアプリケーショ
ン・プログラムが1つ増えたことが記録される(S64
2)。最後に、アプリケーション・プログラムが正常に
終了した旨のステータスが、RAM14の所定領域にレ
スポンス情報として編集され(S644)、Applicatio
n Loadコマンド処理が終了される。
値が加算され(S638)、さらに、その値は、NA_AD
D _address が示すアドレスに書き込まれる(S64
0)。また、システム・エリアのNOAが1だけ加算さ
れ、EEPROM16に格納されているアプリケーショ
ン・プログラムが1つ増えたことが記録される(S64
2)。最後に、アプリケーション・プログラムが正常に
終了した旨のステータスが、RAM14の所定領域にレ
スポンス情報として編集され(S644)、Applicatio
n Loadコマンド処理が終了される。
【0045】図7は、ステップ512の処理内容、つま
り、Selectコマンドが受信された場合にCPU18が実
行する処理内容を示す流れ図である。ステップ512に
おいて、CPU18は、はじめに変数seach _address
をアプリケーション・プログラムが格納されている領域
の先頭アドレスに初期設定する(S702)。本実施形
態の場合には、search_address は、H’6010に設
定される。
り、Selectコマンドが受信された場合にCPU18が実
行する処理内容を示す流れ図である。ステップ512に
おいて、CPU18は、はじめに変数seach _address
をアプリケーション・プログラムが格納されている領域
の先頭アドレスに初期設定する(S702)。本実施形
態の場合には、search_address は、H’6010に設
定される。
【0046】次に、CPU18は、EEPROM16の
システムエリアよりNOAの値を読み出し(S70
4)、その値をもって変数counter を設定する。例えば
図3に示すようにEEPROM16が2つのアプリケー
ション・プログラムを格納している場合には、counter
は2に初期設定される。
システムエリアよりNOAの値を読み出し(S70
4)、その値をもって変数counter を設定する。例えば
図3に示すようにEEPROM16が2つのアプリケー
ション・プログラムを格納している場合には、counter
は2に初期設定される。
【0047】次に、CPU18は、Selectコマンドに指
定されたアプリケーション・プログラムと同一のものが
あるか否かについて、EEPROM16に格納されてい
るアプリケーション・プログラムを順次検索する(S7
08〜S716)。具体的には、search_address が示
すアドレスのan_1及びそのan_1に続くapplicat
ion _nameと、Selectコマンドのan_1及びapplicat
ion _nameとが比較される(S710)。比較の結果、
一致しない場合には、counter の値を1だけデクリメン
トするとともに、search_address にNA_ADDの内
容を代入する(S714、S716)。ここで、ステッ
プ716におけるNA_ADDは、ステップ710にお
いてsearch_address が示したアドレス以降に現れる最
初のNA_ADDである。ステップ716においてsear
ch_address の内容を更新することにより、search_ad
dress は、次に格納されているアプリケーション・プロ
グラムの先頭アドレスを示すこととなる。
定されたアプリケーション・プログラムと同一のものが
あるか否かについて、EEPROM16に格納されてい
るアプリケーション・プログラムを順次検索する(S7
08〜S716)。具体的には、search_address が示
すアドレスのan_1及びそのan_1に続くapplicat
ion _nameと、Selectコマンドのan_1及びapplicat
ion _nameとが比較される(S710)。比較の結果、
一致しない場合には、counter の値を1だけデクリメン
トするとともに、search_address にNA_ADDの内
容を代入する(S714、S716)。ここで、ステッ
プ716におけるNA_ADDは、ステップ710にお
いてsearch_address が示したアドレス以降に現れる最
初のNA_ADDである。ステップ716においてsear
ch_address の内容を更新することにより、search_ad
dress は、次に格納されているアプリケーション・プロ
グラムの先頭アドレスを示すこととなる。
【0048】ステップ710から716までの処理は、
ステップ712において比較されたデータが一致するま
で、又は、ステップ708においてcounter の値が0と
なるまで継続される。ステップ712において、比較さ
れたデータが一致した場合(S712:Yes)には、
Selectコマンドによって指定されたアプリケーション・
プログラムが発見され、search_address はその先頭ア
ドレスを示していることが意味される。そこで、CPU
18は、search_address にan_1の長さ(バイト
数)及びan_1が示す値、すなわちapplication _na
meの長さ(バイト数)、NA_ADDの長さ、さらには
apl_1の長さを順次加算し、これを変数selected_
address に代入する(S718)。この結果、selected
_address は、当該アプリケーション・プログラムにお
けるapplication program に割り当てられた領域の先頭
アドレスを示すこととなる。application program に割
り当てられた領域とは、EEPROM16において、ア
プリケーション・プログラムが格納されている領域であ
って、データコード部が格納されている領域以外の領域
のことである。例えば、図3の第1のアプリケーション
・プログラムでは、H’6022〜H’607Fまでの
領域を、また、第2のアプリケーション・プログラムで
は、H’608B〜H’60DBまでの領域のことであ
る。
ステップ712において比較されたデータが一致するま
で、又は、ステップ708においてcounter の値が0と
なるまで継続される。ステップ712において、比較さ
れたデータが一致した場合(S712:Yes)には、
Selectコマンドによって指定されたアプリケーション・
プログラムが発見され、search_address はその先頭ア
ドレスを示していることが意味される。そこで、CPU
18は、search_address にan_1の長さ(バイト
数)及びan_1が示す値、すなわちapplication _na
meの長さ(バイト数)、NA_ADDの長さ、さらには
apl_1の長さを順次加算し、これを変数selected_
address に代入する(S718)。この結果、selected
_address は、当該アプリケーション・プログラムにお
けるapplication program に割り当てられた領域の先頭
アドレスを示すこととなる。application program に割
り当てられた領域とは、EEPROM16において、ア
プリケーション・プログラムが格納されている領域であ
って、データコード部が格納されている領域以外の領域
のことである。例えば、図3の第1のアプリケーション
・プログラムでは、H’6022〜H’607Fまでの
領域を、また、第2のアプリケーション・プログラムで
は、H’608B〜H’60DBまでの領域のことであ
る。
【0049】次に、ステップ720において、selected
_address が偶数アドレスを示しているか否かが判断さ
れる。その結果、selected_address が偶数アドレスを
示していると判断された場合には、そのまま直接ステッ
プ724の処理へ進み、selected_address の内容をR
AM14上の所定領域に格納する。一方、selected_ad
dress が偶数アドレスを示していないときは、selected
_address がその次の偶数アドレスを示すよう、select
ed_address にさらに1を加算し(S722)、その後
にステップ724の処理を実行する。すなわち、ステッ
プ720及び722は、図6のステップ632及び63
4に対応したものであり、CPU18が、application
program に割り当てられた領域において、命令コードの
実行を偶数アドレスから開始することを保証するための
ものである。以上の一連の処理を行った後に、CPU1
8は、Selectedコマンドの処理が正常に終了した旨のス
テータスをRAM14の所定領域にレスポンス情報とし
て格納し(S726)、処理を終了する。
_address が偶数アドレスを示しているか否かが判断さ
れる。その結果、selected_address が偶数アドレスを
示していると判断された場合には、そのまま直接ステッ
プ724の処理へ進み、selected_address の内容をR
AM14上の所定領域に格納する。一方、selected_ad
dress が偶数アドレスを示していないときは、selected
_address がその次の偶数アドレスを示すよう、select
ed_address にさらに1を加算し(S722)、その後
にステップ724の処理を実行する。すなわち、ステッ
プ720及び722は、図6のステップ632及び63
4に対応したものであり、CPU18が、application
program に割り当てられた領域において、命令コードの
実行を偶数アドレスから開始することを保証するための
ものである。以上の一連の処理を行った後に、CPU1
8は、Selectedコマンドの処理が正常に終了した旨のス
テータスをRAM14の所定領域にレスポンス情報とし
て格納し(S726)、処理を終了する。
【0050】一方、ステップ708において、counter
の値が0となった場合(S708:Yes)には、EE
PROM16に格納されているいずれのアプリケーショ
ン・プログラムもSelectコマンドが指定するものに該当
しなかったことが意味される。この場合には、CPU1
8は、該当するアプリケーション・プログラムがなかっ
た旨のエラーステータスをRAM14の所定領域にレス
ポンス情報として格納し(S728)、処理を終了す
る。
の値が0となった場合(S708:Yes)には、EE
PROM16に格納されているいずれのアプリケーショ
ン・プログラムもSelectコマンドが指定するものに該当
しなかったことが意味される。この場合には、CPU1
8は、該当するアプリケーション・プログラムがなかっ
た旨のエラーステータスをRAM14の所定領域にレス
ポンス情報として格納し(S728)、処理を終了す
る。
【0051】図8は、図5のステップ516においてC
PU18が実行する処理内容を示す流れ図である。図5
のステップ514において、アプリケーションが選択済
みであると判断されると、CPU18は、図7のステッ
プ724においてRAM14に格納されたselected_ad
dress の内容を取得し、それに示されるアドレスをサブ
ルーチンコールする。これにより、Selectコマンドによ
り選択されたアプリケーション・プログラムが実行され
る。
PU18が実行する処理内容を示す流れ図である。図5
のステップ514において、アプリケーションが選択済
みであると判断されると、CPU18は、図7のステッ
プ724においてRAM14に格納されたselected_ad
dress の内容を取得し、それに示されるアドレスをサブ
ルーチンコールする。これにより、Selectコマンドによ
り選択されたアプリケーション・プログラムが実行され
る。
【0052】以上説明したように、本実施形態は、アプ
リケーション・プログラムの命令コード部をEEPRO
M16に格納するときに、書き込みを行う領域の先頭ア
ドレスの偶数/奇数をあらかじめ確認する。そして、当
該先頭アドレスが奇数である場合には、その次に位置す
る偶数アドレスから命令コード部を格納することとして
いる。したがって、アプリケーション・プログラムが、
奇数バイトからなるデータコード部と、そのデータコー
ド部の後に続く命令コード部から構成される場合であっ
ても、その命令コード部は、必ず偶数アドレスからEE
PROM16に格納される。また、アプリケーション・
プログラム自体が、その長さ(バイト数)が不特定であ
る他のプログラム又はデータ等の次に格納される場合で
あっても、その命令コード部は、上記の場合と同様に、
確実に偶数アドレスから格納される。
リケーション・プログラムの命令コード部をEEPRO
M16に格納するときに、書き込みを行う領域の先頭ア
ドレスの偶数/奇数をあらかじめ確認する。そして、当
該先頭アドレスが奇数である場合には、その次に位置す
る偶数アドレスから命令コード部を格納することとして
いる。したがって、アプリケーション・プログラムが、
奇数バイトからなるデータコード部と、そのデータコー
ド部の後に続く命令コード部から構成される場合であっ
ても、その命令コード部は、必ず偶数アドレスからEE
PROM16に格納される。また、アプリケーション・
プログラム自体が、その長さ(バイト数)が不特定であ
る他のプログラム又はデータ等の次に格納される場合で
あっても、その命令コード部は、上記の場合と同様に、
確実に偶数アドレスから格納される。
【0053】一方、本実施形態では、アプリケーション
・プログラムを実行するときは、はじめに、その命令コ
ード部に割り当てられている領域の先頭アドレスを特定
し、その先頭アドレスが偶数であるか、奇数であるかを
プログラムの実行に先立って確認する。そして、当該先
頭アドレスが奇数である場合には、その次に位置する偶
数アドレスより命令コード部を実行する。したがって、
本実施形態では、命令コード部に割り当てられている領
域の先頭に未使用のアドレスが存在する場合であって
も、その未使用アドレスより命令コード部の実行を開始
し、その結果CPU18が誤動作することはない。
・プログラムを実行するときは、はじめに、その命令コ
ード部に割り当てられている領域の先頭アドレスを特定
し、その先頭アドレスが偶数であるか、奇数であるかを
プログラムの実行に先立って確認する。そして、当該先
頭アドレスが奇数である場合には、その次に位置する偶
数アドレスより命令コード部を実行する。したがって、
本実施形態では、命令コード部に割り当てられている領
域の先頭に未使用のアドレスが存在する場合であって
も、その未使用アドレスより命令コード部の実行を開始
し、その結果CPU18が誤動作することはない。
【0054】(その他の実施形態)なお、本発明は、上
記実施形態に限定されるものではない。上記実施形態
は、例示であり、本発明の特許請求の範囲に記載された
技術的思想と実質的に同一な構成を有し、同様な作用効
果を奏するものは、いかなるものであっても本発明の技
術的範囲に包含される。
記実施形態に限定されるものではない。上記実施形態
は、例示であり、本発明の特許請求の範囲に記載された
技術的思想と実質的に同一な構成を有し、同様な作用効
果を奏するものは、いかなるものであっても本発明の技
術的範囲に包含される。
【0055】例えば、上記実施形態では、1のアプリケ
ーション・プログラムが1のデータコード部と1の命令
コード部を有する場合について説明したが、これは2以
上のデータコード部、又は2以上の命令コード部を有す
ることであってもよい。この場合に、命令コード部は、
必ずしも上記実施形態のようにデータコード部の次に格
納される必要はなく、データコード部の前に格納される
ことであってもよく、また、2つのデータコード部の間
に格納されることであってもよい。なお、データコード
部は、上記実施形態のように2以上のデータコードから
構成されることであってもよく、また、1のデータコー
ドのみから構成されることであってもよい。同様に、命
令コード部は、1の命令コードのみから構成されること
であってもよく、また、2以上の命令コードから構成さ
れることであってもよい。
ーション・プログラムが1のデータコード部と1の命令
コード部を有する場合について説明したが、これは2以
上のデータコード部、又は2以上の命令コード部を有す
ることであってもよい。この場合に、命令コード部は、
必ずしも上記実施形態のようにデータコード部の次に格
納される必要はなく、データコード部の前に格納される
ことであってもよく、また、2つのデータコード部の間
に格納されることであってもよい。なお、データコード
部は、上記実施形態のように2以上のデータコードから
構成されることであってもよく、また、1のデータコー
ドのみから構成されることであってもよい。同様に、命
令コード部は、1の命令コードのみから構成されること
であってもよく、また、2以上の命令コードから構成さ
れることであってもよい。
【0056】また、上記実施形態では、複数のアプリケ
ーション・プログラムが連続してEEPROM16に格
納されている場合について説明しているが、これは、1
つのアプリケーション・プログラムのみがEEPROM
16に格納されることであってもよい。また、本発明の
技術的思想は、1又は2以上のアプリケーション・プロ
グラムの前若しくはその間にアプリケーション・プログ
ラム以外のデータその他の情報を格納するICカードに
ついても適用することが可能である。
ーション・プログラムが連続してEEPROM16に格
納されている場合について説明しているが、これは、1
つのアプリケーション・プログラムのみがEEPROM
16に格納されることであってもよい。また、本発明の
技術的思想は、1又は2以上のアプリケーション・プロ
グラムの前若しくはその間にアプリケーション・プログ
ラム以外のデータその他の情報を格納するICカードに
ついても適用することが可能である。
【0057】なお、本明細書において、「ICカード」
とは、CPUと、このCPUによってアクセスされるメ
モリとを備え、CPUは、そのメモリに格納されている
プログラムにしたがい動作する携帯可能な情報記録媒体
を意味する。したがって、「ICカード」は、例えばそ
の形状が平面的かつ四角形であるいわゆるカード状に限
定されるものではなく、コイン形状等の媒体にCPU及
びメモリを備えたものであってもよい。
とは、CPUと、このCPUによってアクセスされるメ
モリとを備え、CPUは、そのメモリに格納されている
プログラムにしたがい動作する携帯可能な情報記録媒体
を意味する。したがって、「ICカード」は、例えばそ
の形状が平面的かつ四角形であるいわゆるカード状に限
定されるものではなく、コイン形状等の媒体にCPU及
びメモリを備えたものであってもよい。
【0058】
【発明の効果】以上詳しく説明したように、請求項1に
係る発明によれば、メモリに偶数アドレスからのみアク
セスするCPUを用いたICカードにおいて、不揮発性
メモリに、奇数バイトからなるデータコード部を含むプ
ログラムをCPUが実行可能な状態で格納することが可
能となった。
係る発明によれば、メモリに偶数アドレスからのみアク
セスするCPUを用いたICカードにおいて、不揮発性
メモリに、奇数バイトからなるデータコード部を含むプ
ログラムをCPUが実行可能な状態で格納することが可
能となった。
【0059】請求項2、請求項3又は請求項6に係る発
明によれば、不揮発性メモリにおいて、奇数バイト数か
らなるデータコード部、他のアプリケーション・プログ
ラム、又はデータ等の後に命令コード部を格納するとき
に、当該命令コード部は、必ずCPUが実行可能な状態
で格納されることとなった。
明によれば、不揮発性メモリにおいて、奇数バイト数か
らなるデータコード部、他のアプリケーション・プログ
ラム、又はデータ等の後に命令コード部を格納するとき
に、当該命令コード部は、必ずCPUが実行可能な状態
で格納されることとなった。
【0060】請求項3、請求項4又は請求項7に係る発
明によれば、命令コード部に割り当てられた領域の先頭
アドレスが奇数アドレスである場合にも、CPUが命令
コード部を正しく読みとり実行することが可能となっ
た。
明によれば、命令コード部に割り当てられた領域の先頭
アドレスが奇数アドレスである場合にも、CPUが命令
コード部を正しく読みとり実行することが可能となっ
た。
【0061】
【図1】本発明に係るICカードの構成を示す図であ
る。
る。
【図2】本発明に係るICカードの各メモリーに割り付
けられているアドレスの一例を示す図である。
けられているアドレスの一例を示す図である。
【図3】EEPROM16のメモリ・マップを示す図で
ある。
ある。
【図4】Application Loadコマンド、及びSelectコマン
ドのフォーマットを示す図である。
ドのフォーマットを示す図である。
【図5】ROM12に格納されている汎用プログラムの
流れ図である。
流れ図である。
【図6】Application Loadコマンドが受信された場合に
CPU18が実行する処理内容を示す流れ図である。
CPU18が実行する処理内容を示す流れ図である。
【図7】Selectコマンドが受信された場合にCPU18
が実行する処理内容を示す流れ図である。
が実行する処理内容を示す流れ図である。
【図8】図5のステップ516においてCPU18が実
行する処理内容を示す流れ図である。
行する処理内容を示す流れ図である。
【符号の説明】 10 ICカード 12 ROM 14 RAM 16 EEPROM 18 CPU
Claims (7)
- 【請求項1】 メモリに偶数アドレスからのみアクセス
するCPUと、 前記CPUが実行可能であり、データコード部と命令コ
ード部とを含むプログラムを格納する書き換え可能な不
揮発性メモリとを備え、 前記命令コード部を必ず偶数アドレスから格納すること
により、奇数バイトからなるデータコード部を含む前記
プログラムを前記不揮発性メモリに格納可能としたこと
を特徴とするICカード。 - 【請求項2】 請求項1に記載のICカードにおいて、 読み出しメモリを備え、 前記読み出し専用メモリは、 前記命令コード部を格納しようとするアドレスが偶数で
あるときは、前記アドレスから前記命令コード部を格納
し、前記アドレスが奇数であるときは、前記アドレスの
次の偶数アドレスから前記命令コード部を格納する命令
コード格納プログラムを有することを特徴とするICカ
ード。 - 【請求項3】 請求項1に記載のICカードにおいて、 読み出し専用メモリを備え、 前記読み出し専用メモリは、 前記不揮発性メモリにおける未使用領域の先頭アドレス
を特定する格納アドレス特定プログラムと、 前記先頭アドレスが奇数である場合に、前記先頭アドレ
スの次のアドレスを指定することにより、偶数アドレス
を取得する奇数アドレス変換プログラムと、 前記先頭アドレスが偶数であるときは、前記先頭アドレ
スから前記命令コード部を格納し、前記先頭アドレスが
奇数であるときは、前記偶数アドレスから前記命令コー
ド部を格納する格納プログラムとを有することを特徴と
するICカード。 - 【請求項4】 請求項1に記載のICカードにおいて、 読み出し専用メモリを備え、 前記読み出し専用メモリは、 前記不揮発性メモリにおいて、前記CPUがアクセスす
べきアドレスが偶数であるときは、前記アドレスから前
記命令コード部を実行し、前記アドレスが奇数であると
きは、前記アドレスの次の偶数アドレスから前記命令コ
ード部を実行する命令コード実行プログラムとを有する
ことを特徴とするICカード。 - 【請求項5】 請求項1に記載のICカードにおいて、 読み出し専用メモリを備え、 前記読み出し専用メモリは、 前記不揮発性メモリにおいて、前記CPUが実行すべき
前記命令コード部に割り当てられた領域の先頭アドレス
を特定する実行アドレス特定プログラムと、 前記先頭アドレスが奇数であるときは、前記先頭アドレ
スの次のアドレスを指定することにより、偶数アドレス
を取得する実行アドレス指定プログラムと、 前記先頭アドレスが偶数であるときは、前記先頭アドレ
スから前記命令コード部を実行し、前記先頭アドレスが
奇数であるときは、前記偶数アドレスから前記命令コー
ド部を実行する実行プログラムとを有することを特徴と
するICカード。 - 【請求項6】 メモリに偶数アドレスからアクセスする
CPUと、前記CPUが実行可能であり、命令コード部
と奇数バイトからなるデータコード部とを含むプログラ
ムを格納できる書き換え可能な不揮発性メモリとを備え
るICカードへの命令コード格納方法であって、 前記不揮発性メモリの未使用領域における先頭アドレス
を特定し、 前記先頭アドレスが偶数であるときは、前記先頭アドレ
スから前記命令コード部を格納し、 前記先頭アドレスが奇数であるときは、前記先頭アドレ
スの次の偶数アドレスから前記命令コード部を格納する
ことを特徴とする命令コード格納方法。 - 【請求項7】 メモリに偶数アドレスからアクセスする
CPUと、前記CPUが実行可能であり、命令コード部
と奇数バイトからなるデータコード部とを含むプログラ
ムを格納している書き換え可能な不揮発性メモリとを備
えるICカードの命令コード実行方法であって、 前記不揮発性メモリにおいて、前記CPUが実行すべき
前記命令コード部に割り当てられた領域の先頭アドレス
を特定し、 前記先頭アドレスが偶数であるときは、前記先頭アドレ
スから前記命令コード部を実行し、前記先頭アドレスが
奇数であるときは、前記先頭アドレスの次の偶数アドレ
スから前記命令コード部を実行することを特徴とする命
令コード実行方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8153582A JPH103525A (ja) | 1996-06-14 | 1996-06-14 | Icカード、命令コード格納方法及び命令コード実行方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8153582A JPH103525A (ja) | 1996-06-14 | 1996-06-14 | Icカード、命令コード格納方法及び命令コード実行方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH103525A true JPH103525A (ja) | 1998-01-06 |
Family
ID=15565647
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8153582A Pending JPH103525A (ja) | 1996-06-14 | 1996-06-14 | Icカード、命令コード格納方法及び命令コード実行方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH103525A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10946015B2 (en) | 2005-09-12 | 2021-03-16 | Actelion Pharmaceuticals Ltd | Stable pharmaceutical compositions comprising a pyrimidine-sulfamide |
-
1996
- 1996-06-14 JP JP8153582A patent/JPH103525A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10946015B2 (en) | 2005-09-12 | 2021-03-16 | Actelion Pharmaceuticals Ltd | Stable pharmaceutical compositions comprising a pyrimidine-sulfamide |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4748320A (en) | IC card | |
| EP0483978A2 (en) | I.C. card | |
| US6286757B1 (en) | Portable electronic apparatus | |
| US8010734B2 (en) | Method and system for reading instructions from NAND flash memory and writing them into SRAM for execution by a processing device | |
| JPH103525A (ja) | Icカード、命令コード格納方法及び命令コード実行方法 | |
| JP3764206B2 (ja) | Icカード、プログラム導入方法及びプログラム実行方法 | |
| JP3512252B2 (ja) | Cpuを内蔵した情報記録媒体 | |
| JPH1040350A (ja) | Icカード及びコマンド実行方法 | |
| JPH08190614A (ja) | Icカード | |
| JPH103385A (ja) | Icカード及びアプリケーション・プログラム導入方法 | |
| JPH103526A (ja) | Icカード | |
| US7281113B2 (en) | Microcomputer with built-in electrically rewritable nonvolatile memory | |
| JP4580660B2 (ja) | Romにアプリケーションを実装したマルチアプリケーションicカードおよびアプリケーションプログラム | |
| JPH0435780B2 (ja) | ||
| JP4211890B2 (ja) | トランザクションにおけるメモリカードのデータの変更方法 | |
| JP3168572B2 (ja) | Cpu暴走検知機能付きicカード | |
| JP3040135B2 (ja) | Icカード | |
| JPH09231065A (ja) | プログラム変更可能な電子制御装置 | |
| EP1093126B1 (en) | Integrated circuit | |
| JPH1063793A (ja) | Icカード及びicカードのコマンド確立方法 | |
| JPH09269978A (ja) | Icカード及びその初期応答方法 | |
| JPH09282426A (ja) | Icカード及びその通信方法 | |
| JPH0855204A (ja) | Cpu付きicカード及びcpu付きicカードに於けるアクセス可能アドレス制限方法 | |
| JP3120804B2 (ja) | Icカード及びicカードシステム | |
| JP2025127976A (ja) | Icカード、コンピュータプログラム、icチップおよびリセット応答の出力方法 |