説明

不揮発性メモリの更新方法

【課題】初期値のままシステム運用が継続されるのを防いで、信頼性の高いシステムを実現しうる不揮発性メモリの更新方法を提供する。
【解決手段】不揮発性メモリ(EEPROM112)の更新方法で、不揮発性メモリから更新対象となるパラメータデータを含むブロックをRAM113に読み込み、このパラメータデータの正誤を検出し、エラーが検出されたら仮更新データを生成する一方、エラーが検出されなかったら正更新データを生成し、仮更新データ又は正更新データを不揮発性メモリに書き込み、上位装置に対し、パラメータ更新が完了した旨の通知を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えばEEPROM等の不揮発性メモリの更新方法に関し、特に、システムの信頼性を向上させることが可能なものに関する。
【背景技術】
【0002】
従来より、給電が遮断されても記憶内容を保持することができるとともに、電気的に内容を書き換えることが可能なメモリとして、不揮発性メモリ(例えばEEPROMやフラッシュメモリなど)が利用されている(例えば特許文献1など)。この不揮発性メモリは、その性質上、一部のデータ(例えば数バイト)を更新する場合であっても、それが含まれるブロック(1ブロック、例えば16バイト)全体を書き換える必要がある。すなわち、不揮発性メモリ内の1ブロック全体を、一旦RAMにコピーし、RAM上で一部のデータを書き換えた後、書き換え後の1ブロック全体を、不揮発性メモリに書き込むようにしている。このようなブロック単位での書き換えに伴って、ブロック単位でのデータ正当性を管理する必要があることから、一般的には、データが正常に書き込まれているか否かを認識するために、各ブロックに対して、誤り検出データ(CRCやBCCなど)を同時に書き込むような構成としている。
【0003】
ここで、上位装置(例えばATMなど)が、下位装置(例えばカードリーダなど)に対して処理実行の命令を出し、それを受けて下位装置が処理を実行し、その処理結果を上位装置に通知するようなシステムにおいて、下位装置には、不揮発性メモリが搭載されているとともに、この不揮発性メモリに下位装置自身の様々な機能動作を設定するデータ(例えば、排出リトライ回数や磁気リードリトライ回数など)が保持され、そのデータをもとに各機能動作を実施するような構成になっており、上位装置は、下位装置の様々な機能動作を設定するデータを、この不揮発性メモリに書き込む命令(データ更新命令)を有しているシステムを考える。
【0004】
また、下位装置が、不揮発性メモリ内のあるデータを更新する命令を上位装置から受けて、不揮発性メモリ内の該当データを更新するために、該当データを含むブロック全体をRAM上に展開して(読み出して)みたところ、このブロックの誤り検出データがエラーとなっており、ブロック内の何れかのデータが何らかの要因で破損していることが判明したと考える。但し、ブロック内の何れのデータが破損しているのかを判断することはできない。
【0005】
このような状況において、例えば、不揮発性メモリから読み出したブロックに対し、更新対象データのみを上書き(書き換え)し、誤り検出データも更新後のブロックを基に再計算・更新(書き換え)した後、書き換え後のブロック全体を不揮発性メモリのもとの位置に書き込むこととした場合、下位装置の品質上、危険な場合がある。なぜなら、今回更新対象となっていた一部のデータ以外のデータが破損してエラーになっていた場合には、そのエラーデータが正しい値とみなされて(例えば、4回が正しい値なのに、20回というエラーデータが正しい値とみなされて、)不揮発性メモリに書き込まれ、加えて、誤り検出データもその値を元に計算されて書き込まれることになるので、そのデータをもとに動作する機能(例えば排出リトライや磁気リードリトライなど)は、本来エラーであるはずのデータ(例えば20回というエラーデータ)をもとに動作することになり、最悪の場合、下位装置で扱う対象物の破損にもつながり兼ねない(例えば、4回の排出リトライなら問題ないが、20回も排出リトライが実行されると、カード磨耗による劣化が進行してしまう虞がある)。
【0006】
そこで、従来は、RAM上に展開したブロックの誤り検出データがエラーとなっていた場合には、そのブロックの全データを初期値(出荷時の値や標準値などのデフォルト値)に書き換えてしまい、上位装置には、データ更新時にエラーを検出した旨の通知をし、該当ブロックの全データの更新を促すようなシステムを構築するのが一般的となっている。
【0007】
【特許文献1】特開平8−287697号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、上述した従来のシステム構成には、以下のような問題がある。
【0009】
まず、データ書き込み命令に対してエラー通知を受け、(初期値に書き換えられた)該当ブロックの全データの更新を促された上位装置は、即座に該当ブロックのデータを更新しなければならない。仮に、即座に該当ブロックのデータを更新せずに(初期値データを本来の適切なデータに更新せずに)、システム運用を初期値データのまま継続してしまうと、該当ブロック内のデータをもとに動作する機能は、その初期値データをもとに動作することになり(例えば、本来は4回が正しい値なのに、この4回ではなく、初期値の2回というデータをもとに動作することになり)、致命的な誤動作にはつながらないものの、本来期待している動作とは異なる状態(例えばリトライ回数が4回ではなく2回になっている状態)のまま処理を継続させてしまう。その結果、予期せぬエラーを上位装置に通知してしまう(例えば、本来は4回のリトライを経てエラーだったら上位装置に通知するシステムであるはずが、初期値の2回のリトライを経た段階で、エラーが上位システムに通知されてしまう)、という信頼性の低いシステムとなる虞がある。そのため、上述のとおり、即座に該当ブロックのデータを本来のデータに更新しなければならないが、実際問題として、このような迅速対応が不可能な上位装置が存在する。
【0010】
また、即座に該当ブロックのデータを本来のデータに更新することができる上位装置であったとしても、該当ブロックのデータを1つ1つ各コマンドにより更新している間に、何らかのトラブル(例えばシステムダウンなど)で更新処理が中断された場合、誤り検出データは正常に書き込まれているので(誤り検出データは、該当ブロックのデータを1つ1つ各コマンドにより更新する度に、再計算・更新されるので)、各機能実行時にはエラーを検出することができず、データが更新中であったことを認識する手段がない。このような状況下では、(未だ更新が行われておらず)初期値で動作する機能と、更新後の正しい動作をする機能とが混在しているにも拘らず処理が継続されることになり、やはり上述同様、該当ブロックのデータが本来のデータに更新されるまでの間、信頼性の低いシステムとなったり、予期せぬエラーを上位装置に通知してしまったりする、という欠点がある。
【0011】
本発明は、このような点に鑑みてなされたものであり、その目的は、初期値のままシステム運用が継続されるのを防いで、信頼性の高いシステムを実現しうる不揮発性メモリの更新方法を提供することにある。
【課題を解決するための手段】
【0012】
以上のような課題を解決するために、本発明は、以下のものを提供する。
【0013】
(1) 上位装置からのコマンドにより更新可能であって、下位装置の作動を制御するパラメータに係るパラメータデータと、前記パラメータデータの正誤を検出する誤り検出データと、が記憶されたブロックを有する不揮発性メモリに対して、前記パラメータデータを更新する不揮発性メモリの更新方法であって、前記上位装置からのパラメータ更新コマンドに基づいて、前記不揮発性メモリから更新対象となるパラメータデータを含むブロックを所定の作業領域に読み込む第1ステップと、前記誤り検出データを用いて、前記第1ステップにより読み込んだブロックにおけるパラメータデータの正誤を検出する第2ステップと、前記第2ステップによりエラーが検出された場合、前記更新対象となるパラメータデータを更新するとともに、前記更新対象となるパラメータデータ以外のデータを不特定データに更新することによって、前記作業領域において仮更新データを生成する第3ステップと、前記第2ステップによりエラーが検出されなかった場合、前記更新対象となるパラメータデータのみを更新することによって、前記作業領域において正更新データを生成する第4ステップと、前記第3ステップ又は前記第4ステップにより生成された前記仮更新データ又は前記正更新データを前記不揮発性メモリに書き込む第5ステップと、前記第5ステップの処理が終了した後、前記上位装置に対し、パラメータ更新が完了した旨の通知を行う第6ステップと、を含むことを特徴とする不揮発性メモリの更新方法。
【0014】
本発明によれば、例えばEEPROM等の不揮発性メモリの更新方法において、不揮発性メモリから更新対象となるパラメータデータを含むブロックを所定の作業領域(例えばRAMなど)に読み込み、そのパラメータデータの正誤を検出し(エラー検出し)、エラーが検出された場合は、更新対象となるパラメータデータを更新するとともに、それ以外のデータを不特定データに更新して、仮更新データを生成する。一方、エラーが検出されなかった場合は、更新対象となるパラメータデータのみを更新して、正更新データを生成する。そして、仮更新データ又は正更新データを不揮発性メモリに書き込むとともに、下位装置から上位装置に対してパラメータ更新が完了した旨の通知がなされる。
【0015】
従って、例えば、データ書き込み命令に対してエラー通知を受けたとき、即座に(初期値に書き換えられている)該当ブロックのデータを本来のデータに更新することができない上位装置の場合、従来は、初期値のままシステム運用が継続され、予期せぬエラーを上位装置に通知するような信頼性の低いシステムになる虞があった。しかし、本発明によれば、エラーが検出された場合、初期値ではなく上述した仮更新データが不揮発性メモリに書き込まれることとしているので、従来のように初期値のままシステム運用が継続されることを防ぐことができ、ひいては信頼性の高いシステムを実現することができる。
【0016】
また、例えば、データ書き込み命令に対してエラー通知を受けたとき、即座に(初期値に書き換えられている)該当ブロックのデータを本来のデータに更新することができる上位装置であったとしても、従来は、システムダウン等で更新処理が中断されると、初期値のままシステム運用が継続され、予期せぬエラーを上位装置に通知するような信頼性の低いシステムになる虞があった。しかし、本発明によれば、エラーが検出された場合、初期値ではなく上述した仮更新データが不揮発性メモリに書き込まれることとしているので、従来のように初期値のままシステム運用が継続されることを防ぐことができ、ひいては信頼性の高いシステムを実現することができる。
【0017】
ここで、「不特定データ」とは、下位装置の作動を制御するパラメータとしての意味をもたないデータをいう。従って、例えば、"0000"や"0xFF"などのデータが挙げられる。また、例えば"0010"などのデータであっても、それが下位装置の作動を制御するパラメータとして意味をもたないデータであれば、ここでいう「不特定データ」に含まれるものとする。
【0018】
また、第3ステップにおいて、「更新対象となるパラメータデータ以外のデータを不特定データに更新する」とあるが、この「更新対象となるパラメータ以外のデータ」として、「誤り検出データ」や、その他、不特定データに更新する必要性の低いデータについては、除かれていてもよい。
【0019】
(2) 前記不揮発性メモリの更新方法は、さらに、前記第6ステップの処理が終了した後、前記下位装置が前記上位装置から受信した動作指令コマンドに基づいて、前記不揮発性メモリから動作指令対象となるパラメータデータを含むブロックを所定の作業領域に読み込む第7ステップと、前記誤り検出データを用いて、前記第7ステップにより読み込んだブロックにおけるパラメータデータの正誤を検出する第8ステップと、前記動作指令対象となるパラメータデータが前記不特定データであるか否かを判定する第9ステップと、を含み、第8ステップによりエラーが検出された場合、又は、第9ステップにより前記不特定データであると判定された場合には、前記第1ステップ、前記第2ステップ、前記第3ステップ又は前記第4ステップ、前記第5ステップ、前記第6ステップが順次実行されることを特徴とする(1)記載の不揮発性メモリの更新方法。
【0020】
本発明によれば、下位装置から上位装置に対して「パラメータ更新が完了した旨の通知」が行われた後、上位装置から動作指令コマンドが送られた場合において、不揮発メモリから動作指令対象となるパラメータデータを含むブロックを作業領域(例えばRAMなど)に読み込み、そのパラメータデータの正誤を検出し(エラー検出し)、動作指令対象となるパラメータデータが不特定データであるか否かを判定し、エラーが検出された或いは不特定データであると判定された場合には、上述した第1ステップ〜第6ステップ(第3ステップと第4ステップはいずれか一方)が順次実行されることとしたので、上位装置から動作指令コマンドが送られた段階で、不特定データは正常なデータに更新されることになる。
【0021】
従って、初期値ではなく正常なデータでシステム運用を継続することができ、ひいては信頼性の高いシステムを実現することができる。
【0022】
(3) 前記動作指令対象となるパラメータデータが全て前記不特定データでなくなるまで、繰り返し処理が実行されることを特徴とする(2)記載の不揮発性メモリの更新方法。
【0023】
本発明によれば、上述した動作指令対象となるパラメータデータが全て不特定データでなくなるまで、(2)に記載の更新処理が繰り返し実行されることとしたので、信頼性の高いシステムを維持しつつ、正常に、下位装置の作動を制御することができる。
【0024】
(4) 前記不特定データは、0xFFのデータであることを特徴とする(1)から(3)のいずれか記載の不揮発性メモリの更新方法。
【0025】
本発明によれば、上述した不特定データは、一般的に、下位装置の作動を制御するパラメータとして意味をもたない"0xFF"のデータであることとしたので、システムの汎用性を高めることができる。
【発明の効果】
【0026】
以上説明したように、本発明に係る不揮発性メモリの更新方法によれば、予期せぬエラーが上位装置に通知されることや、初期値のままシステム運用が継続されることを防いで、信頼性の高いシステムを実現することができる。
【発明を実施するための最良の形態】
【0027】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
【0028】
[概要]
図1は、本発明の実施の形態に係る不揮発性メモリの更新方法の概要を説明するための説明図である。
【0029】
図1に示すように、EEPROM(のメモリ領域)は、書き換え最小単位となるブロック(16バイト)を複数有しており(図1(a)参照)、そのうちの1個を拡大した図が、図1(b)に示す図である。図1(b)に示すブロックは、各機能のリトライ回数を格納するエリアであって、現在は、取り込みリトライ回数:4、排出リトライ回数:4、キャプチャーリトライ回数:3、フォワード搬送リトライ回数:3、バックワード搬送リトライ回数:3、磁気リードリトライ回数5、磁気ライトリトライ回数:5、シャッタオープンリトライ回数3、シャッタクローズリトライ回数:3、IC接点ONリトライ回数:2、IC接点OFFリトライ回数:2、更には、CRC(誤り検出データ)が記憶されている。なお、未書き込み状態のメモリ領域には、"0xFF"が記憶されている。
【0030】
このような状況において、磁気ライトリトライ回数(5回)についてデータ破損が発生し、20回という誤った値になってしまった後、排出リトライ回数(4回)を6回に更新するための書き込み命令(データ更新命令)が、上位装置12(後述する図3参照)から下位装置11(後述する図3参照)に送られてきたと想定する。
【0031】
このデータ更新命令(4回→6回)を受信した下位装置11は、まず、排出リトライ回数が記憶されているブロック全体(図1(b)参照)をRAM113(後述する図3参照)上に展開した後(読み出した後)、CRCをチェックする。そして、上述したように、磁気ライトリトライ回数は誤った値(20回)になっていることから、CRCのチェック結果はエラーとなる(図1(c)参照)。
【0032】
CRCエラーの判明後、下位装置11は、排出リトライ回数は4回から6回に更新するとともに、それ以外のパラメータを全て"0xFF"(不特定データの一例)に更新する。加えて、CRCも、更新後のデータに基づいて再計算・更新する。その結果、図1(d)に示すように、排出リトライ回数として6回が記憶される一方で、CRCを除くその他のメモリ領域には"0xFF"が記憶されている状態になる。
【0033】
その後、下位装置11は、図1(d)に示すブロック内容を、再びEEPROMの所定位置(元の記憶領域)に書き込んだ後(図1(e)参照)、上位装置12に対し、データ更新正常終了を通知する(図1(f))。このデータ更新正常終了通知は、上述したCRCエラーを通知するものではない。
【0034】
このようにして、図1(d)に示すブロック内容でシステム運用が継続されている最中に、上位装置12から下位装置11に磁気ライト命令がなされたとする。このとき、磁気ライトリトライを何回すればいいか確認するため、磁気ライトリトライ回数の読み出しが行われるが、上述のとおり、EEPROM内の磁気ライトリトライ回数を記憶するメモリ領域には、"0xFF"が記憶されており、(何回という動作パラメータが)何も記憶されていない。従って、この段階で、下位装置11は、磁気ライトリトライ回数が未設定である旨の未設定エラーを上位装置12に通知する(図1(g))。
【0035】
この未設定エラー通知を受けた上位装置12は、磁気ライトリトライ回数を、現在の"0xFF"から正しい値の5回に更新するための書き込み命令(データ更新命令)を下位装置11に送る。そして、下位装置11では、この書き込み命令によって、磁気ライトリトライ回数が5回に設定されるまでは、磁気ライト命令に対して動作パラメータが設定されていない旨の未設定エラーを上位装置12に通知する(図1(h))。上位装置12は、磁気ライトリトライ回数を、現在の"0xFF"から正しい値の5回に更新するための書き込み命令(データ更新命令)を下位装置11に送り、正常に更新できたところで、再び磁気ライトコマンドを実行する。
【0036】
なお、この書き込み命令によって更新されるデータは、磁気ライトリトライ回数だけであって、他のリトライ回数については "0xFF"が記憶されたままである。また、他のリトライ回数については、各リトライ回数の読み出しが行われる時点で、上位装置12から書き込み命令が発せられ、その都度、正しい値に設定される。
【0037】
このように、本実施形態に係る不揮発性メモリの更新方法によれば、初期値のままシステム運用が継続されるのを防ぎ、信頼性の高いシステムを実現することができる。具体的には、従来の更新方法では、CRCエラーの判明後、図2の説明図に示すように、ブロックの全データを初期値に書き換えて(図2(d)参照。図2(a)〜図2(c)は、図1(a)〜図1(c)と同じ)、これらの初期値に併せてCRCが再計算・更新され、図2(d)に示すブロック内容が、再びEEPROMの所定位置(元の記憶領域)に書き込まれていた(図2(e))。そして、上位装置12に対し、CRCエラーを通知していた(図2(f))。このような従来の更新方法だと、図2(d)に示すブロック内のデータをもとに動作する機能(リトライ機能)は、初期値データをもとに動作することになる。これは、致命的な誤動作にはつながらないものの、予期せぬエラーを上位装置12に通知することになる。例えば、磁気ライトリトライ回数は、本来5回が望ましい値であるのに、初期値である3回となっているため、4回のリトライでかろうじて書き込みできるような劣化したカードが、3回のリトライの後ライトエラーと判定されて使用できないカードとみなされシステムが中断することになり、システムの品質低下に繋がってしまう。
【0038】
一方で、図1に示した本実施形態に係る不揮発性メモリの更新方法によれば、上述したように、各リトライ回数の読み出しが行われる時点でエラーを通知し、それを受けて上位装置12から書き込み命令が発せられ、その都度、正しい値に設定される。従って、図2を用いて説明したような磁気ライトリトライ回数が初期値である3回のままの状態でシステム運用が継続される事態を避けることができる。また磁気ライトリトライ回数をコマンドにより再設定するまでは磁気ライトが実行されないので、磁気ライトは必ず望ましいリトライ回数設定のもとで実施されることになる。その結果信頼性の高いシステムを実現することができる。
【0039】
[詳細]
図3は、本発明の実施の形態に係る不揮発性メモリを有するカードリーダ11(下位装置11の一例)の電気的構成を示すブロック図である。なお、本実施形態では、不揮発性メモリとしてEEPROM112を用いている。
【0040】
図3に示すように、カードリーダ11は、例えばATMなどの上位装置(HOST)12から処理実行命令(コマンド)を受け取って、その処理実行命令に応じた処理を実行し、その後、処理実行結果(レスポンス)を上位装置12に返すことになっている。
【0041】
カードリーダ11の電気的な内部構成(主要部のみ)について説明すると、主に、CPU111と、EEPROM112と、RAM113と、を有している。なお、その他、磁気カードと磁気データの送受信を行う磁気ヘッドや、カード上のIC端子に当接され、CPU111によるデータの読み書きを可能にするIC接点や、駆動ローラを回転駆動するモータや、カードの出入りを規制するシャッタや、カード位置を認識するためのフォトセンサなども有している。そして、図示しないが、CPU111には、カードリーダを制御する制御プログラムや初期値などの情報を格納するROMが組み込まれている。
【0042】
CPU111に接続されたEEPROM112は、給電が遮断されても記憶内容を保持することができるものであって、電気的に内容を書き換えることが可能なものである。そして、上述したシャッタの開閉リトライ回数や、フォトセンサによって検出されるカードを排出する際の(又は取り込む際の)リトライ回数などを記憶している。
【0043】
図4は、本発明の実施の形態に係る不揮発性メモリの更新方法を示すフローチャートである。特に、図4では、カードリーダ11における処理に着目して説明する。
【0044】
図4において、まず、カードリーダ11(CPU111)が上位装置12からデータ更新コマンドを受信したとする(ステップS1)。例えば、データ更新コマンドとして、排出リトライ回数(4回)を6回に更新するコマンドを考える。そうすると、CPU111は、EEPROM112より、更新対象のデータ(排出リトライ回数)が含まれるブロック(16バイト)のデータをRAM113の作業領域(ワーキングエリア)に読み出す(ステップS2)。
【0045】
次に、CRCのチェックが行われる(ステップS3)。より具体的には、CPU111は、ブロック内のデータが正常に記憶されていなければエラー数字列となるCRC(Cyclic Redundancy Check)符号をチェックする。なお、エラーチェックの方法としては、CRC以外にBCC(Block Check Character)やチェックサムなど、如何なる方法を採用しても構わない。
【0046】
CPU111は、CRCエラーが発生したと判定した場合には(ステップS3:NO)、処理をステップS4に移す。具体的には、CPU111は、RAM113の作業領域のブロックデータ中の更新対象データ(排出リトライ回数)を、データ更新コマンドに基づいて、4回から6回に更新する(ステップS4)。
【0047】
そして、CPU111は、データ更新コマンドに基づく更新に加えて、RAM113の作業領域のそれ以外の機能に関するデータの全てを"0xFF"に書き換える(ステップS5)。すなわち、更新対象のデータ(排出リトライ回数)以外のデータ、例えば磁気ライトリトライ回数が誤った値(例えば5回→20回)になっていると、上述のとおり、更新対象データ以外のデータの一つとして"0xFF"で書き換える処理が実行されることになる。なお、本実施形態では、"0xFF"に書き換えることとしているが、"0xFF"以外のものであっても、特段の意味を有しないもの(例えば設定範囲外の値や、"0000"など)であれば、如何なるものであってもよい。
【0048】
次に、CPU111は、RAM113の作業領域におけるブロックデータのCRCを再計算する(ステップS6)。そして、再計算後のCRCに更新した後、このブロックデータをEEPROM112の元の記憶領域に書き込む(ステップS7)。その後、上位装置11に対し、書き込み正常終了通知(データ更新正常終了通知)を行う(ステップS8)。なお、ステップS8のデータ更新正常終了通知が行われたケースを「終了A」とする。
【0049】
一方で、上述したステップS3において、CPU111によって、CRCエラーは発生していないと判定された場合には(ステップS3:YES)、RAM113の作業領域のブロックデータ中の更新対象データが更新され(ステップS9)、作業領域のブロックデータのCRCが再計算され(ステップS10)、作業領域のブロックデータがEEPROM112の元の記憶領域に書き込まれた後(ステップS11)、上位装置11に対し、書き込み正常終了通知が行われる(ステップS12)。なお、ステップS11の書き込み正常終了通知が行われたケースを「終了B」とする。
【0050】
このように、ステップS3におけるCRCエラーが発生していなければ、更新対象データ以外のデータを"0xFF"で書き換える処理は実行されず、ステップS3におけるCRCエラーが発生していれば、更新対象データ以外のデータを"0xFF"で書き換える処理が実行される。
【0051】
図5は、システム運用が継続されている最中に、カードリーダ11が上位装置12からコマンド(例えば磁気ライト命令など)を受信したときの情報処理の流れを示すフローチャートである。特に、図5では、カードリーダ11における処理に着目して説明する。
【0052】
動作コマンドを受信したカードリーダ11のCPU111(ステップS20)は、EEPROM112より、対象機能(例えば磁気ライト機能)を動作させるのに必要なデータ(例えば磁気ライトリトライ回数)が含まれるブロックのデータをRAM113の作業領域に読み出す(ステップS21)。
【0053】
次に、CRCのチェックが行われる(ステップS22)。CPU111は、CRCエラーが発生していると判定した場合には(ステップS22:NO)、上位装置12に対して、EEPROM112のリードエラー通知を行うとともに(ステップS23)、上位装置12は、該当機能パラメータ設定コマンドを送信する(ステップS24)。
【0054】
一方で、CPCエラーが発生していないと判定した場合(ステップS22:YES)、CPU111は、該当機能のパラメータ(例えば磁気ライトリトライ回数)が"0xFF"となっているか否かを確認する(ステップS30)。"0xFF"となっていなければ(ステップS30:NO)、該当機能動作が実施される(ステップS32。例えば、現在記憶されている磁気ライトリトライ回数に基づいて、磁気ライト処理が実行される)。そして、動作コマンドが完了する(ステップS33)。なお、ステップS33で終了するケースを「終了C」とする。
【0055】
一方で、"0xFF"となっていれば(ステップS30:YES)、カードリーダ11から上位装置12に対してパラメータ未設定エラー通知が行われるとともに(ステップS31)、上位装置12は、該当機能パラメータ設定コマンドを送信する(ステップS24)。このように、CPU111が上位装置12に対して未設定エラーを通知するのは、読み出した該当機能のパラメータが"0xFF"となっている場合である。
【0056】
EEPROM112のリードエラー通知(ステップS23)およびパラメータ未設定エラー通知(ステップS31)の後、上位装置12から、該当機能パラメータ設定コマンドを受信したカードリーダ11のCPU111は(ステップS25)、図4(フローチャート1)に示す手順に従って、該当機能パラメータの設定(該当機能パラメータの更新)を実行する(ステップS26)。そして、図4を用いて説明したとおり、書き込みが正常に終了すると(ステップS1〜ステップS7の処理が終了すると)、上位装置12に対して書き込み正常終了通知が行われ(ステップS27)、上位装置12は、該当コマンド(例えば磁気ライト命令など)を再送信し(ステップS28)、該当コマンドが再実行されることになる(ステップS20)。
【0057】
以上説明したように、図4及び図5に示すフローチャートによれば、初期値のままシステム運用が継続されるのを防ぎ、信頼性の高いシステムを実現することができる。従来の更新方法では、磁気ライトリトライ回数(希望回数5回)を初期状態として3回に書き換えてしまうので(図2参照)、ライトエラーだった場合において、本来ならば5回までリトライをし、それまでにライトが成功すれば通常運用が継続できるシステムであるべきところ、3回のリトライでライト実行を諦めてしまうことになる。そのため、システム運用を中断せざるを得ないケースが生じ、データ再更新完了までは、システムとして信頼性が低いものとなっていた。また、更新手続の途中で処理が中断されてしまった場合、その後、信頼性が低くなっていることに気付かずシステム運用が継続されてしまう可能性もあった。さらに、対象データがICカードの規格を選択するパラメータであったとしたら、初期設定が本来扱うべきICカードの規格と異なる場合は、初期設定に戻されていることにより、該当のICカードに対して適正な処理を実行できないことになり、予期せぬエラーが上位装置12に返され、その時点でシステム運用が中断されてしまうことにもなり兼ねなかった。
【0058】
これに対し、本実施形態に係る不揮発性メモリの更新方法によれば、磁気ライトを実行しようとして不揮発性メモリの該当領域を読み込んで、該当領域のCRCがエラーであったならば(図5のステップS22:NO)、EEPROMリードエラーを、上位装置12に返し(図5のステップS23)、また、該当領域のCRCにエラーがなかった(図5のステップS22:YES)が、"0xFF"であったならば(図5のステップS30:YES)、パラメータ未設定エラーを上位装置12に返して(図5のステップS31)、パラメータ設定を上位装置12に促すことができるので、上位装置12は、このエラー通知を受けて、カードリーダ11に対してその場で正常なデータに書き換える命令を送り(図5のステップS24)、続けて、再度磁気ライト命令を送るようなシステムを構築することができる。従って、信頼性を低下させることなくシステムの継続運用を行うことができる。また、ICカード処理を実行しようとした場合に、パラメータ未設定エラー或いはEEPROMパラメータリードエラーが返されたならば、即座にIC関連のパラメータの再設定を行って、引き続いて、ICカードのデータ処理を再実行させればよいので、システムの中断が発生せず、ひいては信頼性低下を防ぐことができる。
【0059】
なお、ステップS20の処理から「終了C」になるまでの情報処理の一例を示す。例えば、図4において「終了B」又は書き換えがなく、CRCがエラーのときには、ステップS20→S21→S22(NO)→S23→S24→S25→S26(ステップS1〜S7)→S27→S28→S20→S21→S22(YES)→S30(NO)→S32→S33→「終了C」という順で処理が実行される。また、図4において「終了A」で書き換えをし、「終了A」で書き換えたパラメータのコマンド以外のコマンドを受信したときであって、CRCが正常なときには、ステップS20→S21→S22(YES)→S30(YES)→S31→S24→S25→S26→S27→S28→S20→S21→S22(YES)→S30(NO)→S32→S33→「終了C」という順で処理が実行される。また前述の、「終了B」又は書き換えがなく、CRCがエラーのときであって、S26(ステップS1〜S7)にてデータ更新失敗、もしくは次の動作コマンド再実行時のCRCチェックS22までの間に何らかの要因でCRCエラーとなった場合は、再び→S23→S24→S25→S26→S27→S28という順で処理が実行される。また、「終了B」又は書き換えがなく、CRCが正常なときには、ステップS20→S21→S22(YES)→S30(NO)→S32→S33→「終了C」という順で処理が実行される。
【0060】
[変形例]
図6は、本発明の他の実施の形態に係る不揮発性メモリの更新方法の概要を説明するための説明図である。
【0061】
図6において、本発明の他の実施の形態に係る不揮発性メモリでは、現在、図6(b)に示すように、ICカード規格選択:1、SAM規格選択:1、印加電圧選択:3が記憶されている。このような状況において、印加電圧についてデータ破損が発生し、5という誤った値になってしまった後、SAM規格を1から2に更新するための書き込み命令が、上位装置12からカードリーダ11に送られてきたと想定する(図6(c)参照)。このデータ更新命令(1→2)を受信したカードリーダ11は、CRCチェック結果がエラーとなるので、SAM規格を1から2に更新するとともに、それ以外のパラメータを全て"0xFF"に更新する(図6(d)参照)。その後、カードリーダ11は、図6(d)に示すブロック内容を、再びEEPROMの所定位置(元の記憶領域)に書き込んだ後(図6(e)参照)、上位装置12に対し、データ更新正常終了を通知する(図6(f))。
【0062】
このようにして、図6(d)に示すブロック内容でシステム運用が継続されている最中に、上位装置12からカードリーダ11にICカードデータ処理命令がなされたとする。このとき、ICカード規格が何か確認するため、ICカード規格の読み出しが行われるが、上述のとおり、EEPROM内のICカード規格を記憶するメモリ領域には、"0xFF"が記憶されており、何も記憶されていない。従って、この段階で、カードリーダ11は、ICカード規格が未設定である旨の未設定エラーを上位装置12に通知する(図6(g))。そして、ICカード規格、印加電圧の選択が共に設定されるまでは、上位装置12からカードリーダ11に、動作パラメータは未設定である旨のエラー通知が送られることになる(図6(h))。
【0063】
以上説明したように、複数の動作パラメータについて、全てのパラメータが正常値になるまで、繰り返しデータ更新が行われるようにすることで、適切な(正常な)パラメータの下で、カードリーダ11を作動させることができ、ひいてはシステムの信頼性を高めることができる。
【産業上の利用可能性】
【0064】
本発明に係る不揮発性メモリの更新方法は、システムの信頼性を高めるものとして有用である。
【図面の簡単な説明】
【0065】
【図1】本発明の実施の形態に係る不揮発性メモリの更新方法の概要を説明するための説明図である。
【図2】従来の不揮発性メモリの更新方法の概要を説明するための説明図である。
【図3】本発明の実施の形態に係る不揮発性メモリを有するカードリーダの電気的構成を示すブロック図である。
【図4】本発明の実施の形態に係る不揮発性メモリの更新方法を示すフローチャートである。
【図5】システム運用が継続されている最中に、カードリーダが上位装置からコマンドを受信したときの情報処理の流れを示すフローチャートである。
【図6】本発明の他の実施の形態に係る不揮発性メモリの更新方法の概要を説明するための説明図である。
【符号の説明】
【0066】
11 カードリーダ
12 上位装置
111 CPU
112 EEPROM
113 RAM

【特許請求の範囲】
【請求項1】
上位装置からのコマンドにより更新可能であって、下位装置の作動を制御するパラメータに係るパラメータデータと、
前記パラメータデータの正誤を検出する誤り検出データと、が記憶されたブロックを有する不揮発性メモリに対して、前記パラメータデータを更新する不揮発性メモリの更新方法であって、
前記上位装置からのパラメータ更新コマンドに基づいて、前記不揮発性メモリから更新対象となるパラメータデータを含むブロックを所定の作業領域に読み込む第1ステップと、
前記誤り検出データを用いて、前記第1ステップにより読み込んだブロックにおけるパラメータデータの正誤を検出する第2ステップと、
前記第2ステップによりエラーが検出された場合、前記更新対象となるパラメータデータを更新するとともに、前記更新対象となるパラメータデータ以外のデータを不特定データに更新することによって、前記作業領域において仮更新データを生成する第3ステップと、
前記第2ステップによりエラーが検出されなかった場合、前記更新対象となるパラメータデータのみを更新することによって、前記作業領域において正更新データを生成する第4ステップと、
前記第3ステップ又は前記第4ステップにより生成された前記仮更新データ又は前記正更新データを前記不揮発性メモリに書き込む第5ステップと、
前記第5ステップの処理が終了した後、前記上位装置に対し、パラメータ更新が完了した旨の通知を行う第6ステップと、を含むことを特徴とする不揮発性メモリの更新方法。
【請求項2】
前記不揮発性メモリの更新方法は、さらに、前記第6ステップの処理が終了した後、
前記下位装置が前記上位装置から受信した動作指令コマンドに基づいて、前記不揮発性メモリから動作指令対象となるパラメータデータを含むブロックを所定の作業領域に読み込む第7ステップと、
前記誤り検出データを用いて、前記第7ステップにより読み込んだブロックにおけるパラメータデータの正誤を検出する第8ステップと、
前記動作指令対象となるパラメータデータが前記不特定データであるか否かを判定する第9ステップと、を含み、
第8ステップによりエラーが検出された場合、又は、第9ステップにより前記不特定データであると判定された場合には、前記第1ステップ、前記第2ステップ、前記第3ステップ又は前記第4ステップ、前記第5ステップ、前記第6ステップが順次実行されることを特徴とする請求項1記載の不揮発性メモリの更新方法。
【請求項3】
前記動作指令対象となるパラメータデータが全て前記不特定データでなくなるまで、繰り返し処理が実行されることを特徴とする請求項2記載の不揮発性メモリの更新方法。
【請求項4】
前記不特定データは、0xFFのデータであることを特徴とする請求項1から3のいずれか記載の不揮発性メモリの更新方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2007−316814(P2007−316814A)
【公開日】平成19年12月6日(2007.12.6)
【国際特許分類】
【出願番号】特願2006−143926(P2006−143926)
【出願日】平成18年5月24日(2006.5.24)
【出願人】(000002233)日本電産サンキョー株式会社 (1,337)
【Fターム(参考)】