(57)【特許請求の範囲】
【請求項１】
内部に書換え可能な不揮発性メモリを持ち、該不揮発性メモリにアプリケーションプログラムを書き込み、外部からコマンドが入力されると該コマンドに対応した処理を実行してその結果を外部へ出力する携帯電子装置において、
アプリケーションプログラム内で定義されたデータ領域を初めて確保する際には、該定義されたデータ領域のサイズに関わらず、前記不揮発性メモリ上の連続する全空領域を該アプリケーション用のデータ領域として割当て、該アプリケーションの実行時にデータ領域の拡張を可能とする領域割当手段と、
別のアプリケーションプログラムを書き込むか、別に書き込まれていたアプリケーションプログラムがデータ領域を確保する場合に、実際に使用している領域までをデータ領域として確定し、該アプリケーションのこれ以降のデータ領域の拡張を不可能とする領域確定手段と、
を具備することを特徴とする携帯可能電子装置。
【請求項２】
前記領域確定手段は、前記別のアプリケーションプログラムを書き込む場合、既に書き込まれたアプリケーションプログラム用に、該アプリケーションプログラムにより使用されたデータ領域の次に余裕データ領域を設け、この余裕データ領域の後に前記別のアプリケーションを書き込むことを特徴とする請求項1記載の携帯可能電子装置。
【請求項３】
内部に書換え可能な不揮発性メモリを持ち、該不揮発性メモリにアプリケーションプログラムを書き込み、外部からコマンドを入力されると該コマンドに対応した処理を実行してその結果を外部へ出力する携帯電子装置におけるアプリケーションプログラム用のデータ領域割当方法であって、
アプリケーションプログラム内で定義されたデータ領域を初めて確保する際には、該定義されたデータ領域のサイズに関わらず、前記不揮発性メモリ上の全空領域を該アプリケーション用のデータ領域として割当て、該アプリケーションの実行時にデータ領域の拡張を可能とするステップと、
別のアプリケーションプログラムを書き込むか、別に書き込まれていたアプリケーションプログラムがデータ領域を確保する場合に、実際に使用している領域までをデータ領域として確定し、該アプリケーションのこれ以降のデータ領域の拡張を不可能とするステップと、
を具備することを特徴とするデータ領域割当方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は書き換え可能な不揮発性メモリおよびＣＰＵなどの制御素子を有し、外部からのデータ入出力を行う手段を備えたＩＣチップを内蔵した、いわゆるＩＣカードと称される携帯可能電子装置であって不揮発性メモリにアプリケーションプログラムを書込んで実行可能なものに関する。
【０００２】
【従来の技術】
不揮発性メモリにアプリケーションプログラムを書込んで実行できるＩＣカードでは、作成したアプリケーションをＩＣカードに書き込んで不揮発性メモリに保存し（以降この処理をロードと称する）、その後書き込んだアプリケーションを実行可能にする（以降この処理をインストールと称する）手続きを経て動作が可能となる。このインストール処理ではアプリケーションの実行を可能にするための登録とアプリケーションプログラムに定義されているデータ領域が不揮発性メモリに確保される。
【０００３】
【発明が解決しようとする課題】
データ領域の確保はアプリケーション実行時に確保するようにプログラムすることも可能であるので、インストール以降のアプリケーション実行時にデータ領域が不揮発性メモリに追加で確保される場合も想定される。
【０００４】
インストール処理においてデータ領域を必要分一括して確保することは容易であるが、インストール時にデータ領域を確定すると、上記したインストール以降のアプリケーション実行時にデータ領域を順次拡張して追加することは困難である。つまり、条件に応じてデータ領域を追加で拡張するようなプログラムを有するアプリケーションは、従来のＩＣカードに適用することができない。
【０００５】
従って本発明は、インストール以降のアプリケーション実行時に、必要に応じてデータ領域を順次拡張して追加することができる携帯可能電子装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記目的を達成するために本発明の形態可能電子装置は、アプリケーションプログラムをインストールする際にはデータ領域として不揮発性メモリの連続する全空き領域を割当て、次に別のアプリケーションがロードあるいはインストールされるまではこの全空き領域を使用可能にする。これにより最後にインストールされたアプリケーションはデータ領域をアプリケーション実行時に順次拡張することが容易に行える。
【０００７】
【発明の実施の形態】
以下に示す説明はこの発明の実施の形態であって、この発明の装置及び方法を限定するものではない。以下、本発明をＩＣカードに適用した場合の実施形態を説明する。
【０００８】
図１は本発明によるＩＣカードを利用するシステムの全体構成を示すブロック図である。ＩＣカード１０１はカードリーダ／ライタ１０２に接続され、カードリーダ／ライタ１０２は端末１０３に接続され、端末１０３はホストコンピュータ１０４と接続されている。従ってＩＣカード１０１は、カードリーダ／ライタ１０２、端末１０３、及びホストコンピュータ１０４と通信可能ある。
【０００９】
図２はＩＣカード１０１の構成例を示すものであり、制御部としてＣＰＵなどの制御素子２０１、記憶内容が書換え可能な不揮発性のデータメモリ２０２、ワーキングメモリ２０３、制御プログラムメモリ２０４、及びカードリーダ・ライタ１０２との通信を行うための通信部２０５等によって構成され、これらは１つのＩＣチップ内部に組込まれている。このＩＣチップはＩＣカード内に埋設され、接触式の場合にはＩＣカード表面の接点部分を介してカードリーダ／ライタ１０２と接続する。
【００１０】
図３（ａ）及び図３（ｂ）は不揮発性のデータメモリ２０２のフォーマットを示している。図３（ａ）のようにデータメモリ２０２はアプリケーション管理テーブルを含むシステム領域と、各アプリケーションに割り当てたアプリケーション領域に二分される。アプリケーション領域にはアプリケーションとそのデータ領域が別々に管理して置かれる。
【００１１】
図３（ａ）では次の順で処理が行われた場合を示している。
【００１２】
１）アプリケーション＃１の書き込み
２）アプリケーション＃１のインストールにてデータ領域＃１の確保
アプリケーション＃１にはデータ領域として残りの全ての領域が与えられているので、以降別のアプリケーションがロード／インストールされるまではアプリケーション＃１実行中に新たにデータ領域を確保することが可能である。尚、図３（ａ）ではデータ領域＃１のうち点線で示す領域まで使用されている。
【００１３】
図３（ｂ）では図３（ａ）の状態に対して次の順で処理が行われた結果を示している。
【００１４】
１）アプリケーション＃２の書き込み（アプリケーション＃１のデータ領域の確定）
２）アプリケーション＃２のインストールにてデータ領域＃２の確保
アプリケーション＃２が書き込まれる領域はデータ領域＃１がこの時点までに使用した領域の後ろである。
【００１５】
この時点でデータ領域＃１が確定し、アプリケーション＃２がこれに続く領域に書込まれる。
【００１６】
アプリケーション＃２のインストールにてアプリケーション＃２にはデータ領域として連続する残りの全領域が与えられているので、以降別のアプリケーションがロード／インストールされるまではアプリケーション＃２実行中に新たにデータ領域を確保することが可能である。つまり本実施形態によれば、条件に応じてデータ領域を追加で拡張するようなプログラムを有するアプリケーションであっても十分に実行可能である。尚、図３（ｂ）ではデータ領域＃２のうち点線で示す領域まで使用されている。
【００１７】
図４及び図５は不揮発性データメモリ２０２上のアプリケーション管理テーブル４１のフォーマットの例を示している。ＡＩＤとはアプリケーション識別子でありアプリケーション毎に付与される。この値はカードに書き込まれた複数のアプリケーションのいずれを選択的に動作させるのか決める際に用いられる。アプリ／データは書き込まれるデータの種類であって、アプリはアプリケーション用のコードデータ、データは目的の数値データである。開始アドレスは書き込まれたアプリケーションの先頭アドレスまたはインストール処理の際に確保されたデータ領域の先頭アドレスを示す。
【００１８】
アプリケーション内の参照アドレスは、分岐先アドレス及びデータ参照先アドレス共に相対アドレスが用いられている。つまり、実際の分岐先アドレスはアプリケーション先頭アドレスにアプリケーション内分岐先アドレスを加えたアドレスであり、実際のデータ参照先アドレスはデータ領域先頭アドレスにアプリケーション内データ参照先アドレスを加えたアドレスである。
【００１９】
アプリケーション管理テーブル４１の最後には、確定していないデータ領域がどこまで使われているかを示すために、どのアプリケーションが対応するかを示すアプリケーション識別子４２ａ及び実使用領域の次のアドレス４２ｂとが書き込まれる。
【００２０】
図４は図３（ａ）の状態の場合を示している。すなわち図４（ａ）に示すように、管理テーブル４１には、ロードされたアプリケーションに関して、アプリケーションの識別子「＃１」とデータの種類「アプリ」とそのサイズ「４ＫＢ」と書き込み開始アドレス「０１００Ｈ」が記録されている。データ領域に関して管理テーブル４１には、どのアプリケーションに対するデータ領域であるかを示すアプリケーション識別子「＃１」とデータの種類「データ」と仮に確保されたデータ領域サイズ「２４ＫＢ」とデータ領域の開始アドレス「０１４０Ｈ」が記録されている。
【００２１】
データ領域サイズ「２４ＫＢ」は図４（ｂ）に示すように、アプリケーション＃がロードされた時点で連続する未使用の領域サイズ４３ａに対応する。アプリケーションの中で確保すべきデータサイズとして例えば１０ＫＢが宣言されている場合でも、「サイズ」として未使用の全領域サイズが記録される。つまり、データ領域＃１は領域が確定していないので、未使用領域４３ｂにアプリケーション＃１実行中に、新たにデータ領域を追加で確保することが出来る。アプリケーション管理テーブルの最後には、アプリケーション識別子４２ａ、及び実使用領域の次のアドレス（つまり未使用領域４３ｂの先頭アドレス）４２ｂが記録される。
【００２２】
図５は図４の状態でアプリケーション＃２が書き込まれた場合を示している。アプリケーション＃１のデータ領域＃１は、アプリケーション＃２が書き込まれた時点で確定され、これ以上アプリケーション＃１実行中に新たなデータ領域を確保することは出来ない。
【００２３】
図５（ａ）のように、アプリケーション＃２が書き込みが完了した直後、アプリケーション＃２のデータ領域＃２は未使用であるので、アプリケーション識別子４２ａ及び実使用領域の次のアドレス４２ｂの欄は何も記述されていない。また、アプリケーション＃２に続く領域は空き領域として管理される。
【００２４】
図６は図５の状態でアプリケーション＃２がインストール及び実行されされた結果、データ領域が確保されデータが図中点線の位置まで書き込まれた様子を示し、図３（ｂ）の状態に対応している。
【００２５】
アプリケーション＃２がインストールされると空き領域にデータ領域＃２の領域が確保される。図６（ａ）の「サイズ」の項に記述された１６ＫＢは、図６（ｂ）のようにインストール直後の全未使用領域４４ａを示す。
【００２６】
データ領域＃２は領域が確定していないので、未使用領域４４ｂにアプリケーション＃２実行中に新たにデータ領域を確保することが出来る。この未使用領域４４ｂの先頭アドレスが、アプリケーション管理テーブル４１の最後に、実使用領域の次のアドレス４２ｂとして記録される。
【００２７】
図７はワーキングメモリ２０３上に置かれるデータの例を示している。
【００２８】
「選択されたアプリケーションのＡＩＤ」５１は、アプリケーションの選択処理にて選択されたアプリケーションの識別子ＡＩＤが格納される。「ロードデータ格納アドレス」５２はアプリケーションのロード処理(後述される）のとき、データの格納先を示す。
【００２９】
図８〜図１２は図２の制御プログラムメモリ２０４に格納されている制御プログラムに従って、制御素子２０１が外部から入力されるコマンドに対して実行する処理の流れを示している。
【００３０】
図８はコマンドを受信後これを解析してそれぞれのコマンドに対応する処理ルーチンへ分岐し、それぞれの処理が終了した後その結果を送信して（Ｓ１０８）、再び外部からのコマンド入力待ちに戻る処理の全体的な流れを示す。制御素子２０１がコマンドに応じて実行する処理としては、ロード処理（Ｓ１０４）、インストール処理（Ｓ１０５）、アプリケーション選択処理（Ｓ１０６）、アプリケーションの実行（Ｓ１０７）等がある。
【００３１】
図９はアプリケーションプログラムの書き込みを実施するロードコマンドの処理（図８のＳ１０４）の詳細を示す。
【００３２】
アプリケーションプログラムは幾つかのブロック（転送用データパケット）に分割して書き込まれるため、処理は初めのブロックの書き込み、ブロックの書き込み継続、最後のブロックの書き込みの三通りに分けられて実行される。以下、図４に示すようにアプリケーション＃１のロード及びインストールが完了し、アプリケーション＃１の実行によりデータ領域＃１の一部が使用された後に他のアプリケーション＃２をロードして、図５の状態になる場合を説明する。
【００３３】
アプリケーション＃２の初めのブロックの書き込みの際に(ステップＳ２０２でＹｅｓの場合）、制御素子２０１はアプリケーション管理テーブルの最後に示された実使用領域の次のアドレス４２ｂを図７のロードデータ格納アドレス５２に書き込む（ステップＳ２０３）。次に、実使用領域の次のアドレス４２ｂ及びデータ領域＃の開始アドレスを参照してデータ領域＃１のサイズ(図５（ａ）では４ＫＢ）を決定する（Ｓ２０４）。この時点で未確定データ領域＃１は確定され、アプリケーション＃１の以降の拡張が出来なくなる。
【００３４】
ステップＳ２０５において制御素子２０１は、ロードデータ格納アドレス５２を格納開始アドレスとして、ロードデータ（アプリケーション＃２の最初のブロック）をデータメモリ２０２に書き込む。次にロードデータ格納アドレス５２を更新する（Ｓ２０６）。
【００３５】
ロードするアプリケーションのブロックが書き込み継続ブロックであれば(ステップＳ２０２でＮｏの場合）、制御素子２０１はロードデータ格納アドレス５２にロードデータ（アプリケーション＃２の２番目以降のブロック）を書き込み（Ｓ２０５）、ロードデータ格納アドレス５２を更新する（Ｓ２０６）。
【００３６】
ロードするアプリケーションのブロックが最後のブロックであれば(ステップＳ２０１でＹｅｓの場合）、制御素子２０１はロードデータ格納アドレス５２にロードデータ（アプリケーション＃２の最後のブロック）を書き込み（Ｓ２０７）、アプリケーション管理テーブル４１のアプリケーション＃２についての各項目（「ＡＩＤ」、「アプリ／データ」、「サイズ」、「開始アドレス」）、ならびに空き領域情報を設定する（Ｓ２０８）。
【００３７】
図１０は書き込まれたアプリケーションプログラムに定義されているデータ領域を確保するインストールコマンドの処理（図８のステップＳ１０５）の詳細を示す。
【００３８】
インストール処理コマンドを受信すると制御素子２０１は、指定された識別子と合致するアプリケーションをアプリケーション管理テーブル４１より探す（Ｓ３０１）。次にステップＳ３０１で検出されたアプリケーションの内容をサーチして、データ定義情報（このアプリケーションで要求されるデータ容量）を検出する（Ｓ３０２）。
【００３９】
検出したデータ定義情報に基づいて、制御素子２０１は図６（ａ）のように、このアプリケーション（ここでは＃２）のデータ領域についての各項目（「ＡＩＤ」、「アプリ／データ」、「サイズ」、「開始アドレス」）を設定する（Ｓ３０３）。ここで「サイズ」としては、データ定義情報として宣言されているデータ容量に関わらず、残りの全空き容量が設定される。例えば４ＫＢがデータ定義情報として宣言されている場合でも、全空き容量（図６（ａ）では１６ＫＢ）が設定される。次に制御素子２０１は、アプリケーション管理テーブル４１の最後に、識別子及び使用したデータ領域の次のアドレス４２ｂを設定する（Ｓ３０４）。
【００４０】
図１１はインストールで実行可能となったアプリケーションを実行する際の選択処理であるアプリケーション選択コマンドの処理（図８のステップＳ１０６）の詳細を示す。
【００４１】
アプリケーション選択処理コマンドを受信すると、制御素子２０１はステップＳ４０１のように、指定された識別子と合致するアプリケーションをアプリケーション管理テーブル４１より検出する。次に制御素子２０１は、検出されたアプリケーション識別子を図７の「選択されたアプリケーションのＡＩＤ」５１に設定し、該アプリケーションの開始アドレスをロードデータ格納アドレス５２に設定する。
【００４２】
図１２は選択されたアプリケーションにコマンドを解釈させて実行させる処理を示す。
【００４３】
前述のロード・インストール・選択コマンドではない場合には、選択されたアプリケーションに外部から入力されたコマンドを解釈・実行させる。特にステップＳ５０３のアプリケーション動作において、アプリケーション実行時に新たにデータ領域を確保する際には、アプリケーション管理テーブルの最後に示された識別子４２ａと自らの識別子が合致するか調べ、合致する際にはそこの次のアドレス４２ｂを参照してデータ領域を確保し、この次のアドレス４２ｂを更新する。
【００４４】
図１３は本発明の他の実施形態を示す。この実施形態では、新たなアプリケーション（例えばアプリケーション＃２）が追加される場合に、図１３（ｂ）の５３に示すように以前のアプリケーションで使用したデータ領域＃１の次の領域にデータの余裕領域＃１が設けられる。更にアプリケーション管理テーブル４１には、図１３（ａ）のように余裕領域＃１に対応する情報５４（ＡＩＤ：＃１、アプリ／データ：データ、サイズ：２ＫＢ、開始アドレス：０１８０Ｈ）が記録されている。
【００４５】
この余裕領域を設けることで、アプリケーション＃２をロードした後にアプリケーション＃１を実行した場合でも、余裕領域＃１にアプリケーション＃１の実行の結果生じるデータを格納することができる。
【００４６】
このような余裕領域を設けるには、例えば図９のステップＳ２０３で、以前のアプリケーションで使用されたデータ領域サイズを決定した後、余裕領域に関する上記したような情報５４をアプリケーション管理テーブル４１に記録する。
【００４７】
図１４は本発明の更に他の実施形態を示す。この実施形態では、例えばアプリケーション＃２のロード、インストール、及び実行の後、アプリケーション＃１を実行し、このアプリケーション＃１の実行時に新たなデータ領域の確保が要求された場合、図１４（ｂ）の５６のように追加領域＃１が使用済みデータ領域＃２の次に確保される。このときデータ領域＃２は確定する。アプリケーション管理テーブル４１には、図１４（ａ）のように追加領域＃１に対応する情報５７（ＡＩＤ：＃１、アプリ／データ：データ、サイズ：１２ＫＢ（全空き領域）、開始アドレス：０２００Ｈ）が記録される。
【００４８】
このような追加領域を許容することで、以前にロードした例えばアプリケーション＃１が該アプリケーション実行時にデータ領域を追加で確保するようなアプリケーションであっても、アプリケーション＃２の実行の後に、アプリケーション＃１を実行することができる。
【００４９】
【発明の効果】
以上説明したように本発明の携帯可能電子装置は、アプリケーションのインストールが完了した後、該アプリケーションの実行時、必要に応じてデータ領域を順次拡張して追加することができる。
【図面の簡単な説明】
【図１】本発明によるＩＣカードを利用するシステムの全体構成を示すブロック図である。
【図２】ＩＣカード１０１の構成例を示すブロック図。
【図３】不揮発性のデータメモリ２０２のフォーマットを示す。
【図４】不揮発性データメモリ２０２上のアプリケーション管理テーブル４１のフォーマットの例を示す。
【図５】不揮発性データメモリ２０２上のアプリケーション管理テーブル４１のフォーマットの他の例を示す。
【図６】図５の状態でアプリケーション＃２がインストール及び実行されされた結果、データ領域が確保されデータが図中点線の位置まで書き込まれた様子を示す。
【図７】ワーキングメモリ２０３上に置かれるデータの例を示す。
【図８】受信したコマンドに対応する処理ルーチンへ分岐し、それぞれの処理が終了した後その結果を送信する処理の全体的な流れを示す。
【図９】アプリケーションプログラムの書き込みを実施するロードコマンドの処理の詳細を示す。
【図１０】書き込まれたアプリケーションプログラムに定義されているデータ領域を確保するインストールコマンドの処理の詳細を示す。
【図１１】インストールで実行可能となったアプリケーションを実行する際の選択処理であるアプリケーション選択コマンドの処理の詳細を示す。
【図１２】選択されたアプリケーションにコマンドを解釈させて実行させる処理を示す。
【図１３】本発明の他の実施形態を示す。
【図１４】本発明の更に他の実施形態を示す。
【図１】
0003668204.tif 000002
【図２】
0003668204.tif 000003
【図３】
0003668204.tif 000004
【図４】
0003668204.tif 000005
【図５】
0003668204.tif 000006
【図６】
0003668204.tif 000007
【図７】
0003668204.tif 000008
【図８】
0003668204.tif 000009
【図９】
0003668204.tif 000010
【図１０】
0003668204.tif 000011
【図１１】
0003668204.tif 000012
【図１２】
0003668204.tif 000013
【図１３】
0003668204.tif 000014
【図１４】
0003668204.tif 000015