(57)【要約】      （修正有）【課題】フラッシのュＲＯＭ内に無駄な領域を作ることなく、かつオーバーライトを生じさせずに書き込み処理を行うことができる情報処理装置及びその制御方法を提供することを目的としている。【解決手段】ＣＰＵと、複数のセクタからなるデータ領域と、同じく前記消去単位からなるパッチ領域２５とを備えたフラッシュＲＯＭ４と、を有し、ＣＰＵは、データ領域の書き込み対象アドレスと１組の構成となって２バイトを構成している他のアドレスに、既にデータが格納されているため、書き込み対象アドレスに書き込むことができなかった新データと新データに関する付加情報とをパッチ領域２５に書き込む。【選択図】図２
2007115059.tif 000002
【特許請求の範囲】
【請求項１】
所定の書き込み単位でデータを書き込む情報処理装置であって、
それぞれデータが書き込まれる複数のデータ領域とパッチ領域とを備えたフラッシュＲＯＭと、
所定の書き込み単位で前記フラッシュＲＯＭにデータを書き込むＣＰＵと、を有し、
前記ＣＰＵは、前記データ領域の一の所定の書き込み対象アドレスに新データを書き込む際、前記データ領域の書き込み対象アドレスとともに同時に書き込まれる他のアドレスに既にデータが格納されている場合、前記新データを含むパッチ情報を前記パッチ領域に書き込むことを特徴とする情報処理装置。
【請求項２】
前記パッチ情報は、前記書き込み対象アドレスを示す論理アドレスと、前記データ領域またはパッチ領域を区別する領域ＩＤとを含むことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記パッチ情報は、前記書き込み対象アドレスと前記領域ＩＤとから得られるアドレスに書き込まれることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記パッチ領域は、どのデータ領域のパッチ情報を含んでいるかを示すフラグを保持するフラグ部を備え、
前記ＣＰＵは、あるデータ領域のパッチ情報を最初に書き込んだときに前記フラグを設定することを特徴とする請求項１〜３の何れか一項に記載の情報処理装置。
【請求項５】
前記情報処理装置は、前記新データを反映させる作業が行われる作業領域を備えたＲＡＭを有し、
前記フラッシュＲＯＭは、書き込み処理中における前記データ領域のデータの消失を防ぐためのバックアップ領域を備え、
前記ＣＰＵは、前記領域ＩＤに格納された前記消去単位のデータを前記作業領域にコピーし、前記新データを前記作業領域に反映させ、前記新データが反映された前記消去単位のデータを参照することを特徴とする請求項１〜４の何れか一項に記載の情報処理装置。
【請求項６】
前記ＣＰＵは、前記パッチ領域に空き領域が無くなると、前記データ領域に格納されたデータを前記作業領域にコピーし、前記新データを前記作業領域に反映させ、前記新データが反映されたデータを前記バックアップ領域に書き込むことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記ＣＰＵは、前記新データが反映された前記消去単位のデータを前記バックアップ領域に書き込んだ後、前記バックアップ領域を新しいデータ領域として設定し、コピー元の前記データ領域をバックアップ領域として設定することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記ＣＰＵは、前記パッチ領域中の全ての前記新データが反映された後に前記パッチ領域の初期化を行い、初期化されたパッチ領域の内容を該バックアップ領域に書き込むことによって、該バックアップ領域を新たなパッチ領域として設定し、前記パッチ領域を新たなバックアップ領域として設定することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記パッチ領域と、前記バックアップ領域と、前記作業領域と、は全て同一サイズであることを特徴とする請求項５〜８の何れか一項に記載の情報処理装置。
【請求項１０】
ＣＰＵと、データ領域及びパッチ領域を備えたフラッシュＲＯＭと、を有し、所定の書き込み単位でデータを書き込む情報処理装置の制御方法であって、
前記データ領域の一の所定の書き込み対象アドレスに新データを書き込む際、前記データ領域の書き込み対象アドレスとともに同時に書き込まれる他のアドレスに既にデータが格納されているかどうか判断するステップと、
前記判断ステップで、前記他のアドレスに既にデータが格納されていなければ、前記新データを前記書き込み対象アドレスに書き込むステップと、
前記判断ステップで、前記他のアドレスに既にデータが格納されていれば、前記新データを含むパッチ情報を前記パッチ領域に書き込むステップと、を備えたことを特徴とする情報処理装置の制御方法。
【請求項１１】
前記パッチ情報は、前記書き込み対象アドレスを示す論理アドレスと、前記データ領域またはパッチ領域を区別する領域ＩＤとを含むことを特徴とする請求項１０に記載の情報処理装置の制御方法。
【請求項１２】
前記パッチ情報は、前記書き込み対象アドレスと前記領域ＩＤとから得られるアドレスに書き込まれることを特徴とする請求項１１に記載の情報処理装置の制御方法。
【請求項１３】
あるデータ領域のパッチ情報を前記パッチ領域に最初に書き込んだときに、フラグをパッチ領域中のフラグ部に設定するステップを備えたことを特徴とする請求項１０〜１２の何れか一項に記載の情報処理装置の制御方法。
【請求項１４】
前記新データを反映させる作業が行われる作業領域を備えたＲＡＭを備え、
前記フラッシュＲＯＭは、書き込み処理中における前記データ領域のデータの消失を防ぐためのバックアップ領域を備え、
前記領域ＩＤに格納された前記消去単位のデータを前記作業領域にコピーするステップと、
前記新データを前記作業領域に反映させるステップと、
前記新データが反映された前記消去単位のデータを参照するステップと、を備えたことを特徴とする請求項１０〜１３の何れか一項に記載の情報処理装置の制御方法。
【請求項１５】
前記パッチ領域に空き領域が無くなったとき、前記データ領域に格納されたデータを前記作業領域にコピーするステップと、
前記新データを前記作業領域に反映させるステップと、
前記新データが反映されたデータを前記バックアップ領域に書き込むことを特徴とする請求項１４に記載の情報処理装置の制御方法。
【請求項１６】
前記反映されたデータを前記バックアップ領域に書き込んだ後、前記バックアップ領域を新しいデータ領域として設定するステップと、
コピー元の前記データ領域をバックアップ領域として設定するステップと、を備えたことを特徴とする請求項１５に記載の情報処理装置の制御方法。
【請求項１７】
前記パッチ領域中の全ての前記新データが反映された後に、前記パッチ領域の初期化を行うステップと、
初期化されたパッチ領域の内容を該バックアップ領域に書き込むとともに該バックアップ領域を新たなパッチ領域として設定するステップと、
前記パッチ領域を新たなバックアップ領域として設定するステップと、を備えたことを特徴とする請求項１６に記載の情報処理装置の制御方法。
【請求項１８】
前記パッチ領域と、前記バックアップ領域と、前記作業領域と、は全て同一サイズであることを特徴とする請求項１４〜１７の何れか一項に記載の情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理装置の制御方法であって、特に所定の書き込み単位でデータを書き込む情報処理装置及びその制御方法に関する。
【背景技術】
【０００２】
プリンタやスキャナ等の情報処理装置には、内蔵する各種ハードウェアの制御を行うためのプログラムであるファームウェアが組み込まれており、ファームウェアを実行することにより情報処理装置の各種制御が行われる。例えば、プリンタの場合には、ファームウェアによりホストコンピュータと通信を行いつつ、印刷機構や紙送り機構等のハードウェアが制御される。一般に、ファームウェアは、情報処理装置内部に設けられた不揮発性メモリであるフラッシュＲＯＭに格納されている。
【０００３】
ところで、フラッシュＲＯＭにはその構造上、消去あるいは書き込みについて種々の制約がある。例えば、消去を行う際には、あるまとまった単位（セクタやブロック）で消去するかあるいはフラッシュＲＯＭ全体を一括して消去するように構成されている。また、書き込み単位も情報処理装置内部のシステムによって決められており、例えば１バイト単位や２バイトといった決まった単位で書き込むように構成されている。
【０００４】
例えば、図１２（ａ）及び図１２（ｂ）に、２バイト単位で書き込むフラッシュＲＯＭに１バイトのデータを書き込む場合の例を示す。データが書き込まれていない状態を「ＦＦｈ」とし、アドレス「０１００ｈ」及び「０１０１ｈ」ともに「ＦＦｈ」の状態で、アドレス「０１０１ｈ」に新データ「Ａ５」を書き込む場合には、図１２（ａ）に示すようにアドレス「０１００ｈ」を「ＦＦｈ」→「ＦＦｈ」に上書きし（ビット１にビット１を書き込む）、アドレス「０１０１ｈ」を「ＦＦｈ」→「Ａ５ｈ」に上書きする（ビット１にビット０を書き込む）ことによってデータの書き込みを行うことができる。
【０００５】
また、２バイト単位で書き込むフラッシュＲＯＭにおいて、アドレス「０１００ｈ」が「４０ｈ」、アドレス「０１０１ｈ」が「ＦＦｈ」の状態で、アドレス「０１０１ｈ」に新データ「Ａ５ｈ」を書き込む場合に同様な手法を適用すると、図１２（ｂ）に示すようにアドレス「０１００ｈ」を「４０ｈ」→「４０ｈ」に上書きし、アドレス「０１０１ｈ」を「ＦＦｈ」→「Ａ５ｈ」に上書きすることになる。ここで、「４０ｈ」→「４０ｈ」の書き換えに際しては、一部のビットについては、ビット０にビット０を書き込むこととなる。このような書き込みは、フラッシュＲＯＭの構造上記憶データの破壊や喪失につながる虞があるため、一般に禁止されている。本明細書では、このような書き込みを、オーバーライトとよぶこととする。
【０００６】
オーバーライトを防ぐためには、各１バイトデータを２バイトに拡張して扱うこととすることが考えられる。すなわち４０ＦＦｈという２バイトのデータをバイト単位で２バイト拡張すると、４０ＦＦｈ、ＦＦＦＦｈとなる。この状態で拡張以前の４０ＦＦｈのＦＦをＡ５に書き換えようとすると、実際にはＦＦＦＦｈ→Ａ５ＦＦｈに書き換えればよい。そして、読み取るときには、４０ＦＦｈ，Ａ５ＦＦｈの２バイト目部分（ＦＦ部分）を読み捨て、それぞれ４０ｈ、Ａ５ｈとして認識することにより、結果として４０ＦＦｈを４０Ａ５ｈに実質的に書き換えることが可能となる。
【０００７】
しかし、１バイトを２バイトに拡張してデータを書き込むと常に２バイト目の「ＦＦｈ」分の領域が無駄に使われることになってしまい、フラッシュＲＯＭ内のデータ領域を有効利用することができない。
【０００８】
このような問題を解決すべく様々な書き込み方法が提案されている。
たとえば、書き換え対象データを含む１セクタの内容をフラッシュＲＯＭから一時的にＲＡＭに書き込み、ＲＡＭ内の書き換え対象データ（１バイト単位のデータ）を新しいデータに書き換えた後、フラッシュＲＯＭの該当セクタを消去する。そして、消去したフラッシュＲＯＭの該当セクタにＲＡＭ内の１セクタ分のデータを書き戻すことが行われている。このようにＲＡＭ内において新しいデータに書き換えてからフラッシュＲＯＭの所定領域に１ブロック分を書き戻すようにすれば、ビット０にビット０を書き込むことなく、さらに無駄な領域を必要せずに、書き換え対象データをバイト単位で書き換えることができる（特許文献１参照）。
【０００９】
また、フラッシュＲＯＭ内に２つのバックアップ領域を設けることによって、バイト単位のデータの書き換えを可能にしたものも提案されている。これは、一方のバックアップ領域には書き換え対象データを含む１セクタをコピーし、他方のバックアップ領域には書き換え対象データが格納されたアドレスに、新たに書き込みが行われたことがわかるようなマーカーデータ（００ｈなど）を書き込むことができるように構成されている。すなわち、ＲＡＭを使用せずに２つのバックアップ領域のデータから、フラッシュＲＯＭ内の１セクタを、新たな１バイト単位のデータと書き換え対象データ以外のデータとによって書き換えるようになっている（特許文献２参照）。
【００１０】
【特許文献１】特開２０００−３３９２１２号公報
【特許文献２】特開平１１−２８２７５９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１及び特許文献２の書き換え方法では、１バイトのデータを書き込むごとにＲＡＭに１セクタ分のデータをコピーしなければならず書き換え処理に時間がかかり書き換え速度が低下してしまう。また、データを書き込むごとにフラッシュＲＯＭの該当セクタを消去しなければならず、書き換え回数の増加によりフラッシュＲＯＭの寿命が短くなってしまうという問題点がある。
【００１２】
本発明は、このような問題点に鑑みて為されたものであって、オーバーライトを生じさせずに書き換え処理を行うとともに、フラッシのュＲＯＭ内に無駄な領域を作ることなく領域を有効活用することが可能なだけでなく、フラッシュＲＯＭの書き込み処理にともなうフラッシュＲＯＭの書き換え回数の増加を抑えるとともに、書き換え処理の速度を低下させることのない情報処理装置及びその制御方法を提供することを目的としている。
【課題を解決するための手段】
【００１３】
上記目的は以下の手段によって達成される。
（１）  所定の書き込み単位でデータを書き込む情報処理装置であって、
それぞれデータが書き込まれる複数のデータ領域とパッチ領域とを備えたフラッシュＲＯＭと、
所定の書き込み単位で前記フラッシュＲＯＭにデータを書き込むＣＰＵと、を有し、
前記ＣＰＵは、前記データ領域の一の所定の書き込み対象アドレスに新データを書き込む際、前記データ領域の書き込み対象アドレスとともに同時に書き込まれる他のアドレスに既にデータが格納されている場合、前記新データを含むパッチ情報を前記パッチ領域に書き込むことを特徴とする情報処理装置。
（２）  前記パッチ情報は、前記書き込み対象アドレスを示す論理アドレスと、前記データ領域またはパッチ領域を区別する領域ＩＤとを含むことを特徴とする（１に記載の情報処理装置。
（３）  前記パッチ情報は、前記書き込み対象アドレスと前記領域ＩＤとから得られるアドレスに書き込まれることを特徴とする（２）に記載の情報処理装置。
（４）  前記パッチ領域は、どのデータ領域のパッチ情報を含んでいるかを示すフラグを保持するフラグ部を備え、
前記ＣＰＵは、あるデータ領域のパッチ情報を最初に書き込んだときに前記フラグを設定することを特徴とする（１）〜（３）の何れか一項に記載の情報処理装置。
（５）  前記情報処理装置は、前記新データを反映させる作業が行われる作業領域を備えたＲＡＭを有し、
前記フラッシュＲＯＭは、書き込み処理中における前記データ領域のデータの消失を防ぐためのバックアップ領域を備え、
前記ＣＰＵは、前記領域ＩＤに格納された前記消去単位のデータを前記作業領域にコピーし、前記新データを前記作業領域に反映させ、前記新データが反映された前記消去単位のデータを参照することを特徴とする（１）〜（４）の何れか一項に記載の情報処理装置。
（６）  前記ＣＰＵは、前記パッチ領域に空き領域が無くなると、前記データ領域に格納されたデータを前記作業領域にコピーし、前記新データを前記作業領域に反映させ、前記新データが反映されたデータを前記バックアップ領域に書き込むことを特徴とする（５）に記載の情報処理装置。
（７）  前記ＣＰＵは、前記新データが反映された前記消去単位のデータを前記バックアップ領域に書き込んだ後、前記バックアップ領域を新しいデータ領域として設定し、コピー元の前記データ領域をバックアップ領域として設定することを特徴とする（６）に記載の情報処理装置。
（８）  前記ＣＰＵは、前記パッチ領域中の全ての前記新データが反映された後に前記パッチ領域の初期化を行い、初期化されたパッチ領域の内容を該バックアップ領域に書き込むことによって、該バックアップ領域を新たなパッチ領域として設定し、前記パッチ領域を新たなバックアップ領域として設定することを特徴とする（７）に記載の情報処理装置。
（９）  前記パッチ領域と、前記バックアップ領域と、前記作業領域と、は全て同一サイズであることを特徴とする（５）〜（８）の何れか一項に記載の情報処理装置。
（１０）    ＣＰＵと、データ領域及びパッチ領域を備えたフラッシュＲＯＭと、を有し、所定の書き込み単位でデータを書き込む情報処理装置の制御方法であって、
前記データ領域の一の所定の書き込み対象アドレスに新データを書き込む際、前記データ領域の書き込み対象アドレスとともに同時に書き込まれる他のアドレスに既にデータが格納されているかどうか判断するステップと、
前記判断ステップで、前記他のアドレスに既にデータが格納されていなければ、前記新データを前記書き込み対象アドレスに書き込むステップと、
前記判断ステップで、前記他のアドレスに既にデータが格納されていれば、前記新データを含むパッチ情報を前記パッチ領域に書き込むステップと、を備えたことを特徴とする情報処理装置の制御方法。
（１１）  前記パッチ情報は、前記書き込み対象アドレスを示す論理アドレスと、前記データ領域またはパッチ領域を区別する領域ＩＤとを含むことを特徴とする（１０）に記載の情報処理装置の制御方法。
（１２）  前記パッチ情報は、前記書き込み対象アドレスと前記領域ＩＤとから得られるアドレスに書き込まれることを特徴とする（１１）に記載の情報処理装置の制御方法。
（１３）  あるデータ領域のパッチ情報を前記パッチ領域に最初に書き込んだときに、フラグをパッチ領域中のフラグ部に設定するステップを備えたことを特徴とする（１０）〜（１２）の何れか一項に記載の情報処理装置の制御方法。
（１４）  前記新データを反映させる作業が行われる作業領域を備えたＲＡＭを備え、
前記フラッシュＲＯＭは、書き込み処理中における前記データ領域のデータの消失を防ぐためのバックアップ領域を備え、
前記領域ＩＤに格納された前記消去単位のデータを前記作業領域にコピーするステップと、
前記新データを前記作業領域に反映させるステップと、
前記新データが反映された前記消去単位のデータを参照するステップと、を備えたことを特徴とする（１０）〜（１３）の何れか一項に記載の情報処理装置の制御方法。
（１５）  前記パッチ領域に空き領域が無くなったとき、前記データ領域に格納されたデータを前記作業領域にコピーするステップと、
前記新データを前記作業領域に反映させるステップと、
前記新データが反映されたデータを前記バックアップ領域に書き込むことを特徴とする（１４）に記載の情報処理装置の制御方法。
（１６）  前記反映されたデータを前記バックアップ領域に書き込んだ後、前記バックアップ領域を新しいデータ領域として設定するステップと、
コピー元の前記データ領域をバックアップ領域として設定するステップと、を備えたことを特徴とする（１５）に記載の情報処理装置の制御方法。
（１７）  前記パッチ領域中の全ての前記新データが反映された後に、前記パッチ領域の初期化を行うステップと、
初期化されたパッチ領域の内容を該バックアップ領域に書き込むとともに該バックアップ領域を新たなパッチ領域として設定するステップと、
前記パッチ領域を新たなバックアップ領域として設定するステップと、を備えたことを特徴とする（１６）に記載の情報処理装置の制御方法。
（１８）  前記パッチ領域と、前記バックアップ領域と、前記作業領域と、は全て同一サイズであることを特徴とする（１４）〜（１７）の何れか一項に記載の情報処理装置の制御方法。
【発明の効果】
【００１４】
本発明によれば、ＣＰＵは、書き込み対象アドレスに書き込むことができなかった新データと新データに関する付加情報とからなるパッチ情報をフラッシュＲＯＭ内のパッチ領域に書き込むように構成されている。したがって、既にデータが書き込まれているアドレスには新しいデータが書き込まれることがないのでビット０にビット０を上書きすることがない。そのためオーバーライトを生じることがない。また、データを書き込む度にフラッシュＲＯＭの該当セクタを消去するといった消去処理を必要としないのでフラッシュＲＯＭの寿命を長くもたせることが可能である。
【００１５】
また本発明によれば、新データは、書き込み対象アドレスと、複数の同一サイズの消去単位から前記書き込み対象アドレスが属する１の消去単位を識別する領域ＩＤとを備えた付加情報とともにパッチ領域の所定のアドレスに書き込まれるように構成されている。したがって、領域ＩＤを確認すれば、新データがフラッシュＲＯＭのどこのデータ領域に書き込まれるデータであるかを判断することが可能である。
【００１６】
また本発明によれば、所定のアドレスは、書き込み対象アドレスと、領域ＩＤとによって計算された値をとるように構成されている。したがって、パッチ領域中に新データを平均的に分散させることができることができるので、新データの検索時間の増加を抑えることが可能である。
【００１７】
また本発明によれば、ＣＰＵは、パッチ領域に領域ＩＤに関する新データが格納されていることを示すフラグをパッチ領域のフラグ部に立てるように構成されている。したがって、フラグ部を確認すれば、データ領域内のある領域ＩＤに関する新データがパッチ領域内に書き込まれているか否かを判断することができる。
【００１８】
また本発明による情報処理装置は、ＣＰＵは、パッチ領域に新データが書き込まれているときだけ、新データの該当する領域ＩＤに格納されたデータをＲＡＭの作業領域にコピーし、新データを作業領域に反映させ、新データが反映されたデータを参照するように構成されている。したがって、パッチ領域に新データが書き込まれていないときはそのままデータ領域のデータを参照するので参照処理に必要以上の時間がかかることがない。
【００１９】
また本発明によれば、ＣＰＵは、フラグを参照することによってデータ領域中の領域ＩＤを認識してから参照処理を行うように構成されている。したがって、フラグを確認すれば、データ領域内のある領域ＩＤに関する新データがパッチ領域内に書き込まれているか否かを判断することができるので、パッチ領域全体を逐次検索する必要がなく、参照処理を高速化することが可能である。
【００２０】
また本発明によれば、ＣＰＵは、パッチ領域に空き領域が無くなると、新データが反映された消去単位のデータをバックアップ領域に書き込むように構成されている。したがって、新データが反映される前のデータをデータ領域に残したまま、反映後のデータをフラッシュＲＯＭ内の別の領域書き込むので、書き込み途中で情報処理装置の電源がＯＦＦされても、再度新データを反映させることが可能である。
【００２１】
また本発明によれば、ＣＰＵは、フラグを参照することによってデータ領域中の領域ＩＤを認識してから参照処理を行うように構成されている。したがって、フラグを確認すれば、データ領域内のある領域ＩＤに関する新データがパッチ領域内に書き込まれているか否かを判断することができるので、パッチ領域全体を逐次検索する必要がなく、フラッシュＲＯＭへの書き戻し処理を高速化することが可能である。
【００２２】
また本発明によれば、データ領域と、パッチ領域と、バックアップ領域とは固定されずに交互に入れ替わるように構成されている。したがって、特定の領域に偏って消去処理が行われることがないので、特定の領域だけが使えなくなってしまうといったことがない。そして、フラッシュＲＯＭ全体の領域を平均的に使用することができるので、フラッシュＲＯＭの寿命を長く持たせることができる。
【発明を実施するための最良の形態】
【００２３】
以下、図面を参照して、本発明に係る情報処理装置及び情報処理装置の制御方法の実施形態を詳細に説明する。
【００２４】
以下、本実施形態においては情報処理装置の一例としてプリンタを挙げて説明する。
まず、本実施形態のプリンタ１の制御構造について説明する。
【００２５】
図１は、本実施形態のプリンタ１の制御構造を示すブロック図である。
本実施形態のプリンタ１は、外部のホストコンピュータ２０と通信可能に接続され、ホストコンピュータから送信される各種コマンドに応じて動作し、印刷や画像読み取りを実行する。プリンタ１は、主として、ＣＰＵ２、ＲＡＭ３、フラッシュＲＯＭ４、通信インタフェース５、印刷ヘッド駆動機構６、印刷媒体搬送機構７、センサ類８、を備え、それぞれは内部バス９により電気的に接続されている。なお、図１では、模式的に一つの内部バス９で各部が接続されているとして説明しているが、各部が機能する限りにおいて、他の構成で接続されていてもよい。
【００２６】
ＣＰＵ２は、プリンタ１の制御中枢であって、フラッシュＲＯＭ４に書き込まれたファームウェアを実行することにより、印刷ヘッド駆動機構６、印刷媒体搬送機構７、センサ類８等の動作を制御する。本実施形態においては、ホストコンピュータ２０から受信するメモリ書き換えコマンドに応じて、フラッシュＲＯＭ４の書き換え処理の制御を行う。本実施形態では、ＣＰＵ２は、ファームウェアに基づき、２バイト単位（１６ｂｉｔモード）でフラッシュＲＯＭ４へのデータ書き込みを実行する。
【００２７】
ＲＡＭ３は、プリンタ１における揮発性の記憶領域である。図１では、模式的に一つのＲＡＭ３が描かれているが用途に応じて複数のＲＡＭチップが設けられていてもよい。このＲＡＭ３には、ホストコンピュータから受信したデータを一時的に保存する受信バッファ、メモリ書き換え処理中に利用される作業領域としてのワーク領域が設けられている。
【００２８】
フラッシュＲＯＭ４は、所定のセクタ単位でデータを電気的に書き換え可能な不揮発性メモリであり、内部にプリンタ制御用のファームウェアが書き込まれている。また、フラッシュＲＯＭ４にはプリンタ１の各種設定値が格納されており、この各種設定値は書き換えることが可能である。本実施形態におけるフラッシュＲＯＭ４は、最小消去単位が１セクタ、最小書込み単位が２バイトとして構成されている。
【００２９】
通信インタフェース５は、外部のホストコンピュータ２０との通信を行うインタフェースである。ホストコンピュータ２０から受信するデータ及びホストコンピュータ２０へ送信されるデータは、すべてこの通信インタフェース５を介して送受信される。
【００３０】
印刷ヘッド駆動機構６は、印刷ヘッド内のインクと吐出用の圧電素子及び圧電素子への電圧印加回路等からなり、ＣＰＵ２、ＲＡＭ３及びフラッシュＲＯＭ４から構成されるＣＰＵ２の指示に応じて圧電素子に電圧を印加することにより印刷ヘッドに設けられた複数のノズルからインク液滴を吐出する。
【００３１】
印刷媒体搬送機構７は、モータ、モータの駆動回路、モータの動力を搬送ローラや送りローラ等の各種ローラに伝達するベルト等から構成され、ＣＰＵ２によってロール紙やスリップ紙の搬送制御が行われる。
【００３２】
センサ類８は、ロール紙のニアエンドまたはエンドを検出するロール紙ニアエンドセンサまたはロール紙エンドセンサ、搬送路内にスリップ紙が搬送されたか否かを検出するＴＯＦ（Ｔｏｐ  ｏｆ  Ｆｏｒｍ）検出器あるいはＢＯＦ（Ｂｏｔｔｏｍ  ｏｆ  Ｆｏｒｍ）検出器等から構成され、ＣＰＵ２によってロール紙ニアエンドまたはロール紙エンドの検出制御が行われる。
【００３３】
次に、本実施形態におけるプリンタ１が備えるＲＡＭ３及びフラッシュＲＯＭ４の内部構成を図２を用いて説明する。図２は、ＲＡＭ３及びフラッシュＲＯＭ４の内部構成を模式的に示した図である。
【００３４】
図２では、フラッシュＲＯＭ４の中に描かれた長方形の領域がそれぞれフラッシュＲＯＭ内のセクタを表している。フラッシュＲＯＭ４内には、一例として、セクタ２１〜セクタ２５の5領域があり、それぞれの領域毎にデータの一括消去を実行することができる。
【００３５】
セクタ２１〜２３は、各種設定値等のデータが書き込まれるデータ領域である。例えば、このデータ領域には、プリンタのモード等を設定する値が記憶され、このデータ領域の値を参照しつつ制御が実行される。
【００３６】
セクタ２５は、1バイトのパッチデータを管理するための領域（以下、パッチ領域）である。本実施形態では、ＣＰＵ２が２バイト単位でデータの書き込みを実行するが、オーバーライトを避けようとすると、書き込み対象アドレスのデータが「ＦＦｈ」であっても、書き込み対象アドレスと対となって書き込まれるアドレスのデータが「ＦＦｈ」でなければ、書き換え時にオーバーライトが発生してしまい、書き込みを実行できない。このため、本実施形態では、書き込み対象アドレスと対となって書き込まれるアドレスが「ＦＦｈ」でない場合には、そのデータをパッチ領域（ここでは、セクタ２５）にパッチデータとして書き込むように構成している。
【００３７】
セクタ２４は、データ領域およびパッチ領域のデータまたはパッチデータがまとめられるときに使用される領域であり、バックアップ領域にデータが書き込まれると、そのバックアップ領域は、データ領域として用いられるようになる。この詳細についても、後ほど説明する。
【００３８】
本実施形態では、フラッシュＲＯＭ４上の各セクタは、処理が進むにつれて役割が入れ替わるように構成されている。したがって、各セクタがデータ領域、パッチ領域及びバックアップ領域の何れかの領域に属するかは固定されない。以下の説明では、ある時点で、セクタ２１〜２３がデータ領域、セクタ２４がバックアップ領域、そしてセクタ２５がパッチ領域としての役割を担っているとして説明を続ける。
【００３９】
ＲＡＭ３内には、セクタ２１〜２５と同一サイズのワーク領域３ａが確保されている。ワーク領域３ａには、セクタ２１〜２５のうち参照対象セクタあるいは書き込み対象セクタに該当するセクタのデータが一時的に記憶され、データ参照やフラッシュＲＯＭ４へのライトバックを行う際の作業領域となっている。これについても後ほど説明する。
【００４０】
次に、データ領域とパッチ領域に属するセクタの内部構成について図３及び図４を用いて説明する。
【００４１】
図３はデータ領域にあたるセクタ２１とパッチ領域のセクタ２５の内部構成を示した模式図である。
【００４２】
まず、データ領域にあたるセクタについて説明する。
図３（ａ）に示すようにデータ領域にあたるセクタ（図２では、セクタ２１〜２３）内は管理部２６とデータ部２７から構成されている。
管理部２６は、各セクタが現時点で、データ領域、パッチ領域またはバックアップ領域のうちの何れの領域に属するかを示す領域ＩＤが格納されている。図３（ａ）の例では、セクタ２１の管理部２６の場合、データ領域の一つである「データ1」であることを示す領域ＩＤが格納されている。
データ部２７は、設定値等の各種データを保持する領域である。このデータ部２７には、指定されたアドレスにしたがってデータ1内の個々のデータが格納されている。
【００４３】
次に、パッチ領域にあたるセクタについて説明する。
図３（ｂ）は、パッチ領域に当たるセクタ（図２では、セクタ２５）の内部構成を示した図である。
パッチ領域に当たるセクタ２５には、管理部２８とパッチ情報部２９とフラグ部３０とが構成されている。
【００４４】
まず、管理部２８は、データ領域における管理部２６と同様に、そのセクタがパッチ領域であることを示す領域ＩＤが格納されている。
パッチ情報部２９には、パッチデータを含むパッチ情報が格納されており、フラグ部３０には、このパッチ領域がどのデータ領域のパッチ情報を含んでいるかを示すデータが格納される。
【００４５】
図４は、パッチ情報の詳細を示した模式図である。
パッチ情報は、パッチデータと、付加情報とからなる６バイトのデータである。付加情報としては、パッチデータが本来書き込まれるべき領域を示す１バイトの領域ＩＤと、パッチデータが本来書き込まれるべきアドレスを示す２バイトの論理アドレスとを含む。論理アドレスは、各データ領域の先頭を基準アドレスと考えた場合の書き込み位置を示す相対アドレスで表現されている。
【００４６】
図４に示すように、一つのパッチ情報には、２つの領域ＩＤが含まれるように構成されているこの２つの領域ＩＤは同一の値である。パッチ情報の生成時、ＣＰＵ２は、Ａ→Ｂ→Ｃの順に２バイト単位でパッチ情報部２９へパッチ情報を書き込むため、領域ＩＤが２度に分けて書き込まれることとなる。このような構成によって、ＣＰＵ２が２つの領域ＩＤが一致していることを確認することにより、パッチ情報の信頼性を高めることができる。例えば、パッチ情報書き込み中にプリンタ１の電源がＯＦＦされた場合でも、２つの領域ＩＤが一致にするかどうかを確認することによりパッチ情報の正常性判定を行うことができる。
【００４７】
なお、パッチ情報を生成する際には、パッチ領域を検索し、既に同じデータ領域の同じ論理アドレスに対するパッチ情報が存在しないことを確認した後に生成される。
【００４８】
パッチ情報をパッチ領域に書き込む際の書き込み先のアドレスは、パッチ情報を探索する際の処理速度向上を目的として、（領域ＩＤ）＋（論理アドレス）をキーとしたハッシュ値からハッシュアルゴリズムに基づき計算する。このように、ハッシュアルゴリズムを利用することでパッチ情報を領域中に平均的に分散させ、検索時間の増加を抑えることができる。また、ハッシュ値と計算した書き込みアドレスとの対応表をＲＡＭ３の他の領域に作成しておけば、後述するデータ参照処理においても該当するパッチ情報を即座に取得することができ、データ参照処理を高速化することが可能である。
【００４９】
以下に、パッチ領域中の書き込み先アドレスの計算方法を以下に示す。
キー  ＝ （（領域ＩＤ<< 16）＋論理アドレス） >> 1    ・・・（１）
【００５０】
２バイトデータのうち、上位１バイトまたは下位１バイトのどちらかは本来の領域（データ1〜データ3）のセクタに書き込まれる。このため、パッチ情報として書き込まれるのも、上位バイト/下位バイトのどちらか一方になる。よってキーとしては、右に1ビットシフトし丸めることが可能となる。
【００５１】
ハッシュ値 ＝ キー mod 素数    ・・・（２）
例えば、パッチ領域に格納できるパッチ情報の最大数は10917の場合、それに最も近い素数10909で割り、余りをハッシュ値とする。
【００５２】
書き込み先アドレス第1候補 ＝ パッチ領域先頭アドレス ＋ ハッシュ値 × 6
第1候補アドレスが既に使用中である場合は、そのアドレスに＋6したアドレスを新たな書き込み先アドレスの候補とする。空いているアドレスが見つかるまで、これを繰り返す。
第1候補アドレスに戻ってしまった場合は、パッチ情報領域に空きがないことになる。この場合は、パッチ情報をデータ領域に反映し、パッチ情報領域を空にする（この処理を以下、ライトバックという。）。ライトバックについても後ほど説明する。
【００５３】
＜データ書き込み処理＞
次に、フラッシュＲＯＭの書き込み処理時に、オーバーライトを生じることなく、フラッシのュＲＯＭ内の領域を有効利用してデータを書き込む書き込み処理について一例を挙げて説明する。
【００５４】
図５は、フラッシュＲＯＭ４の書き込み処理の流れを示したフローチャートである。ここでは、セクタ２１にデータを書き込むものとし、セクタ２１中の書き込み対象アドレスを「Ｘ番地」、２バイト書き込み処理において書き込み対象アドレスと同時に書き込まれる対となるアドレスを「Ｙ番地」として説明する。
まず、プリンタ１はホストコンピュータ２０から書き換えデータ（X番地に書き込むべきデータ）を受信すると（ステップＳ１）、一時的にＲＡＭ３の図示せぬ受信バッファへ保存する。ＣＰＵ２は、フラッシュＲＯＭ４のデータ領域中のＸ番地に格納された１バイトデータとＹ番地に格納された１バイトデータをそれぞれ取得する（ステップＳ２）。
【００５５】
次に、ＣＰＵ２はＸ番地に格納されている１バイトデータが「ＦＦｈ」であるかを判断する（ステップＳ３）。格納されたデータが「ＦＦｈ」であると判断すると、Ｙ番地の１バイトデータが「ＦＦｈ」であるかを判断する（ステップＳ４）。ステップＳ４で格納されたデータが「ＦＦｈ」であると判断すると、ＣＰＵ２はＹ番地に「ＦＦｈ」を書き込み、Ｘ番地に書き込みデータを書き込む（ステップＳ５）。ＣＰＵ２は、全ての受信データの読み込みが終了したと判断すると、ＣＰＵ２は書き込み処理を終了する（ステップＳ６：Ｙｅｓ）。
【００５６】
なお、ステップＳ３で、ＣＰＵ２がＸ番地の１バイトデータが「ＦＦｈ」以外であると判断すると、オーバーライトと判断して以後の処理を中断する（ステップＳ７）。また、ステップＳ４で、ＣＰＵ２がＹ番地の１バイトデータが「ＦＦｈ」以外であると判断すると、ＣＰＵ２は１バイトの書き込みデータに関するパッチ情報を生成し、パッチ領域（セクタ２５）のパッチ情報部２９に書き込む。そして、セクタ２１に対応するパッチ情報を所持していることを示すフラグをフラグ部３０に設定する（ステップＳ８）。
【００５７】
次に、上述した書き込み処理を、図６を用いて具体的なデータを書き込む場合について説明する。図６は、データ書き込み処理におけるデータ領域中の領域ＩＤ「データ１」であるセクタ２１とパッチ領域であるセクタ２５の状態遷移を表した図である。図６（ａ）はプリンタ１の初期状態のセクタ２１及び２５の内部構成を、図６（ｂ）は書き込み処理後のセクタ２１及び２５の内部構成を表した模式図である。
【００５８】
初期状態ではセクタ２１のアドレス「０１００ｈ」にはデータ「００ｈ」が、アドレス「０１０１ｈ」からアドレス「０１０５ｈ」にはデータ「ＦＦｈ」が格納された状態である。また、セクタ２５はパッチ領域であるが本実施形態において初期状態はパッチ情報が格納されていない状態としている。
【００５９】
ここでは、データ領域中のデータ１（セクタ２１）内のアドレス「０１０１ｈ」にデータ「３０ｈ」、アドレス「０１０２ｈ」にデータ「３１ｈ」を書き込む場合について説明する。
【００６０】
ホストコンピュータ１０から書き換えデータが送信され、ＣＰＵ２はＲＡＭ３の受信バッファに一時的に書き換えデータを格納し、最初の書き換えデータ「３０ｈ」から処理を行う。ＣＰＵ２は、アドレス「０１０１ｈ」（Ｘ番地）からデータ「ＦＦｈ」、アドレス「０１０１ｈ」（Ｘ番地）と対となるアドレス「０１００ｈ」（Ｙ番地）からデータ「００ｈ」を取得する。
【００６１】
ＣＰＵ２は、アドレス「０１０１ｈ」のデータが「ＦＦｈ」であると判断し、アドレス「０１００ｈ」のデータが「００ｈ」であると判断すると、領域ＩＤ「データ１」と論理アドレス「０１０１ｈ」の値からパッチ領域における書き込み先アドレスをハッシュアルゴリズムに基づき計算する。ＣＰＵ２は、計算された書き込み先アドレスにパッチ情報を書き込み、フラグ部３０にデータ１（セクタ２５）のパッチ情報が書き込まれていることを示すフラグを立てる。これにより、図６（ｂ）に示すように、領域ＩＤ「データ１」、論理アドレス「０１０１ｈ」、パッチデータ「３０ｈ」がパッチ情報としてパッチ領域２５に書き込まれる。
【００６２】
次に、ＣＰＵ２は書き換えデータ「３１ｈ」についての書き換え処理を行う。ＣＰＵ２は、アドレス「０１０２ｈ」（Ｘ番地）からデータ「ＦＦｈ」、アドレス「０１０３ｈ」（Ｙ番地）からデータ「ＦＦｈ」を取得する。ＣＰＵ２は、アドレス「０１０２ｈ」のデータが「ＦＦｈ」、アドレス「０１０３ｈ」のデータが「ＦＦｈ」であると判断すると、「０１０２ｈ」（Ｘ番地）にデータ「３１ｈ」を、「０１０３ｈ」（Ｙ番地）にデータ「ＦＦｈ」を書き込む。ＣＰＵ２は、全ての受信データの読み込みが終了したと判断すると、ＣＰＵ２は書き込み処理を終了する。
【００６３】
このように、ＣＰＵ２は、書き込み対象アドレスであるＸ番地にデータを書き込めるかどうかをＸ番地のデータ及びＸ番地と対に書き込まれるＹ番地のデータとを確認する。そして、Ｘ番地が「ＦＦｈ」であるが、Ｙ番地が「ＦＦｈ」以外であれば、Ｘ番地に直接書き込みを行うことができないと判断し、Ｘ番地に書き込むことができなかった新データと新データに関する付加情報とをフラッシュＲＯＭ４内のパッチ領域２５に書き込むように構成されている。したがって、２バイト書き込みを行う場合であっても、既にデータが書き込まれているアドレスには新しいデータが書き込まれることがないのでビット０にビット０を上書きすることないため、オーバーライトが発生しない。
【００６４】
また、セクタの消去処理は、パッチ領域に空きが無くなった場合に、ライトバック処理（後述）を行う時点で実行されるだけであり、数バイトのデータを書き込む度に、フラッシュＲＯＭ４の該当セクタを消去する処理を実行しない。したがって、フラッシュＲＯＭの寿命を長くもたせることが可能である。
【００６５】
＜データ参照処理＞
次に、上述した書き込み処理によって新しいデータが書き込まれたフラッシュＲＯＭ４のデータ参照処理（データ読み取り処理）について図７を用いて説明する。図７は、フラッシュＲＯＭ４のデータ参照のフローチャートである。
【００６６】
上述した書き込み処理を実行すると、書き込みデータのうちデータ領域中の正規のアドレスに書き込まれたデータもあれば、２バイトの書き込みの制限により本来のデータ領域にデータを書き込めずパッチ領域に書き込まれたデータも存在する。したがって、パッチ領域に書き込まれたデータに関しては、データ領域中の所定アドレスに未だ旧データが格納されているので旧データを参照せずに、パッチ領域に書き込まれた新しいデータを参照するような処理を行う。
【００６７】
まず、ＣＰＵ２はデータの参照命令を認識すると（ステップＳ１１：Ｙｅｓ）パッチ領域中のフラグ部３０を参照する（ステップＳ１２）。そして、フラグ部３０に参照すべきデータを保存しているセクタのフラグが立っていると判断すると（ステップＳ１３：Ｙｅｓ）、参照先のセクタ内のデータをＲＡＭ３のワーク領域３ａへコピーする（ステップＳ１４）。
【００６８】
そして、ＣＰＵ２は、パッチ領域中のパッチ情報部２９から、参照先のセクタに関するパッチ情報を取得しワーク領域３ａへ反映させる(ステップＳ１５)。そして、反映された状態のデータを参照する（ステップＳ１６）。なお、ステップＳ３で、ＣＰＵ２はフラグ部３０に参照先のフラグが立っていないと判断すると（ステップＳ１３：Ｎｏ）、フラッシュＲＯＭ４の所定のセクタのデータを参照する（ステップＳ１７）。
【００６９】
上述したデータ参照処理を、図８を用いて具体的なデータを参照する場合について説明する。
図８は、データ領域中のデータ１（セクタ２１）を参照する場合のセクタの状態遷移を模式的に表した図である。図８（ａ）は、書き込み処理後のデータ領域であるセクタ２１及びパッチ領域であるセクタ２５の内部構成を表した模式図である。また、図８（ｂ）はセクタ２１のデータをワーク領域３ａにコピーした後の、そして図８（ｃ）はワーク領域３ａにパッチ情報を反映させた後のセクタ２１、セクタ２５及びワーク領域３ａの内部構成を表した模式図である。
【００７０】
ＣＰＵ２は、パッチ領域であるセクタ２５中のフラグ部３０を参照し、データ１のパッチ情報が「あり」になっていることを確認すると、セクタ２１に格納されているデータをワーク領域３ａへコピーする。これにより、図８（ｂ）に示すように、ワーク領域３ａのアドレス「０１００ｈ」に対応するアドレスにデータ「００ｈ」、アドレス「０１０１ｈ」に対応するアドレスにデータ「ＦＦｈ」、アドレス「０１０２ｈ」に対応するアドレスにデータ「３１ｈ」、アドレス「０１０３ｈ」に対応するアドレスにデータ「ＦＦｈ」、アドレス「０１０４ｈ」に対応するアドレスにデータ「ＦＦｈ」、アドレス「０１０５ｈ」に対応するアドレスにデータ「ＦＦｈ」を書き込む。
【００７１】
次に、ＣＰＵ２はパッチ領域中のパッチ情報部２９からセクタ２１に関するパッチ情報（パッチデータ「３０ｈ」＋付加情報「データ１のアドレス０１０１ｈ」）を取得し、ワーク領域３ａへ反映させ、図８（ｃ）に示すように、ワーク領域３ａのアドレス「０１０１ｈ」にデータ「３０ｈ」を書き込む。したがって、ワーク領域３ａのアドレス「０１０１ｈ」のデータは旧データ「ＦＦｈ」→新データ「３０ｈ」へ書き換えられたことになる。言い換えると、ＲＡＭ３中のワーク領域３ａ内に２バイト書き込み制限がなければ実現されているべき情報保持構造が実現される。そして、ＣＰＵ２はこの状態でワーク領域３ａのデータを参照し、必要なデータの読み取りを行う。
【００７２】
このように、ＣＰＵ２は、フラグ部３０を参照することによってデータ領域中のセクタを認識してから参照処理を行うように構成されている。したがって、フラグ部３０を確認すれば、データ領域内のあるセクタに関する新データがパッチ領域２５内に書き込まれているか否かを判断することができるので、パッチ領域２５のパッチ情報部２９全体を逐次検索する必要がなく、参照処理を高速化することが可能である。
【００７３】
＜ライトバック処理＞
データ書き込み処理によって、パッチ領域２５のパッチ情報部２９に空きが無くなった場合にはパッチ情報部２９のデータをクリアして、空き領域を確保する。このため、ＣＰＵ２は、パッチデータをフラッシュＲＯＭ４の本来格納されるべきデータ領域のアドレスに書き戻す処理（以下、この処理をライトバック処理という。）を行う。なお、ライトバック処理においてフラッシュＲＯＭ４の１セクタに書き込みを行う際にはフラッシュＲＯＭの制約上、必ず最小消去単位である１セクタを消去した後、新データを書き込むようにしている。
【００７４】
ライトバック処理について図９〜図１１を用いて説明する。図９は、ライトバックのフローチャートであり、ｎはデータ領域中のデータ番号である。本実施形態においては、１≦ｎ≦３すなわち「データ領域内のセクタ数」＝３として説明する。図１０及び図１１はライトバック処理におけるＲＡＭ３及びフラッシュＲＯＭ４の状態遷移を表した図である。
【００７５】
ＣＰＵ２は、パッチ領域のパッチ情報部２９に空きが無いと判断すると（ステップＳ２１：Ｙｅｓ）、データ領域内のデータｎ＝１のフラグが立っているかを判断する（ステップＳ２２）。データ１のフラグが立っている場合には図１０（ａ）→図１０（ｂ）に示すようにデータ１のデータをＲＡＭ３のワーク領域３ａにコピーする（ステップＳ２３）。一方、ステップＳ２２でデータ１のフラグが立っていないと判断すると（ステップＳ２２：Ｎｏ）、ｎに+１してｎ＝２すなわちデータ２のフラグが立っているかを判断する（ステップＳ２９）。以下、データ３まで同じ処理を繰り返す。
【００７６】
ステップＳ２４では、パッチ領域中からデータ１に関するパッチ情報を取得し、パッチ情報をＲＡＭ３のワーク領域３ａ内に反映させ反映データ１とする（ステップＳ２４）。この反映データ１は、２バイトの書き込み制限がなければ、本来データ１としてセクタ２１に書き込まれているべきデータとなる。
【００７７】
その後、ＣＰＵ２は、図１０（ｂ）→（ｃ）に示すように、ワーク領域３ａの反映データ１をフラッシュＲＯＭ４のバックアップ領域に書き込むとともに、その領域の領域ＩＤを新たに書き込まれたデータに対応する領域ＩＤで書き換える（例：バックアップ→データ１）（ステップＳ２５）。これにより、バックアップ領域が完全な状態のデータ１領域に書き換えられる。
【００７８】
次にＣＰＵ２は、ｎ＝「データ領域内のセクタ総数」の判断を行うが、ここではｎ≠３と判断し（ステップＳ２６：Ｎｏ）、ステップＳ２２へ戻り以下同様に処理を行う。
【００７９】
そして、図１１（ａ）に示すようにデータ３のパッチ情報が反映された反映データ３をフラッシュＲＯＭ４のバックアップ領域に書き込む処理が終了し、ステップＳ２６でＣＰＵ２はｎ＝３であると判断すると（ステップＳ２６：Ｙｅｓ）、パッチ領域の初期化を行う（ステップＳ２７）。図１１（ｂ）→（ｃ）に示すように初期化されたパッチ領域の内容をバックアップ領域に書き込むことによって、バックアップ領域が初期化されたパッチ領域とされ、パッチ領域は新たなバックアップ領域として設定される。これは、各領域の管理部の領域ＩＤを書き換えることにより実行される。
【００８０】
このように、ＣＰＵ２は、パッチ領域２５に空き領域が無くなると、新しいデータが反映された反映データをバックアップ領域（セクタ２４）に書き込むように構成されている。したがって、新データが反映される前のデータ１（セクタ２１）をデータ領域に残したまま、反映データ１をフラッシュＲＯＭ４内の別の領域書き込むので、書き込み途中でプリンタ１の電源がＯＦＦされても、再度新データを反映させることが可能である。
【００８１】
このように、ライトバック処理をおこなうことによってパッチ領域を初期化すると共に、フラッシュＲＯＭ４内のセクタの領域割り当てが変更されることとなる。すなわち、図１０（ａ）のライトバック処理前から図１１（ｃ）のライトバック処理後の間のフラッシュＲＯＭ４の内部構成は以下の表１に示すように変遷している。
【００８２】
【表１】
2007115059.tif 000003
【００８３】
このように、データ領域（セクタ２１〜２３）と、パッチ領域２５と、バックアップ領域２４とは固定されずに交互に入れ替わるように構成されている。このように構成することによって、特定の領域に偏って消去処理が行われることがなく、特定の領域だけが使えなくなってしまうといったことがないので、フラッシュＲＯＭ４全体の領域を平均的に使用することができ、フラッシュＲＯＭの寿命を長く持たせることができる。
【図面の簡単な説明】
【００８４】
【図１】本実施形態のプリンタ１の制御構造を示すブロック図である。
【図２】ＲＡＭ及びフラッシュＲＯＭの内部構成を模式的に示した図である。
【図３】データ領域とパッチ領域の内部構成を示した模式図である
【図４】パッチ情報の詳細を示した模式図である。
【図５】フラッシュＲＯＭの書き込み処理の流れを示したフローチャートである。
【図６】データ書き込み処理におけるデータ領域とパッチ領域の状態遷移を表した図である。
【図７】フラッシュＲＯＭのデータ参照のフローチャートである。
【図８】データ領域を参照する場合のセクタの状態遷移を模式的に表した図である。
【図９】ライトバック処理のフローチャートである。
【図１０】ライトバック処理におけるＲＡＭ及びフラッシュＲＯＭの状態遷移を表した図である。
【図１１】ライトバック処理におけるＲＡＭ及びフラッシュＲＯＭの状態遷移を表した図である。
【図１２】従来のフラッシュＲＯＭの書き換え手順を示した図である。
【符号の説明】
【００８５】
１      プリンタ
２      ＣＰＵ
３      ＲＡＭ
４      フラッシュＲＯＭ
５      通信インタフェース
２０    ホストコンピュータ
２６、２８    管理部
２７    データ部
２９    パッチ情報部
３０    フラグ部
【図１】
2007115059.tif 000004
【図２】
2007115059.tif 000005
【図３】
2007115059.tif 000006
【図４】
2007115059.tif 000007
【図５】
2007115059.tif 000008
【図６】
2007115059.tif 000009
【図７】
2007115059.tif 000010
【図８】
2007115059.tif 000011
【図９】
2007115059.tif 000012
【図１０】
2007115059.tif 000013
【図１１】
2007115059.tif 000014
【図１２】
2007115059.tif 000015