不揮発性メモリシステム
【課題】
演算処理装置が誤動作した場合等に、外付け回路を設けることなく低コストで、不揮発性メモリへの誤書き込み及び誤消去を防止する技術を提供する。
【解決手段】
不揮発性メモリと、不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、不揮発性メモリ及び揮発性メモリを制御する演算処理装置と、を備える不揮発性メモリシステムであって、初期化の際に、不揮発性メモリに対する操作命令を格納するための揮発性メモリの所定のアドレスに、操作命令に代えて無効命令を書き込む第1無効命令書込手段と、不揮発性メモリの操作開始前に、無効命令を格納した揮発性メモリの所定のアドレスに操作命令を書き込み、操作命令に基づいて不揮発性メモリを操作する制御手段と、不揮発性メモリの操作実行後に、揮発性メモリの所定のアドレスに、無効命令を書き込む第2無効命令書込手段と、を備えることを特徴とする。
演算処理装置が誤動作した場合等に、外付け回路を設けることなく低コストで、不揮発性メモリへの誤書き込み及び誤消去を防止する技術を提供する。
【解決手段】
不揮発性メモリと、不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、不揮発性メモリ及び揮発性メモリを制御する演算処理装置と、を備える不揮発性メモリシステムであって、初期化の際に、不揮発性メモリに対する操作命令を格納するための揮発性メモリの所定のアドレスに、操作命令に代えて無効命令を書き込む第1無効命令書込手段と、不揮発性メモリの操作開始前に、無効命令を格納した揮発性メモリの所定のアドレスに操作命令を書き込み、操作命令に基づいて不揮発性メモリを操作する制御手段と、不揮発性メモリの操作実行後に、揮発性メモリの所定のアドレスに、無効命令を書き込む第2無効命令書込手段と、を備えることを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリシステム、特に、不揮発性メモリと、前記不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリを制御する演算処理装置と、を備える不揮発性メモリシステムに関する。
【背景技術】
【0002】
プラスチック製のカードにCPU、不揮発性メモリ、及び、揮発性メモリ等を備えたICチップ(半導体集積回路)を実装したICカードは、現在広く利用されている磁気カードに比べ、より大量のデータが記憶可能であることや、データの暗号化が可能でセキュリティに優れていること等から普及し始めている。また、近年、ICカードに搭載される不揮発性メモリとして、従来のEEPROMより大量のデータを格納可能なフラッシュ型EEPROM(フラッシュメモリ)を実装したICカードが実用化されている。
【0003】
従来のフラッシュメモリは、一般的に、データの格納領域がブロック単位で構成されており、一度書き込みを実施してそのデータを書き換える場合、データを書き換えるブロックにおいて格納されたデータの消去を実施してから再書き込みを行う必要がある。更に、フラッシュメモリへのデータの書き込み及び消去は、単一のフラッシュメモリに格納されたプログラムに従って、直接当該フラッシュメモリ自身にデータの書き込み及びデータの消去を実施することができない。このため、一般的に、予めRAM等の揮発性メモリに、フラッシュメモリへのデータの書き込み命令を含むプログラム及びデータの消去命令を含むプログラムを転送しておき、フラッシュメモリのデータ書き込み或いはデータ消去を行う際に、前記揮発性メモリに格納した書き込み命令或いは消去命令に基づいてフラッシュメモリに対する書き込み及び消去を実行している。
【0004】
従来の一般的に用いられるフラッシュメモリへのデータの書き込み及び消去に係る技術の一例を図面に基づいて説明する。
【0005】
図1は、一般的なICカードシステムの構成を示している。ICカード6は、少なくとも1つのCPU1、不揮発性メモリ2、揮発性メモリ3及び通信インターフェース4から構成されており、通信インターフェース4を介して端末装置5とコマンドの交換を行うことによって動作する。
【0006】
CPU1は、不揮発性メモリ2に格納された制御プログラムに従って、ICカード6の各構成要素を制御する。例えば、不揮発性メモリ2へデータを書き込むコマンドを、端末装置5から通信インターフェース4を介してICカード6が受信した場合、CPU1は、不揮発性メモリ2に書き込まれた制御プログラムに従って、不揮発性メモリ2への書き込み動作を実行し、書き込み動作が終了すると、通信インターフェース4を介してコマンドの実行結果を端末装置5に送信する。
【0007】
不揮発性メモリ2は、図2(a)に示すように、ブロック1〜ブロックNで構成されている。不揮発性メモリ2は、CPU1がアクセス可能なアドレス空間として配置されており、ブロック1には予めICカード6の制御プログラムが格納されている。制御プログラムは、CPU1が実行可能な命令群で構成されており、不揮発性メモリ2へデータを書き込むための書き込みプログラム、及び不揮発性メモリ2のデータを消去するための消去プログラムが含まれる。ここでは、更に、制御プログラムにはICカード6の初期化動作を行うための初期化プログラムが含まれる。ブロック2〜Nは、ICカード6のサービスを利用するためのアプリケーションプログラムや、各種データが格納される。
【0008】
揮発性メモリ3は、図2(b)に示すように、CPU1がアクセス可能なアドレス空間として配置されており、不揮発性メモリ2への書き込み命令を含む書き込みサブプログラムを格納する領域、不揮発性メモリ2の消去命令を含む消去サブプログラムを格納する領域、及び、その他の作業領域等から構成される。
【0009】
次に、CPU1による制御プログラムの動作について図3乃至図7を基に説明する。
【0010】
図3は、不揮発性メモリ2に格納されている制御プログラムの実行開始時における初期化プログラムの動作を示すフローチャートである。CPU1は、制御プログラムの実行開始後(ステップS001)、不揮発性メモリ2の初期化プログラムを実行し、不揮発性メモリ2への書き込みサブプログラムを揮発性メモリ3へ転送し(ステップS002)、不揮発性メモリ2の消去サブプログラムを揮発性メモリ3へ転送する(ステップS003)。
【0011】
次に、不揮発性メモリ2へのデータ書き込みについて、図4及び図5のフローチャートを基に説明する。
【0012】
図4は、不揮発性メモリ2に格納されている制御プログラムに含まれる不揮発性メモリ2への書き込みプログラムの動作を示している。CPU1は、不揮発性メモリ2上の書き込みプログラムに従って、先ず、書き込み元のデータが格納された領域の先頭アドレスを変数SRCにセットし(ステップS101)、書き込み先の不揮発性メモリ2上のアドレスを変数DSTにセットし(ステップS102)、書き込みデータ数Nを変数CNTにセットする(ステップS103)。次に、CPU1は、図5に示す揮発性メモリ3上の書き込みサブプログラムを呼び出す(ステップS104)。CPU1は、揮発性メモリ3に格納されたプログラムを実行後、不揮発性メモリ2の書き込みプログラムを終了する(ステップS105)。
【0013】
図5は、図3におけるステップS002で揮発性メモリ3に転送された、不揮発性メモリ2への書き込みサブプログラムの動作を示している。先ず、CPU1は、書き込みデータ数CNTを確認する(ステップS201)。ステップS201において書き込みデータ数CNTが0以外の場合に、アドレスSRCが示す書き込み元のデータの格納領域から書き込みデータを取得する(ステップS202)。続いて、不揮発性メモリ2の書き込み先アドレスDSTに対して書き込み命令を実行し、データの書き込みを開始する(ステップS203)。データの書き込み完了を確認すると(ステップS204でYes分岐)、CPU1は、次のデータの書き込み準備のために、アドレスSRC及びDSTの値を次のアドレスの値に更新する。ここでは、例えば、アドレスSRC及びDSTの値を共に1増加させる(ステップS205)。更に、書き込みデータ数CNTを1減少させて(ステップS206)、ステップS201に遷移して以後の処理を継続する。CPU1は、ステップS201において、書き込みデータ数CNTが0となり、全てのデータの書き込みが終了したと判定した場合に、書き込みサブプログラムを終了する(ステップS207)。
【0014】
不揮発性メモリ2のデータ消去について、図6及び図7のフローチャートを基に説明する。図6は、不揮発性メモリ2に格納されている制御プログラムに含まれる消去プログラムの動作を示している。CPU1は、不揮発性メモリ2上の消去プログラムに従って、先ず、不揮発性メモリ2上の消去先のアドレスを変数DSTに設定する(ステップS301)。次に、CPU1は、図7に示す揮発性メモリ3上の消去サブプログラムを呼び出す(ステップS302)。CPU1は、揮発性メモリ3に格納されたプログラムを実行後、不揮発性メモリ2の消去プログラムを終了する(ステップS303)。
【0015】
図7は、図3におけるステップS003で予め揮発性メモリ3に転送された、不揮発性メモリ2の消去サブプログラムの動作を示している。CPU1は、不揮発性メモリ2の消去先のアドレスDSTに対して、データ消去命令を実行しデータの消去を開始する(ステップS401)。続いて、データの消去完了を確認すると(ステップS402でYes分岐)、CPU1は、消去サブプログラムを終了する(ステップS403)。
【0016】
尚、ICカードは、個人情報等が不揮発性メモリへ書き込まれて利用されるという性格上、特に、ICカードのCPUが何らかの原因で暴走したような場合に、ICカードに搭載される不揮発性メモリへのデータの誤書き込みやデータの誤消失を防止する技術が望まれている。
【0017】
しかしながら、上記従来技術では、何らかの要因でCPUが誤動作し、書き込みサブプログラム及び消去サブプログラムが格納された揮発性メモリのアドレスに誤って分岐した場合、不揮発性メモリにある正規の書き込みプログラム及び消去プログラムの正常な手続きが実施されないため、意図しないフラッシュメモリへのデータ書き込みや消去動作が発生し、最悪の場合、ICカードの故障へ至ってしまう虞がある。
【0018】
このような従来技術に対し、不揮発性メモリへの誤書き込みを防止する技術として、例えば、不揮発性メモリと、該不揮発性メモリに対する書き込み及び読み出しを制御する手段と、電源電圧を監視する手段とを備え、該不揮発性メモリへの書き込み時に、該電源電圧を監視する手段が電源電圧の低下を検出したときに書き込みを禁止するメモリ装置がある(例えば、特許文献1参照)。このメモリ装置は、外付け回路を設けることなく不揮発性メモリへのデータの誤書き込みを防止できる。また、該書き込み禁止に応じて書き込みが失敗したことを記憶する手段と、前記不揮発性メモリへの書き込み終了後に、該記憶手段の内容を読み出す手段とを備えており、不揮発性メモリへの書き込みが正常に終了したか否かを確認できる。
【0019】
また、プログラム処理の暴走に伴う不揮発性メモリのデータ誤書き換えを防止する技術として、例えば、1チップマイクロコンピュータを初期化する際に、RAMの特定番地に特定データを予め格納し、揮発特性を有するRAMの特定番地の内容が初期化時点の内容と同一であることを確認してから、フラッシュメモリのデータの書き込み動作に移行するデータ保護装置がある(例えば、特許文献2参照)。このデータ保護装置は、1チップマイクロコンピュータのプログラム処理が暴走した時、RAMの特定番地の内容が初期化時点で意図的に作成した内容とは異なってしまう為、プログラム処理の暴走に伴い書き込み用のサブルーチンプログラム命令が誤って実行されても、フラッシュメモリの誤書き込みを防止できる。
【特許文献1】特開平8−22422号公報
【特許文献2】特開2000−112826号公報
【発明の開示】
【発明が解決しようとする課題】
【0020】
しかしながら、特許文献1のメモリ装置は、電源電圧を監視し、電源電圧の低下を検出したときのみ不揮発性メモリへの書き込みを禁止するので、電源電圧が正常なときにCPUが暴走した場合には、不揮発性メモリへの誤書き込みを防止することができない。また、特許文献2のデータ保護装置は、初期化時点におけるRAMの内容を記憶する手段が必要であることから、このデータ保護装置を実現するためには外付け回路を設けることが必要となり、低コストで実現することは難しい。
【0021】
本発明は、上記問題点に鑑みてなされたものであり、CPU等の演算処理装置が誤動作し、書き込み命令または消去命令が格納された揮発性メモリの所定のアドレスに分岐した場合等であっても、外付け回路を設けることなく低コストで、不揮発性メモリへの誤書き込み及び誤消去を防止する技術を提供することを目的としている。
【課題を解決するための手段】
【0022】
上記目的を達成するための本発明に係る不揮発性メモリシステムは、不揮発性メモリと、前記不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリを制御する演算処理装置と、を備える不揮発性メモリシステムであって、初期化の際に、前記不揮発性メモリに対する前記操作命令を格納するための前記揮発性メモリの所定のアドレスに、前記操作命令に代えて無効命令を書き込む第1無効命令書込手段と、前記不揮発性メモリの操作開始前に、前記無効命令を格納した前記揮発性メモリの前記所定のアドレスに前記操作命令を書き込み、前記操作命令に基づいて前記不揮発性メモリを操作する制御手段と、前記不揮発性メモリの操作実行後に、前記揮発性メモリの前記所定のアドレスに、無効命令を書き込む第2無効命令書込手段と、を備えることを特徴とする。
【0023】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリを操作する命令を含むプログラムが格納される揮発性メモリのアドレスへ不正に分岐した場合でも、操作命令が無効命令に置き換えて格納されているため、無効命令が実行されることとなる。このため、不揮発性メモリへの操作は実行されず、不揮発性メモリの誤操作を防止することができる。
【0024】
上記本発明に係る不揮発性メモリシステムは、更に、前記プログラムが、前記不揮発性メモリへの書込命令を含み、前記第1無効命令書込手段及び第2無効命令書込手段が、前記書込命令を格納する前記揮発性メモリの所定のアドレスに前記無効命令を書き込むことを特徴とする。
【0025】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリへの書き込み命令が格納される揮発性メモリのアドレスへ不正に分岐した場合でも、揮発性メモリの前記アドレスには不揮発性メモリへの書き込み命令ではなく無効命令が格納されているため、不揮発性メモリへの書き込みは実行されず、不揮発性メモリへの誤書き込みを防止することができる。
【0026】
上記何れかの特徴の本発明に係る不揮発性メモリシステムは、更に、前記プログラムが、前記不揮発性メモリへの消去命令を含み、前記第1無効命令書込手段及び第2無効命令書込手段が、前記消去命令を格納する前記揮発性メモリの所定のアドレスに前記無効命令を書き込むことを特徴とする。
【0027】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリの消去命令が格納される揮発性メモリのアドレスへ不正に分岐した場合でも、揮発性メモリの前記アドレスには不揮発性メモリの消去命令ではなく無効命令が格納されているため、不揮発性メモリの消去は実行されず、不揮発性メモリの誤消去を防止することができる。
【0028】
また、上記何れかの特徴の本発明に係る不揮発性メモリシステムは、前記無効命令が、前記演算処理装置をリセットする命令であることを特徴とする。
【0029】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリの操作命令が格納された揮発性メモリのアドレスへ不正に分岐した場合に、揮発性メモリの前記アドレスには、不揮発性メモリの操作命令ではなく演算処理装置のリセット命令が格納されているため、このリセット命令が実行されることとなる。従って、不揮発性メモリの操作は実行されず、演算処理装置がリセットされるため、不揮発性メモリの誤動作を防止することができる。
【0030】
更に、上記何れかの特徴の本発明に係る不揮発性メモリシステムは、前記無効命令が、前記演算処理装置における無操作命令であることを特徴とする。
【0031】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリの操作命令が格納された揮発性メモリのアドレスへ不正に分岐した場合に、揮発性メモリの前記アドレスには、不揮発性メモリの操作命令ではなく演算処理装置の無操作命令が格納されているため、不揮発性メモリの操作は実行されない。これによって、不揮発性メモリの誤動作を防止することができる。
【0032】
更に、上記何れかの特徴の本発明に係る他の不揮発性メモリシステムは、前記無効命令が、前記演算処理装置における未定義命令であることを特徴とする。
【0033】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリの操作命令が格納された揮発性メモリのアドレスへ不正に分岐した場合に、揮発性メモリの前記アドレスには、不揮発性メモリの操作命令ではなく演算処理装置の未定義命令が格納されているため、不揮発性メモリの操作は実行されない。そして、演算処理装置の未定義命令実行エラーが検出されることとなり、不揮発性メモリの誤動作を防止することができる。
【0034】
また、本発明に係る不揮発性メモリ制御プログラムは、何れかの特徴の本発明に係る不揮発性メモリシステムにおける各手段の機能をコンピュータ上で実行するプログラムステップを含むことを特徴とする。
【0035】
本発明に係る不揮発性メモリ制御プログラムによれば、本発明に係る不揮発性メモリシステムにおける全ての上記作用効果を奏することができ、外付け回路を設けることなく低コストで、不揮発性メモリの誤動作を防止することができる。
【発明を実施するための最良の形態】
【0036】
次に、本発明に係る不揮発性メモリシステム(以下、適宜「本発明システム」と称す。)の一実施形態につき、図面に基づいて説明する。
【0037】
本実施形態の不揮発性メモリシステムは、不揮発性メモリと、前記不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリを制御する演算処理装置とを備えるICカードシステムに適用され、演算処理装置の一例としてのCPUによってICカードシステム上で実行されるプログラムとして構成される。
【0038】
本実施形態におけるICカードシステムは、図1に示す従来技術に係るICカードシステムの一般的なハードウェア構成と同じハードウェア構成を持つ。図1に示すように、ICカード6は、CPU1、不揮発性メモリ2、揮発性メモリ3及び通信インターフェース4から構成されており、通信インターフェース4を介して、端末装置5とコマンドの交換を行うことによって動作する。
【0039】
CPU1は、不揮発性メモリ2に格納された制御プログラムに従って、ICカード6の各構成要素を制御する。ここで、本実施形態では、不揮発性メモリ2の内容を書き換える操作命令は、書き込み命令及び消去命令である。そして、不揮発性メモリ2の内容を書き換えるコマンドを、端末装置5から通信インターフェース4を介してICカード6が受信した場合、CPU1は、不揮発性メモリ2に書き込まれた制御プログラムに従って、不揮発性メモリ2の内容を書き換えるための操作、即ち、書き込み命令及び消去命令の少なくとも何れか一方を実行し、これらの操作が終了すると、前記コマンドの実行結果を通信インターフェース4を介して端末装置5に送信する。
【0040】
不揮発性メモリ2は、図2(a)に示すように、ブロック1〜ブロックNで構成されている。不揮発性メモリ2は、CPU1がアクセス可能なアドレス空間として配置されており、ブロック1には予めICカード6の制御プログラムが格納されている。制御プログラムは、CPU1が実行可能な命令群で構成されており、不揮発性メモリ2へデータを書き込むための書き込みプログラム、及び不揮発性メモリ2のデータを消去するための消去プログラムが含まれる。本実施形態では、更に、制御プログラムには、ICカード6の初期化動作を行うための初期化プログラムが含まれる。ブロック2〜Nは、ICカード6のサービスを利用するためのアプリケーションプログラムや、各種データが格納される。
【0041】
揮発性メモリ3は、図2(b)に示すように、CPU1がアクセス可能なアドレス空間として配置されており、不揮発性メモリ2への書き込み命令を含む書き込みサブプログラムを格納する領域、不揮発性メモリ2の消去命令を含む消去サブプログラムを格納する領域、及び、その他の作業領域等から構成される。これらのサブプログラムは、予め不揮発性メモリ2に格納されており、不揮発性メモリ2に格納された制御プログラムの実行開始時に、初期化プログラムにおいて、不揮発性メモリ2から揮発性メモリ3の所定の領域へ転送して格納される。
【0042】
次に、CPU1による制御プログラムの動作について図8乃至図16を基に説明する。
【0043】
図8は、不揮発性メモリ2に格納されている制御プログラムの実行開始時における初期化プログラムの動作を示すフローチャートであり、不揮発性メモリ2に格納されている書き込みサブプログラム及び消去サブプログラムを揮発性メモリ3へ転送する時の動作を示している。
【0044】
CPU1は、不揮発性メモリ2の制御プログラムの実行開始後(ステップS501)、先ず、不揮発性メモリ2の初期化プログラムを実行し、不揮発性メモリ2に格納されている不揮発性メモリ2への書き込みサブプログラムを揮発性メモリ3の所定の領域へ転送して格納する(ステップS502)。このとき、不揮発性メモリ2への書き込み命令が格納されるべき揮発性メモリ3上のアドレスには、書き込み命令を書き込まずに、無効命令を書き込む。書き込む無効命令として、ここではCPU1のソフトウェアリセット命令を書き込む。次に、不揮発性メモリ2に格納されている不揮発性メモリ2の消去サブプログラムを揮発性メモリ3の所定の領域へ転送して格納する(ステップS503)。このとき、不揮発性メモリ2の消去命令が格納されるべき揮発性メモリ3上のアドレスには、消去命令を書き込まずに、無効命令を書き込む。書き込む無効命令として、ここではCPU1のソフトウェアリセット命令を書き込む。
【0045】
ここで、図9は、ステップS502において揮発性メモリ3へ転送され格納された、書き込みサブプログラムの配置を示している。この書き込みサブプログラムは、不揮発性メモリ2に格納されている書き込みプログラムから呼び出し可能なサブルーチンとして配置される。この時点で、不揮発性メモリ2への書き込み命令を格納すべき揮発性メモリ3のアドレスには、無効命令としてCPU1のソフトウェアリセット命令が配置されている。
【0046】
図10は、ステップS503において揮発性メモリ3へ転送され格納された、不揮発性メモリ2の消去サブプログラムの配置を示している。消去サブプログラムは、不揮発性メモリ2に格納されている消去プログラムから呼び出し可能なサブルーチンとして配置される。この時点で、不揮発性メモリ2の消去命令を格納すべき揮発性メモリ3のアドレスには、無効命令としてCPU1のソフトウェアリセット命令が配置されている。
【0047】
不揮発性メモリ2へのデータ書き込みについて、図11及び図12のフローチャートを基に説明する。
【0048】
図11は、不揮発性メモリ2に格納されている制御プログラムに含まれる書き込みプログラムの動作を示している。CPU1は、不揮発性メモリ2上の書き込みプログラムに従って、先ず、書き込み元のデータが格納された領域の先頭アドレスを変数SRCにセットする(ステップS601)。次に、書き込み先の不揮発性メモリ2上のアドレスを変数DSTにセットし(ステップS602)、書き込みデータ数Nを変数CNTにセットする(ステップS603)。
【0049】
続いて、CPU1は、揮発性メモリ3上の書き込み命令を格納すべきアドレスに既に書き込まれている無効命令としてのCPU1のソフトウェアリセット命令を、正規の書き込み命令に置き換える(ステップS604)。ここで、図15は、ステップS604において命令の置き換えを行った後の、揮発性メモリ3上の書き込みサブプログラムの配置を図示している。この時点で、揮発性メモリ3の書き込み命令を格納すべきアドレスには、正規の書き込み命令が配置されている。命令の置き換え後、CPU1は、図12に示す揮発性メモリ3上の書き込みサブプログラムを呼び出し(ステップS605)、揮発性メモリ3に格納された書き込みサブプログラムを実行する。CPU1は、書き込みサブプログラムの実行終了後、揮発性メモリ3に書き込まれている正規の書き込み命令を、無効命令としてのCPU1のソフトウェアリセット命令に置き換え(ステップS606)、書き込みプログラムを終了する(ステップS607)。
【0050】
図12は、ステップS502で予め揮発性メモリ3に転送された、書き込みサブプログラムの動作を示している。CPU1は、先ず、書き込みデータ数CNTを確認する(ステップS701)。ステップS701において書き込みデータ数CNTが0以外の場合、アドレスSRCが示す書き込み元のデータの格納領域から書き込みデータを取得する(ステップS702)。続いて、不揮発性メモリ2の書き込み先アドレスDSTに対して書き込み命令を実行し、データの書き込みを開始する(ステップS703)。データの書き込み完了を確認すると(ステップS704でYes分岐)、CPU1は、次のデータの書き込み準備のために、アドレスSRC及びアドレスDSTの値を次のアドレスの値に更新する。本実施形態では、アドレスSRC及びアドレスDSTの値を共に1増加させる(ステップS705)。更に、書き込みデータ数CNTを1減少させて(ステップS706)、ステップS701に遷移して以後の処理を継続する。CPU1は、ステップS701において、書き込みデータ数CNTが0となり、全ての書き込みが終了したと判定した場合に、書き込みサブプログラムを終了する(ステップS707)。
【0051】
次に、何らかの要因でCPU1が誤動作し、書き込みサブプログラムが格納された領域を含む揮発性メモリ3上の領域に、誤ってプログラムが分岐した場合について説明する。
【0052】
この場合は、不揮発性メモリ2上の書き込みプログラムが正しく実行されず、図11に示す書き込みプログラムのステップS604における命令の置き換えが実行されずに、揮発性メモリ3上の何れかの領域に分岐することとなる。このときの揮発性メモリ3上の書き込みサブプログラムの構成は、図9に示す構成であり、書き込み命令を格納すべき揮発性メモリ3のアドレスには、無効命令としてのCPU1のソフトウェアリセット命令が配置された状態となる。従って、図12に示すフローチャートにおいて、CPU1の暴走によって揮発性メモリ3へプログラムが分岐した場合には、ステップS703の書き込み命令は実行されず、実際には、ステップS703’の無効命令が実行される。ここでは、無効命令としてCPU1のソフトウェアリセット命令が書き込まれているので、リセットが発生し、不揮発性メモリ2への書き込みは実行されない。これによって、不揮発性メモリ2への誤書き込みを防止することができる。
【0053】
不揮発性メモリ2のデータ消去について、図13及び図14のフローチャートを基に説明する。図13は、不揮発性メモリ2に格納されている制御プログラムに含まれる消去プログラムの動作を示している。CPU1は、不揮発性メモリ2上の消去プログラムに従って、先ず、不揮発性メモリ2上の消去先のアドレスを変数DSTにセットする(ステップS801)。
【0054】
続いて、CPU1は、揮発性メモリ3上の消去命令を格納すべきアドレスに既に書き込まれている無効命令としてのCPU1のソフトウェアリセット命令を、正規の消去命令に置き換える(ステップS802)。ここで、図16は、ステップS802において命令の置き換えを行った後の、揮発性メモリ3上の消去サブプログラムの配置を示している。この時点で、揮発性メモリ3の消去命令を格納すべきアドレスには、正規の消去命令が配置されている。命令の置き換え後、CPU1は、図14に示す揮発性メモリ3上の消去サブプログラムを呼び出し(ステップS803)、揮発性メモリ3に格納された消去サブプログラムを実行する。CPU1は、消去サブプログラムの実行終了後、揮発性メモリ3に書き込まれている正規の消去命令を、無効命令としてのCPU1のソフトウェアリセット命令に置き換え(ステップS804)、消去プログラムを終了する(ステップS805)。
【0055】
図14は、ステップS503で予め揮発性メモリ3に転送された、消去サブプログラムの動作を示している。CPU1は、不揮発性メモリ2上の消去先のアドレスDSTに対して、消去命令を実行しデータの消去を開始する(ステップS901)。続いて、データの消去完了を確認すると(ステップS902でYes分岐)、CPU1は、消去サブプログラムを終了する(ステップS903)。
【0056】
次に、何らかの要因でCPU1が誤動作し、消去サブプログラムが格納された領域を含む揮発性メモリ3上の領域に、誤ってプログラムが分岐した場合について説明する。
【0057】
この場合は、図13に示す消去プログラムのステップS802における命令の置き換えが実行されずに、揮発性メモリ3上の何れかの領域に分岐することとなる。このときの揮発性メモリ3上の消去サブプログラムの構成は、図10に示す構成であり、消去命令を格納すべき揮発性メモリ3のアドレスには、無効命令としてのCPU1のソフトウェアリセット命令が配置された状態となる。従って、図14に示すフローチャートにおいて、CPU1の暴走によって揮発性メモリ3へプログラムが分岐した場合には、ステップS901の消去命令は実行されず、実際には、ステップS901’の無効命令が実行される。ここでは、無効命令としてCPU1のソフトウェアリセット命令が書き込まれているので、リセットが発生し、不揮発性メモリ2上のデータの消去は実行されない。これによって、不揮発性メモリ2の誤消去を防止することができる。
<別実施形態>
上記実施形態では、図8のステップS502及びステップS503、図11のステップS606、図13のステップS804において、揮発性メモリ3上の書き込み命令及び消去命令を格納すべきアドレスに書き込む無効命令として、CPU1のソフトウェアリセット命令を適用した例について説明したが、CPU1が実行可能な別の命令を適用するのも好適である。実行可能な別の命令としては、CPU1のNOP命令のような無操作命令、CPU1の未定義命令等がある。
【0058】
無効命令として無操作命令を用いた場合について説明する。CPU1の暴走時、揮発性メモリ3の書き込みサブプログラムの領域に分岐したときには、図12のステップS703’において不揮発性メモリ2は操作されず次のステップに進むこととなる。同様に、CPU1の暴走時、揮発性メモリ3の消去サブプログラムの領域に分岐したときには、図14のステップS901’において不揮発性メモリ2は操作されず次のステップに進むこととなる。従って、無効命令として無操作命令を用いた場合にも、無効命令としてソフトウェアリセット命令を用いた場合と同様に、不揮発性メモリ2への誤書き込み及び誤消去を防止することができる。
【0059】
無効命令としてCPU1の未定義命令を用いた場合について説明する。CPU1の暴走時、揮発性メモリ3の書き込みサブプログラムの領域に分岐したときには、図12のステップS703’ において不揮発性メモリ2は操作されず、未定義命令実行エラーが検出される。同様に、CPU1の暴走時、揮発性メモリ3の消去サブプログラムの領域に分岐したときには、図14のステップS901’において不揮発性メモリ2は操作されず、未定義命令実行エラーが検出される。従って、無効命令として未定義命令を用いた場合にも、無効命令としてソフトウェアリセット命令を用いた場合と同様に、不揮発性メモリ2への誤書き込み及び誤消去を防止することができる。
【0060】
尚、本発明に係る不揮発性メモリシステムは、不揮発性メモリ、揮発性メモリ、及び演算処理装置の何れかについて、複数備えるシステムに適用するのも好適である。また、これらの構成が複数のシステムに搭載されている場合に適用するのも好適である。
【図面の簡単な説明】
【0061】
【図1】ICカードシステムの構成を示すブロック図
【図2】ICカードシステムに搭載される不揮発性メモリ及び揮発性メモリの構成を示す説明図
【図3】従来技術に係るICカードシステムに搭載される不揮発性メモリに格納された制御プログラムの初期化動作を示すフローチャート
【図4】従来技術における不揮発性メモリの制御プログラムの動作を示すフローチャート
【図5】従来技術における不揮発性メモリの書き込みサブプログラムの動作を示すフローチャート
【図6】従来技術における不揮発性メモリの制御プログラムの動作を示すフローチャート
【図7】従来技術における不揮発性メモリの消去サブプログラムの動作を示すフローチャート
【図8】本発明に係るICカードシステムに搭載される不揮発性メモリに格納された制御プログラムの初期化動作を示すフローチャート
【図9】本発明に係るICカードシステムに搭載された揮発性メモリに転送された書き込みサブプログラムの配置を示す説明図
【図10】本発明に係るICカードシステムに搭載された揮発性メモリに転送された消去サブプログラムの配置を示す説明図
【図11】本発明に係る制御プログラムの動作を示すフローチャート
【図12】本発明に係る書き込みサブプログラムの動作を示すフローチャート
【図13】本発明に係る制御プログラムの動作を示すフローチャート
【図14】本発明に係る消去サブプログラムの動作を示すフローチャート
【図15】命令置き換え後の本発明に係る揮発性メモリの書き込みサブプログラムの配置を示す図
【図16】命令置き換え後の本発明に係る揮発性メモリの消去サブプログラムの配置を示す図
【符号の説明】
【0062】
1 CPU
2 不揮発性メモリ
3 揮発性メモリ
4 通信インターフェース
5 端末装置
6 ICカード
【技術分野】
【0001】
本発明は、不揮発性メモリシステム、特に、不揮発性メモリと、前記不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリを制御する演算処理装置と、を備える不揮発性メモリシステムに関する。
【背景技術】
【0002】
プラスチック製のカードにCPU、不揮発性メモリ、及び、揮発性メモリ等を備えたICチップ(半導体集積回路)を実装したICカードは、現在広く利用されている磁気カードに比べ、より大量のデータが記憶可能であることや、データの暗号化が可能でセキュリティに優れていること等から普及し始めている。また、近年、ICカードに搭載される不揮発性メモリとして、従来のEEPROMより大量のデータを格納可能なフラッシュ型EEPROM(フラッシュメモリ)を実装したICカードが実用化されている。
【0003】
従来のフラッシュメモリは、一般的に、データの格納領域がブロック単位で構成されており、一度書き込みを実施してそのデータを書き換える場合、データを書き換えるブロックにおいて格納されたデータの消去を実施してから再書き込みを行う必要がある。更に、フラッシュメモリへのデータの書き込み及び消去は、単一のフラッシュメモリに格納されたプログラムに従って、直接当該フラッシュメモリ自身にデータの書き込み及びデータの消去を実施することができない。このため、一般的に、予めRAM等の揮発性メモリに、フラッシュメモリへのデータの書き込み命令を含むプログラム及びデータの消去命令を含むプログラムを転送しておき、フラッシュメモリのデータ書き込み或いはデータ消去を行う際に、前記揮発性メモリに格納した書き込み命令或いは消去命令に基づいてフラッシュメモリに対する書き込み及び消去を実行している。
【0004】
従来の一般的に用いられるフラッシュメモリへのデータの書き込み及び消去に係る技術の一例を図面に基づいて説明する。
【0005】
図1は、一般的なICカードシステムの構成を示している。ICカード6は、少なくとも1つのCPU1、不揮発性メモリ2、揮発性メモリ3及び通信インターフェース4から構成されており、通信インターフェース4を介して端末装置5とコマンドの交換を行うことによって動作する。
【0006】
CPU1は、不揮発性メモリ2に格納された制御プログラムに従って、ICカード6の各構成要素を制御する。例えば、不揮発性メモリ2へデータを書き込むコマンドを、端末装置5から通信インターフェース4を介してICカード6が受信した場合、CPU1は、不揮発性メモリ2に書き込まれた制御プログラムに従って、不揮発性メモリ2への書き込み動作を実行し、書き込み動作が終了すると、通信インターフェース4を介してコマンドの実行結果を端末装置5に送信する。
【0007】
不揮発性メモリ2は、図2(a)に示すように、ブロック1〜ブロックNで構成されている。不揮発性メモリ2は、CPU1がアクセス可能なアドレス空間として配置されており、ブロック1には予めICカード6の制御プログラムが格納されている。制御プログラムは、CPU1が実行可能な命令群で構成されており、不揮発性メモリ2へデータを書き込むための書き込みプログラム、及び不揮発性メモリ2のデータを消去するための消去プログラムが含まれる。ここでは、更に、制御プログラムにはICカード6の初期化動作を行うための初期化プログラムが含まれる。ブロック2〜Nは、ICカード6のサービスを利用するためのアプリケーションプログラムや、各種データが格納される。
【0008】
揮発性メモリ3は、図2(b)に示すように、CPU1がアクセス可能なアドレス空間として配置されており、不揮発性メモリ2への書き込み命令を含む書き込みサブプログラムを格納する領域、不揮発性メモリ2の消去命令を含む消去サブプログラムを格納する領域、及び、その他の作業領域等から構成される。
【0009】
次に、CPU1による制御プログラムの動作について図3乃至図7を基に説明する。
【0010】
図3は、不揮発性メモリ2に格納されている制御プログラムの実行開始時における初期化プログラムの動作を示すフローチャートである。CPU1は、制御プログラムの実行開始後(ステップS001)、不揮発性メモリ2の初期化プログラムを実行し、不揮発性メモリ2への書き込みサブプログラムを揮発性メモリ3へ転送し(ステップS002)、不揮発性メモリ2の消去サブプログラムを揮発性メモリ3へ転送する(ステップS003)。
【0011】
次に、不揮発性メモリ2へのデータ書き込みについて、図4及び図5のフローチャートを基に説明する。
【0012】
図4は、不揮発性メモリ2に格納されている制御プログラムに含まれる不揮発性メモリ2への書き込みプログラムの動作を示している。CPU1は、不揮発性メモリ2上の書き込みプログラムに従って、先ず、書き込み元のデータが格納された領域の先頭アドレスを変数SRCにセットし(ステップS101)、書き込み先の不揮発性メモリ2上のアドレスを変数DSTにセットし(ステップS102)、書き込みデータ数Nを変数CNTにセットする(ステップS103)。次に、CPU1は、図5に示す揮発性メモリ3上の書き込みサブプログラムを呼び出す(ステップS104)。CPU1は、揮発性メモリ3に格納されたプログラムを実行後、不揮発性メモリ2の書き込みプログラムを終了する(ステップS105)。
【0013】
図5は、図3におけるステップS002で揮発性メモリ3に転送された、不揮発性メモリ2への書き込みサブプログラムの動作を示している。先ず、CPU1は、書き込みデータ数CNTを確認する(ステップS201)。ステップS201において書き込みデータ数CNTが0以外の場合に、アドレスSRCが示す書き込み元のデータの格納領域から書き込みデータを取得する(ステップS202)。続いて、不揮発性メモリ2の書き込み先アドレスDSTに対して書き込み命令を実行し、データの書き込みを開始する(ステップS203)。データの書き込み完了を確認すると(ステップS204でYes分岐)、CPU1は、次のデータの書き込み準備のために、アドレスSRC及びDSTの値を次のアドレスの値に更新する。ここでは、例えば、アドレスSRC及びDSTの値を共に1増加させる(ステップS205)。更に、書き込みデータ数CNTを1減少させて(ステップS206)、ステップS201に遷移して以後の処理を継続する。CPU1は、ステップS201において、書き込みデータ数CNTが0となり、全てのデータの書き込みが終了したと判定した場合に、書き込みサブプログラムを終了する(ステップS207)。
【0014】
不揮発性メモリ2のデータ消去について、図6及び図7のフローチャートを基に説明する。図6は、不揮発性メモリ2に格納されている制御プログラムに含まれる消去プログラムの動作を示している。CPU1は、不揮発性メモリ2上の消去プログラムに従って、先ず、不揮発性メモリ2上の消去先のアドレスを変数DSTに設定する(ステップS301)。次に、CPU1は、図7に示す揮発性メモリ3上の消去サブプログラムを呼び出す(ステップS302)。CPU1は、揮発性メモリ3に格納されたプログラムを実行後、不揮発性メモリ2の消去プログラムを終了する(ステップS303)。
【0015】
図7は、図3におけるステップS003で予め揮発性メモリ3に転送された、不揮発性メモリ2の消去サブプログラムの動作を示している。CPU1は、不揮発性メモリ2の消去先のアドレスDSTに対して、データ消去命令を実行しデータの消去を開始する(ステップS401)。続いて、データの消去完了を確認すると(ステップS402でYes分岐)、CPU1は、消去サブプログラムを終了する(ステップS403)。
【0016】
尚、ICカードは、個人情報等が不揮発性メモリへ書き込まれて利用されるという性格上、特に、ICカードのCPUが何らかの原因で暴走したような場合に、ICカードに搭載される不揮発性メモリへのデータの誤書き込みやデータの誤消失を防止する技術が望まれている。
【0017】
しかしながら、上記従来技術では、何らかの要因でCPUが誤動作し、書き込みサブプログラム及び消去サブプログラムが格納された揮発性メモリのアドレスに誤って分岐した場合、不揮発性メモリにある正規の書き込みプログラム及び消去プログラムの正常な手続きが実施されないため、意図しないフラッシュメモリへのデータ書き込みや消去動作が発生し、最悪の場合、ICカードの故障へ至ってしまう虞がある。
【0018】
このような従来技術に対し、不揮発性メモリへの誤書き込みを防止する技術として、例えば、不揮発性メモリと、該不揮発性メモリに対する書き込み及び読み出しを制御する手段と、電源電圧を監視する手段とを備え、該不揮発性メモリへの書き込み時に、該電源電圧を監視する手段が電源電圧の低下を検出したときに書き込みを禁止するメモリ装置がある(例えば、特許文献1参照)。このメモリ装置は、外付け回路を設けることなく不揮発性メモリへのデータの誤書き込みを防止できる。また、該書き込み禁止に応じて書き込みが失敗したことを記憶する手段と、前記不揮発性メモリへの書き込み終了後に、該記憶手段の内容を読み出す手段とを備えており、不揮発性メモリへの書き込みが正常に終了したか否かを確認できる。
【0019】
また、プログラム処理の暴走に伴う不揮発性メモリのデータ誤書き換えを防止する技術として、例えば、1チップマイクロコンピュータを初期化する際に、RAMの特定番地に特定データを予め格納し、揮発特性を有するRAMの特定番地の内容が初期化時点の内容と同一であることを確認してから、フラッシュメモリのデータの書き込み動作に移行するデータ保護装置がある(例えば、特許文献2参照)。このデータ保護装置は、1チップマイクロコンピュータのプログラム処理が暴走した時、RAMの特定番地の内容が初期化時点で意図的に作成した内容とは異なってしまう為、プログラム処理の暴走に伴い書き込み用のサブルーチンプログラム命令が誤って実行されても、フラッシュメモリの誤書き込みを防止できる。
【特許文献1】特開平8−22422号公報
【特許文献2】特開2000−112826号公報
【発明の開示】
【発明が解決しようとする課題】
【0020】
しかしながら、特許文献1のメモリ装置は、電源電圧を監視し、電源電圧の低下を検出したときのみ不揮発性メモリへの書き込みを禁止するので、電源電圧が正常なときにCPUが暴走した場合には、不揮発性メモリへの誤書き込みを防止することができない。また、特許文献2のデータ保護装置は、初期化時点におけるRAMの内容を記憶する手段が必要であることから、このデータ保護装置を実現するためには外付け回路を設けることが必要となり、低コストで実現することは難しい。
【0021】
本発明は、上記問題点に鑑みてなされたものであり、CPU等の演算処理装置が誤動作し、書き込み命令または消去命令が格納された揮発性メモリの所定のアドレスに分岐した場合等であっても、外付け回路を設けることなく低コストで、不揮発性メモリへの誤書き込み及び誤消去を防止する技術を提供することを目的としている。
【課題を解決するための手段】
【0022】
上記目的を達成するための本発明に係る不揮発性メモリシステムは、不揮発性メモリと、前記不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリを制御する演算処理装置と、を備える不揮発性メモリシステムであって、初期化の際に、前記不揮発性メモリに対する前記操作命令を格納するための前記揮発性メモリの所定のアドレスに、前記操作命令に代えて無効命令を書き込む第1無効命令書込手段と、前記不揮発性メモリの操作開始前に、前記無効命令を格納した前記揮発性メモリの前記所定のアドレスに前記操作命令を書き込み、前記操作命令に基づいて前記不揮発性メモリを操作する制御手段と、前記不揮発性メモリの操作実行後に、前記揮発性メモリの前記所定のアドレスに、無効命令を書き込む第2無効命令書込手段と、を備えることを特徴とする。
【0023】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリを操作する命令を含むプログラムが格納される揮発性メモリのアドレスへ不正に分岐した場合でも、操作命令が無効命令に置き換えて格納されているため、無効命令が実行されることとなる。このため、不揮発性メモリへの操作は実行されず、不揮発性メモリの誤操作を防止することができる。
【0024】
上記本発明に係る不揮発性メモリシステムは、更に、前記プログラムが、前記不揮発性メモリへの書込命令を含み、前記第1無効命令書込手段及び第2無効命令書込手段が、前記書込命令を格納する前記揮発性メモリの所定のアドレスに前記無効命令を書き込むことを特徴とする。
【0025】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリへの書き込み命令が格納される揮発性メモリのアドレスへ不正に分岐した場合でも、揮発性メモリの前記アドレスには不揮発性メモリへの書き込み命令ではなく無効命令が格納されているため、不揮発性メモリへの書き込みは実行されず、不揮発性メモリへの誤書き込みを防止することができる。
【0026】
上記何れかの特徴の本発明に係る不揮発性メモリシステムは、更に、前記プログラムが、前記不揮発性メモリへの消去命令を含み、前記第1無効命令書込手段及び第2無効命令書込手段が、前記消去命令を格納する前記揮発性メモリの所定のアドレスに前記無効命令を書き込むことを特徴とする。
【0027】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリの消去命令が格納される揮発性メモリのアドレスへ不正に分岐した場合でも、揮発性メモリの前記アドレスには不揮発性メモリの消去命令ではなく無効命令が格納されているため、不揮発性メモリの消去は実行されず、不揮発性メモリの誤消去を防止することができる。
【0028】
また、上記何れかの特徴の本発明に係る不揮発性メモリシステムは、前記無効命令が、前記演算処理装置をリセットする命令であることを特徴とする。
【0029】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリの操作命令が格納された揮発性メモリのアドレスへ不正に分岐した場合に、揮発性メモリの前記アドレスには、不揮発性メモリの操作命令ではなく演算処理装置のリセット命令が格納されているため、このリセット命令が実行されることとなる。従って、不揮発性メモリの操作は実行されず、演算処理装置がリセットされるため、不揮発性メモリの誤動作を防止することができる。
【0030】
更に、上記何れかの特徴の本発明に係る不揮発性メモリシステムは、前記無効命令が、前記演算処理装置における無操作命令であることを特徴とする。
【0031】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリの操作命令が格納された揮発性メモリのアドレスへ不正に分岐した場合に、揮発性メモリの前記アドレスには、不揮発性メモリの操作命令ではなく演算処理装置の無操作命令が格納されているため、不揮発性メモリの操作は実行されない。これによって、不揮発性メモリの誤動作を防止することができる。
【0032】
更に、上記何れかの特徴の本発明に係る他の不揮発性メモリシステムは、前記無効命令が、前記演算処理装置における未定義命令であることを特徴とする。
【0033】
本特徴によれば、演算処理装置が誤動作して、不揮発性メモリの操作命令が格納された揮発性メモリのアドレスへ不正に分岐した場合に、揮発性メモリの前記アドレスには、不揮発性メモリの操作命令ではなく演算処理装置の未定義命令が格納されているため、不揮発性メモリの操作は実行されない。そして、演算処理装置の未定義命令実行エラーが検出されることとなり、不揮発性メモリの誤動作を防止することができる。
【0034】
また、本発明に係る不揮発性メモリ制御プログラムは、何れかの特徴の本発明に係る不揮発性メモリシステムにおける各手段の機能をコンピュータ上で実行するプログラムステップを含むことを特徴とする。
【0035】
本発明に係る不揮発性メモリ制御プログラムによれば、本発明に係る不揮発性メモリシステムにおける全ての上記作用効果を奏することができ、外付け回路を設けることなく低コストで、不揮発性メモリの誤動作を防止することができる。
【発明を実施するための最良の形態】
【0036】
次に、本発明に係る不揮発性メモリシステム(以下、適宜「本発明システム」と称す。)の一実施形態につき、図面に基づいて説明する。
【0037】
本実施形態の不揮発性メモリシステムは、不揮発性メモリと、前記不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリを制御する演算処理装置とを備えるICカードシステムに適用され、演算処理装置の一例としてのCPUによってICカードシステム上で実行されるプログラムとして構成される。
【0038】
本実施形態におけるICカードシステムは、図1に示す従来技術に係るICカードシステムの一般的なハードウェア構成と同じハードウェア構成を持つ。図1に示すように、ICカード6は、CPU1、不揮発性メモリ2、揮発性メモリ3及び通信インターフェース4から構成されており、通信インターフェース4を介して、端末装置5とコマンドの交換を行うことによって動作する。
【0039】
CPU1は、不揮発性メモリ2に格納された制御プログラムに従って、ICカード6の各構成要素を制御する。ここで、本実施形態では、不揮発性メモリ2の内容を書き換える操作命令は、書き込み命令及び消去命令である。そして、不揮発性メモリ2の内容を書き換えるコマンドを、端末装置5から通信インターフェース4を介してICカード6が受信した場合、CPU1は、不揮発性メモリ2に書き込まれた制御プログラムに従って、不揮発性メモリ2の内容を書き換えるための操作、即ち、書き込み命令及び消去命令の少なくとも何れか一方を実行し、これらの操作が終了すると、前記コマンドの実行結果を通信インターフェース4を介して端末装置5に送信する。
【0040】
不揮発性メモリ2は、図2(a)に示すように、ブロック1〜ブロックNで構成されている。不揮発性メモリ2は、CPU1がアクセス可能なアドレス空間として配置されており、ブロック1には予めICカード6の制御プログラムが格納されている。制御プログラムは、CPU1が実行可能な命令群で構成されており、不揮発性メモリ2へデータを書き込むための書き込みプログラム、及び不揮発性メモリ2のデータを消去するための消去プログラムが含まれる。本実施形態では、更に、制御プログラムには、ICカード6の初期化動作を行うための初期化プログラムが含まれる。ブロック2〜Nは、ICカード6のサービスを利用するためのアプリケーションプログラムや、各種データが格納される。
【0041】
揮発性メモリ3は、図2(b)に示すように、CPU1がアクセス可能なアドレス空間として配置されており、不揮発性メモリ2への書き込み命令を含む書き込みサブプログラムを格納する領域、不揮発性メモリ2の消去命令を含む消去サブプログラムを格納する領域、及び、その他の作業領域等から構成される。これらのサブプログラムは、予め不揮発性メモリ2に格納されており、不揮発性メモリ2に格納された制御プログラムの実行開始時に、初期化プログラムにおいて、不揮発性メモリ2から揮発性メモリ3の所定の領域へ転送して格納される。
【0042】
次に、CPU1による制御プログラムの動作について図8乃至図16を基に説明する。
【0043】
図8は、不揮発性メモリ2に格納されている制御プログラムの実行開始時における初期化プログラムの動作を示すフローチャートであり、不揮発性メモリ2に格納されている書き込みサブプログラム及び消去サブプログラムを揮発性メモリ3へ転送する時の動作を示している。
【0044】
CPU1は、不揮発性メモリ2の制御プログラムの実行開始後(ステップS501)、先ず、不揮発性メモリ2の初期化プログラムを実行し、不揮発性メモリ2に格納されている不揮発性メモリ2への書き込みサブプログラムを揮発性メモリ3の所定の領域へ転送して格納する(ステップS502)。このとき、不揮発性メモリ2への書き込み命令が格納されるべき揮発性メモリ3上のアドレスには、書き込み命令を書き込まずに、無効命令を書き込む。書き込む無効命令として、ここではCPU1のソフトウェアリセット命令を書き込む。次に、不揮発性メモリ2に格納されている不揮発性メモリ2の消去サブプログラムを揮発性メモリ3の所定の領域へ転送して格納する(ステップS503)。このとき、不揮発性メモリ2の消去命令が格納されるべき揮発性メモリ3上のアドレスには、消去命令を書き込まずに、無効命令を書き込む。書き込む無効命令として、ここではCPU1のソフトウェアリセット命令を書き込む。
【0045】
ここで、図9は、ステップS502において揮発性メモリ3へ転送され格納された、書き込みサブプログラムの配置を示している。この書き込みサブプログラムは、不揮発性メモリ2に格納されている書き込みプログラムから呼び出し可能なサブルーチンとして配置される。この時点で、不揮発性メモリ2への書き込み命令を格納すべき揮発性メモリ3のアドレスには、無効命令としてCPU1のソフトウェアリセット命令が配置されている。
【0046】
図10は、ステップS503において揮発性メモリ3へ転送され格納された、不揮発性メモリ2の消去サブプログラムの配置を示している。消去サブプログラムは、不揮発性メモリ2に格納されている消去プログラムから呼び出し可能なサブルーチンとして配置される。この時点で、不揮発性メモリ2の消去命令を格納すべき揮発性メモリ3のアドレスには、無効命令としてCPU1のソフトウェアリセット命令が配置されている。
【0047】
不揮発性メモリ2へのデータ書き込みについて、図11及び図12のフローチャートを基に説明する。
【0048】
図11は、不揮発性メモリ2に格納されている制御プログラムに含まれる書き込みプログラムの動作を示している。CPU1は、不揮発性メモリ2上の書き込みプログラムに従って、先ず、書き込み元のデータが格納された領域の先頭アドレスを変数SRCにセットする(ステップS601)。次に、書き込み先の不揮発性メモリ2上のアドレスを変数DSTにセットし(ステップS602)、書き込みデータ数Nを変数CNTにセットする(ステップS603)。
【0049】
続いて、CPU1は、揮発性メモリ3上の書き込み命令を格納すべきアドレスに既に書き込まれている無効命令としてのCPU1のソフトウェアリセット命令を、正規の書き込み命令に置き換える(ステップS604)。ここで、図15は、ステップS604において命令の置き換えを行った後の、揮発性メモリ3上の書き込みサブプログラムの配置を図示している。この時点で、揮発性メモリ3の書き込み命令を格納すべきアドレスには、正規の書き込み命令が配置されている。命令の置き換え後、CPU1は、図12に示す揮発性メモリ3上の書き込みサブプログラムを呼び出し(ステップS605)、揮発性メモリ3に格納された書き込みサブプログラムを実行する。CPU1は、書き込みサブプログラムの実行終了後、揮発性メモリ3に書き込まれている正規の書き込み命令を、無効命令としてのCPU1のソフトウェアリセット命令に置き換え(ステップS606)、書き込みプログラムを終了する(ステップS607)。
【0050】
図12は、ステップS502で予め揮発性メモリ3に転送された、書き込みサブプログラムの動作を示している。CPU1は、先ず、書き込みデータ数CNTを確認する(ステップS701)。ステップS701において書き込みデータ数CNTが0以外の場合、アドレスSRCが示す書き込み元のデータの格納領域から書き込みデータを取得する(ステップS702)。続いて、不揮発性メモリ2の書き込み先アドレスDSTに対して書き込み命令を実行し、データの書き込みを開始する(ステップS703)。データの書き込み完了を確認すると(ステップS704でYes分岐)、CPU1は、次のデータの書き込み準備のために、アドレスSRC及びアドレスDSTの値を次のアドレスの値に更新する。本実施形態では、アドレスSRC及びアドレスDSTの値を共に1増加させる(ステップS705)。更に、書き込みデータ数CNTを1減少させて(ステップS706)、ステップS701に遷移して以後の処理を継続する。CPU1は、ステップS701において、書き込みデータ数CNTが0となり、全ての書き込みが終了したと判定した場合に、書き込みサブプログラムを終了する(ステップS707)。
【0051】
次に、何らかの要因でCPU1が誤動作し、書き込みサブプログラムが格納された領域を含む揮発性メモリ3上の領域に、誤ってプログラムが分岐した場合について説明する。
【0052】
この場合は、不揮発性メモリ2上の書き込みプログラムが正しく実行されず、図11に示す書き込みプログラムのステップS604における命令の置き換えが実行されずに、揮発性メモリ3上の何れかの領域に分岐することとなる。このときの揮発性メモリ3上の書き込みサブプログラムの構成は、図9に示す構成であり、書き込み命令を格納すべき揮発性メモリ3のアドレスには、無効命令としてのCPU1のソフトウェアリセット命令が配置された状態となる。従って、図12に示すフローチャートにおいて、CPU1の暴走によって揮発性メモリ3へプログラムが分岐した場合には、ステップS703の書き込み命令は実行されず、実際には、ステップS703’の無効命令が実行される。ここでは、無効命令としてCPU1のソフトウェアリセット命令が書き込まれているので、リセットが発生し、不揮発性メモリ2への書き込みは実行されない。これによって、不揮発性メモリ2への誤書き込みを防止することができる。
【0053】
不揮発性メモリ2のデータ消去について、図13及び図14のフローチャートを基に説明する。図13は、不揮発性メモリ2に格納されている制御プログラムに含まれる消去プログラムの動作を示している。CPU1は、不揮発性メモリ2上の消去プログラムに従って、先ず、不揮発性メモリ2上の消去先のアドレスを変数DSTにセットする(ステップS801)。
【0054】
続いて、CPU1は、揮発性メモリ3上の消去命令を格納すべきアドレスに既に書き込まれている無効命令としてのCPU1のソフトウェアリセット命令を、正規の消去命令に置き換える(ステップS802)。ここで、図16は、ステップS802において命令の置き換えを行った後の、揮発性メモリ3上の消去サブプログラムの配置を示している。この時点で、揮発性メモリ3の消去命令を格納すべきアドレスには、正規の消去命令が配置されている。命令の置き換え後、CPU1は、図14に示す揮発性メモリ3上の消去サブプログラムを呼び出し(ステップS803)、揮発性メモリ3に格納された消去サブプログラムを実行する。CPU1は、消去サブプログラムの実行終了後、揮発性メモリ3に書き込まれている正規の消去命令を、無効命令としてのCPU1のソフトウェアリセット命令に置き換え(ステップS804)、消去プログラムを終了する(ステップS805)。
【0055】
図14は、ステップS503で予め揮発性メモリ3に転送された、消去サブプログラムの動作を示している。CPU1は、不揮発性メモリ2上の消去先のアドレスDSTに対して、消去命令を実行しデータの消去を開始する(ステップS901)。続いて、データの消去完了を確認すると(ステップS902でYes分岐)、CPU1は、消去サブプログラムを終了する(ステップS903)。
【0056】
次に、何らかの要因でCPU1が誤動作し、消去サブプログラムが格納された領域を含む揮発性メモリ3上の領域に、誤ってプログラムが分岐した場合について説明する。
【0057】
この場合は、図13に示す消去プログラムのステップS802における命令の置き換えが実行されずに、揮発性メモリ3上の何れかの領域に分岐することとなる。このときの揮発性メモリ3上の消去サブプログラムの構成は、図10に示す構成であり、消去命令を格納すべき揮発性メモリ3のアドレスには、無効命令としてのCPU1のソフトウェアリセット命令が配置された状態となる。従って、図14に示すフローチャートにおいて、CPU1の暴走によって揮発性メモリ3へプログラムが分岐した場合には、ステップS901の消去命令は実行されず、実際には、ステップS901’の無効命令が実行される。ここでは、無効命令としてCPU1のソフトウェアリセット命令が書き込まれているので、リセットが発生し、不揮発性メモリ2上のデータの消去は実行されない。これによって、不揮発性メモリ2の誤消去を防止することができる。
<別実施形態>
上記実施形態では、図8のステップS502及びステップS503、図11のステップS606、図13のステップS804において、揮発性メモリ3上の書き込み命令及び消去命令を格納すべきアドレスに書き込む無効命令として、CPU1のソフトウェアリセット命令を適用した例について説明したが、CPU1が実行可能な別の命令を適用するのも好適である。実行可能な別の命令としては、CPU1のNOP命令のような無操作命令、CPU1の未定義命令等がある。
【0058】
無効命令として無操作命令を用いた場合について説明する。CPU1の暴走時、揮発性メモリ3の書き込みサブプログラムの領域に分岐したときには、図12のステップS703’において不揮発性メモリ2は操作されず次のステップに進むこととなる。同様に、CPU1の暴走時、揮発性メモリ3の消去サブプログラムの領域に分岐したときには、図14のステップS901’において不揮発性メモリ2は操作されず次のステップに進むこととなる。従って、無効命令として無操作命令を用いた場合にも、無効命令としてソフトウェアリセット命令を用いた場合と同様に、不揮発性メモリ2への誤書き込み及び誤消去を防止することができる。
【0059】
無効命令としてCPU1の未定義命令を用いた場合について説明する。CPU1の暴走時、揮発性メモリ3の書き込みサブプログラムの領域に分岐したときには、図12のステップS703’ において不揮発性メモリ2は操作されず、未定義命令実行エラーが検出される。同様に、CPU1の暴走時、揮発性メモリ3の消去サブプログラムの領域に分岐したときには、図14のステップS901’において不揮発性メモリ2は操作されず、未定義命令実行エラーが検出される。従って、無効命令として未定義命令を用いた場合にも、無効命令としてソフトウェアリセット命令を用いた場合と同様に、不揮発性メモリ2への誤書き込み及び誤消去を防止することができる。
【0060】
尚、本発明に係る不揮発性メモリシステムは、不揮発性メモリ、揮発性メモリ、及び演算処理装置の何れかについて、複数備えるシステムに適用するのも好適である。また、これらの構成が複数のシステムに搭載されている場合に適用するのも好適である。
【図面の簡単な説明】
【0061】
【図1】ICカードシステムの構成を示すブロック図
【図2】ICカードシステムに搭載される不揮発性メモリ及び揮発性メモリの構成を示す説明図
【図3】従来技術に係るICカードシステムに搭載される不揮発性メモリに格納された制御プログラムの初期化動作を示すフローチャート
【図4】従来技術における不揮発性メモリの制御プログラムの動作を示すフローチャート
【図5】従来技術における不揮発性メモリの書き込みサブプログラムの動作を示すフローチャート
【図6】従来技術における不揮発性メモリの制御プログラムの動作を示すフローチャート
【図7】従来技術における不揮発性メモリの消去サブプログラムの動作を示すフローチャート
【図8】本発明に係るICカードシステムに搭載される不揮発性メモリに格納された制御プログラムの初期化動作を示すフローチャート
【図9】本発明に係るICカードシステムに搭載された揮発性メモリに転送された書き込みサブプログラムの配置を示す説明図
【図10】本発明に係るICカードシステムに搭載された揮発性メモリに転送された消去サブプログラムの配置を示す説明図
【図11】本発明に係る制御プログラムの動作を示すフローチャート
【図12】本発明に係る書き込みサブプログラムの動作を示すフローチャート
【図13】本発明に係る制御プログラムの動作を示すフローチャート
【図14】本発明に係る消去サブプログラムの動作を示すフローチャート
【図15】命令置き換え後の本発明に係る揮発性メモリの書き込みサブプログラムの配置を示す図
【図16】命令置き換え後の本発明に係る揮発性メモリの消去サブプログラムの配置を示す図
【符号の説明】
【0062】
1 CPU
2 不揮発性メモリ
3 揮発性メモリ
4 通信インターフェース
5 端末装置
6 ICカード
【特許請求の範囲】
【請求項1】
不揮発性メモリと、前記不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリを制御する演算処理装置と、を備える不揮発性メモリシステムであって、
初期化の際に、前記不揮発性メモリに対する前記操作命令を格納するための前記揮発性メモリの所定のアドレスに、前記操作命令に代えて無効命令を書き込む第1無効命令書込手段と、
前記不揮発性メモリの操作開始前に、前記無効命令を格納した前記揮発性メモリの前記所定のアドレスに前記操作命令を書き込み、前記操作命令に基づいて前記不揮発性メモリを操作する制御手段と、
前記不揮発性メモリの操作実行後に、前記揮発性メモリの前記所定のアドレスに、無効命令を書き込む第2無効命令書込手段と、を備えることを特徴とする不揮発性メモリシステム。
【請求項2】
前記プログラムが、前記不揮発性メモリへの書込命令を含み、前記第1無効命令書込手段及び第2無効命令書込手段が、前記書込命令を格納する前記揮発性メモリの所定のアドレスに前記無効命令を書き込むことを特徴とする請求項1に記載の不揮発性メモリシステム。
【請求項3】
前記プログラムが、前記不揮発性メモリへの消去命令を含み、前記第1無効命令書込手段及び第2無効命令書込手段が、前記消去命令を格納する前記揮発性メモリの所定のアドレスに前記無効命令を書き込むことを特徴とする請求項1または2に記載の不揮発性メモリシステム。
【請求項4】
前記無効命令が、前記演算処理装置をリセットする命令であることを特徴とする請求項1乃至3の何れか1項に記載の不揮発性メモリシステム。
【請求項5】
前記無効命令が、前記演算処理装置における無操作命令であることを特徴とする請求項1乃至3の何れか1項に記載の不揮発性メモリシステム。
【請求項6】
前記無効命令が、前記演算処理装置における未定義命令であることを特徴とする請求項1乃至3の何れか1項に記載の不揮発性メモリシステム。
【請求項7】
請求項1乃至6に記載の不揮発性メモリシステムにおける各手段の機能をコンピュータ上で実行するプログラムステップを含むことを特徴とする不揮発性メモリ制御プログラム。
【請求項1】
不揮発性メモリと、前記不揮発性メモリの内容を書き換える操作命令を含むプログラムを格納する揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリを制御する演算処理装置と、を備える不揮発性メモリシステムであって、
初期化の際に、前記不揮発性メモリに対する前記操作命令を格納するための前記揮発性メモリの所定のアドレスに、前記操作命令に代えて無効命令を書き込む第1無効命令書込手段と、
前記不揮発性メモリの操作開始前に、前記無効命令を格納した前記揮発性メモリの前記所定のアドレスに前記操作命令を書き込み、前記操作命令に基づいて前記不揮発性メモリを操作する制御手段と、
前記不揮発性メモリの操作実行後に、前記揮発性メモリの前記所定のアドレスに、無効命令を書き込む第2無効命令書込手段と、を備えることを特徴とする不揮発性メモリシステム。
【請求項2】
前記プログラムが、前記不揮発性メモリへの書込命令を含み、前記第1無効命令書込手段及び第2無効命令書込手段が、前記書込命令を格納する前記揮発性メモリの所定のアドレスに前記無効命令を書き込むことを特徴とする請求項1に記載の不揮発性メモリシステム。
【請求項3】
前記プログラムが、前記不揮発性メモリへの消去命令を含み、前記第1無効命令書込手段及び第2無効命令書込手段が、前記消去命令を格納する前記揮発性メモリの所定のアドレスに前記無効命令を書き込むことを特徴とする請求項1または2に記載の不揮発性メモリシステム。
【請求項4】
前記無効命令が、前記演算処理装置をリセットする命令であることを特徴とする請求項1乃至3の何れか1項に記載の不揮発性メモリシステム。
【請求項5】
前記無効命令が、前記演算処理装置における無操作命令であることを特徴とする請求項1乃至3の何れか1項に記載の不揮発性メモリシステム。
【請求項6】
前記無効命令が、前記演算処理装置における未定義命令であることを特徴とする請求項1乃至3の何れか1項に記載の不揮発性メモリシステム。
【請求項7】
請求項1乃至6に記載の不揮発性メモリシステムにおける各手段の機能をコンピュータ上で実行するプログラムステップを含むことを特徴とする不揮発性メモリ制御プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2006−139341(P2006−139341A)
【公開日】平成18年6月1日(2006.6.1)
【国際特許分類】
【出願番号】特願2004−325953(P2004−325953)
【出願日】平成16年11月10日(2004.11.10)
【出願人】(000005049)シャープ株式会社 (33,933)
【Fターム(参考)】
【公開日】平成18年6月1日(2006.6.1)
【国際特許分類】
【出願日】平成16年11月10日(2004.11.10)
【出願人】(000005049)シャープ株式会社 (33,933)
【Fターム(参考)】
[ Back to top ]