JP2005234898A - Romにアプリケーションを実装したマルチアプリケーションicカードおよびプログラム - Google Patents

Romにアプリケーションを実装したマルチアプリケーションicカードおよびプログラム Download PDF

Info

Publication number
JP2005234898A
JP2005234898A JP2004043384A JP2004043384A JP2005234898A JP 2005234898 A JP2005234898 A JP 2005234898A JP 2004043384 A JP2004043384 A JP 2004043384A JP 2004043384 A JP2004043384 A JP 2004043384A JP 2005234898 A JP2005234898 A JP 2005234898A
Authority
JP
Japan
Prior art keywords
application
data
address
subroutine
card
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.)
Granted
Application number
JP2004043384A
Other languages
English (en)
Other versions
JP4580660B2 (ja
Inventor
Akira Shibuya
彰 渋谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2004043384A priority Critical patent/JP4580660B2/ja
Publication of JP2005234898A publication Critical patent/JP2005234898A/ja
Application granted granted Critical
Publication of JP4580660B2 publication Critical patent/JP4580660B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Credit Cards Or The Like (AREA)

Abstract

【課題】 ROMにアプリケーションを実装したマルチアプリケーション型ICカードにおいても、サブルーチンの変更・追加およびデータアドレスの変更に容易に対応がとれるようにする。
【解決手段】 アクセスする対象のアドレスを記録したアドレステーブル621b、cを書換え可能なメモリに実装し、前記アドレステーブルからアクセスする対象のアドレスを取得することで、ICチップ製造後に前記対象のアドレスが変更される場合でも、アドレスが変更となる対象の前記アドレステーブルのアドレス値のみを変更れば、読み出し専用メモリに実装されているアプリケーションを変更する必要はなくなる。
【選択図】 図5

Description

本発明は、クレジットカードサイズのプラスチックカードに半導体集積回路(以下、ICチップと記す)を埋め込んだICカードおよびICカード用ソフトウェアに関し、特に一枚のICカードに複数のアプリケーションを実装できるマルチアプリケーション型ICカードおよび前記マルチアプリケーション型ICカードに実装するアプリケーションに関する。
ICカードとは、クレジットカードサイズのプラスチックカードにICチップを埋め込み、前記ICチップのメモリにデータを記録するカードである。近年ICカードはキャッシュカード、クレジットカードまたは電子マネーなどに幅広く応用されている。
従来のICカードには用途ごとに単一のソフトウェアすなわちアプリケーションを読み出し専用メモリ(Read Only Memory 、以下ROMと記す)に実装することが主流であったため、一枚のICカードは単一の機能しか持たず、用途ごとにICカードが必要であった。このため、利用者側は複数枚のICカードを常に所持する必要があり大変不便であった。この問題を解消すべく、現在は一枚のICカードに複数のアプリケーションを組み込むことができるマルチアプリケーション型ICカードが主流になりつつある。
マルチアプリケーション型ICカードとは、前述の通り、複数のアプリケーションを一枚のICカードに実装することができるICカードで、ICチップが備えているROMに基本処理を行うマルチアプリケーションオペレーティングシステム(Operating System、以下OSと記す)を実装し、同じくICチップが備えている電気的に消去・書き換えができるROM(Electrically Erasable Programmable Read Only Memory、以下EEPROMと記す)に一つまたは複数のアプリケーションを実装する。前記EEPROMにアプリケーションを実装することで、利用者が使用する複数のアプリケーションを一枚のICカードに実装でき、またICカード製造後のアプリケーションの追加、不必要なアプリケーションの削除が行なえ、かつアプリケーションの機能拡充も容易である。
その一方、マルチアプリケーション型ICカードは前記EEPROMにアプリケーションを実装する都合上、ICチップの面積が大きくなるといった問題が生じる。一般的にEEPROMの単一面積当たりのデータ実装密度はROMの約1/6しかなく、アプリケーションをEEPROMに実装する時のメモリ面積は、ROMに実装した時のメモリ面積の6倍の面積が必要になる。ICチップ面積が大きくなることは、マルチアプリケーション型ICカード用ICチップが高価になるデメリットをもたらす。
前述のデメリットを解決すべく、特許文献1の発明は、中間言語で記述されたアプリケーションの一部をICチップ製造時にROMに実装することで、比較的容量の小さいEEPROMを有するICチップでも複数のアプリケーションを実装できるマルチアプリケーション型ICカードを開示している。
前述の発明は、アプリケーションの一部をROMに実装することで、EEPROM容量が小さく価格の安いICチップでも多くのアプリケーションを実装できるマルチアプリケーション型ICカードを提供できるが、アプリケーションをROMに実装することで不都合も生じてしまう。ROMはメモリの特性上、ROMに実装されたアプリケーションコードをICチップ製造後に変更することができない点である。例えばアプリケーションが使用するデータ量が変更になり、、EEPROMに記録するデータのアドレスすなわちデータ記録アドレスが変更される場合、ROMに実装されたアプリケーションに前記データ記録アドレスが記述されていると、前記ROMに実装されたアプリケーションはデータ記憶アドレスの変更に対応できない。またROMに実装されたアプリケーションに含まれる一つのサブルーチンを変更したい場合も、ROMに実装されたアプリケーションに前記サブルーチンを呼び出すアドレスすなわちサブルーチン呼び出しアドレスが記述されていると、前記サブルーチンのみを変更することは容易ではない。このような場合は、アプリケーションをすべてEEPROMに実装するか、もしくは変更したアプリケーションをROMに実装した新たなICチップを製造しなければならない。
特表2002−501269号公報
本発明は前述の問題を鑑みて、ROMにアプリケーションを実装したマルチアプリケーション型ICカードにおいて、前記アプリケーションの機能追加・変更または前記アプリケーションが使用するデータのアドレス変更に対応できる拡張性の高いマルチアプリケーション型ICカードおよびアプリケーションを提供することを目的とする。
上記課題を解決するために、本発明の第1の発明は、複数のアプリケーションを一つのICチップに実装できるマルチアプリケーション型ICカードにおいて、前記マルチアプリケーション型ICカードに埋め込まれたICチップの読取り専用メモリと書換え可能なメモリに分割され実装されているアプリケーションと、前記書換え可能なメモリには前記アプリケーションがアクセスする対象のアドレスを記録したアドレステーブルを具備したことを特徴とするマルチアプリケーション型ICカードである。前記アドレステーブルを前記書換え可能なメモリに実装し、前記アドレステーブルからアクセスする対象のアドレスを取得することで、ICチップ製造後に前記対象のアドレスが変更される場合でも、アドレスが変更となる対象の前記アドレステーブル内のアドレス値のみを変更すれば、前記読み出し専用メモリに実装されているアプリケーションを変更する必要はなくなる。
本発明の第2の発明は、前記アクセスする対象をデータとしたことを特徴とする第1の発明に記載のICカードである。前記アクセスする対象をデータとすることで、ICチップ製造後に前記書換え可能なメモリに記録されるデータのデータ記録アドレスが変更される場合でも、変更後のデータ記録アドレスをアドレステーブルに記録すれば、前記読み出し専用メモリに実装されているアプリケーションは、前記アドレステーブルから変更後のデータ記録アドレスを取得しデータに間違いなくアクセスできる。
本発明の第3の発明は、前記アクセスする対象を前記アプリケーションが使用するサブルーチンとしたことを特徴とする第1の発明または第2の発明に記載のICカードである。前記アクセスする対象をサブルーチンとすることで、ICチップ製造後にサブルーチンの呼び出しアドレスが変更になった場合でも、前記読み出し専用メモリに実装されている他のアプリケーションは、前記アドレステーブルから変更後のサブルーチン呼び出しアドレスを取得すれば変更されたサブルーチンを使用できる。
本発明の第4の発明は、複数のアプリケーションを一枚のICカードに搭載できるマルチアプリケーション型ICカードにおいて、読み出し専用のメモリに実装されたアプリケーションがメモリ内の対象にアクセスするプログラムであって、前記プログラムは、前記アプリケーションが前記対象のアドレスを記録したアドレステーブルにアクセスするステップと、前記アドレステーブルから前記対象のアドレスを取得するステップと、前記アプリケーションが前記アドレステーブルから取得したアドレスにアクセスするステップを順に実行する手順を含むプログラムである。上記ステップを順に実行するプログラムを前記アプリケーションが含むことで、ICチップ製造後に前記対象のアドレスが変更される場合でも、前記読み出し専用メモリに実装されているアプリケーションは、前記アドレステーブルから前記対象の変更後のアドレスを取得すれば前記対象にアクセスできる。
本発明の第5の発明は、第4の発明に記載されたプログラムであって、前記対象はデータであることを特徴としたプログラムである。前記対象をデータとすることで、ICチップ製造後にデータのアドレスが変更される場合でも、前記読み出し専用メモリに実装されているアプリケーションは、前記アドレステーブルから変更後のデータ記録アドレスを取得すればデータにアクセスできる。
本発明の第6の発明は、第4の発明または第5の発明に記載されたプログラムであって、前記対象はサブルーチンであることを特徴としたプログラムである。前記対象をサブルーチンとすることで、ICチップ製造後にサブルーチンを変更する場合でも、前記読み出し専用メモリに実装されているアプリケーションは、前記アドレステーブルから変更後のサブルーチン呼び出しアドレスを取得すれば変更後のサブルーチンを使用できる。
上述に述べたように、本発明を適用したマルチアプリケーション型ICカードおよびアプリケーションは、ROMにアプリケーションを実装していた場合においても、前記アプリケーションの機能追加・変更またはデータ記録アドレスの変更に対応できる拡張性の高いマルチアプリケーション型ICカードおよびアプリケーションを提供できる。
本発明の実施の形態を、以下に図を参照にしながら詳細に説明する。まず初めにマルチアプリケーション型ICカードのソフトウェア基本構造モデルおよび前記ICカードに実装するアプリケーションについて説明し、次に前記アプリケーションを実装したICチップのメモリ構造を説明し、つづいて前記アプリケーションの動作手順について説明し、最後に発明の効果について説明する。
<マルチアプリケーション型ICカードのソフトウェア基本構造モデルおよびアプリケーションの説明>
まず初めに本実施の形態のマルチアプリケーション型ICカードのソフトウェア基本構造モデルおよび前記ICカードに実装するアプリケーションの構造についてそれぞれ説明する。図1はマルチアプリケーション型ICカードのソフトウェア基本構造モデルの図、図2はICチップの構造図、図3は前記ICカードに実装するアプリケーションのソフトウェア構造図である。
図1に示すようにマルチアプリケーション型ICカードのソフトウェア基本構造モデルは、ICチップ10、マルチアプリケーションOS20およびアプリケーション30の3階層構造である。
図2はICチップ10の構造図である。通常ICチップ10には、中央演算装置100(Central Processing Unit、以下CPUと記す)、読み出し専用メモリ110(Read Only Memory、以下ROMと記す)、書換え可能なメモリとしてEEPROM120(Electrically Erasable Programmable Read-Only Memoryの略)、揮発性メモリとしてランダムアクセスメモリ130(Random Access Memory、以下RAMと記す)および図外リーダライタとデータを通信するためのI/O回路140を少なくとも備なえている。本発明は、ICチップ10の仕様を限定するものではなく、ICカードの用途に適した仕様のICチップ10を選択することができる。例えばROM110およびEEPROM120の容量については限定しないし、書換え可能なメモリは強誘電体メモリまたはフラッシュメモリ等のEEPROM以外のメモリであっても構わない。またICチップ10はタイマー回路、暗号演算回路またはコプロセッサ回路等の図示していない他のデバイスを備えていても構わない。
マルチアプリケーションOS20は、アプリケーション30をEEPROM120へロードする機能、EEPROM120に実装したアプリケーション30の削除機能、ならびにI/O回路140を制御し図外リーダライタと通信する機能等のICカードが動作するための基本機能を備えたソフトウェアである。現在ICカード用マルチアプリケーションOSとしては、2、3種類のマルチアプリケーションOSが主流になりつつあるが、本発明においては何らマルチアプリケーションOSの種類を限定するものではない。
本実施の形態のアプリケーション30のソフトウェア構造を図3に示す。アプリケーション30はある用途ために設計されたソフトウェアであり、ICチップ10が具備するメモリに利用者が必要とする一つまたは複数のアプリケーションが実装される。なお実装されるアプリケーション30は、マルチアプリケーションOS20が対応している中間言語で記述されることが一般的である。
図3に示すように、アプリケーション30のソフトウェア構造は、CPU100を制御するソフトウェアを記述したアプリケーションコード310とアプリケーションコード310が使用するデータとしてアプリケーションデータ320から構成される。アプリケーションコード310はアプリケーション基本コード311とアプリケーション拡張コード312から、アプリケーションデータ320はアプリケーション基本データ321とアプリケーション拡張データ322からそれぞれ構成されている。
アプリケーション基本コード311とはアプリケーションの基本機能を記述したコードで、アプリケーション基本コード311が使用するデータがアプリケーション基本データ321である。アプリケーション拡張コード312はアプリケーションの拡張機能または修正内容を記述したコードであり、アプリケーション拡張コード312が使用するデータがアプリケーション拡張データ322である。本実施の形態においては、アプリケーション基本データ321およびアプリケーション拡張データ322に記録されるデータはファイル形式で記録され、各々のファイルには異なるファイル番号が付加され、ファイル番号を用いることで各々のデータを識別できる。
例えばICカードが社員証用途に使用される場合、社内で共通の機能がアプリケーション基本コード311として記述され、部門ごとに特有の機能がアプリケーション拡張コード312として記述される。よってアプリケーション30において、基本機能を記述したアプリケーション基本コード311およびアプリケーション基本データ321は必ず必要であるが、拡張機能もしくは修正内容を記述したアプリケーション拡張コード312およびアプリケーション拡張データ322は必ずしも必要ではない。
<ROMおよびEEPROMのメモリ構造>
ICチップ10が具備するメモリすなわちROM110およびEEPROM120に前述のアプリケーション30を実装したときのメモリ構造について、図を参照しながら詳細に説明する。図4はアプリケーション30を実装したROM110のメモリ構造図、図5はアプリケーション30を実装したEEPROM120のメモリ構造図である。通常マルチアプリケーション型ICカードにおいては、アプリケーションすべてをEEPROMに実装することが一般的であるが、図4および図5に示した通り、本実施の形態においてはアプリケーション30はROM110およびEEPROM120に分割され実装されている。
図4に示すように、ICチップ10のROM110は、ROMのOS領域510とROMのアプリケーション領域520の2つの領域を有し、ROMのOS領域510にはマルチアプリケーションOSコード511がROMのアプリケーション領域520にはそれぞれ異なる複数のアプリケーションROMコード521が実装されている。ROMのアプリケーション領域520に実装されるアプリケーションROMコード521はアプリケーション30のアプリケーション基本コード311としている。ROM110にアプリケーション基本コード311を実装することで、容量の小さいEEPROMを具備したICチップでも多くのアプリケーションをEEPROM120に実装でき、かつ必要あればアプリケーション拡張コード312をEEPROM120に実装する仕組みである。前述のようにアプリケーション基本コード311はアプリケーションごとに共通で必ず必要であるが、アプリケーション拡張コード312は同じアプリケーションでも複数存在する可能性があるため、アプリケーション拡張コード311をEEPROM120に実装することにしている。例えばクレジットカード用途においては、クレジットの決済機能をアプリケーション基本コード311とし、利用者ごとに異なる可能性があるポイント等の機能をアプリケーション拡張コード312にする。
本実施の形態においては、アプリケーションROMコード521には、アプリケーション基本コード311で使用するサブルーチン521aをのみ実装し、それ以外のアプリケーション基本コード311はEEPROM120に実装している。
またアプリケーションROMコード521には、サブルーチン521aに加えて、サブルーチン521aから参照されるサブルーチンテーブルアドレス521bとデータテーブルアドレス521cが、アプリケーションROMコード521領域内に実装されている。サブルーチンテーブルアドレス521bとはサブルーチンテーブルが記録されているアドレスのことであり、前記サブルーチンテーブルとはアプリケーション30内に含まれるサブルーチンの呼び出しアドレスを記録したテーブルである。データテーブルアドレス521cとはデータテーブルが記録されているアドレスのことであり、前記データテーブルとはアプリケーション30内に含まれるデータのデータ記録アドレスを記録したテーブルである。
サブルーチンテーブルアドレス521bおよびデータテーブルアドレス521cが実装されているアドレスは、アプリケーションROMコード521の設計段階で定められ、サブルーチン521aは前記設計段階で定めれたアドレスに記録されたデータを読取ることで、サブルーチンテーブルアドレス521bまたはデータテーブルアドレス521cを取得することができる。
なお、ROM110に実装されるコードはすべてICチップ製造時にROM110に焼き込まれ、ICチップ10製造後はROM110に実装されたコードを修正または変更することは物理的にできない。またROMのアプリケーション領域520にアプリケーションROMコード521が実装されると、アプリケーションROMコード521を実装したアドレスがEEPROM120の所定の領域に記録される。
図5はEEPROM120のメモリ構造を示した図である。図5(a)はアプリケーション30を実装する前のEEPROM120の構造図であり、図5(b)はアプリケーション30を実装した後のEEPROM120の構造図である。
図5(a)、(b)に示すように、EEPROM120にはEEPROMのOS領域610とEEPROMのアプリケーション領域620の2つの領域が存在している。EEPROMのOS領域610とはマルチアプリケーションOSコード511が動作するために必要なOSデータ611aを記録する領域であり、前述のアプリケーションROMコード521をROM110に実装したアドレス611bもEEPROMのOS領域610に実装される。
EEPROMのアプリケーション領域620とはアプリケーション30が実装されるEEPROM120の領域である。図5(a)に図示したように、ICカード製造直後は一つのアプリケーションもEEPROMのアプリケーション領域620に実装されていない。マルチアプリケーションOS20が定めているアプリケーションのロード手順に従いアプリケーション30をロードした後のEEPROM120構造が図5(b)である。図5(b)に図示したように、アプリケーション30をロードした後は、EEPROMのアプリケーション領域620にアプリケーション30が使用するアプリケーションEEPROMデータ621が書込まれる。
前述のようにアプリケーション30をEEPROM120に実装する機能すなわちアプリケーションをロードする機能は、マルチアプリケーションOS20の機能である。例えば、アプリケーションをロードする際の認証機能等のセキュリティ機能、EEPROM容量のチェック機能およびEEPROMへのアプリケーションの書き込み機能等は、すべてマルチアプリケーションOS20の役割である。EEPROM120にアプリケーション30が正常に実装された後は、EEPROMのOS領域610に書込まれたアプリケーションの名称、およびアプリケーションEEPROMデータ621が実装されたアドレス611c等の情報が記録される。アプリケーション30が起動すると、アドレス611bに基きアプリケーション30が使用できるROM領域と、アドレス611cに基きアプリケーション30が使用できるEEPROM領域とがそれぞれマルチアプリケーションOS20によって設定される。
本実施の形態においてアプリケーションEEPROMデータ621には、以下のコードおよびデータが少なくとも含まれる。EEPROMコード621aは、アプリケーション基本コード311の一部であり、サブルーチン521aを使用してアプリケーションの初期化および処理を行うコードである。サブルーチンテーブル621bは、前述の通り、アプリケーション30内に含まれるサブルーチンのサブルーチン呼び出しアドレスを記録したテーブルである。サブルーチンテーブル621bが記録されているアドレスがサブルーチンテーブルアドレス521bである。サブルーチンを呼び出す際は、サブルーチンテーブル621bから呼び出すサブルーチンのサブルーチン呼び出しアドレスを取得する。サブルーチンテーブル621bを具備することで、サブルーチンの追加および変更が容易になる効果が得られる。例えばサブルーチン521aの一つのサブルーチンを変更したいときは、変更したコードをEEPROM120に実装し、サブルーチンテーブル621bに記録されている前記サブルーチンのサブルーチン呼び出しアドレスのみを更新すればよい。
図6(a)はサブルーチンテーブル621bの構造図である。サブルーチンテーブル621bは、最初の1バイトがサブルーチンテーブル621b内に記録されているサブルーチンアドレスオブジェクト720の個数を示す個数データ710で、続いて個数データ710で示されている個数のサブルーチンアドレスオブジェクト720が記録されている。サブルーチンアドレスオブジェクト720とは、8バイトのサブルーチン名称721と3バイトのサブルーチン呼び出しアドレス722の合計11バイトから構成される。サブルーチンを呼び出す際は、サブルーチンアドレスオブジェクト720に記録されているサブルーチン名称721と呼び出すサブルーチン名称を比較し、サブルーチン名称が一致した場合は同じサブルーチンアドレスオブジェクト720に記録されているサブルーチン呼び出しアドレス722を用いてサブルーチンを呼び出す。
データテーブル621cは、前述の通り、アプリケーション30内で使用されるデータのデータ記録アドレスを記録したテーブルである。データにアクセスする際は、データテーブル621cからデータ記録アドレスを取得する。データテーブル621cを具備することで、ICチップ製造後にアプリケーション30内で使用するデータ量が増えデータ記録アドレスが変更される場合でも、データテーブル621cからデータ記録アドレスを取得すれば、データに間違い無くアクセスできる。
図6(b)はデータテーブル621cの構造図である。データテーブル621cは、最初の1バイトがデータテーブル621cに記録されているデータアドレスオブジェクト740の個数を示す個数データ730、続いて個数データ730で示されたのデータアドレスオブジェクト740が記録されている。データアドレスオブジェクト740とは、データを識別する2バイトのファイル番号741および3バイトのデータ記録アドレス742の合計5バイトのデータから構成される。データにアクセスする際は、データアドレスオブジェクト740に記録されているファイル番号741とアクセスするデータのファイル番号を比較し、ファイル番号が一致するデータアドレスオブジェクト740に記録されているデータ記憶アドレス742を使用してデータにアクセスする。
EEPROMコード621dは、アプリケーション30のアプリケーション拡張コード312である。アプリケーション基本コード311のみしか使用しない場合、もしくはアプリケーション基本コード311を変更する必要性がない場合は、EEPROMコード621dは実装されない。
アプリケーション基本データ621eは、アプリケーション基本コード311が使用するデータである。アプリケーション基本データ621eに記録されるデータはアプリケーション基本コード311だけではなく、アプリケーション拡張コード312すなわちEEPROMコード621dが利用しても問題はない。
アプリケーション拡張データ621fは、アプリケーション拡張コード312が使用するデータが記録される。アプリケーション拡張コード312すなわちEEPROMコード621dが無い場合は、アプリケーション拡張データ621fは存在しない。
<サブルーチンの呼び出しおよびデータへのアクセス手順>
これまで述べた実施の形態を例にとり、サブルーチン521aに含まれるサブルーチンが他のサブルーチンを呼び出す動作手順および前記サブルーチンからデータにアクセスする手順について、それぞれ図を参照にしながら詳細に説明する。図7は前記サブルーチンの呼び出し手順を示したフロー図で、図8は前記サブルーチンからデータにアクセスする手順を示したフロー図である。まず、サブルーチン521aに含まれるサブルーチンが他のサブルーチンを呼び出す手順について、図7を参照しながら説明する。ステップS100は、サブルーチンの呼び出し処理を開始するステップである。
ステップS110にて、アプリケーションROMコード521内に実装されているサブルーチンテーブルアドレス521bを取得する。サブルーチンを呼び出すコードは、CPU100がアクセスするデータのアドレスをサブルーチンテーブルアドレス521bに設定し、次のステップに進む。
次にサブルーチンを呼び出すコードは、サブルーチンテーブル621bに記録されている個数データ710を読み込み、探索COUNTER値を「1」に設定し、探索MAX値を個数データ710に設定する(ステップS120)。次のステップでは、最初のサブルーチンアドレスオブジェクト720に記録されているサブルーチン名称721を読み込み、呼び出すサブルーチン名称と比較する(ステップS121)。名称が一致した場合はステップS130に進み、一致しなければステップS123に進む(ステップS122)。ステップS123では、探索COUNTER値と探索MAX値を比較する。一致しない場合はステップS124へ進み、一致した場合はステップS125へ進む。ステップS124では、探索COUNTER値を「1」だけインクリメントし、次のサブルーチアドレスオブジェクト720に記録されているサブルーチン名称を読み込み、呼び出すサブルーチン名称と比較した後、ステップS122へ戻る。ステップS125すなわち探索COUNTER値と探索MAX値が一致していれば、アプリケーションの処理を中止する。
ステップS130では、サブルーチンの呼び出しアドレスを、呼び出すサブルーチン名称と一致したサブルーチン名称711を含むサブルーチンアドレスオブジェクト720に記録されているサブルーチン呼び出しアドレス722に設定する。サブルーチン呼び出しアドレス設定後は、次のステップS140へ進む。
ステップ140はサブルーチンを呼び出すステップで、サブルーチンの呼び出し処理は終了する。サブルーチンテーブル621bに実装されているサブルーチン呼び出しアドレス722を参照し、サブルーチンを呼び出すことで、サブルーチン521aにはサブルーチンの呼び出しアドレスが記述されず、サブルーチン521aが使用するサブルーチンのサブルーチン呼び出しアドレス変更が容易に行なえる。
一般的に、マルチアプリケーションOS20はICカードに実装されたアプリケーションが同じICカードに実装されている他のアプリケーションに悪影響を与えないように、アプリケーションの実行に関しては実行するCPU命令が実装されているアドレス、例えばCPU100に備わっているプログラムカウンターの値を常に監視している。サブルーチンの呼び出しアドレスが、マルチアプリケーションOSによって割り当てられたアプリケーションが使用できる領域から出る場合は、マルチアプリケーションOS20によってサブルーチンの実行が中断される。
次にサブルーチン521aに含まれるサブルーチンが、データにアクセスする手順について、図8を参照しながら説明する。ステップS200は、前記サブルーチンがデータにアクセスする処理を開始するステップである。
次のステップS210にて、アプリケーションROMコード521内に実装されているデータテーブルアドレス521cを取得する。データを処理するサブルーチンは、CPU100がアクセスするデータのアドレスをデータテーブルアドレス521cに設定し、次のステップに進む。
次にデータにアクセスするサブルーチンは、データテーブル621cに記録されている個数データ730読み込み、探索COUNTER値を「1」に設定し、探索MAX値を個数データ730に設定する(ステップS220)。次のステップでは、最初のデータアドレスオブジェクト740に記録されているファイル番号741を読み込み、アクセスするデータのファイル番号と比較する(ステップS221)。ファイル番号が一致した場合はステップS230に進み、一致しなければステップS223に進む(ステップS222)。ステップS223では、探索COUNTER値と探索MAX値を比較する。一致しない場合はステップS224へ進む、一致する場合はステップS225へ進む。ステップS224では、探索COUNTER値を「1」だけインクリメントし、次のデータアドレスオブジェクト740に記録されているファイル番号を読み込み、アクセスするデータのファイル番号と比較した後、ステップS222へ戻る。ステップS225すなわち探索COUNTER値と探索MAX値が一致していれば、アプリケーションの処理を中止する。
次のステップS230は、アクセスするデータのデータ記録アドレスを、アクセスするデータのファイル番号と一致するファイル番号741を含むデータアドレスオブジェクト740に記録されているデータ記録アドレス742に設定するステップである。データ記録アドレス設定後は、次のステップ240へ進む。
次のステップS240は、データ記録アドレスに記録されたデータにアクセスするステップで、データへのアクセス処理は終了する。データテーブル621cに記録されているデータ記録アドレス742を参照してデータにアクセスすることで、サブルーチン521aにはデータ記録アドレスが記述されないため、データ記録アドレス変更に対する修正が容易に行なえる。
前述のサブルーチンと同様に、マルチアプリケーションOS20が許可していない領域のデータにアプリケーションがアクセスしようとした場合は、マルチアプリケーションOS20によってサブルーチンの実行が中断される。
<発明の効果の説明>
これまで述べた実施の形態において、目的とした発明の効果が得られることを、以下に図を参照しながら説明する。図9はサブルーチン521aに含まれる一つのサブルーチンのサブルーチン呼び出しアドレスを変更するときの例、図11は前記サブルーチンが使用するデータのデータ記録アドレスを変更するときの例である。
まず初めにサブルーチン521a含まれるサブルーチン呼び出しアドレスを変更する例を取り、本実施の形態はROM110に実装されたサブルーチンを容易に変更できることを、図9を用いて説明する。図9(a)はサブルーチン変更前のメモリ構造図、図9(b)はサブルーチン変更後のメモリ構造図、図10(a)はサブルーチン変更前のサブルーチンテーブル621bの図、そして図10(b)はサブルーチン変更後のサブルーチンテーブル621bの図である。
図9(a)に示すように、サブルーチン変更前は変更されるサブルーチン810はアプリケーションROMコード521領域内に配置されている。前記サブルーチンを変更する場合は、ROM110に実装されたデータは変更できないので、EEPROM120のEEPROMコード621dに変更したサブルーチン820を実装する。変更したサブルーチンを実装した図が図9(b)である。図9(a)および(b)に示しているように、変更前のサブルーチン呼び出しアドレスは「A」であり、変更後のサブルーチン呼び出しアドレスは「B」に変更される。変更されたサブルーチンを使用するコードに「A」のアドレスが記述されていると、変更したサブルーチンをEEPROM120に実装したにも関わらず、ROM110に実装されている変更前のサブルーチンが動作してしまう。
これに対して本発明を適用したアプリケーション30においては、サブルーチンの呼び出しアドレスはサブルーチンテーブル621bに記録されるため、サブルーチンテーブル621bに記録されている前記サブルーチンの呼び出しアドレスを更新すればよい。本例においては、図10(a)および(b)に示したように、サブルーチンテーブル621b内の変更されたサブルーチン名称811に対応するサブルーチン呼び出しアドレス812のみを更新さえすれば、前記変更されたサブルーチンを使用するコードは、サブルーチンテーブル621bからサブルーチン呼び出すアドレスを取得するため、サブルーチン変更後も問題なくEEPROMコード621dに実装されたサブルーチンが実行される。
次にサブルーチン521aが使用するデータのデータ記録アドレスが変更される例をとり、本発明の形態はデータ記録アドレス変更に対し容易に対応がとれることを、図11、図12を用いて説明する。図11(a)はデータ記録アドレス変更前のアプリケーション基本データ621eの図、図11(b)はデータ記録アドレス変更後のアプリケーション基本データ621eの図、図12(a)はデータ記録アドレス変更前のデータテーブル621cの図、そして図12(b)はデータ記録アドレス変更後のデータテーブル621cの図である。
図11(a)においては、アプリケーション基本データ領域621eにはデータ910およびデータ920の2つのデータが格納されている。データ910のファイル番号は「0001」で長さが256バイト、データ920のファイル番号は「0002」で長さが同じく256バイトである。データ910の先頭アドレスを「C」とすると、データ920の先頭アドレスは「D」すなわち「C+100h」である(hは16進表記を示す)。例えばICチップ10製造後に、データ910の長さが増えたことを想定してみる。図11(b)はデータ910の長さが256バイト増え、データ1の長さが512バイトになった図である。データ910の長さが256バイト増えると、データ920の先頭アドレスは「E」すなわち「C+200h」になる。データ920を使用するサブルーチンにアドレス「D」が記述されていると、データ910の長さが増えた場合はデータ920の先頭アドレスが「D」から「E」に変更になるため、間違ったデータにアクセスしてしまう。
これに対して本発明を適用したアプリケーション30においては、各データのデータ記録アドレスはデータテーブル621cに記録されているため、データテーブル621cに記録されているデータ920のデータ記録アドレス921のみを更新すればよい。図12(a)はデータ910の容量が増える前のデータテーブル621cの図、図12(b)はデータ910の長さが増えた後のデータテーブル621cの図である。図12(a)および(b)を比較するればわかるように、データ910の長さが変更した場合は、データ920のデータアドレスオブジェクトに記録されるデータ記録アドレス921のみを更新している。データ910の長さが増えた後は、データ920のデータ記録アドレス921は「E」になるので、間違いなくデータ920にアクセスできる。
マルチアプリケーションOSのソフトウェア基本構造モデル。 ICチップ構造図。 アプリケーションのソフトウェア構造図。 ROM構造図。 EEPROMの構造図。 サブルーチンテーブルおよびデータテーブルの説明図。 サブルーチンの呼び出しフロー図。 データへのアクセスフロー図。 サブルーチン変更時のメモリ構造図。 サブルーチン変更時のサブルーチンテーブルを説明するための図。 データ記録アドレス変更時のメモリ構造図。 データ記録アドレス変更時のデータテーブルを説明するための図。
符号の説明
10 ICチップ
100 CPU
110 ROM
120 EEPROM
130 RAM
140 I/O回路
20 マルチアプリケーションOS
30 アプリケーション
310 アプリケーションコード
311 アプリケーション基本コード
312 アプリケーション拡張コード
320 アプリケーションデータ
321 アプリケーション基本データ
322 アプリケーション拡張データ
510 ROMのOS領域
520 ROMのアプリケーション領域
521 アプリケーションROMコード
521a サブルーチン
521b サブル−チンテーブルアドレス
521c データテーブルアドレス
610 EEPROMのOS領域
611a OSデータ
611b アプリケーションROMコードのアドレス
611c アプリケーションEEPROMデータのアドレス
620 EEPROMのアプリケーション領域
621a、d EEPROMコード
621b サブルーチンテーブル
621c データテーブル
720 サブルーチンアドレスオブジェクト
721 サブルーチン名称
722 サブルーチン呼び出しアドレス
740 データアドレスオブジェクト
741 データのファイル番号
742 データ記録アドレス

Claims (6)

  1. 複数のアプリケーションを一つのICチップに実装できるマルチアプリケーション型ICカードにおいて、前記マルチアプリケーション型ICカードに埋め込まれたICチップの読取り専用メモリと書換え可能なメモリに分割され実装されているアプリケーションと、前記書換え可能なメモリには前記アプリケーションがアクセスする対象のアドレスを記録したアドレステーブルを具備したことを特徴とするマルチアプリケーション型ICカード。
  2. 前記アクセスする対象をデータとしたことを特徴とする請求項1に記載のICカード。
  3. 前記アクセスする対象をサブルーチンとしたことを特徴とする請求項1または請求項2に記載のICカード。
  4. 複数のアプリケーションを一枚のICカードに搭載できるマルチアプリケーション型ICカードにおいて、読み出し専用のメモリに実装されたアプリケーションがメモリ内の対象にアクセスするプログラムであって、前記プログラムは、前記アプリケーションが前記対象のアドレスを記録したアドレステーブルにアクセスするステップと、前記アドレステーブルから前記対象のアドレスを取得するステップと、前記アプリケーションが前記アドレステーブルから取得したアドレスにアクセスするステップを順に実行する手順を含むプログラム。
  5. 請求項4に記載されたプログラムであって、前記対象はデータであることを特徴としたプログラム。
  6. 請求項4または請求項5に記載されたプログラムであって、前記対象はサブルーチンであることを特徴としたプログラム。
JP2004043384A 2004-02-19 2004-02-19 Romにアプリケーションを実装したマルチアプリケーションicカードおよびアプリケーションプログラム Expired - Fee Related JP4580660B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004043384A JP4580660B2 (ja) 2004-02-19 2004-02-19 Romにアプリケーションを実装したマルチアプリケーションicカードおよびアプリケーションプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004043384A JP4580660B2 (ja) 2004-02-19 2004-02-19 Romにアプリケーションを実装したマルチアプリケーションicカードおよびアプリケーションプログラム

Publications (2)

Publication Number Publication Date
JP2005234898A true JP2005234898A (ja) 2005-09-02
JP4580660B2 JP4580660B2 (ja) 2010-11-17

Family

ID=35017795

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004043384A Expired - Fee Related JP4580660B2 (ja) 2004-02-19 2004-02-19 Romにアプリケーションを実装したマルチアプリケーションicカードおよびアプリケーションプログラム

Country Status (1)

Country Link
JP (1) JP4580660B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008134942A (ja) * 2006-11-29 2008-06-12 Dainippon Printing Co Ltd 情報処理装置とそのプログラム、情報処理装置の製造方法、及び、情報処理装置の使用方法
JP2009112700A (ja) * 2007-11-09 2009-05-28 Daito Giken:Kk 遊技台
WO2013042682A1 (ja) * 2011-09-21 2013-03-28 株式会社 東芝 Icカード、携帯可能電子装置、icカードの制御方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014186367A (ja) * 2013-03-21 2014-10-02 Toshiba Corp Icカード及び携帯可能電子装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03240127A (ja) * 1990-02-17 1991-10-25 Hitachi Maxell Ltd プログラム制御システム
JP2003016410A (ja) * 2001-07-03 2003-01-17 Dainippon Printing Co Ltd Icカード

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03240127A (ja) * 1990-02-17 1991-10-25 Hitachi Maxell Ltd プログラム制御システム
JP2003016410A (ja) * 2001-07-03 2003-01-17 Dainippon Printing Co Ltd Icカード

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008134942A (ja) * 2006-11-29 2008-06-12 Dainippon Printing Co Ltd 情報処理装置とそのプログラム、情報処理装置の製造方法、及び、情報処理装置の使用方法
JP2009112700A (ja) * 2007-11-09 2009-05-28 Daito Giken:Kk 遊技台
WO2013042682A1 (ja) * 2011-09-21 2013-03-28 株式会社 東芝 Icカード、携帯可能電子装置、icカードの制御方法
JP2013069057A (ja) * 2011-09-21 2013-04-18 Toshiba Corp Icカード、携帯可能電子装置、icカードの制御方法

Also Published As

Publication number Publication date
JP4580660B2 (ja) 2010-11-17

Similar Documents

Publication Publication Date Title
KR100531192B1 (ko) 비휘발성 메모리의 제어방법
CN100367306C (zh) 非易失性存储卡
JP2005215824A (ja) 半導体装置およびその起動処理方法
US20050038955A1 (en) Flash ROM content updating method and system
TWI221255B (en) Device information management system of application device and method thereof
JP3771904B2 (ja) 補助レジスタバンクを有するマイクロプロセッサ回路
JP4203514B2 (ja) プログラム実行制御回路、コンピュータシステム、及び、icカード
JP4580660B2 (ja) Romにアプリケーションを実装したマルチアプリケーションicカードおよびアプリケーションプログラム
US20090132800A1 (en) Method for adjusting setup default value of bios and main board thereof
US6738887B2 (en) Method and system for concurrent updating of a microcontroller's program memory
US6301622B1 (en) Computer system having identification data and method for transferring identification data to computer
TW583582B (en) Microcomputer and associated method for reducing memory usage of the microcomputer
JP2019049876A (ja) 電子情報記憶媒体、icカード、電子情報記憶媒体によるテーブル管理方法及びテーブル管理プログラム
US7490232B2 (en) Disk device using disk to rewrite firmware and firmware determination method
US20070208929A1 (en) Device information managements systems and methods
JP2001167236A (ja) 携帯可能電子装置
JP2006293706A (ja) アプリケーションの更新機能を有するマルチアプリケーションicカード
JP4774681B2 (ja) 共通コマンドアプリケーションを実装したマルチアプリケーション型icカード
JP6662140B2 (ja) Icカード及びicカードにおけるメモリ制御方法
TWI406175B (zh) 記憶卡以及用於記憶卡之方法
JP4549731B2 (ja) アプリケーションが共通で使用するコマンドコードを備えたマルチアプリケーション型icカード
JP2008146343A (ja) Icカード、および、更新プログラムの呼出し方法
JP6915338B2 (ja) Icカード
CN109669628B (zh) 基于flash设备的数据存储管理方法及装置
JPH089795Y2 (ja) Icカード

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090909

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100524

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: 20100819

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100830

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130903

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4580660

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees