(57)【特許請求の範囲】
【請求項１】
上位装置からのコマンドにより更新可能であって、下位装置の作動を制御するパラメータに係るパラメータデータと、
前記パラメータデータの正誤を検出する誤り検出データと、が記憶されたブロックを有する不揮発性メモリに対して、前記パラメータデータを更新する不揮発性メモリの更新方法であって、
前記上位装置からのパラメータ更新コマンドに基づいて、前記不揮発性メモリから更新対象となるパラメータデータを含むブロックを所定の作業領域に読み込む第１ステップと、
前記誤り検出データを用いて、前記第１ステップにより読み込んだブロックにおけるパラメータデータの正誤を検出する第２ステップと、
前記第２ステップによりエラーが検出された場合、前記更新対象となるパラメータデータを更新するとともに、前記更新対象となるパラメータデータ以外のデータを不特定データに更新することによって、前記作業領域において仮更新データを生成する第３ステップと、
前記第２ステップによりエラーが検出されなかった場合、前記更新対象となるパラメータデータのみを更新することによって、前記作業領域において正更新データを生成する第４ステップと、
前記第３ステップ又は前記第４ステップにより生成された前記仮更新データ又は前記正更新データを前記不揮発性メモリに書き込む第５ステップと、
前記第５ステップの処理が終了した後、前記上位装置に対し、パラメータ更新が完了した旨の通知を行う第６ステップと、を含むことを特徴とする不揮発性メモリの更新方法。
【請求項２】
前記不揮発性メモリの更新方法は、さらに、前記第６ステップの処理が終了した後、
前記下位装置が前記上位装置から受信した動作指令コマンドに基づいて、前記不揮発性メモリから動作指令対象となるパラメータデータを含むブロックを所定の作業領域に読み込む第７ステップと、
前記誤り検出データを用いて、前記第７ステップにより読み込んだブロックにおけるパラメータデータの正誤を検出する第８ステップと、
前記動作指令対象となるパラメータデータが前記不特定データであるか否かを判定する第９ステップと、を含み、
第８ステップによりエラーが検出された場合、又は、第９ステップにより前記不特定データであると判定された場合には、前記第１ステップ、前記第２ステップ、前記第３ステップ又は前記第４ステップ、前記第５ステップ、前記第６ステップが順次実行されることを特徴とする請求項１記載の不揮発性メモリの更新方法。
【請求項３】
前記動作指令対象となるパラメータデータが全て前記不特定データでなくなるまで、繰り返し処理が実行されることを特徴とする請求項２記載の不揮発性メモリの更新方法。
【請求項４】
前記不特定データは、０ｘＦＦのデータであることを特徴とする請求項１から３のいずれか記載の不揮発性メモリの更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＥＥＰＲＯＭ等の不揮発性メモリの更新方法に関し、特に、システムの信頼性を向上させることが可能なものに関する。
【背景技術】
【０００２】
従来より、給電が遮断されても記憶内容を保持することができるとともに、電気的に内容を書き換えることが可能なメモリとして、不揮発性メモリ（例えばＥＥＰＲＯＭやフラッシュメモリなど）が利用されている（例えば特許文献１など）。この不揮発性メモリは、その性質上、一部のデータ（例えば数バイト）を更新する場合であっても、それが含まれるブロック（１ブロック、例えば１６バイト）全体を書き換える必要がある。すなわち、不揮発性メモリ内の１ブロック全体を、一旦ＲＡＭにコピーし、ＲＡＭ上で一部のデータを書き換えた後、書き換え後の１ブロック全体を、不揮発性メモリに書き込むようにしている。このようなブロック単位での書き換えに伴って、ブロック単位でのデータ正当性を管理する必要があることから、一般的には、データが正常に書き込まれているか否かを認識するために、各ブロックに対して、誤り検出データ（ＣＲＣやＢＣＣなど）を同時に書き込むような構成としている。
【０００３】
ここで、上位装置（例えばＡＴＭなど）が、下位装置（例えばカードリーダなど）に対して処理実行の命令を出し、それを受けて下位装置が処理を実行し、その処理結果を上位装置に通知するようなシステムにおいて、下位装置には、不揮発性メモリが搭載されているとともに、この不揮発性メモリに下位装置自身の様々な機能動作を設定するデータ（例えば、排出リトライ回数や磁気リードリトライ回数など）が保持され、そのデータをもとに各機能動作を実施するような構成になっており、上位装置は、下位装置の様々な機能動作を設定するデータを、この不揮発性メモリに書き込む命令（データ更新命令）を有しているシステムを考える。
【０００４】
また、下位装置が、不揮発性メモリ内のあるデータを更新する命令を上位装置から受けて、不揮発性メモリ内の該当データを更新するために、該当データを含むブロック全体をＲＡＭ上に展開して（読み出して）みたところ、このブロックの誤り検出データがエラーとなっており、ブロック内の何れかのデータが何らかの要因で破損していることが判明したと考える。但し、ブロック内の何れのデータが破損しているのかを判断することはできない。
【０００５】
このような状況において、例えば、不揮発性メモリから読み出したブロックに対し、更新対象データのみを上書き（書き換え）し、誤り検出データも更新後のブロックを基に再計算・更新（書き換え）した後、書き換え後のブロック全体を不揮発性メモリのもとの位置に書き込むこととした場合、下位装置の品質上、危険な場合がある。なぜなら、今回更新対象となっていた一部のデータ以外のデータが破損してエラーになっていた場合には、そのエラーデータが正しい値とみなされて（例えば、４回が正しい値なのに、２０回というエラーデータが正しい値とみなされて、）不揮発性メモリに書き込まれ、加えて、誤り検出データもその値を元に計算されて書き込まれることになるので、そのデータをもとに動作する機能（例えば排出リトライや磁気リードリトライなど）は、本来エラーであるはずのデータ（例えば２０回というエラーデータ）をもとに動作することになり、最悪の場合、下位装置で扱う対象物の破損にもつながり兼ねない（例えば、４回の排出リトライなら問題ないが、２０回も排出リトライが実行されると、カード磨耗による劣化が進行してしまう虞がある）。
【０００６】
そこで、従来は、ＲＡＭ上に展開したブロックの誤り検出データがエラーとなっていた場合には、そのブロックの全データを初期値（出荷時の値や標準値などのデフォルト値）に書き換えてしまい、上位装置には、データ更新時にエラーを検出した旨の通知をし、該当ブロックの全データの更新を促すようなシステムを構築するのが一般的となっている。
【０００７】
【特許文献１】特開平８−２８７６９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来のシステム構成には、以下のような問題がある。
【０００９】
まず、データ書き込み命令に対してエラー通知を受け、（初期値に書き換えられた）該当ブロックの全データの更新を促された上位装置は、即座に該当ブロックのデータを更新しなければならない。仮に、即座に該当ブロックのデータを更新せずに（初期値データを本来の適切なデータに更新せずに）、システム運用を初期値データのまま継続してしまうと、該当ブロック内のデータをもとに動作する機能は、その初期値データをもとに動作することになり（例えば、本来は４回が正しい値なのに、この４回ではなく、初期値の２回というデータをもとに動作することになり）、致命的な誤動作にはつながらないものの、本来期待している動作とは異なる状態（例えばリトライ回数が４回ではなく２回になっている状態）のまま処理を継続させてしまう。その結果、予期せぬエラーを上位装置に通知してしまう（例えば、本来は４回のリトライを経てエラーだったら上位装置に通知するシステムであるはずが、初期値の２回のリトライを経た段階で、エラーが上位システムに通知されてしまう）、という信頼性の低いシステムとなる虞がある。そのため、上述のとおり、即座に該当ブロックのデータを本来のデータに更新しなければならないが、実際問題として、このような迅速対応が不可能な上位装置が存在する。
【００１０】
また、即座に該当ブロックのデータを本来のデータに更新することができる上位装置であったとしても、該当ブロックのデータを１つ１つ各コマンドにより更新している間に、何らかのトラブル（例えばシステムダウンなど）で更新処理が中断された場合、誤り検出データは正常に書き込まれているので（誤り検出データは、該当ブロックのデータを１つ１つ各コマンドにより更新する度に、再計算・更新されるので）、各機能実行時にはエラーを検出することができず、データが更新中であったことを認識する手段がない。このような状況下では、（未だ更新が行われておらず）初期値で動作する機能と、更新後の正しい動作をする機能とが混在しているにも拘らず処理が継続されることになり、やはり上述同様、該当ブロックのデータが本来のデータに更新されるまでの間、信頼性の低いシステムとなったり、予期せぬエラーを上位装置に通知してしまったりする、という欠点がある。
【００１１】
本発明は、このような点に鑑みてなされたものであり、その目的は、初期値のままシステム運用が継続されるのを防いで、信頼性の高いシステムを実現しうる不揮発性メモリの更新方法を提供することにある。
【課題を解決するための手段】
【００１２】
以上のような課題を解決するために、本発明は、以下のものを提供する。
【００１３】
（１）  上位装置からのコマンドにより更新可能であって、下位装置の作動を制御するパラメータに係るパラメータデータと、前記パラメータデータの正誤を検出する誤り検出データと、が記憶されたブロックを有する不揮発性メモリに対して、前記パラメータデータを更新する不揮発性メモリの更新方法であって、前記上位装置からのパラメータ更新コマンドに基づいて、前記不揮発性メモリから更新対象となるパラメータデータを含むブロックを所定の作業領域に読み込む第１ステップと、前記誤り検出データを用いて、前記第１ステップにより読み込んだブロックにおけるパラメータデータの正誤を検出する第２ステップと、前記第２ステップによりエラーが検出された場合、前記更新対象となるパラメータデータを更新するとともに、前記更新対象となるパラメータデータ以外のデータを不特定データに更新することによって、前記作業領域において仮更新データを生成する第３ステップと、前記第２ステップによりエラーが検出されなかった場合、前記更新対象となるパラメータデータのみを更新することによって、前記作業領域において正更新データを生成する第４ステップと、前記第３ステップ又は前記第４ステップにより生成された前記仮更新データ又は前記正更新データを前記不揮発性メモリに書き込む第５ステップと、前記第５ステップの処理が終了した後、前記上位装置に対し、パラメータ更新が完了した旨の通知を行う第６ステップと、を含むことを特徴とする不揮発性メモリの更新方法。
【００１４】
本発明によれば、例えばＥＥＰＲＯＭ等の不揮発性メモリの更新方法において、不揮発性メモリから更新対象となるパラメータデータを含むブロックを所定の作業領域（例えばＲＡＭなど）に読み込み、そのパラメータデータの正誤を検出し（エラー検出し）、エラーが検出された場合は、更新対象となるパラメータデータを更新するとともに、それ以外のデータを不特定データに更新して、仮更新データを生成する。一方、エラーが検出されなかった場合は、更新対象となるパラメータデータのみを更新して、正更新データを生成する。そして、仮更新データ又は正更新データを不揮発性メモリに書き込むとともに、下位装置から上位装置に対してパラメータ更新が完了した旨の通知がなされる。
【００１５】
従って、例えば、データ書き込み命令に対してエラー通知を受けたとき、即座に（初期値に書き換えられている）該当ブロックのデータを本来のデータに更新することができない上位装置の場合、従来は、初期値のままシステム運用が継続され、予期せぬエラーを上位装置に通知するような信頼性の低いシステムになる虞があった。しかし、本発明によれば、エラーが検出された場合、初期値ではなく上述した仮更新データが不揮発性メモリに書き込まれることとしているので、従来のように初期値のままシステム運用が継続されることを防ぐことができ、ひいては信頼性の高いシステムを実現することができる。
【００１６】
また、例えば、データ書き込み命令に対してエラー通知を受けたとき、即座に（初期値に書き換えられている）該当ブロックのデータを本来のデータに更新することができる上位装置であったとしても、従来は、システムダウン等で更新処理が中断されると、初期値のままシステム運用が継続され、予期せぬエラーを上位装置に通知するような信頼性の低いシステムになる虞があった。しかし、本発明によれば、エラーが検出された場合、初期値ではなく上述した仮更新データが不揮発性メモリに書き込まれることとしているので、従来のように初期値のままシステム運用が継続されることを防ぐことができ、ひいては信頼性の高いシステムを実現することができる。
【００１７】
ここで、「不特定データ」とは、下位装置の作動を制御するパラメータとしての意味をもたないデータをいう。従って、例えば、"００００"や"０ｘＦＦ"などのデータが挙げられる。また、例えば"００１０"などのデータであっても、それが下位装置の作動を制御するパラメータとして意味をもたないデータであれば、ここでいう「不特定データ」に含まれるものとする。
【００１８】
また、第３ステップにおいて、「更新対象となるパラメータデータ以外のデータを不特定データに更新する」とあるが、この「更新対象となるパラメータ以外のデータ」として、「誤り検出データ」や、その他、不特定データに更新する必要性の低いデータについては、除かれていてもよい。
【００１９】
（２）  前記不揮発性メモリの更新方法は、さらに、前記第６ステップの処理が終了した後、前記下位装置が前記上位装置から受信した動作指令コマンドに基づいて、前記不揮発性メモリから動作指令対象となるパラメータデータを含むブロックを所定の作業領域に読み込む第７ステップと、前記誤り検出データを用いて、前記第７ステップにより読み込んだブロックにおけるパラメータデータの正誤を検出する第８ステップと、前記動作指令対象となるパラメータデータが前記不特定データであるか否かを判定する第９ステップと、を含み、第８ステップによりエラーが検出された場合、又は、第９ステップにより前記不特定データであると判定された場合には、前記第１ステップ、前記第２ステップ、前記第３ステップ又は前記第４ステップ、前記第５ステップ、前記第６ステップが順次実行されることを特徴とする（１）記載の不揮発性メモリの更新方法。
【００２０】
本発明によれば、下位装置から上位装置に対して「パラメータ更新が完了した旨の通知」が行われた後、上位装置から動作指令コマンドが送られた場合において、不揮発メモリから動作指令対象となるパラメータデータを含むブロックを作業領域（例えばＲＡＭなど）に読み込み、そのパラメータデータの正誤を検出し（エラー検出し）、動作指令対象となるパラメータデータが不特定データであるか否かを判定し、エラーが検出された或いは不特定データであると判定された場合には、上述した第１ステップ〜第６ステップ（第３ステップと第４ステップはいずれか一方）が順次実行されることとしたので、上位装置から動作指令コマンドが送られた段階で、不特定データは正常なデータに更新されることになる。
【００２１】
従って、初期値ではなく正常なデータでシステム運用を継続することができ、ひいては信頼性の高いシステムを実現することができる。
【００２２】
（３）  前記動作指令対象となるパラメータデータが全て前記不特定データでなくなるまで、繰り返し処理が実行されることを特徴とする（２）記載の不揮発性メモリの更新方法。
【００２３】
本発明によれば、上述した動作指令対象となるパラメータデータが全て不特定データでなくなるまで、（２）に記載の更新処理が繰り返し実行されることとしたので、信頼性の高いシステムを維持しつつ、正常に、下位装置の作動を制御することができる。
【００２４】
（４）  前記不特定データは、０ｘＦＦのデータであることを特徴とする（１）から（３）のいずれか記載の不揮発性メモリの更新方法。
【００２５】
本発明によれば、上述した不特定データは、一般的に、下位装置の作動を制御するパラメータとして意味をもたない"０ｘＦＦ"のデータであることとしたので、システムの汎用性を高めることができる。
【発明の効果】
【００２６】
以上説明したように、本発明に係る不揮発性メモリの更新方法によれば、予期せぬエラーが上位装置に通知されることや、初期値のままシステム運用が継続されることを防いで、信頼性の高いシステムを実現することができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
【００２８】
［概要］
図１は、本発明の実施の形態に係る不揮発性メモリの更新方法の概要を説明するための説明図である。
【００２９】
図１に示すように、ＥＥＰＲＯＭ（のメモリ領域）は、書き換え最小単位となるブロック（１６バイト）を複数有しており（図１（ａ）参照）、そのうちの１個を拡大した図が、図１（ｂ）に示す図である。図１（ｂ）に示すブロックは、各機能のリトライ回数を格納するエリアであって、現在は、取り込みリトライ回数：４、排出リトライ回数：４、キャプチャーリトライ回数：３、フォワード搬送リトライ回数：３、バックワード搬送リトライ回数：３、磁気リードリトライ回数５、磁気ライトリトライ回数：５、シャッタオープンリトライ回数３、シャッタクローズリトライ回数：３、ＩＣ接点ＯＮリトライ回数：２、ＩＣ接点ＯＦＦリトライ回数：２、更には、ＣＲＣ（誤り検出データ）が記憶されている。なお、未書き込み状態のメモリ領域には、"０ｘＦＦ"が記憶されている。
【００３０】
このような状況において、磁気ライトリトライ回数（５回）についてデータ破損が発生し、２０回という誤った値になってしまった後、排出リトライ回数（４回）を６回に更新するための書き込み命令（データ更新命令）が、上位装置１２（後述する図３参照）から下位装置１１（後述する図３参照）に送られてきたと想定する。
【００３１】
このデータ更新命令（４回→６回）を受信した下位装置１１は、まず、排出リトライ回数が記憶されているブロック全体（図１（ｂ）参照）をＲＡＭ１１３（後述する図３参照）上に展開した後（読み出した後）、ＣＲＣをチェックする。そして、上述したように、磁気ライトリトライ回数は誤った値（２０回）になっていることから、ＣＲＣのチェック結果はエラーとなる（図１（ｃ）参照）。
【００３２】
ＣＲＣエラーの判明後、下位装置１１は、排出リトライ回数は４回から６回に更新するとともに、それ以外のパラメータを全て"０ｘＦＦ"（不特定データの一例）に更新する。加えて、ＣＲＣも、更新後のデータに基づいて再計算・更新する。その結果、図１（ｄ）に示すように、排出リトライ回数として６回が記憶される一方で、ＣＲＣを除くその他のメモリ領域には"０ｘＦＦ"が記憶されている状態になる。
【００３３】
その後、下位装置１１は、図１（ｄ）に示すブロック内容を、再びＥＥＰＲＯＭの所定位置（元の記憶領域）に書き込んだ後（図１（ｅ）参照）、上位装置１２に対し、データ更新正常終了を通知する（図１（ｆ））。このデータ更新正常終了通知は、上述したＣＲＣエラーを通知するものではない。
【００３４】
このようにして、図１（ｄ）に示すブロック内容でシステム運用が継続されている最中に、上位装置１２から下位装置１１に磁気ライト命令がなされたとする。このとき、磁気ライトリトライを何回すればいいか確認するため、磁気ライトリトライ回数の読み出しが行われるが、上述のとおり、ＥＥＰＲＯＭ内の磁気ライトリトライ回数を記憶するメモリ領域には、"０ｘＦＦ"が記憶されており、（何回という動作パラメータが）何も記憶されていない。従って、この段階で、下位装置１１は、磁気ライトリトライ回数が未設定である旨の未設定エラーを上位装置１２に通知する（図１（ｇ））。
【００３５】
この未設定エラー通知を受けた上位装置１２は、磁気ライトリトライ回数を、現在の"０ｘＦＦ"から正しい値の５回に更新するための書き込み命令（データ更新命令）を下位装置１１に送る。そして、下位装置１１では、この書き込み命令によって、磁気ライトリトライ回数が５回に設定されるまでは、磁気ライト命令に対して動作パラメータが設定されていない旨の未設定エラーを上位装置１２に通知する（図１（ｈ））。上位装置１２は、磁気ライトリトライ回数を、現在の"０ｘＦＦ"から正しい値の５回に更新するための書き込み命令（データ更新命令）を下位装置１１に送り、正常に更新できたところで、再び磁気ライトコマンドを実行する。
【００３６】
なお、この書き込み命令によって更新されるデータは、磁気ライトリトライ回数だけであって、他のリトライ回数については "０ｘＦＦ"が記憶されたままである。また、他のリトライ回数については、各リトライ回数の読み出しが行われる時点で、上位装置１２から書き込み命令が発せられ、その都度、正しい値に設定される。
【００３７】
このように、本実施形態に係る不揮発性メモリの更新方法によれば、初期値のままシステム運用が継続されるのを防ぎ、信頼性の高いシステムを実現することができる。具体的には、従来の更新方法では、ＣＲＣエラーの判明後、図２の説明図に示すように、ブロックの全データを初期値に書き換えて（図２（ｄ）参照。図２（ａ）〜図２（ｃ）は、図１（ａ）〜図１（ｃ）と同じ）、これらの初期値に併せてＣＲＣが再計算・更新され、図２（ｄ）に示すブロック内容が、再びＥＥＰＲＯＭの所定位置（元の記憶領域）に書き込まれていた（図２（ｅ））。そして、上位装置１２に対し、ＣＲＣエラーを通知していた（図２（ｆ））。このような従来の更新方法だと、図２（ｄ）に示すブロック内のデータをもとに動作する機能（リトライ機能）は、初期値データをもとに動作することになる。これは、致命的な誤動作にはつながらないものの、予期せぬエラーを上位装置１２に通知することになる。例えば、磁気ライトリトライ回数は、本来５回が望ましい値であるのに、初期値である３回となっているため、４回のリトライでかろうじて書き込みできるような劣化したカードが、３回のリトライの後ライトエラーと判定されて使用できないカードとみなされシステムが中断することになり、システムの品質低下に繋がってしまう。
【００３８】
一方で、図１に示した本実施形態に係る不揮発性メモリの更新方法によれば、上述したように、各リトライ回数の読み出しが行われる時点でエラーを通知し、それを受けて上位装置１２から書き込み命令が発せられ、その都度、正しい値に設定される。従って、図２を用いて説明したような磁気ライトリトライ回数が初期値である３回のままの状態でシステム運用が継続される事態を避けることができる。また磁気ライトリトライ回数をコマンドにより再設定するまでは磁気ライトが実行されないので、磁気ライトは必ず望ましいリトライ回数設定のもとで実施されることになる。その結果信頼性の高いシステムを実現することができる。
【００３９】
［詳細］
図３は、本発明の実施の形態に係る不揮発性メモリを有するカードリーダ１１（下位装置１１の一例）の電気的構成を示すブロック図である。なお、本実施形態では、不揮発性メモリとしてＥＥＰＲＯＭ１１２を用いている。
【００４０】
図３に示すように、カードリーダ１１は、例えばＡＴＭなどの上位装置（ＨＯＳＴ）１２から処理実行命令（コマンド）を受け取って、その処理実行命令に応じた処理を実行し、その後、処理実行結果（レスポンス）を上位装置１２に返すことになっている。
【００４１】
カードリーダ１１の電気的な内部構成（主要部のみ）について説明すると、主に、ＣＰＵ１１１と、ＥＥＰＲＯＭ１１２と、ＲＡＭ１１３と、を有している。なお、その他、磁気カードと磁気データの送受信を行う磁気ヘッドや、カード上のＩＣ端子に当接され、ＣＰＵ１１１によるデータの読み書きを可能にするＩＣ接点や、駆動ローラを回転駆動するモータや、カードの出入りを規制するシャッタや、カード位置を認識するためのフォトセンサなども有している。そして、図示しないが、ＣＰＵ１１１には、カードリーダを制御する制御プログラムや初期値などの情報を格納するＲＯＭが組み込まれている。
【００４２】
ＣＰＵ１１１に接続されたＥＥＰＲＯＭ１１２は、給電が遮断されても記憶内容を保持することができるものであって、電気的に内容を書き換えることが可能なものである。そして、上述したシャッタの開閉リトライ回数や、フォトセンサによって検出されるカードを排出する際の（又は取り込む際の）リトライ回数などを記憶している。
【００４３】
図４は、本発明の実施の形態に係る不揮発性メモリの更新方法を示すフローチャートである。特に、図４では、カードリーダ１１における処理に着目して説明する。
【００４４】
図４において、まず、カードリーダ１１（ＣＰＵ１１１）が上位装置１２からデータ更新コマンドを受信したとする（ステップＳ１）。例えば、データ更新コマンドとして、排出リトライ回数（４回）を６回に更新するコマンドを考える。そうすると、ＣＰＵ１１１は、ＥＥＰＲＯＭ１１２より、更新対象のデータ（排出リトライ回数）が含まれるブロック（１６バイト）のデータをＲＡＭ１１３の作業領域（ワーキングエリア）に読み出す（ステップＳ２）。
【００４５】
次に、ＣＲＣのチェックが行われる（ステップＳ３）。より具体的には、ＣＰＵ１１１は、ブロック内のデータが正常に記憶されていなければエラー数字列となるＣＲＣ（Cyclic Redundancy Check）符号をチェックする。なお、エラーチェックの方法としては、ＣＲＣ以外にＢＣＣ（Block Check Character）やチェックサムなど、如何なる方法を採用しても構わない。
【００４６】
ＣＰＵ１１１は、ＣＲＣエラーが発生したと判定した場合には（ステップＳ３：ＮＯ）、処理をステップＳ４に移す。具体的には、ＣＰＵ１１１は、ＲＡＭ１１３の作業領域のブロックデータ中の更新対象データ（排出リトライ回数）を、データ更新コマンドに基づいて、４回から６回に更新する（ステップＳ４）。
【００４７】
そして、ＣＰＵ１１１は、データ更新コマンドに基づく更新に加えて、ＲＡＭ１１３の作業領域のそれ以外の機能に関するデータの全てを"０ｘＦＦ"に書き換える（ステップＳ５）。すなわち、更新対象のデータ（排出リトライ回数）以外のデータ、例えば磁気ライトリトライ回数が誤った値（例えば５回→２０回）になっていると、上述のとおり、更新対象データ以外のデータの一つとして"０ｘＦＦ"で書き換える処理が実行されることになる。なお、本実施形態では、"０ｘＦＦ"に書き換えることとしているが、"０ｘＦＦ"以外のものであっても、特段の意味を有しないもの（例えば設定範囲外の値や、"００００"など）であれば、如何なるものであってもよい。
【００４８】
次に、ＣＰＵ１１１は、ＲＡＭ１１３の作業領域におけるブロックデータのＣＲＣを再計算する（ステップＳ６）。そして、再計算後のＣＲＣに更新した後、このブロックデータをＥＥＰＲＯＭ１１２の元の記憶領域に書き込む（ステップＳ７）。その後、上位装置１１に対し、書き込み正常終了通知（データ更新正常終了通知）を行う（ステップＳ８）。なお、ステップＳ８のデータ更新正常終了通知が行われたケースを「終了Ａ」とする。
【００４９】
一方で、上述したステップＳ３において、ＣＰＵ１１１によって、ＣＲＣエラーは発生していないと判定された場合には（ステップＳ３：ＹＥＳ）、ＲＡＭ１１３の作業領域のブロックデータ中の更新対象データが更新され（ステップＳ９）、作業領域のブロックデータのＣＲＣが再計算され（ステップＳ１０）、作業領域のブロックデータがＥＥＰＲＯＭ１１２の元の記憶領域に書き込まれた後（ステップＳ１１）、上位装置１１に対し、書き込み正常終了通知が行われる（ステップＳ１２）。なお、ステップＳ１１の書き込み正常終了通知が行われたケースを「終了Ｂ」とする。
【００５０】
このように、ステップＳ３におけるＣＲＣエラーが発生していなければ、更新対象データ以外のデータを"０ｘＦＦ"で書き換える処理は実行されず、ステップＳ３におけるＣＲＣエラーが発生していれば、更新対象データ以外のデータを"０ｘＦＦ"で書き換える処理が実行される。
【００５１】
図５は、システム運用が継続されている最中に、カードリーダ１１が上位装置１２からコマンド（例えば磁気ライト命令など）を受信したときの情報処理の流れを示すフローチャートである。特に、図５では、カードリーダ１１における処理に着目して説明する。
【００５２】
動作コマンドを受信したカードリーダ１１のＣＰＵ１１１（ステップＳ２０）は、ＥＥＰＲＯＭ１１２より、対象機能（例えば磁気ライト機能）を動作させるのに必要なデータ（例えば磁気ライトリトライ回数）が含まれるブロックのデータをＲＡＭ１１３の作業領域に読み出す（ステップＳ２１）。
【００５３】
次に、ＣＲＣのチェックが行われる（ステップＳ２２）。ＣＰＵ１１１は、ＣＲＣエラーが発生していると判定した場合には（ステップＳ２２：ＮＯ）、上位装置１２に対して、ＥＥＰＲＯＭ１１２のリードエラー通知を行うとともに（ステップＳ２３）、上位装置１２は、該当機能パラメータ設定コマンドを送信する（ステップＳ２４）。
【００５４】
一方で、ＣＰＣエラーが発生していないと判定した場合（ステップＳ２２：ＹＥＳ）、ＣＰＵ１１１は、該当機能のパラメータ（例えば磁気ライトリトライ回数）が"０ｘＦＦ"となっているか否かを確認する（ステップＳ３０）。"０ｘＦＦ"となっていなければ（ステップＳ３０：ＮＯ）、該当機能動作が実施される（ステップＳ３２。例えば、現在記憶されている磁気ライトリトライ回数に基づいて、磁気ライト処理が実行される）。そして、動作コマンドが完了する（ステップＳ３３）。なお、ステップＳ３３で終了するケースを「終了Ｃ」とする。
【００５５】
一方で、"０ｘＦＦ"となっていれば（ステップＳ３０：ＹＥＳ）、カードリーダ１１から上位装置１２に対してパラメータ未設定エラー通知が行われるとともに（ステップＳ３１）、上位装置１２は、該当機能パラメータ設定コマンドを送信する（ステップＳ２４）。このように、ＣＰＵ１１１が上位装置１２に対して未設定エラーを通知するのは、読み出した該当機能のパラメータが"０ｘＦＦ"となっている場合である。
【００５６】
ＥＥＰＲＯＭ１１２のリードエラー通知（ステップＳ２３）およびパラメータ未設定エラー通知（ステップＳ３１）の後、上位装置１２から、該当機能パラメータ設定コマンドを受信したカードリーダ１１のＣＰＵ１１１は（ステップＳ２５）、図４（フローチャート１）に示す手順に従って、該当機能パラメータの設定（該当機能パラメータの更新）を実行する（ステップＳ２６）。そして、図４を用いて説明したとおり、書き込みが正常に終了すると（ステップＳ１〜ステップＳ７の処理が終了すると）、上位装置１２に対して書き込み正常終了通知が行われ（ステップＳ２７）、上位装置１２は、該当コマンド（例えば磁気ライト命令など）を再送信し（ステップＳ２８）、該当コマンドが再実行されることになる（ステップＳ２０）。
【００５７】
以上説明したように、図４及び図５に示すフローチャートによれば、初期値のままシステム運用が継続されるのを防ぎ、信頼性の高いシステムを実現することができる。従来の更新方法では、磁気ライトリトライ回数（希望回数５回）を初期状態として３回に書き換えてしまうので（図２参照）、ライトエラーだった場合において、本来ならば５回までリトライをし、それまでにライトが成功すれば通常運用が継続できるシステムであるべきところ、３回のリトライでライト実行を諦めてしまうことになる。そのため、システム運用を中断せざるを得ないケースが生じ、データ再更新完了までは、システムとして信頼性が低いものとなっていた。また、更新手続の途中で処理が中断されてしまった場合、その後、信頼性が低くなっていることに気付かずシステム運用が継続されてしまう可能性もあった。さらに、対象データがＩＣカードの規格を選択するパラメータであったとしたら、初期設定が本来扱うべきＩＣカードの規格と異なる場合は、初期設定に戻されていることにより、該当のＩＣカードに対して適正な処理を実行できないことになり、予期せぬエラーが上位装置１２に返され、その時点でシステム運用が中断されてしまうことにもなり兼ねなかった。
【００５８】
これに対し、本実施形態に係る不揮発性メモリの更新方法によれば、磁気ライトを実行しようとして不揮発性メモリの該当領域を読み込んで、該当領域のＣＲＣがエラーであったならば（図５のステップＳ２２：ＮＯ）、ＥＥＰＲＯＭリードエラーを、上位装置１２に返し（図５のステップＳ２３）、また、該当領域のＣＲＣにエラーがなかった（図５のステップＳ２２：ＹＥＳ）が、"０ｘＦＦ"であったならば（図５のステップＳ３０：ＹＥＳ）、パラメータ未設定エラーを上位装置１２に返して（図５のステップＳ３１）、パラメータ設定を上位装置１２に促すことができるので、上位装置１２は、このエラー通知を受けて、カードリーダ１１に対してその場で正常なデータに書き換える命令を送り（図５のステップＳ２４）、続けて、再度磁気ライト命令を送るようなシステムを構築することができる。従って、信頼性を低下させることなくシステムの継続運用を行うことができる。また、ＩＣカード処理を実行しようとした場合に、パラメータ未設定エラー或いはＥＥＰＲＯＭパラメータリードエラーが返されたならば、即座にＩＣ関連のパラメータの再設定を行って、引き続いて、ＩＣカードのデータ処理を再実行させればよいので、システムの中断が発生せず、ひいては信頼性低下を防ぐことができる。
【００５９】
なお、ステップＳ２０の処理から「終了Ｃ」になるまでの情報処理の一例を示す。例えば、図４において「終了Ｂ」又は書き換えがなく、ＣＲＣがエラーのときには、ステップＳ２０→Ｓ２１→Ｓ２２（ＮＯ）→Ｓ２３→Ｓ２４→Ｓ２５→Ｓ２６（ステップＳ１〜Ｓ７）→Ｓ２７→Ｓ２８→Ｓ２０→Ｓ２１→Ｓ２２（ＹＥＳ）→Ｓ３０（ＮＯ）→Ｓ３２→Ｓ３３→「終了Ｃ」という順で処理が実行される。また、図４において「終了Ａ」で書き換えをし、「終了Ａ」で書き換えたパラメータのコマンド以外のコマンドを受信したときであって、ＣＲＣが正常なときには、ステップＳ２０→Ｓ２１→Ｓ２２（ＹＥＳ）→Ｓ３０（ＹＥＳ）→Ｓ３１→Ｓ２４→Ｓ２５→Ｓ２６→Ｓ２７→Ｓ２８→Ｓ２０→Ｓ２１→Ｓ２２（ＹＥＳ）→Ｓ３０（ＮＯ）→Ｓ３２→Ｓ３３→「終了Ｃ」という順で処理が実行される。また前述の、「終了Ｂ」又は書き換えがなく、ＣＲＣがエラーのときであって、Ｓ２６（ステップＳ１〜Ｓ７）にてデータ更新失敗、もしくは次の動作コマンド再実行時のＣＲＣチェックＳ２２までの間に何らかの要因でＣＲＣエラーとなった場合は、再び→Ｓ２３→Ｓ２４→Ｓ２５→Ｓ２６→Ｓ２７→Ｓ２８という順で処理が実行される。また、「終了Ｂ」又は書き換えがなく、ＣＲＣが正常なときには、ステップＳ２０→Ｓ２１→Ｓ２２（ＹＥＳ）→Ｓ３０（ＮＯ）→Ｓ３２→Ｓ３３→「終了Ｃ」という順で処理が実行される。
【００６０】
［変形例］
図６は、本発明の他の実施の形態に係る不揮発性メモリの更新方法の概要を説明するための説明図である。
【００６１】
図６において、本発明の他の実施の形態に係る不揮発性メモリでは、現在、図６（ｂ）に示すように、ＩＣカード規格選択：１、ＳＡＭ規格選択：１、印加電圧選択：３が記憶されている。このような状況において、印加電圧についてデータ破損が発生し、５という誤った値になってしまった後、ＳＡＭ規格を１から２に更新するための書き込み命令が、上位装置１２からカードリーダ１１に送られてきたと想定する（図６（ｃ）参照）。このデータ更新命令（１→２）を受信したカードリーダ１１は、ＣＲＣチェック結果がエラーとなるので、ＳＡＭ規格を１から２に更新するとともに、それ以外のパラメータを全て"０ｘＦＦ"に更新する（図６（ｄ）参照）。その後、カードリーダ１１は、図６（ｄ）に示すブロック内容を、再びＥＥＰＲＯＭの所定位置（元の記憶領域）に書き込んだ後（図６（ｅ）参照）、上位装置１２に対し、データ更新正常終了を通知する（図６（ｆ））。
【００６２】
このようにして、図６（ｄ）に示すブロック内容でシステム運用が継続されている最中に、上位装置１２からカードリーダ１１にＩＣカードデータ処理命令がなされたとする。このとき、ＩＣカード規格が何か確認するため、ＩＣカード規格の読み出しが行われるが、上述のとおり、ＥＥＰＲＯＭ内のＩＣカード規格を記憶するメモリ領域には、"０ｘＦＦ"が記憶されており、何も記憶されていない。従って、この段階で、カードリーダ１１は、ＩＣカード規格が未設定である旨の未設定エラーを上位装置１２に通知する（図６（ｇ））。そして、ＩＣカード規格、印加電圧の選択が共に設定されるまでは、上位装置１２からカードリーダ１１に、動作パラメータは未設定である旨のエラー通知が送られることになる（図６（ｈ））。
【００６３】
以上説明したように、複数の動作パラメータについて、全てのパラメータが正常値になるまで、繰り返しデータ更新が行われるようにすることで、適切な（正常な）パラメータの下で、カードリーダ１１を作動させることができ、ひいてはシステムの信頼性を高めることができる。
【産業上の利用可能性】
【００６４】
本発明に係る不揮発性メモリの更新方法は、システムの信頼性を高めるものとして有用である。
【図面の簡単な説明】
【００６５】
【図１】本発明の実施の形態に係る不揮発性メモリの更新方法の概要を説明するための説明図である。
【図２】従来の不揮発性メモリの更新方法の概要を説明するための説明図である。
【図３】本発明の実施の形態に係る不揮発性メモリを有するカードリーダの電気的構成を示すブロック図である。
【図４】本発明の実施の形態に係る不揮発性メモリの更新方法を示すフローチャートである。
【図５】システム運用が継続されている最中に、カードリーダが上位装置からコマンドを受信したときの情報処理の流れを示すフローチャートである。
【図６】本発明の他の実施の形態に係る不揮発性メモリの更新方法の概要を説明するための説明図である。
【符号の説明】
【００６６】
１１  カードリーダ
１２  上位装置
１１１  ＣＰＵ
１１２  ＥＥＰＲＯＭ
１１３  ＲＡＭ
【図１】
0004802339.tif 000002
【図２】
0004802339.tif 000003
【図３】
0004802339.tif 000004
【図４】
0004802339.tif 000005
【図５】
0004802339.tif 000006
【図６】
0004802339.tif 000007