(57)【要約】【課題】破壊又は消去されると画像形成装置を制御不能にする特定のプログラムを、書き換える場合において、該プログラムを保護する技術を提供する。【解決手段】画像形成装置１００は、複数のパーティションに分けられるフラッシュメモリ等の記憶媒体１０２を備える。いずれかのパーティションに、上記特定のプログラムを格納している。切り替え処理部１１０は、アクセスするパーティションを切り替える。書き替え処理部１１１は、第１のパーティション１０３に格納されている特定のプログラムを、切り替え処理部１１１の切り替えによって、第１のパーティション１０３とは異なる第２のパーティション１０４に複製してから、アップデートプログラムを第１のパーティション１０３に格納することで、上記特定のプログラムを書き替える。【選択図】図１
2008225972.tif 000002
【特許請求の範囲】
【請求項１】
アップデートプログラムを保有するホストコンピュータが接続されている画像形成装置であって、
複数のパーティションから構成され、該いずれかのパーティションに、当該画像形成装置を制御する特定のプログラムが格納されている記憶媒体を備え、
前記特定のプログラムを書き替える指示を受け付ける指示受付部と、
前記複数のパーティションのいずれのパーティションにアクセスするか切り替える切り替え処理部と、
前記指示を受け付けたときに、前記いずれかのパーティションに格納されている特定のプログラムを、前記切り替え処理部の切り替えによって、該特定のプログラムが格納されている第１のパーティションとは異なる第２のパーティションに複製してから、前記ホストコンピュータからアップデートプログラムを取得し、取得したアップデートプログラムを前記第１のパーティションに格納する書き替え処理部と、
を有することを特徴とする画像形成装置。
【請求項２】
請求項１に記載される画像形成装置であって、
前記特定のプログラムは、当該画像形成装置を起動する起動プログラムを含み、
前記画像形成装置は、前記起動プログラムの処理を開始してから計時するタイマを、備え、
前記切り替え処理部は、
前記起動プログラムの処理が終了する前に、前記タイマから、前記起動プログラムの処理に必要な所定時間が経過したことを通知されたときに、切り替え処理を行う、
ことを特徴とする画像形成装置。
【請求項３】
請求項１又は２に記載される画像形成装置であって、
前記画像形成装置は、複数のパーティションのうち、１のパーティションを特定するデータを格納するレジスタを備え、
前記切り替え処理部は、前記レジスタを参照して、前記切り替えを行う、
ことを特徴とする画像形成装置。
【請求項４】
請求項１乃至３のいずれか１項に記載される画像形成装置であって、
前記画像形成装置は、印刷処理を行う印刷処理部を備え、
前記特定のプログラムは、印刷処理を行うためのプログラムを含む、
ことを特徴とする画像形成装置。
【請求項５】
前記記憶媒体は、フラッシュメモリである、
ことを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置に係り、特に、特定のプログラムを保護する技術に関する。
【背景技術】
【０００２】
近年、フラッシュメモリ等のデータを書き換え可能な記憶媒体は、コストが低下してきたため、プリンタ等の画像形成装置におけるプリントコントローラにも多く使用されるようになってきている。
【０００３】
フラッシュメモリには、例えば、ブートプログラム、メモリ内のデータを書き換えるための書き換えプログラム、各種周辺機器とデータの送受信を行うためのＩ／Ｆ（インタフェース）制御プログラム、印刷制御を行うためのプログラム、等が格納される。
【０００４】
これらプログラムは、機能の拡張、セキュリティ対策としてのバージョンアップ、ユーザカスタマイズ、等に応じて、書き換えが求められるようになってきている。例えば、特許文献１には、プリンタ装置の制御プログラムを容易に更新する技術について記載されている。
【０００５】
【特許文献１】特開平７−３１４７９８号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、ブートプログラム、書き換えプログラム、Ｉ／Ｆプログラム、といった特定のプログラムは、破壊又は消去されると、画像形成装置を制御することができなくなる。従って、これらのプログラムの書き換え処理時には、特に、該プログラムの破壊又は消去が発生しないようにしなければならない。
【０００７】
本発明は、破壊又は消去されると画像形成装置を制御不能にする特定のプログラムを、書き換える場合において、該プログラムを保護するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明は、アップデートプログラムを保有するホストコンピュータが接続されている画像形成装置であって、当該画像形成装置は、複数のパーティションから構成され、該いずれかのパーティションに、当該画像形成装置を制御する特定のプログラムが格納されている記憶媒体を備え、前記特定のプログラムを書き替える指示を受け付ける指示受付部と、前記複数のパーティションのいずれのパーティションにアクセスするか切り替える切り替え処理部と、前記指示を受け付けたときに、前記いずれかのパーティションに格納されている特定のプログラムを、前記切り替え処理部の切り替えによって、該特定のプログラムが格納されている第１のパーティションとは異なる第２のパーティションに複製してから、前記ホストコンピュータからアップデートプログラムを取得し、取得したアップデートプログラムを前記第１のパーティションに格納する書き替え処理部と、を有することを特徴とする。
【発明の効果】
【０００９】
本発明の画像形成装置によれば、破壊又は消去されると当該画像形成装置を制御不能にする特定のプログラムを、書き換える場合において、該プログラムを保護することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の最良の実施の形態を、図面を参照して説明する。
【００１１】
本発明の実施形態に適用される画像形成装置１００のハードウェア構成の一例を、図１のブロック図に示す。
【００１２】
画像形成装置１００には、ホストＰＣ２００が接続される。画像形成装置１００は、ホストＰＣ２００から送られてきた画像データに基づいて、印刷データを生成する。画像形成装置１００は、生成した印刷データを、後述する印刷エンジン３００を用いて印刷する  また、画像形成装置１００は、破壊又は消去されると画像形成装置１００を制御不能にする特定のプログラム（以下では、メインプログラムとよぶ）の書き替えを実行する。ここで、メインプログラムは、例えば、メインプログラム自体を書き替えるための書き替えプログラム、画像形成装置１００のシステムを起動／再起動するための起動プログラム、ホストＰＣ２００から各種プログラムを受信するためのＩ／Ｆ制御プログラム、である。
【００１３】
また、画像形成装置１００は、メインプログラムを書き替えの際に、メインプログラムを保護する。
【００１４】
なお、画像形成装置１００は、書き替え用の新しいメインプログラムを、ホストＰＣ２００等から受け付けることができる。書き替え用の新しいメインプログラムは、例えば、バグなどを修正したプログラムであったり、機能を拡張したプログラムであったり、セキュリティを改善したプログラム、等でよい。ここでのメインプログラムの書き替えの目的は、所謂、メインプログラムのバージョンアップである。従って、画像形成装置１００は、バージョンアップしたメインプログラムを、既に画像形成装置１００に組み込まれているメインプログラムに上書きすることで、メインプログラムを書き替える。
【００１５】
ホストＰＣ２００は、パーソナルコンピュータ等の一般的な情報処理装置である。ホストＰＣ２００は、例えば、生成した印刷対象の画像データに、印刷を指示するコマンドを付加して、画像形成装置１００に送信する。また、ホストＰＣ２００は、メインプログラム等の各種プログラムを、画像形成装置１００に送信する。なお、画像形成装置１００には、図１において、１台のホストＰＣ２００が接続されているように記載しているが、ネットワーク等を介して複数のホストＰＣ２００が接続されてもよい。
【００１６】
上記のような画像形成装置１００は、制御部１０１と、記憶媒体１０２と、Ｉ／Ｆ（インタフェース）部１０５と、印刷エンジン１０６と、入力部１０７と、を有する。
【００１７】
記憶媒体１０２は、フラッシュメモリ等のデータを書き替え可能なメモリである。記憶媒体１０２には、例えば、上述したメインプログラムと、画像形成装置１００における画像処理及び印刷処理のためのプログラム、等が格納される。
【００１８】
また、記憶媒体１０２には、図２に示すように、セクタアドレスが割り当てられる。記憶媒体１０２における各セクタへのアクセスは、各セクタアドレスを指定して行われる。
【００１９】
さらに、記憶媒体１０２は、ブロックＡ１０３、ブロックＢ１０４、の２つのパーティションに区切られている。ここで、２つのパーティションは、記憶媒体１０２をパーティション単位で電気的に分割した物理パーティションでもよいし、ソフトウェア的に分割した論理パーティションでもよい。ここで、セクタアドレスは、例えば、「０１０１００１１１１１」といった１１ビットの数字列とする。また、例えば、ブロックＡ１０３には、上位１ビットが０のアドレスが割り当てられ、ブロックＢ１０４には、上位１ビットが１のアドレスが割り当てられるようにする。
【００２０】
記憶媒体１０２には、少なくともブロックＡ１０３かブロックＢ１０４のどちらかのパーティションに、上述したメインプログラムが格納される。このことについての具体的な説明は、後述する。
【００２１】
なお、メインプログラムは、書き替えプログラム、起動プログラム、Ｉ／Ｆ制御プログラム、を含むことは上述したが、メインプログラムには、画像形成装置１００が、ブロックＡ１０３とブロックＢ１０４のどちらから起動プログラムを読み込んで起動したかを特定するための起動ブロック特定用データが含まれている。また、メインプログラムには、ブロックＡ１０３とブロックＢ１０４の先頭アドレス（例えば、図２に示すアドレスＡ１とアドレスＢ１）を特定するための先頭アドレス特定用データも含まれている。
【００２２】
さらに、記憶媒体１０２には、画像形成装置１００が印刷データを生成するためのプログラムや、印刷処理を行うためのプログラム、等の各種プログラムが格納される。
【００２３】
また、各ブロック（ブロックＡ１０３、ブロックＢ）の最終アドレスが割り当てられているセクタには、各ブロックに記憶されているデータのチェックサム値が格納される。
【００２４】
図１に戻って、Ｉ／Ｆ部１０５は、ホストＰＣ２００の接続を受け付け、ホストＰＣ２００と各種データを送受信するインタフェースである。また、Ｉ／Ｆ部１０５は、後述する入力部１０７の接続を受け付け、入力部１０７からの各種データを受信するインタフェースでもある。例えば、Ｉ／Ｆ部１０５は、ＵＳＢ規格に準拠したＵＳＢインタフェースでよい。ただし、Ｉ／Ｆ部１０５は、ＵＳＢインタフェースに限定されず、例えば、ＬＡＮ等のネットワークに接続するためのネットワークインタフェースであってもよい。
【００２５】
入力部１０７は、ユーザからの指示を受け付けるための操作パネルである。ここで、入力部１０７は、ユーザから、起動・再起動の指示、メインプログラムの書き替えの指示、印刷の指示、各種機能の設定の指示、等を受け付ける。具体的には、入力部１０７は、１又は複数の操作ボタン等を有し、ユーザによる該ボタンの操作に基づいて、対応する指示信号を生成する。入力部１０７は、生成した指示信号を、Ｉ／Ｆ部１０５を介して、制御部１０１に供給する。
【００２６】
印刷エンジン１０６は、制御部１０１から入力されたシリアルデータ（印刷データ）に基づいて印刷用紙に印刷を行う。印刷エンジン１０６は、例えば、レーザプリンタであれば、レーザ照射機構、感光体ドラム、紙送り機構等により構成される。
【００２７】
制御部１０１は、記憶媒体１０２に記憶されている各種プログラムを読み出し、記憶媒体１０２の起動ブロックを切り替える切り替え処理、記憶媒体１０２に記憶されている各種プログラムを書き替える書き替え処理、画像形成装置１００のシステムを起動させる起動処理、等を行う。また、制御部１０１は、Ｉ／Ｆ部１０５を介して、ホストＰＣ２００および入力部１０７から供給された入力データを受け付ける処理を行う。さらに、制御部１０１は、ホストＰＣ２００から供給された画像データに基づいて印刷データを生成する。制御部１０１は、生成した印刷データを印刷エンジン１０６に印刷させる。
【００２８】
上記処理を行う制御部１０１は、図１に示すように、切り替え処理部１１０と、書き替え処理部１１１と、起動処理部１１２と、Ｉ／Ｆ制御部１１３と、画像処理部１１４と、印刷制御部１１５と、を有する。
【００２９】
切り替え処理部１１０は、記憶媒体１０２の起動ブロックを切り替える処理を行う。例えば、切り替え処理部１１０は、図３に示すように、アドレス切り替え処理部３００、アドレス切り替えレジスタ３０１、タイマ３０２、デコーダ３０３、ＯＲ回路３０４、を有する。
【００３０】
デコーダ３０３は、制御部１０１が記憶媒体１０２にアクセスする場合（例えば、書き替え処理部１１１が記憶媒体１０２に格納されているデータの書き替えを行う場合）に、制御部１０１がアクセスする記憶媒体１０２上のアドレスを生成する。例えば、制御部１０１が記憶媒体１０２に格納されているメインプログラムを書き替える場合、デコーダ３０３は、メインプログラムが格納されているアドレスＡ１〜Ａ１２を生成する。このとき、デコーダ３０３は、生成したアドレスＡ１〜Ａ１２を、アドレス切り替え処理部３００に供給する。
【００３１】
アドレス切り替え処理部３００は、後述するアドレス切り替えレジスタ３０１に格納されているデータを参照して、デコーダ３０３から供給されたアドレスを変換するか否かを決定する回路である。変換する場合は、アドレス切り替え処理部３００は、デコーダ３０３から供給されたアドレスを変換して、変換したアドレスを記憶媒体１０２に供給する。変換しない場合は、アドレス切り替え処理部３００は、デコーダ３０３から供給されたアドレスを変換せずに、記憶媒体１０２に供給する。ここで、アドレスの変換は、例えば、デコーダ３０３から供給されたアドレス（１１ビットの数字列）の上位１ビットを反転させる。これによって、アドレス切り替え処理部３００は、デコーダ３０３から供給されたアドレスＡ１〜Ａ１２を、アドレスＢ１〜Ｂ１２に変換する。加えて、アドレス切り替え処理部３００は、デコーダ３０３から供給されたアドレスＢ１〜Ｂ１２を、アドレスＡ１〜Ａ１２に変換することもできる。
【００３２】
アドレス切り替えレジスタ３０１は、制御部１０１がアクセスする記憶媒体１０２のブロックを特定するデータが格納される。例えば、このデータは、「０」、「１」等のデータでよい。ここで、例えば、アドレス切り替えレジスタ３０１に格納されているデータが「０」であるときは、制御部１０１は記憶媒体１０２のブロックＡ１０３にアクセスし、「１」であるときは、ブロックＢ１０４にアクセスする。
【００３３】
また、アドレス切り替えレジスタ３０１に格納されているデータは、書き替え可能とすする。例えば、制御部１０１は、アドレス切り替えレジスタ３０１のデータを変更（ライト）することができる。また、タイマ３０２からの通知に基づいて、アドレス切り替えレジスタ３０１に格納されているデータは変更される。
【００３４】
さらに、制御部１０１は、アドレス切り替えレジスタ３０１のデータを参照（リード）することで、その時点における起動ブロックを特定することができる。
【００３５】
タイマ３０２は、記憶媒体１０２の起動ブロックを切り替えるタイミングを決定する。例えば、タイマ３０２は、起動処理部１１２からの通知を受けて、後述するＣＰＵから供給される一定周期のクロック信号（図示せず）に基づくカウント動作を開始する。タイマ３０２は、カウント動作を停止させる通知を受けずに、所定時間（例えば、１分）が経過した場合には、カウント動作を停止させる。ただし、該所定時間は、システムの起動処理を正常に終了させるために要する時間に合わせて予め設定されている。また、カウント動作中に、起動処理部１１２からカウント動作を停止させる通知を受けた場合にも、カウント動作を終了させる。カウント動作を停止させたときに、タイマ３０２は、カウント動作を停止させたことを示す信号（例えば、Ｈｉｇｈの信号）を、アドレス切り替えレジスタ３０１およびＯＲ回路３０４に供給する。
【００３６】
ＯＲ回路３０４は、タイマ３０２又は起動処理部１１２のいずれかからの通知を受けたときに、記憶媒体１０２の起動ブロックを切り替えて起動・再起動する指示信号を、起動処理部１１２に供給する回路である。具体的には、ＯＲ回路３０４は、起動処理部１１２とタイマ３０２から供給されるいずれかの信号がＨｉｇｈであるときに、Ｈｉｇｈの信号を起動処理部１１２に供給する。
【００３７】
以上のような構成により、切り替え処理部１１０は、記憶媒体１０２にアクセスするブロックの切り替え、起動ブロックの切り替え、を行うことができる。なお、本実施形態では、切り替え処理部１１０をハードウェアの構成として説明したが、本発明は、ソフトウェアにより上記処理を実施するようにしてもよい。
【００３８】
図１に戻って、書き替え処理部１１１は、記憶媒体１０２に格納されている各種プログラムを書き替える処理を行う。例えば、書き替え処理部１１１は、記憶媒体１０２に格納されている上述したメインプログラムの書き替え、画像処理および印刷処理のためのプログラム、等を書き替える。
【００３９】
具体的には、書き替え処理部１１１は、記憶媒体１０２に格納されている各種プログラムを書き替える前に、切り替え処理部１１０のアドレス切り替えレジスタ３０１にアクセスして、その時点での起動ブロックを特定しておく。書き替え処理部１１１は、特定したブロックに格納されている書き替え対象のプログラムを読み出し、特定したブロックとは異なるブロックに、読み出したプログラムを一時的に複製しておく。正常に複製が終了した後、書き替え処理部１１１は、新たに書き替えるプログラムを取得する。このとき、新たに書き替えるプログラムは、例えば、Ｉ／Ｆ部１０５、Ｉ／Ｆ制御部１１３を介して、ホストＰＣ２００から取得する。書き替え処理部１１１は、取得した新たなプログラムと、書き替え対象のプログラムを比較して、書き替える必要がある場合には、先に特定した起動ブロックと同一のブロックに格納されているプログラムを書き替える。ここで、書き替え処理部１１１は、正常に書き換えが行われたか否かを判別して、書き替え処理を終了させる。このときの判別は、例えば、チェックサムの計算により行われる。また、上述した複製の処理、及び、書き替え処理を行うたびに、書き替え処理部１１０は、各ブロック（ブロックＡ１０３、ブロックＢ１０４）の最終アドレスに格納されているチェックサム値を更新する。
【００４０】
上記書き替え処理により、本画像形成装置１００は、メインプログラムの書き替え時に、メインプログラムの破壊・消去から保護することができる。
【００４１】
起動処理部１１２は、画像形成装置１００におけるシステムの起動・再起動を行う。例えば、起動処理部１１２は、上述した切り替え処理部１１０のタイマ３０２がタイムアウトした場合（起動処理が正常に行うことができなかった場合）や、入力部１０７から起動・再起動の指示が入力された場合に、システムの起動・再起動の処理を行う。また、ここで、システムの起動とは、画像形成装置１００が印刷を行うことができるようにシステムの初期設定（印刷エンジン１０６の駆動処理、等）を行うことを指す。
【００４２】
具体的には、起動処理部１１２は、ハードウェアによって電源がオンにされたときに、切り替え処理部１１０のタイマ３０２に通知して、タイマ３０２にカウント動作を開始させる。そして、起動処理部１１２は、システムの起動・再起動の処理を行う前に、切り替え処理部１１０のアドレス切り替えレジスタ３０１にアクセスして、その時点での起動ブロックを特定しておく。起動ブロックが正常である場合には、起動処理部１１２は、システムの起動・再起動の処理を行う。ただし、システムの起動・再起動の処理が終了する前に、タイマ３０２からタイムアウトした通知を受けると、起動処理部１１２は、起動ブロックを、現時点での起動ブロックとは異なるブロックに切り替えて、システムを再起動する。また、起動処理部１１２は、起動・再起動処理を終了したときに、タイマ３０２に、カウント動作を停止させる信号を供給する。
【００４３】
これにより、本画像形成装置１００は、正常なメインプログラムを格納しているブロックから、後述するＣＰＵが起動プログラムを読み出して、システムの起動・再起動処理を行うことができる。
【００４４】
Ｉ／Ｆ制御部１１３は、Ｉ／Ｆ部１０５を制御する。例えば、Ｉ／Ｆ制御部１１３は、Ｉ／Ｆ部１０５に接続されているホストＰＣ２００および入力部１０７とのデータの送受信を制御する。具体的には、Ｉ／Ｆ制御部１１３は、ホストＰＣ２００から印刷対象の画像データが、Ｉ／Ｆ部１０５を介して供給されたとき、該画像データを、後述する画像処理部１１４に供給する。また、Ｉ／Ｆ制御部１１３は、入力部１０７から、システムの起動・再起動を指示する信号が供給されたとき、該信号を起動処理部１１２に供給する。さらに、Ｉ／Ｆ制御部１１３は、入力部１０７から、記憶媒体１０２に格納されている各種プログラムの書き替えを指示する信号が供給されたとき、該信号を書き替え処理部１１１に供給する。
【００４５】
画像処理部１１４は、ホストＰＣ２００から供給された印刷対象の画像データを、印刷エンジン１０６で印刷可能な印刷データに変換する処理を行う。例えば、画像処理部１１４は、Ｉ／Ｆ制御部１１３を介して、ホストＰＣ２００から供給された画像データに基づいて印刷データを生成し、これを印刷制御部１１５に供給する。
【００４６】
印刷制御部１１５は、印刷エンジン１０６を制御する処理を行う。例えば、印刷制御部１１５は、画像処理部１１４が生成した印刷データを印刷エンジン１０６に供給して、印刷エンジン１０６に印刷させる。
【００４７】
以上のように構成される画像形成装置１００は、例えば、図４に示すような、ＣＰＵ４０１と、ＲＡＭ等の主記憶装置４０２と、特定の処理を行うＡＳＩＣ４０３と、フラッシュメモリ等の外部記憶装置４０５と、ユーザからの指示を受け付ける操作パネルや印刷を実行する印刷エンジン等を含む入出力装置４０６と、ホストＰＣ２００とＵＳＢ通信を行う通信装置４０４と、を備えた一般的なプリンタで実現される。ただし、通信装置４０４は、通信ネットワークに接続するためのＮＩＣ（Network Interface Card）等であってもよい。
【００４８】
例えば、上述した記憶媒体１０２は、外部記憶装置４０５により実現可能である。また、制御部１０１は、外部記憶装置４０５に格納されている各種プログラム（メインプログラム、等）を、主記憶装置４０２にロードして、ＣＰＵ４０１、ＡＳＩＣ４０３で処理することで実現可能である。さらに、Ｉ／Ｆ部１０５、Ｉ／Ｆ制御部１１３は、通信装置４０４で実現可能である。また、入力部１０７、印刷エンジン１０６は、入出力装置４０６で実現される。
【００４９】
以上のような構成により、画像形成装置１００は、メインプログラムの書き換え時に、該プログラムの破壊・消去から保護することができる。
【００５０】
図５は、画像形成装置１００で行われるシステムの起動時処理を説明するためのフローチャートである。
【００５１】
画像形成装置１００における制御部１０１の起動処理部１１２は、システムの起動・再起動処理が正常に行うことができなかったときや、ユーザから入力部１０７を介して起動・再起動の指示がされたときに、起動時処理を開始する。具体的には、起動処理部１１２は、上述した切り替え処理部１１０に備わるＯＲ回路３０４から、Ｈｉｇｈの信号が供給されたときに、起動時処理を開始する。例えば、システムの起動・再起動が正常に行うことができなかった場合は、タイマ３０２がタイムアウトしたことをＯＲ回路３０４に通知し、ＯＲ回路３０４はＨｉｇｈの信号を起動処理部１１２に供給する。また、ユーザから起動・再起動の指示がされた場合は、入力部１０７がユーザの指示に基づいて生成した信号が、Ｉ／Ｆ制御部１１３を介して、起動処理部１１２に供給される。このとき、起動処理部１１２は、Ｈｉｇｈの信号をＯＲ回路３０４に供給し、ＯＲ回路３０４は、Ｈｉｇｈの信号を起動処理部１１２に供給する。
【００５２】
起動処理部１１２は、起動時処理を開始して、まず、タイマ３０２を起動させる（ステップＳ１０１）。具体的には、起動処理部１１２は、タイマ３０２に、システムの起動処理を開始したことを示すＨｉｇｈの信号を供給する。
【００５３】
このとき、タイマ３０２は、起動処理部１１２からＨｉｇｈの信号を受け付け、ＣＰＵ４０１から供給される一定間隔のクロックパルスに従って、カウントを行う。
【００５４】
続いて、起動処理部１１２は、起動ブロックを特定する処理を行う（ステップＳ１０２）。具体的には、起動処理部１１２は、切り替え処理部１１０のアドレス切り替えレジスタ３０１に格納されているデータを読み出す。起動処理部１１２は、読み出したデータが、「０」である場合は、起動ブロックがブロックＡ１０３であると特定する。また、起動処理部１１２は、読み出したデータが、「１」である場合は、起動ブロックがブロックＢ１０４であると特定する。
次に、起動処理部１１２は、起動ブロックが不正、又は、ステップＳ１０１で起動したタイマ３０２がタイムアウトしたか否かを判別する（ステップＳ１０３）。具体的には、起動処理部１１２は、ステップＳ１０２で特定した起動ブロックをスキャンしてチェックサム値を求める。起動処理部１１２は、求めたチェックサム値と、起動ブロックの最終アドレスが割り当てられているセクタに格納されているチェックサム値とを比較することで、判別を行う。また、起動処理部１１２は、タイマ３０２からタイムアウトを通知する信号を、ＯＲ回路３０４を介して、供給されたときに、タイムアウトと判別する。
【００５５】
ステップＳ１０３では、起動処理部１１２は、起動ブロックが正常であり、かつ、タイマ３０２はタイムアウトしていないと判別した場合は（ステップＳ１０３；Ｎｏ）、処理をステップＳ１０４に移行させる。一方、起動処理部１１２は、起動ブロックが正常ではない、又は、タイマ３０２がタイムアウトしたと判別した場合は（ステップＳ１０３；Ｙｅｓ）、処理をステップＳ１０７に移行させる。具体的には、起動処理部１１２は、タイマ３０２からタイムアウトの通知を受けずに、ステップＳ１０２で比較したチェックサム値が一致する場合に、処理をステップＳ１０４に移行させ、一致しない場合又はタイムアウトした場合に、処理をステップＳ１０７に移行させる。
【００５６】
続いて、起動処理部１１２は、システムの起動・再起動処理を開始する（ステップＳ１０４）。具体的には、起動処理部１１２は、画像形成装置１００を印刷可能にするための初期設定を行う。通常、この初期設定には、所定時間（例えば、１分程度）を要する。
【００５７】
このとき、起動処理部１１２は、ステップＳ１０３で起動したタイマ３０２がタイムアウトしたか否かを判別する（ステップＳ１０５）。具体的には、起動処理部１１２は、初期設定中に、タイマ３０２からタイムアウトを通知する信号を、ＯＲ回路３０４を介して、供給されたときに、タイムアウトと判別する。
【００５８】
なお、タイマ３０２のタイムアウトの通知は、上述したように、システムの初期設定が正常に終了することができなかった場合に発生する。システムの初期設定に、上記所定時間（例えば、１分程度）を超える時間を要する場合は、その処理が異常であると考えられるため、このような構成が設けられている。このような構成により、画像形成装置１００は、システムの起動時に、自動的に異常を検出して、起動ブロックを切り替えることができる。
【００５９】
ステップＳ１０５で、タイムアウトと判別しないで（ステップＳ１０５；Ｙｅｓ）、システムの起動・再起動処理を終了した場合には（ステップＳ１０６；Ｙｅｓ）、起動処理部１１２は、タイマ３０２にカウント動作を停止させて、起動時処理を終了する。具体的には、起動処理部１１２は、タイマ３０２に、システムの起動処理を終了したことを示すＬｏｗの信号を供給する。このとき、タイマ３０２は、Ｌｏｗの信号を受け付けて、カウント動作を停止する。
【００６０】
一方、ステップＳ１０６で、起動処理部１１２は、システムの起動・再起動処理を終了する前に（ステップＳ１０６；Ｎｏ）、タイマ３０２がタイムアウトしたと判別した場合（ステップＳ１０５；Ｙｅｓ）、処理をステップＳ１０７に移行させる。
【００６１】
なお、ステップＳ１０６で、起動処理部１１２は、システムの起動・再起動処理が終了したか否かの判別を、起動プログラムを正常に終了したときに、返される結果値により判別するようにすればよい。
【００６２】
ステップＳ１０７では、起動処理部１１２は、切り替え処理部１１０に、起動ブロックを、現時点での起動ブロックとは異なるブロックに切り替えさせる（ステップＳ１０７）。具体的には、アドレス切り替えレジスタ３０１のデータは、「０」から「１」、又は、「１」から「０」のように、変更される。この変更は、タイマ３０２が書き替え処理部１１１にタイムアウトの通知が行われたときに、書き替え処理部１１１が行うようにしてもよい。
【００６３】
起動処理部１１２は、ステップＳ１０７で、切り替え処理部１１０に起動ブロックを切り替えさせた後、処理をステップＳ１０１に移行させて、システムの再起動を行う。
【００６４】
以上の起動時処理を実行することにより、画像形成装置１００は、正常なプログラムを格納しているブロックから、システムの起動・再起動処理を行うことができる。
【００６５】
図６は、画像形成装置１００で行われる書き替え時処理を説明するためのフローチャートである。
【００６６】
画像形成装置１００における制御部１０１の書き替え処理部１１１は、ユーザから入力部１０７を介して、記憶媒体１０２に格納されている各種プログラムの書き替えの指示がされたときに、書き替え時処理を開始する。具体的には、入力部１０７がユーザの指示に基づいて生成した信号が、Ｉ／Ｆ制御部１１３を介して、書き替え処理部１１１に供給されたときに、書き替え時処理を開始する。
【００６７】
なお、上記のように、必ずしもユーザからの指示に基づいて書き替え時処理を開始する必要はなく、自動的に記憶媒体１０２に格納されている各種プログラムをアップデートするプログラムに従って、書き替え時処理を開始するようにしてもよい。
【００６８】
書き替え処理部１１１は、書き替え時処理を開始して、まず、現時点での起動ブロックを特定する処理を行う（ステップＳ２０１）。具体的には、書き替え処理部１１１は、切り替え処理部１１０のアドレス切り替えレジスタ３０１に格納されているデータを読み出す。書き替え処理部１１１は、読み出したデータが、「０」である場合は、起動ブロックがブロックＡ１０３であると特定する。また、書き替え処理部１１１は、読み出したデータが、「１」である場合は、起動ブロックがブロックＢ１０４であると特定する。
【００６９】
続いて、書き替え処理部１１１は、ステップＳ２０１で特定したブロックに格納されている書き替え対象のプログラムを、他方のブロックに複製する処理を行う（ステップＳ２０２）。具体的には、書き替え処理部１１１は、ステップＳ２０１で特定したブロックに格納されている書き替え対象のプログラムをロードする。ロード後、書き替え処理部１１１は、切り替え処理部１１０のアドレス切り替えレジスタ３０１のデータを変更する。これにより、書き替え処理部１１１がアクセスする記憶媒体１０２のブロックを切り替えることができる。それから、書き替え処理部１１１は、先にロードした書き替え対象のプログラムを、他方のブロックに複製する。このとき、アドレス切り替え処理部３００は、先に変更されたアドレス切り替えレジスタ３０１に格納されているデータを参照して、デコーダ３０３から供給されたアドレスの上位１ビットを反転させて、アクセス先のアドレスを指定するように動作する。
【００７０】
次に、書き替え処理部１１１は、ステップＳ１０１での複製が正常に終了したか否かを判別する（ステップＳ２０３）。具体的には、書き替え処理部１１１は、書き替え対象のプログラムのチェックサム値と、複製後のプログラムのチェックサム値を、比較することで判別する。
【００７１】
ステップＳ２０３で、書き替え処理部１１１は、複製が正常に終了したと判別した場合（ステップＳ２０３；Ｙｅｓ）、処理をステップＳ２０４に移行させる。一方、書き替え処理部１１１は、複製が正常に終了していないと判別した場合（ステップＳ２０３；Ｎｏ）、処理をステップＳ２０２に戻して、再度、複製する処理を行う。具体的には、書き替え処理部１１１は、比較したチャックサム値が一致する場合に、処理をステップＳ２０４に移行させ、一致しない場合には、処理をステップＳ２０２に戻す。
【００７２】
ステップＳ２０４では、書き替え処理部１１１は、新たに書き替えるプログラム（アップデートプログラム）をロードする（ステップＳ２０５）。具体的には、書き替え処理部１１１は、Ｉ／Ｆ制御部１１３を介して、アップデートプログラムをロードする。このとき、Ｉ／Ｆ制御部１１３は、ホストＰＣ２００と通信を行い、アップデートプログラムを書き替え処理部１１１に供給する。このとき、取得するアップデートプログラムは、ヘッダ部分にバージョンを特定するデータを有する。従って、ホストＰＣ２００は、このバージョンを参照することで、最新のアップデートプログラムを、Ｉ／Ｆ制御部１１３に供給することができる。
【００７３】
続いて、書き替え処理部１１１は、ステップＳ２０４でロードしたアップデートプログラムが、書き替える必要のあるプログラムであるか否かを判別する（ステップＳ２０５）。具体的には、書き替え処理部１１１は、記憶媒体１０２に格納されている書き替え対象のプログラムと、アップデートプログラムのデータ内容を比較することで判別する。
【００７４】
ステップＳ２０５で、書き替え処理部１１１は、書き替える必要があると判別した場合（ステップＳ２０５；Ｙｅｓ）、処理をステップＳ２０６に移行させる。一方、書き替える必要がないと判別した場合（ステップＳ２０５；Ｎｏ）、書き替え時処理を終了させる。具体的には、書き替え処理部１１１は、比較したデータ内容が一致しない場合に、処理をステップＳ２０６に移行させ、一致する場合には書き替え時処理を終了させる。
【００７５】
ステップＳ２０６では、書き替え処理部１１１は、ステップＳ２０４でロードしたアップデートプログラムを、ステップＳ２０１で特定したブロックに格納されている書き替え対象のプログラムに上書きする（ステップＳ２０６）。具体的には、ステップＳ２０２で説明した処理と同様に、まず、切り替え処理部３０１に、書き替え処理部１１１がアクセスするブロックを切り替えさせる。そして、書き替え処理部１１１は、アップデートプログラムを、切り替え後のブロックに書き込む処理を行う。
【００７６】
なお、アップデートプログラムがメインプログラムである場合には、アップデートプログラムを上書きした後に、印刷処理に必要な他のプログラム等もアップデートするようにしてもよい。
【００７７】
続いて、書き替え処理部１１１は、書き替え処理が正常に終了したか否かを判別する（ステップＳ２０７）。具体的には、書き替え処理部１１１は、ステップＳ２０４でロードしたアップロードプログラムのチェックサム値と、ステップＳ２０６で記憶したアップロードプログラムのチェックサム値を比較することで判別する。
【００７８】
ステップＳ２０７で、書き替え処理が正常に終了したと判別した場合、書き替え処理部１１１は、書き替え時処理を終了させる。一方、正常に終了していないと判別した場合、書き替え処理部１１１は、処理をステップＳ２０６に戻して、再度、アップデートプログラムを書き込む処理を行う。
【００７９】
以上の書き替え時処理を、画像形成装置１００が実行することにより、メインプログラム等のプログラムを書き換える場合において、該プログラムの破壊・消去から保護することができる。例えば、電源切断時による記憶媒体１０２に格納されるメインプログラムの書き替えの失敗で、画像形成装置１００が起動しなくなることを、防ぐことができる。また、書き替えに失敗した場合であって、再度、メインプログラムの書き込みを行うことができる。
【００８０】
さらに、本実施形態の画像形成装置１００は、メインプログラムのバックアップ用に、複数の記憶媒体１０２を備える必要がないため、安価で信頼性の高い装置となる。
【００８１】
なお、本発明は、上記実施形態に限定されず、種々の変形、応用が可能である。
【００８２】
例えば、書き替え処理部１１１が、ステップＳ２０４でロードしたアップデートプログラムが、書き替える必要のあるプログラムであるか否かを判別するのは、データ内容を比較して行っている。しかしながら、本発明は、これに限定されず、アップデートプログラムのヘッダ部に記載されたバージョン情報と、書き替え対象のプログラムのバーションを比較することで、ステップＳ２０５の判別処理を行ってもよい。
【００８３】
また、上記実施形態では、記憶媒体１０２を２つのブロックに区切るようにしている。しかしながら、本発明は、これに限定されず、記憶媒体１０２は、３つのブロック、４つのブロックといった、複数のブロックから構成されてもよい。
【図面の簡単な説明】
【００８４】
【図１】本発明の実施形態に係る画像形成装置の機能構成図である。
【図２】２つのパーティションから構成される記憶媒体を説明するための説明図である。
【図３】切り替え処理部のハードウェア構成図である。
【図４】画像形成装置のハードウェア構成の一例を示す図である。
【図５】起動時処理を説明するためのフローチャートである。
【図６】書き替え時処理を説明するためのフローチャートである。
【符号の説明】
【００８５】
１００  画像形成装置、１０１  制御部、１０２  記憶媒体、１０３  ブロックＡ、１０４  ブロックＢ、１０５  Ｉ／Ｆ部、１０６  印刷エンジン、１０７  入力部、１１０  切り替え処理部、１１１  書き替え処理部、１１２  起動処理部、１１３  Ｉ／Ｆ制御部、１１４  画像処理部、１１５  印刷制御部、２００  ホストＰＣ、３００  アドレス切り替え処理部、３０１  アドレス切り替えレジスタ、３０２  タイマ、３０３  デコーダ、３０４  ＯＲ回路、４０１  ＣＰＵ、４０２  主記憶装置、４０３  ＡＳＩＣ、４０４  通信装置、４０５  外部記憶装置、４０６  入出力装置。
【図１】
2008225972.tif 000003
【図２】
2008225972.tif 000004
【図３】
2008225972.tif 000005
【図４】
2008225972.tif 000006
【図５】
2008225972.tif 000007
【図６】
2008225972.tif 000008