(57)【要約】【課題】  ＲＯＭにアプリケーションを実装したマルチアプリケーション型ＩＣカードにおいても、サブルーチンの変更・追加およびデータアドレスの変更に容易に対応がとれるようにする。【解決手段】  アクセスする対象のアドレスを記録したアドレステーブル６２１ｂ、ｃを書換え可能なメモリに実装し、前記アドレステーブルからアクセスする対象のアドレスを取得することで、ＩＣチップ製造後に前記対象のアドレスが変更される場合でも、アドレスが変更となる対象の前記アドレステーブルのアドレス値のみを変更れば、読み出し専用メモリに実装されているアプリケーションを変更する必要はなくなる。【選択図】      図５
2005234898.tif 000002
【特許請求の範囲】
【請求項１】
複数のアプリケーションを一つのＩＣチップに実装できるマルチアプリケーション型ＩＣカードにおいて、前記マルチアプリケーション型ＩＣカードに埋め込まれたＩＣチップの読取り専用メモリと書換え可能なメモリに分割され実装されているアプリケーションと、前記書換え可能なメモリには前記アプリケーションがアクセスする対象のアドレスを記録したアドレステーブルを具備したことを特徴とするマルチアプリケーション型ＩＣカード。
【請求項２】
前記アクセスする対象をデータとしたことを特徴とする請求項１に記載のＩＣカード。
【請求項３】
前記アクセスする対象をサブルーチンとしたことを特徴とする請求項１または請求項２に記載のＩＣカード。
【請求項４】
複数のアプリケーションを一枚のＩＣカードに搭載できるマルチアプリケーション型ＩＣカードにおいて、読み出し専用のメモリに実装されたアプリケーションがメモリ内の対象にアクセスするプログラムであって、前記プログラムは、前記アプリケーションが前記対象のアドレスを記録したアドレステーブルにアクセスするステップと、前記アドレステーブルから前記対象のアドレスを取得するステップと、前記アプリケーションが前記アドレステーブルから取得したアドレスにアクセスするステップを順に実行する手順を含むプログラム。
【請求項５】
請求項４に記載されたプログラムであって、前記対象はデータであることを特徴としたプログラム。
【請求項６】
請求項４または請求項５に記載されたプログラムであって、前記対象はサブルーチンであることを特徴としたプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クレジットカードサイズのプラスチックカードに半導体集積回路（以下、ＩＣチップと記す）を埋め込んだＩＣカードおよびＩＣカード用ソフトウェアに関し、特に一枚のＩＣカードに複数のアプリケーションを実装できるマルチアプリケーション型ＩＣカードおよび前記マルチアプリケーション型ＩＣカードに実装するアプリケーションに関する。
【背景技術】
【０００２】
ＩＣカードとは、クレジットカードサイズのプラスチックカードにＩＣチップを埋め込み、前記ＩＣチップのメモリにデータを記録するカードである。近年ＩＣカードはキャッシュカード、クレジットカードまたは電子マネーなどに幅広く応用されている。
【０００３】
従来のＩＣカードには用途ごとに単一のソフトウェアすなわちアプリケーションを読み出し専用メモリ（Read Only Memory 、以下ＲＯＭと記す）に実装することが主流であったため、一枚のＩＣカードは単一の機能しか持たず、用途ごとにＩＣカードが必要であった。このため、利用者側は複数枚のＩＣカードを常に所持する必要があり大変不便であった。この問題を解消すべく、現在は一枚のＩＣカードに複数のアプリケーションを組み込むことができるマルチアプリケーション型ＩＣカードが主流になりつつある。
【０００４】
マルチアプリケーション型ＩＣカードとは、前述の通り、複数のアプリケーションを一枚のＩＣカードに実装することができるＩＣカードで、ＩＣチップが備えているＲＯＭに基本処理を行うマルチアプリケーションオペレーティングシステム（Operating System、以下ＯＳと記す）を実装し、同じくＩＣチップが備えている電気的に消去・書き換えができるＲＯＭ（Electrically Erasable Programmable Read Only Memory、以下ＥＥＰＲＯＭと記す）に一つまたは複数のアプリケーションを実装する。前記ＥＥＰＲＯＭにアプリケーションを実装することで、利用者が使用する複数のアプリケーションを一枚のＩＣカードに実装でき、またＩＣカード製造後のアプリケーションの追加、不必要なアプリケーションの削除が行なえ、かつアプリケーションの機能拡充も容易である。
【０００５】
その一方、マルチアプリケーション型ＩＣカードは前記ＥＥＰＲＯＭにアプリケーションを実装する都合上、ＩＣチップの面積が大きくなるといった問題が生じる。一般的にＥＥＰＲＯＭの単一面積当たりのデータ実装密度はＲＯＭの約１／６しかなく、アプリケーションをＥＥＰＲＯＭに実装する時のメモリ面積は、ＲＯＭに実装した時のメモリ面積の６倍の面積が必要になる。ＩＣチップ面積が大きくなることは、マルチアプリケーション型ＩＣカード用ＩＣチップが高価になるデメリットをもたらす。
【０００６】
前述のデメリットを解決すべく、特許文献１の発明は、中間言語で記述されたアプリケーションの一部をＩＣチップ製造時にＲＯＭに実装することで、比較的容量の小さいＥＥＰＲＯＭを有するＩＣチップでも複数のアプリケーションを実装できるマルチアプリケーション型ＩＣカードを開示している。
【０００７】
前述の発明は、アプリケーションの一部をＲＯＭに実装することで、ＥＥＰＲＯＭ容量が小さく価格の安いＩＣチップでも多くのアプリケーションを実装できるマルチアプリケーション型ＩＣカードを提供できるが、アプリケーションをＲＯＭに実装することで不都合も生じてしまう。ＲＯＭはメモリの特性上、ＲＯＭに実装されたアプリケーションコードをＩＣチップ製造後に変更することができない点である。例えばアプリケーションが使用するデータ量が変更になり、、ＥＥＰＲＯＭに記録するデータのアドレスすなわちデータ記録アドレスが変更される場合、ＲＯＭに実装されたアプリケーションに前記データ記録アドレスが記述されていると、前記ＲＯＭに実装されたアプリケーションはデータ記憶アドレスの変更に対応できない。またＲＯＭに実装されたアプリケーションに含まれる一つのサブルーチンを変更したい場合も、ＲＯＭに実装されたアプリケーションに前記サブルーチンを呼び出すアドレスすなわちサブルーチン呼び出しアドレスが記述されていると、前記サブルーチンのみを変更することは容易ではない。このような場合は、アプリケーションをすべてＥＥＰＲＯＭに実装するか、もしくは変更したアプリケーションをＲＯＭに実装した新たなＩＣチップを製造しなければならない。
【特許文献１】特表２００２−５０１２６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は前述の問題を鑑みて、ＲＯＭにアプリケーションを実装したマルチアプリケーション型ＩＣカードにおいて、前記アプリケーションの機能追加・変更または前記アプリケーションが使用するデータのアドレス変更に対応できる拡張性の高いマルチアプリケーション型ＩＣカードおよびアプリケーションを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の第１の発明は、複数のアプリケーションを一つのＩＣチップに実装できるマルチアプリケーション型ＩＣカードにおいて、前記マルチアプリケーション型ＩＣカードに埋め込まれたＩＣチップの読取り専用メモリと書換え可能なメモリに分割され実装されているアプリケーションと、前記書換え可能なメモリには前記アプリケーションがアクセスする対象のアドレスを記録したアドレステーブルを具備したことを特徴とするマルチアプリケーション型ＩＣカードである。前記アドレステーブルを前記書換え可能なメモリに実装し、前記アドレステーブルからアクセスする対象のアドレスを取得することで、ＩＣチップ製造後に前記対象のアドレスが変更される場合でも、アドレスが変更となる対象の前記アドレステーブル内のアドレス値のみを変更すれば、前記読み出し専用メモリに実装されているアプリケーションを変更する必要はなくなる。
【００１０】
本発明の第２の発明は、前記アクセスする対象をデータとしたことを特徴とする第１の発明に記載のＩＣカードである。前記アクセスする対象をデータとすることで、ＩＣチップ製造後に前記書換え可能なメモリに記録されるデータのデータ記録アドレスが変更される場合でも、変更後のデータ記録アドレスをアドレステーブルに記録すれば、前記読み出し専用メモリに実装されているアプリケーションは、前記アドレステーブルから変更後のデータ記録アドレスを取得しデータに間違いなくアクセスできる。
【００１１】
本発明の第３の発明は、前記アクセスする対象を前記アプリケーションが使用するサブルーチンとしたことを特徴とする第１の発明または第２の発明に記載のＩＣカードである。前記アクセスする対象をサブルーチンとすることで、ＩＣチップ製造後にサブルーチンの呼び出しアドレスが変更になった場合でも、前記読み出し専用メモリに実装されている他のアプリケーションは、前記アドレステーブルから変更後のサブルーチン呼び出しアドレスを取得すれば変更されたサブルーチンを使用できる。
【００１２】
本発明の第４の発明は、複数のアプリケーションを一枚のＩＣカードに搭載できるマルチアプリケーション型ＩＣカードにおいて、読み出し専用のメモリに実装されたアプリケーションがメモリ内の対象にアクセスするプログラムであって、前記プログラムは、前記アプリケーションが前記対象のアドレスを記録したアドレステーブルにアクセスするステップと、前記アドレステーブルから前記対象のアドレスを取得するステップと、前記アプリケーションが前記アドレステーブルから取得したアドレスにアクセスするステップを順に実行する手順を含むプログラムである。上記ステップを順に実行するプログラムを前記アプリケーションが含むことで、ＩＣチップ製造後に前記対象のアドレスが変更される場合でも、前記読み出し専用メモリに実装されているアプリケーションは、前記アドレステーブルから前記対象の変更後のアドレスを取得すれば前記対象にアクセスできる。
【００１３】
本発明の第５の発明は、第４の発明に記載されたプログラムであって、前記対象はデータであることを特徴としたプログラムである。前記対象をデータとすることで、ＩＣチップ製造後にデータのアドレスが変更される場合でも、前記読み出し専用メモリに実装されているアプリケーションは、前記アドレステーブルから変更後のデータ記録アドレスを取得すればデータにアクセスできる。
【００１４】
本発明の第６の発明は、第４の発明または第５の発明に記載されたプログラムであって、前記対象はサブルーチンであることを特徴としたプログラムである。前記対象をサブルーチンとすることで、ＩＣチップ製造後にサブルーチンを変更する場合でも、前記読み出し専用メモリに実装されているアプリケーションは、前記アドレステーブルから変更後のサブルーチン呼び出しアドレスを取得すれば変更後のサブルーチンを使用できる。
【発明の効果】
【００１５】
上述に述べたように、本発明を適用したマルチアプリケーション型ＩＣカードおよびアプリケーションは、ＲＯＭにアプリケーションを実装していた場合においても、前記アプリケーションの機能追加・変更またはデータ記録アドレスの変更に対応できる拡張性の高いマルチアプリケーション型ＩＣカードおよびアプリケーションを提供できる。
【発明を実施するための最良の形態】
【００１６】
本発明の実施の形態を、以下に図を参照にしながら詳細に説明する。まず初めにマルチアプリケーション型ＩＣカードのソフトウェア基本構造モデルおよび前記ＩＣカードに実装するアプリケーションについて説明し、次に前記アプリケーションを実装したＩＣチップのメモリ構造を説明し、つづいて前記アプリケーションの動作手順について説明し、最後に発明の効果について説明する。
【００１７】
＜マルチアプリケーション型ＩＣカードのソフトウェア基本構造モデルおよびアプリケーションの説明＞
まず初めに本実施の形態のマルチアプリケーション型ＩＣカードのソフトウェア基本構造モデルおよび前記ＩＣカードに実装するアプリケーションの構造についてそれぞれ説明する。図１はマルチアプリケーション型ＩＣカードのソフトウェア基本構造モデルの図、図２はＩＣチップの構造図、図３は前記ＩＣカードに実装するアプリケーションのソフトウェア構造図である。
【００１８】
図１に示すようにマルチアプリケーション型ＩＣカードのソフトウェア基本構造モデルは、ＩＣチップ１０、マルチアプリケーションＯＳ２０およびアプリケーション３０の３階層構造である。
【００１９】
図２はＩＣチップ１０の構造図である。通常ＩＣチップ１０には、中央演算装置１００（Central Processing Unit、以下ＣＰＵと記す）、読み出し専用メモリ１１０（Read Only Memory、以下ROMと記す）、書換え可能なメモリとしてＥＥＰＲＯＭ１２０（Electrically Erasable Programmable Read-Only Memoryの略）、揮発性メモリとしてランダムアクセスメモリ１３０（Random Access Memory、以下ＲＡＭと記す）および図外リーダライタとデータを通信するためのＩ／Ｏ回路１４０を少なくとも備なえている。本発明は、ＩＣチップ１０の仕様を限定するものではなく、ＩＣカードの用途に適した仕様のＩＣチップ１０を選択することができる。例えばＲＯＭ１１０およびＥＥＰＲＯＭ１２０の容量については限定しないし、書換え可能なメモリは強誘電体メモリまたはフラッシュメモリ等のＥＥＰＲＯＭ以外のメモリであっても構わない。またＩＣチップ１０はタイマー回路、暗号演算回路またはコプロセッサ回路等の図示していない他のデバイスを備えていても構わない。
【００２０】
マルチアプリケーションＯＳ２０は、アプリケーション３０をＥＥＰＲＯＭ１２０へロードする機能、ＥＥＰＲＯＭ１２０に実装したアプリケーション３０の削除機能、ならびにＩ／Ｏ回路１４０を制御し図外リーダライタと通信する機能等のＩＣカードが動作するための基本機能を備えたソフトウェアである。現在ＩＣカード用マルチアプリケーションＯＳとしては、２、３種類のマルチアプリケーションＯＳが主流になりつつあるが、本発明においては何らマルチアプリケーションＯＳの種類を限定するものではない。
【００２１】
本実施の形態のアプリケーション３０のソフトウェア構造を図３に示す。アプリケーション３０はある用途ために設計されたソフトウェアであり、ＩＣチップ１０が具備するメモリに利用者が必要とする一つまたは複数のアプリケーションが実装される。なお実装されるアプリケーション３０は、マルチアプリケーションＯＳ２０が対応している中間言語で記述されることが一般的である。
【００２２】
図３に示すように、アプリケーション３０のソフトウェア構造は、ＣＰＵ１００を制御するソフトウェアを記述したアプリケーションコード３１０とアプリケーションコード３１０が使用するデータとしてアプリケーションデータ３２０から構成される。アプリケーションコード３１０はアプリケーション基本コード３１１とアプリケーション拡張コード３１２から、アプリケーションデータ３２０はアプリケーション基本データ３２１とアプリケーション拡張データ３２２からそれぞれ構成されている。
【００２３】
アプリケーション基本コード３１１とはアプリケーションの基本機能を記述したコードで、アプリケーション基本コード３１１が使用するデータがアプリケーション基本データ３２１である。アプリケーション拡張コード３１２はアプリケーションの拡張機能または修正内容を記述したコードであり、アプリケーション拡張コード３１２が使用するデータがアプリケーション拡張データ３２２である。本実施の形態においては、アプリケーション基本データ３２１およびアプリケーション拡張データ３２２に記録されるデータはファイル形式で記録され、各々のファイルには異なるファイル番号が付加され、ファイル番号を用いることで各々のデータを識別できる。
【００２４】
例えばＩＣカードが社員証用途に使用される場合、社内で共通の機能がアプリケーション基本コード３１１として記述され、部門ごとに特有の機能がアプリケーション拡張コード３１２として記述される。よってアプリケーション３０において、基本機能を記述したアプリケーション基本コード３１１およびアプリケーション基本データ３２１は必ず必要であるが、拡張機能もしくは修正内容を記述したアプリケーション拡張コード３１２およびアプリケーション拡張データ３２２は必ずしも必要ではない。
【００２５】
＜ＲＯＭおよびＥＥＰＲＯＭのメモリ構造＞
ＩＣチップ１０が具備するメモリすなわちＲＯＭ１１０およびＥＥＰＲＯＭ１２０に前述のアプリケーション３０を実装したときのメモリ構造について、図を参照しながら詳細に説明する。図４はアプリケーション３０を実装したＲＯＭ１１０のメモリ構造図、図５はアプリケーション３０を実装したＥＥＰＲＯＭ１２０のメモリ構造図である。通常マルチアプリケーション型ＩＣカードにおいては、アプリケーションすべてをＥＥＰＲＯＭに実装することが一般的であるが、図４および図５に示した通り、本実施の形態においてはアプリケーション３０はＲＯＭ１１０およびＥＥＰＲＯＭ１２０に分割され実装されている。
【００２６】
図４に示すように、ＩＣチップ１０のＲＯＭ１１０は、ＲＯＭのＯＳ領域５１０とＲＯＭのアプリケーション領域５２０の２つの領域を有し、ＲＯＭのＯＳ領域５１０にはマルチアプリケーションＯＳコード５１１がＲＯＭのアプリケーション領域５２０にはそれぞれ異なる複数のアプリケーションＲＯＭコード５２１が実装されている。ＲＯＭのアプリケーション領域５２０に実装されるアプリケーションＲＯＭコード５２１はアプリケーション３０のアプリケーション基本コード３１１としている。ＲＯＭ１１０にアプリケーション基本コード３１１を実装することで、容量の小さいＥＥＰＲＯＭを具備したＩＣチップでも多くのアプリケーションをＥＥＰＲＯＭ１２０に実装でき、かつ必要あればアプリケーション拡張コード３１２をＥＥＰＲＯＭ１２０に実装する仕組みである。前述のようにアプリケーション基本コード３１１はアプリケーションごとに共通で必ず必要であるが、アプリケーション拡張コード３１２は同じアプリケーションでも複数存在する可能性があるため、アプリケーション拡張コード３１１をＥＥＰＲＯＭ１２０に実装することにしている。例えばクレジットカード用途においては、クレジットの決済機能をアプリケーション基本コード３１１とし、利用者ごとに異なる可能性があるポイント等の機能をアプリケーション拡張コード３１２にする。
【００２７】
本実施の形態においては、アプリケーションＲＯＭコード５２１には、アプリケーション基本コード３１１で使用するサブルーチン５２１ａをのみ実装し、それ以外のアプリケーション基本コード３１１はＥＥＰＲＯＭ１２０に実装している。
【００２８】
またアプリケーションＲＯＭコード５２１には、サブルーチン５２１ａに加えて、サブルーチン５２１ａから参照されるサブルーチンテーブルアドレス５２１ｂとデータテーブルアドレス５２１ｃが、アプリケーションＲＯＭコード５２１領域内に実装されている。サブルーチンテーブルアドレス５２１ｂとはサブルーチンテーブルが記録されているアドレスのことであり、前記サブルーチンテーブルとはアプリケーション３０内に含まれるサブルーチンの呼び出しアドレスを記録したテーブルである。データテーブルアドレス５２１ｃとはデータテーブルが記録されているアドレスのことであり、前記データテーブルとはアプリケーション３０内に含まれるデータのデータ記録アドレスを記録したテーブルである。
【００２９】
サブルーチンテーブルアドレス５２１ｂおよびデータテーブルアドレス５２１ｃが実装されているアドレスは、アプリケーションＲＯＭコード５２１の設計段階で定められ、サブルーチン５２１ａは前記設計段階で定めれたアドレスに記録されたデータを読取ることで、サブルーチンテーブルアドレス５２１ｂまたはデータテーブルアドレス５２１ｃを取得することができる。
【００３０】
なお、ＲＯＭ１１０に実装されるコードはすべてＩＣチップ製造時にＲＯＭ１１０に焼き込まれ、ＩＣチップ１０製造後はＲＯＭ１１０に実装されたコードを修正または変更することは物理的にできない。またＲＯＭのアプリケーション領域５２０にアプリケーションＲＯＭコード５２１が実装されると、アプリケーションＲＯＭコード５２１を実装したアドレスがＥＥＰＲＯＭ１２０の所定の領域に記録される。
【００３１】
図５はＥＥＰＲＯＭ１２０のメモリ構造を示した図である。図５（ａ）はアプリケーション３０を実装する前のＥＥＰＲＯＭ１２０の構造図であり、図５（ｂ）はアプリケーション３０を実装した後のＥＥＰＲＯＭ１２０の構造図である。
【００３２】
図５（ａ）、（ｂ）に示すように、ＥＥＰＲＯＭ１２０にはＥＥＰＲＯＭのＯＳ領域６１０とＥＥＰＲＯＭのアプリケーション領域６２０の２つの領域が存在している。ＥＥＰＲＯＭのＯＳ領域６１０とはマルチアプリケーションＯＳコード５１１が動作するために必要なＯＳデータ６１１ａを記録する領域であり、前述のアプリケーションＲＯＭコード５２１をＲＯＭ１１０に実装したアドレス６１１ｂもＥＥＰＲＯＭのＯＳ領域６１０に実装される。
【００３３】
ＥＥＰＲＯＭのアプリケーション領域６２０とはアプリケーション３０が実装されるＥＥＰＲＯＭ１２０の領域である。図５（ａ）に図示したように、ＩＣカード製造直後は一つのアプリケーションもＥＥＰＲＯＭのアプリケーション領域６２０に実装されていない。マルチアプリケーションＯＳ２０が定めているアプリケーションのロード手順に従いアプリケーション３０をロードした後のＥＥＰＲＯＭ１２０構造が図５（ｂ）である。図５（ｂ）に図示したように、アプリケーション３０をロードした後は、ＥＥＰＲＯＭのアプリケーション領域６２０にアプリケーション３０が使用するアプリケーションＥＥＰＲＯＭデータ６２１が書込まれる。
【００３４】
前述のようにアプリケーション３０をＥＥＰＲＯＭ１２０に実装する機能すなわちアプリケーションをロードする機能は、マルチアプリケーションＯＳ２０の機能である。例えば、アプリケーションをロードする際の認証機能等のセキュリティ機能、ＥＥＰＲＯＭ容量のチェック機能およびＥＥＰＲＯＭへのアプリケーションの書き込み機能等は、すべてマルチアプリケーションＯＳ２０の役割である。ＥＥＰＲＯＭ１２０にアプリケーション３０が正常に実装された後は、ＥＥＰＲＯＭのＯＳ領域６１０に書込まれたアプリケーションの名称、およびアプリケーションＥＥＰＲＯＭデータ６２１が実装されたアドレス６１１ｃ等の情報が記録される。アプリケーション３０が起動すると、アドレス６１１ｂに基きアプリケーション３０が使用できるＲＯＭ領域と、アドレス６１１ｃに基きアプリケーション３０が使用できるＥＥＰＲＯＭ領域とがそれぞれマルチアプリケーションＯＳ２０によって設定される。
【００３５】
本実施の形態においてアプリケーションＥＥＰＲＯＭデータ６２１には、以下のコードおよびデータが少なくとも含まれる。ＥＥＰＲＯＭコード６２１ａは、アプリケーション基本コード３１１の一部であり、サブルーチン５２１ａを使用してアプリケーションの初期化および処理を行うコードである。サブルーチンテーブル６２１ｂは、前述の通り、アプリケーション３０内に含まれるサブルーチンのサブルーチン呼び出しアドレスを記録したテーブルである。サブルーチンテーブル６２１ｂが記録されているアドレスがサブルーチンテーブルアドレス５２１ｂである。サブルーチンを呼び出す際は、サブルーチンテーブル６２１ｂから呼び出すサブルーチンのサブルーチン呼び出しアドレスを取得する。サブルーチンテーブル６２１ｂを具備することで、サブルーチンの追加および変更が容易になる効果が得られる。例えばサブルーチン５２１ａの一つのサブルーチンを変更したいときは、変更したコードをＥＥＰＲＯＭ１２０に実装し、サブルーチンテーブル６２１ｂに記録されている前記サブルーチンのサブルーチン呼び出しアドレスのみを更新すればよい。
【００３６】
図６（ａ）はサブルーチンテーブル６２１ｂの構造図である。サブルーチンテーブル６２１ｂは、最初の１バイトがサブルーチンテーブル６２１ｂ内に記録されているサブルーチンアドレスオブジェクト７２０の個数を示す個数データ７１０で、続いて個数データ７１０で示されている個数のサブルーチンアドレスオブジェクト７２０が記録されている。サブルーチンアドレスオブジェクト７２０とは、８バイトのサブルーチン名称７２１と３バイトのサブルーチン呼び出しアドレス７２２の合計１１バイトから構成される。サブルーチンを呼び出す際は、サブルーチンアドレスオブジェクト７２０に記録されているサブルーチン名称７２１と呼び出すサブルーチン名称を比較し、サブルーチン名称が一致した場合は同じサブルーチンアドレスオブジェクト７２０に記録されているサブルーチン呼び出しアドレス７２２を用いてサブルーチンを呼び出す。
【００３７】
データテーブル６２１ｃは、前述の通り、アプリケーション３０内で使用されるデータのデータ記録アドレスを記録したテーブルである。データにアクセスする際は、データテーブル６２１ｃからデータ記録アドレスを取得する。データテーブル６２１ｃを具備することで、ＩＣチップ製造後にアプリケーション３０内で使用するデータ量が増えデータ記録アドレスが変更される場合でも、データテーブル６２１ｃからデータ記録アドレスを取得すれば、データに間違い無くアクセスできる。
【００３８】
図６（ｂ）はデータテーブル６２１ｃの構造図である。データテーブル６２１ｃは、最初の１バイトがデータテーブル６２１ｃに記録されているデータアドレスオブジェクト７４０の個数を示す個数データ７３０、続いて個数データ７３０で示されたのデータアドレスオブジェクト７４０が記録されている。データアドレスオブジェクト７４０とは、データを識別する２バイトのファイル番号７４１および３バイトのデータ記録アドレス７４２の合計５バイトのデータから構成される。データにアクセスする際は、データアドレスオブジェクト７４０に記録されているファイル番号７４１とアクセスするデータのファイル番号を比較し、ファイル番号が一致するデータアドレスオブジェクト７４０に記録されているデータ記憶アドレス７４２を使用してデータにアクセスする。
【００３９】
ＥＥＰＲＯＭコード６２１ｄは、アプリケーション３０のアプリケーション拡張コード３１２である。アプリケーション基本コード３１１のみしか使用しない場合、もしくはアプリケーション基本コード３１１を変更する必要性がない場合は、ＥＥＰＲＯＭコード６２１ｄは実装されない。
【００４０】
アプリケーション基本データ６２１ｅは、アプリケーション基本コード３１１が使用するデータである。アプリケーション基本データ６２１ｅに記録されるデータはアプリケーション基本コード３１１だけではなく、アプリケーション拡張コード３１２すなわちＥＥＰＲＯＭコード６２１ｄが利用しても問題はない。
【００４１】
アプリケーション拡張データ６２１ｆは、アプリケーション拡張コード３１２が使用するデータが記録される。アプリケーション拡張コード３１２すなわちＥＥＰＲＯＭコード６２１ｄが無い場合は、アプリケーション拡張データ６２１ｆは存在しない。
【００４２】
＜サブルーチンの呼び出しおよびデータへのアクセス手順＞
これまで述べた実施の形態を例にとり、サブルーチン５２１ａに含まれるサブルーチンが他のサブルーチンを呼び出す動作手順および前記サブルーチンからデータにアクセスする手順について、それぞれ図を参照にしながら詳細に説明する。図７は前記サブルーチンの呼び出し手順を示したフロー図で、図８は前記サブルーチンからデータにアクセスする手順を示したフロー図である。まず、サブルーチン５２１ａに含まれるサブルーチンが他のサブルーチンを呼び出す手順について、図７を参照しながら説明する。ステップＳ１００は、サブルーチンの呼び出し処理を開始するステップである。
【００４３】
ステップＳ１１０にて、アプリケーションＲＯＭコード５２１内に実装されているサブルーチンテーブルアドレス５２１ｂを取得する。サブルーチンを呼び出すコードは、ＣＰＵ１００がアクセスするデータのアドレスをサブルーチンテーブルアドレス５２１ｂに設定し、次のステップに進む。
【００４４】
次にサブルーチンを呼び出すコードは、サブルーチンテーブル６２１ｂに記録されている個数データ７１０を読み込み、探索ＣＯＵＮＴＥＲ値を「１」に設定し、探索ＭＡＸ値を個数データ７１０に設定する（ステップＳ１２０）。次のステップでは、最初のサブルーチンアドレスオブジェクト７２０に記録されているサブルーチン名称７２１を読み込み、呼び出すサブルーチン名称と比較する（ステップＳ１２１）。名称が一致した場合はステップＳ１３０に進み、一致しなければステップＳ１２３に進む（ステップＳ１２２）。ステップＳ１２３では、探索ＣＯＵＮＴＥＲ値と探索ＭＡＸ値を比較する。一致しない場合はステップＳ１２４へ進み、一致した場合はステップＳ１２５へ進む。ステップＳ１２４では、探索ＣＯＵＮＴＥＲ値を「１」だけインクリメントし、次のサブルーチアドレスオブジェクト７２０に記録されているサブルーチン名称を読み込み、呼び出すサブルーチン名称と比較した後、ステップＳ１２２へ戻る。ステップＳ１２５すなわち探索ＣＯＵＮＴＥＲ値と探索ＭＡＸ値が一致していれば、アプリケーションの処理を中止する。
【００４５】
ステップＳ１３０では、サブルーチンの呼び出しアドレスを、呼び出すサブルーチン名称と一致したサブルーチン名称７１１を含むサブルーチンアドレスオブジェクト７２０に記録されているサブルーチン呼び出しアドレス７２２に設定する。サブルーチン呼び出しアドレス設定後は、次のステップＳ１４０へ進む。
【００４６】
ステップ１４０はサブルーチンを呼び出すステップで、サブルーチンの呼び出し処理は終了する。サブルーチンテーブル６２１ｂに実装されているサブルーチン呼び出しアドレス７２２を参照し、サブルーチンを呼び出すことで、サブルーチン５２１ａにはサブルーチンの呼び出しアドレスが記述されず、サブルーチン５２１ａが使用するサブルーチンのサブルーチン呼び出しアドレス変更が容易に行なえる。
【００４７】
一般的に、マルチアプリケーションＯＳ２０はＩＣカードに実装されたアプリケーションが同じＩＣカードに実装されている他のアプリケーションに悪影響を与えないように、アプリケーションの実行に関しては実行するＣＰＵ命令が実装されているアドレス、例えばＣＰＵ１００に備わっているプログラムカウンターの値を常に監視している。サブルーチンの呼び出しアドレスが、マルチアプリケーションＯＳによって割り当てられたアプリケーションが使用できる領域から出る場合は、マルチアプリケーションＯＳ２０によってサブルーチンの実行が中断される。
【００４８】
次にサブルーチン５２１ａに含まれるサブルーチンが、データにアクセスする手順について、図８を参照しながら説明する。ステップS２００は、前記サブルーチンがデータにアクセスする処理を開始するステップである。
【００４９】
次のステップＳ２１０にて、アプリケーションＲＯＭコード５２１内に実装されているデータテーブルアドレス５２１ｃを取得する。データを処理するサブルーチンは、ＣＰＵ１００がアクセスするデータのアドレスをデータテーブルアドレス５２１ｃに設定し、次のステップに進む。
【００５０】
次にデータにアクセスするサブルーチンは、データテーブル６２１ｃに記録されている個数データ７３０読み込み、探索ＣＯＵＮＴＥＲ値を「１」に設定し、探索ＭＡＸ値を個数データ７３０に設定する（ステップＳ２２０）。次のステップでは、最初のデータアドレスオブジェクト７４０に記録されているファイル番号７４１を読み込み、アクセスするデータのファイル番号と比較する（ステップＳ２２１）。ファイル番号が一致した場合はステップＳ２３０に進み、一致しなければステップＳ２２３に進む（ステップＳ２２２）。ステップＳ２２３では、探索ＣＯＵＮＴＥＲ値と探索ＭＡＸ値を比較する。一致しない場合はステップＳ２２４へ進む、一致する場合はステップＳ２２５へ進む。ステップＳ２２４では、探索ＣＯＵＮＴＥＲ値を「１」だけインクリメントし、次のデータアドレスオブジェクト７４０に記録されているファイル番号を読み込み、アクセスするデータのファイル番号と比較した後、ステップＳ２２２へ戻る。ステップＳ２２５すなわち探索ＣＯＵＮＴＥＲ値と探索ＭＡＸ値が一致していれば、アプリケーションの処理を中止する。
【００５１】
次のステップＳ２３０は、アクセスするデータのデータ記録アドレスを、アクセスするデータのファイル番号と一致するファイル番号７４１を含むデータアドレスオブジェクト７４０に記録されているデータ記録アドレス７４２に設定するステップである。データ記録アドレス設定後は、次のステップ２４０へ進む。
【００５２】
次のステップＳ２４０は、データ記録アドレスに記録されたデータにアクセスするステップで、データへのアクセス処理は終了する。データテーブル６２１ｃに記録されているデータ記録アドレス７４２を参照してデータにアクセスすることで、サブルーチン５２１ａにはデータ記録アドレスが記述されないため、データ記録アドレス変更に対する修正が容易に行なえる。
【００５３】
前述のサブルーチンと同様に、マルチアプリケーションＯＳ２０が許可していない領域のデータにアプリケーションがアクセスしようとした場合は、マルチアプリケーションＯＳ２０によってサブルーチンの実行が中断される。
【００５４】
＜発明の効果の説明＞
これまで述べた実施の形態において、目的とした発明の効果が得られることを、以下に図を参照しながら説明する。図９はサブルーチン５２１ａに含まれる一つのサブルーチンのサブルーチン呼び出しアドレスを変更するときの例、図１１は前記サブルーチンが使用するデータのデータ記録アドレスを変更するときの例である。
【００５５】
まず初めにサブルーチン５２１ａ含まれるサブルーチン呼び出しアドレスを変更する例を取り、本実施の形態はＲＯＭ１１０に実装されたサブルーチンを容易に変更できることを、図９を用いて説明する。図９（ａ）はサブルーチン変更前のメモリ構造図、図９（ｂ）はサブルーチン変更後のメモリ構造図、図１０（ａ）はサブルーチン変更前のサブルーチンテーブル６２１ｂの図、そして図１０（ｂ）はサブルーチン変更後のサブルーチンテーブル６２１ｂの図である。
【００５６】
図９（ａ）に示すように、サブルーチン変更前は変更されるサブルーチン８１０はアプリケーションＲＯＭコード５２１領域内に配置されている。前記サブルーチンを変更する場合は、ＲＯＭ１１０に実装されたデータは変更できないので、ＥＥＰＲＯＭ１２０のＥＥＰＲＯＭコード６２１ｄに変更したサブルーチン８２０を実装する。変更したサブルーチンを実装した図が図９（ｂ）である。図９（ａ）および（ｂ）に示しているように、変更前のサブルーチン呼び出しアドレスは「Ａ」であり、変更後のサブルーチン呼び出しアドレスは「Ｂ」に変更される。変更されたサブルーチンを使用するコードに「Ａ」のアドレスが記述されていると、変更したサブルーチンをＥＥＰＲＯＭ１２０に実装したにも関わらず、ＲＯＭ１１０に実装されている変更前のサブルーチンが動作してしまう。
【００５７】
これに対して本発明を適用したアプリケーション３０においては、サブルーチンの呼び出しアドレスはサブルーチンテーブル６２１ｂに記録されるため、サブルーチンテーブル６２１ｂに記録されている前記サブルーチンの呼び出しアドレスを更新すればよい。本例においては、図１０（ａ）および（ｂ）に示したように、サブルーチンテーブル６２１ｂ内の変更されたサブルーチン名称８１１に対応するサブルーチン呼び出しアドレス８１２のみを更新さえすれば、前記変更されたサブルーチンを使用するコードは、サブルーチンテーブル６２１ｂからサブルーチン呼び出すアドレスを取得するため、サブルーチン変更後も問題なくＥＥＰＲＯＭコード６２１ｄに実装されたサブルーチンが実行される。
【００５８】
次にサブルーチン５２１ａが使用するデータのデータ記録アドレスが変更される例をとり、本発明の形態はデータ記録アドレス変更に対し容易に対応がとれることを、図１１、図１２を用いて説明する。図１１（ａ）はデータ記録アドレス変更前のアプリケーション基本データ６２１ｅの図、図１１（ｂ）はデータ記録アドレス変更後のアプリケーション基本データ６２１ｅの図、図１２（ａ）はデータ記録アドレス変更前のデータテーブル６２１ｃの図、そして図１２（ｂ）はデータ記録アドレス変更後のデータテーブル６２１ｃの図である。
【００５９】
図１１（ａ）においては、アプリケーション基本データ領域６２１ｅにはデータ９１０およびデータ９２０の２つのデータが格納されている。データ９１０のファイル番号は「０００１」で長さが２５６バイト、データ９２０のファイル番号は「０００２」で長さが同じく２５６バイトである。データ９１０の先頭アドレスを「Ｃ」とすると、データ９２０の先頭アドレスは「Ｄ」すなわち「Ｃ＋１００ｈ」である（ｈは１６進表記を示す）。例えばＩＣチップ１０製造後に、データ９１０の長さが増えたことを想定してみる。図１１（ｂ）はデータ９１０の長さが２５６バイト増え、データ１の長さが５１２バイトになった図である。データ９１０の長さが２５６バイト増えると、データ９２０の先頭アドレスは「Ｅ」すなわち「Ｃ＋２００ｈ」になる。データ９２０を使用するサブルーチンにアドレス「Ｄ」が記述されていると、データ９１０の長さが増えた場合はデータ９２０の先頭アドレスが「Ｄ」から「Ｅ」に変更になるため、間違ったデータにアクセスしてしまう。
【００６０】
これに対して本発明を適用したアプリケーション３０においては、各データのデータ記録アドレスはデータテーブル６２１ｃに記録されているため、データテーブル６２１ｃに記録されているデータ９２０のデータ記録アドレス９２１のみを更新すればよい。図１２（ａ）はデータ９１０の容量が増える前のデータテーブル６２１ｃの図、図１２（ｂ）はデータ９１０の長さが増えた後のデータテーブル６２１ｃの図である。図１２（ａ）および（ｂ）を比較するればわかるように、データ９１０の長さが変更した場合は、データ９２０のデータアドレスオブジェクトに記録されるデータ記録アドレス９２１のみを更新している。データ９１０の長さが増えた後は、データ９２０のデータ記録アドレス９２１は「Ｅ」になるので、間違いなくデータ９２０にアクセスできる。
【図面の簡単な説明】
【００６１】
【図１】マルチアプリケーションＯＳのソフトウェア基本構造モデル。
【図２】ＩＣチップ構造図。
【図３】アプリケーションのソフトウェア構造図。
【図４】ＲＯＭ構造図。
【図５】ＥＥＰＲＯＭの構造図。
【図６】サブルーチンテーブルおよびデータテーブルの説明図。
【図７】サブルーチンの呼び出しフロー図。
【図８】データへのアクセスフロー図。
【図９】サブルーチン変更時のメモリ構造図。
【図１０】サブルーチン変更時のサブルーチンテーブルを説明するための図。
【図１１】データ記録アドレス変更時のメモリ構造図。
【図１２】データ記録アドレス変更時のデータテーブルを説明するための図。
【符号の説明】
【００６２】
１０  ＩＣチップ
１００  ＣＰＵ
１１０  ＲＯＭ
１２０  ＥＥＰＲＯＭ
１３０  ＲＡＭ
１４０  Ｉ／Ｏ回路
２０  マルチアプリケーションＯＳ
３０  アプリケーション
３１０  アプリケーションコード
３１１  アプリケーション基本コード
３１２  アプリケーション拡張コード
３２０  アプリケーションデータ
３２１  アプリケーション基本データ
３２２  アプリケーション拡張データ
５１０  ＲＯＭのＯＳ領域
５２０  ＲＯＭのアプリケーション領域
５２１  アプリケーションＲＯＭコード
５２１ａ  サブルーチン
５２１ｂ  サブル−チンテーブルアドレス
５２１ｃ  データテーブルアドレス
６１０  ＥＥＰＲＯＭのＯＳ領域
６１１ａ  ＯＳデータ
６１１ｂ  アプリケーションＲＯＭコードのアドレス
６１１ｃ  アプリケーションＥＥＰＲＯＭデータのアドレス
６２０  ＥＥＰＲＯＭのアプリケーション領域
６２１ａ、ｄ  ＥＥＰＲＯＭコード
６２１ｂ  サブルーチンテーブル
６２１ｃ  データテーブル
７２０  サブルーチンアドレスオブジェクト
７２１  サブルーチン名称
７２２  サブルーチン呼び出しアドレス
７４０  データアドレスオブジェクト
７４１  データのファイル番号
７４２  データ記録アドレス
【図１】
2005234898.tif 000003
【図２】
2005234898.tif 000004
【図３】
2005234898.tif 000005
【図４】
2005234898.tif 000006
【図５】
2005234898.tif 000007
【図６】
2005234898.tif 000008
【図７】
2005234898.tif 000009
【図８】
2005234898.tif 000010
【図９】
2005234898.tif 000011
【図１０】
2005234898.tif 000012
【図１１】
2005234898.tif 000013
【図１２】
2005234898.tif 000014