(57)【要約】【課題】本発明は、メモリ診断方法、マイクロコンピュータシステム及びプログラムに関し、診断処理にかかる時間の増加を抑え、且つ、メモリ内の領域全域を診断可能とすることを目的とする。【解決手段】ＣＰＵとメモリを備えたマイクロコンピュータシステムにおいて、外部からメモリ診断プログラムをダウンロードし、メモリを２以上の領域に分けてメモリ診断プログラムと作業領域を１つの領域に格納し、メモリ診断プログラムの実行中に動的に作業領域を切り替えながら他の領域を診断することを繰り返すことによりメモリの全領域を診断するように構成する。【選択図】図２
2007257271.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ及びメモリを備えたマイクロコンピュータシステムにおけるメモリ診断方法であって、
メモリ診断プログラムを該メモリ内の第１の領域に格納する第１のステップと、
該第１の領域に格納されたメモリ診断プログラムを実行して該第１の領域とは異なる該メモリ内の第２の領域を診断する第２のステップと、
該第１の領域に格納されたメモリ診断プログラムとスタック領域を該第２の領域にコピーする第３のステップと、
該第２の領域にコピーしたメモリ診断プログラムを実行して該第１の領域を診断する第４のステップと、
該第２の領域にコピーしたスタック領域を該第１の領域にコピーする第５のステップとを含むことを特徴とする、メモリ診断方法。
【請求項２】
該第３のステップの後、且つ、該第４のステップの前に、該メモリ内でメモリ診断プログラムが格納されている方の領域又は診断される方の領域を示すフラグを管理するステップを更に備え、
該フラグに基づいて該第１〜第５のステップを行うことを特徴とする、請求項１記載のメモリ診断方法。
【請求項３】
該第３のステップは、該メモリ診断プログラムとスタック領域のコピーを、該ＣＰＵが内蔵する汎用レジスタを使用して一定領域長単位で行うことを特徴とする、請求項１又は２記載のメモリ診断方法。
【請求項４】
ＣＰＵとメモリを備えたマイクロコンピュータシステムであって、
外部からメモリ診断プログラムをダウンロードし、該メモリを２以上の領域に分けて該メモリ診断プログラムと作業領域を１つの領域に格納し、該メモリ診断プログラムの実行中に動的に作業領域を切り替えながら他の領域を診断することを繰り返すことにより該メモリの全領域を診断することを特徴とする、マイクロコンピュータシステム。
【請求項５】
コンピュータに、マイクロコンピュータシステムのメモリを診断させるプログラムであって、
該メモリの第１の領域に格納されたメモリ診断プログラムを実行して該第１の領域とは異なる該メモリ内の第２の領域を診断させる第１の手順と、
該第１の領域に格納されたメモリ診断プログラムとスタック領域を該第２の領域にコピーさせる第２の手順と、
該第２の領域にコピーしたメモリ診断プログラムを実行して該第１の領域を診断させる第３の手順と、
該第２の領域にコピーしたスタック領域を該第１の領域にコピーさせる第４の手順とをコンピュータに実行させることを特徴とする、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ診断方法、マイクロコンピュータシステム及びプログラムに係り、特にマイクロコンピュータシステム内のメモリの診断を行うメモリ診断方法、そのようなメモリ診断方法を採用するマイクロコンピュータシステム、及びコンピュータにそのようなメモリ診断方法を実行させるプログラムに関する。本発明は、そのようなプログラムを格納したコンピュータ読み取り可能な記憶媒体にも関する。
【背景技術】
【０００２】
ＲＯＭとＲＡＭ、若しくはこれらに加えて書き換え可能な不揮発性メモリを有するマイクロコンピュータシステムは、様々な用途で使用されている。このようなマイクロコンピュータシステムの出荷に際しては、マイクロコンピュータシステムが正常に動作するか否かを確認する必要がある。特にマイクロコンピュータシステムを搭載したＩＣカード等の場合、非常に高い信頼性が要求されるので、マイクロコンピュータシステムを構成する各モジュールに対する詳細な検査や診断が必須である。
【０００３】
メモリ診断も必須の診断の１つであり、メモリに試験用のデータが正常に読み書きできるか否かや、メモリ保護機能及びエラー訂正機能等の関連する機能が正常に動作するか否か等が確認される。
【０００４】
診断方法の一例としては、予めマイクロコンピュータシステムのＲＯＭの一部に診断プログラムを格納しておき、外部からの指示に応答して診断プログラムを起動して診断処理を実行して診断結果を得る第１の方法が知られている。しかし、この第１の方法では、ＲＯＭの一部が診断プログラムに占有されてしまうため、オペレーティングシステム（ＯＳ）やアプリケーションプログラムを格納できるＲＯＭ内のメモリ領域が、診断プログラムの分だけ少なくなってしまう。メモリ容量が限られたマイクロコンピュータシステムにおいては、診断専用の診断プログラムでＲＯＭ内の使用可能なメモリ領域を圧迫することは避けたいところである。又、ＣＰＵが暴走してＲＯＭに格納されている診断プログラムを実行してしまった場合、誤って不揮発性メモリ内の情報を削除してしまう可能性もある。
【０００５】
上記の問題を解決するために、マイクロコンピュータシステムの外部から診断プログラムをダウンロードしてマイクロコンピュータシステム内の不揮発性メモリに格納して、不揮発性メモリの診断を行う第２の方法が知られている。この第２の方法によれば、診断プログラムを不揮発性メモリにダウンロードして実行し、診断プログラムが不要となれば不揮発性メモリから削除することで、ＲＯＭ内の使用可能なメモリ領域を圧迫することがなく、マイクロコンピュータシステムの出荷後にＲＯＭ内に診断プログラムが残ることもない。
【０００６】
診断プログラムをダウンロードする不揮発性メモリ内のメモリ領域と診断するメモリ領域を分け、診断プログラムのダウンロードと診断処理を変えながら複数回繰り返す第３の方法も知られている。
【０００７】
更に、ダウンロードした診断プログラムを不揮発性メモリではなくＲＡＭに格納することで、上記第２及び第３の方法において不揮発性メモリから診断プログラムを削除する手間を省き、不揮発性メモリを診断できるようにした第４の方法が知られている。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、上記第１〜第４の方法は、いずれも診断対象としているのは主に不揮発性メモリであり、ＲＡＭ等の揮発性メモリの全領域への診断処理にそのまま適用できるものではない。これは、ＲＡＭには診断プログラム自体や診断プログラム呼び出し元の処理等の、種々のプログラムが動作するために必要なデータが格納されるからである。その代表的なものがスタックであり、プログラムが使用する変数や関数への引数、関数からの復帰先アドレス等の情報が格納されており、これらの情報はプログラムが動作するのに必要不可欠な情報である。
【０００９】
このため、従来の診断方法では、作業領域として使用されるＲＡＭの一部は、例外として診断対象外となっていた。作業領域として使用できたことを以てＲＡＭ等の揮発性メモリの正常性が保証されたとみなすことも考えられるが、ＲＡＭ内の全領域（即ち、全ビット）を書き換えての確認を行うわけではないため、特定のビット不良等は検出不可能である。
【００１０】
又、マイクロコンピュータシステムと外部との通信は比較的低速であるため、診断プログラムのダウンロードを複数回繰り返す第３の方法では、診断処理に時間がかかってしまい、マイクロコンピュータシステムのコストが増加してしまう。
【００１１】
そこで、本発明は、診断処理にかかる時間の増加を抑え、且つ、メモリ内の全領域を診断可能なメモリ診断方法、マイクロコンピュータシステム及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記の課題は、ＣＰＵ及びメモリを備えたマイクロコンピュータシステムにおけるメモリ診断方法であって、メモリ診断プログラムを該メモリ内の第１の領域に格納する第１のステップと、該第１の領域に格納されたメモリ診断プログラムを実行して該第１の領域とは異なる該メモリ内の第２の領域を診断する第２のステップと、該第１の領域に格納されたメモリ診断プログラムとスタック領域を該第２の領域にコピーする第３のステップと、該第２の領域にコピーしたメモリ診断プログラムを実行して該第１の領域を診断する第４のステップと、該第２の領域にコピーしたスタック領域を該第１の領域にコピーする第５のステップとを含むことを特徴とするメモリ診断方法によって達成できる。
【００１３】
上記の課題は、ＣＰＵとメモリを備えたマイクロコンピュータシステムであって、外部からメモリ診断プログラムをダウンロードし、該メモリを２以上の領域に分けて該メモリ診断プログラムと作業領域を１つの領域に格納し、該メモリ診断プログラムの実行中に動的に作業領域を切り替えながら他の領域を診断することを繰り返すことにより該メモリの全領域を診断することを特徴とするマイクロコンピュータシステムによっても達成できる。
【００１４】
上記の課題は、ＣＰＵ及びメモリを備えたマイクロコンピュータシステムであって、該メモリの第１の領域に格納されたメモリ診断プログラムを実行して該第１の領域とは異なる該メモリ内の第２の領域を診断する第１の手段と、該第１の領域に格納されたメモリ診断プログラムとスタック領域を該第２の領域にコピーする第２の手段と、該第２の領域にコピーしたメモリ診断プログラムを実行して該第１の領域を診断する第３の手段と、該第２の領域にコピーしたスタック領域を該第１の領域にコピーする第４の手段とを供えたことを特徴とするマイクロコンピュータシステムによっても達成できる。
【００１５】
上記の課題は、上記いずれかのマイクロコンピュータシステムを搭載したＩＣカードによっても達成できる。
【００１６】
上記の課題は、コンピュータに、マイクロコンピュータシステムのメモリを診断させるプログラムであって、該メモリの第１の領域に格納されたメモリ診断プログラムを実行して該第１の領域とは異なる該メモリ内の第２の領域を診断させる第１の手順と、該第１の領域に格納されたメモリ診断プログラムとスタック領域を該第２の領域にコピーさせる第２の手順と、該第２の領域にコピーしたメモリ診断プログラムを実行して該第１の領域を診断させる第３の手順と、該第２の領域にコピーしたスタック領域を該第１の領域にコピーさせる第４の手順とをコンピュータに実行させることを特徴とするプログラムによっても達成できる。
【発明の効果】
【００１７】
本発明によれば、診断処理にかかる時間の増加を抑え、且つ、メモリ内の領域全域を診断可能なメモリ診断方法、マイクロコンピュータシステム及びプログラムを実現することができる。
【発明を実施するための最良の形態】
【００１８】
本発明では、マイクロコンピュータシステムが有するＲＡＭ等のメモリ内のプログラム領域に格納されたメモリ診断プログラムを実行し、このメモリのプログラム領域及び作業領域を含めたメモリの全領域を対象として、メモリ診断処理を行う。
【００１９】
診断対象となるメモリの全領域は２以上の部分領域に分け、その１つの部分領域に診断プログラムと作業領域であるスタック領域を配置して他の部分領域に対するメモリ診断処理を行う。このメモリ診断処理の後、メモリ診断プログラムと作業領域を診断が完了した部分領域にコピーし、コピー後のメモリ診断プログラムに制御を渡し、コピー後のメモリ診断プログラムを実行することにより診断されていない部分領域に対するメモリ診断処理を行う。このようなコピー処理は、マイクロコンピュータシステムが有するＣＰＵに内蔵された汎用レジスタを使用し、新たなスタック領域を使用することなく行えるため、メモリの全領域の診断が可能となる。このような動作を行うことにより、メモリ診断プログラムと作業領域が配置された領域を例外とすることなく、メモリの全領域を診断することができる。
【００２０】
つまり、メモリ診断処理は、メモリの第１の領域に格納されたメモリ診断プログラムを実行してメモリの第２の領域に対するメモリ診断処理を行うステップと、第１の領域に格納されているスタック領域及びメモリ診断プログラムを第２の領域にコピーするステップと、第２の領域にコピーしたメモリ診断プログラムを実行して第１の領域に対するメモリ診断処理を行うステップと、第２の領域にコピーしたスタック領域を第１の領域にコピーするステップとを含む。
【００２１】
診断プログラムは外部からダウンロードすることができ、メモリを２つの領域に分けた場合であればメモリ診断プログラムと作業領域をその一方の領域に配置し、メモリ診断プログラムの実行中に動的に作業領域を切り替えながら他方の領域を診断することを繰り返すことにより、メモリの全領域を例外なく診断することができる。
【００２２】
診断プログラムは、メモリ内でコピーされて実行されることでメモリの全領域が診断されるので、外部からマイクロコンピュータシステム内のメモリへのメモリ診断プログラムのダウンロードは１回だけ実施すれば良い。このため、診断処理に要する時間を短縮することができる。
【００２３】
以下に、本発明になるメモリ診断方法、マイクロコンピュータシステム及びプログラムの各実施例を、図面と共に説明する。
【実施例】
【００２４】
図１は、本発明になるマイクロコンピュータシステムの一実施例を示すブロック図である。マイクロコンピュータシステムの本実施例は、本発明になるメモリ診断方法の一実施例及び本発明になるプログラム（メモリ診断プログラム）の一実施例を採用する。本実施例では、一例として本発明がＩＣカードに適用されているため、図１ではＩＣカードがリーダ／ライタ装置に接続された状態を示す。リーダ／ライタ装置は、例えば汎用コンピュータシステムからなる試験装置であっても良い。
【００２５】
図１において、マイクロコンピュータシステム１は、インタフェース（Ｉ／Ｆ）１１、ＣＰＵ１２、ＲＯＭ１３及びＲＡＭ１４を有する。マイクロコンピュータシステム１は、ＩＣカード２１に搭載されている。ＩＣカード２１は、リーダ／ライタ装置３１に接続される。ＲＯＭ１３は、不揮発性メモリとして設けられているが、書き換え可能（プログラマブル）な不揮発性メモリであっても良い。ＲＡＭ１４は、揮発性メモリとして設けられている。又、マイクロコンピュータシステム１は、ＲＯＭ１３及びＲＡＭ１４に加え、書き換え可能な不揮発性メモリ（図示せず）等が更に設けられた構成であっても良い。
【００２６】
ＲＯＭ１３は、ＣＰＵ１２が実行するプログラムやデータを格納する。ＲＯＭ１３に格納されているプログラムには、オペレーシングシステム（ＯＳ）や、メモリ診断プログラム１４０をＲＡＭ１４内の領域へダウンロードして実行するダウンロード・実行部１３３等も含まれる。ＲＡＭ１４は、ＣＰＵ１２の作業領域として用いられる。ＣＰＵ１２は、リーダ／ライタ装置３１からのコマンドをインタフェース１１を介して受け取り実行する。ＣＰＵ１２がリーダ／ライタ装置３１から受け取るコマンドには、メモリ診断コマンドも含まれる。例えば、ＩＣカード２１の製造メーカは、ＩＣカード２１を出荷する前に、リーダ／ライタ装置３１からＣＰＵ１２に対して所定のメモリ診断コマンドを発行することによりメモリ診断処理を行うことができる。メモリ診断コマンドを受け取ったＣＰＵ１２は、メモリ診断プログラム１４０を実行してＲＡＭ１４を診断し、診断結果をリーダ／ライタ装置３１へ報告する。
【００２７】
本実施例では、メモリ診断プログラム１４０はマイクロコンピュータシステム１の外部（例えば、リーダ／ライタ装置３１）からＲＡＭ１４内に書き込まれて実行され、実行後には消去される。メモリ診断プログラム１４０は、ＲＯＭ１３には書き込まれない。ただし、メモリ診断プログラム１４０は、診断対象となるＲＡＭ１４の領域に対する書き込み処理と読み出し処理を含むため、メモリ診断プログラム１４０自体を書き換えてしまう可能性がある。又、ＲＡＭ１４は、プログラムが使用する変数や関数への引数、関数からの復帰先アドレス等が格納されているスタック領域を有する。そこで、本実施例では以下に説明する如き手順でメモリ診断処理を行う。
【００２８】
マイクロコンピュータシステム１の外部からＲＡＭ１４にダウンロードされるメモリ診断プログラム１４０は、磁気記録媒体、光記録媒体、光磁気記録媒体、半導体記憶装置等の適切なコンピュータ読み取り可能な記憶媒体に格納されていても良い。
【００２９】
尚、図１では、ＲＯＭ１３に格納されたプログラムが実行されることにより実現される機能を機能ブロックとして示すと共に、ＲＡＭ１４にダウンロードされたメモリ診断プログラム１４０が実行されることにより実現される機能を機能部ブロックとして示す。ＲＯＭ１３は、ＣＰＵ１２による情報のやり取りを制御する通信部１３１、ＣＰＵ１２によるコマンドの実行を制御するコマンド実行部１３２及びＲＡＭ１４へのメモリ診断プログラム１４０のダウンロード及びその実行を制御するダウンロード・実行部１３３を有する。ＲＡＭ１４は、メモリ診断プログラム１４０の実行と診断状態を管理する実行制御・状態管理部１４１、診断状態を保持する診断状態保持部１４２、後述するコピー処理を制御するコピー処理部１４３及びＲＡＭ１４内の領域に対して情報のリード／ライトを行い診断処理を行う診断処理部１４４を有する。
【００３０】
図２は、本発明になるメモリ診断方法の一実施例を説明するフローチャートであり、図３は、メモリ診断処理時のＲＡＭ１４の内容遷移を説明する図である。ここでは、説明の便宜上、ＲＡＭ１４の全領域が２つの部分領域、即ち、第１の領域と第２の領域に分割されるものとするが、本発明はＲＡＭ１４の領域を２分割する場合に限定されず、２以上の領域に分割する場合にも同様に適用可能である。
【００３１】
図２において、ステップＳ１は、例えばＯＳに含まれるダウンロード・実行部１３３の制御下で、マイクロコンピュータシステム１の外部から受け取ったメモリ診断プログラムをＲＡＭ１４の第１の領域に図３に示すようにダウンロードする。図３は、メモリ診断プログラムのダウンロード方法を説明する図である。
【００３２】
ステップＳ２は、ダウンロード・実行部１３３の制御下で、ＲＡＭ１４の第１の領域にダウンロードしたメモリ診断プログラムを、図４に示すように関数呼び出しの形で実行して、ＲＡＭ１４の第２の領域に対するメモリ診断処理を開始する。図４は、メモリ診断プログラムの起動方法を説明する図である。従って、ＲＯＭ１３に格納されたプログラムから、ＲＡＭ１４の第１の領域にダウンロードされたメモリ診断プログラムへ制御が渡される。
【００３３】
ステップＳ３は、実行制御・状態管理部１４１が診断状態保持部１４２を参照することで行われる。ステップＳ３は、メモリ診断プログラム１４０が格納されているＲＡＭ１４の領域を示す状態フラグが「１」に設定されているか否かを判定する。ＲＡＭ１４の第１の領域に診断プログラムが格納されると、状態フラグは「１」に設定される。従って、ＲＡＭ１４は、ここでは図５に示す「第２の領域の診断実施時」の状態にある。図５は、メモリ診断処理時のＲＡＭ１４の内容遷移を説明する図である。図５に示すように、ＲＡＭ１４が「第２の領域の診断実施時」の状態にあると、第１の領域にはスタック領域、状態フラグ及びメモリ診断プログラム１４０の処理コード／データが格納されている。この状態では、状態フラグは「１」に設定されているので、ステップＳ３の判定結果はＹＥＳとなり、処理はステップＳ４へ進む。
【００３４】
図５では、スタックが格納される領域をスタック領域として示し、診断される領域（即ち、診断の対象となる領域）は診断領域として図示してある。
【００３５】
ステップＳ４は、実行制御・状態管理部１４１の制御下で診断処理部１４４により行われる。ステップＳ４は、ＲＡＭ１４の第１の領域にダウンロードしたメモリ診断プログラム１４０を実行して、ＲＡＭ１４の第２の領域に対するメモリ診断処理を実施する。
【００３６】
ステップＳ５は、実行制御・状態管理部１４１の制御下でコピー処理部１４３により尾行われる。ステップＳ５は、ＲＡＭ１４の第１の領域に格納されているスタック領域、状態フラグ及びメモリ診断プログラム１４０の処理コード／データをＲＡＭ１４の第２の領域にコピーする。これにより、ＲＡＭ１４は図５に示す「第１の領域の診断実施時」の状態となる。
【００３７】
ステップＳ６は、実行制御・状態管理部１４１によりスタックをＲＡＭ１４の第２の領域に切り換え、ステップＳ７は、実行制御・状態管理部１４１の制御下で診断状態保持部１４２を更新することで、メモリ診断プログラム１４０が格納されているＲＡＭ１４の領域が第２の領域であることを示すように状態フラグを「０」に変更する。又、ステップＳ８は、実行制御・状態管理部１４１によりＲＡＭ１４の第２の領域の先頭にジャンプすることで、図６に示すようにコピー先の第２の領域に格納されたメモリ診断プログラム１４０へ制御を渡し、処理はステップＳ３へ戻る。図６は、第２の領域のメモリ診断プログラム１４０へ制御を渡す方法を説明する図である。尚、スタック使用量を診断開始時と同じにする等すれば、あたかもＯＳから直接第２の領域のメモリ診断プログラム１４０が関数呼び出しの形で実行されるようにすることができる。コピー元の第１の領域内の情報は不要となり、データの上書きが可能な状態になるので、第１の領域が診断可能になる。
【００３８】
ステップＳ８の後に行われるステップＳ３では、状態フラグが「０」であり判定結果がＮＯであるため、処理はステップＳ１１へ進む。
【００３９】
ステップＳ１１は、実行制御・状態管理部１４１の制御下で診断処理部１４４により行われる。ステップＳ１１は、ダウンロード・実行部１３３の制御下で、ＲＡＭ１４の第２の領域にコピーしたメモリ診断プログラム１４０を実行して、ＲＡＭ１４の第１の領域に対するメモリ診断処理を実施する。
【００４０】
ステップＳ１２は、実行制御・状態管理部１４１の制御下でコピー処理部１４３により行われる。ステップＳ１２は、ＲＡＭ１４の第２の領域に格納されているスタック領域をＲＡＭ１４の第１の領域にコピーする。これにより、ＲＡＭ１４は図５に示す「診断実施時」の状態となる。
【００４１】
ステップＳ１３は、実行制御・状態管理部１４１によりスタックをＲＡＭ１４の第１の領域に切り換え、図７に示すように関数呼び出しから復帰する形でＲＯＭ１３に格納された呼び出し元のプログラムへ制御を渡し（即ち、戻し）、ＲＡＭ１４に対するメモリ診断処理は終了する。図７は、メモリ診断プログラム１４０の終了処理を説明する図である。この後、ＲＡＭ１４の第１の及び第２の領域内の情報は不要となり、データの上書きが可能な状態になる。
【００４２】
図８は、ＲＡＭ１４のアドレス割り当てとコピー方法を説明する図である。又、図９は、図２に示すステップＳ５で用いるコピー方法をより詳細に説明するフローチャートであり、図１０は、図２に示すステップＳ６で用いるスタックの切替方法をより詳細に説明するフローチャートである。
【００４３】
図８に示すメモリマップの例では、ＲＡＭ１４に対して「41000〜42FFF」なるアドレスが割り当てられている。ここで、アドレス値はいずれも１６進数表示であり、以下の説明ではアドレス値は全て１６進数表示であるものとする。
【００４４】
ここでは説明の便宜上、ＲＡＭ１４のアドレス「41000〜41FFF」を第１の領域、アドレス「42000〜42FFF」を第２の領域とする。第１の領域には、スタック領域が配置されている。スタック領域には、関数の引数、関数の復帰アドレス、呼び出し元関数のフレームポインタ、局所変数等の領域が配置されている。
【００４５】
図９に示すように、ＲＡＭ１４の第１の領域と第２の領域間のコピー処理が開始さると、ステップＳ２１でコピーデータ長が「０」であるか否かを判定することで、コピー処理の終了判定を行う。コピーデータ長が「０」でステップＳ２１の判定結果がＹＥＳであると、コピー処理の終了であると判断されるので、処理は図２に示すメモリ診断処理へ戻りステップＳ６へ進む。他方、ステップＳ２１の判定結果がＮＯであると、処理はステップＳ２２へ進む。
【００４６】
ステップＳ２２は、第１の領域と第２の領域間のコピーを行う際に、新たなスタック領域の使用を回避するために、ＣＰＵ１２に内蔵されている汎用レジスタを使用して１バイトずつ行う。第１の領域を第２の領域にコピーする際には、コピー元の先頭の１バイトＲ０（アドレス：41000）の内容を汎用レジスタにＲ３で示すようにコピーした後、その内容をコピー先の領域の先頭の１バイトＲ１（アドレス：42000）に格納する。
【００４７】
次に、ステップＳ２３は、コピー元及びコピー先のアドレスを１バイト加算することでコピー元のアドレスを「41000」→「41001」、コピー先のアドレスを「42000」→「42001」と夫々インクリメントする。又、ステップＳ２４は、コピーデータ長を１バイト減算し（1000→FFF）、処理はステップＳ２１へ戻る。従って、上記ステップＳ２２〜Ｓ２４の処理は、コピーデータ長が０になるまで繰り返される。
【００４８】
図９に示すコピー処理が終了すると、図１０に示すスタック切替処理が開始される。図１０において、ステップＳ３１は、コピー元のシステムスタックポインタ（ＳＳＰ：System Stack Pointer）の値にオフセット値（領域長:1000）を加算し、ステップＳ３２は、フレームポインタにオフセット値を加算することで、ＳＳＰを切り替える。ステップＳ３２の後、処理は図２に示すメモリ診断処理へ戻りステップＳ７へ進む。
【００４９】
第２の領域を第１の領域へコピーする場合のコピー処理（図２のステップＳ１２）は図９と同じ方法を用いることができる。又、第２の領域を第２の領域へコピーする場合のスタック切替処理（図２のステップＳ１３）は、基本的には図１０と同じ方法を用いることができるが、ＳＳＰの切り替えの際にはＳＳＰの値に負のオフセット値（領域長：−1000）を加算、即ち、ＳＳＰの値からオフセット値（領域長:1000）を減算する。
【００５０】
メモリ診断処理の終了後、メモリ診断プログラム１４０ＲＡＭ１４から削除されるため、ＩＣカード２１が使用される際に誤ってメモリ診断プログラム１４０が実行されることはなく、メモリ診断プログラム１４０が不正利用されることもない。
【００５１】
上記実施例では、メモリ診断プログラム１４０が格納されているＲＡＭ１４の領域（プログラム領域）を示す状態フラグを用いたが、これとは逆に、ＲＡＭ１４内の診断される領域（診断領域又は診断対象領域）を示す状態フラグを用いても良いことは言うまでもない。
【００５２】
又、上記実施例では、マイクロコンピュータシステムがＩＣカードに搭載された場合について説明したが、本発明はＩＣカードに限定されるものではない。
【００５３】
尚、本発明は、以下に付記する発明をも包含するものである。
（付記１）  ＣＰＵ及びメモリを備えたマイクロコンピュータシステムにおけるメモリ診断方法であって、
メモリ診断プログラムを該メモリ内の第１の領域に格納する第１のステップと、
該第１の領域に格納されたメモリ診断プログラムを実行して該第１の領域とは異なる該メモリ内の第２の領域を診断する第２のステップと、
該第１の領域に格納されたメモリ診断プログラムとスタック領域を該第２の領域にコピーする第３のステップと、
該第２の領域にコピーしたメモリ診断プログラムを実行して該第１の領域を診断する第４のステップと、
該第２の領域にコピーしたスタック領域を該第１の領域にコピーする第５のステップとを含むことを特徴とする、メモリ診断方法。
（付記２）  該第１のステップは、所定のプログラムの制御下で該メモリ診断プログラムを該第１の領域に格納し、
該第２のステップは、該所定のプログラムから該メモリ診断プログラムへ制御を渡されて該メモリ診断プログラムを実行し、
該第５のステップの後、制御を該所定のプログラムへ渡すステップを更に含むことを特徴とする、付記１記載のメモリ診断方法。
（付記３）  該メモリは揮発性であり、該所定のプログラムは該マイクロコンピュータシステムが備える不揮発性メモリに格納されていることを特徴とする、付記２記載のメモリ診断方法。
（付記４）  該第３のステップの後、且つ、該第４のステップの前に、該メモリ内でメモリ診断プログラムが格納されている方の領域又は診断される方の領域を示すフラグを管理するステップを更に備え、
該フラグに基づいて該第１〜第５のステップを行うことを特徴とする、付記１〜３のいずれか１項記載のメモリ診断方法。
（付記５）  該第３のステップは、該メモリ診断プログラムとスタック領域のコピーを、該ＣＰＵが内蔵する汎用レジスタを使用して一定領域長単位で行うことを特徴とする、付記１〜４のいずれか１項記載のメモリ診断方法。
（付記６）  該第１のステップは、該マイクロプロセッサ外部から受け取ったメモリ診断プログラムを該第１の領域に格納することを特徴とする、付記１〜５のいずれか１項記載のメモリ診断方法。
（付記７）  ＣＰＵとメモリを備えたマイクロコンピュータシステムであって、
外部からメモリ診断プログラムをダウンロードし、該メモリを２以上の領域に分けて該メモリ診断プログラムと作業領域を１つの領域に格納し、該メモリ診断プログラムの実行中に動的に作業領域を切り替えながら他の領域を診断することを繰り返すことにより該メモリの全領域を診断することを特徴とする、マイクロコンピュータシステム。
（付記８）  該メモリ上の作業領域の切り替えを該メモリ診断プログラム自体により実行し、該メモリ診断プログラムの格納場所を、該メモリ診断プログラムがそのコピーを作り該コピーに制御を渡すことにより変えていくことを特徴とする、付記７記載のマイクロコンピュータシステム。
（付記９）  ＣＰＵ及びメモリを備えたマイクロコンピュータシステムであって、
該メモリの第１の領域に格納されたメモリ診断プログラムを実行して該第１の領域とは異なる該メモリ内の第２の領域を診断する第１の手段と、
該第１の領域に格納されたメモリ診断プログラムとスタック領域を該第２の領域にコピーする第２の手段と、
該第２の領域にコピーしたメモリ診断プログラムを実行して該第１の領域を診断する第３の手段と、
該第２の領域にコピーしたスタック領域を該第１の領域にコピーする第４の手段とを供えたことを特徴とする、マイクロコンピュータシステム。
（付記１０）  該メモリ診断プログラムは所定のプログラムの制御下で該第１の領域に格納されており、
該第１の手段は、該所定のプログラムから該メモリ診断プログラムへ制御を渡されて該メモリ診断プログラムを実行し、
該第４の手段が該第２の領域にコピーしたスタック領域を該第１の領域にコピーした後、制御を該所定のプログラムへ渡す手段を更に備えたことを特徴とする、付記９記載のマイクロコンピュータシステム。
（付記１１）  不揮発性メモリを更に備え、
該メモリは揮発性であり、
該所定のプログラムは該不揮発性メモリに格納されていることを特徴とする、付記１０記載のマイクロコンピュータシステム。
（付記１２）  該第２の手段は、該メモリ診断プログラムとスタック領域のコピーを、該ＣＰＵが内蔵する汎用レジスタを使用して一定領域長単位で行うことを特徴とする、付記９〜１１のいずれか１項記載のマイクロコンピュータシステム。
（付記１３）  付記７〜１２のいずれか１項記載のマイクロコンピュータシステムを搭載したＩＣカード。
（付記１４）  コンピュータに、マイクロコンピュータシステムのメモリを診断させるプログラムであって、
該メモリの第１の領域に格納されたメモリ診断プログラムを実行して該第１の領域とは異なる該メモリ内の第２の領域を診断させる第１の手順と、
該第１の領域に格納されたメモリ診断プログラムとスタック領域を該第２の領域にコピーさせる第２の手順と、
該第２の領域にコピーしたメモリ診断プログラムを実行して該第１の領域を診断させる第３の手順と、
該第２の領域にコピーしたスタック領域を該第１の領域にコピーさせる第４の手順とをコンピュータに実行させることを特徴とする、プログラム。
（付記１５）  該第２の手順は、該メモリ診断プログラムとスタック領域のコピーを、該コンピュータが内蔵する汎用レジスタを使用して一定領域長単位で該コンピュータに行わせることを特徴とする、付記１４記載のプログラム。
【００５４】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【図面の簡単な説明】
【００５５】
【図１】本発明になるマイクロコンピュータシステムの一実施例を示すブロック図である。
【図２】本発明になるメモリ診断方法の一実施例を説明するフローチャートである。
【図３】メモリ診断プログラムのダウンロード方法を説明する図である。
【図４】メモリ診断プログラムの起動方法を説明する図である。
【図５】メモリ診断処理時のＲＡＭの内容遷移を説明する図である。
【図６】第２の領域のメモリ診断プログラムへ制御を渡す方法を説明する図である。
【図７】メモリ診断プログラムの終了処理を説明する図である。
【図８】ＲＡＭのアドレス割り当てとコピー方法を説明する図である。
【図９】コピー方法を説明するフローチャートである。
【図１０】スタックの切替方法を説明するフローチャートである。
【符号の説明】
【００５６】
１      マイクロコンピュータシステム
１１      インタフェース
１２      ＣＰＵ
１３      ＲＯＭ
１４      ＲＡＭ
２１      ＩＣカード
３１      リーダ／ライタ
【図１】
2007257271.tif 000003
【図２】
2007257271.tif 000004
【図３】
2007257271.tif 000005
【図４】
2007257271.tif 000006
【図５】
2007257271.tif 000007
【図６】
2007257271.tif 000008
【図７】
2007257271.tif 000009
【図８】
2007257271.tif 000010
【図９】
2007257271.tif 000011
【図１０】
2007257271.tif 000012