(57)【要約】【課題】  演算処理装置が誤動作した場合等に、外付け回路を設けることなく低コストで、不揮発性メモリへの誤書き込み及び誤消去を防止する技術を提供する。【解決手段】  不揮発性メモリと、不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、不揮発性メモリ及び揮発性メモリを制御する演算処理装置と、を備える不揮発性メモリシステムであって、初期化の際に、不揮発性メモリに対する操作命令を格納するための揮発性メモリの所定のアドレスに、操作命令に代えて無効命令を書き込む第１無効命令書込手段と、不揮発性メモリの操作開始前に、無効命令を格納した揮発性メモリの所定のアドレスに操作命令を書き込み、操作命令に基づいて不揮発性メモリを操作する制御手段と、不揮発性メモリの操作実行後に、揮発性メモリの所定のアドレスに、無効命令を書き込む第２無効命令書込手段と、を備えることを特徴とする。【選択図】  図１１
2006139341.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、前記不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリを制御する演算処理装置と、を備える不揮発性メモリシステムであって、
初期化の際に、前記不揮発性メモリに対する前記操作命令を格納するための前記揮発性メモリの所定のアドレスに、前記操作命令に代えて無効命令を書き込む第１無効命令書込手段と、
前記不揮発性メモリの操作開始前に、前記無効命令を格納した前記揮発性メモリの前記所定のアドレスに前記操作命令を書き込み、前記操作命令に基づいて前記不揮発性メモリを操作する制御手段と、
前記不揮発性メモリの操作実行後に、前記揮発性メモリの前記所定のアドレスに、無効命令を書き込む第２無効命令書込手段と、を備えることを特徴とする不揮発性メモリシステム。
【請求項２】
前記プログラムが、前記不揮発性メモリへの書込命令を含み、前記第１無効命令書込手段及び第２無効命令書込手段が、前記書込命令を格納する前記揮発性メモリの所定のアドレスに前記無効命令を書き込むことを特徴とする請求項１に記載の不揮発性メモリシステム。
【請求項３】
前記プログラムが、前記不揮発性メモリへの消去命令を含み、前記第１無効命令書込手段及び第２無効命令書込手段が、前記消去命令を格納する前記揮発性メモリの所定のアドレスに前記無効命令を書き込むことを特徴とする請求項１または２に記載の不揮発性メモリシステム。
【請求項４】
前記無効命令が、前記演算処理装置をリセットする命令であることを特徴とする請求項１乃至３の何れか１項に記載の不揮発性メモリシステム。
【請求項５】
前記無効命令が、前記演算処理装置における無操作命令であることを特徴とする請求項１乃至３の何れか１項に記載の不揮発性メモリシステム。
【請求項６】
前記無効命令が、前記演算処理装置における未定義命令であることを特徴とする請求項１乃至３の何れか１項に記載の不揮発性メモリシステム。
【請求項７】
請求項１乃至６に記載の不揮発性メモリシステムにおける各手段の機能をコンピュータ上で実行するプログラムステップを含むことを特徴とする不揮発性メモリ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリシステム、特に、不揮発性メモリと、前記不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリを制御する演算処理装置と、を備える不揮発性メモリシステムに関する。
【背景技術】
【０００２】
プラスチック製のカードにＣＰＵ、不揮発性メモリ、及び、揮発性メモリ等を備えたＩＣチップ（半導体集積回路）を実装したＩＣカードは、現在広く利用されている磁気カードに比べ、より大量のデータが記憶可能であることや、データの暗号化が可能でセキュリティに優れていること等から普及し始めている。また、近年、ＩＣカードに搭載される不揮発性メモリとして、従来のＥＥＰＲＯＭより大量のデータを格納可能なフラッシュ型ＥＥＰＲＯＭ（フラッシュメモリ）を実装したＩＣカードが実用化されている。
【０００３】
従来のフラッシュメモリは、一般的に、データの格納領域がブロック単位で構成されており、一度書き込みを実施してそのデータを書き換える場合、データを書き換えるブロックにおいて格納されたデータの消去を実施してから再書き込みを行う必要がある。更に、フラッシュメモリへのデータの書き込み及び消去は、単一のフラッシュメモリに格納されたプログラムに従って、直接当該フラッシュメモリ自身にデータの書き込み及びデータの消去を実施することができない。このため、一般的に、予めＲＡＭ等の揮発性メモリに、フラッシュメモリへのデータの書き込み命令を含むプログラム及びデータの消去命令を含むプログラムを転送しておき、フラッシュメモリのデータ書き込み或いはデータ消去を行う際に、前記揮発性メモリに格納した書き込み命令或いは消去命令に基づいてフラッシュメモリに対する書き込み及び消去を実行している。
【０００４】
従来の一般的に用いられるフラッシュメモリへのデータの書き込み及び消去に係る技術の一例を図面に基づいて説明する。
【０００５】
図１は、一般的なＩＣカードシステムの構成を示している。ＩＣカード６は、少なくとも１つのＣＰＵ１、不揮発性メモリ２、揮発性メモリ３及び通信インターフェース４から構成されており、通信インターフェース４を介して端末装置５とコマンドの交換を行うことによって動作する。
【０００６】
ＣＰＵ１は、不揮発性メモリ２に格納された制御プログラムに従って、ＩＣカード６の各構成要素を制御する。例えば、不揮発性メモリ２へデータを書き込むコマンドを、端末装置５から通信インターフェース４を介してＩＣカード６が受信した場合、ＣＰＵ１は、不揮発性メモリ２に書き込まれた制御プログラムに従って、不揮発性メモリ２への書き込み動作を実行し、書き込み動作が終了すると、通信インターフェース４を介してコマンドの実行結果を端末装置５に送信する。
【０００７】
不揮発性メモリ２は、図２（ａ）に示すように、ブロック１〜ブロックＮで構成されている。不揮発性メモリ２は、ＣＰＵ１がアクセス可能なアドレス空間として配置されており、ブロック１には予めＩＣカード６の制御プログラムが格納されている。制御プログラムは、ＣＰＵ１が実行可能な命令群で構成されており、不揮発性メモリ２へデータを書き込むための書き込みプログラム、及び不揮発性メモリ２のデータを消去するための消去プログラムが含まれる。ここでは、更に、制御プログラムにはＩＣカード６の初期化動作を行うための初期化プログラムが含まれる。ブロック２〜Ｎは、ＩＣカード６のサービスを利用するためのアプリケーションプログラムや、各種データが格納される。
【０００８】
揮発性メモリ３は、図２（ｂ）に示すように、ＣＰＵ１がアクセス可能なアドレス空間として配置されており、不揮発性メモリ２への書き込み命令を含む書き込みサブプログラムを格納する領域、不揮発性メモリ２の消去命令を含む消去サブプログラムを格納する領域、及び、その他の作業領域等から構成される。
【０００９】
次に、ＣＰＵ１による制御プログラムの動作について図３乃至図７を基に説明する。
【００１０】
図３は、不揮発性メモリ２に格納されている制御プログラムの実行開始時における初期化プログラムの動作を示すフローチャートである。ＣＰＵ１は、制御プログラムの実行開始後（ステップＳ００１）、不揮発性メモリ２の初期化プログラムを実行し、不揮発性メモリ２への書き込みサブプログラムを揮発性メモリ３へ転送し（ステップＳ００２）、不揮発性メモリ２の消去サブプログラムを揮発性メモリ３へ転送する（ステップＳ００３）。
【００１１】
次に、不揮発性メモリ２へのデータ書き込みについて、図４及び図５のフローチャートを基に説明する。
【００１２】
図４は、不揮発性メモリ２に格納されている制御プログラムに含まれる不揮発性メモリ２への書き込みプログラムの動作を示している。ＣＰＵ１は、不揮発性メモリ２上の書き込みプログラムに従って、先ず、書き込み元のデータが格納された領域の先頭アドレスを変数ＳＲＣにセットし（ステップＳ１０１）、書き込み先の不揮発性メモリ２上のアドレスを変数ＤＳＴにセットし（ステップＳ１０２）、書き込みデータ数Ｎを変数ＣＮＴにセットする（ステップＳ１０３）。次に、ＣＰＵ１は、図５に示す揮発性メモリ３上の書き込みサブプログラムを呼び出す（ステップＳ１０４）。ＣＰＵ１は、揮発性メモリ３に格納されたプログラムを実行後、不揮発性メモリ２の書き込みプログラムを終了する（ステップＳ１０５）。
【００１３】
図５は、図３におけるステップＳ００２で揮発性メモリ３に転送された、不揮発性メモリ２への書き込みサブプログラムの動作を示している。先ず、ＣＰＵ１は、書き込みデータ数ＣＮＴを確認する（ステップＳ２０１）。ステップＳ２０１において書き込みデータ数ＣＮＴが０以外の場合に、アドレスＳＲＣが示す書き込み元のデータの格納領域から書き込みデータを取得する（ステップＳ２０２）。続いて、不揮発性メモリ２の書き込み先アドレスＤＳＴに対して書き込み命令を実行し、データの書き込みを開始する（ステップＳ２０３）。データの書き込み完了を確認すると（ステップＳ２０４でＹｅｓ分岐）、ＣＰＵ１は、次のデータの書き込み準備のために、アドレスＳＲＣ及びＤＳＴの値を次のアドレスの値に更新する。ここでは、例えば、アドレスＳＲＣ及びＤＳＴの値を共に１増加させる（ステップＳ２０５）。更に、書き込みデータ数ＣＮＴを１減少させて（ステップＳ２０６）、ステップＳ２０１に遷移して以後の処理を継続する。ＣＰＵ１は、ステップＳ２０１において、書き込みデータ数ＣＮＴが０となり、全てのデータの書き込みが終了したと判定した場合に、書き込みサブプログラムを終了する（ステップＳ２０７）。
【００１４】
不揮発性メモリ２のデータ消去について、図６及び図７のフローチャートを基に説明する。図６は、不揮発性メモリ２に格納されている制御プログラムに含まれる消去プログラムの動作を示している。ＣＰＵ１は、不揮発性メモリ２上の消去プログラムに従って、先ず、不揮発性メモリ２上の消去先のアドレスを変数ＤＳＴに設定する（ステップＳ３０１）。次に、ＣＰＵ１は、図７に示す揮発性メモリ３上の消去サブプログラムを呼び出す（ステップＳ３０２）。ＣＰＵ１は、揮発性メモリ３に格納されたプログラムを実行後、不揮発性メモリ２の消去プログラムを終了する（ステップＳ３０３）。
【００１５】
図７は、図３におけるステップＳ００３で予め揮発性メモリ３に転送された、不揮発性メモリ２の消去サブプログラムの動作を示している。ＣＰＵ１は、不揮発性メモリ２の消去先のアドレスＤＳＴに対して、データ消去命令を実行しデータの消去を開始する（ステップＳ４０１）。続いて、データの消去完了を確認すると（ステップＳ４０２でＹｅｓ分岐）、ＣＰＵ１は、消去サブプログラムを終了する（ステップＳ４０３）。
【００１６】
尚、ＩＣカードは、個人情報等が不揮発性メモリへ書き込まれて利用されるという性格上、特に、ＩＣカードのＣＰＵが何らかの原因で暴走したような場合に、ＩＣカードに搭載される不揮発性メモリへのデータの誤書き込みやデータの誤消失を防止する技術が望まれている。
【００１７】
しかしながら、上記従来技術では、何らかの要因でＣＰＵが誤動作し、書き込みサブプログラム及び消去サブプログラムが格納された揮発性メモリのアドレスに誤って分岐した場合、不揮発性メモリにある正規の書き込みプログラム及び消去プログラムの正常な手続きが実施されないため、意図しないフラッシュメモリへのデータ書き込みや消去動作が発生し、最悪の場合、ＩＣカードの故障へ至ってしまう虞がある。
【００１８】
このような従来技術に対し、不揮発性メモリへの誤書き込みを防止する技術として、例えば、不揮発性メモリと、該不揮発性メモリに対する書き込み及び読み出しを制御する手段と、電源電圧を監視する手段とを備え、該不揮発性メモリへの書き込み時に、該電源電圧を監視する手段が電源電圧の低下を検出したときに書き込みを禁止するメモリ装置がある（例えば、特許文献１参照）。このメモリ装置は、外付け回路を設けることなく不揮発性メモリへのデータの誤書き込みを防止できる。また、該書き込み禁止に応じて書き込みが失敗したことを記憶する手段と、前記不揮発性メモリへの書き込み終了後に、該記憶手段の内容を読み出す手段とを備えており、不揮発性メモリへの書き込みが正常に終了したか否かを確認できる。
【００１９】
また、プログラム処理の暴走に伴う不揮発性メモリのデータ誤書き換えを防止する技術として、例えば、１チップマイクロコンピュータを初期化する際に、ＲＡＭの特定番地に特定データを予め格納し、揮発特性を有するＲＡＭの特定番地の内容が初期化時点の内容と同一であることを確認してから、フラッシュメモリのデータの書き込み動作に移行するデータ保護装置がある（例えば、特許文献２参照）。このデータ保護装置は、１チップマイクロコンピュータのプログラム処理が暴走した時、ＲＡＭの特定番地の内容が初期化時点で意図的に作成した内容とは異なってしまう為、プログラム処理の暴走に伴い書き込み用のサブルーチンプログラム命令が誤って実行されても、フラッシュメモリの誤書き込みを防止できる。
【特許文献１】特開平８−２２４２２号公報
【特許文献２】特開２０００−１１２８２６号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
しかしながら、特許文献１のメモリ装置は、電源電圧を監視し、電源電圧の低下を検出したときのみ不揮発性メモリへの書き込みを禁止するので、電源電圧が正常なときにＣＰＵが暴走した場合には、不揮発性メモリへの誤書き込みを防止することができない。また、特許文献２のデータ保護装置は、初期化時点におけるＲＡＭの内容を記憶する手段が必要であることから、このデータ保護装置を実現するためには外付け回路を設けることが必要となり、低コストで実現することは難しい。
【００２１】
本発明は、上記問題点に鑑みてなされたものであり、ＣＰＵ等の演算処理装置が誤動作し、書き込み命令または消去命令が格納された揮発性メモリの所定のアドレスに分岐した場合等であっても、外付け回路を設けることなく低コストで、不揮発性メモリへの誤書き込み及び誤消去を防止する技術を提供することを目的としている。
【課題を解決するための手段】
【００２２】
上記目的を達成するための本発明に係る不揮発性メモリシステムは、不揮発性メモリと、前記不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリを制御する演算処理装置と、を備える不揮発性メモリシステムであって、初期化の際に、前記不揮発性メモリに対する前記操作命令を格納するための前記揮発性メモリの所定のアドレスに、前記操作命令に代えて無効命令を書き込む第１無効命令書込手段と、前記不揮発性メモリの操作開始前に、前記無効命令を格納した前記揮発性メモリの前記所定のアドレスに前記操作命令を書き込み、前記操作命令に基づいて前記不揮発性メモリを操作する制御手段と、前記不揮発性メモリの操作実行後に、前記揮発性メモリの前記所定のアドレスに、無効命令を書き込む第２無効命令書込手段と、を備えることを特徴とする。
【００２３】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリを操作する命令を含むプログラムが格納される揮発性メモリのアドレスへ不正に分岐した場合でも、操作命令が無効命令に置き換えて格納されているため、無効命令が実行されることとなる。このため、不揮発性メモリへの操作は実行されず、不揮発性メモリの誤操作を防止することができる。
【００２４】
上記本発明に係る不揮発性メモリシステムは、更に、前記プログラムが、前記不揮発性メモリへの書込命令を含み、前記第１無効命令書込手段及び第２無効命令書込手段が、前記書込命令を格納する前記揮発性メモリの所定のアドレスに前記無効命令を書き込むことを特徴とする。
【００２５】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリへの書き込み命令が格納される揮発性メモリのアドレスへ不正に分岐した場合でも、揮発性メモリの前記アドレスには不揮発性メモリへの書き込み命令ではなく無効命令が格納されているため、不揮発性メモリへの書き込みは実行されず、不揮発性メモリへの誤書き込みを防止することができる。
【００２６】
上記何れかの特徴の本発明に係る不揮発性メモリシステムは、更に、前記プログラムが、前記不揮発性メモリへの消去命令を含み、前記第１無効命令書込手段及び第２無効命令書込手段が、前記消去命令を格納する前記揮発性メモリの所定のアドレスに前記無効命令を書き込むことを特徴とする。
【００２７】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリの消去命令が格納される揮発性メモリのアドレスへ不正に分岐した場合でも、揮発性メモリの前記アドレスには不揮発性メモリの消去命令ではなく無効命令が格納されているため、不揮発性メモリの消去は実行されず、不揮発性メモリの誤消去を防止することができる。
【００２８】
また、上記何れかの特徴の本発明に係る不揮発性メモリシステムは、前記無効命令が、前記演算処理装置をリセットする命令であることを特徴とする。
【００２９】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリの操作命令が格納された揮発性メモリのアドレスへ不正に分岐した場合に、揮発性メモリの前記アドレスには、不揮発性メモリの操作命令ではなく演算処理装置のリセット命令が格納されているため、このリセット命令が実行されることとなる。従って、不揮発性メモリの操作は実行されず、演算処理装置がリセットされるため、不揮発性メモリの誤動作を防止することができる。
【００３０】
更に、上記何れかの特徴の本発明に係る不揮発性メモリシステムは、前記無効命令が、前記演算処理装置における無操作命令であることを特徴とする。
【００３１】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリの操作命令が格納された揮発性メモリのアドレスへ不正に分岐した場合に、揮発性メモリの前記アドレスには、不揮発性メモリの操作命令ではなく演算処理装置の無操作命令が格納されているため、不揮発性メモリの操作は実行されない。これによって、不揮発性メモリの誤動作を防止することができる。
【００３２】
更に、上記何れかの特徴の本発明に係る他の不揮発性メモリシステムは、前記無効命令が、前記演算処理装置における未定義命令であることを特徴とする。
【００３３】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリの操作命令が格納された揮発性メモリのアドレスへ不正に分岐した場合に、揮発性メモリの前記アドレスには、不揮発性メモリの操作命令ではなく演算処理装置の未定義命令が格納されているため、不揮発性メモリの操作は実行されない。そして、演算処理装置の未定義命令実行エラーが検出されることとなり、不揮発性メモリの誤動作を防止することができる。
【００３４】
また、本発明に係る不揮発性メモリ制御プログラムは、何れかの特徴の本発明に係る不揮発性メモリシステムにおける各手段の機能をコンピュータ上で実行するプログラムステップを含むことを特徴とする。
【００３５】
本発明に係る不揮発性メモリ制御プログラムによれば、本発明に係る不揮発性メモリシステムにおける全ての上記作用効果を奏することができ、外付け回路を設けることなく低コストで、不揮発性メモリの誤動作を防止することができる。
【発明を実施するための最良の形態】
【００３６】
次に、本発明に係る不揮発性メモリシステム（以下、適宜「本発明システム」と称す。）の一実施形態につき、図面に基づいて説明する。
【００３７】
本実施形態の不揮発性メモリシステムは、不揮発性メモリと、前記不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリを制御する演算処理装置とを備えるＩＣカードシステムに適用され、演算処理装置の一例としてのＣＰＵによってＩＣカードシステム上で実行されるプログラムとして構成される。
【００３８】
本実施形態におけるＩＣカードシステムは、図１に示す従来技術に係るＩＣカードシステムの一般的なハードウェア構成と同じハードウェア構成を持つ。図１に示すように、ＩＣカード６は、ＣＰＵ１、不揮発性メモリ２、揮発性メモリ３及び通信インターフェース４から構成されており、通信インターフェース４を介して、端末装置５とコマンドの交換を行うことによって動作する。
【００３９】
ＣＰＵ１は、不揮発性メモリ２に格納された制御プログラムに従って、ＩＣカード６の各構成要素を制御する。ここで、本実施形態では、不揮発性メモリ２の内容を書き換える操作命令は、書き込み命令及び消去命令である。そして、不揮発性メモリ２の内容を書き換えるコマンドを、端末装置５から通信インターフェース４を介してＩＣカード６が受信した場合、ＣＰＵ１は、不揮発性メモリ２に書き込まれた制御プログラムに従って、不揮発性メモリ２の内容を書き換えるための操作、即ち、書き込み命令及び消去命令の少なくとも何れか一方を実行し、これらの操作が終了すると、前記コマンドの実行結果を通信インターフェース４を介して端末装置５に送信する。
【００４０】
不揮発性メモリ２は、図２（ａ）に示すように、ブロック１〜ブロックＮで構成されている。不揮発性メモリ２は、ＣＰＵ１がアクセス可能なアドレス空間として配置されており、ブロック１には予めＩＣカード６の制御プログラムが格納されている。制御プログラムは、ＣＰＵ１が実行可能な命令群で構成されており、不揮発性メモリ２へデータを書き込むための書き込みプログラム、及び不揮発性メモリ２のデータを消去するための消去プログラムが含まれる。本実施形態では、更に、制御プログラムには、ＩＣカード６の初期化動作を行うための初期化プログラムが含まれる。ブロック２〜Ｎは、ＩＣカード６のサービスを利用するためのアプリケーションプログラムや、各種データが格納される。
【００４１】
揮発性メモリ３は、図２（ｂ）に示すように、ＣＰＵ１がアクセス可能なアドレス空間として配置されており、不揮発性メモリ２への書き込み命令を含む書き込みサブプログラムを格納する領域、不揮発性メモリ２の消去命令を含む消去サブプログラムを格納する領域、及び、その他の作業領域等から構成される。これらのサブプログラムは、予め不揮発性メモリ２に格納されており、不揮発性メモリ２に格納された制御プログラムの実行開始時に、初期化プログラムにおいて、不揮発性メモリ２から揮発性メモリ３の所定の領域へ転送して格納される。
【００４２】
次に、ＣＰＵ１による制御プログラムの動作について図８乃至図１６を基に説明する。
【００４３】
図８は、不揮発性メモリ２に格納されている制御プログラムの実行開始時における初期化プログラムの動作を示すフローチャートであり、不揮発性メモリ２に格納されている書き込みサブプログラム及び消去サブプログラムを揮発性メモリ３へ転送する時の動作を示している。
【００４４】
ＣＰＵ１は、不揮発性メモリ２の制御プログラムの実行開始後（ステップＳ５０１）、先ず、不揮発性メモリ２の初期化プログラムを実行し、不揮発性メモリ２に格納されている不揮発性メモリ２への書き込みサブプログラムを揮発性メモリ３の所定の領域へ転送して格納する（ステップＳ５０２）。このとき、不揮発性メモリ２への書き込み命令が格納されるべき揮発性メモリ３上のアドレスには、書き込み命令を書き込まずに、無効命令を書き込む。書き込む無効命令として、ここではＣＰＵ１のソフトウェアリセット命令を書き込む。次に、不揮発性メモリ２に格納されている不揮発性メモリ２の消去サブプログラムを揮発性メモリ３の所定の領域へ転送して格納する（ステップＳ５０３）。このとき、不揮発性メモリ２の消去命令が格納されるべき揮発性メモリ３上のアドレスには、消去命令を書き込まずに、無効命令を書き込む。書き込む無効命令として、ここではＣＰＵ１のソフトウェアリセット命令を書き込む。
【００４５】
ここで、図９は、ステップＳ５０２において揮発性メモリ３へ転送され格納された、書き込みサブプログラムの配置を示している。この書き込みサブプログラムは、不揮発性メモリ２に格納されている書き込みプログラムから呼び出し可能なサブルーチンとして配置される。この時点で、不揮発性メモリ２への書き込み命令を格納すべき揮発性メモリ３のアドレスには、無効命令としてＣＰＵ１のソフトウェアリセット命令が配置されている。
【００４６】
図１０は、ステップＳ５０３において揮発性メモリ３へ転送され格納された、不揮発性メモリ２の消去サブプログラムの配置を示している。消去サブプログラムは、不揮発性メモリ２に格納されている消去プログラムから呼び出し可能なサブルーチンとして配置される。この時点で、不揮発性メモリ２の消去命令を格納すべき揮発性メモリ３のアドレスには、無効命令としてＣＰＵ１のソフトウェアリセット命令が配置されている。
【００４７】
不揮発性メモリ２へのデータ書き込みについて、図１１及び図１２のフローチャートを基に説明する。
【００４８】
図１１は、不揮発性メモリ２に格納されている制御プログラムに含まれる書き込みプログラムの動作を示している。ＣＰＵ１は、不揮発性メモリ２上の書き込みプログラムに従って、先ず、書き込み元のデータが格納された領域の先頭アドレスを変数ＳＲＣにセットする（ステップＳ６０１）。次に、書き込み先の不揮発性メモリ２上のアドレスを変数ＤＳＴにセットし（ステップＳ６０２）、書き込みデータ数Ｎを変数ＣＮＴにセットする（ステップＳ６０３）。
【００４９】
続いて、ＣＰＵ１は、揮発性メモリ３上の書き込み命令を格納すべきアドレスに既に書き込まれている無効命令としてのＣＰＵ１のソフトウェアリセット命令を、正規の書き込み命令に置き換える（ステップＳ６０４）。ここで、図１５は、ステップＳ６０４において命令の置き換えを行った後の、揮発性メモリ３上の書き込みサブプログラムの配置を図示している。この時点で、揮発性メモリ３の書き込み命令を格納すべきアドレスには、正規の書き込み命令が配置されている。命令の置き換え後、ＣＰＵ１は、図１２に示す揮発性メモリ３上の書き込みサブプログラムを呼び出し（ステップＳ６０５）、揮発性メモリ３に格納された書き込みサブプログラムを実行する。ＣＰＵ１は、書き込みサブプログラムの実行終了後、揮発性メモリ３に書き込まれている正規の書き込み命令を、無効命令としてのＣＰＵ１のソフトウェアリセット命令に置き換え（ステップＳ６０６）、書き込みプログラムを終了する（ステップＳ６０７）。
【００５０】
図１２は、ステップＳ５０２で予め揮発性メモリ３に転送された、書き込みサブプログラムの動作を示している。ＣＰＵ１は、先ず、書き込みデータ数ＣＮＴを確認する（ステップＳ７０１）。ステップＳ７０１において書き込みデータ数ＣＮＴが０以外の場合、アドレスＳＲＣが示す書き込み元のデータの格納領域から書き込みデータを取得する（ステップＳ７０２）。続いて、不揮発性メモリ２の書き込み先アドレスＤＳＴに対して書き込み命令を実行し、データの書き込みを開始する（ステップＳ７０３）。データの書き込み完了を確認すると（ステップＳ７０４でＹｅｓ分岐）、ＣＰＵ１は、次のデータの書き込み準備のために、アドレスＳＲＣ及びアドレスＤＳＴの値を次のアドレスの値に更新する。本実施形態では、アドレスＳＲＣ及びアドレスＤＳＴの値を共に１増加させる（ステップＳ７０５）。更に、書き込みデータ数ＣＮＴを１減少させて（ステップＳ７０６）、ステップＳ７０１に遷移して以後の処理を継続する。ＣＰＵ１は、ステップＳ７０１において、書き込みデータ数ＣＮＴが０となり、全ての書き込みが終了したと判定した場合に、書き込みサブプログラムを終了する（ステップＳ７０７）。
【００５１】
次に、何らかの要因でＣＰＵ１が誤動作し、書き込みサブプログラムが格納された領域を含む揮発性メモリ３上の領域に、誤ってプログラムが分岐した場合について説明する。
【００５２】
この場合は、不揮発性メモリ２上の書き込みプログラムが正しく実行されず、図１１に示す書き込みプログラムのステップＳ６０４における命令の置き換えが実行されずに、揮発性メモリ３上の何れかの領域に分岐することとなる。このときの揮発性メモリ３上の書き込みサブプログラムの構成は、図９に示す構成であり、書き込み命令を格納すべき揮発性メモリ３のアドレスには、無効命令としてのＣＰＵ１のソフトウェアリセット命令が配置された状態となる。従って、図１２に示すフローチャートにおいて、ＣＰＵ１の暴走によって揮発性メモリ３へプログラムが分岐した場合には、ステップＳ７０３の書き込み命令は実行されず、実際には、ステップＳ７０３’の無効命令が実行される。ここでは、無効命令としてＣＰＵ１のソフトウェアリセット命令が書き込まれているので、リセットが発生し、不揮発性メモリ２への書き込みは実行されない。これによって、不揮発性メモリ２への誤書き込みを防止することができる。
【００５３】
不揮発性メモリ２のデータ消去について、図１３及び図１４のフローチャートを基に説明する。図１３は、不揮発性メモリ２に格納されている制御プログラムに含まれる消去プログラムの動作を示している。ＣＰＵ１は、不揮発性メモリ２上の消去プログラムに従って、先ず、不揮発性メモリ２上の消去先のアドレスを変数ＤＳＴにセットする（ステップＳ８０１）。
【００５４】
続いて、ＣＰＵ１は、揮発性メモリ３上の消去命令を格納すべきアドレスに既に書き込まれている無効命令としてのＣＰＵ１のソフトウェアリセット命令を、正規の消去命令に置き換える（ステップＳ８０２）。ここで、図１６は、ステップＳ８０２において命令の置き換えを行った後の、揮発性メモリ３上の消去サブプログラムの配置を示している。この時点で、揮発性メモリ３の消去命令を格納すべきアドレスには、正規の消去命令が配置されている。命令の置き換え後、ＣＰＵ１は、図１４に示す揮発性メモリ３上の消去サブプログラムを呼び出し（ステップＳ８０３）、揮発性メモリ３に格納された消去サブプログラムを実行する。ＣＰＵ１は、消去サブプログラムの実行終了後、揮発性メモリ３に書き込まれている正規の消去命令を、無効命令としてのＣＰＵ１のソフトウェアリセット命令に置き換え（ステップＳ８０４）、消去プログラムを終了する（ステップＳ８０５）。
【００５５】
図１４は、ステップＳ５０３で予め揮発性メモリ３に転送された、消去サブプログラムの動作を示している。ＣＰＵ１は、不揮発性メモリ２上の消去先のアドレスＤＳＴに対して、消去命令を実行しデータの消去を開始する（ステップＳ９０１）。続いて、データの消去完了を確認すると（ステップＳ９０２でＹｅｓ分岐）、ＣＰＵ１は、消去サブプログラムを終了する（ステップＳ９０３）。
【００５６】
次に、何らかの要因でＣＰＵ１が誤動作し、消去サブプログラムが格納された領域を含む揮発性メモリ３上の領域に、誤ってプログラムが分岐した場合について説明する。
【００５７】
この場合は、図１３に示す消去プログラムのステップＳ８０２における命令の置き換えが実行されずに、揮発性メモリ３上の何れかの領域に分岐することとなる。このときの揮発性メモリ３上の消去サブプログラムの構成は、図１０に示す構成であり、消去命令を格納すべき揮発性メモリ３のアドレスには、無効命令としてのＣＰＵ１のソフトウェアリセット命令が配置された状態となる。従って、図１４に示すフローチャートにおいて、ＣＰＵ１の暴走によって揮発性メモリ３へプログラムが分岐した場合には、ステップＳ９０１の消去命令は実行されず、実際には、ステップＳ９０１’の無効命令が実行される。ここでは、無効命令としてＣＰＵ１のソフトウェアリセット命令が書き込まれているので、リセットが発生し、不揮発性メモリ２上のデータの消去は実行されない。これによって、不揮発性メモリ２の誤消去を防止することができる。
＜別実施形態＞
上記実施形態では、図８のステップＳ５０２及びステップＳ５０３、図１１のステップＳ６０６、図１３のステップＳ８０４において、揮発性メモリ３上の書き込み命令及び消去命令を格納すべきアドレスに書き込む無効命令として、ＣＰＵ１のソフトウェアリセット命令を適用した例について説明したが、ＣＰＵ１が実行可能な別の命令を適用するのも好適である。実行可能な別の命令としては、ＣＰＵ１のＮＯＰ命令のような無操作命令、ＣＰＵ１の未定義命令等がある。
【００５８】
無効命令として無操作命令を用いた場合について説明する。ＣＰＵ１の暴走時、揮発性メモリ３の書き込みサブプログラムの領域に分岐したときには、図１２のステップＳ７０３’において不揮発性メモリ２は操作されず次のステップに進むこととなる。同様に、ＣＰＵ１の暴走時、揮発性メモリ３の消去サブプログラムの領域に分岐したときには、図１４のステップＳ９０１’において不揮発性メモリ２は操作されず次のステップに進むこととなる。従って、無効命令として無操作命令を用いた場合にも、無効命令としてソフトウェアリセット命令を用いた場合と同様に、不揮発性メモリ２への誤書き込み及び誤消去を防止することができる。
【００５９】
無効命令としてＣＰＵ１の未定義命令を用いた場合について説明する。ＣＰＵ１の暴走時、揮発性メモリ３の書き込みサブプログラムの領域に分岐したときには、図１２のステップＳ７０３’ において不揮発性メモリ２は操作されず、未定義命令実行エラーが検出される。同様に、ＣＰＵ１の暴走時、揮発性メモリ３の消去サブプログラムの領域に分岐したときには、図１４のステップＳ９０１’において不揮発性メモリ２は操作されず、未定義命令実行エラーが検出される。従って、無効命令として未定義命令を用いた場合にも、無効命令としてソフトウェアリセット命令を用いた場合と同様に、不揮発性メモリ２への誤書き込み及び誤消去を防止することができる。
【００６０】
尚、本発明に係る不揮発性メモリシステムは、不揮発性メモリ、揮発性メモリ、及び演算処理装置の何れかについて、複数備えるシステムに適用するのも好適である。また、これらの構成が複数のシステムに搭載されている場合に適用するのも好適である。
【図面の簡単な説明】
【００６１】
【図１】ＩＣカードシステムの構成を示すブロック図
【図２】ＩＣカードシステムに搭載される不揮発性メモリ及び揮発性メモリの構成を示す説明図
【図３】従来技術に係るＩＣカードシステムに搭載される不揮発性メモリに格納された制御プログラムの初期化動作を示すフローチャート
【図４】従来技術における不揮発性メモリの制御プログラムの動作を示すフローチャート
【図５】従来技術における不揮発性メモリの書き込みサブプログラムの動作を示すフローチャート
【図６】従来技術における不揮発性メモリの制御プログラムの動作を示すフローチャート
【図７】従来技術における不揮発性メモリの消去サブプログラムの動作を示すフローチャート
【図８】本発明に係るＩＣカードシステムに搭載される不揮発性メモリに格納された制御プログラムの初期化動作を示すフローチャート
【図９】本発明に係るＩＣカードシステムに搭載された揮発性メモリに転送された書き込みサブプログラムの配置を示す説明図
【図１０】本発明に係るＩＣカードシステムに搭載された揮発性メモリに転送された消去サブプログラムの配置を示す説明図
【図１１】本発明に係る制御プログラムの動作を示すフローチャート
【図１２】本発明に係る書き込みサブプログラムの動作を示すフローチャート
【図１３】本発明に係る制御プログラムの動作を示すフローチャート
【図１４】本発明に係る消去サブプログラムの動作を示すフローチャート
【図１５】命令置き換え後の本発明に係る揮発性メモリの書き込みサブプログラムの配置を示す図
【図１６】命令置き換え後の本発明に係る揮発性メモリの消去サブプログラムの配置を示す図
【符号の説明】
【００６２】
１  ＣＰＵ
２  不揮発性メモリ
３  揮発性メモリ
４  通信インターフェース
５  端末装置
６  ＩＣカード
【図１】
2006139341.tif 000003
【図２】
2006139341.tif 000004
【図３】
2006139341.tif 000005
【図４】
2006139341.tif 000006
【図５】
2006139341.tif 000007
【図６】
2006139341.tif 000008
【図７】
2006139341.tif 000009
【図８】
2006139341.tif 000010
【図９】
2006139341.tif 000011
【図１０】
2006139341.tif 000012
【図１１】
2006139341.tif 000013
【図１２】
2006139341.tif 000014
【図１３】
2006139341.tif 000015
【図１４】
2006139341.tif 000016
【図１５】
2006139341.tif 000017
【図１６】
2006139341.tif 000018