JP4131147B2 - プリンタにおけるフラッシュメモリの判定方法、この方法をコンピュータに実行させるプログラム、このプログラムを記録した記録媒体、フラッシュメモリを備えるプリンタ - Google Patents
プリンタにおけるフラッシュメモリの判定方法、この方法をコンピュータに実行させるプログラム、このプログラムを記録した記録媒体、フラッシュメモリを備えるプリンタ Download PDFInfo
- Publication number
- JP4131147B2 JP4131147B2 JP2002251303A JP2002251303A JP4131147B2 JP 4131147 B2 JP4131147 B2 JP 4131147B2 JP 2002251303 A JP2002251303 A JP 2002251303A JP 2002251303 A JP2002251303 A JP 2002251303A JP 4131147 B2 JP4131147 B2 JP 4131147B2
- Authority
- JP
- Japan
- Prior art keywords
- flash memory
- data
- address
- sector
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- Y02B60/1225—
-
- Y02B60/1271—
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Description
【発明の属する技術分野】
本発明は、フラッシュメモリが実装されたプリンタにおいて当該フラッシュメモリがプリンタに適合しているか否かを判定するフラッシュメモリの判定方法、この方法をコンピュータに実行させるプログラム、このプログラムを記録した記録媒体、および、フラッシュメモリを備えるプリンタに関する。
【0002】
【従来の技術】
プリンタでは、制御プログラムやフォントデータ等の各種データを記憶するためのROMとしてフラッシュメモリが用いられる場合が多い。フラッシュメモリは、オンボードでデータの書換えが可能な不揮発性のメモリであり、プリンタを始めとする各種電子機器において広く用いられつつある。かかるフラッシュメモリには種々の仕様のものがあるが、ピン配置等の外観構成では共通するものも多く、プリンタの設計とは異なる仕様のフラッシュメモリを基盤に実装してしまうおそれがある。そして、異なる仕様のフラッシュメモリが実装されてしまうと、以下に示すように、フラッシュメモリへのアクセスが正しく行われず、プリンタの動作異常が発生してしまう。
【0003】
先ず、フラッシュメモリでは、データの消去は、セクタというひとまとまりのアドレス領域単位で行われる。図12は、例えば8Mビットのフラッシュメモリのセクタの構成を示す。同図に示すように、セクタ構成には一般にボトムセクタタイプとトップセクタタイプとがあり、フラッシュメモリは何れかのセクタ構成を有する。同図(a)に示すように、ボトムセクタタイプでは、最下位の64Kバイトの領域に、セクタSA0(16Kバイト)、セクタSA1(8Kバイト),セクタSA2(8Kバイト),セクタSA3(32Kバイト)の4つのセクタが割り付けられ、以降は64Kバイト毎にセクタが割り付けられている。一方、トップセクタタイプでは、最上位の64Kバイトの領域が4つのセクタに割り付けられ、それ以外のアドレス領域では64Kバイト毎にセクタが割り付けられている。
【0004】
フラッシュメモリのデータを消去する場合には、消去対象となるセクタを指定して消去処理を実行する。その際、図12に示すように、ボトムセクタタイプとトップセクタタイプとでセクタ構成が異なっているため、プリンタの設計と異なるセクタタイプのフラッシュメモリが搭載されていると、予期しないアドレス領域のデータが消去されるおそれがある。例えば、プリンタがボトムセクタのフラッシュメモリを使用するように設計されている場合に、誤ってトップセクタのフラッシュメモリが搭載されたとする。この場合、プリンタの制御プログラムがボトムセクタタイプにおけるセクタSA3を消去しようとすると、トップセクタタイプにおけるセクタSA0(最下位64Kバイト)の全体が消去されてしまう。このように、設計と異なるセクタ構成のフラッシュメモリが実装されていると、データの誤消去が行われてしまうおそれがある。
【0005】
また、フラッシュメモリにおけるデータの書込みや消去は、通常のROMやRAMのように単にアドレスを指定してデータを書込むのではなく、フラッシュメモリの仕様で定められた所定手順の処理により行うことが必要である。したがって、不適合なフラッシュメモリが誤実装されると、プリンタの制御プログラムによるデータ書込み・消去処理が、実装されたフラッシュメモリの処理手順に適合せず、データの書込み・消去を正しく行うことができなくなる。
【0006】
さらに、フラッシュメモリには、4Mビット、8Mビット、16Mビット等のサイズのものがあり、設計と異なる容量のフラッシュメモリが搭載されると、プリンタが正しく動作しなくなる。例えば、8Mビットのフラッシュメモリを前提として制御プログラムが作成されている場合に、4Mビットのフラッシュメモリが搭載されていると、4Mビットを超えるアドレスからデータの読出しや、書込み・消去が行われた場合に、無関係なデータを読出したり、あるいは、意図しないアドレスのデータが破壊されることとなってしまう等の不都合が生ずるのである。
【0007】
また、プリンタによっては、基本ROMの他に拡張ROMが搭載される場合がある。この拡張ROMが未実装であっても、拡張ROMのデータの書込み/読出しは見かけ上正常に行われてしまう。したがって、拡張ROMが実装されるようにプリンタが設計されている場合に、拡張ROMとしてのフラッシュメモリが未実装であると、書込んだはずのデータが実際には書込まれておらず、また、全く無関係なデータが読出されてしまうといった不都合が生じてしまう。
【0008】
以上の理由から、プリンタが正しく動作することを保証するためには、プリンタに実装されたフラッシュメモリのセクタタイプ、データ書込み手順、メモリサイズが、プリンタ設計に適合した仕様のものであるかどうかを判定することが必要である。さらに、拡張フラッシュメモリが搭載される設計の場合には、拡張フラッシュメモリが実装されているかどうかを判定することも必要である。
【0009】
従来は、このようなフラッシュメモリの判定は、フラッシュメモリに格納されたエレクトリックシグネチャに基づいて行われていた。エレクトリックシグネチャは、フラッシュメモリのメーカ・型番に固有の情報であり、フラッシュメモリから読出したエレクトリックシグネチャでフラッシュメモリのメーカー・型番を特定し、そのフラッシュメモリがプリンタの設計に適合したものであるかどうかを判定していたのである。
【0010】
【発明が解決しようとする課題】
ところで、フラッシュメモリは様々なメーカーが製造販売しており、メーカー・型番が異なっていても互換性を有するものがある。したがって、プリンタのコストを抑えるためには、本来想定していた純正品だけではなく、互換性のあるフラッシュメモリを使用できることが望ましい。しかしながら、従来のように、エレクトリックシグネチャを利用してフラッシュメモリの適合・不適合を判定するものとすると、互換品であっても異なる型番のフラッシュメモリは不適合であると判定されてしまい、互換品を使用することができなくなってしまう。また、互換品を使用できるようにするには、当該互換品のエレクトリックシグネチャを、適合したフラッシュメモリであるとして登録し直すことが必要であり、互換性のあるフラッシュメモリが新たに入手可能になる都度、そのフラッシュメモリに対応できるようにフラッシュメモリ判定用のプログラムを変更しなければならない。
【0011】
本発明は上記の点に鑑みてなされたものであり、エレクトリックシグネチャを用いることなく、当該プリンタに適合したフラッシュメモリが実装されているか否かを判定できるようにすることを目的とする。
【0012】
【課題を解決するための手段】
上記の目的を達成するため、本発明は、フラッシュメモリが実装されたプリンタにおける当該フラッシュメモリの判定方法であって、
前記フラッシュメモリへのアクセス結果に基づいて、当該フラッシュメモリが前記プリンタに適合しているか否かを判定するメモリ判定ステップを備え、前記メモリ判定ステップは、
前記フラッシュメモリの所定のセクタのデータを消去して、当該所定のセクタに含まれないアドレスのデータが消去されたか否かに基づいて、当該フラッシュメモリのセクタ構成が前記プリンタに適合しているか否かを判定するセクタ判定ステップを含むことを特徴とする。
【0013】
本発明によれば、フラッシュメモリへのアクセス結果に基づいて、当該フラッシュメモリが前記プリンタに適合しているか否かを判定するので、フラッシュメモリに格納されたエレクトリックシグネチャを用いることなく、同判定を行うことができる。したがって、プリンタに実装されたフラッシュメモリが互換品である場合にも、エレクトリックシグネチャに基づかずに、そのフラッシュメモリがプリンタに適合したものであると判定できるので、互換品のフラッシュメモリを用いることが可能となる。
また、セクタ構成が異なるフラッシュメモリでは、同じセクタが、異なるアドレス領域に割り付けられる。このため、プリンタに適合しないセクタ構成のフラッシュメモリが実装されている場合に、プリンタに適合したセクタ構成を前提としてセクタ消去が行われると、消去したはずのセクタには含まれないアドレスのデータが消去されてしまう。したがって、セクタ判定ステップでは、所定のセクタのデータを消去して、当該セクタに含まれないアドレスのデータが消去されたか否かに基づいて、フラッシュメモリのセクタ構成がプリンタに適合しているか否かを判定できる。
【0014】
また、本発明において、前記メモリ判定ステップは、
前記フラッシュメモリに対して所定の消去手順でのデータの消去処理および所定の書込み手順でのデータ書込み処理を行い、データの書込みおよび消去が正しく行えたか否かに基づいて、前記所定の消去手順および前記所定の書込み手順が当該フラッシュメモリに適合しているか否かを判定する消去/書込み手順判定ステップと、
前記フラッシュメモリから所定アドレスを指定して読出したデータに基づいて前記フラッシュメモリのサイズを判定するメモリサイズ判定ステップと、を含むこととしてもよい。
【0016】
また、フラッシュメモリはその仕様によって、データ消去およびデータ書込みの手順が規定されている。したがって、消去/書込み手順判定ステップでは、フラッシュメモリに対して所定の消去手順でのデータの消去処理および所定の書込み手順でのデータ書込み処理を行い、データの書込みおよび消去が正しく行えたか否かに基づいて、消去/書込み手順が当該フラッシュメモリに適合しているか否かを判定することができる。
【0017】
また、実装されたメモリのサイズを超えるアドレス領域のデータを読出すと、アドレスの上位ビットが無視されて、この上位ビットを無視したアドレスのデータが読出される。したがって、メモリ判定ステップでは、フラッシュメモリから所定アドレスを指定して読出したデータに基づいてメモリサイズを判定できる。
【0018】
そして、一般に、プリンタにおいては、フラッシュメモリのセクタ構成、消去/書込み手順、および、メモリサイズがプリンタ仕様に適合していれば、そのフラッシュメモリを使用することができる。したがって、上記のセクタ判定ステップ、消去/書込み手順判定ステップ、および、メモリサイズ判定ステップにより、フラッシュメモリがプリンタに適合しているか否かを適切に判定することができる。
【0020】
なお、フラッシュメモリのセクタ構成としては、図12に示すように、ボトムセクタタイプとトップセクタタイプが一般的である。同図に示すように、メモリの最下位64Kバイトのアドレス領域において、ボトムセクタタイプでは4つのセクタが割り付けられ、トップセクタタイプでは単一のセクタが割り付けられている。一方、メモリの最上位64Kバイトのアドレス領域において、ボトムセクタタイプでは単一のセクタが割り付けられ、トップセクタタイプでは4つのセクタが割り付けられている。したがって、前記プリンタに適合したセクタ構成がボトムセクタタイプである場合には、前記所定のセクタとして最下位64Kバイトのアドレス領域に割り付けられた何れかのセクタを用い、前記プリンタに適合したセクタ構成がトップセクタタイプである場合には、前記所定のセクタとして最上位64Kバイトのアドレス領域に割り付けられた何れかのセクタを用いることができる。
【0021】
また、前記最下位または最上位の64Kバイトのアドレス領域に割り付けられた複数のセクタのうちの何れかのセクタにブートプログラムが格納されている場合には、前記セクタ判定ステップでは、前記所定のアドレスとして、前記複数のセクタのうちブートプログラムが格納されていない何れかのセクタを用い、前記所定のセクタのデータ消去後に前記ブートプログラムが作動しなくなった場合に、適合しないセクタ構成のフラッシュメモリが実装されていると判定することができる。
【0022】
すなわち、プリンタに適合しないセクタ構成のフラッシュメモリが実装された場合、所定のセクタのデータが消去されると、ブートプログラムが格納されたセクタのデータも消去される。したがって、データ消去処理の終了後、ブートプログラムが消去されて、プリンタが動作しなくなるので、そのことをもって、プリンタに適合しないセクタ構成のフラッシュメモリが実装されていると判定できるのである。
【0023】
また、本発明において、前記フラッシュメモリのサイズはS1〜Snのn種類(ただし、Si<Si+1;i=1〜n−1)のうち何れかであるとし、
前記メモリサイズ判定ステップにおける前記所定のアドレスとして、次の条件(1)および(2)を満たすアドレスM0〜Mn−1を用いることとしてもよい。
(1)アドレスM1はメモリサイズS1〜Snの全てに含まれ、アドレスMj(j=2〜n−1)は、メモリサイズS1〜Sj−1には含まれず、メモリサイズSj〜Snには含まれる。
(2)メモリサイズS1の最大アドレスのビット数をNとすると、各アドレスMj(j=2〜n−1)の下位NビットはアドレスM1に一致する。
【0024】
このようにすれば、例えば、メモリサイズがSc(1≦c≦n)のフラッシュメモリが実装された場合、アドレスM1〜Mcは当該フラッシュメモリのアドレス領域に含まれるが、アドレスMc+1〜Mnは当該フラッシュメモリのアドレス領域には含まれない。そして、フラッシュメモリのアドレス領域に含まれないアドレスMc+1〜Mnが読出しアドレスとして指定された場合、それらの下位NビットはアドレスM1に一致するから、当該アドレスM1の値が読出されることになる。すなわち、アドレスMc+1〜Mnを指定して読出された値は、アドレスM1から読出された値に一致する。したがって、アドレスM1〜Mnを指定して読出した値に基づいて、フラッシュメモリのサイズを判定することができる。
【0025】
この場合、前記アドレスMj(j=2〜n)のうち、そのアドレスを指定して読出した値が、前記アドレスM1を指定して読出した値と一致するようなjの最小値をKとした場合、前記フラッシュメモリのサイズはSK−1であると判定し、前記アドレスMjを指定して読出した値が、何れも、前記アドレスM1を指定して読出した値と一致しなければ、前記フラッシュメモリのサイズはSnであると判定することができる。
【0026】
また、本発明において、前記プリンタが、基本ROMとしてのフラッシュメモリと拡張ROMとしてのフラッシュメモリとが実装されるように設計されており、前記メモリ判定ステップは、前記拡張ROMが実装されているか否かを判定する拡張ROM実装判定ステップを更に含むこととしてもよい。
【0027】
また、本発明において、前記プリンタは、基本ROMとしてのフラッシュメモリと拡張ROMとしてのフラッシュメモリとが実装されるように設計されており、
前記セクタ判定ステップ、前記消去/書込み手順判定ステップ、および前記メモリサイズ判定ステップを、前記基本ROMとしてのフラッシュメモリおよび前記拡張ROMとしてのフラッシュメモリの夫々について実行することとしてもよい。
【0028】
このようにすれば、拡張ROMについても、フラッシュメモリのエレクトリックシグネチャに基づかずに、セクタ判定ステップおよび消去/書込み手順判定ステップにより当該フラッシュメモリのセクタおよびデータ消去/書込み手順がプリンタに適合しているかどうかを判定でき、また、メモリサイズ判定ステップによりフラッシュメモリのサイズを判定できる。このため、拡張ROMについても互換品のフラッシュメモリを用いることが可能となる。
【0029】
この場合、前記メモリ判定ステップは、前記拡張ROMが実装されているか否かを判定する拡張ROM実装判定ステップを更に含み、前記拡張ROMが実装されていないと判定された場合には、前記拡張ROMとしてのフラッシュメモリについて前記セクタ判定ステップ、前記消去/書込み手順判定ステップ、および前記メモリサイズ判定ステップの実行を省略することとしてもよい。このようにすれば、拡張ROMが未実装の場合に、拡張ROMについての不必要な処理が行われるのを防止して、処理時間を短縮できる。
【0030】
また、前記拡張ROM実装判定ステップでは、前記拡張ROMへのデータ書込みが正しく行えたか否かに基づいて、当該拡張ROMが実装されているか否かを判定することとしてもよい。
【0031】
また、前記拡張ROMとしてのフラッシュメモリについて前記メモリサイズ判定ステップで判定されたメモリサイズを、前記基本ROMおよび前記拡張ROMに夫々格納し、前記基本ROMに格納されているメモリサイズと前記拡張ROMに格納されているメモリサイズとが一致する場合には、前記拡張ROMとしてのフラッシュメモリについて前記消去/書込み手順判定ステップおよび前記メモリサイズ判定ステップを省略することとしてもよい。
【0032】
基本ROMに格納されているメモリサイズと前記拡張ROMに格納されているメモリサイズとが一致する場合には、本方法の前回実行時の後、拡張ROMの交換は行われていないと判断できる。したがって、このような場合には、拡張ROMとしてのフラッシュメモリについて消去/書込み手順判定ステップおよびメモリサイズ判定ステップを省略して、処理時間を短縮できる。
【0033】
また、本発明の方法は、前記プリンタの電源が投入される毎に実行されることとしてもよい。このようにすれば、電源投入の都度、フラッシュメモリの判定処理を行える。このため、工場出荷後のユーザ使用中にフラッシュメモリに異常が生じた場合にも、そのことを検知できる。
【0034】
【発明の実施の形態】
図1は、本発明の一実施形態であるプリンタ10のシステム構成図である。同図に示すように、プリンタ10は、中央制御ユニット(CPU)12、基本ROM14、拡張ROM16、RAM18、印字部20、用紙搬送部22、表示部24等を備えている。基本ROM14には制御プログラムが格納されており、CPU12はこの制御プログラムを実行することにより、印字部20および搬送部22等を制御する。基本ROM14に格納された制御プログラム(以下、ファームウェアという)には、以下に詳細に述べるように、基本ROM14や拡張ROM16について各種判定処理を行うルーチンが含まれている。表示部24には、ユーザ向けにプリンタステータスやメッセージの表示が行われるほか、各ROMについての判定処理の結果の表示が行われる。なお、プリンタ10は、ドットインパクトプリンタ、インクジェットプリンタ、サーマルプリンタ、レーザープリンタなど何れの方式のプリンタであってもよい。
【0035】
RAM18には印刷バッファが設けられており、CPU12がホストコンピュータから受信した印刷データや印刷コマンドは、いったん、この印刷バッファに格納される。また、拡張ROM16には、ファームウェアのうち基本ROM14に入りきらなかった部分、フォントデータ、ユーザ定義データ、メンテナンス情報(印刷行数や用紙カット回数等の使用履歴を表す情報)等が格納される。
【0036】
図2は、基本ROM14の最下位64Kバイト(0h〜FFFFh)のアドレス領域のメモリ構成を示す図である。同図に示すように、基本ROM14には、ベクタテーブル/ブートプログラム領域14a、NVデータ情報領域14b、ユーザNV領域14c、およびバックアップ領域14dが設けられており、これらの領域14a〜14dは、夫々、セクタSA0〜SA3に割り付けられている。
【0037】
図3は、拡張ROM16の最下位64Kバイト(200000h〜20ffffh)のアドレス領域のメモリ構成を示す図である。同図に示すように、拡張ROM16には、第1試験領域16a、第2試験領域16b、第1自由使用領域16c、および第2自由使用領域16dが設けられており、夫々、セクタSA0、SA1、SA2、およびSA3に割り付けられている。
【0038】
なお、一般に、フラッシュメモリのデータ書込み/消去中は、読出したデータの値は不定となるので、データの書込み/消去中は、データの読出しを禁止する必要がある。このため、メンテナンスデータのように頻繁に書込まれるデータを基本ROM14に記憶させた場合には、その書込みの都度、基本ROM14からのデータを読出せなくなってファームウェアの実行を停止することが必要となる。これに対して、本実施形態では、拡張ROM16にメンテナンス情報を記憶することで、頻繁に行われるメンテナンス情報の書込み処理中にもファームウェアの実行を継続できるようにしている。
【0039】
ところで、上記従来技術で述べたように、フラッシュメモリは、そのメーカーや型番によって、セクタ構成、データ消去・書込み手順、メモリサイズ等の仕様が異なっており、プリンタ10のファームウェアは特定仕様のフラッシュメモリを前提として作成されている。このため、ファームウェアに適合しない不適正なフラッシュメモリが誤実装されたままプリンタ10が出荷されてしまうと、ユーザが使用した際に動作不良が発生してしまう。したがって、プリンタ10の出荷前に、基本ROM14および拡張ROM16として、ファームウェアに適合した(つまり、プリンタの設計に適合した)適正なフラッシュメモリが実装されているかどうかを判定することが必要である。
【0040】
本実施形態では、プリンタ10は、基本ROM14および拡張ROM16として例えば型番MBM29LV800BA(富士通製、8Mビット、ボトムセクタタイプ)のフラッシュメモリを使用するように設計されているものとする。そして、基本ROM14および拡張ROM16に対して、データ書込み、消去、読出しといったアクセスを行うことにより、ROM14,16として実装されたフラッシュメモリのセクタ構成およびデータ書込み手順がファームウェアに適合しているかどうかの判定、ROM14,16のメモリサイズの判定、および、拡張ROM16の実装/未実装の判定等の判定処理(以下、これらの判定処理をメモリ判定処理という)を行う。
【0041】
図4は、本実施形態においてメモリ判定処理を行うべくCPU12が実行するメインルーチンのフローチャートである。このメインルーチンは、基本ROM14のベクタテーブル/ブートプログラム領域14aに格納されたブートプログラムに含まれており、プリンタ10の電源が投入される毎に起動される。先ず、この図4を参照して、メモリ判定処理の概要を説明する。
【0042】
図4に示す如く、メモリ判定処理では、先ず、ステップ100において、基本ROM14のデータ消去/書込み手順およびセクタ構成の判定処理が実行される。その結果、データ消去/書込みに失敗した場合は、不適合なフラッシュメモリが実装されていると判断され、ステップ140において復帰不能エラーの判定がなされる。この場合、例えばエラーメッセージあるいはエラーコード等が表示部24に表示されたうえで、メモリ判定処理は終了する。また、後述するように、セクタ構成が適合しない場合は、ファームウェア自体が動作不能となってハングアップ状態になるから、そのことをもって、フラッシュメモリが不適合であると判断できる。
【0043】
一方、ステップ100でデータ消去/書込みに成功し、かつ、セクタ構成も適合していると判別された場合は、ステップ150において、基本ROM14のメモリサイズの判定処理が行われる。
【0044】
次に、ステップ200において、基本ROM14に格納された拡張ROM情報に基づいて、拡張ROM16が実装されているか否かが判別される。すなわち、後述するステップ450では、拡張ROM16が実装されていればそのメモリサイズを、また、未実装であれば例えば”00h”を、夫々、拡張ROM情報として基本ROM14に書込むようにしており、ステップ200では、この拡張ROM情報に基づいて、拡張ROM16の実装の有無を判定する。なお、拡張ROM情報は拡張ROM16自体にも書込まれており、この情報は後述するステップ400で用いられる。
【0045】
ステップ200における判定処理の結果、拡張ROM情報が”00h”(拡張ROM未実装)であれば、ステップ250において、拡張ROM16へアクセスすることにより拡張ROM16が実装されているか否かが判別される。その結果、拡張ROM16が実装されている場合は、メモリ判定処理の前回の実行時(つまり前回の電源投入時)から今回の実行時(つまり今回の電源投入時)までの間に、拡張ROM16が新たに実装されたと判断できる。この場合、ステップ300において、拡張ROM16について消去/書込み手順およびセクタ構成の判定処理が行なわれる。その結果、消去/書込みに成功し、かつ、セクタ構成が適合している場合は、ステップ350において拡張ROM16のメモリサイズ判定処理が実行される。
【0046】
一方、ステップ200において、拡張ROM情報が”00h”でなければ、拡張ROM16が実装済みであるか、または、本ルーチンは今回初めて実行された(つまり、プリンタ10の電源が初めて投入された)と判断される。このような判断ができるのは、拡張ROM16が実装済みであり、かつ、今回のメモリ判定処理が2回目以降に実行されたのであれば、本ルーチンの前回以前の実行時に、拡張ROM16のメモリサイズが拡張ROM情報として基本ROM14に記憶されているはずであり、一方、メモリ判定処理が今回初めて実行されたのであれば、拡張ROM情報は記憶されていないためその値は”FFh”となるからである。このように判断された場合、次にステップ400の処理が実行される。
【0047】
ステップ400では、基本ROM14および拡張ROM16から夫々読出された拡張ROM情報で表されるメモリサイズが、4Mビット、8Mビット、または16Mビットの何れかで互いに一致するか否かが判別される。その結果、両メモリサイズが不一致である場合は、拡張ROM16は未実装であるか、または、拡張ROM16が前回の電源投入時から今回の電源投入時の間にフラッシュメモリが交換されたと判断できる。この場合、上記ステップ300において、拡張ROM16についての消去/書込み手順およびセクタ構成の判定処理が行なわれたうえで、ステップ350において拡張ROM16のメモリサイズが判定される。一方、基本ROM14および拡張ROM16から読出されたメモリサイズが互いに一致する場合は、前回の電源投入時の後、拡張ROM16の交換は行われておらず、拡張ROM16のサイズは、基本ROM14および拡張ROM16に格納された通りの値であると判断できる。この場合、ステップ300,350を実行することなく、後述するステップ450へ進む。
【0048】
このように、拡張ROM16が前回から交換されていない場合に、拡張ROM16の消去/書込み手順・セクタ構成やメモリサイズについての判定処理を省略することで、メモリ判定処理に要する時間を短縮することが可能となっている。メモリ判定処理は、プリンタ10の工場出荷後もユーザの下で電源が投入される毎に実行されるが、その所要時間が短縮されることにより、プリンタ10の起動時間も短縮できることになる。
【0049】
上記ステップ250または300での拡張ROM16の実装・未実装の判定結果、および、ステップ350での拡張ROM16のメモリサイズの判定結果は、RAM18に一時的に保持されている。ステップ450では、RAM18に保持されたこれらの判定結果が、基本ROM14および拡張ROM16に格納済みの拡張ROM情報と一致しない場合に限り、拡張ROM情報として基本ROM14および拡張ROM16に書込まれる。このように、RAM18に保持された判定結果と、ROM14,16に記憶済みの拡張ROM情報とが一致しない場合にのみ、ROM14,16への書込みを行うことで、書込みの頻度を減らしてフラッシュメモリの寿命を向上させることができる。ただし、書込み頻度が問題にならなければ、毎回、判定結果をROM14,16へ書込むようにしてもよい。なお、本実施形態では、基本ROM14には拡張ROM16のメモリサイズ(未実装の場合は「00h」)のみを書込み、一方、拡張ROM16には、メモリサイズと共に、判定処理済みであることを示すデータを書込むようにしている。
【0050】
上記ルーチンにおける拡張ROMの実装有無の判定結果およびROMサイズの判定結果は、例えば表示部24に表示される。その場合、ROMサイズについては、メモリサイズそのものを表示してもよいし、あるいは、プリンタ10の仕様で定められたサイズに満たないメモリが実装されている場合にメモリサイズエラーメッセージを表示するようにしてもよい。例えば、プリンタ仕様で8Mビットのメモリが指定されている場合に、メモリサイズが4Mビットであればエラーメッセージを表示するが、8Mビットまたは16Mビットであれば、メモリサイズOKのメッセージを表示する。
【0051】
以上説明したように、本実施形態では、基本ROM14へのアクセス結果に基づいて、基本ROM14として実装されたフラッシュメモリがファームウェアに適合しているかどうか(つまり、プリンタの設計に適合しているかどうか)を判定する。より具体的には、ステップ100の判定処理(基本ROM14についてのセクタ判定ステップおよび消去/書込み手順判定ステップ)により、基本ROM14として実装されたフラッシュメモリのデータ消去/書込み手順およびセクタ構成がプリンタ10のファームウェアに適合しているかどうかを判定でき、また、ステップ150の判定処理(基本ROM14についてのメモリサイズ判定ステップ)により当該フラッシュメモリのサイズを判定できる。
【0052】
このように、フラッシュメモリに格納されたエレクトリックシグネチャを用いることなく上記の各判定を行える。このため、互換品のフラッシュメモリが実装された場合にも、そのフラッシュメモリがプリンタに適合したものであると判定できる。したがって、本実施形態によれば、ファームウェアを変更することなく、フラッシュメモリとして互換品を用いることができる。
【0053】
また、ステップ250の判定処理(拡張ROM実装判定ステップ)で拡張ROM16の実装の有無を判定することができる。そして、拡張ROM16が実装されている場合には、この拡張ROM16についても、ステップ300(拡張ROMについてのセクタ判定ステップおよび消去/書込み手順判定ステップ)により、拡張ROM16として実装されたフラッシュメモリのデータ消去/書込み手順およびセクタ構成がプリンタ10のファームウェアに適合しているかどうかを判定でき、また、ステップ350(拡張ROMについてのメモリサイズ判定ステップ)により拡張ROM16のメモリサイズを判定できる。
【0054】
さらに、図4のメモリ判定処理は、電源が投入される毎に実行されるので、工場出荷後、ユーザの使用時にフラッシュメモリに異常が発生した場合にも、その異常を判定することができる。
【0055】
ところで、上記図4に示すメインルーチンに含まれる各判定処理では、基本ROM14や拡張ROM16へのデータ書込み/消去処理が行われる。フラッシュメモリへのデータ書込み/消去は、メモリ毎に定められた手順で処理を行うことが必要である。そこで、各判定処理の詳細について説明する前に、フラッシュメモリのデータ消去/書込みの手順について説明する。
【0056】
なお、フラッシュメモリはその構造上、「1」→「0」の書換えは行えるが、「0」→「1」の書換えは行えず、また、セクタの消去処理が行われるとそのセクタの全アドレスのデータ値は「FFh」となる。そこで、フラッシュメモリでデータ書換えを行う場合は、先ず、データ消去処理により対象セクタの全データを「FFh」にした後、データ書込み処理によって必要なビットに「0」を書込むという手順を踏む。
【0057】
先ず、図5のフローチャートを参照してデータ消去処理を説明する。同図に示すように、ステップ500〜510において、6回のバスライトサイクルによりフラッシュメモリに対してコマンドが書込まれる。本実施形態で用いられるフラッシュメモリでは、各バスライトサイクルでのコマンドの書込みアドレスおよびコマンド値は次の通りである。
【0058】
次に、ステップ512において、フラッシュメモリのデータ入出力ビットDQ7の出力値に基づいて、データ消去動作が完了したか否かが判別される。すなわち、本実施形態で用いられるフラッシュメモリでは、データ消去動作が行われている間は、データ入出力ビットDQ7に「0」が出力され、データ消去動作が完了するとDQ7に「1」が出力されるように設計されていることから、このDQ7の値に基づいて、データ消去動作が完了したか否かを判定できるのである。その結果、データ消去動作が未完了である場合は、次にステップ514の処理が実行される。
【0059】
ステップ514では、フラッシュメモリのデータ出力ビットDQ5の出力値に基づいて、データ消去時間が規定限界を超えたか否かが判別される。すなわち、本実施形態で用いられるフラッシュメモリでは、データ消去動作時間が規定限界を超えるとデータ出力ビットDQ5に「1」が出力されるように設計されていることから、このDQ5の値に基づいて、データ消去動作時間が規定限界を超えたか否かを判定できるのである。その結果、規定限界を超えている場合は、ステップ516で、再度、データ入出力ビットDQ7の出力値に基づいて、データ消去動作が完了したか否かが判別される。その結果、データ消去動作が未完了であれば、データ消去に失敗したと判定され、ステップ518においてフラッシュメモリにリセットコマンドが書込まれた後、データ消去処理は終了する。
【0060】
一方、ステップ512または516において、データ消去動作が完了している場合は、データ消去に成功したと判定されてデータ消去処理は終了する。
【0061】
なお、ファームウェアに適合しないフラッシュメモリが実装されている場合には、データ消去動作時間が規定限界を超えてもDQ5に「1」が出力されるとは限らない。そこで、そのような場合に対するガードとして、ステップ514でデータ消去動作時間が規定限界に達していない場合は、ステップ520において、消去コマンドが書込まれた後、所定時間(例えば20秒)が経過したか否かが判別される。その結果、所定時間が経過した場合は、書込みに失敗したと判定され、ステップ518の処理が行われた後、本ルーチンは終了する。一方、ステップ520で所定時間が経過していない場合は、ステップ512に戻る。
【0062】
次に、図6を参照して、データ書込み処理について説明する。同図に示すように、データ書込み処理では、ステップ600〜606における4回のバスライトサイクルを実行することによりデータの書込みが行われる。各コマンド書込み処理での書込みアドレスおよびコマンド値は次の通りである。
【0063】
次に、ステップ608において、フラッシュメモリのデータ入出力ビットDQ7の出力値に基づいて、データ書込み動作が完了したか否かが判別される。すなわち、本実施形態で用いられるフラッシュメモリでは、データ書込み動作が行われている間は、最後に書込まれたデータの反転データがデータ入出力ビットDQ7に出力され、データ書込み動作が完了すると最後に書込まれたデータがDQ7に出力されるように設計されていることから、このDQ7の値に基づいて、データ書込み動作が完了したか否かを判定できるのである。その結果、データ書込み動作が未完了である場合は、次にステップ610の処理が実行される。
【0064】
ステップ610では、フラッシュメモリのデータ出力ビットDQ5の出力値に基づいて、データ書込み時間が規定限界を超えたか否かが判別される。すなわち、本実施形態で用いられるフラッシュメモリでは、データ書込み動作時間が規定限界を超えるとデータ出力ビットDQ5に「1」を出力するように設計されていることから、このDQ5の値に基づいて、データ書込み動作時間が規定限界を超えたか否かを判定できるのである。その結果、規定限界を超えている場合は、ステップ612で、再度、データ入出力ビットDQ7の出力値に基づいて、データ書込み動作が完了したか否かが判別される。その結果、データ書込み動作が未完了であれば、データ書込みに失敗したと判定され、ステップ614においてフラッシュメモリにリセットコマンドが書込まれた後、データ書込み処理は終了する。
【0065】
一方、ステップ608または612において、データ書込み動作が完了したと判別された場合は、データ書込みに成功したと判定されて本ルーチンは終了する。
【0066】
また、データ消去処理の場合と同様に、ファームウェアに適合しないフラッシュメモリが実装された場合のガードとして、ステップ610でデータ書込み動作時間が規定限界に達していないと判別された場合、ステップ616において、書込みコマンドが書込まれた後の経過時間が所定時間(例えば1ms秒)に達していれば、データ書込みに失敗したと判定するようにしている。
【0067】
なお、フラッシュメモリのデータ消去/書込み処理中は、データの読出しを行えないため、基本ROM14についてデータ消去/書込み処理は、処理プログラムをRAM18に展開し、そのプログラムを読み出すことにより行うものとする。
【0068】
以下、図4に示すメインルーチンに含まれる各処理ルーチンについて詳細に説明する。
【0069】
図7は、図4のステップ100における基本ROM14のデータ消去・書込み手順およびセクタ構成の判定処理を行うルーチンのフローチャートである。同図に示すように、先ず、ステップ102において、今回のルーチンがプリンタ10の初回の電源投入時に実行されたものであるか否かが判別される。後述するように、本ルーチンでは、基本ROM14のNVデータ情報領域14bに、所定の初期値とチェックサムが書込まれる。このチェックサムは、初期値格納アドレスを含む所定のチェックサム計算領域におけるチェックサム計算値を所定の期待値(例えば”00h”または”FFh”)とするような値に設定される。したがって、本ルーチンが2回目以降の電源投入時に実行されたものである場合は、前回以前の実行時にチェックサムが書込み済みであるため、チェックサム計算領域におけるチェックサムの計算結果は期待値と一致する。一方、最初の電源投入時は、NVデータ情報領域14bには何もデータが書込まれていない(全て”FFh”となっている)ため、チェックサム計算結果は期待値と一致しない。ただし、チェックサム計算領域のサイズは、NVデータ情報領域14bのデータが全て”FFh”である場合のチェックサムの計算結果が期待値と一致しないように設定しているものとする。したがって、チェックサムの計算結果が期待値と一致しない場合は、初回の電源投入時であり、期待値と一致した場合は、2回目以降の電源投入時であると判断する。
【0070】
基本ROM14としてファームウェアに適合しないフラッシュメモリが実装されている場合は、初回の電源投入時に本ルーチンが実行された際に、そのことが検知されてメモリ交換等の措置がとられるから、同じ基本ROM14のままで本ルーチンが2度と実行されることはない。したがって、ステップ102において、初回電源投入時でないと判別された場合は、前回の電源投入時前に、ファームウェアに適合したフラッシュメモリが実装されていることが判定済みである。そこで、この場合は、ステップ103において基本ROM14としてファームウェアに適合したフラッシュメモリが実装されているとの判定(OK判定)がなされて本ルーチンを終了する。一方、ステップ102において、初回電源投入時であると判別された場合は、ステップ104以降の処理が実行される。
【0071】
先ず、ステップ104では、図2に示すバックアップ領域14dのデータが消去される。バックアップ領域14dのデータが消去された場合、もし基本ROM14として、ファームウェアに適合しないトップセクタタイプ(図12(b)を参照)のフラッシュメモリが実装されていると、領域14a〜14dは全てトップセクタタイプのセクタSA0に属することとなり、このセクタSA0に属する領域14a〜14d全体が消去される。したがって、ベクタテーブル/ブートプログラム領域14aのプログラムやデータが消去されてしまい、データ消去処理を終えてRAM18から基本ROM14に戻った際にファームウェアは動作不能となってしまう。すなわち、ステップ104の終了後、動作不能となった場合には、ファームウェアに適合しないトップセクタタイプのフラッシュメモリが実装されていると判断できる。一方、ボトムセクタタイプのフラッシュメモリが実装されている場合は、バックアップ領域14cのデータのみが消去されるから、データ消去が終了した後、ファームウェアは引き続いて正常に動作し、ステップ106へ進む。
【0072】
ステップ106では、NVデータ情報領域14bのうち、所定の初期値格納アドレスを除く領域のデータがバックアップ領域14dにコピーされる。次に、ステップ108では、NVデータ情報領域14bのデータが消去される。そして、ステップ110において、NVデータ情報領域14bのデータ消去に成功したか否かが判別される。その結果、データ消去に成功していれば、次にステップ112の処理が実行される。
【0073】
ステップ112では、NVデータ情報領域14bに値”00h”のデータが書込まれる。そして、ステップ114でNVデータ情報領域14bのデータが”00h”になったか否かが判別され、”00h”になっていれば、データ書込みに成功したと判断される。この場合、次にステップ116において、NVデータ情報領域14bのデータを消去するための処理が実行される。そして、ステップ118でデータの消去に成功したか否かが判別され、データ消去に成功した場合は、ステップ120において、データ書込み/消去手順は正しいとの判定(OK判定)がなされる。そして、ステップ122において、バックアップ領域14dの、NVデータ情報領域14bの上記初期値格納アドレスに対応するアドレスに所定の初期値およびそのチェックサム(上述のように、初期値格納アドレスを含む所定のチェックサム計算領域におけるチェックサム計算値を所定の期待値とするような値)が書込まれた後、ステップ124において、バックアップ領域14dのデータがNVデータ情報領域14bにコピーされて、本ルーチンは終了する。
【0074】
一方、ステップ110または118においてデータ消去に失敗し、または、ステップ114においてデータ書込みに失敗した場合は、ステップ126において、実装されたフラッシュメモリが、ファームウェアによるデータ消去手順またはデータ書込み手順に適合していない、つまり、基本ROM14として不適合なフラッシュメモリが実装されているとの判定(NG判定)がなされて本ルーチンは終了する。
【0075】
次に、図4のステップ300における拡張ROM16の消去・書込み手順およびセクタ構成の判定処理について説明する。
図8は、拡張ROM16の消去・書込み手順およびセクタ構成の判定処理を行うルーチンのフローチャートである。同図に示すように、先ずステップ302において、図3に示す拡張ROM16の第1試験領域(セクタSA0)および第2試験領域(セクタSA1)のデータが消去される。次に、ステップ304においてデータ消去に成功したか否かが判別され、データ消去に成功した場合は、ステップ306において、第1試験領域16aの先頭アドレスから例えば16バイトの領域に所定の第1の試験データが書込まれる。次に、ステップ308においてデータの書込みに成功したか否かが判別され、データ書込みに成功した場合は、ステップ310において第2試験領域16bの先頭アドレスから例えば16バイトの領域に所定の第2の試験データが書込まれる。そして、ステップ312においてデータの書込みに成功したか否かが判別され、データ書込みに成功した場合は、ステップ314の処理が行われる。
【0076】
ステップ314では、第1試験領域16aのデータが消去される。次に、ステップ316においてデータ消去に成功したか否かが判別され、データ消去に成功した場合は、ステップ318において、上記ステップ310で第2試験領域16bに書込んだ試験データが残っているか否かが判別される。この場合、もし、拡張ROM16として、ファームウェアに適合しないトップセクタタイプのフラッシュメモリが実装されていると、第1試験領域16aおよび第2試験領域16bは共に同じセクタ(SA0)に属することとなるから、ステップ314での第1試験領域16aのデータ消去により、第2試験領域16bのデータも消去されてしまう。一方、拡張ROM16として、ファームウェアに適合したボトムセクタタイプのフラッシュメモリが実装されていれば、ステップ314では第1試験領域16aのデータのみが消去され、第2試験領域16bのデータは消去されずにそのまま残っている。したがって、ステップ318において第2試験領域16bに試験データが残っている場合は、正しいセクタ構成のフラッシュメモリが実装されていると判断できる。この場合、ステップ320において、セクタ構成およびデータ消去/書込み手順は適正であるとの判定(OK判定)がなされ、ステップ322において、第1試験領域16aの先頭から再度第1の試験データが書込まれた後、本ルーチンは終了する。なお、最後に第1試験領域16aへ第1の試験データを書込んでいるのは、後述する拡張ROM16のメモリサイズ判定処理において当該第1の試験データが読出されるようにするためである。
【0077】
一方、上記ステップ304、308、312、または316においてデータの消去または書込みに失敗したと判別され、または、ステップ318において第2試験領域の試験データが残っていない(セクタ構成が不適合である)と判別された場合は、ステップ326において、拡張ROM16は未実装であるか、または、拡張ROM16としてファームウェアに不適合なフラッシュメモリが実装されているとの判定(NG判定)がなされて、本ルーチンは終了する。
【0078】
次に、図4に示すステップ150における基本ROM14のメモリサイズ判定処理について説明する。
図9は、基本ROM14のメモリサイズ判定処理の原理を説明するための図である。本実施形態では、メモリサイズ4Mビット、8Mビット、および16ビットの3種類のうち何れかであるとして、6つのアドレスA:「0h」,B:「300h」,C:「80000h」,D:「80300h」,E:「100000h」,F:「100300h」から夫々読出した例えば32バイトのデータの値に基づいてメモリサイズを判定する。図9に示すように、アドレスA,Bは、4Mビット、8Mビット、および16Mビットの全サイズのアドレス領域に含まれ、アドレスC,Dは4Mビットのアドレス領域には含まれず8Mビットおよび16ビットのアドレス領域に含まれ、アドレスE,Fは4Mビットおよび8Mビットのアドレス領域には含まれず16Mビットのアドレス領域にのみ含まれる。そして、アドレスCおよびアドレスEの下位19ビット(最小の4MビットのROMの最大アドレスのビット数)の値は共に”0h”でアドレスAに一致し、同様に、アドレスDおよびアドレスFの下位19ビットの値は共に”300h”でアドレスBに一致する。
【0079】
例えば、4MビットのROMが実装されている場合に、アドレスC(80000h)を指定してデータ読出しが行われると、このアドレスCの最上位ビットが無視されて、アドレスA(0h)のデータが読出される。したがって、この場合、アドレスAおよびCから読出したデータの値は互いに一致する。同様に、アドレスBおよびDから読出したデータの値も互いに一致する。これに対して、8Mビットまたは16ビットのROMが実装されている場合は、アドレスCおよびDに実際に格納されたデータが読出されるので、アドレスAおよびBから読出したデータとは一致しない。したがって、アドレスAとアドレスCから読出したデータ、および、アドレスBとアドレスDから読出したデータが、夫々、互いに一致する場合は、4MビットのROMが実装されていると判断できる。
【0080】
また、8MビットのROMが実装されている場合に、アドレスE(100000h)からのデータ読出しが行われると、このアドレスEの最上位ビットが無視されて、アドレスA(0h)のデータが読出される。したがって、この場合、アドレスAおよびEから読出したデータの値は互いに一致する。同様に、アドレスBおよびFから読出したデータの値も互いに一致する。これに対して、16ビットのROMが実装されている場合は、アドレスEおよびFに実際に格納されたデータが読出されるので、アドレスAおよびBから読出したデータとは一致しない。したがって、アドレスAとアドレスEから読出したデータ、および、アドレスBとアドレスFから読出したデータが、夫々、互いに一致する場合は、8Mビット(または4Mビット)のROMが実装されていると判断できる。
【0081】
以上の原理を一般化すると、フラッシュメモリのサイズの種類がS1〜Snのn種類(ただし、Si<Si+1;i=1〜n−1)であるとして、次の条件(1)、(2)を満たすアドレスM1〜Mnを用いてメモリサイズの判定を行う。(本実施形態では、S1=4Mビット、S2=8Mビット、S3=16Mビット、n=3である。)
(1)アドレスM1はメモリサイズS1〜Snの全てに含まれ、アドレスMj(j=2〜n−1)は、メモリサイズS1〜Sj−1には含まれず、メモリサイズSj〜Snには含まれる。(本実施形態では、M1=A,B;M2=C,D;M3=E,Fである。)
(2)メモリサイズS1のフラッシュメモリの最大アドレスのビット数をNとすると、各アドレスMj(j=2〜n−1)の下位Nビットの値はアドレスM1に一致する。(本実施形態ではN=19である。)
【0082】
このようなアドレスM1〜Mnを用いて、アドレスM1から読出した値とアドレスM2から読出した値とを比較して両者が互いに一致すれば、アドレスM2は実装されたフラッシュメモリのアドレス領域に含まれないといえるから、当該フラッシュメモリのサイズはS1と判断できる。一方、アドレスM1から読出した値とアドレスM2から読出した値とが不一致であれば、さらに、アドレスM1から読出した値とアドレスM3から読出した値とを比較する。その結果、両者が一致しない場合は、アドレスM3は実装されたフラッシュメモリのアドレス領域に含まれないといえるから、当該フラッシュメモリのサイズはS2と判断できる。このようにして、アドレスM2,M3,M4,・・・のようにアドレスの小さい方から順に、各アドレスから読出した値をアドレスM1から読出した値と比較して、アドレスMcで初めて一致したとすれば、メモリサイズはSc−1であると判断できる。また、アドレスM2〜Mnの何れもアドレスM1からの読出し値と一致しなければ、メモリサイズはSnと判断できる。
【0083】
つまり、アドレスMj(j=2〜n)のうち、そのアドレスから読出した値が、前記アドレスM0から読出した値と一致するようなjの最小値をKとした場合、フラッシュメモリのサイズはSK−1と判定でき、また、一致するアドレスがなければ、メモリサイズはSnと判定できるのである。
【0084】
なお、本実施形態では、アドレスA(0h)から始まる領域にはジャンプ先アドレスを表すベクタテーブルが格納され、また、アドレスB(300h)から始まる領域にはブートプログラムが格納されている。このため、アドレスAおよびBから始まる32バイトのデータ値が、夫々、アドレスC,EおよびアドレスD,Fから始まる32バイトのデータ値と偶然に一致する確率はゼロとみなすことができる。
【0085】
図10は以上の原理に基づく基本ROMサイズ判定ルーチンのフローチャートである。同図に示すように、先ずステップ152において、▲1▼アドレスAから始まる32バイトのデータとアドレスCから始まる32バイトのデータ、および、▲2▼アドレスBから始まる32バイトのデータとアドレスDから始まる32バイトのデータが夫々比較される。その結果、▲1▼及び▲2▼が共に一致する場合には、ステップ154でメモリサイズは4Mビットであると判定されて本ルーチンは終了する。一方、ステップ152において▲1▼および▲2▼の少なくとも一方が不一致の場合には、次にステップ156において、▲3▼アドレスAから始まる32バイトのデータとアドレスEから始まる32バイトのデータ、および、▲4▼アドレスBから始まる32バイトのデータとアドレスFから始まる32バイトのデータが夫々比較される。その結果、▲3▼及び▲4▼が共に一致する場合には、ステップ158で8Mビットのフラッシュメモリが実装されていると判定されて本ルーチンは終了する。一方、ステップ156において▲3▼および▲4▼の少なくとも一方が不一致の場合には、ステップ160で16Mビットのフラッシュメモリが実装されていると判定されて本ルーチンは終了する。
【0086】
なお、図4のステップ350における拡張ROM16のメモリサイズ判定処理も、上記した基本ROM14のメモリサイズ判定処理と同様にして行われる。ただし、メモリサイズ判定の基準となる6つのアドレスA〜Fとして、次のアドレスを用いている。
アドレスA:200000h アドレスB:204000h
アドレスC:280000h アドレスD:284000h
アドレスE:300000h アドレスF:304000h
これらのアドレスA〜Fを用いて、上記図10と同様のルーチンにより拡張メモリ16のメモリサイズを判定することができる。
【0087】
アドレスA(20000h)およびアドレスB(204000h)は、夫々、第1試験領域16aおよび第2試験領域16bの先頭アドレス(図3を参照)であり、上記した拡張ROM16のセクタ構成および消去/書込み手順のチェック処理において所定の試験データが書込まれている。このため、基本ROM14のメモリサイズ判定の場合と同様に、アドレスAおよびBから始まる32バイトのデータ値が、夫々、アドレスC,EおよびアドレスD,Fから始まる32バイトのデータ値と偶然に一致する確率はゼロとみなすことができる。
【0088】
なお、本実施形態では、各メモリサイズに対応してアドレスを2つずつ用いて、2組のアドレスからの読出し値が共に一致するかどうかを判別することで、メモリサイズの判定を確実に行えるようにした。しかしながら、これに限らず、各メモリサイズに対応してアドレスを1つずつ用いる(例えば、アドレスA,C,Eのみを用いる)ようにしてもよいし、あるいは、アドレスを3つずつ用いることで、更に確実なメモリサイズ判定を行えるようにしてもよい。
【0089】
次に、図4に示すステップ250における拡張ROM実装判定処理について説明する。
図11は、拡張ROM実装判定ルーチンのフローチャートである。本ルーチンでは、図3に示す第1試験領域16a(セクタSA0)および第2試験領域16b(セクタSA1)について、元の値が「0」でないアドレスに「0」を書込んで、そのアドレスの値が「0」になったかどうかに基づいて書込みが成功したかどうかを判別する。そして、2回連続して書込みに成功した場合に、拡張ROM16が実装されていると判定する。
【0090】
先ず、ステップ252において、アドレスポインタが第1試験領域16aの先頭アドレス(200000h)に設定され、次にステップ254において、アドレスポインタが指すアドレスのデータが「0」であるか否かが判別される。その結果、当該アドレスのデータが「0」でなければ、ステップ256において、当該アドレスに「0」が書込まれる。そして、ステップ258において、当該アドレスのデータが読出され、その値が「0」であるか否かが判別される。その結果、「0」でなければデータの書込みに失敗したことになる。この場合、ステップ260において拡張ROM16は未実装と判定されて本ルーチンは終了する。
【0091】
一方、ステップ258で読出したデータの値が「0」であれば、書込みに成功したことになる。この場合、ステップ262においてフラグFがセットされているか否かが判別される。その結果、フラグFがセットされていなければ、ステップ264においてフラグFがセットされ、ステップ266においてアドレスポインタが次のアドレスを指すように更新された後、ステップ254へ戻る。一方、ステップ262でフラグFがセットされていれば、2回連続してデータの書込みに成功したことになる。この場合、ステップ268において、拡張ROM16が実装されているとの判定がなされて本ルーチンは終了する。このように、2回連続して書込みに成功した場合に、拡張ROM16が実装されていると判定することで、拡張ROMの実装判定の信頼性を向上させている。なお、実装判定を行うための書込み成功回数は2回に限らず、例えば、3回またはそれ以上の回数だけ書込みに成功した場合に、拡張ROM16が実装されていると判定することとしてもよい。
【0092】
上記ステップ254において、アドレスポインタが指すアドレスのデータが「0」に一致すれば、ステップ270において、アドレスポインタの値が第2試験領域16bの最終アドレス(205FFFh)に一致するか否かが判別される。その結果、最終アドレスに一致すれば、第1試験領域16aおよび第2試験領域16bの全領域のデータが「0」であることになる。この場合、上記ステップ260において、拡張ROM16は未実装と判定されて本ルーチンは終了する。一方、ステップ270でポインタアドレスの値が上記最終アドレスに一致しなければ、ステップ272において、アドレスポインタが次のアドレスを指すように更新された後、ステップ254へ戻る。
【0093】
なお、上記実施形態において、図7および図8にルーチンでのセクタ判定処理では、ファームウェアがボトムセクタタイプのフラッシュメモリに対応しているものとして、最下位の64Kバイトに属するセクタのデータを消去し、そのセクタ以外のアドレスのデータが消去された場合(基本ROM14のセクタ判定の場合は、ベクタテーブル/ブートプログラム領域14aのプログラムが消去されて動作不能となった場合)に、セクタ構成が不適合であると判定するものとした。しかしながら、本発明は、これに限らず、ファームウェアがトップセクタタイプのフラッシュメモリに対応している場合にも適用が可能である。この場合には、フラッシュメモリの最上位64Kバイトに属する何れかのセクタを消去してそのセクタ以外のアドレスのデータが消去された場合に不適合なボトムセクタタイプのフラッシュメモリが実装されていると判断すればよい。
【図面の簡単な説明】
【図1】 本発明の一実施形態であるプリンタのシステム構成図である。
【図2】 基本ROMの最下位64Kバイトのメモリ構成を示す図である。
【図3】 拡張ROMの最下位64Kバイトのメモリ構成を示す図である。
【図4】 メモリ判定処理のメインルーチンのフローチャートである。
【図5】 データ消去処理のフローチャートである。
【図6】 データ書込み処理のフローチャートである。
【図7】 基本ROMのデータ消去/書込み手順およびセクタ構成の判定処理を行うルーチンのフローチャートである。
【図8】 拡張ROMの消去・書込み手順およびセクタ構成の判定処理を行うルーチンのフローチャートである。
【図9】 基本ROMのメモリサイズ判定処理の原理説明図である。
【図10】 基本ROMサイズ判定ルーチンのフローチャート。
【図11】 拡張ROM実装判定ルーチンのフローチャートである。
【図12】 フラッシュメモリのセクタ構成を示す図である。
【符号の説明】
10 プリンタ、12 中央処理ユニット(CPU)、14 基本ROM、16 拡張ROM
Claims (17)
- フラッシュメモリが実装されたプリンタにおける当該フラッシュメモリの判定方法であって、
前記フラッシュメモリへのアクセス結果に基づいて、当該フラッシュメモリが前記プリンタに適合しているか否かを判定するメモリ判定ステップを備え、
前記メモリ判定ステップは、前記フラッシュメモリの所定のセクタのデータを消去して、当該所定のセクタに含まれないアドレスのデータが消去されたか否かに基づいて、当該フラッシュメモリのセクタ構成が前記プリンタに適合しているか否かを判定するセクタ判定ステップを含むことを特徴とする方法。 - 請求項1記載の方法において、
前記メモリ判定ステップは、
前記フラッシュメモリに対して所定の消去手順でのデータの消去処理および所定の書込み手順でのデータ書込み処理を行い、データの書込みおよび消去が正しく行えたか否かに基づいて、前記所定の消去手順および前記所定の書込み手順が当該フラッシュメモリに適合しているか否かを判定する消去/書込み手順判定ステップと、
前記フラッシュメモリから所定アドレスを指定して読出したデータに基づいて前記フラッシュメモリのサイズを判定するメモリサイズ判定ステップと、
を含むことを特徴とする方法。 - 請求項1記載のフラッシュメモリの判定方法において、前記プリンタに適合したセクタ構成がボトムセクタタイプである場合には、前記所定のセクタとして最下位64Kバイトのアドレス領域に割り付けられた何れかのセクタを用い、前記プリンタに適合したセクタ構成がトップセクタタイプである場合には、前記所定のセクタとして最上位64Kバイトのアドレス領域に割り付けられた何れかのセクタを用いることを特徴とする方法。
- 請求項3記載の方法において、前記最下位または最上位の64Kバイトのアドレス領域に割り付けられた複数のセクタのうちの何れかのセクタにはブートプログラムが格納されており、
前記セクタ判定ステップでは、前記所定のアドレスとして、前記複数のセクタのうちブートプログラムが格納されていない何れかのセクタを用い、前記所定のセクタのデータ消去後に前記ブートプログラムが作動しなくなった場合に、適合しないセクタ構成のフラッシュメモリが実装されていると判定することを特徴とする方法。 - 請求項2〜4のうち何れか1項記載の方法において、
前記フラッシュメモリのサイズはS1〜Snのn種類(ただし、Si<Si+1;i=1〜n−1)のうち何れかであるとし、
前記メモリサイズ判定ステップにおける前記所定のアドレスとして、次の条件(1)および(2)を満たすアドレスM0〜Mn−1を用いることを特徴とする方法。
(1)アドレスM1はメモリサイズS1〜Snの全てに含まれ、アドレスMj(j=2〜n−1)は、メモリサイズS1〜Sj−1には含まれず、メモリサイズSj〜Snには含まれる。
(2)メモリサイズS1の最大アドレスのビット数をNとすると、各アドレスMj(j=2〜n−1)の下位NビットはアドレスM1に一致する。 - 請求項5記載の方法において、前記アドレスMj(j=2〜n)のうち、そのアドレスを指定して読出した値が、前記アドレスM1を指定して読出した値と一致するようなjの最小値をKとした場合、前記フラッシュメモリのサイズはSK−1であると判定し、前記アドレスMjを指定して読出した値が、何れも、前記アドレスM1を指定して読出した値と一致しなければ、前記フラッシュメモリのサイズはSnであると判定することを特徴とする方法。
- 請求項1〜6のうち何れか1項記載の方法において、前記プリンタは、基本ROMとしてのフラッシュメモリと拡張ROMとしてのフラッシュメモリとが実装されるように設計されており、
前記メモリ判定ステップは、前記拡張ROMが実装されているか否かを判定する拡張ROM実装判定ステップを更に含むことを特徴とする方法。 - 請求項2〜6のうち何れか1項記載の方法において、前記プリンタは、基本ROMとしてのフラッシュメモリと拡張ROMとしてのフラッシュメモリとが実装されるように設計されており、
前記セクタ判定ステップ、前記消去/書込み手順判定ステップ、および前記メモリサイズ判定ステップを、前記基本ROMとしてのフラッシュメモリおよび前記拡張ROMとしてのフラッシュメモリの夫々について実行することを特徴とする方法。 - 請求項8記載の方法において、
前記メモリ判定ステップは、前記拡張ROMが実装されているか否かを判定する拡張ROM実装判定ステップを更に含み、前記拡張ROMが実装されていないと判定された場合には、前記拡張ROMとしてのフラッシュメモリについて前記セクタ判定ステップ、前記消去/書込み手順判定ステップ、および前記メモリサイズ判定ステップの実行を省略することを特徴とする方法。 - 請求項9記載の方法において、
前記拡張ROM実装判定ステップでは、前記拡張ROMへのデータ書込みが正しく行えたか否かに基づいて、当該拡張ROMが実装されているか否かを判定することを特徴とする方法。 - 請求項9または10記載の方法において、前記拡張ROMとしてのフラッシュメモリについて前記メモリサイズ判定ステップで判定されたメモリサイズを、前記基本ROMおよび前記拡張ROMに夫々格納し、前記基本ROMに格納されているメモリサイズと前記拡張ROMに格納されているメモリサイズとが一致する場合には、前記拡張ROMとしてのフラッシュメモリについて前記消去/書込み手順判定ステップおよび前記メモリサイズ判定ステップの実行を省略することを特徴とする方法。
- 前記プリンタの電源が投入される毎に実行されることを特徴とする請求項1〜11のうち何れか1項記載の方法。
- フラッシュメモリが実装されたプリンタであって、
前記フラッシュメモリの所定のセクタのデータを消去して、当該所定のセクタに含まれないアドレスのデータが消去されたか否かに基づいて、当該フラッシュメモリのセクタ構成が当該プリンタに適合しているか否かを判定するセクタ判定手段を備えることを特徴とするプリンタ。 - 請求項13において、さらに、前記フラッシュメモリに対して所定の消去手順でのデータの消去処理および所定の書込み手順でのデータ書込み処理を行い、データの書込みおよび消去が正しく行えたか否かに基づいて、前記所定の消去手順および前記所定の書込み手順が当該フラッシュメモリに適合しているか否かを判定する消去/書込み手順判定手段と、
前記フラッシュメモリから所定アドレスを指定して読出したデータに基づいて前記フラッシュメモリのサイズを判定するメモリサイズ判定手段と、を備えることを特徴とするプリンタ。 - フラッシュメモリを備えるプリンタに搭載されたコンピュータに、
前記フラッシュメモリの所定のセクタのデータを消去して、当該所定のセクタに含まれないアドレスのデータが消去されたか否かに基づいて、当該フラッシュメモリのセクタ構成が当該プリンタに適合しているか否かを判定するステップを実行させるプログラム。 - 前記プリンタのブートプログラムの一部として構成された請求項15記載のプログラム。
- 請求項15または16記載のプログラムを記録した記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002251303A JP4131147B2 (ja) | 2002-08-29 | 2002-08-29 | プリンタにおけるフラッシュメモリの判定方法、この方法をコンピュータに実行させるプログラム、このプログラムを記録した記録媒体、フラッシュメモリを備えるプリンタ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002251303A JP4131147B2 (ja) | 2002-08-29 | 2002-08-29 | プリンタにおけるフラッシュメモリの判定方法、この方法をコンピュータに実行させるプログラム、このプログラムを記録した記録媒体、フラッシュメモリを備えるプリンタ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004094342A JP2004094342A (ja) | 2004-03-25 |
JP4131147B2 true JP4131147B2 (ja) | 2008-08-13 |
Family
ID=32057924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002251303A Expired - Fee Related JP4131147B2 (ja) | 2002-08-29 | 2002-08-29 | プリンタにおけるフラッシュメモリの判定方法、この方法をコンピュータに実行させるプログラム、このプログラムを記録した記録媒体、フラッシュメモリを備えるプリンタ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4131147B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007133512A (ja) | 2005-11-08 | 2007-05-31 | Seiko Epson Corp | フラッシュromを備えた情報処理装置及びフラッシュromのデータ消去方法 |
JP2010160724A (ja) * | 2009-01-09 | 2010-07-22 | Ricoh Co Ltd | メモリ制御システム、メモリ制御方法、メモリ制御プログラム及び記録媒体 |
-
2002
- 2002-08-29 JP JP2002251303A patent/JP4131147B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004094342A (ja) | 2004-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7290097B2 (en) | Nonvolatile memory | |
US10552311B2 (en) | Recovery for non-volatile memory after power loss | |
US6601132B2 (en) | Nonvolatile memory and method of writing data thereto | |
EP1548602B1 (en) | Non-volatile storage device control method | |
US7450436B2 (en) | Device recoverable purge for flash storage device | |
WO2005111812A1 (ja) | 不揮発性記憶装置のためのエラー訂正方法 | |
US20080104361A1 (en) | Storage Device, Memory Managing Apparatus, Memory Managing Method, and Program | |
JP3472008B2 (ja) | フラッシュメモリ管理方法 | |
JPH11110306A (ja) | 記憶装置、データ処理システム並びにデータ処理方法 | |
JP3576625B2 (ja) | フラッシュメモリカードのデータ管理方法およびそのデータ管理方法を使用したデータ処理装置 | |
US5933595A (en) | Computer apparatus having electrically rewritable nonvolatile memory, and nonvolatile semiconductor memory | |
CN111142781B (zh) | 数据储存装置与数据处理方法 | |
JP2007310916A (ja) | メモリカード | |
CN113094107B (zh) | 数据保护方法、装置、设备及计算机存储介质 | |
JP2004220068A (ja) | メモリカード及びメモリへのデータ書き込み方法 | |
JP4131147B2 (ja) | プリンタにおけるフラッシュメモリの判定方法、この方法をコンピュータに実行させるプログラム、このプログラムを記録した記録媒体、フラッシュメモリを備えるプリンタ | |
US20070101049A1 (en) | Redundant purge for flash storage device | |
US20070088905A1 (en) | System and method for purging a flash storage device | |
JP4332134B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
CN112052112A (zh) | 基于NOR Flash存储的位翻转错误检测方法、装置及存储介质 | |
US20070101048A1 (en) | Verified purge for flash storage device | |
CN117894362A (zh) | 一次性可编程存储器修改方法、装置和电子设备 | |
JPH08115175A (ja) | 不揮発性半導体ディスク装置およびその制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050513 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20070402 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080212 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080219 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080408 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080430 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080513 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110606 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110606 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120606 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130606 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130606 Year of fee payment: 5 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |