JP2007025821A - 情報処理装置及び情報処理装置の制御方法 - Google Patents
情報処理装置及び情報処理装置の制御方法 Download PDFInfo
- Publication number
- JP2007025821A JP2007025821A JP2005203686A JP2005203686A JP2007025821A JP 2007025821 A JP2007025821 A JP 2007025821A JP 2005203686 A JP2005203686 A JP 2005203686A JP 2005203686 A JP2005203686 A JP 2005203686A JP 2007025821 A JP2007025821 A JP 2007025821A
- Authority
- JP
- Japan
- Prior art keywords
- boot
- sector
- data
- main
- stored
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/00912—Arrangements for controlling a still picture apparatus or components thereof not otherwise provided for
- H04N1/00928—Initialisation or control of normal start-up or shut-down, i.e. non failure or error related
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/32—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
- H04N1/32609—Fault detection or counter-measures, e.g. original mis-positioned, shortage of paper
- H04N1/32646—Counter-measures
- H04N1/32667—Restarting a communication or performing a recovery operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N2201/00—Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
- H04N2201/0077—Types of the still picture apparatus
- H04N2201/0081—Image reader
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N2201/00—Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
- H04N2201/0077—Types of the still picture apparatus
- H04N2201/0082—Image hardcopy reproducer
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Record Information Processing For Printing (AREA)
Abstract
【課題】フラッシュROM上に常に複数のブートセクタを設けることなく、フラッシュROM書き換え中における電源OFFにおいても、次回電源ON時に正常なブートプログラムで起動できるようにする。
【解決手段】フラッシュROMはメモリ書き換えモードにおいて、ブートセレクタ201、メインセクタ202及び本ブートセクタ203のほか、メインセクタ202の一部分に上書きすることによって一時的に仮ブートセクタ204を構成するように設定する。
【選択図】図8
【解決手段】フラッシュROMはメモリ書き換えモードにおいて、ブートセレクタ201、メインセクタ202及び本ブートセクタ203のほか、メインセクタ202の一部分に上書きすることによって一時的に仮ブートセクタ204を構成するように設定する。
【選択図】図8
Description
本発明は、情報処理装置及び情報処理装置の制御方法に関し、特に情報処理装置のメモリ書き換え処理に関する。
近年、プリンタやスキャナ等の情報処理は、パーソナルユースや業務用途等の様々な目的に応じて幅広く利用されている。以下では、情報処理装置として、プリンタを例に挙げて説明する。
プリンタにはファームウェアが組み込まれており、ファームウェアを実行することによりプリンタの制御が行われる。ファームウェアは、大きく分けてハードウェアの初期化等プリンタの起動に必要な一連の起動動作を実行させるブートプログラムと、ブートプログラムによる起動動作後に実行されてホストコンピュータからの指示に応じてプリンタを制御するメインプログラムの2つを備えている。ブートプログラムとメインプログラムは、プリンタ内に設けられたフラッシュROM内の異なるセクタに格納されており、フラッシュROM書き換えの際にはセクタ毎に、すなわちブートプログラムとメインプログラムをそれぞれ別々に書き換えが可能である。
ところで、ブートプログラムが記憶されているセクタ(以下、ブートセクタ)の書き換えに失敗すると、プリンタはブートプログラムによる起動動作を実行することができず、起動不能状態に陥ることがある。このような状態を回避するため、選択的に読み出される複数のブートセクタを設け、一のブートセクタ内のブートプログラム書き換えに失敗しても、他のブートセクタ内の正常なブートプログラムでプリンタを起動させる、いわゆるWブート方式が提案されている(例えば、特許文献1参照)。
特開2004−94628号公報
このWブート方式は、常にフラッシュROM上にブートセクタを2つ存在させ、少なくともいずれか一方のブートプログラムを動作可能にしておくことでブート書き込み中の電源OFFに対応させる方式である。
しかし、このWブート方式では常に2つのブートセクタがフラッシュROM上の領域を専有しているため、記憶容量の大きなフラッシュROMを用いる必要がある。このため、フラッシュROM領域に限りがある情報処理装置にはWブート方式が採用できず、フラッシュROMの記憶領域をより有効に使用する観点から改良の余地が残されている。また、Wブート方式では2つのブートセクタのうちどちらのブートセクタが新しいのかを判断するために、ブートセクタの書き換え情報であるバージョンの管理を行う必要があり制御が複雑になっていた。
本発明は、上記問題点に鑑みてなされたものであり、フラッシュROM上に常に複数のブートセクタを設けなくとも、一時的に複数のブートセクタを設けることによってフラッシュROM書き換え中における電源OFFにおいても、次回電源ON時に正常なブートプログラムで起動することができる情報処理装置及び情報処理装置の制御方法を提供することを目的とする。
本発明の上記目的は、以下の手段によって達成される。
(1) CPUと、RAMと書き換え可能なフラッシュROMと、を備え、ホストコンピュータからのメモリ書き換え指示によって前記フラッシュROMを書き換える情報処理装置であって、
前記フラッシュROMは、ブートセレクタデータを格納したブートセレクタと、前記ブートセレクタデータによって起動されるブートデータを格納した第1ブートセクタと、前記ブートデータによって起動されるメインデータを格納したメインセクタと、を有し、
前記CPUは、前記フラッシュROM内に格納されている正常なブートデータを前記RAMに複製するとともに、
前記RAMに複製された前記ブートデータを実行することにより、前記フラッシュROM内の前記第1ブートセクタとは別の第2ブートセクタに前記ホストコンピュータから受信する新しいブートデータを書き込み、そして前記第2ブートセクタに書き込まれた前記新しいブートデータを前記第1ブートセクタに複製することを特徴とする情報処理装置。
(2) 前記第2ブートセクタは、前記メインセクタ内の所定の領域であることを特徴とする請求項1に記載の情報処理装置。
(3) 前記CPUは、前記第2ブートセクタに書き込まれた前記新しいブートデータを前記第1ブートセクタに複製した後、前記メインセクタに新しいメインデータを書き込むことを特徴とする請求項1または請求項2に記載の情報処理装置。
(4) 前記メインセクタ、前記第1ブートセクタ及び前記第2ブートセクタには、前記メインセクタに格納されたメインデータ、前記第1ブートセクタに格納されたブートデータ及び前記第2ブートセクタに格納されたブートデータがそれぞれ正しいか否かを検証するチェックサムが格納され、
前記CPUが前記ブートセレクタデータを実行して前記第1ブートセクタに格納されたチェックサムが正常であると判断した後に、前記第1ブートセクタに格納されたブートデータを前記RAMに複製し、
前記CPUが前記RAM内の前記ブートデータを実行して前記メインセクタに格納されたチェックサムが正常であると判断した後に、前記メインセクタに格納されたメインデータを実行することを特徴とする請求項1〜3の何れかに記載の情報処理装置。
(5) 前記CPUは、前記メインセクタに格納されたチェックサムが異常であると判断した場合、前記フラッシュROMの書き換え処理を実行することを特徴とする請求項1〜4の何れかに記載の情報処理装置。
(6) 前記CPUは、前記フラッシュROM内の前記ブートセレクタデータを実行することにより、前記第2ブートセクタに格納されたチェックサムが正常であると判断した場合に、前記第2ブートセクタに格納されたブートデータを前記RAM内に複製し、前記フラッシュROMの書き換え処理を実行することを特徴とする請求項1〜5の何れかに記載の情報処理装置。
(7) 前記CPUは、前記フラッシュROM内の前記ブートセレクタデータを実行することにより、前記第1ブートセクタに格納されたチェックサムが異常であると判断し、かつ前記第2ブートセクタに格納されたチェックサムが異常であると判断した場合に、エラー処理を実行することを特徴とする請求項1〜6の何れかに記載の情報処理装置。
(8) CPUと、RAMと書き換え可能なフラッシュROMと、を備え、ホストコンピュータからのメモリ書き換え指示によって前記フラッシュROMを書き換える情報処理装置の制御方法であって、
前記フラッシュROMは、ブートセレクタデータを格納したブートセレクタと、前記ブートセレクタデータによって起動されるブートデータを格納した第1ブートセクタと、前記ブートデータによって起動されるメインデータを格納したメインセクタと、を有し、
前記フラッシュROM内に格納されている正常なブートデータを前記RAMに複製する第1ステップと、
前記RAMに複製された前記ブートデータを実行することにより、前記フラッシュROM内の前記第1ブートセクタとは別の第2ブートセクタに前記ホストコンピュータから受信する新しいブートデータを書き込む第2ステップと、
前記第2ブートセクタに書き込まれた前記新しいブートデータを前記第1ブートセクタに複製する第3ステップと、を有すことを特徴とする情報処理装置の制御方法。
(9) 前記第2ブートセクタは、前記メインセクタ内の所定の領域であることを特徴とする請求項8に記載の情報処理装置の制御方法。
(10) 前記第3ステップの後、前記メインセクタに新しいメインデータを書き込む第4ステップを有することを特徴とする請求項8または請求項9に記載の情報処理装置の制御方法。
(11) 前記メインセクタ、前記第1ブートセクタ及び前記第2ブートセクタには、前記メインセクタに格納されたメインデータ、前記第1ブートセクタに格納されたブートデータ及び前記第2ブートセクタに格納されたブートデータがそれぞれ正しいか否かを検証するチェックサムが格納され、
前記第1ブートセクタに格納されたチェックサムを検証する第5ステップと、
前記第1ブートセクタに格納されたブートデータを前記RAMに複製する第6ステップと、
前記メインセクタに格納されたチェックサムを検証する第7ステップとを有し、
前記第5ステップにおいて前記第1ブートセクタに格納されたチェックサムが正常であり、かつ第7ステップにおいて前記メインセクタに格納されたチェックサムが正常である場合にメインデータを実行することを特徴とする請求項8〜10の何れかに記載の情報処理装置の制御方法。
(12) 前記第7ステップにおいて前記メインセクタに格納されたチェックサムが異常である場合に、前記フラッシュROMの書き換え処理を実行することを特徴とする請求項11に記載の情報処理装置の制御方法。
(13) 前記第2ブートセクタに格納されたチェックサムを検証する第8ステップを有し、前記第8ステップにおいて前記チェックサムが正常である場合に、前記第2ブートセクタに格納されたブートデータを前記RAM内に複製し、前記フラッシュROMの書き換え処理を実行することを特徴とする請求項8〜12の何れかに記載の情報処理装置の制御方法。
(14) 前記第5ステップにおいて前記第1ブートセクタに格納されたチェックサムが異常であり、かつ前記第8ステップにおいて前記第2ブートセクタに格納されたチェックサムが異常である場合に、エラー処理を実行することを特徴とする請求項11〜13の何れかに記載の情報処理装置の制御方法。
(1) CPUと、RAMと書き換え可能なフラッシュROMと、を備え、ホストコンピュータからのメモリ書き換え指示によって前記フラッシュROMを書き換える情報処理装置であって、
前記フラッシュROMは、ブートセレクタデータを格納したブートセレクタと、前記ブートセレクタデータによって起動されるブートデータを格納した第1ブートセクタと、前記ブートデータによって起動されるメインデータを格納したメインセクタと、を有し、
前記CPUは、前記フラッシュROM内に格納されている正常なブートデータを前記RAMに複製するとともに、
前記RAMに複製された前記ブートデータを実行することにより、前記フラッシュROM内の前記第1ブートセクタとは別の第2ブートセクタに前記ホストコンピュータから受信する新しいブートデータを書き込み、そして前記第2ブートセクタに書き込まれた前記新しいブートデータを前記第1ブートセクタに複製することを特徴とする情報処理装置。
(2) 前記第2ブートセクタは、前記メインセクタ内の所定の領域であることを特徴とする請求項1に記載の情報処理装置。
(3) 前記CPUは、前記第2ブートセクタに書き込まれた前記新しいブートデータを前記第1ブートセクタに複製した後、前記メインセクタに新しいメインデータを書き込むことを特徴とする請求項1または請求項2に記載の情報処理装置。
(4) 前記メインセクタ、前記第1ブートセクタ及び前記第2ブートセクタには、前記メインセクタに格納されたメインデータ、前記第1ブートセクタに格納されたブートデータ及び前記第2ブートセクタに格納されたブートデータがそれぞれ正しいか否かを検証するチェックサムが格納され、
前記CPUが前記ブートセレクタデータを実行して前記第1ブートセクタに格納されたチェックサムが正常であると判断した後に、前記第1ブートセクタに格納されたブートデータを前記RAMに複製し、
前記CPUが前記RAM内の前記ブートデータを実行して前記メインセクタに格納されたチェックサムが正常であると判断した後に、前記メインセクタに格納されたメインデータを実行することを特徴とする請求項1〜3の何れかに記載の情報処理装置。
(5) 前記CPUは、前記メインセクタに格納されたチェックサムが異常であると判断した場合、前記フラッシュROMの書き換え処理を実行することを特徴とする請求項1〜4の何れかに記載の情報処理装置。
(6) 前記CPUは、前記フラッシュROM内の前記ブートセレクタデータを実行することにより、前記第2ブートセクタに格納されたチェックサムが正常であると判断した場合に、前記第2ブートセクタに格納されたブートデータを前記RAM内に複製し、前記フラッシュROMの書き換え処理を実行することを特徴とする請求項1〜5の何れかに記載の情報処理装置。
(7) 前記CPUは、前記フラッシュROM内の前記ブートセレクタデータを実行することにより、前記第1ブートセクタに格納されたチェックサムが異常であると判断し、かつ前記第2ブートセクタに格納されたチェックサムが異常であると判断した場合に、エラー処理を実行することを特徴とする請求項1〜6の何れかに記載の情報処理装置。
(8) CPUと、RAMと書き換え可能なフラッシュROMと、を備え、ホストコンピュータからのメモリ書き換え指示によって前記フラッシュROMを書き換える情報処理装置の制御方法であって、
前記フラッシュROMは、ブートセレクタデータを格納したブートセレクタと、前記ブートセレクタデータによって起動されるブートデータを格納した第1ブートセクタと、前記ブートデータによって起動されるメインデータを格納したメインセクタと、を有し、
前記フラッシュROM内に格納されている正常なブートデータを前記RAMに複製する第1ステップと、
前記RAMに複製された前記ブートデータを実行することにより、前記フラッシュROM内の前記第1ブートセクタとは別の第2ブートセクタに前記ホストコンピュータから受信する新しいブートデータを書き込む第2ステップと、
前記第2ブートセクタに書き込まれた前記新しいブートデータを前記第1ブートセクタに複製する第3ステップと、を有すことを特徴とする情報処理装置の制御方法。
(9) 前記第2ブートセクタは、前記メインセクタ内の所定の領域であることを特徴とする請求項8に記載の情報処理装置の制御方法。
(10) 前記第3ステップの後、前記メインセクタに新しいメインデータを書き込む第4ステップを有することを特徴とする請求項8または請求項9に記載の情報処理装置の制御方法。
(11) 前記メインセクタ、前記第1ブートセクタ及び前記第2ブートセクタには、前記メインセクタに格納されたメインデータ、前記第1ブートセクタに格納されたブートデータ及び前記第2ブートセクタに格納されたブートデータがそれぞれ正しいか否かを検証するチェックサムが格納され、
前記第1ブートセクタに格納されたチェックサムを検証する第5ステップと、
前記第1ブートセクタに格納されたブートデータを前記RAMに複製する第6ステップと、
前記メインセクタに格納されたチェックサムを検証する第7ステップとを有し、
前記第5ステップにおいて前記第1ブートセクタに格納されたチェックサムが正常であり、かつ第7ステップにおいて前記メインセクタに格納されたチェックサムが正常である場合にメインデータを実行することを特徴とする請求項8〜10の何れかに記載の情報処理装置の制御方法。
(12) 前記第7ステップにおいて前記メインセクタに格納されたチェックサムが異常である場合に、前記フラッシュROMの書き換え処理を実行することを特徴とする請求項11に記載の情報処理装置の制御方法。
(13) 前記第2ブートセクタに格納されたチェックサムを検証する第8ステップを有し、前記第8ステップにおいて前記チェックサムが正常である場合に、前記第2ブートセクタに格納されたブートデータを前記RAM内に複製し、前記フラッシュROMの書き換え処理を実行することを特徴とする請求項8〜12の何れかに記載の情報処理装置の制御方法。
(14) 前記第5ステップにおいて前記第1ブートセクタに格納されたチェックサムが異常であり、かつ前記第8ステップにおいて前記第2ブートセクタに格納されたチェックサムが異常である場合に、エラー処理を実行することを特徴とする請求項11〜13の何れかに記載の情報処理装置の制御方法。
本発明によれば、フラッシュROMの書き換え処理時のみ、第2ブートセクタをメインセクタ内の所定の領域に設けるよう設定している。すなわち、フラッシュROMの書き換え処理時において第2ブートセクタとメインセクタは共有されるように設定されている。従って、メインセクタを新しいメインデータに書き換えることによって第2ブートセクタは上書きされて無くなるのでフラッシュROM内に複数のブートセクタを常設する必要がなく、フラッシュROMのメモリ領域をより有効に使用することが可能である。
また、本発明によれば、CPUは、フラッシュROM内に格納されている正常なブートデータをRAMに複製した後、RAMに複製されたブートデータを実行することによってフラッシュROMの書き換えを行う。すなわち、起動中のブートデータはフラッシュROM上に存在しないので、起動中のブートデータによって起動セクタ自体を書き換えるといった誤った動作を生じる虞が無い。
また、本発明によれば、フラッシュROM内の第1ブートセクタとは別の第2ブートセクタにホストコンピュータから受信する新しいブートデータを書き込み、そして第2ブートセクタに書き込まれた新しいブートデータを第1ブートセクタに複製するように設定されている。従って、ブートデータ書き込み中の電源OFFによる書き換えエラーによって第2ブートセクタの書き換えあるいは第1ブートセクタへの複製に失敗した場合でも、常に何れかのブートセクタに実行可能なブートデータが存在しているので次回電源ONの際においても、ブートデータを実行させることが可能である。
また、本発明によれば、CPUは、第2ブートセクタに書き込まれた新しいブートデータを第1ブートセクタに複製した後、メインセクタに新しいメインデータを書き込むように設定されている。従って、必ず第1ブートセクタ及び第2ブートセクタがともに新しいブートデータに書き換えられた後にメインセクタを新しいメインデータに書き換えるので、書き換え対象セクタのバージョンとメインセクタのバージョンとを常にそろえることができデータセクタごとのバージョン管理を行う必要がなくなる。
また、本発明によれば、CPUがブートセレクタデータを実行して第1ブートセクタに格納されたチェックサムが正常であると判断した後に、第1ブートセクタに格納されたブートデータをRAMに複製し、CPUがRAM内のブートデータを実行してメインセクタに格納されたチェックサムが正常であると判断した後に、メインセクタに格納されたメインデータを実行するように設定されている。従って、第2ブートセクタのチェックサムを検証することなくメインデータを実行することができるのでメインデータ処理への移行をスピーディに行うことが可能である。
また、本発明によれば、CPUは、メインセクタに格納されたチェックサムが異常であると判断した場合、フラッシュROMの書き換え処理を実行するよう設定されている。従って、メインセクタのメインデータ書き換え中に電源OFFされても、次回電源ONの際に書き換え処理を実行しメインデータを書き換えるので常に新しいバージョンでかつ正常なメインデータを実行することができる。
また、本発明によれば、CPUは、フラッシュROM内のブートセレクタデータを実行することにより、第2ブートセクタに格納されたチェックサムが正常であると判断した場合に、第2ブートセクタに格納されたブートデータをRAM内に複製し、フラッシュROMの書き換え処理を実行するよう設定されている。従って、第2ブートセクタのブートデータを第1ブートセクタへ複製中に電源OFFされても、次回電源ONの際に書き換え処理を実行し再度第2ブートセクタのブートデータを第1ブートセクタへ複製するので、常に第1ブートセクタに正常なブートデータを保持することが可能である。
また、本発明によれば、CPUは、フラッシュROM内のブートセレクタデータを実行することにより、第1ブートセクタに格納されたチェックサムが異常であると判断し、かつ第2ブートセクタに格納されたチェックサムが異常であると判断した場合に、エラー処理を実行するよう設定されている。従って、正常に動作するブートデータが存在しない場合にはメインデータを実行させることがないので、情報処理装置が間違った動作をすることがない。
次に、図面を参照しながら、本発明に係る情報処理装置及び情報処理装置の制御方法の実施形態について説明する。
図1は、本実施形態のプリンタ1を示す斜視図である。
図1に示すように、プリンタ1では、例えば、小切手等のスリップ紙Sに印字を行うスリップ紙印字部と、レシート発行用のロール紙Pに印字可能なロール紙印字部とを有する複合型のプリンタである。
プリンタ1は、図1に示すように、本体部2の上面に正面側カバー3と背面側カバー4とが開閉可能に取り付けられており、また背面側カバー4には、背面側カバー4に回動可能に取り付けられた上部カバー5が取り付けられている。
図1は、本実施形態のプリンタ1を示す斜視図である。
図1に示すように、プリンタ1では、例えば、小切手等のスリップ紙Sに印字を行うスリップ紙印字部と、レシート発行用のロール紙Pに印字可能なロール紙印字部とを有する複合型のプリンタである。
プリンタ1は、図1に示すように、本体部2の上面に正面側カバー3と背面側カバー4とが開閉可能に取り付けられており、また背面側カバー4には、背面側カバー4に回動可能に取り付けられた上部カバー5が取り付けられている。
プリンタ1の正面側には、スリップ紙Sを挿入可能なスリップ紙挿入口6が設けられている。スリップ紙挿入口6から挿入されたスリップ紙Sは、本体部2内部に設けられたスリップ紙搬送路(不図示)を搬送されながら、同じく本体部2内部に設けられたスリップ紙印字部によって印字される。そして、スリップ紙Sは、印字終了後、正面側カバー3と背面側カバー4との間に設けられたスリップ紙排出口7より排出される。
また、プリンタ1の本体部2内部には、ロール紙Pが装填されている。ロール紙Pは、本体部2内部に設けられたロール紙搬送路(不図示)を搬送されながら本体部2内部に設けられたロール紙印字部によって印字される。そして、ロール紙Pは、印字終了後、背面側カバー4と上部カバー5との間に設けられたロール紙排出口8より排出される。また、本体部2内部には、ロール紙Pやスリップ紙Sを搬送経路に沿って搬送する搬送機構や、搬送経路の途中に装備されて搬送されてくる記録紙に文字や図形等の画像を記録する記録部や各種の動作装置が組み込まれており、これらの動作により印刷が行われる。
次に、本実施形態のプリンタ1に設けられた制御部104の構成を説明する。
図2は、本実施形態のプリンタ1の制御部104の一構成を示す図である。
本実施形態のプリンタ1は、不揮発性メモリであるフラッシュROM101と、揮発性メモリであるRAM102と、演算素子としてのCPU103とを有している。
図2は、本実施形態のプリンタ1の制御部104の一構成を示す図である。
本実施形態のプリンタ1は、不揮発性メモリであるフラッシュROM101と、揮発性メモリであるRAM102と、演算素子としてのCPU103とを有している。
フラッシュROM101は、電気的に書き換え可能な不揮発性の記憶媒体である。フラッシュROM101は、一括して消去可能な最小単位の記憶領域である複数のセクタに分割されており、各セクタ毎にデータの書き換えを行うことが可能である。このフラッシュROM101には、起動処理の初期段階の処理を実行するブートセレクタデータと、ブートセレクタデータの実行後に起動され引き続き起動処理を実行するブートデータと、プリンタ1の印刷処理等(以下、通常モードという)を制御するメインデータが記憶されている。
以下、本実施形態では、フラッシュROM101内において、ブートセレクタデータが格納されている領域を「ブートセレクタ」、ブートデータが格納されている領域を「ブートセクタ」、メインデータが格納される領域を「メインセクタ」と呼ぶこととする。ここでは、ブートデータまたはメインデータが複数のセクタに跨って保存されている場合も含めて、ブートデータが保存されているセクタ(複数の場合有り)を「ブートセクタ」と呼び、そしてメインデータが保存されているセクタ(複数の場合有り)を「メインセクタ」と呼称することとする。
RAM102は、各種データが一時的に保持される書き換え可能な揮発性の記憶媒体である。フラッシュROM101に記憶された各種データの実行に当たっては、RAM102に各種データが読み出され、CPU103によりプログラム等の各種データが実行されることによって制御部104が構成され、プリンタ1の制御が行われる。
図3は、フラッシュROM101における各種データの記憶状態を示す図である。(a)はプリンタ1の通常モードにおけるフラッシュROM101の構成例を示し、(b)はプリンタ1のフラッシュROM101の書き換え処理(以下、メモリ書き換えモードという。)におけるフラッシュROM101の構成例を示した図である。
図3(a)に示すようにフラッシュROM101は、通常モードにおいてはブートセレクタ201、メインセクタ202及び本ブートセクタ(第1ブートセクタ)203から構成されている。また、(b)図に示すようにメモリ書き換えモードにおいては、ブートセレクタ201、メインセクタ202及び本ブートセクタ203のほか、メインセクタ202の一部分に上書きすることによって一時的に仮ブートセクタ(第2ブートセクタ)204が構成されるように設定されている。
まず、ブートセレクタ201について説明する。
ブートセレクタ201には、プリンタ1の初期起動時にまず読み出されて実行されるブートセレクタデータが記憶されている。ブートセレクタデータは、プリンタ1の電源投入直後に初期の起動処理を実行する初期ブートプログラムと、初期ブートプログラムの実行後に、後述する本ブートセクタ203と仮ブートセクタ204のいずれかのブートデータをRAM102にコピーするかを選択するブートセレクタプログラムから構成されている。ブートセレクタデータは、基本的に書き換えが行われないように構成されたデータであり、プリンタ1の起動処理に最低限必要な機能のみを実行し、本ブートセクタ203と仮ブートセクタ204のいずれかのブートデータを選択しRAM102へ選択されたブートセクタ中のデータをコピーするように構成されている。
ブートセレクタ201には、プリンタ1の初期起動時にまず読み出されて実行されるブートセレクタデータが記憶されている。ブートセレクタデータは、プリンタ1の電源投入直後に初期の起動処理を実行する初期ブートプログラムと、初期ブートプログラムの実行後に、後述する本ブートセクタ203と仮ブートセクタ204のいずれかのブートデータをRAM102にコピーするかを選択するブートセレクタプログラムから構成されている。ブートセレクタデータは、基本的に書き換えが行われないように構成されたデータであり、プリンタ1の起動処理に最低限必要な機能のみを実行し、本ブートセクタ203と仮ブートセクタ204のいずれかのブートデータを選択しRAM102へ選択されたブートセクタ中のデータをコピーするように構成されている。
ここで、プリンタ1の起動処理に最低限必要な機能とは、例えば、最低限のハードウェアチェックおよび初期化等が挙げられる。この最低限のハードウェアチェックおよび初期化とは、ブートデータが実行されるまでの間、自身のプログラムを実行するために必要なデバイスのみを対象としたチェックおよび初期化が挙げられ、たとえばCPU103のチェックおよび初期化、およびブートセレクタプログラムを実行するために必要なRAM102中の所定領域のみのチェックおよび初期化等が挙げられる。
なお、ブートセレクタデータはバグ修正のためのブートセレクタ201の書き換え処理を限りなく減らすため、なるべくシンプルなコードで記載されている。
次に、本ブートセクタ203及び仮ブートセクタ204について説明する。
本ブートセクタ203及び仮ブートセクタ204は、起動時における各種起動処理の実行、及びフラッシュROM101に格納されたデータを書き換えるための機能を実行させるブートデータが格納されている。具体的に、ブートデータは、プリンタ1を完全に起動させるために必要な各種起動処理を行うブートプログラムと、ブートプログラムの実行後に実行され後述するメインセクタ202のメインデータによる処理への移行を行うメイン移行プログラムと、フラッシュROM101内のデータの書き換え処理を実行する書き換えプログラムとを備えている。
本ブートセクタ203及び仮ブートセクタ204は、起動時における各種起動処理の実行、及びフラッシュROM101に格納されたデータを書き換えるための機能を実行させるブートデータが格納されている。具体的に、ブートデータは、プリンタ1を完全に起動させるために必要な各種起動処理を行うブートプログラムと、ブートプログラムの実行後に実行され後述するメインセクタ202のメインデータによる処理への移行を行うメイン移行プログラムと、フラッシュROM101内のデータの書き換え処理を実行する書き換えプログラムとを備えている。
本ブートセクタ203及び仮ブートセクタ204に記憶されるブートプログラムは、ブートセレクタ201に記憶された初期ブートプログラムにおける初期化及びチェックを含むプリンタ1を起動するために必要なデバイスの初期化及びチェックを一から独立して実行する。具体的には、CPU103やRAM102のチェックに加えて、通信インタフェースの種別判定、各通信インタフェースに対応した処理、各種ステータスコマンドに対応した処理等が実行される。
なお、本ブートセクタ203は、プリンタ1が通常モードであるかメモリ書き換えモードであるかに関わらずフラッシュROM101内に常設されるセクタであるが、仮ブートセクタ204は、プリンタ1のメモリ書き換えモードにおいてのみ一時的にフラッシュROM101内に設けられるセクタである。すなわち、仮ブートセクタ204はメモリ書き換えモードにおいて、プリンタ1と通信可能に接続された図示せぬホストコンピュータから受信した新しい書き換えブートデータを、メインセクタ202の一部分に上書きすることで一時的に設定されるセクタである。メモリ書き換えの詳細については後述する。このように、本実施形態のプリンタ1は複数のブートセクタをフラッシュROM101内に常設することがないので、通常モードにおいてフラッシュROM領域を有効に使用することができる。
また、本ブートセクタ203及び仮ブートセクタ204にはブートデータの正当性を確認するチェックサムがそれぞれブートセクタの最後に格納されている。制御部104がチェックサムの正当性を判断し、ブートセレクタ201のブートセレクタプログラムによって、本ブートセクタ203と仮ブートセクタ204のいずれか正常なブートデータが選択され、正常なブートデータがRAM102へコピーされる。正常なブートデータがRAM102へコピーされると、以後の書き換え処理はRAM102へコピーされた正常なブートデータが備えた書き換えプログラムを実行することによって行われる。すなわち、実行プログラムがブートセレクタプログラムからブートデータが備えた書き換えプログラムへ移行する。これについては後ほど説明する。以下、RAM102内の正常なブートデータがコピーされた領域を「ブートデータ起動領域」という。このブートデータ起動領域は、ブートデータ以外のデータが上書きされない専用の領域であってもよいし、画像データや印刷データが上書きされる汎用の領域であってもよい。また、汎用の領域であっても、メモリ書き換えモードに移行するためのプログラムだけは、所定の上書きされない領域に書き込まれるように構成されていてもよい。
次に、メインセクタ202について説明する。
メインセクタ202には、プリンタ1の通常モードの制御を実行するメインプログラム、ホストコンピュータからの書き換え指示に応じてブートデータ起動領域の書き換えプログラムを呼び出す呼び出しプログラム、フォントデータ、諸設定データ等のメインデータが格納されている。メインセクタ202内のメインデータは、ブートデータ起動領域に記憶されたブートプログラムが実行された後に、読み出されて実行され、プリンタ1の通常モードにおける各種制御を実行する。
メインセクタ202には、プリンタ1の通常モードの制御を実行するメインプログラム、ホストコンピュータからの書き換え指示に応じてブートデータ起動領域の書き換えプログラムを呼び出す呼び出しプログラム、フォントデータ、諸設定データ等のメインデータが格納されている。メインセクタ202内のメインデータは、ブートデータ起動領域に記憶されたブートプログラムが実行された後に、読み出されて実行され、プリンタ1の通常モードにおける各種制御を実行する。
このメインセクタ202は、ブートデータ起動領域の書き換えプログラムによって書き換えが行われる。また、メインセクタ202は、本ブートセクタ及び仮ブートセクタと同様にメインデータの正当性を確認するチェックサムを有している。なお、ブートセクタ及びメインセクタのチェックサムは夫々のセクタの最後に16ビットのWORDサイズを基本として書き込み、構成ビットが少ないことによる正常性チェックの信頼度を下げないようにしている。
次に、フラッシュROM101内の各種データが実行されることによりCPU103により構成される各種機能部について説明する。
図4は、本実施形態のプリンタ1におけるCPU103内の処理を模式的に示すブロック図である。
CPU103には、CPU103がフラッシュROM内の各種データを読み出して実行することにより、初期ブート部410、メインブート部420及びメイン部430が構成される。
図4は、本実施形態のプリンタ1におけるCPU103内の処理を模式的に示すブロック図である。
CPU103には、CPU103がフラッシュROM内の各種データを読み出して実行することにより、初期ブート部410、メインブート部420及びメイン部430が構成される。
初期ブート部410は、ブートセレクタ201のブートセレクタデータが読み出されて実行されることにより構成される機能部である。初期ブート部410では、初期ブートプログラムを実行することにより、プリンタ1の電源投入直後に初期の起動処理を実行する初期ブート処理部411と、ブートセレクタプログラムを実行することにより、初期ブートプログラムの実行後に本ブートセクタ203と仮ブートセクタ204のいずれのブートデータをRAM102のブートデータ起動領域へコピーするか選択するブートセクタ選択部412が構成される。このブートセクタ選択部412は、本ブートセクタ及び仮ブートセクタのチェックサムが共に異常であると判断するとプリンタ1をエラー処理させる。
メインブート部420は、RAM102のブートデータ起動領域へコピーされたブートデータが読み出されて実行されることにより構成される機能部である。メインブート部420では、ブートプログラムを実行することによりプリンタ1を完全に起動させるために必要な各種起動処理を行うブート処理部421と、メイン移行プログラムを実行することによりブートプログラムの実行後に実行され後述するメインセクタ202のメインデータによる処理への移行を行うメイン移行処理部422と、書き換えプログラムを実行することによりフラッシュROM101内のデータの書き換え処理を実行する書き換え処理部423が構成される。
メイン移行処理部422は、ブート処理部421によるブート動作が終わった後、メインセクタ202内のメインデータを読み出してメイン処理を行わせるかどうかの判定を行う。具体的には、メインセクタ202のチェックサムが正常であれば、メインセクタ202に書き込まれたメインデータが読み出されて、プリント処理等が実行される。ここで、チェックサムが異常であれば、メイン移行処理部422は、書き換え処理部423による処理へ移行する。
書き換え処理部423は、本ブートセクタ203内のブートデータあるいはメインセクタ202内のメインデータの書き換えを行う。また、書き換え処理部423は、書き換え時に、書き換え後のブートデータおよび書き換え後のメインデータからそれぞれ算出したチェックサムの値をそれぞれ更新する。
メイン部430は、フォントデータ、諸設定データ等を参照しながらメインプログラムを実行することにより、プリンタ1の通常モードにおける各種制御を実行するメイン処理部431と、ホストコンピュータから送信される書き換え指示に応じて起動される書き換え処理移行部432とが構成される。
メイン処理部431は、ホストコンピュータとの通信を行いつつ、プリンタ1の各駆動部を制御し、印刷を実行させる通常モードを制御する機能部である。プリンタ1が書き換えを行わない場合には、常に最終的にはこのメイン処理部431に移行し、プリンタ1が駆動制御される。
書き換え処理移行部432は、メイン処理部431の処理中にホストコンピュータからメモリ書き換え指示を受信すると、書き換え処理部423の処理へ移行させる。すなわち、本実施形態では、メイン処理部431の処理実行中にメモリ書き換え指示を受信すると、再起動等を行わず強制的に書き換えモードに移行するように構成されている。
次に、本実施形態のプリンタ1における起動処理の流れを説明する。
図5は本実施形態のプリンタ1の起動処理の流れを示すフローチャートである。
図5は本実施形態のプリンタ1の起動処理の流れを示すフローチャートである。
(電源ONから通常モードへ移行するまでの処理)
まず、プリンタ1を電源ONにすると、初期ブート処理部411がブートセレクタ201に格納されたブートセレクタデータを起動させ(ステップS1)、ブートセレクタデータのうちの初期ブートプログラムによってプリンタ1の初期起動処理を実行する。初期ブートプログラムの実行後、ブートセクタ選択部412が本ブートセクタ203と仮ブートセクタ204のいずれかのブートデータをRAM102にコピーするかを選択するブートセレクタプログラムを起動させる。
まず、プリンタ1を電源ONにすると、初期ブート処理部411がブートセレクタ201に格納されたブートセレクタデータを起動させ(ステップS1)、ブートセレクタデータのうちの初期ブートプログラムによってプリンタ1の初期起動処理を実行する。初期ブートプログラムの実行後、ブートセクタ選択部412が本ブートセクタ203と仮ブートセクタ204のいずれかのブートデータをRAM102にコピーするかを選択するブートセレクタプログラムを起動させる。
ブートセクタプログラムが起動されると、ブートセクタ選択部412は本ブートセクタ203に格納されたチェックサムを検証する(ステップS2)。本ブートセクタ203のチェックサムが正常であると判断されるとブートセクタ選択部412は正常な本ブートセクタのブートデータをRAM102の所定の領域(ブートデータ起動領域)へコピーする(ステップS3)。
RAM102のブートデータ起動領域へブートデータがコピーされると、実行プログラムはブートセレクタ201に格納されたブートセレクタプログラムから、ブートデータ起動領域へコピーされた本ブートセクタ203のブートデータが備えたブートプログラムへ移行する。そして、ブート処理部421がブートプログラムを起動させ、プリンタ1を完全に起動させるために必要な各種起動処理が行われる。
次に、メイン移行処理部422がメインセクタ202に格納されたチェックサムを検証する(ステップS4)。メインセクタ202のチェックサムが正常であると判断されるとメイン移行処理部422はブートデータが備えたメイン移行プログラムを起動させメインデータによる処理へ移行する。メイン処理部431によってメインセクタに格納されたメインデータを実行し(ステップS5)、プリンタ1のプリント処理等を実行させる通常モードへ移行し、メインデータ実行中にホストコンピュータからメモリ書き換え指示を受信することがなければ(ステップS6)、通常処理のまま待機する。
(メインデータ実行中にメモリ書き換えモードへ移行する処理)
一方、メイン処理部431は、メインデータ実行中にホストコンピュータからメモリ書き換え指示を受信するとメモリ書き換えモードへ移行する(ステップS6)。書き換え処理移行部432は、メイン処理部431の処理中にホストコンピュータからメモリ書き換え指示を受信すると、書き換え処理部423の処理へ移行させる。すなわち、本実施形態では、メインデータ実行中に書き換え指示を受信すると、再起動等を行わず直接本ブートセクタのブートデータが読み出され、メモリ書き換えモードAに移行するように構成されている。
一方、メイン処理部431は、メインデータ実行中にホストコンピュータからメモリ書き換え指示を受信するとメモリ書き換えモードへ移行する(ステップS6)。書き換え処理移行部432は、メイン処理部431の処理中にホストコンピュータからメモリ書き換え指示を受信すると、書き換え処理部423の処理へ移行させる。すなわち、本実施形態では、メインデータ実行中に書き換え指示を受信すると、再起動等を行わず直接本ブートセクタのブートデータが読み出され、メモリ書き換えモードAに移行するように構成されている。
(電源ONからメモリ書き換えモードへ移行する処理I)
ステップS4でメインセクタ202のチェックサムが異常であると判断されると、メインセクタ202のメインデータを書き換えるためにメモリ書き換えモードへ移行する(ステップS7)。すなわち、プリンタ1がメインセクタ202の書き換え中に電源OFFされた状態、あるいは仮ブートセクタ204の書き換え中に電源OFFされた状態であり、メインセクタ202、あるいは仮ブートセクタ204及びメインセクタ202の書き換え処理を終了していないので再度メモリ書き換えモードAへ移行する必要がある。
(電源ONからメモリ書き換えモードへ移行する処理II)
まず、プリンタ1を電源ONにすると、初期ブート処理部411がブートセレクタ201に格納されたブートセレクタデータを起動させ(ステップS1)、ブートセレクタデータのうちの初期ブートプログラムによってプリンタ1の初期起動処理を実行する。初期ブートプログラムの実行後、ブートセクタ選択部412が本ブートセクタ203と仮ブートセクタ204のいずれかのブートデータをRAM102にコピーするかを選択するブートセレクタプログラムを起動させる。
ステップS4でメインセクタ202のチェックサムが異常であると判断されると、メインセクタ202のメインデータを書き換えるためにメモリ書き換えモードへ移行する(ステップS7)。すなわち、プリンタ1がメインセクタ202の書き換え中に電源OFFされた状態、あるいは仮ブートセクタ204の書き換え中に電源OFFされた状態であり、メインセクタ202、あるいは仮ブートセクタ204及びメインセクタ202の書き換え処理を終了していないので再度メモリ書き換えモードAへ移行する必要がある。
(電源ONからメモリ書き換えモードへ移行する処理II)
まず、プリンタ1を電源ONにすると、初期ブート処理部411がブートセレクタ201に格納されたブートセレクタデータを起動させ(ステップS1)、ブートセレクタデータのうちの初期ブートプログラムによってプリンタ1の初期起動処理を実行する。初期ブートプログラムの実行後、ブートセクタ選択部412が本ブートセクタ203と仮ブートセクタ204のいずれかのブートデータをRAM102にコピーするかを選択するブートセレクタプログラムを起動させる。
ブートセクタプログラムが起動されると、ブートセクタ選択部412は本ブートセクタ203に格納されたチェックサムを検証する(ステップS2)。本ブートセクタ203のチェックサムが異常であると判断されると、さらにブートセクタ選択部412は仮ブートセクタ204に格納されたチェックサムを検証する(ステップS8)。仮ブートセクタ204に格納されたチェックサムが正常であると判断されると、ブートセクタ選択部412は正常な仮ブートセクタのブートデータをRAM102の所定の領域(ブートデータ起動領域)へコピーした後(ステップS9)、仮ブートセクタ204のブートデータを本ブートセクタ203へコピーする(ステップS10)。
RAM102のブートデータ起動領域へブートデータがコピーされると、実行プログラムはブートセレクタ201に格納されたブートセレクタプログラムから、ブート起動領域へコピーされた仮ブートセクタ204のブートデータが備えたブートプログラムへ移行する。そして、ブート処理部421がブートプログラムを起動させ、プリンタ1を完全に起動させるために必要な各種起動処理が行われる。
正常な仮ブートセクタのブートデータをRAM102の所定の領域(ブートデータ起動領域)へコピーした後、書き換え処理部423は、本ブートセクタのブートデータ及びメインセクタ202内のメインデータの書き換えを行う(ステップS11)。すなわち、プリンタ1が仮ブートセクタ204のブートデータを本ブートセクタ203へコピー中に電源OFFされた状態であり、フラッシュROM101の本ブートセクタ及びメインセクタ202は書き換え処理を終了していないので再度メモリ書き換えモードAへ移行する必要がある。
このように、本実施形態においてプリンタ1は、メモリ書き換え中に電源OFFされ、メモリ書き換え処理を中断されてしまった場合でも、次回電源ON時に、必ずメモリ書き換えモードへ移行するよう設定されている。従って、フラッシュROM101は常に正常に書き換えが行われたデータを保持し実行するのでプリンタ1の誤動作による不具合を生ずることがなくなる。
(電源ONからエラー終了する処理)
ステップS8で仮ブートセクタ204に格納されたチェックサムが異常であると判断されると、プリンタ1はエラー終了する。すなわち、本ブートセクタ203及び仮ブートセクタ204の何れのチェックサムも異常である場合には、正常な起動処理を行うブートデータがフラッシュROM101内に記憶されていない状態である。このように本実施形態においてプリンタ1は、正常な起動処理を行うブートデータがフラッシュROM101内に記憶されていない場合にはエラー終了するように設定されているのでメインデータを実行させることがなく、プリンタ1が間違った動作をすることがない。
ステップS8で仮ブートセクタ204に格納されたチェックサムが異常であると判断されると、プリンタ1はエラー終了する。すなわち、本ブートセクタ203及び仮ブートセクタ204の何れのチェックサムも異常である場合には、正常な起動処理を行うブートデータがフラッシュROM101内に記憶されていない状態である。このように本実施形態においてプリンタ1は、正常な起動処理を行うブートデータがフラッシュROM101内に記憶されていない場合にはエラー終了するように設定されているのでメインデータを実行させることがなく、プリンタ1が間違った動作をすることがない。
なお、本実施形態においてブートセクタ選択部412は初めに本ブートセクタのチェックサムから検証し、チェックサムが正しければ仮ブートセクタのチェックサムを検証することなくメインセクタの処理を実行するよう設定されているが、図6のフローチャートに示すように、初めに仮ブートセクタのチェックサムから検証(ステップS14)し、チェックサムが正しければ本ブートセクタのチェックサムを検証することなく書き換え処理を実行するよう設定することも可能である。
すなわち、メインセクタ202の一部分に上書きすることによって一時的に構成される仮ブートセクタ204のチェックサムが正常である場合には、必ずメインセクタ202のメインデータ(OLD)は書き換えが行われていないので必ずメモリ書き換えモードへ移行しなければならない。従って、図6に示すようにステップS13〜ステップS17の5つのスッテプを経るだけでメモリ書き換えモードAへ移行するのでメモリ書き換えモードへの移行をスピーディに行うことが可能である。
なお、図5に示したように初めに本ブートセクタのチェックサムから検証するフローにおいてはステップS1〜ステップS5の5つのステップを経るだけでメインデータを実行するので通常モードへの移行をスピーディに行うことが可能である。
次に、図7〜図10を用いて本実施形態のプリンタ1における電源ONからメモリ書き換えをモードAを終了するまでの流れを説明する。
図7は本実施形態のプリンタ1のメモリ書き換えモードAの流れを示すフローチャートである。
図7は本実施形態のプリンタ1のメモリ書き換えモードAの流れを示すフローチャートである。
(仮ブートセクタ204の書き換え中に電源OFFされた場合のメモリ書き換えモードA)
プリンタ1の電源ON時にはフラッシュROM101は図8(a)のような構成を有している。すなわち、仮ブートセクタ204の書き換えに失敗し、仮ブートセクタ204が異常状態すなわちメインセクタ202も異常状態であり、本ブートセクタのブートデータは(OLD)の状態である。この状態において、プリンタ1は正常な本ブートセクタ203のブートデータをRAM102のブートデータ起動領域へコピーする(図8(b)図参照)。
プリンタ1の電源ON時にはフラッシュROM101は図8(a)のような構成を有している。すなわち、仮ブートセクタ204の書き換えに失敗し、仮ブートセクタ204が異常状態すなわちメインセクタ202も異常状態であり、本ブートセクタのブートデータは(OLD)の状態である。この状態において、プリンタ1は正常な本ブートセクタ203のブートデータをRAM102のブートデータ起動領域へコピーする(図8(b)図参照)。
ホストコンピュータからメモリ書き換え指示を受信(ブートデータあるいはメインデータ受信)する(ステップS25)。ブートデータ起動領域のブートデータ(OLD)が起動し、プリンタ1はブートデータを受信したと判断すると(ステップS26のYes)、仮ブートセクタ204をホストコンピュータから受信したブートデータ(NEW)に書き換える(ステップS27、(c)図参照)。
次に、プリンタ1はホストコンピュータからメインデータを受信したと判断すると(ステップS26のNo)。ステップS28で、今回のメインデータの受信が初めてか否かを判断する(ステップS28)。前回のメモリ書き換え時にメインデータを受信する前に電源OFFされているので、本ケースにおいては初めてメインデータを受信する場合に該当する(ステップS28のYes)。次に、書き換えられた仮ブートセクタ204のブートデータ(NEW)を本ブートセクタ203へコピーする(ステップS29、(d)図参照)。ステップS30で、メインセクタ202をホストコンピュータから受信したメインデータ(NEW)に書き換える(ステップS30、(e)図参照))。
(仮ブートセクタ204のブートデータを本ブートセクタ203へコピー中に電源OFFされた場合のメモリ書き換えモードA)
プリンタ1の電源ON時にはフラッシュROM101は図9(f)のような構成を有している。すなわち、仮ブートセクタ204のブートデータを本ブートセクタ203へコピーするのに失敗し、本ブートセクタ203は異常状態である。この状態において、プリンタ1は正常な仮ブートセクタ204のブートデータ(NEW)をRAM102のブートデータ起動領域へコピーする((g)図参照)。
プリンタ1の電源ON時にはフラッシュROM101は図9(f)のような構成を有している。すなわち、仮ブートセクタ204のブートデータを本ブートセクタ203へコピーするのに失敗し、本ブートセクタ203は異常状態である。この状態において、プリンタ1は正常な仮ブートセクタ204のブートデータ(NEW)をRAM102のブートデータ起動領域へコピーする((g)図参照)。
ホストコンピュータからメモリ書き換え指示を受信(ブートデータあるいはメインデータ送信)する(ステップS25)。ブートデータ起動領域のブートデータ(NEW)が起動し、プリンタ1はメインデータを受信したと判断すると(ステップS26のNo)、ステップS28で、今回のメインデータの受信が初めてか否かを判断する(ステップS28)。前回のメモリ書き換え時にメインデータを受信する前に電源OFFされているので、本ケースにおいても初めてメインデータを受信する場合に該当する(ステップS28のYes)。次に、書き換えられた仮ブートセクタ204のブートデータ(NEW)を本ブートセクタ203へコピーする(ステップS29、(h)図参照)。ステップS30で、メインセクタ202をホストコンピュータから受信したメインデータ(NEW)に書き換える(ステップS30、(i)図参照))。
(メインセクタ202の書き換え中に電源OFFされた場合のメモリ書き換えモードA)
プリンタ1の電源ON時にはフラッシュROM101は図10(j)のような構成を有している。すなわち、メインセクタ202の書き換え失敗し、メインセクタ202のメインデータは異常状態である。この状態において、プリンタ1は正常な本ブートセクタ203のブートデータ(NEW)をRAM102のブートデータ起動領域へコピーする((k)図参照)。
プリンタ1の電源ON時にはフラッシュROM101は図10(j)のような構成を有している。すなわち、メインセクタ202の書き換え失敗し、メインセクタ202のメインデータは異常状態である。この状態において、プリンタ1は正常な本ブートセクタ203のブートデータ(NEW)をRAM102のブートデータ起動領域へコピーする((k)図参照)。
ホストコンピュータからメモリ書き換え指示を受信(ブートデータあるいはメインデータ送信)する(ステップS25)。ブートデータ起動領域のブートデータ(NEW)が起動し、プリンタ1はメインデータを受信したと判断すると(ステップS26のNo)、ステップS28で、今回のメインデータの受信が初めてか否かを判断する(ステップS28)。前回のメモリ書き換え時においてメインデータを受信したものの、メインデータ書き換え時に電源OFFされているので、本ケースにおいてはメインデータの受信は2回目あるいは複数回目である(ステップS28のNo)。ステップS30で、メインセクタ202をホストコンピュータから受信したメインデータ(NEW)に書き換える(ステップS30、(l)図参照))。
なお、本実施形態においてブートデータ起動領域は、正常なブートデータをコピーされた後ブートデータの記憶領域として専有されていたが、他のデータの記憶領域として開放してもよい。例えば、ブートデータが有するブートプログラム、メイン移行プログラム及び書き換えプログラムのうち書き換えプログラムのみをRAM102に残し、他のプログラムは他のデータによって上書き可能にしてもよい。このように、RAM102の記憶領域を他のデータの記憶領域として開放すればプリンタ1のデータ処理性能をさらに向上させることが可能である。また、書き換えプログラムのみをブートデータ起動領域あるいはRAM102内の他の領域に残しておけば、メインデータ実行中に強制書き換えモードへ移行する場合でもRAM102に再びブートデータをコピーする必要がないのでスピーディにメモリ書き換えモードへ移行することが可能である。
さらに、本実施形態において仮ブートセクタ204をメインセクタ202内に設定したが、メインセクタ202以外の他のフラッシュROM101領域内に設定することも可能である。
以上説明したように、本実施形態によれば、フラッシュROM101の書き換え処理時のみ、仮ブートセクタ204をメインセクタ202内の所定の領域に設けるよう設定している。すなわち、フラッシュROM101の書き換え処理時において仮ブートセクタ204とメインセクタ202は共有されるように設定されている。従って、メインセクタ202を新しいメインデータに書き換えることによって仮ブートセクタは上書きされて無くなるのでフラッシュROM101内に複数のブートセクタを常設することがなく、フラッシュROM101のメモリ領域をより有効に使用することが可能である。
また、本実施形態によれば、CPU103は、フラッシュROM101内に格納されている正常なブートデータをRAM102に複製した後、RAM102に複製されたブートデータを実行することによってフラッシュROM101の書き換えを行う。すなわち、起動中のブートデータはフラッシュROM101上に存在しないので、起動中のブートデータによって起動セクタ自体を書き換えるといった誤った動作を生じる虞が無い。
また、本実施形態によれば、ホストコンピュータからのメモリ書き換え指示によって仮ブートセクタ204をブートデータ(NEW)に書き換えた後、本ブートセクタにブートデータ(NEW)をコピーするよう設定されている。従って、ブートデータ書き込み中の電源OFFによる書き換えエラーによって仮ブートセクタ204の書き換えあるいは本ブートセクタ203へのコピーに失敗した場合でも、何れかのブートセクタに正常なブートデータが存在しているので次回電源ON時において、正常なブートデータを実行させることが可能である。
また、本実施形態によれば、本ブートセクタ203にブートデータ(NEW)をコピーした後、ホストコンピュータからのメモリ書き換え指示に応じてメインセクタ202をメインデータ(NEW)に書き換えるよう設定されている。従って、必ず本ブートセクタ203及び仮ブートセクタ204がともに新しいブートデータ(NEW)に書き換えられた後にメインセクタ202をメインデータ(NEW)に書き換えるので、書き換え対象セクタのバージョンを常にそろえることができセクタごとのバージョン管理を行う必要がなくなる。
また、本実施形態によれば、CPU103のブートセクタ選択部412が本ブートセクタ203に格納されたチェックサムが正常であると判断し本ブートセクタに格納されたブートデータをRAM102内にコピーした後、メインセクタ202に格納されたチェックサムが正常であると判断した場合に、メインセクタ202に格納されたメインデータを実行するように設定されている。従って、仮ブートセクタ204のチェックサムを検証することなくメインデータを実行することができるので通常モードへの移行をスピーディに行うことが可能である。
また、本実施形態によれば、CPU103のメイン移行処理部422がメインセクタ202に格納されたチェックサムが異常であると判断した場合に、フラッシュROM101の書き換え処理を実行するよう設定されている。従って、メインセクタ202のメインデータ書き換え中に電源OFFされても、次回電源ONの際には必ず書き換え処理を実行しメインデータを書き換えるので常に正常なメインデータを実行することができる。
また、本実施形態によれば、CPU103のブートセクタ選択部412が仮ブートセクタ204に格納されたチェックサムが正常であると判断した場合に、仮ブートセクタ204に格納されたブートデータをRAM102内にコピーし、フラッシュROM101の書き換え処理を実行するよう設定されている。従って、仮ブートセクタ204のブートデータを本ブートセクタ203へコピー中に電源OFFされても、次回電源ONの際に書き換え処理を実行し再度仮ブートセクタ204のブートデータを本ブートセクタ203へコピーするので、常に本ブートセクタ203に正常なブートデータを保持することが可能である。
また、本実施形態によれば、CPU103のブートセクタ選択部412が本ブートセクタ203に格納されたチェックサムが異常であると判断し、かつ仮ブートセクタ204に格納されたチェックサムが異常であると判断した場合に、エラー終了するよう設定されている。従って、正常に動作するブートデータが存在しない場合にはメインデータを実行させることがないので、プリンタ1の誤動作によって不具合を生ずる虞がない。
1・・・プリンタ、3・・・下部ケース、5・・・上部ケース、7・・・装置ケース、9・・・用紙カセット、11・・・排紙トレイ、13・・・表示部、14・・・操作部、101・・・フラッシュROM、102・・・RAM、201・・・ブートセレクタ、202・・・メインセクタ、203・・・本ブートセクタ、204・・・仮ブートセクタ、103・・・CPU、410・・・初期ブート部、420・・・メインブート部、430・・・メイン部、412・・・ブートセクタ選択部、423・・・書き換え処理部、431・・・メイン処理部
Claims (14)
- CPUと、RAMと、書き換え可能なフラッシュROMと、を備え、ホストコンピュータからのメモリ書き換え指示によって前記フラッシュROMを書き換える情報処理装置であって、
前記フラッシュROMは、ブートセレクタデータを格納したブートセレクタと、前記ブートセレクタデータによって起動されるブートデータを格納した第1ブートセクタと、前記ブートデータによって起動されるメインデータを格納したメインセクタと、を有し、
前記CPUは、前記フラッシュROM内に格納されている正常なブートデータを前記RAMに複製するとともに、
前記RAMに複製された前記ブートデータを実行することにより、前記フラッシュROM内の前記第1ブートセクタとは別の第2ブートセクタに前記ホストコンピュータから受信する新しいブートデータを書き込み、そして前記第2ブートセクタに書き込まれた前記新しいブートデータを前記第1ブートセクタに複製することを特徴とする情報処理装置。 - 前記第2ブートセクタは、前記メインセクタ内の所定の領域であることを特徴とする請求項1に記載の情報処理装置。
- 前記CPUは、前記第2ブートセクタに書き込まれた前記新しいブートデータを前記第1ブートセクタに複製した後、前記メインセクタに新しいメインデータを書き込むことを特徴とする請求項1または請求項2に記載の情報処理装置。
- 前記メインセクタ、前記第1ブートセクタ及び前記第2ブートセクタには、前記メインセクタに格納されたメインデータ、前記第1ブートセクタに格納されたブートデータ及び前記第2ブートセクタに格納されたブートデータがそれぞれ正しいか否かを検証するチェックサムが格納され、
前記CPUが前記ブートセレクタデータを実行して前記第1ブートセクタに格納されたチェックサムが正常であると判断した後に、前記第1ブートセクタに格納されたブートデータを前記RAMに複製し、
前記CPUが前記RAM内の前記ブートデータを実行して前記メインセクタに格納されたチェックサムが正常であると判断した後に、前記メインセクタに格納されたメインデータを実行することを特徴とする請求項1〜3の何れかに記載の情報処理装置。 - 前記CPUは、前記メインセクタに格納されたチェックサムが異常であると判断した場合、前記フラッシュROMの書き換え処理を実行することを特徴とする請求項1〜4の何れかに記載の情報処理装置。
- 前記CPUは、前記フラッシュROM内の前記ブートセレクタデータを実行することにより、前記第2ブートセクタに格納されたチェックサムが正常であると判断した場合に、前記第2ブートセクタに格納されたブートデータを前記RAM内に複製し、前記フラッシュROMの書き換え処理を実行することを特徴とする請求項1〜5の何れかに記載の情報処理装置。
- 前記CPUは、前記フラッシュROM内の前記ブートセレクタデータを実行することにより、前記第1ブートセクタに格納されたチェックサムが異常であると判断し、かつ前記第2ブートセクタに格納されたチェックサムが異常であると判断した場合に、エラー処理を実行することを特徴とする請求項1〜6の何れかに記載の情報処理装置。
- CPUと、RAMと、書き換え可能なフラッシュROMと、を備え、ホストコンピュータからのメモリ書き換え指示によって前記フラッシュROMを書き換える情報処理装置の制御方法であって、
前記フラッシュROMは、ブートセレクタデータを格納したブートセレクタと、前記ブートセレクタデータによって起動されるブートデータを格納した第1ブートセクタと、前記ブートデータによって起動されるメインデータを格納したメインセクタと、を有し、
前記フラッシュROM内に格納されている正常なブートデータを前記RAMに複製する第1ステップと、
前記RAMに複製された前記ブートデータを実行することにより、前記フラッシュROM内の前記第1ブートセクタとは別の第2ブートセクタに前記ホストコンピュータから受信する新しいブートデータを書き込む第2ステップと、
前記第2ブートセクタに書き込まれた前記新しいブートデータを前記第1ブートセクタに複製する第3ステップと、を有すことを特徴とする情報処理装置の制御方法。 - 前記第2ブートセクタは、前記メインセクタ内の所定の領域であることを特徴とする請求項8に記載の情報処理装置の制御方法。
- 前記第3ステップの後、前記メインセクタに新しいメインデータを書き込む第4ステップを有することを特徴とする請求項8または請求項9に記載の情報処理装置の制御方法。
- 前記メインセクタ、前記第1ブートセクタ及び前記第2ブートセクタには、前記メインセクタに格納されたメインデータ、前記第1ブートセクタに格納されたブートデータ及び前記第2ブートセクタに格納されたブートデータがそれぞれ正しいか否かを検証するチェックサムが格納され、
前記第1ブートセクタに格納されたチェックサムを検証する第5ステップと、
前記第1ブートセクタに格納されたブートデータを前記RAMに複製する第6ステップと、
前記メインセクタに格納されたチェックサムを検証する第7ステップとを有し、
前記第5ステップにおいて前記第1ブートセクタに格納されたチェックサムが正常であり、かつ第7ステップにおいて前記メインセクタに格納されたチェックサムが正常である場合にメインデータを実行することを特徴とする請求項8〜10の何れかに記載の情報処理装置の制御方法。 - 前記第7ステップにおいて前記メインセクタに格納されたチェックサムが異常である場合に、前記フラッシュROMの書き換え処理を実行することを特徴とする請求項11に記載の情報処理装置の制御方法。
- 前記第2ブートセクタに格納されたチェックサムを検証する第8ステップを有し、前記第8ステップにおいて前記チェックサムが正常である場合に、前記第2ブートセクタに格納されたブートデータを前記RAM内に複製し、前記フラッシュROMの書き換え処理を実行することを特徴とする請求項8〜12の何れかに記載の情報処理装置の制御方法。
- 前記第5ステップにおいて前記第1ブートセクタに格納されたチェックサムが異常であり、かつ前記第8ステップにおいて前記第2ブートセクタに格納されたチェックサムが異常である場合に、エラー処理を実行することを特徴とする請求項11〜13の何れかに記載の情報処理装置の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005203686A JP2007025821A (ja) | 2005-07-12 | 2005-07-12 | 情報処理装置及び情報処理装置の制御方法 |
US11/444,952 US7634648B2 (en) | 2005-07-12 | 2006-05-31 | Data processing apparatus and control method for a data processing apparatus that temporarily provides a plurality of boot sectors in flash ROM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005203686A JP2007025821A (ja) | 2005-07-12 | 2005-07-12 | 情報処理装置及び情報処理装置の制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007025821A true JP2007025821A (ja) | 2007-02-01 |
Family
ID=37662954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005203686A Pending JP2007025821A (ja) | 2005-07-12 | 2005-07-12 | 情報処理装置及び情報処理装置の制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7634648B2 (ja) |
JP (1) | JP2007025821A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009116195A1 (en) * | 2008-03-21 | 2009-09-24 | Kabushiki Kaisha Toshiba | Data updating method, memory system and memory device |
JP2011245817A (ja) * | 2010-05-31 | 2011-12-08 | Fujitsu Component Ltd | プリンタおよびプリンタの制御方法 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7962734B2 (en) * | 2006-09-20 | 2011-06-14 | Hewlett-Packard Development Company, L.P. | Method of restarting a computer platform |
US20090172378A1 (en) * | 2007-12-28 | 2009-07-02 | Kazmierczak Gregory J | Method and system for using a trusted disk drive and alternate master boot record for integrity services during the boot of a computing platform |
KR101620349B1 (ko) * | 2009-12-30 | 2016-05-23 | 삼성전자주식회사 | 부팅가능한 휘발성 메모리 장치와 그를 구비한 메모리 모듈 및 프로세싱 시스템, 및 그를 이용한 프로세싱 시스템 부팅 방법 |
US8996851B2 (en) * | 2010-08-10 | 2015-03-31 | Sandisk Il Ltd. | Host device and method for securely booting the host device with operating system code loaded from a storage device |
CN102129401A (zh) * | 2011-03-15 | 2011-07-20 | 合肥华云通信技术有限公司 | 一种BootROM备份方法与装置 |
US8782389B2 (en) | 2011-07-19 | 2014-07-15 | Sandisk Technologies Inc. | Storage device and method for updating a shadow master boot record |
KR20130029995A (ko) * | 2011-09-16 | 2013-03-26 | 삼성전자주식회사 | 화상형성장치 및 펌웨어 업그레이드 방법 |
KR20130081459A (ko) * | 2012-01-09 | 2013-07-17 | 삼성전자주식회사 | 휴대단말기의 pre―load 어플리케이션 탑재를 위한 메모리 영역구분 장치 |
JP5894495B2 (ja) * | 2012-04-27 | 2016-03-30 | キヤノン株式会社 | 情報処理装置、情報処理装置におけるファームウエアの更新方法およびプログラム |
WO2014019117A1 (en) * | 2012-07-30 | 2014-02-06 | Hewlett-Packard Development Company, L. P. | Booting printer |
US10467016B2 (en) * | 2016-06-30 | 2019-11-05 | General Electric Company | Managing an image boot |
JP7152920B2 (ja) * | 2018-09-28 | 2022-10-13 | キヤノン株式会社 | 情報処理装置とその制御方法、及びプログラム |
US11249767B2 (en) * | 2019-02-05 | 2022-02-15 | Dell Products L.P. | Boot assist zero overhead flash extended file system |
CN112596672B (zh) * | 2020-12-18 | 2022-08-02 | 珠海格力电器股份有限公司 | 主控芯片的存储处理方法及装置、处理器和电子设备 |
CN115774526A (zh) * | 2022-07-20 | 2023-03-10 | 深圳市星卡软件技术开发有限公司 | 汽车诊断设备打印预热处理方法、装置、设备及介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1097427A (ja) | 1996-09-20 | 1998-04-14 | Fujitsu Ltd | プログラム転送システム |
JPH10149282A (ja) | 1996-11-20 | 1998-06-02 | Denso Corp | 電子装置のメモリ書換システム |
US6308265B1 (en) * | 1998-09-30 | 2001-10-23 | Phoenix Technologies Ltd. | Protection of boot block code while allowing write accesses to the boot block |
JP2001209543A (ja) * | 2000-01-28 | 2001-08-03 | Nec Ic Microcomput Syst Ltd | フラッシュ・マイコンにおけるプログラム書き換え方法 |
JP2002007152A (ja) | 2000-06-21 | 2002-01-11 | Canon Inc | ダウンロード方法および装置 |
JP2002222093A (ja) | 2001-01-26 | 2002-08-09 | Fuji Xerox Co Ltd | メモリの初期化方法 |
US6990577B2 (en) * | 2001-08-10 | 2006-01-24 | Intel Corporation | Updating a BIOS image by replacing a portion of the BIOS image with a portion of another BIOS image |
JP2003157204A (ja) | 2001-11-20 | 2003-05-30 | Canon Inc | データ書き換え装置及びデータ書き換え方法並びに記憶媒体 |
JP2004013536A (ja) | 2002-06-06 | 2004-01-15 | Seiko Epson Corp | フラッシュメモリ書き換え制御システム、フラッシュメモリ書き換え制御方法、フラッシュメモリ書き換え制御方法の各工程を実行させるプログラムおよび情報記録媒体 |
EP1372068A3 (en) * | 2002-06-11 | 2006-02-08 | Seiko Epson Corporation | System, method and program for rewriting a flash memory |
JP4062429B2 (ja) | 2002-08-30 | 2008-03-19 | セイコーエプソン株式会社 | メモリ書き換え制御方法及びメモリ書き換え制御方法の各工程を実行させるプログラム |
JP2004192329A (ja) | 2002-12-11 | 2004-07-08 | Fuji Photo Film Co Ltd | プログラム書換え方法および端末装置 |
US7318151B1 (en) * | 2004-11-04 | 2008-01-08 | Network Appliance, Inc. | Method and system for firmware management |
-
2005
- 2005-07-12 JP JP2005203686A patent/JP2007025821A/ja active Pending
-
2006
- 2006-05-31 US US11/444,952 patent/US7634648B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009116195A1 (en) * | 2008-03-21 | 2009-09-24 | Kabushiki Kaisha Toshiba | Data updating method, memory system and memory device |
US8527730B2 (en) | 2008-03-21 | 2013-09-03 | Kabushiki Kaisha Toshiba | Data updating method, memory system and memory device |
JP2011245817A (ja) * | 2010-05-31 | 2011-12-08 | Fujitsu Component Ltd | プリンタおよびプリンタの制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US7634648B2 (en) | 2009-12-15 |
US20070016763A1 (en) | 2007-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007025821A (ja) | 情報処理装置及び情報処理装置の制御方法 | |
US7558949B2 (en) | Data processing apparatus and control method for verifying that version codes in selected boot sector and main sector match | |
US6622246B1 (en) | Method and apparatus for booting and upgrading firmware | |
EP1899814B1 (en) | Firmware update for consumer electronic device | |
TWI511032B (zh) | 包括細微更新記憶體之可更換印表機構件 | |
EP1372068A2 (en) | System, method and program for rewriting a flash memory | |
JP2002175194A (ja) | プログラムダウンロードシステム、プログラムダウンロード装置、画像形成装置、プログラムダウンロード方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP2005157528A (ja) | メモリ装置 | |
KR20070044268A (ko) | 메인 보드의 부팅 처리 방법 및 그 장치 | |
JP4238930B2 (ja) | メモリ書き換え制御システム。 | |
JP4062429B2 (ja) | メモリ書き換え制御方法及びメモリ書き換え制御方法の各工程を実行させるプログラム | |
JP5803598B2 (ja) | 画像形成装置 | |
JP2004341783A (ja) | データ記憶方法、及びデータ記憶装置 | |
JP2001344156A (ja) | フラッシュメモリを有する装置およびデータの書き換え方法 | |
JP2013125405A (ja) | ファームウェア書換方法およびファームウェア、ならびに電子機器 | |
JP2003114807A (ja) | 電子機器及び本体制御プログラムの書き換え方法 | |
JP4062421B2 (ja) | メモリ書き換え制御方法およびメモリ書き換え制御方法の各工程を実行させるプログラム | |
JP2009238071A (ja) | 組込システム | |
JPH05274157A (ja) | 画像形成装置 | |
JP6638323B2 (ja) | 印刷装置、及び印刷装置の制御方法 | |
JP2005293476A (ja) | フラッシュメモリ書き換えシステム、フラッシュメモリ書き換え方法及びプログラム | |
JP2005085121A (ja) | フラッシュメモリのデータ更新方法、データ更新プログラム、情報処理装置、及び情報処理システム | |
JP2005288943A (ja) | プリンタ | |
JP5290880B2 (ja) | 電子装置および画像形成装置 | |
JPH11282689A (ja) | 画像形成装置及びプログラム記憶媒体 |