(57)【要約】      （修正有）【課題】フラッシュＲＯＭ上に常に複数のブートセクタを設けることなく、フラッシュＲＯＭ書き換え中における電源ＯＦＦにおいても、次回電源ＯＮ時に正常なブートプログラムで起動できるようにする。【解決手段】フラッシュＲＯＭはメモリ書き換えモードにおいて、ブートセレクタ２０１、メインセクタ２０２及び本ブートセクタ２０３のほか、メインセクタ２０２の一部分に上書きすることによって一時的に仮ブートセクタ２０４を構成するように設定する。【選択図】図８
2007025821.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、ＲＡＭと、書き換え可能なフラッシュＲＯＭと、を備え、ホストコンピュータからのメモリ書き換え指示によって前記フラッシュＲＯＭを書き換える情報処理装置であって、
前記フラッシュＲＯＭは、ブートセレクタデータを格納したブートセレクタと、前記ブートセレクタデータによって起動されるブートデータを格納した第１ブートセクタと、前記ブートデータによって起動されるメインデータを格納したメインセクタと、を有し、
前記ＣＰＵは、前記フラッシュＲＯＭ内に格納されている正常なブートデータを前記ＲＡＭに複製するとともに、
前記ＲＡＭに複製された前記ブートデータを実行することにより、前記フラッシュＲＯＭ内の前記第１ブートセクタとは別の第２ブートセクタに前記ホストコンピュータから受信する新しいブートデータを書き込み、そして前記第２ブートセクタに書き込まれた前記新しいブートデータを前記第１ブートセクタに複製することを特徴とする情報処理装置。
【請求項２】
前記第２ブートセクタは、前記メインセクタ内の所定の領域であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ＣＰＵは、前記第２ブートセクタに書き込まれた前記新しいブートデータを前記第１ブートセクタに複製した後、前記メインセクタに新しいメインデータを書き込むことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記メインセクタ、前記第１ブートセクタ及び前記第２ブートセクタには、前記メインセクタに格納されたメインデータ、前記第１ブートセクタに格納されたブートデータ及び前記第２ブートセクタに格納されたブートデータがそれぞれ正しいか否かを検証するチェックサムが格納され、
前記ＣＰＵが前記ブートセレクタデータを実行して前記第１ブートセクタに格納されたチェックサムが正常であると判断した後に、前記第１ブートセクタに格納されたブートデータを前記ＲＡＭに複製し、
前記ＣＰＵが前記ＲＡＭ内の前記ブートデータを実行して前記メインセクタに格納されたチェックサムが正常であると判断した後に、前記メインセクタに格納されたメインデータを実行することを特徴とする請求項1〜３の何れかに記載の情報処理装置。
【請求項５】
前記ＣＰＵは、前記メインセクタに格納されたチェックサムが異常であると判断した場合、前記フラッシュＲＯＭの書き換え処理を実行することを特徴とする請求項１〜４の何れかに記載の情報処理装置。
【請求項６】
前記ＣＰＵは、前記フラッシュＲＯＭ内の前記ブートセレクタデータを実行することにより、前記第２ブートセクタに格納されたチェックサムが正常であると判断した場合に、前記第２ブートセクタに格納されたブートデータを前記ＲＡＭ内に複製し、前記フラッシュＲＯＭの書き換え処理を実行することを特徴とする請求項１〜５の何れかに記載の情報処理装置。
【請求項７】
前記ＣＰＵは、前記フラッシュＲＯＭ内の前記ブートセレクタデータを実行することにより、前記第１ブートセクタに格納されたチェックサムが異常であると判断し、かつ前記第２ブートセクタに格納されたチェックサムが異常であると判断した場合に、エラー処理を実行することを特徴とする請求項１〜６の何れかに記載の情報処理装置。
【請求項８】
ＣＰＵと、ＲＡＭと、書き換え可能なフラッシュＲＯＭと、を備え、ホストコンピュータからのメモリ書き換え指示によって前記フラッシュＲＯＭを書き換える情報処理装置の制御方法であって、
前記フラッシュＲＯＭは、ブートセレクタデータを格納したブートセレクタと、前記ブートセレクタデータによって起動されるブートデータを格納した第１ブートセクタと、前記ブートデータによって起動されるメインデータを格納したメインセクタと、を有し、
前記フラッシュＲＯＭ内に格納されている正常なブートデータを前記ＲＡＭに複製する第１ステップと、
前記ＲＡＭに複製された前記ブートデータを実行することにより、前記フラッシュＲＯＭ内の前記第１ブートセクタとは別の第２ブートセクタに前記ホストコンピュータから受信する新しいブートデータを書き込む第２ステップと、
前記第２ブートセクタに書き込まれた前記新しいブートデータを前記第１ブートセクタに複製する第３ステップと、を有すことを特徴とする情報処理装置の制御方法。
【請求項９】
前記第２ブートセクタは、前記メインセクタ内の所定の領域であることを特徴とする請求項８に記載の情報処理装置の制御方法。
【請求項１０】
前記第３ステップの後、前記メインセクタに新しいメインデータを書き込む第４ステップを有することを特徴とする請求項８または請求項９に記載の情報処理装置の制御方法。
【請求項１１】
前記メインセクタ、前記第１ブートセクタ及び前記第２ブートセクタには、前記メインセクタに格納されたメインデータ、前記第１ブートセクタに格納されたブートデータ及び前記第２ブートセクタに格納されたブートデータがそれぞれ正しいか否かを検証するチェックサムが格納され、
前記第１ブートセクタに格納されたチェックサムを検証する第５ステップと、
前記第１ブートセクタに格納されたブートデータを前記ＲＡＭに複製する第６ステップと、
前記メインセクタに格納されたチェックサムを検証する第７ステップとを有し、
前記第５ステップにおいて前記第１ブートセクタに格納されたチェックサムが正常であり、かつ第７ステップにおいて前記メインセクタに格納されたチェックサムが正常である場合にメインデータを実行することを特徴とする請求項８〜１０の何れかに記載の情報処理装置の制御方法。
【請求項１２】
前記第７ステップにおいて前記メインセクタに格納されたチェックサムが異常である場合に、前記フラッシュＲＯＭの書き換え処理を実行することを特徴とする請求項１１に記載の情報処理装置の制御方法。
【請求項１３】
前記第２ブートセクタに格納されたチェックサムを検証する第８ステップを有し、前記第８ステップにおいて前記チェックサムが正常である場合に、前記第２ブートセクタに格納されたブートデータを前記ＲＡＭ内に複製し、前記フラッシュＲＯＭの書き換え処理を実行することを特徴とする請求項８〜１２の何れかに記載の情報処理装置の制御方法。
【請求項１４】
前記第５ステップにおいて前記第１ブートセクタに格納されたチェックサムが異常であり、かつ前記第８ステップにおいて前記第２ブートセクタに格納されたチェックサムが異常である場合に、エラー処理を実行することを特徴とする請求項１１〜１３の何れかに記載の情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理装置の制御方法に関し、特に情報処理装置のメモリ書き換え処理に関する。
【背景技術】
【０００２】
近年、プリンタやスキャナ等の情報処理は、パーソナルユースや業務用途等の様々な目的に応じて幅広く利用されている。以下では、情報処理装置として、プリンタを例に挙げて説明する。
【０００３】
プリンタにはファームウェアが組み込まれており、ファームウェアを実行することによりプリンタの制御が行われる。ファームウェアは、大きく分けてハードウェアの初期化等プリンタの起動に必要な一連の起動動作を実行させるブートプログラムと、ブートプログラムによる起動動作後に実行されてホストコンピュータからの指示に応じてプリンタを制御するメインプログラムの２つを備えている。ブートプログラムとメインプログラムは、プリンタ内に設けられたフラッシュＲＯＭ内の異なるセクタに格納されており、フラッシュＲＯＭ書き換えの際にはセクタ毎に、すなわちブートプログラムとメインプログラムをそれぞれ別々に書き換えが可能である。
【０００４】
ところで、ブートプログラムが記憶されているセクタ（以下、ブートセクタ）の書き換えに失敗すると、プリンタはブートプログラムによる起動動作を実行することができず、起動不能状態に陥ることがある。このような状態を回避するため、選択的に読み出される複数のブートセクタを設け、一のブートセクタ内のブートプログラム書き換えに失敗しても、他のブートセクタ内の正常なブートプログラムでプリンタを起動させる、いわゆるＷブート方式が提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００４−９４６２８号公報
【０００５】
このＷブート方式は、常にフラッシュＲＯＭ上にブートセクタを２つ存在させ、少なくともいずれか一方のブートプログラムを動作可能にしておくことでブート書き込み中の電源ＯＦＦに対応させる方式である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、このＷブート方式では常に２つのブートセクタがフラッシュＲＯＭ上の領域を専有しているため、記憶容量の大きなフラッシュＲＯＭを用いる必要がある。このため、フラッシュＲＯＭ領域に限りがある情報処理装置にはＷブート方式が採用できず、フラッシュＲＯＭの記憶領域をより有効に使用する観点から改良の余地が残されている。また、Ｗブート方式では２つのブートセクタのうちどちらのブートセクタが新しいのかを判断するために、ブートセクタの書き換え情報であるバージョンの管理を行う必要があり制御が複雑になっていた。
【０００７】
本発明は、上記問題点に鑑みてなされたものであり、フラッシュＲＯＭ上に常に複数のブートセクタを設けなくとも、一時的に複数のブートセクタを設けることによってフラッシュＲＯＭ書き換え中における電源ＯＦＦにおいても、次回電源ＯＮ時に正常なブートプログラムで起動することができる情報処理装置及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の上記目的は、以下の手段によって達成される。
（１）  ＣＰＵと、ＲＡＭと書き換え可能なフラッシュＲＯＭと、を備え、ホストコンピュータからのメモリ書き換え指示によって前記フラッシュＲＯＭを書き換える情報処理装置であって、
前記フラッシュＲＯＭは、ブートセレクタデータを格納したブートセレクタと、前記ブートセレクタデータによって起動されるブートデータを格納した第１ブートセクタと、前記ブートデータによって起動されるメインデータを格納したメインセクタと、を有し、
前記ＣＰＵは、前記フラッシュＲＯＭ内に格納されている正常なブートデータを前記ＲＡＭに複製するとともに、
前記ＲＡＭに複製された前記ブートデータを実行することにより、前記フラッシュＲＯＭ内の前記第１ブートセクタとは別の第２ブートセクタに前記ホストコンピュータから受信する新しいブートデータを書き込み、そして前記第２ブートセクタに書き込まれた前記新しいブートデータを前記第１ブートセクタに複製することを特徴とする情報処理装置。
（２）  前記第２ブートセクタは、前記メインセクタ内の所定の領域であることを特徴とする請求項１に記載の情報処理装置。
（３）  前記ＣＰＵは、前記第２ブートセクタに書き込まれた前記新しいブートデータを前記第１ブートセクタに複製した後、前記メインセクタに新しいメインデータを書き込むことを特徴とする請求項１または請求項２に記載の情報処理装置。
（４）  前記メインセクタ、前記第１ブートセクタ及び前記第２ブートセクタには、前記メインセクタに格納されたメインデータ、前記第１ブートセクタに格納されたブートデータ及び前記第２ブートセクタに格納されたブートデータがそれぞれ正しいか否かを検証するチェックサムが格納され、
前記ＣＰＵが前記ブートセレクタデータを実行して前記第１ブートセクタに格納されたチェックサムが正常であると判断した後に、前記第１ブートセクタに格納されたブートデータを前記ＲＡＭに複製し、
前記ＣＰＵが前記ＲＡＭ内の前記ブートデータを実行して前記メインセクタに格納されたチェックサムが正常であると判断した後に、前記メインセクタに格納されたメインデータを実行することを特徴とする請求項1〜３の何れかに記載の情報処理装置。
（５）  前記ＣＰＵは、前記メインセクタに格納されたチェックサムが異常であると判断した場合、前記フラッシュＲＯＭの書き換え処理を実行することを特徴とする請求項１〜４の何れかに記載の情報処理装置。
（６）  前記ＣＰＵは、前記フラッシュＲＯＭ内の前記ブートセレクタデータを実行することにより、前記第２ブートセクタに格納されたチェックサムが正常であると判断した場合に、前記第２ブートセクタに格納されたブートデータを前記ＲＡＭ内に複製し、前記フラッシュＲＯＭの書き換え処理を実行することを特徴とする請求項１〜５の何れかに記載の情報処理装置。
（７）  前記ＣＰＵは、前記フラッシュＲＯＭ内の前記ブートセレクタデータを実行することにより、前記第１ブートセクタに格納されたチェックサムが異常であると判断し、かつ前記第２ブートセクタに格納されたチェックサムが異常であると判断した場合に、エラー処理を実行することを特徴とする請求項１〜６の何れかに記載の情報処理装置。
（８）  ＣＰＵと、ＲＡＭと書き換え可能なフラッシュＲＯＭと、を備え、ホストコンピュータからのメモリ書き換え指示によって前記フラッシュＲＯＭを書き換える情報処理装置の制御方法であって、
前記フラッシュＲＯＭは、ブートセレクタデータを格納したブートセレクタと、前記ブートセレクタデータによって起動されるブートデータを格納した第１ブートセクタと、前記ブートデータによって起動されるメインデータを格納したメインセクタと、を有し、
前記フラッシュＲＯＭ内に格納されている正常なブートデータを前記ＲＡＭに複製する第１ステップと、
前記ＲＡＭに複製された前記ブートデータを実行することにより、前記フラッシュＲＯＭ内の前記第１ブートセクタとは別の第２ブートセクタに前記ホストコンピュータから受信する新しいブートデータを書き込む第２ステップと、
前記第２ブートセクタに書き込まれた前記新しいブートデータを前記第１ブートセクタに複製する第３ステップと、を有すことを特徴とする情報処理装置の制御方法。
（９）  前記第２ブートセクタは、前記メインセクタ内の所定の領域であることを特徴とする請求項８に記載の情報処理装置の制御方法。
（１０）  前記第３ステップの後、前記メインセクタに新しいメインデータを書き込む第４ステップを有することを特徴とする請求項８または請求項９に記載の情報処理装置の制御方法。
（１１）  前記メインセクタ、前記第１ブートセクタ及び前記第２ブートセクタには、前記メインセクタに格納されたメインデータ、前記第１ブートセクタに格納されたブートデータ及び前記第２ブートセクタに格納されたブートデータがそれぞれ正しいか否かを検証するチェックサムが格納され、
前記第１ブートセクタに格納されたチェックサムを検証する第５ステップと、
前記第１ブートセクタに格納されたブートデータを前記ＲＡＭに複製する第６ステップと、
前記メインセクタに格納されたチェックサムを検証する第７ステップとを有し、
前記第５ステップにおいて前記第１ブートセクタに格納されたチェックサムが正常であり、かつ第７ステップにおいて前記メインセクタに格納されたチェックサムが正常である場合にメインデータを実行することを特徴とする請求項８〜１０の何れかに記載の情報処理装置の制御方法。
（１２）  前記第７ステップにおいて前記メインセクタに格納されたチェックサムが異常である場合に、前記フラッシュＲＯＭの書き換え処理を実行することを特徴とする請求項１１に記載の情報処理装置の制御方法。
（１３）  前記第２ブートセクタに格納されたチェックサムを検証する第８ステップを有し、前記第８ステップにおいて前記チェックサムが正常である場合に、前記第２ブートセクタに格納されたブートデータを前記ＲＡＭ内に複製し、前記フラッシュＲＯＭの書き換え処理を実行することを特徴とする請求項８〜１２の何れかに記載の情報処理装置の制御方法。
（１４）  前記第５ステップにおいて前記第１ブートセクタに格納されたチェックサムが異常であり、かつ前記第８ステップにおいて前記第２ブートセクタに格納されたチェックサムが異常である場合に、エラー処理を実行することを特徴とする請求項１１〜１３の何れかに記載の情報処理装置の制御方法。
【発明の効果】
【０００９】
本発明によれば、フラッシュＲＯＭの書き換え処理時のみ、第２ブートセクタをメインセクタ内の所定の領域に設けるよう設定している。すなわち、フラッシュＲＯＭの書き換え処理時において第２ブートセクタとメインセクタは共有されるように設定されている。従って、メインセクタを新しいメインデータに書き換えることによって第２ブートセクタは上書きされて無くなるのでフラッシュＲＯＭ内に複数のブートセクタを常設する必要がなく、フラッシュＲＯＭのメモリ領域をより有効に使用することが可能である。
【００１０】
また、本発明によれば、ＣＰＵは、フラッシュＲＯＭ内に格納されている正常なブートデータをＲＡＭに複製した後、ＲＡＭに複製されたブートデータを実行することによってフラッシュＲＯＭの書き換えを行う。すなわち、起動中のブートデータはフラッシュＲＯＭ上に存在しないので、起動中のブートデータによって起動セクタ自体を書き換えるといった誤った動作を生じる虞が無い。
【００１１】
また、本発明によれば、フラッシュＲＯＭ内の第１ブートセクタとは別の第２ブートセクタにホストコンピュータから受信する新しいブートデータを書き込み、そして第２ブートセクタに書き込まれた新しいブートデータを第１ブートセクタに複製するように設定されている。従って、ブートデータ書き込み中の電源ＯＦＦによる書き換えエラーによって第２ブートセクタの書き換えあるいは第１ブートセクタへの複製に失敗した場合でも、常に何れかのブートセクタに実行可能なブートデータが存在しているので次回電源ＯＮの際においても、ブートデータを実行させることが可能である。
【００１２】
また、本発明によれば、ＣＰＵは、第２ブートセクタに書き込まれた新しいブートデータを第１ブートセクタに複製した後、メインセクタに新しいメインデータを書き込むように設定されている。従って、必ず第１ブートセクタ及び第２ブートセクタがともに新しいブートデータに書き換えられた後にメインセクタを新しいメインデータに書き換えるので、書き換え対象セクタのバージョンとメインセクタのバージョンとを常にそろえることができデータセクタごとのバージョン管理を行う必要がなくなる。
【００１３】
また、本発明によれば、ＣＰＵがブートセレクタデータを実行して第１ブートセクタに格納されたチェックサムが正常であると判断した後に、第１ブートセクタに格納されたブートデータをＲＡＭに複製し、ＣＰＵがＲＡＭ内のブートデータを実行してメインセクタに格納されたチェックサムが正常であると判断した後に、メインセクタに格納されたメインデータを実行するように設定されている。従って、第２ブートセクタのチェックサムを検証することなくメインデータを実行することができるのでメインデータ処理への移行をスピーディに行うことが可能である。
【００１４】
また、本発明によれば、ＣＰＵは、メインセクタに格納されたチェックサムが異常であると判断した場合、フラッシュＲＯＭの書き換え処理を実行するよう設定されている。従って、メインセクタのメインデータ書き換え中に電源ＯＦＦされても、次回電源ＯＮの際に書き換え処理を実行しメインデータを書き換えるので常に新しいバージョンでかつ正常なメインデータを実行することができる。
【００１５】
また、本発明によれば、ＣＰＵは、フラッシュＲＯＭ内のブートセレクタデータを実行することにより、第２ブートセクタに格納されたチェックサムが正常であると判断した場合に、第２ブートセクタに格納されたブートデータをＲＡＭ内に複製し、フラッシュＲＯＭの書き換え処理を実行するよう設定されている。従って、第２ブートセクタのブートデータを第１ブートセクタへ複製中に電源ＯＦＦされても、次回電源ＯＮの際に書き換え処理を実行し再度第２ブートセクタのブートデータを第１ブートセクタへ複製するので、常に第１ブートセクタに正常なブートデータを保持することが可能である。
【００１６】
また、本発明によれば、ＣＰＵは、フラッシュＲＯＭ内のブートセレクタデータを実行することにより、第１ブートセクタに格納されたチェックサムが異常であると判断し、かつ第２ブートセクタに格納されたチェックサムが異常であると判断した場合に、エラー処理を実行するよう設定されている。従って、正常に動作するブートデータが存在しない場合にはメインデータを実行させることがないので、情報処理装置が間違った動作をすることがない。
【発明を実施するための最良の形態】
【００１７】
次に、図面を参照しながら、本発明に係る情報処理装置及び情報処理装置の制御方法の実施形態について説明する。
図１は、本実施形態のプリンタ１を示す斜視図である。
図１に示すように、プリンタ１では、例えば、小切手等のスリップ紙Ｓに印字を行うスリップ紙印字部と、レシート発行用のロール紙Ｐに印字可能なロール紙印字部とを有する複合型のプリンタである。
プリンタ１は、図１に示すように、本体部２の上面に正面側カバー３と背面側カバー４とが開閉可能に取り付けられており、また背面側カバー４には、背面側カバー４に回動可能に取り付けられた上部カバー５が取り付けられている。
【００１８】
プリンタ１の正面側には、スリップ紙Ｓを挿入可能なスリップ紙挿入口６が設けられている。スリップ紙挿入口６から挿入されたスリップ紙Ｓは、本体部２内部に設けられたスリップ紙搬送路（不図示）を搬送されながら、同じく本体部２内部に設けられたスリップ紙印字部によって印字される。そして、スリップ紙Ｓは、印字終了後、正面側カバー３と背面側カバー４との間に設けられたスリップ紙排出口７より排出される。
【００１９】
また、プリンタ１の本体部２内部には、ロール紙Ｐが装填されている。ロール紙Ｐは、本体部２内部に設けられたロール紙搬送路（不図示）を搬送されながら本体部２内部に設けられたロール紙印字部によって印字される。そして、ロール紙Ｐは、印字終了後、背面側カバー４と上部カバー５との間に設けられたロール紙排出口８より排出される。また、本体部２内部には、ロール紙Pやスリップ紙Sを搬送経路に沿って搬送する搬送機構や、搬送経路の途中に装備されて搬送されてくる記録紙に文字や図形等の画像を記録する記録部や各種の動作装置が組み込まれており、これらの動作により印刷が行われる。
【００２０】
次に、本実施形態のプリンタ１に設けられた制御部１０４の構成を説明する。
図２は、本実施形態のプリンタ１の制御部１０４の一構成を示す図である。
本実施形態のプリンタ１は、不揮発性メモリであるフラッシュＲＯＭ１０１と、揮発性メモリであるＲＡＭ１０２と、演算素子としてのＣＰＵ１０３とを有している。
【００２１】
フラッシュＲＯＭ１０１は、電気的に書き換え可能な不揮発性の記憶媒体である。フラッシュＲＯＭ１０１は、一括して消去可能な最小単位の記憶領域である複数のセクタに分割されており、各セクタ毎にデータの書き換えを行うことが可能である。このフラッシュＲＯＭ１０１には、起動処理の初期段階の処理を実行するブートセレクタデータと、ブートセレクタデータの実行後に起動され引き続き起動処理を実行するブートデータと、プリンタ１の印刷処理等（以下、通常モードという）を制御するメインデータが記憶されている。
【００２２】
以下、本実施形態では、フラッシュＲＯＭ１０１内において、ブートセレクタデータが格納されている領域を「ブートセレクタ」、ブートデータが格納されている領域を「ブートセクタ」、メインデータが格納される領域を「メインセクタ」と呼ぶこととする。ここでは、ブートデータまたはメインデータが複数のセクタに跨って保存されている場合も含めて、ブートデータが保存されているセクタ（複数の場合有り）を「ブートセクタ」と呼び、そしてメインデータが保存されているセクタ（複数の場合有り）を「メインセクタ」と呼称することとする。
【００２３】
ＲＡＭ１０２は、各種データが一時的に保持される書き換え可能な揮発性の記憶媒体である。フラッシュＲＯＭ１０１に記憶された各種データの実行に当たっては、ＲＡＭ１０２に各種データが読み出され、ＣＰＵ１０３によりプログラム等の各種データが実行されることによって制御部１０４が構成され、プリンタ１の制御が行われる。
【００２４】
図３は、フラッシュＲＯＭ１０１における各種データの記憶状態を示す図である。（ａ）はプリンタ１の通常モードにおけるフラッシュＲＯＭ１０１の構成例を示し、（ｂ）はプリンタ１のフラッシュＲＯＭ１０１の書き換え処理（以下、メモリ書き換えモードという。）におけるフラッシュＲＯＭ１０１の構成例を示した図である。
【００２５】
図３（ａ）に示すようにフラッシュＲＯＭ１０１は、通常モードにおいてはブートセレクタ２０１、メインセクタ２０２及び本ブートセクタ（第1ブートセクタ）２０３から構成されている。また、（ｂ）図に示すようにメモリ書き換えモードにおいては、ブートセレクタ２０１、メインセクタ２０２及び本ブートセクタ２０３のほか、メインセクタ２０２の一部分に上書きすることによって一時的に仮ブートセクタ（第２ブートセクタ）２０４が構成されるように設定されている。
【００２６】
まず、ブートセレクタ２０１について説明する。
ブートセレクタ２０１には、プリンタ１の初期起動時にまず読み出されて実行されるブートセレクタデータが記憶されている。ブートセレクタデータは、プリンタ１の電源投入直後に初期の起動処理を実行する初期ブートプログラムと、初期ブートプログラムの実行後に、後述する本ブートセクタ２０３と仮ブートセクタ２０４のいずれかのブートデータをＲＡＭ１０２にコピーするかを選択するブートセレクタプログラムから構成されている。ブートセレクタデータは、基本的に書き換えが行われないように構成されたデータであり、プリンタ１の起動処理に最低限必要な機能のみを実行し、本ブートセクタ２０３と仮ブートセクタ２０４のいずれかのブートデータを選択しＲＡＭ１０２へ選択されたブートセクタ中のデータをコピーするように構成されている。
【００２７】
ここで、プリンタ１の起動処理に最低限必要な機能とは、例えば、最低限のハードウェアチェックおよび初期化等が挙げられる。この最低限のハードウェアチェックおよび初期化とは、ブートデータが実行されるまでの間、自身のプログラムを実行するために必要なデバイスのみを対象としたチェックおよび初期化が挙げられ、たとえばＣＰＵ１０３のチェックおよび初期化、およびブートセレクタプログラムを実行するために必要なＲＡＭ１０２中の所定領域のみのチェックおよび初期化等が挙げられる。
【００２８】
なお、ブートセレクタデータはバグ修正のためのブートセレクタ２０１の書き換え処理を限りなく減らすため、なるべくシンプルなコードで記載されている。
【００２９】
次に、本ブートセクタ２０３及び仮ブートセクタ２０４について説明する。
本ブートセクタ２０３及び仮ブートセクタ２０４は、起動時における各種起動処理の実行、及びフラッシュＲＯＭ１０１に格納されたデータを書き換えるための機能を実行させるブートデータが格納されている。具体的に、ブートデータは、プリンタ１を完全に起動させるために必要な各種起動処理を行うブートプログラムと、ブートプログラムの実行後に実行され後述するメインセクタ２０２のメインデータによる処理への移行を行うメイン移行プログラムと、フラッシュＲＯＭ１０１内のデータの書き換え処理を実行する書き換えプログラムとを備えている。
【００３０】
本ブートセクタ２０３及び仮ブートセクタ２０４に記憶されるブートプログラムは、ブートセレクタ２０１に記憶された初期ブートプログラムにおける初期化及びチェックを含むプリンタ１を起動するために必要なデバイスの初期化及びチェックを一から独立して実行する。具体的には、ＣＰＵ１０３やＲＡＭ１０２のチェックに加えて、通信インタフェースの種別判定、各通信インタフェースに対応した処理、各種ステータスコマンドに対応した処理等が実行される。
【００３１】
なお、本ブートセクタ２０３は、プリンタ１が通常モードであるかメモリ書き換えモードであるかに関わらずフラッシュＲＯＭ１０１内に常設されるセクタであるが、仮ブートセクタ２０４は、プリンタ１のメモリ書き換えモードにおいてのみ一時的にフラッシュＲＯＭ１０１内に設けられるセクタである。すなわち、仮ブートセクタ２０４はメモリ書き換えモードにおいて、プリンタ１と通信可能に接続された図示せぬホストコンピュータから受信した新しい書き換えブートデータを、メインセクタ２０２の一部分に上書きすることで一時的に設定されるセクタである。メモリ書き換えの詳細については後述する。このように、本実施形態のプリンタ１は複数のブートセクタをフラッシュＲＯＭ１０１内に常設することがないので、通常モードにおいてフラッシュＲＯＭ領域を有効に使用することができる。
【００３２】
また、本ブートセクタ２０３及び仮ブートセクタ２０４にはブートデータの正当性を確認するチェックサムがそれぞれブートセクタの最後に格納されている。制御部１０４がチェックサムの正当性を判断し、ブートセレクタ２０１のブートセレクタプログラムによって、本ブートセクタ２０３と仮ブートセクタ２０４のいずれか正常なブートデータが選択され、正常なブートデータがＲＡＭ１０２へコピーされる。正常なブートデータがＲＡＭ１０２へコピーされると、以後の書き換え処理はＲＡＭ１０２へコピーされた正常なブートデータが備えた書き換えプログラムを実行することによって行われる。すなわち、実行プログラムがブートセレクタプログラムからブートデータが備えた書き換えプログラムへ移行する。これについては後ほど説明する。以下、ＲＡＭ１０２内の正常なブートデータがコピーされた領域を「ブートデータ起動領域」という。このブートデータ起動領域は、ブートデータ以外のデータが上書きされない専用の領域であってもよいし、画像データや印刷データが上書きされる汎用の領域であってもよい。また、汎用の領域であっても、メモリ書き換えモードに移行するためのプログラムだけは、所定の上書きされない領域に書き込まれるように構成されていてもよい。
【００３３】
次に、メインセクタ２０２について説明する。
メインセクタ２０２には、プリンタ１の通常モードの制御を実行するメインプログラム、ホストコンピュータからの書き換え指示に応じてブートデータ起動領域の書き換えプログラムを呼び出す呼び出しプログラム、フォントデータ、諸設定データ等のメインデータが格納されている。メインセクタ２０２内のメインデータは、ブートデータ起動領域に記憶されたブートプログラムが実行された後に、読み出されて実行され、プリンタ１の通常モードにおける各種制御を実行する。
【００３４】
このメインセクタ２０２は、ブートデータ起動領域の書き換えプログラムによって書き換えが行われる。また、メインセクタ２０２は、本ブートセクタ及び仮ブートセクタと同様にメインデータの正当性を確認するチェックサムを有している。なお、ブートセクタ及びメインセクタのチェックサムは夫々のセクタの最後に１６ビットのＷＯＲＤサイズを基本として書き込み、構成ビットが少ないことによる正常性チェックの信頼度を下げないようにしている。
【００３５】
次に、フラッシュＲＯＭ１０１内の各種データが実行されることによりＣＰＵ１０３により構成される各種機能部について説明する。
図４は、本実施形態のプリンタ１におけるＣＰＵ１０３内の処理を模式的に示すブロック図である。
ＣＰＵ１０３には、ＣＰＵ１０３がフラッシュＲＯＭ内の各種データを読み出して実行することにより、初期ブート部４１０、メインブート部４２０及びメイン部４３０が構成される。
【００３６】
初期ブート部４１０は、ブートセレクタ２０１のブートセレクタデータが読み出されて実行されることにより構成される機能部である。初期ブート部４１０では、初期ブートプログラムを実行することにより、プリンタ１の電源投入直後に初期の起動処理を実行する初期ブート処理部４１１と、ブートセレクタプログラムを実行することにより、初期ブートプログラムの実行後に本ブートセクタ２０３と仮ブートセクタ２０４のいずれのブートデータをＲＡＭ１０２のブートデータ起動領域へコピーするか選択するブートセクタ選択部４１２が構成される。このブートセクタ選択部４１２は、本ブートセクタ及び仮ブートセクタのチェックサムが共に異常であると判断するとプリンタ１をエラー処理させる。
【００３７】
メインブート部４２０は、ＲＡＭ１０２のブートデータ起動領域へコピーされたブートデータが読み出されて実行されることにより構成される機能部である。メインブート部４２０では、ブートプログラムを実行することによりプリンタ１を完全に起動させるために必要な各種起動処理を行うブート処理部４２１と、メイン移行プログラムを実行することによりブートプログラムの実行後に実行され後述するメインセクタ２０２のメインデータによる処理への移行を行うメイン移行処理部４２２と、書き換えプログラムを実行することによりフラッシュＲＯＭ１０１内のデータの書き換え処理を実行する書き換え処理部４２３が構成される。
【００３８】
メイン移行処理部４２２は、ブート処理部４２１によるブート動作が終わった後、メインセクタ２０２内のメインデータを読み出してメイン処理を行わせるかどうかの判定を行う。具体的には、メインセクタ２０２のチェックサムが正常であれば、メインセクタ２０２に書き込まれたメインデータが読み出されて、プリント処理等が実行される。ここで、チェックサムが異常であれば、メイン移行処理部４２２は、書き換え処理部４２３による処理へ移行する。
【００３９】
書き換え処理部４２３は、本ブートセクタ２０３内のブートデータあるいはメインセクタ２０２内のメインデータの書き換えを行う。また、書き換え処理部４２３は、書き換え時に、書き換え後のブートデータおよび書き換え後のメインデータからそれぞれ算出したチェックサムの値をそれぞれ更新する。
【００４０】
メイン部４３０は、フォントデータ、諸設定データ等を参照しながらメインプログラムを実行することにより、プリンタ１の通常モードにおける各種制御を実行するメイン処理部４３１と、ホストコンピュータから送信される書き換え指示に応じて起動される書き換え処理移行部４３２とが構成される。
【００４１】
メイン処理部４３１は、ホストコンピュータとの通信を行いつつ、プリンタ１の各駆動部を制御し、印刷を実行させる通常モードを制御する機能部である。プリンタ１が書き換えを行わない場合には、常に最終的にはこのメイン処理部４３１に移行し、プリンタ１が駆動制御される。
【００４２】
書き換え処理移行部４３２は、メイン処理部４３１の処理中にホストコンピュータからメモリ書き換え指示を受信すると、書き換え処理部４２３の処理へ移行させる。すなわち、本実施形態では、メイン処理部４３１の処理実行中にメモリ書き換え指示を受信すると、再起動等を行わず強制的に書き換えモードに移行するように構成されている。
【００４３】
次に、本実施形態のプリンタ１における起動処理の流れを説明する。
図５は本実施形態のプリンタ１の起動処理の流れを示すフローチャートである。
【００４４】
（電源ＯＮから通常モードへ移行するまでの処理）
まず、プリンタ１を電源ＯＮにすると、初期ブート処理部４１１がブートセレクタ２０１に格納されたブートセレクタデータを起動させ（ステップＳ１）、ブートセレクタデータのうちの初期ブートプログラムによってプリンタ１の初期起動処理を実行する。初期ブートプログラムの実行後、ブートセクタ選択部４１２が本ブートセクタ２０３と仮ブートセクタ２０４のいずれかのブートデータをＲＡＭ１０２にコピーするかを選択するブートセレクタプログラムを起動させる。
【００４５】
ブートセクタプログラムが起動されると、ブートセクタ選択部４１２は本ブートセクタ２０３に格納されたチェックサムを検証する（ステップＳ２）。本ブートセクタ２０３のチェックサムが正常であると判断されるとブートセクタ選択部４１２は正常な本ブートセクタのブートデータをＲＡＭ１０２の所定の領域（ブートデータ起動領域）へコピーする（ステップＳ３）。
【００４６】
ＲＡＭ１０２のブートデータ起動領域へブートデータがコピーされると、実行プログラムはブートセレクタ２０１に格納されたブートセレクタプログラムから、ブートデータ起動領域へコピーされた本ブートセクタ２０３のブートデータが備えたブートプログラムへ移行する。そして、ブート処理部４２１がブートプログラムを起動させ、プリンタ１を完全に起動させるために必要な各種起動処理が行われる。
【００４７】
次に、メイン移行処理部４２２がメインセクタ２０２に格納されたチェックサムを検証する（ステップＳ４）。メインセクタ２０２のチェックサムが正常であると判断されるとメイン移行処理部４２２はブートデータが備えたメイン移行プログラムを起動させメインデータによる処理へ移行する。メイン処理部４３１によってメインセクタに格納されたメインデータを実行し（ステップＳ５）、プリンタ１のプリント処理等を実行させる通常モードへ移行し、メインデータ実行中にホストコンピュータからメモリ書き換え指示を受信することがなければ（ステップＳ６）、通常処理のまま待機する。
【００４８】
（メインデータ実行中にメモリ書き換えモードへ移行する処理）
一方、メイン処理部４３１は、メインデータ実行中にホストコンピュータからメモリ書き換え指示を受信するとメモリ書き換えモードへ移行する（ステップＳ６）。書き換え処理移行部４３２は、メイン処理部４３１の処理中にホストコンピュータからメモリ書き換え指示を受信すると、書き換え処理部４２３の処理へ移行させる。すなわち、本実施形態では、メインデータ実行中に書き換え指示を受信すると、再起動等を行わず直接本ブートセクタのブートデータが読み出され、メモリ書き換えモードＡに移行するように構成されている。
【００４９】
（電源ＯＮからメモリ書き換えモードへ移行する処理Ｉ）
ステップＳ４でメインセクタ２０２のチェックサムが異常であると判断されると、メインセクタ２０２のメインデータを書き換えるためにメモリ書き換えモードへ移行する（ステップＳ７）。すなわち、プリンタ１がメインセクタ２０２の書き換え中に電源ＯＦＦされた状態、あるいは仮ブートセクタ２０４の書き換え中に電源ＯＦＦされた状態であり、メインセクタ２０２、あるいは仮ブートセクタ２０４及びメインセクタ２０２の書き換え処理を終了していないので再度メモリ書き換えモードＡへ移行する必要がある。
（電源ＯＮからメモリ書き換えモードへ移行する処理ＩＩ）
まず、プリンタ１を電源ＯＮにすると、初期ブート処理部４１１がブートセレクタ２０１に格納されたブートセレクタデータを起動させ（ステップＳ１）、ブートセレクタデータのうちの初期ブートプログラムによってプリンタ１の初期起動処理を実行する。初期ブートプログラムの実行後、ブートセクタ選択部４１２が本ブートセクタ２０３と仮ブートセクタ２０４のいずれかのブートデータをＲＡＭ１０２にコピーするかを選択するブートセレクタプログラムを起動させる。
【００５０】
ブートセクタプログラムが起動されると、ブートセクタ選択部４１２は本ブートセクタ２０３に格納されたチェックサムを検証する（ステップＳ２）。本ブートセクタ２０３のチェックサムが異常であると判断されると、さらにブートセクタ選択部４１２は仮ブートセクタ２０４に格納されたチェックサムを検証する（ステップＳ８）。仮ブートセクタ２０４に格納されたチェックサムが正常であると判断されると、ブートセクタ選択部４１２は正常な仮ブートセクタのブートデータをＲＡＭ１０２の所定の領域（ブートデータ起動領域）へコピーした後（ステップＳ９）、仮ブートセクタ２０４のブートデータを本ブートセクタ２０３へコピーする（ステップＳ１０）。
【００５１】
ＲＡＭ１０２のブートデータ起動領域へブートデータがコピーされると、実行プログラムはブートセレクタ２０１に格納されたブートセレクタプログラムから、ブート起動領域へコピーされた仮ブートセクタ２０４のブートデータが備えたブートプログラムへ移行する。そして、ブート処理部４２１がブートプログラムを起動させ、プリンタ１を完全に起動させるために必要な各種起動処理が行われる。
【００５２】
正常な仮ブートセクタのブートデータをＲＡＭ１０２の所定の領域（ブートデータ起動領域）へコピーした後、書き換え処理部４２３は、本ブートセクタのブートデータ及びメインセクタ２０２内のメインデータの書き換えを行う（ステップＳ１１）。すなわち、プリンタ１が仮ブートセクタ２０４のブートデータを本ブートセクタ２０３へコピー中に電源ＯＦＦされた状態であり、フラッシュＲＯＭ１０１の本ブートセクタ及びメインセクタ２０２は書き換え処理を終了していないので再度メモリ書き換えモードＡへ移行する必要がある。
【００５３】
このように、本実施形態においてプリンタ１は、メモリ書き換え中に電源ＯＦＦされ、メモリ書き換え処理を中断されてしまった場合でも、次回電源ＯＮ時に、必ずメモリ書き換えモードへ移行するよう設定されている。従って、フラッシュＲＯＭ１０１は常に正常に書き換えが行われたデータを保持し実行するのでプリンタ１の誤動作による不具合を生ずることがなくなる。
【００５４】
（電源ＯＮからエラー終了する処理）
ステップＳ８で仮ブートセクタ２０４に格納されたチェックサムが異常であると判断されると、プリンタ１はエラー終了する。すなわち、本ブートセクタ２０３及び仮ブートセクタ２０４の何れのチェックサムも異常である場合には、正常な起動処理を行うブートデータがフラッシュＲＯＭ１０１内に記憶されていない状態である。このように本実施形態においてプリンタ１は、正常な起動処理を行うブートデータがフラッシュＲＯＭ１０１内に記憶されていない場合にはエラー終了するように設定されているのでメインデータを実行させることがなく、プリンタ１が間違った動作をすることがない。
【００５５】
なお、本実施形態においてブートセクタ選択部４１２は初めに本ブートセクタのチェックサムから検証し、チェックサムが正しければ仮ブートセクタのチェックサムを検証することなくメインセクタの処理を実行するよう設定されているが、図６のフローチャートに示すように、初めに仮ブートセクタのチェックサムから検証（ステップＳ１４）し、チェックサムが正しければ本ブートセクタのチェックサムを検証することなく書き換え処理を実行するよう設定することも可能である。
【００５６】
すなわち、メインセクタ２０２の一部分に上書きすることによって一時的に構成される仮ブートセクタ２０４のチェックサムが正常である場合には、必ずメインセクタ２０２のメインデータ（ＯＬＤ）は書き換えが行われていないので必ずメモリ書き換えモードへ移行しなければならない。従って、図６に示すようにステップＳ１３〜ステップＳ１７の５つのスッテプを経るだけでメモリ書き換えモードＡへ移行するのでメモリ書き換えモードへの移行をスピーディに行うことが可能である。
【００５７】
なお、図５に示したように初めに本ブートセクタのチェックサムから検証するフローにおいてはステップＳ１〜ステップＳ５の５つのステップを経るだけでメインデータを実行するので通常モードへの移行をスピーディに行うことが可能である。
【００５８】
次に、図７〜図１０を用いて本実施形態のプリンタ１における電源ＯＮからメモリ書き換えをモードＡを終了するまでの流れを説明する。
図７は本実施形態のプリンタ１のメモリ書き換えモードＡの流れを示すフローチャートである。
【００５９】
（仮ブートセクタ２０４の書き換え中に電源ＯＦＦされた場合のメモリ書き換えモードＡ）
プリンタ１の電源ＯＮ時にはフラッシュＲＯＭ１０１は図８（ａ）のような構成を有している。すなわち、仮ブートセクタ２０４の書き換えに失敗し、仮ブートセクタ２０４が異常状態すなわちメインセクタ２０２も異常状態であり、本ブートセクタのブートデータは（ＯＬＤ）の状態である。この状態において、プリンタ１は正常な本ブートセクタ２０３のブートデータをＲＡＭ１０２のブートデータ起動領域へコピーする（図８（ｂ）図参照）。
【００６０】
ホストコンピュータからメモリ書き換え指示を受信（ブートデータあるいはメインデータ受信）する（ステップＳ２５）。ブートデータ起動領域のブートデータ（ＯＬＤ）が起動し、プリンタ１はブートデータを受信したと判断すると（ステップＳ２６のＹｅｓ）、仮ブートセクタ２０４をホストコンピュータから受信したブートデータ（ＮＥＷ）に書き換える（ステップＳ２７、（ｃ）図参照）。
【００６１】
次に、プリンタ１はホストコンピュータからメインデータを受信したと判断すると（ステップＳ２６のＮｏ）。ステップＳ２８で、今回のメインデータの受信が初めてか否かを判断する（ステップＳ２８）。前回のメモリ書き換え時にメインデータを受信する前に電源ＯＦＦされているので、本ケースにおいては初めてメインデータを受信する場合に該当する（ステップＳ２８のＹｅｓ）。次に、書き換えられた仮ブートセクタ２０４のブートデータ（ＮＥＷ）を本ブートセクタ２０３へコピーする（ステップＳ２９、（ｄ）図参照）。ステップＳ３０で、メインセクタ２０２をホストコンピュータから受信したメインデータ（ＮＥＷ）に書き換える（ステップＳ３０、（ｅ）図参照））。
【００６２】
（仮ブートセクタ２０４のブートデータを本ブートセクタ２０３へコピー中に電源ＯＦＦされた場合のメモリ書き換えモードＡ）
プリンタ１の電源ＯＮ時にはフラッシュＲＯＭ１０１は図９（ｆ）のような構成を有している。すなわち、仮ブートセクタ２０４のブートデータを本ブートセクタ２０３へコピーするのに失敗し、本ブートセクタ２０３は異常状態である。この状態において、プリンタ１は正常な仮ブートセクタ２０４のブートデータ（ＮＥＷ）をＲＡＭ１０２のブートデータ起動領域へコピーする（（ｇ）図参照）。
【００６３】
ホストコンピュータからメモリ書き換え指示を受信（ブートデータあるいはメインデータ送信）する（ステップＳ２５）。ブートデータ起動領域のブートデータ（ＮＥＷ）が起動し、プリンタ１はメインデータを受信したと判断すると（ステップＳ２６のＮｏ）、ステップＳ２８で、今回のメインデータの受信が初めてか否かを判断する（ステップＳ２８）。前回のメモリ書き換え時にメインデータを受信する前に電源ＯＦＦされているので、本ケースにおいても初めてメインデータを受信する場合に該当する（ステップＳ２８のＹｅｓ）。次に、書き換えられた仮ブートセクタ２０４のブートデータ（ＮＥＷ）を本ブートセクタ２０３へコピーする（ステップＳ２９、（ｈ）図参照）。ステップＳ３０で、メインセクタ２０２をホストコンピュータから受信したメインデータ（ＮＥＷ）に書き換える（ステップＳ３０、（ｉ）図参照））。
【００６４】
（メインセクタ２０２の書き換え中に電源ＯＦＦされた場合のメモリ書き換えモードＡ）
プリンタ１の電源ＯＮ時にはフラッシュＲＯＭ１０１は図１０（ｊ）のような構成を有している。すなわち、メインセクタ２０２の書き換え失敗し、メインセクタ２０２のメインデータは異常状態である。この状態において、プリンタ１は正常な本ブートセクタ２０３のブートデータ（ＮＥＷ）をＲＡＭ１０２のブートデータ起動領域へコピーする（（ｋ）図参照）。
【００６５】
ホストコンピュータからメモリ書き換え指示を受信（ブートデータあるいはメインデータ送信）する（ステップＳ２５）。ブートデータ起動領域のブートデータ（ＮＥＷ）が起動し、プリンタ１はメインデータを受信したと判断すると（ステップＳ２６のＮｏ）、ステップＳ２８で、今回のメインデータの受信が初めてか否かを判断する（ステップＳ２８）。前回のメモリ書き換え時においてメインデータを受信したものの、メインデータ書き換え時に電源ＯＦＦされているので、本ケースにおいてはメインデータの受信は２回目あるいは複数回目である（ステップＳ２８のＮｏ）。ステップＳ３０で、メインセクタ２０２をホストコンピュータから受信したメインデータ（ＮＥＷ）に書き換える（ステップＳ３０、（ｌ）図参照））。
【００６６】
なお、本実施形態においてブートデータ起動領域は、正常なブートデータをコピーされた後ブートデータの記憶領域として専有されていたが、他のデータの記憶領域として開放してもよい。例えば、ブートデータが有するブートプログラム、メイン移行プログラム及び書き換えプログラムのうち書き換えプログラムのみをＲＡＭ１０２に残し、他のプログラムは他のデータによって上書き可能にしてもよい。このように、ＲＡＭ１０２の記憶領域を他のデータの記憶領域として開放すればプリンタ１のデータ処理性能をさらに向上させることが可能である。また、書き換えプログラムのみをブートデータ起動領域あるいはＲＡＭ１０２内の他の領域に残しておけば、メインデータ実行中に強制書き換えモードへ移行する場合でもＲＡＭ１０２に再びブートデータをコピーする必要がないのでスピーディにメモリ書き換えモードへ移行することが可能である。
【００６７】
さらに、本実施形態において仮ブートセクタ２０４をメインセクタ２０２内に設定したが、メインセクタ２０２以外の他のフラッシュＲＯＭ１０１領域内に設定することも可能である。
【００６８】
以上説明したように、本実施形態によれば、フラッシュＲＯＭ１０１の書き換え処理時のみ、仮ブートセクタ２０４をメインセクタ２０２内の所定の領域に設けるよう設定している。すなわち、フラッシュＲＯＭ１０１の書き換え処理時において仮ブートセクタ２０４とメインセクタ２０２は共有されるように設定されている。従って、メインセクタ２０２を新しいメインデータに書き換えることによって仮ブートセクタは上書きされて無くなるのでフラッシュＲＯＭ１０１内に複数のブートセクタを常設することがなく、フラッシュＲＯＭ１０１のメモリ領域をより有効に使用することが可能である。
【００６９】
また、本実施形態によれば、ＣＰＵ１０３は、フラッシュＲＯＭ１０１内に格納されている正常なブートデータをＲＡＭ１０２に複製した後、ＲＡＭ１０２に複製されたブートデータを実行することによってフラッシュＲＯＭ１０１の書き換えを行う。すなわち、起動中のブートデータはフラッシュＲＯＭ１０１上に存在しないので、起動中のブートデータによって起動セクタ自体を書き換えるといった誤った動作を生じる虞が無い。
【００７０】
また、本実施形態によれば、ホストコンピュータからのメモリ書き換え指示によって仮ブートセクタ２０４をブートデータ（ＮＥＷ）に書き換えた後、本ブートセクタにブートデータ（ＮＥＷ）をコピーするよう設定されている。従って、ブートデータ書き込み中の電源ＯＦＦによる書き換えエラーによって仮ブートセクタ２０４の書き換えあるいは本ブートセクタ２０３へのコピーに失敗した場合でも、何れかのブートセクタに正常なブートデータが存在しているので次回電源ＯＮ時において、正常なブートデータを実行させることが可能である。
【００７１】
また、本実施形態によれば、本ブートセクタ２０３にブートデータ（ＮＥＷ）をコピーした後、ホストコンピュータからのメモリ書き換え指示に応じてメインセクタ２０２をメインデータ（ＮＥＷ）に書き換えるよう設定されている。従って、必ず本ブートセクタ２０３及び仮ブートセクタ２０４がともに新しいブートデータ（ＮＥＷ）に書き換えられた後にメインセクタ２０２をメインデータ（ＮＥＷ）に書き換えるので、書き換え対象セクタのバージョンを常にそろえることができセクタごとのバージョン管理を行う必要がなくなる。
【００７２】
また、本実施形態によれば、ＣＰＵ１０３のブートセクタ選択部４１２が本ブートセクタ２０３に格納されたチェックサムが正常であると判断し本ブートセクタに格納されたブートデータをＲＡＭ１０２内にコピーした後、メインセクタ２０２に格納されたチェックサムが正常であると判断した場合に、メインセクタ２０２に格納されたメインデータを実行するように設定されている。従って、仮ブートセクタ２０４のチェックサムを検証することなくメインデータを実行することができるので通常モードへの移行をスピーディに行うことが可能である。
【００７３】
また、本実施形態によれば、ＣＰＵ１０３のメイン移行処理部４２２がメインセクタ２０２に格納されたチェックサムが異常であると判断した場合に、フラッシュＲＯＭ１０１の書き換え処理を実行するよう設定されている。従って、メインセクタ２０２のメインデータ書き換え中に電源ＯＦＦされても、次回電源ＯＮの際には必ず書き換え処理を実行しメインデータを書き換えるので常に正常なメインデータを実行することができる。
【００７４】
また、本実施形態によれば、ＣＰＵ１０３のブートセクタ選択部４１２が仮ブートセクタ２０４に格納されたチェックサムが正常であると判断した場合に、仮ブートセクタ２０４に格納されたブートデータをＲＡＭ１０２内にコピーし、フラッシュＲＯＭ１０１の書き換え処理を実行するよう設定されている。従って、仮ブートセクタ２０４のブートデータを本ブートセクタ２０３へコピー中に電源ＯＦＦされても、次回電源ＯＮの際に書き換え処理を実行し再度仮ブートセクタ２０４のブートデータを本ブートセクタ２０３へコピーするので、常に本ブートセクタ２０３に正常なブートデータを保持することが可能である。
【００７５】
また、本実施形態によれば、ＣＰＵ１０３のブートセクタ選択部４１２が本ブートセクタ２０３に格納されたチェックサムが異常であると判断し、かつ仮ブートセクタ２０４に格納されたチェックサムが異常であると判断した場合に、エラー終了するよう設定されている。従って、正常に動作するブートデータが存在しない場合にはメインデータを実行させることがないので、プリンタ１の誤動作によって不具合を生ずる虞がない。
【図面の簡単な説明】
【００７６】
【図１】本実施形態に係るプリンタを示す斜視図である。
【図２】本実施形態に係るプリンタのハードウェアの構成を示す図である。
【図３】フラッシュＲＯＭにおけるセクタの構成を示す図である。
【図４】本実施形態に係るプリンタに設けられたＣＰＵのブロック図である。
【図５】本実施形態のプリンタの起動処理の流れを示すフローチャートである。
【図６】本実施形態のプリンタの他の起動処理の流れを示すフローチャートである。
【図７】本実施形態のプリンタのメモリ書き換えモードＡの流れを示すフローチャートである。
【図８】本実施形態のプリンタのメモリ書き換えモードＡにおけるフラッシュＲＯＭの変遷を示す図である。
【図９】本実施形態のプリンタのメモリ書き換えモードＡにおけるフラッシュＲＯＭの他の変遷を示す図である。
【図１０】本実施形態のプリンタのメモリ書き換えモードＡにおけるフラッシュＲＯＭの他の変遷を示す図である。
【符号の説明】
【００７７】
１・・・プリンタ、３・・・下部ケース、５・・・上部ケース、７・・・装置ケース、９・・・用紙カセット、１１・・・排紙トレイ、１３・・・表示部、１４・・・操作部、１０１・・・フラッシュＲＯＭ、１０２・・・ＲＡＭ、２０１・・・ブートセレクタ、２０２・・・メインセクタ、２０３・・・本ブートセクタ、２０４・・・仮ブートセクタ、１０３・・・ＣＰＵ、４１０・・・初期ブート部、４２０・・・メインブート部、４３０・・・メイン部、４１２・・・ブートセクタ選択部、４２３・・・書き換え処理部、４３１・・・メイン処理部
【図１】
2007025821.tif 000003
【図２】
2007025821.tif 000004
【図３】
2007025821.tif 000005
【図４】
2007025821.tif 000006
【図５】
2007025821.tif 000007
【図６】
2007025821.tif 000008
【図７】
2007025821.tif 000009
【図８】
2007025821.tif 000010
【図９】
2007025821.tif 000011
【図１０】
2007025821.tif 000012