(57)【特許請求の範囲】
【請求項１】
複数のアプリケーションプログラムを格納可能な内蔵メモリを備え、
前記内蔵メモリのアドレスは、セグメント部と前記セグメント部より下位に位置するアドレス部から構成され、
前記内蔵メモリには基準アドレス部が設定されており、カード発行後に、前記基準アドレス部から配置されるようにコード化されたアプリケーションプログラムを前記内蔵メモリの任意のアドレス部にダウンロードして追加可能なメモリ管理手段を備え、
発行後にアプリケーションプログラムをダウンロードして追加可能なＩＣカードであって、
ベースレジスタと、
所定の基準アドレスと前記複数のアプリケーションプログラムの先頭アドレスとの差分値を、実行する各アプリケーションプログラム毎にベースレジスタに設定する差分値設定手段と、
前記基準アドレスおよびこれとは異なる出力アドレスを供給するアドレス供給手段と、
ベースレジスタが保持する前記差分値とアドレス供給手段から供給される出力アドレスとを加算する加算手段と、
前記加算手段により生成された加算アドレスとアドレス供給手段から供給された出力アドレスとの何れか一方を内蔵メモリのアドレスの少なくとも一部として選択するアドレス選択手段とを備え、
前記アドレス選択手段は、前記加算アドレスと前記出力アドレスとの何れを選択するかを設定可能であるとともに、前記出力アドレスの値に関係なく前記出力アドレスを選択する動作と、前記出力アドレスのセグメント部がアプリケーションプログラム領域である場合に前記加算アドレスを出力し、当該セグメント部がアプリケーションプログラム領域以外である場合に前記出力アドレスを出力する動作とのいずれかの動作を設定可能であるＩＣカード。
【請求項２】
前記メモリ管理手段は、ダウンロードするアプリケーションプログラムのサイズに基づいて前記内蔵メモリの格納アドレスを決定して、該格納アドレスに前記ダウンロードするアプリケーションプログラムを格納させ、
前記メモリ管理手段を用いて、カード発行後にアプリケーションプログラムをダウンロードして前記内蔵メモリに追加することを可能とする請求項１に記載のＩＣカード。
【請求項３】
前記メモリ管理手段は、前記ダウンロードするアプリケーションプログラムのサイズを受信し、前記受信したアプリケーションプログラムのサイズに基づいて前記格納アドレスを決定する請求項１または２に記載のＩＣカード。
【請求項４】
前記内蔵メモリは前記アプリケーションプログラムを格納するプログラム格納領域を有し、
前記内蔵メモリの所定の基準アドレスと、前記プログラム格納領域に格納された複数のアプリケーションプログラムの先頭アドレスとの差分値を、実行するアプリケーションプログラム毎に設定し、前記各差分値に基づいて各アプリケーションプログラムを実行する請求項１〜３のいずれかに記載のＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内蔵メモリ内に複数のアプリケーションプログラムを格納し、それらを実行する１チップマイクロコンピュータおよびそれを内蔵したＩＣカードに関するものである。
【背景技術】
【０００２】
従来、プログラム用メモリを内蔵し、そのプログラム用メモリに格納されたアプリケーションプログラムを実行する１チップマイクロコンピュータが知られている。この種の従来の１チップマイクロコンピュータでは、プログラム用メモリの容量の制限などから、１つの１チップマイクロコンピュータにおいて実行できるアプリケーションプログラムが通常１種類に限定されていた。
【０００３】
また、複数のアプリケーションプログラムに対応可能な１チップマイクロコンピュータであっても、プログラム用メモリの固定されたアドレスを先頭アドレスとしてアプリケーションプログラムを格納しておき、その中から１つのアプリケーションプログラムを選択して実行できるに留まっていた。
【０００４】
一方、近年において、１チップマイクロコンピュータに内蔵されるプログラム用メモリとしては、記憶容量の増大とともに、その種類も従来の読み出し専用メモリ（ＲＯＭ）の他に、フラッシュメモリなどの大容量の不揮発性メモリ等が開発され、多様化している。
【０００５】
また、上記のような１チップマイクロコンピュータを内蔵した電子カード、即ちＩＣカードにおいては、電子現金、電子チケット、電子社員証など、複数のアプリケーションプログラムを動作可能にしたいという要望が高まっている。このような要望に対応するためには、ＩＣカードに内蔵される１チップマイクロコンピュータにおいて、それに格納される各アプリケーションプログラムの実行制御を柔軟に行い得ることが必要である。
【０００６】
上記従来の１チップマイクロコンピュータにおいて、複数のアプリケーションプログラムを実行することは、次のような手法により実現することができる。
【０００７】
まず、１チップマイクロコンピュータに搭載されたオペレーティングシステムなどのシステムプログラムにおいて、各アプリケーションプログラムのスタートアドレスと、アプリケーションプログラム１つ当たりのサイズとをあらかじめ決めておく。
【０００８】
次に、上記スタートアドレスからアプリケーションプログラムの実行コードが配置されるように、あらかじめパーソナルコンピュータ（ＰＣ）等の端末装置上において、１チップマイクロコンピュータ用のクロス開発環境を用いて実行コードを生成し、これを１チップマイクロコンピュータのプログラム用メモリに配置する。
【０００９】
そして、ＩＣカードのシステムプログラムは、ＰＣ側のプログラムから所定のアプリケーションプログラムの実行指令を受け取ると、そのアプリケーションプログラムが格納されたアドレスへの分岐命令を実行する。また、他のアプリケーションプログラムを実行するときには、そのアプリケーションに割り当てられたアドレスヘの分岐命令を実行する。
【００１０】
一方、特許第２９０９１０９号公報には、図９に示すように、連続したメモリ領域への異種データの格納およびアクセスを柔軟に行うために、バッテリによりバックアップされたシステムメモリ（図示せず）とアドレスデコーダ１０１、バックアップデータの先頭アドレスを示すベースレジスタ１０２、バンク切り替え用のページレジスタ１０３、アドレス加算器、即ちアダー１０４およびセレクタ１０５からなるメモリ制御装置が開示されている。
【００１１】
上記装置において、アドレスデコーダ１０１は、入力されたアドレスが変換対象アドレスか否かを判別する。ベースレジスタ１０２はアドレス変換用の先頭アドレスを格納している。ページレジスタ１０３はバンク切り替えによってアドレス変換を行う。アダー１０４は、ベースレジスタ１０２に設定されたベースアドレス値に、ベースレジスタ１０２に設定されたバンクアドレスを加えて、加算アドレス１０６を生成する。セレクタ１０５は、アドレスデコーダ１０１の判別結果に基づいて、加算アドレス１０６と非加算アドレス１０７との何れか一方をメモリアドレスとして出力する。
【００１２】
上記のメモリ制御装置では、バックアップ対象データをシステムメモリから読み出すときに非加算アドレス１０７をメモリアドレスとして与え、バックアップすべきデータをシステムメモリに書き込むときに加算アドレス１０６をメモリアドレスとして与えることにより、連続したメモリ空間に対して異種データを格納できるようにしている。
【特許文献１】特許第２９０９１０９号公報（発行日：１９９９年６月２３日）
【発明の開示】
【発明が解決しようとする課題】
【００１３】
１つの１チップマイクロコンピュータが複数のアプリケーションプログラムに対応するには、それぞれ独立して開発されたアプリケーションプログラムを同一メモリの連続したアドレス空間上に混在させることになる。この場合には、各アプリケーションプログラムに対し、それぞれのアプリケーションプログラムが使用するアドレス空間同士が干渉し合わないように、固有のアドレス空間を割り当てる必要がある。
【００１４】
通常、アプリケーションプログラムは、プログラム開発者がコード生成したアドレスに正しく配置されなければ、正常に動作しない。
【００１５】
また、１チップマイクロコンピュータのメモリ構成が、バンク切り替え（前記公報に記載）やセグメント分割で管理される場合には、各バンク単位あるいは各セグメント単位毎にアプリケーションプログラムを配置させることも考えられる。しかしながら、この場合にはプログラムの格納数がシステムで許容されるバンク数あるいはセグメント数に限定されてしまう。
【００１６】
また、格納するアプリケーションプログラムのサイズが１つのバンク単位あるいはセグメント単位よりも十分小さい場合には、プログラムメモリの多くの部分が無駄になってしまう。
【００１７】
また、フラッシュメモリやＥＥＰＲＯＭなどの不揮発性メモリをプログラムメモリとして搭載した多目的ＩＣカードのように、仕様や用途に応じて使用するアプリケーションに複数の組み合わせがある場合、各アプリケーションプログラムの配置順や配置アドレスはＩＣカード毎に異なる。
【００１８】
また、ＩＣカードが発行された後に、新しいアプリケーションプログラムをＩＣカードのプログラムメモリへ追加する場合、追加するアプリケーションプログラムのコードをＩＣカードのプログラムメモリの空いた領域に対応させて、ＩＣカード発行者が再構築させる必要がある。このような操作は非常に複雑であり、セキュリティの面からも好ましくない。
【００１９】
また、前記公報に記載の構成では、ベースレジスタ１０２とページレジスタ１０３との出力を加算して得られた加算アドレスをメモリアドレスの一部としてメモリへ与えることにより、異種データの格納、格納データサイズの増減が行えるとされているものの、この装置の目的はデータのバックアップであり、それぞれの領域に格納したデータをプログラムとして実行するようには構成されていない。
【００２０】
したがって、本発明は、アプリケーションプログラム開発時には、そのプログラムが１チップマイクロコンピュータ上で配置されるアドレスを考慮することなく独立して開発できることを可能にし、かつ１チップマイクロコンピュータ上に配置する際に複雑なマッピング作業を発生させず、さらに１チップマイクロコンピュータ内でそのプログラムが実行される際に、ＣＰＵが各アプリケーションプログラムが配置されているアドレスを考慮することなくソフトウエアを実行できることを可能にするＩＣカードの提供を目的としている。
【課題を解決するための手段】
【００２１】
本発明のＩＣカードは、複数のアプリケーションプログラムを格納可能な内蔵メモリを備え、前記内蔵メモリのアドレスは、セグメント部と前記セグメント部より下位に位置するアドレス部から構成され、前記内蔵メモリには基準アドレス部が設定されており、カード発行後に、前記基準アドレス部から配置されるようにコード化されたアプリケーションプログラムを前記内蔵メモリの任意のアドレス部にダウンロードして追加可能なメモリ管理手段を備え、発行後にアプリケーションプログラムをダウンロードして追加可能なＩＣカードであって、ベースレジスタと、所定の基準アドレスと前記複数のアプリケーションプログラムの先頭アドレスとの差分値を、実行する各アプリケーションプログラム毎にベースレジスタに設定する差分値設定手段と、前記基準アドレスおよびこれとは異なる出力アドレスを供給するアドレス供給手段と、ベースレジスタが保持する前記差分値とアドレス供給手段から供給される出力アドレスとを加算する加算手段と、前記加算手段により生成された加算アドレスとアドレス供給手段から供給された出力アドレスとの何れか一方を内蔵メモリのアドレスの少なくとも一部として選択するアドレス選択手段とを備え、前記アドレス選択手段は、前記加算アドレスと前記出力アドレスとの何れを選択するかを設定可能であるとともに、前記出力アドレスの値に関係なく前記出力アドレスを選択する動作と、前記出力アドレスのセグメント部がアプリケーションプログラム領域である場合に前記加算アドレスを出力し、当該セグメント部がアプリケーションプログラム領域以外である場合に前記出力アドレスを出力する動作とのいずれかの動作を設定可能であることを特徴としている。
【００２２】
本発明のＩＣカードは、前記メモリ管理手段は、ダウンロードするアプリケーションプログラムのサイズに基づいて前記内蔵メモリの格納アドレスを決定して、該格納アドレスに前記ダウンロードするアプリケーションプログラムを格納させ、前記メモリ管理手段を用いて、カード発行後にアプリケーションプログラムをダウンロードして前記内蔵メモリに追加する構成であってもよい。
【００２３】
本発明のＩＣカードは、前記メモリ管理手段が、前記ダウンロードするアプリケーションプログラムのサイズを受信し、前記受信したアプリケーションプログラムのサイズに基づいて前記格納アドレスを決定する構成であってもよい。
【００２４】
本発明のＩＣカードは、前記内蔵メモリは前記アプリケーションプログラムを格納するプログラム格納領域を有し、前記内蔵メモリの所定の基準アドレスと、前記プログラム格納領域に格納された複数のアプリケーションプログラムの先頭アドレスとの差分値を、実行するアプリケーションプログラム毎に設定し、前記各差分値に基づいて各アプリケーションプログラムを実行する構成であってもよい。
【発明の効果】
【００２５】
本発明によれば、ＩＣカード内でアプリケーションプログラムを実行する際に、それを実行するＣＰＵは、各アプリケーションプログラムが配置されている、各アプリケーションプログラム毎に異なるアドレスを考慮することなく実行することができる。さらに、本発明によれば、アプリケーションプログラム開発時には、そのプログラムがＩＣカードのメモリに配置されるアドレスを考慮することなく独立して開発することができる。また、本発明によれば、アプリケーションプログラムをＩＣカードのメモリに配置する際には、複雑なマッピング作業が不要である。
【発明を実施するための最良の形態】
【００２６】
本発明の実施の一形態を図１ないし図８に基づいて以下に説明する。本発明の実施の形態において、１チップマイクロコンピュータは、図２に示すＩＣカード１に搭載されている。同図は、ＩＣカードシステムを示すブロック図であり、このシステムはＩＣカード１、情報端末装置としての例えばパーソナルコンピュータ（以下、ＰＣと略称する）２、ＩＣカード１のリーダ・ライタ３から構成される。なお、リーダ・ライタ３は、独立したものとせず、ＰＣ２のＩＣカードスロットに内蔵されている構成であってもよい。
【００２７】
ＰＣ２は、ＩＣカード応用システムのＰＣ側プログラムを搭載しており、ＩＣカード１にアプリケーションプログラムコードをダウンロードしたり、ＩＣカード１に対してコマンドの送受信を行うようになっている。また、リーダ・ライタ３に対してコマンドの送受信を行うようになっている。
【００２８】
図３に示すように、ＩＣカード１に搭載された１チップマイクロコンピュータ１１は、ＣＰＵ（差分値設定手段、アドレス供給手段、メモリ管理手段）１２、内蔵メモリ１３、ベースアドレス加算制御回路１４、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter ：汎用非同期送受信回路）１５および周辺回路１６を備えている。
【００２９】
上記ＣＰＵ１２は、システムプログラムやアプリケーションプログラムを実行するものである。内蔵メモリ１３は、システムプログラムやアプリケーションプログラムを格納したり、ＣＰＵ１２の作業領域として使用され、不揮発性領域を含む。ベースアドレス加算制御回路１４は、後述のように、アドレスの制御を行うものである。ＵＡＲＴ１５はリーダ・ライタ３と通信を行うためのものである。周辺回路１６はタイマ等からなる。これら各ブロックは、ＣＰＵ１２が入出力するアドレス線（出力のみ）やデータ線、データ読出し・書込みやブロック活性化のための制御線などで接続されている。
【００３０】
上記のＣＰＵ１２、ベースアドレス加算制御回路１４および内蔵メモリ１３の関係を詳細に示すと図１に示すものとなる。
【００３１】
同図に示すように、ベースアドレス加算制御回路１４は、ベースレジスタ２１、加算器（加算手段）２２、制御レジスタ２３、制御回路２４およびセレクタ２５を備えている。上記ベースレジスタ２１および制御レジスタ２３はメモリマップドＩ／Ｏ方式のものとなっている。また、制御レジスタ２３、制御回路２４およびセレクタ２５はアドレス選択手段を構成している。
【００３２】
上記のベースレジスタ２１は、アプリケーションプログラムを内蔵メモリ１３に配置するときの先頭アドレスと所定の基準アドレスとの差分値を格納する。このベースレジスタ２１への書き込みは内蔵メモリ１３に格納されたシステムプログラムに基づいてＣＰＵ１２が行う。
【００３３】
加算器２２は、ＣＰＵ１２から出力されるＣＰＵ出力アドレスＡ1 とベースレジスタ２１から得られる差分アドレス、即ち差分値Ａ2 とを加算し、加算アドレスＡ3 を生成する。
【００３４】
セレクタ２５は、制御回路からの制御信号に基づいて、内蔵メモリ１３に出力する信号を選択する。
【００３５】
制御レジスタ２３は、内蔵メモリ１３の使用されるメモリ領域に応じて、内蔵メモリ１３に加算アドレスＡ3 または非加算アドレス（ＣＰＵ出力アドレスＡ1）が入力されるように選択制御を行う（選択制御オン）か、もしくはこの選択制御を行わずに、使用するメモリ領域がどのメモリ領域であっても常にＣＰＵ出力アドレスＡ1 が入力されるようにするかを選択し、その選択結果を制御回路２４に出力する。この制御レジスタ２３の制御はＣＰＵ１２が行う。
【００３６】
制御回路２４は、制御レジスタ２３の上記選択結果に基づき、内蔵メモリ１３に格納されているシステムプログラムといくつかのアプリケーションプログラムとのうちのシステムプログラムをＣＰＵ１２が実行するときに、ＣＰＵ出力アドレスＡ1 が内蔵メモリ１３のアドレス（実効アドレスＡ4 ) として出力され、ＣＰＵ１２がアプリケーションプログラムを実行するときに、加算アドレスＡ3が内蔵メモリ１３のアドレス（実効アドレスＡ4 ) として出力されるように、セレクタ２５を制御する。
【００３７】
この場合、制御回路２４は、ＣＰＵ出力アドレスＡ1 を入力しており、制御レジスタ２３の設定がセレクタ２５の選択制御オンであるとき、アドレス信号（ＣＰＵ出力アドレスＡ1 ）をデコードしてセレクタ２５への制御信号を作成する。
【００３８】
図４は、１チップマイクロコンピュータ１１の内蔵メモリ１３のマップである。内蔵メモリ１３はｎ個のセグメントから構成されている。
【００３９】
セグメント０は、システムプログラム領域３１とＣＰＵ１２に内蔵のレジスタ領域３２とに割り当てられている。システムプログラム領域３１は、ＲＯＭやフラッシュメモリなどの不揮発性メモリからなる。レジスタ領域３２は、ベースレジスタ２１および制御レジスタ２３を含み、これらに対してはＣＰＵ１２のメモリアクセス命令により、容易にアクセス可能となっている。
【００４０】
セグメントｎは、ＣＰＵ１２の作業領域３４であり、ＲＡＭに割り当てられている。
【００４１】
これらシステムプログラム領域３１、レジスタ領域３２および作業領域３４のアドレスについては、ベースレジスタ２１が保持する差分値Ａ2 を加算せずに内蔵メモリ１３に与えられる。
【００４２】
上記のセグメント０、ｎ以外のセグメント１〜（ｎ−１）は、複数のアプリケーションプログラム領域（プログラム格納領域）３３であり、不揮発性メモリやＲＡＭに割り当てられている。このアプリケーションプログラム領域３３のアドレスについては、ＣＰＵ出力アドレスＡ1 にベースレジスタ２１が保持する差分値Ａ2 を加算して内蔵メモリ１３に与えられる。
【００４３】
図５は、任意の１セグメントのアプリケーションプログラム領域３３内に複数のアプリケーションプログラムを格納したときのメモリマップである。ここでは、１セグメント６４ＫＢｙｔｅのアプリケーションプログラム領域内に２５６Ｂｙｔｅ毎に最大２５６種類のアプリケーションプログラムを格納している。
【００４４】
上記の構成において、１チップマイクロコンピュータ１１は、内蔵メモリ１３のアプリケーションプログラム領域３３に格納されたアプリケーションプログラムの１つを実行する場合、まず、例えば実行対象のアプリケーションプログラムが格納されたアプリケーションプログラム領域３３の先頭アドレスを基準アドレスとし、この基準アドレスとアプリケーションプログラム領域３３に配置されているアプリケーションプログラムの先頭アドレスとの差分値をベースレジスタ２１に格納する。この処理は、システムプログラム領域３１に格納されたシステムプログラムによって、即ちシステムプログラムに基づきＣＰＵ１２によって行われる。このとき、内蔵メモリ１３には、ＣＰＵ出力アドレスＡ1 が入力される。
【００４５】
次に、システムプログラムが内蔵メモリ１３のアプリケーションプログラムが格納されたアプリケーションプログラム領域３３の前記基準アドレスヘの分岐命令を実行すると、このとき以後、内蔵メモリ１３には加算アドレスＡ3 が実効アドレスＡ4 として入力される。
【００４６】
その後、アプリケーションプログラムが終了し、システムプログラムヘの分岐命令を実行すると、このとき以後、内蔵メモリ１３には再びＣＰＵ出力アドレスＡ1 がアドレスとして入力される。
【００４７】
また、内蔵メモリ１３に格納された別のアプリケーションプログラムを実行する場合には、ベースレジスタ２１にそのアプリケーションプログラムについての差分値Ａ2 を格納する。そして、処理を基準アドレスに分岐させると、そのアプリケーションプログラムが実行される。
【００４８】
このことは、上記差分値Ａ2 をベースレジスタ２１に格納することにより、異なるアプリケーションプログラムをこのプログラムが格納されたアプリケーションプログラム領域３３における実際の配置アドレスに依存せずに実行できることを示している。
【００４９】
図６には、ＣＰＵ出力アドレスＡ1 およびベースアドレス加算制御回路１４の構成をさらに詳細に示している。
【００５０】
同図に示すように、ＣＰＵ出力アドレスＡ1 は、ａ23〜ａ0 の２４Ｂｉｔから構成されている。このうちａ23〜ａ16の８Ｂｉｔは、セグメント部として割り当てられており、 ＣＰＵ１２がアクセス可能な連続したアドレス空間を６４ＫＢｙｔｅ単位で分割できるように構成されている。この８Ｂｉｔは、実効アドレスＡ4 の一部となり、制御回路２４にも入力される。アドレス上位ａ15〜ａ8 の８Ｂｉｔは、セレクタ２５と加算器２２に入力される。この８Ｂｉｔに、ベースレジスタ２１に設定された差分値Ａ2 を加算した値は、実効アドレスＡ4 の一部となる。アドレス下位ａ7 〜ａ0 の８Ｂｉｔは、そのまま実効アドレスＡ4 の一部となる。
【００５１】
本実施の形態では、ベースレジスタ２１を８Ｂｉｔ構成としており、ＣＰＵ１２のセグメント６４ＫＢｙｔｅ内において、アプリケーションプログラムを再配置可能な最小２５６バイト毎に、アドレスを分割できるようになっている。
【００５２】
例えば、セグメント部が０１Ｈ、アドレス上位が００Ｈ、ベースレジスタが００Ｈ、アドレス下位が００Ｈのとき、実効アドレスＡ4 は、０１００００Ｈとなる。また、ベースレジスタが０１Ｈのとき、実効アドレスＡ4 は、０１０１００Ｈとなる。
【００５３】
制御レジスタ２３は、１Ｂｉｔで構成されており、制御回路２４を動作させてセレクタ２５を制御する。
【００５４】
本実施の形態では、制御レジスタ２３に０をセットしたとき、制御回路２４はＣＰＵ出力アドレスＡ1 に関係なく０を出力し、セレクタ２５は常に０側を選択する。したがって、このときのアドレス上位ａ15〜ａ8 は、そのまま実効アドレスＡ4 の一部となる。
【００５５】
また、制御レジスタ２３に１をセットしたとき、制御回路２４は、ＣＰＵ出力アドレスＡ1 の８Ｂｉｔのセグメント部ａ23〜ａ16を判別し、セグメント部ａ23〜ａ16がシステムプログラム領域、内蔵メモリ１３内におけるＣＰＵ１２のレジスタ領域、または作業用のＲＡＭ領域を示していれば、０を出力する。一方、アプリケーションプログラム領域であれば１を出力する。
【００５６】
セレクタ２５は、制御回路２４の出力に応じ、その出力が０であればアドレス上位ａ15〜ａ8 （０側）を選択し、その出力が１であれば加算アドレスＡ3 （１側）を選択して、それぞれ実効アドレスＡ4 の一部とする。
【００５７】
次に、図６の構成においてアプリケーションプログラムを実行する手順を示す。なお、ここでのセグメントの値は０１Ｈとし、ベースレジスタ２１は８Ｂｉｔ構成とする。
【００５８】
まず、制御レジスタ２３には、図４に示した内蔵メモリ１３の各領域に対してアドレス（差分値Ａ2 ）の加算／非加算が機能するように、システムプログラムにより予め１がセットされる。
【００５９】
図５に示す例えばアプリケーションプログラムＡＰ1 を実行する場合、ＣＰＵ１２はシステムプログラムにおいて、ベースレジスタ２１に０１Ｈをセットする。
【００６０】
次に、システムプログラムにおいて、内蔵メモリ１３におけるアプリケーションプログラム領域３３の基準アドレス０１００００Ｈ番地への分岐命令（たとえば、ジャンプ命令やサブルーチンコール命令）を実行する。
【００６１】
上記の分岐命令を実行中、ＣＰＵ出力アドレスＡ1 がセグメント０１Ｈを示した時から、アプリケーションプログラム領域３３には、実効アドレスＡ4 として、ベースレジスタ２１の内容（０１Ｈ）とＣＰＵ出力アドレスＡ1 とを加算して得られた加算アドレスＡ3 が与えられる。従って、アプリケーションプログラムＡＰ1 が格納されている０１０１００Ｈ番地に処理が分岐することになる。
【００６２】
また、別のアドレスに格納されたアプリケーションプログラムを実行するには、システムプログラムにおいて、上記と同様に、ベースレジスタ２１にそのアプリケーションプログラムに応じた差分値Ａ2 を格納した後、基準アドレス０１００００Ｈ番地への分岐命令を実行すればよい。
【００６３】
そして、複数のアプリケーションプログラムを作成して、各アプリケーションプログラムをコード化するとき、各アプリケーションプログラムは、その配置アドレスを考慮することなく、全て基準アドレスから配置されるようにコード化しておけばよい。
【００６４】
次に、内蔵メモリ１３へのアプリケーションプログラムの格納処理とアプリケーションプログラムの実行処理の手順をそれぞれ図７と図８のフローチャートにより説明する。なお、両図において、左側はＰＣ２側の処理であり、右側は１チップマイクロコンピュータ１１側のシステムプログラムの処理である。また、ここでは、図２に示したリーダ・ライタ３がＰＣ２に内蔵されているものとする。
【００６５】
１チップマイクロコンピュータ１１にプログラムを格納する場合には、図７に示すように、ＰＣ２がアプリケーションプログラムＡＰn のサイズを送信し（Ｓ１）、１チップマイクロコンピュータ１１がそれを受信し、保存する（Ｓ１１）。
【００６６】
次に、１チップマイクロコンピュータ１１のシステムプログラムが、そのメモリ管理機能を用いて、アプリケーションプログラムＡＰn のアプリケーションプログラム領域３３における格納アドレスを決定する。この場合、格納アドレスは、例えばアプリケーションプログラムのサイズに基づいて決定される。
【００６７】
次に、ＰＣ２が１チップマイクロコンピュータ１１にアプリケーションプログラムＡＰn を送信し（Ｓ２）、１チップマイクロコンピュータ１１がこれを受信し、内蔵メモリ１３内のアプリケーションプログラム領域３３におけるＳ１２において決定したアドレスに、アプリケーションプログラムＡＰn を書き込む。
【００６８】
上記のようにして１チップマイクロコンピュータ１１の内蔵メモリ１３に格納されたアプリケーションプログラムＡＰn を実行する場合には、図８に示すように、ＰＣ２がアプリケーションプログラムＡＰn の実行指令を１チップマイクロコンピュータ１１へ送信する（Ｓ２１）。
【００６９】
上記の実行指令を受信すると、１チップマイクロコンピュータ１１のＣＰＵ１２はシステムプログラムに基づいて、制御レジスタ２３に１をセットする（Ｓ３１）。これにより、ベースレジスタ２１のアドレス加算、即ち加算アドレスＡ3が有効となる。
【００７０】
次に、ＣＰＵ１２は、実行するアプリケーションプログラムＡＰn が格納されているアドレスに応じた差分値Ａ2 をベースレジスタ２１にセットする（Ｓ３２）。
【００７１】
次に、ＣＰＵ１２がシステムプログラムに基づいて基準アドレスへの分岐命令を実行する（Ｓ３３）。これにより、実行するアプリケーションプログラムヘの分岐が完了し、そのアプリケーションプログラムが実行される。
【００７２】
なお、本発明は、１チップマイクロコンピュータに係る発明として表現することもできる。
【００７３】
本発明の１チップマイクロコンピュータは、メモリ空間内におけるアプリケーションプログラムの動的な配置を一括して管理するメモリ管理機能を備え、複数のアプリケーションプログラムを内蔵メモリのプログラム格納領域における任意のアドレスに格納するシステムプログラム（メモリ管理手段）を備えている構成としてもよい。
【００７４】
上記の構成によれば、メモリ管理手段は、アプリケーションプログラムを作成する端末側、例えばパーソナルコンピュータから転送されて来た複数のアプリケーションプログラムを内蔵メモリの任意の領域に任意のサイズで格納する。
【００７５】
このようにして複数のアプリケーションプログラムが内蔵メモリに書き込まれた場合であっても、本１チップマイクロコンピュータでは、各アプリケーションプログラムを容易に実行することができる。
【００７６】
また、アプリケーションプログラム作成時には、そのプログラムが配置される内蔵メモリ上のアドレスを考慮する必要がなく、各アプリケーションプログラムを独立かつ自由に開発することができる。
【００７７】
また、本発明の１チップマイクロコンピュータは、出力アドレスとベースレジスタの内容（差分値）を加算したアドレスへの分岐命令を実行する実行制御機能を備え、内蔵メモリのプログラム格納領域に複数のプログラムが格納されているときに、任意のプログラムを実行可能なシステムプログラムを搭載していることを特徴としている。
【００７８】
上記の構成によれば、システムプログラムにおいて、アプリケーションプログラムを実行する前に、ベースレジスタに、そのアプリケーションプログラムの先頭アドレスと基準アドレスとの差分値を格納し、分岐命令を実行する。
【００７９】
これにより、内蔵メモリに格納された複数のアプリケーションプログラムのうちの一つを選択して実行することが可能となる。
【００８０】
また、本１チップマイクロコンピュータにおいては、内蔵メモリがフラッシュメモリやＥＥＰＲＯＭなどの書き換え可能な不揮発性領域を含んでいる構成としてもよい。
【００８１】
上記構成によれば、システムプログラムに対し、必要な内容を書き換えたり追加したりすることが可能となる。
【００８２】
本発明の１チップマイクロコンピュータは、アプリケーションプログラム領域を有する内蔵メモリを備え、所定の基準アドレスと前記アプリケーションプログラム領域に格納された複数のアプリケーションプログラムの先頭アドレスとの差分値を、実行する各アプリケーションプログラム毎に設定し、各差分値に基づいて各アプリケーションプログラムを実行する構成であってもよい。
【００８３】
これにより、アプリケーションプログラム領域に格納された複数のアプリケーションプログラムの何れかを実行する場合には、そのアプリケーションプログラムの先頭アドレスと所定の基準アドレスとの差分値が設定され、この差分値に基づいて、アプリケーションプログラムが実行される。
【００８４】
したがって、アプリケーションプログラム領域の異なるアドレスに格納された任意のアプリケーションプログラムを容易に実行することができる。
【００８５】
即ち、１チップマイクロコンピュータ内でアプリケーションプログラムを実行する際に、それを実行するＣＰＵは、各アプリケーションプログラムが配置されている、各アプリケーションプログラム毎に異なるアドレスを考慮することなく実行することができる。
【００８６】
また、アプリケーションプログラム開発時には、そのプログラムが１チップマイクロコンピュータ上で配置されるアドレスを考慮することなく独立して開発することができる。
【００８７】
また、アプリケーションプログラムを１チップマイクロコンピュータ上に配置する際には、複雑なマッピング作業が不要である。
【００８８】
また、本発明の１チップマイクロコンピュータは、アプリケーションプログラム領域を有する内蔵メモリと、ベースレジスタと、所定の基準アドレスと前記アプリケーションプログラム領域に格納された複数のアプリケーションプログラムの先頭アドレスとの差分値を、実行する各アプリケーションプログラム毎にベースレジスタに設定する差分値設定手段と、前記基準アドレスおよびこれとは異なる出力アドレスを供給するアドレス供給手段と、ベースレジスタが保持する前記差分値とアドレス供給手段から供給される出力アドレスとを加算する加算手段と、前記加算手段により生成された加算アドレスとアドレス供給手段から供給された出力アドレスとの何れか一方を内蔵メモリのアドレスの少なくとも一部として選択するアドレス選択手段とを備えている構成としてもよい。
【００８９】
上記の構成によれば、プログラム格納領域に格納された複数のアプリケーションプログラムの何れかを実行する場合には、そのアプリケーションプログラムの先頭アドレスと所定の基準アドレスとの差分値が差分値設定手段によりベースレジスタに設定される。
【００９０】
また、アドレス供給手段は、基準アドレスおよびこれとは異なる出力アドレスを供給する。加算手段は、ベースレジスタが保持する差分値とアドレス供給手段から供給される出力アドレスとを加算する。アドレス選択手段は、加算手段により生成された加算アドレスとアドレス供給手段から供給された出力アドレスとの何れか一方を内蔵メモリのアドレスの少なくとも一部として選択する。
【００９１】
即ち、アドレス選択手段は、アプリケーションプログラムを実行する場合、加算アドレスを内蔵メモリのアドレスの少なくとも一部として選択し、アプリケーションプログラム以外の例えばシステムプログラムを実行する場合、出力アドレスを内蔵メモリのアドレスの少なくとも一部として選択する。
【００９２】
したがって、プログラム格納領域の異なるアドレスに格納された任意のアプリケーションプログラムを容易に実行することができる。
【００９３】
即ち、１チップマイクロコンピュータ内でアプリケーションプログラムを実行する際に、それを実行するＣＰＵは、各アプリケーションプログラムが配置されている、各アプリケーションプログラム毎に異なるアドレスを考慮することなく実行することができる。
【００９４】
また、アプリケーションプログラム開発時には、そのプログラムが１チップマイクロコンピュータ上で配置されるアドレスを考慮することなく独立して開発することができる。
【００９５】
また、アプリケーションプログラムを１チップマイクロコンピュータ上に配置する際には、複雑なマッピング作業が不要である。
【００９６】
上記の１チップマイクロコンピュータにおいて、前記プログラム格納領域は、複数のセグメントの領域からなり、一つのセグメント内に複数のアプリケーションプログラムが格納される構成としてもよい。
【００９７】
上記の構成によれば、内蔵メモリに格納可能なアプリケーションプログラムの数が例えばセグメント数に限定されることなく、セグメント数を超えて多数個格納可能である。また、例えば１セグメントの領域にこの領域の容量に比べて大きさの小さいアプリケーションプログラムが一つのみ格納されて、残りのメモリ領域が無駄になる事態を確実に防止することができる。
【００９８】
また、上記の１チップマイクロコンピュータは、メモリ空間内におけるアプリケーションプログラムの配置を管理し、複数のアプリケーションプログラムを内蔵メモリのプログラム格納領域における任意のアドレスに格納するメモリ管理手段を備えている構成としてもよい。
【００９９】
上記の構成によれば、メモリ管理手段は、アプリケーションプログラムを作成する端末側、例えばパーソナルコンピュータから転送されて来た複数のアプリケーションプログラムを内蔵メモリの任意の領域に任意のサイズで格納する。
【０１００】
このようして複数のアプリケーションプログラムが内蔵メモリに書き込まれた場合であっても、本１チップマイクロコンピュータでは、各アプリケーションプログラムを容易に実行することができる。
【０１０１】
また、アプリケーションプログラム作成時には、そのプログラムが配置される内蔵メモリ上のアドレスを考慮する必要がなく、各アプリケーションプログラムを独立かつ自由に開発することができる。
【０１０２】
また、上記の１チップマイクロコンピュータは、前記選択手段がその選択動作を制御するための制御レジスタを有し、この制御レジスタおよび前記ベースレジスタがメモリマップドＩ／Ｏ方式である構成としてもよい。
【０１０３】
上記の構成によれば、ベースレジスタや制御レジスタに対して値を書き込んだり読み出したりする場合、これらが配置されているアドレスに対してメモリアクセス命令を発行するのみでよい。したがって、これらレジスタの制御が容易である。
【０１０４】
また、本発明のＩＣカードは、上記の何れかの１チップマイクロコンピュータを内蔵している構成である。
【０１０５】
上記の構成によれば、複数のアプリケーションプログラムを１チップマイクロコンピュータの内蔵メモリ上に柔軟に構成可能なＩＣカードを実現することができる。
【産業上の利用可能性】
【０１０６】
本発明によれば、各アプリケーションプログラム毎に異なるアドレスを考慮することなく実行することができる。さらに、本発明によれば、そのプログラムがＩＣカードのメモリに配置されるアドレスを考慮することなく独立してアプリケーションプログラムを開発することができる。また、本発明によれば、アプリケーションプログラムをＩＣカードのメモリに配置する際に、複雑なマッピング作業が不要である。
【図面の簡単な説明】
【０１０７】
【図１】本発明の実施の一形態の１チップマイクロコンピュータを示すものであって、図３におけるベースアドレス加算制御回路の構成を詳細に示したブロック図である。
【図２】本発明の実施の一形態における１チップマイクロコンピュータを内蔵するＩＣカードを備えたＩＣカードシステムを示すブロック図である。
【図３】図２に示したＩＣカードの構成を示す概略のブロック図である。
【図４】図１に示した内蔵メモリのシステムプログラム領域、レジスタ領域、アプリケーションプログラム領域および作業領域を示すメモリマップである。
【図５】図４に示したアプリケーションプログラム領域の構成を示すメモリマップである。
【図６】図１に示した１チップマイクロコンピュータにおける、ＣＰＵ出力アドレスおよびベースアドレス加算制御回路の構成を詳細に示すブロック図である。
【図７】図１に示した内蔵メモリへのアプリケーションプログラムの格納処理を示すフローチャートである。
【図８】図１に示した内蔵メモリに格納されているアプリケーションプログラムの実行処理を示すフローチャートである。
【図９】従来のメモリ制御装置の構成を示すブロック図である。
【符号の説明】
【０１０８】
１    ＩＣカード
２    パーソナルコンピュータ
３    リーダ・ライタ
１１    １チップマイクロコンピュータ
１２    ＣＰＵ（差分値設定手段、アドレス供給手段、メモリ管理手段）
１３    内蔵メモリ
１４    ベースアドレス加算制御回路
１５    ＵＡＲＴ
１６    周辺回路
２１    ベースレジスタ
２２    加算器（加算手段）
２３    制御レジスタ（アドレス選択手段）
２４    制御回路（アドレス選択手段）
２５    セレクタ（アドレス選択手段）
３１    システムプログラム領域
３２    レジスタ領域
３３    アプリケーションプログラム領域（プログラム格納領域）
３４    作業領域
Ａ1   ＣＰＵ出力アドレス
Ａ2   差分値
Ａ3   加算アドレス
Ａ4   実効アドレス
【図１】
0004705600.tif 000002
【図２】
0004705600.tif 000003
【図３】
0004705600.tif 000004
【図４】
0004705600.tif 000005
【図５】
0004705600.tif 000006
【図６】
0004705600.tif 000007
【図７】
0004705600.tif 000008
【図８】
0004705600.tif 000009
【図９】
0004705600.tif 000010