(57)【要約】【課題】メモリを取得できずに画像データの形式の変換が行えなくなることを回避する画像形成装置、記憶領域取得方法を提供する。【解決手段】画像形成に係る処理を行う１つ以上の処理部と、前記処理部と直接または他の処理部を介して通信する制御部と、前記処理部と前記制御部とを動作させるプログラムとを有する画像形成装置において、前記プログラムを更新する更新プログラムを取得する更新プログラム取得部と、一の処理部の前記プログラムを、該一の処理部と前記制御部とが通信をするために経由する処理部の数に応じて定まる順番で、前記更新プログラムに更新させるプログラム更新部とを有する。【選択図】図１６
2008152793.tif 000002
【特許請求の範囲】
【請求項１】
画像形成処理で使用されるハードウェア資源と、画像形成に係る処理を行う１つ以上の処理部と、該処理部を動作させるプログラムと、通信部とを有する画像形成装置のプログラム更新方法であって、
前記プログラムを更新する更新プログラムを、前記通信部により取得する更新プログラム取得段階と、
前記プログラムを、前記更新プログラムで更新するプログラム更新段階と、
前記プログラムを更新した処理部を再起動させる再起動段階と
を有することを特徴とするプログラム更新方法。
【請求項２】
前記再起動段階は、前記プログラムの更新をした処理部の順に再起動することを特徴とする請求項１に記載のプログラム更新方法。
【請求項３】
画像形成処理で使用されるハードウェア資源と、画像形成に係る処理を行うプログラムと、通信部とを有する画像形成装置のプログラム更新方法において、
前記プログラムを更新する更新プログラムを前記通信部により取得する更新プログラム取得段階と、
前記プログラムを、前記更新プログラムで更新するプログラム更新段階と、
前記プログラムを更新した結果を示す更新結果情報を生成する更新結果情報生成段階と、
前記更新結果情報に基づく更新結果を出力する更新結果出力段階と
を有することを特徴とするプログラム更新方法。
【請求項４】
前記更新結果出力段階では、前記更新結果を印刷するか、電子メールで送信するか、前記画像形成装置が有する表示部に表示することを特徴とする請求項３に記載のプログラム更新方法。
【請求項５】
前記更新結果情報は、更新前のプログラムのバージョンと、更新後のプログラムのバージョンと、更新した日時と、更新の成否のうち、いずれか１つ以上を含むことを特徴とする請求項３に記載のプログラム更新方法。
【請求項６】
前記更新結果情報生成段階では、過去に行った更新の更新結果情報に基づく更新履歴情報に、生成した更新結果情報を追記することを特徴とする請求項５に記載のプログラム更新方法。
【請求項７】
前記更新結果情報生成段階の後に、前記画像形成装置の再起動後を行う再起動段階をさらに有することを特徴とする請求項３に記載のプログラム更新方法。
【請求項８】
前記更新結果情報生成段階は、前記画像形成装置が再起動する前に、前記画像形成装置が有する不揮発性記憶部に、前記更新結果情報を記憶することを特徴とする請求項７に記載のプログラム更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つ以上のプログラムの更新に関し、特にプログラムを更新する画像形成装置、及びそのプログラム更新方法に関する。
【背景技術】
【０００２】
近年、ファクシミリ、プリンタ、コピーおよびスキャナなどの各装置の機能を１つの筐体内に収納した画像形成装置（以下、融合機という）が知られるようになった。この融合機は、１つの筐体内に表示部、印刷部および撮像部などを設けると共に、ファクシミリ、プリンタ、コピーおよびスキャナにそれぞれ対応する４種類のアプリケーションを設け、そのアプリケーションを切り替えることより、ファクシミリ、プリンタ、コピーおよびスキャナとして動作させるものである。
【０００３】
このように、融合機は、プログラムに基づき処理を実行する種々のアプリケーションやモジュールにより動作しているため、ＮＶ−ＲＡＭなどに書き込まれたプログラムを更新することにより、新たな機能の追加などを行うことができる。
【０００４】
このプログラムの更新処理は、インターネットなどのネットワークを介し、更新プログラムが格納されたサーバに接続し更新プログラムを取得（以下、ダウンロードと記す）することにより行われることがある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このダウンロードした更新プログラムは、プリンタのプログラムを更新するものや、印刷用紙に関する制御を行うプログラムを更新するものなど、複数のプログラムが含まれ、それらが連続し、１つのデータのようになっている。
【０００６】
この更新プログラムのデータ構造は、例えば図３７に示されるように、更新プログラム全体のヘッダである更新プログラムヘッダが先頭にあり、次に個々の更新プログラムのヘッダである個別更新プログラムヘッダと更新プログラム本体が、更新プログラムの数だけ連続するデータ構造となっている。
【０００７】
更新プログラムヘッダの全レングスは、更新プログラムヘッダを除く全体のデータ長を表し、全プログラム数は、この更新プログラムに含まれる全ての更新プログラムの数を示す。また、個別更新プログラムヘッダのプログラム種類は、例えばプリンタ用プログラムなどのプログラムの種類を表し、バージョンは、更新プログラムのバージョンを表し、レングスは更新プログラム本体のデータ長を表す。
【０００８】
このように連続した更新プログラムを、図３７に示したデータ構造の順序通りにプログラムの更新を行うと、プログラムの更新ができなくなる可能性がある。
【０００９】
また、サービスマンなどが画像形成装置を直接操作せず、ネットワークを介して行われるプログラムの更新の場合、プログラムを更新した画像形成装置の画面には、プログラムの更新が完了したことが表示されることがある。
【００１０】
画像形成装置にそのような画面が表示されていると、オペレータが使用する際に戸惑う原因となる。また、プログラムの更新によりオペレータが電源を入れ直したりしなければならない。
【００１１】
このように、サービスマンなどが画像形成装置を直接操作せず、ネットワークを介して行われるプログラムの更新の場合、プログラムの更新が夜間などに自動的に行われることも相俟って、オペレータは、プログラムが更新されたことや更新結果を知ることができないか困難であった。
【００１２】
本発明は、このような問題点に鑑み、プログラムをネットワークを介して更新する画像形成装置に好適なプログラム更新方法、そのプログラム更新方法を搭載した画像形成装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明は、画像形成に係る処理を行う１つ以上の処理部と、前記処理部と直接または他の処理部を介して通信する制御部と、前記処理部と前記制御部とを動作させるプログラムとを有する画像形成装置において、前記プログラムを更新する更新プログラムを取得する更新プログラム取得部と、一の処理部の前記プログラムを、該一の処理部と前記制御部とが通信をするために経由する処理部の数に応じて定まる順番で、前記更新プログラムに更新させるプログラム更新部とを有することを特徴とする。
【００１４】
また、上記課題を解決するために、本発明は、前記プログラム更新部は、前記更新プログラム取得部が取得した更新プログラムに基づき、前記順番を定める更新順番情報を生成することを特徴とする。
【００１５】
また、上記課題を解決するために、本発明は、前記更新順番情報は、前記順番と、取得した更新プログラムにより更新されるプログラムの種類とを対応付けた情報を有することを特徴とする。
【００１６】
また、上記課題を解決するために、本発明は、前記更新順番情報は、取得した更新プログラムにより更新されるプログラムの更新状況を示す情報を有することを特徴とする。
【００１７】
また、上記課題を解決するために、本発明は、前記制御部は、画像形成処理に係る処理を実行する１つ以上のアプリケーションを有し、前記プログラム更新部は、各アプリケーションのプログラムを個々に更新することが可能であることを特徴とする。
【００１８】
また、上記課題を解決するために、本発明は、前記プログラム更新部は、前記画像形成装置を操作するオペレータに対して該画像形成装置に関する情報を表示する処理を行う処理部の前記プログラムを更新する順番を最後の順番とすることを特徴とする。
【００１９】
また、上記課題を解決するために、本発明は、ネットワークと接続するための通信部をさらに有し、前記更新プログラム取得部は、前記通信部により前記更新プログラムを取得することを特徴とする。
【００２０】
また、上記課題を解決するために、本発明は、前記制御部は、前記プログラムの更新が終了した処理部の順に該処理部を再起動させることを特徴とする。
【００２１】
また、上記課題を解決するために、本発明は、前記制御部は、前記プログラムを更新する全ての処理部が更新を終了した後に、前記プログラムを更新した処理部を再起動させることを特徴とする。
【００２２】
また、上記課題を解決するために、本発明は、前記制御部は、自らのプログラムを更新する際に、該プログラムが格納された記憶領域とは異なる他の記憶領域に格納された更新用プログラムで動作することを特徴とする。
【００２３】
また、上記課題を解決するために、本発明は、前記更新用プログラムは、揮発性記憶部の領域に格納されることを特徴とする。
【００２４】
また、上記課題を解決するために、本発明は、前記更新用プログラムのサイズは、前記制御部のプログラムのサイズより小さいことを特徴とする。
【００２５】
また、上記課題を解決するために、本発明は、前記制御部は、前記処理部のプログラムを更新する際に、該処理部に対し、処理の実行を制限させることを特徴とする。
【００２６】
また、上記課題を解決するために、本発明は、前記制御部は、前記プログラムを更新した処理部との通信が切断すると、自らを再起動することを特徴とする。
【００２７】
また、上記課題を解決するために、本発明は、前記制御部は、再起動をさせる前記処理部のうち、最後に処理部を再起動させてから所定の時間が経過した後に自らを再起動することを特徴とする。
【００２８】
また、上記課題を解決するために、本発明は、前記制御部は、自らが再起動する際に、画像形成装置に係る装置状態を不揮発性記憶部に記憶し、前記制御部の再起動後、記憶した前記装置状態に前記画像形成装置の状態を遷移させることを特徴とする。
【００２９】
また、上記課題を解決するために、本発明は、前記装置状態は、前記画像形成装置の消費電力を低減する状態である省電力状態であることを特徴とする。
【００３０】
また、上記課題を解決するために、本発明は、前記画像形成装置に関する情報を表示する表示部を有し、前記装置状態は、前記表示部に表示されている情報の状態であることを特徴とする。
【００３１】
また、上記課題を解決するために、本発明は、前記表示部は、前記プログラムの更新の進捗状況を表示することを特徴とする。
【００３２】
また、上記課題を解決するために、本発明は、前記表示部は、前記画像形成装置の消費電力を低減する状態であれば、前記プログラムの更新の進捗状況を表示しないことを特徴とする。
【００３３】
また、上記課題を解決するために、本発明は、前記プログラム更新部は、取得した更新プログラムに関する情報を含む更新管理テーブルを生成することを特徴とする。
【００３４】
また、上記課題を解決するために、本発明は、前記更新管理テーブルは、取得した更新プログラムを特定するモジュールＩＤを含むことを特徴とする。
【００３５】
また、上記課題を解決するために、本発明は、前記処理部は、前記制御部が直接に再起動可能な処理部と、前記制御部が前記処理部に対して再起動要求を行うことにより再起動可能な処理部との２つの種類があることを特徴とする。
【００３６】
また、上記課題を解決するために、本発明は、前記プログラムを更新した結果を示す更新結果情報を生成する更新結果情報生成部と、前記更新結果情報に基づいた更新結果を出力する更新結果出力部とをさらに有することを特徴とする。
【００３７】
また、上記課題を解決するために、本発明は、前記更新結果出力部は、前記更新結果を印刷するか、電子メールで送信するか、画像形成装置に関する情報を表示する表示部に表示することを特徴とする。
【００３８】
また、上記課題を解決するために、本発明は、前記更新結果情報は、更新前のプログラムのバージョンと、更新後のプログラムのバージョンと、更新した日時と、更新の成否のうち、いずれか１つ以上を含むことを特徴とする。
【００３９】
また、上記課題を解決するために、本発明は、前記更新結果情報生成部は、前記更新結果情報を不揮発性記憶部に記憶することを特徴とする。
【００４０】
また、上記課題を解決するために、本発明は、前記更新結果情報生成部は、過去に行った更新での更新結果情報に基づく更新履歴情報に、生成した更新結果情報を追記することを特徴とする。
【００４１】
また、上記課題を解決するために、本発明は、前記制御部は、前記更新結果情報生成部が前記更新結果情報を不揮発性記憶部に記憶した後に、前記画像形成装置を再起動し、前記更新結果出力部は、再起動後に前記更新結果を出力することを特徴とする。
【００４２】
また、上記課題を解決するために、本発明は、画像形成に係る処理を行う１つ以上の処理部と、前記処理部と直接または他の処理部を介して通信する制御部と、前記処理部と前記制御部とを動作させるプログラムとを有する画像形成装置のプログラム更新方法であって、前記プログラムを更新する更新プログラムを取得する更新プログラム取得段階と、一の処理部の前記プログラムを、該一の処理部と前記制御部との通信をするために経由する処理部の数に応じて定まる順番で、前記更新プログラムに更新させるプログラム更新段階とを有することを特徴とする。
【００４３】
また、上記課題を解決するために、本発明は、画像形成処理で使用されるハードウェア資源と、画像形成に係る処理を行う１つ以上の処理部と、該処理部を動作させるプログラムと、通信部とを有する画像形成装置のプログラム更新方法であって、前記プログラムを更新する更新プログラムを、前記通信部により取得する更新プログラム取得段階と、前記プログラムを、前記更新プログラムで更新するプログラム更新段階と、前記プログラムを更新した処理部を再起動させる再起動段階とを有することを特徴とする。
【００４４】
また、上記課題を解決するために、本発明は、前記再起動段階は、前記プログラムの更新をした処理部の順に再起動することを特徴とする。
【００４５】
また、上記課題を解決するために、本発明は、画像形成処理で使用されるハードウェア資源と、画像形成に係る処理を行うプログラムと、通信部とを有する画像形成装置のプログラム更新方法において、前記プログラムを更新する更新プログラムを前記通信部により取得する更新プログラム取得段階と、前記プログラムを、前記更新プログラムで更新するプログラム更新段階と、前記プログラムを更新した結果を示す更新結果情報を生成する更新結果情報生成段階と、前記更新結果情報に基づく更新結果を出力する更新結果出力段階とを有することを特徴とする。
【００４６】
また、上記課題を解決するために、本発明は、前記更新結果出力段階では、前記更新結果を印刷するか、電子メールで送信するか、前記画像形成装置が有する表示部に表示することを特徴とする。
【００４７】
また、上記課題を解決するために、本発明は、前記更新結果情報は、更新前のプログラムのバージョンと、更新後のプログラムのバージョンと、更新した日時と、更新の成否のうち、いずれか１つ以上を含むことを特徴とする。
【００４８】
また、上記課題を解決するために、本発明は、前記更新結果情報生成段階では、過去に行った更新の更新結果情報に基づく更新履歴情報に、生成した更新結果情報を追記することを特徴とする。
【００４９】
また、上記課題を解決するために、本発明は、前記更新結果情報生成段階の後に、前記画像形成装置の再起動後を行う再起動段階をさらに有することを特徴とする。
【００５０】
また、上記課題を解決するために、本発明は、前記更新結果情報生成段階は、前記画像形成装置が再起動する前に、前記画像形成装置が有する不揮発性記憶部に、前記更新結果情報を記憶することを特徴とする。
【発明の効果】
【００５１】
以上説明したように、本発明によれば、プログラムをネットワークを介して更新する画像形成装置に好適なプログラム更新方法、そのプログラム更新方法を搭載した画像形成装置が得られる。
【発明を実施するための最良の形態】
【００５２】
以下、本発明の実施例を図面に基づいて説明する。なお、本実施例において、更新プログラムをダウンロードするとは、更新プログラムを取得し、メモリなどの所定の記憶領域に更新プログラムを格納することとする。また、更新プログラムとは、現在運用されているプログラムに代わる新たなプログラムであり、更新用プログラムとは、運用されているプログラムを更新プログラムに更新する処理を実行するプログラムである。
【実施例】
【００５３】
図１は、本発明による融合機の一実施例の構成図を示す。融合機１は、ソフトウェア群２と、融合機起動部３と、ハードウェア資源４とを含むように構成される。
【００５４】
融合機起動部３は融合機１の電源投入時に最初に実行され、アプリケーション層５およびプラットホーム層６を起動する。例えば融合機起動部３は、アプリケーション層５およびプラットホーム層６のプログラムを、ハードディスク装置（以下、ＨＤＤという）などから読み出し、読み出した各プログラムをメモリ領域に転送して起動する。ハードウェア資源４は、スキャナ２５と、プロッタ２６と、ＡＤＦ（Auto Document Feeder）などのハードウェアリソース２４とを含む。
【００５５】
また、ソフトウェア群２は、ＵＮＩＸ（登録商標）などのオペレーティングシステム（以下、ＯＳという）上に起動されているアプリケーション層５とプラットホーム層６とを含む。アプリケーション層５は、プリンタ、コピー、ファックスおよびスキャナなどの画像形成にかかるユーザサービスにそれぞれ固有の処理を行うプログラムを含む。
【００５６】
アプリケーション層５は、プリンタ用のアプリケーションであるプリンタアプリ９と、コピー用アプリケーションであるコピーアプリ１０と、ファックス用アプリケーションであるファックスアプリ１１と、スキャナ用アプリケーションであるスキャナアプリ１２とを含む。
【００５７】
また、プラットホーム層６は、アプリケーション層５からの処理要求を解釈してハードウェア資源４の獲得要求を発生するコントロールサービス層７と、１つ以上のハードウェア資源４の管理を行ってコントロールサービス層７からの獲得要求を調停するシステムリソースマネージャ（以下、ＳＲＭという）２１と、ＳＲＭ２１からの獲得要求に応じてハードウェア資源４の管理を行うハンドラ層８とを含む。
【００５８】
コントロールサービス層７は、ネットワークコントロールサービス（以下、ＮＣＳという）１３、リモートサービス（以下、ＲＳという）１４、オペレーションパネルコントロールサービス（以下、ＯＣＳという）１５、ファックスコントロールサービス（以下、ＦＣＳという）１６、エンジンコントロールサービス（以下、ＥＣＳという）１７、メモリコントロールサービス（以下、ＭＣＳという）１８、オンデマンドアップデートサービス（以下、ＯＵＳという）１９、システムコントロールサービス（以下、ＳＣＳという）２０など、一つ以上のサービスモジュールを含むように構成されている。
【００５９】
なお、プラットホーム層６は予め定義されている関数により、アプリケーション層５からの処理要求を受信可能とするＡＰＩ２８を有するように構成されている。ＯＳは、アプリケーション層５およびプラットホーム層６の各ソフトウェアをプロセスとして並列実行する。
【００６０】
通信部に対応するＮＣＳ１３のプロセスは、ネットワークＩ／Ｏを必要とするアプリケーションに対して共通に利用できるサービスを提供するものであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、各アプリケーションからのデータをネットワーク側に送信する際の仲介を行う。
【００６１】
例えばＮＣＳ１３は、ネットワークを介して接続されるネットワーク機器とのデータ通信をｈｔｔｐｄ（HyperText Transfer Protocol Daemon）により、ＨＴＴＰ（HyperText Transfer Protocol）で制御する。
【００６２】
ＲＳ１４のプロセスは、インターネットなどのネットワークを用いたサービスを行う。ＯＣＳ３３のプロセスは、オペレータと本体制御との間の情報伝達手段となるオペレーションパネルの制御を行う。ＦＣＳ１６のプロセスは、アプリケーション層５からＰＳＴＮまたはＩＳＤＮ網を利用したファックス送受信、バックアップ用のメモリで管理されている各種ファックスデータの登録／引用、ファックス読み取り、ファックス受信印刷などを行うためのＡＰＩを提供する。
【００６３】
ＥＣＳ１７のプロセスは、スキャナ２５、プロッタ２６、その他のハードウェアリソース２４などのエンジン部の制御を行う。ＭＣＳ１８のプロセスは、メモリの取得および解放、ＨＤＤの利用などのメモリ制御を行う。更新プログラム取得部に対応するＯＵＳ１９は、ネットワークからの通知により、プログラムをダウンロードし、メモリに格納する。
【００６４】
プログラム更新部、更新結果情報生成部、更新結果出力部、再起動部に対応するＳＣＳ２０のプロセスは、アプリケーション管理、操作部制御、システム画面表示、ＬＥＤ表示、ハードウェア資源管理、割り込みアプリケーション制御などの処理を行う。
【００６５】
ＳＲＭ２１のプロセスは、ＳＣＳ２０と共にシステムの制御およびハードウェア資源４の管理を行うものである。例えばＳＲＭ２１のプロセスは、スキャナ２５やプロッタ２６などのハードウェア資源４を利用する上位層からの獲得要求に従って調停を行い、実行制御する。
【００６６】
具体的に、ＳＲＭ２１のプロセスは獲得要求されたハードウェア資源４が利用可能であるか（他の獲得要求により利用されていないかどうか）を判定し、利用可能であれば獲得要求されたハードウェア資源４が利用可能である旨を上位層に通知する。また、ＳＲＭ２１のプロセスは上位層からの獲得要求に対してハードウェア資源４を利用するためのスケジューリングを行い、要求内容（例えば、プリンタエンジンによる紙搬送と作像動作、メモリ確保、ファイル生成など）を直接実施している。
【００６７】
また、ハンドラ層８は後述するファックスコントロールユニット（以下、ＦＣＵという）の管理を行うファックスコントロールユニットハンドラ（以下、ＦＣＵＨという）２２と、プロセスに対するメモリの割り振り及びプロセスに割り振ったメモリの管理を行うイメージメモリハンドラ（以下、ＩＭＨという）２３を含む。ＳＲＭ３９およびＦＣＵＨ２２は、予め定義されている関数によりハードウェア資源４に対する処理要求を送信可能とするエンジンＩ／Ｆ２７を利用して、ハードウェア資源４に対する処理要求を行う。
【００６８】
融合機１は、各アプリケーションで共通的に必要な処理をプラットホーム層６で一元的に処理することができる。次に、融合機１のハードウェア構成について説明する。
【００６９】
図２は、融合機１の一実施例のハードウェア構成図を示している。融合機１は、コントローラボード５０と、オペレーションパネル３９と、ＦＣＵ４０と、エンジン４３とを含む。また、ＦＣＵ４０は、Ｇ３規格対応ユニット１０３と、Ｇ４規格対応ユニット１０４とを有する。
【００７０】
また、コントローラボード５０は、ＣＰＵ３１と、ＡＳＩＣ３６と、ＨＤＤ３８と、システムメモリ（ＭＥＭ−Ｐ）３２と、ローカルメモリ（ＭＥＭ−Ｃ）３７と、ノースブリッジ（以下、ＮＢと記す）３３と、サウスブリッジ（以下、ＳＢと記す）３４と、ＮＩＣ１０１（Network Interface Card）と、ＵＳＢデバイス４１と、ＩＥＥＥ１３９４デバイス４２と、セントロニクスデバイス１０２と、ＭＬＢ４５とを含む。
【００７１】
オペレーションパネル３９は、コントローラボード５０のＡＳＩＣ３６に接続されている。また、ＳＢ３４と、ＮＩＣ１０１と、ＵＳＢデバイス４１と、ＩＥＥＥ１３９４デバイス４２と、セントロニクスデバイス１０２と、ＮＢ３３にＰＣＩバスで接続されている。
【００７２】
ＭＬＢ４５は、融合機１にＰＣＩバスを介して接続する基板である。また、ＭＬＢ４５は、融合機１から入力された画像データを変換し、変換された画像データあるいは符号化された画像データを融合機１に出力するものである。
【００７３】
また、ＦＣＵ４０と、エンジン４３は、コントローラボード５０のＡＳＩＣ３６にＰＣＩバスで接続されている。
【００７４】
なお、コントローラボード５０は、ＡＳＩＣ３６にローカルメモリ３７、ＨＤＤ３８などが接続されると共に、ＣＰＵ３１とＡＳＩＣ３６とがＣＰＵチップセットのＮＢ３３を介して接続されている。このように、ＮＢ３３を介してＣＰＵ３１とＡＳＩＣ３６とを接続すれば、ＣＰＵ３１のインタフェースが公開されていない場合に対応できる。
【００７５】
また、ＡＳＩＣ３６とＮＢ３３とはＰＣＩバスを介して接続されているのでなく、ＡＧＰ（Accelerated Graphics Port）６７を介して接続されている。このように、図２のアプリケーション層５やプラットホーム層６を形成する一つ以上のプロセスを実行制御するため、ＡＳＩＣ３６とＮＢ３３とを低速のＰＣＩバスでなくＡＧＰ３５を介して接続し、パフォーマンスの低下を防いでいる。
【００７６】
ＣＰＵ３１は、融合機１の全体制御を行うものである。ＣＰＵ３１は、ＮＣＳ１３、ＲＳ１４、ＯＣＳ１５、ＦＣＳ１６、ＥＣＳ１７、ＭＣＳ１８、ＯＵＳ１９、ＳＣＳ２０、ＳＲＭ２１、ＦＣＵＨ２２、ＩＭＨ２３、ＭＥＵ４４をＯＳ上にそれぞれプロセスとして起動して実行させると共に、アプリケーション層５を形成するプリンタアプリ９、コピーアプリ１０、ファックスアプリ１１、スキャナアプリ１２を起動して実行させる。
【００７７】
ＮＢ３３は、ＣＰＵ３１、システムメモリ３２、ＳＢ３４およびＡＳＩＣ３６を接続するためのブリッジである。システムメモリ３２は、融合機１の描画用メモリなどとして用いるメモリである。ＳＢ３４は、ＮＢ３３とＰＣＩバス、周辺デバイスとを接続するためのブリッジである。また、ローカルメモリ３７はコピー用画像バッファ、符号バッファとして用いるメモリである。
【００７８】
ＡＳＩＣ３６は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣである。ＨＤＤ３８は、画像の蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積などを行うためのストレージである。また、オペレーションパネル３９は、ユーザからの入力操作を受け付けると共に、ユーザに向けた表示を行う操作部である。
【００７９】
次に、図３を用いて、各処理部とプログラムの融合機１における位置づけを説明する。図３は、各処理部と、プログラムであるファームウェアの位置づけを示す図である。図３には、制御部であるコントローラボード５０と、処理部である操作パネルボード５５、ＦＣＵボード５１、エンジンボード５２、フィニッシャ５３、ＡＤＦ５４とが示されている。また、制御部のファームウェアであるソフトウェア群２と、操作パネルボード５５のファームウェアである操作パネルファーム６１と、ＦＣＵボード５１のファームウェアであるＦＣＵファーム５６と、エンジンボード５２のファームウェアであるプロッタファーム５７とスキャナファーム５８と、フィニッシャ５３のファームウェアであるフィニッシャファーム５９と、ＡＤＦ５４のファームウェアであるＡＤＦファーム６０とが示されている。
【００８０】
まずコントローラボード５０について説明する。コントローラボード５０は、図１に示したソフトウェア群２が実行されるボードで、融合機１を制御する。このコントローラボード５０から、以下に説明するボードが接続される。
【００８１】
操作パネルボード５５は、オペレーションパネル３９の制御を行うボードであり、融合機１に関する情報を、融合機１を操作するオペレータに対して表示する処理を行う。この操作パネルボード５５とコントローラボード５０とは、通信をするために同期シリアル回線６４で接続されている。
【００８２】
次に、ＦＣＵボード５１について説明する。このボードは、上述したファックスコントロールユニットである。また、ＦＣＵボード５１とコントローラボード５０とは、通信をするためにＰＣＩバス６２で接続される。
【００８３】
次に、エンジンボード５２について説明する。エンジンボード５２は、プロッタファー５７やスキャナファーム５８などのエンジン部のファームが搭載される。このエンジンボード５２もコントローラボード５０と通信をするためにＰＣＩバス６２で接続される。
【００８４】
以上説明した操作パネルボード５５と、ＦＣＵボード５１と、エンジンボード５２とは、それぞれコントローラボード５０と直接通信するボードである。
【００８５】
次に説明するフィニッシャ５３とＡＤＦは、エンジンボード５２とシリアル回線で通信することにより、エンジンボード５２を介してコントローラボード５０と通信するボードである。
【００８６】
フィニッシャ５３は、印刷用紙をステープラでとじるための装置であり、フィニッシャファーム５９により動作する。ＡＤＦ５４は、自動で原稿を送る装置であり、ＡＤＦファーム６０により動作する。
【００８７】
以上説明した操作パネルボード５５と、ＦＣＵボード５１と、エンジンボード５２と、フィニッシャ５３と、ＡＤＦ５４は、いずれのボードもそれぞれＣＰＵを有する。
【００８８】
このように融合機１は、画像形成に係る処理を行う１つ以上の処理部と、処理部と直接または他の処理部を介して通信する制御部と、処理部と制御部とを動作させるプログラムとを有する。
【００８９】
次に、各ボードの立ち上げ時の処理を、図４を用いて説明する。図４は、コントローラボード５０と、エンジンボード５２と、ＦＣＵＨ２２と、ＯＣＳ１９との間のシーケンス図を示している。なお、ＦＣＵＨ２２は、ＦＣＵボード６２の立ち上げを管理し、ＯＣＳ１９は、操作パネルボード５５の立ち上げを管理している。
【００９０】
まず、ステップＳ１とステップＳ２で、コントローラボード５０及びエンジンボード５２は、互いに通信可能なことを確認する。そして、コントローラボード５０は、ステップＳ３で、エンジンボード５２に対し、コントローラと接続されたことを通知する。エンジンボード５２も同様に、ステップＳ３で、コントローラボードに対し、エンジンが接続したことを通知する。このとき、エンジンボード５２は、搭載されているプログラムに関する情報も同時に送信する。
【００９１】
ＦＣＵＨ２２は、ステップＳ５で、ＦＣＵボード５１が起動したことを確認すると、ＦＣＵボード５１が起動したことと、ＦＣＵボード５１に搭載されているプログラムに関する情報をコントローラボード５０に送信する。また、ＯＣＳ１９も同様に、操作パネルボード５５が起動すると、ＯＣＳが起動したことと、操作パネルボード５５に搭載されているプログラムに関する情報を送信する。
【００９２】
次に、プログラムを更新するときの処理について説明する。
【００９３】
上記処理部のプログラムの更新は、コントローラボード５０のＳＣＳ２０の指示により行われる。まず、このＳＣＳ２０が含まれるコントローラボード５０に搭載されているプログラムの更新について説明する。
【００９４】
コントローラボード５０に搭載されている各アプリ９、１０、１１、１２のプログラムと、コントローラ６のプログラム（図１参照）であるが、それらは、個々に更新を行えるようになっている。
【００９５】
また、コントローラ６の各プログラムは、通常の処理をしている場合、ＮＶ−ＲＡＭ４７に書き込まれたプログラムで動作している。したがって、プログラムの更新をする場合は、ＮＶ−ＲＡＭ４７上のプログラムを書き換えることはできないため、実行しているプログラムをローカルメモリ３７あるいはシステムメモリ３２などのＲＡＭに展開し、その展開したプログラムで処理を実行するようになる。
【００９６】
しかし、ＲＡＭは、多くの容量を持たないため、コントローラボード５０は、通常の動作を実行するためのプログラムとは別に、プログラムを更新するための更新用プログラムを用意しておき、その更新用プログラムをＲＡＭに展開してプログラムの更新を行う。図５は、ＮＶ−ＲＡＭからＲＡＭへの更新用プログラムの展開を示す図である。図５に示されるように、ＮＶ−ＲＡＭに書き込まれている更新用プログラム２０１が、ＲＡＭに更新用プログラム２０２として展開される。
【００９７】
この更新用プログラムと通常の動作を実行するためのプログラムの違いについて説明する。
【００９８】
コントローラ６のプログラムは、多くの処理部と通信を行い、融合機１の制御を行うため、通信を行うためのプログラムを含んでいる。図６は、コントローラプログラム２０３と、周辺ソフトプログラム２０４とが通信可能な様子を示すものである。なお、図６における周辺ソフトプログラムとは、図３に示されるＦＣＵファーム５６など直接に通信を行うソフトでもよいし、エンジンボード５２に搭載されているファームでもよい。
【００９９】
このようにコントローラボード５０は、他の処理部の制御を行うため、送受信する内容を実行するためのプログラムは、サイズが大きいプログラムである。
【０１００】
更新用プログラムは、上記通信を行うためのプログラムを除くことにより、サイズの小さいプログラムとなったプログラムに、更新する処理を加えたプログラムであるので、通常の処理を実行するためのプログラムと比較して小さなサイズのプログラムである。
【０１０１】
この更新用プログラムによって、周辺ソフトとの通信は行えなくなるが、ＲＡＭを占有する領域を減らすことが可能となる。図７は、更新用プログラム２０３の実行中の状態における通信の様子を示すもので、コントローラボード５０と周辺ソフトプログラム２０４とが通信を行えなくなった様子を示す
このように、コントローラボード５０に搭載されたコントローラ６のプログラムを更新すると、各処理部との通信が行えなくなる。したがって、この場合、コントローラ６のプログラムは、他の処理部のプログラムの更新を行えないことになる。
【０１０２】
このことは、フィニッシャ５３あるいはＡＤＦ５４と通信するエンジンボード５２についても言えることである。フィニッシャ５３あるいはＡＤＦ５４は、エンジンボード５２からプログラムの更新を指示されることになるため、エンジンボード５２のプログラムを更新すると、エンジンボード５２は、コントローラボード５０と同様にフィニッシャ５３あるいはＡＤＦ５４との通信が行えなくなり、フィニッシャ５３あるいはＡＤＦ５４のプログラムの更新を行えないことになる。
【０１０３】
すなわち、コントローラボード５０と通信するために経由する処理部の数が多いものほど、先にプログラムの更新を行わなければならない。
【０１０４】
そこで次に、プログラムを更新する順番を定めるための優先度情報について図８を用いて説明する。図８に示される優先度情報は、プログラム種類とそのプログラムの優先度を示すテーブルである。プログラム種類とは、ＦＣＵファームやフィニッシャファーム、プリンタアプリなどを表す。
【０１０５】
また、優先度であるが、例えば、プログラムＣの優先度は２であり、プログラムＥの優先度は１０である。この優先度の値が小さい方が更新する順番が先になる。したがって、プログラムＤよりもプログラムＡの方が更新する順番が先になる。また、同じ順位の場合は、その順位のいずれのプログラムから更新しても良い。
【０１０６】
この優先度情報は、各処理部とコントローラボード５０との通信をするために経由する処理部の数に応じて定まる。したがって、図３に示されるような処理部の配置であれば、エンジンボード５２を経由してコントローラボード５０と通信を行うフィニッシャファーム５９とＡＤＦファーム６０の優先度が１となる。
【０１０７】
次に、この優先度情報に応じて取得した更新プログラムで更新する順番を定める更新順番情報と、その生成する過程について説明する。
【０１０８】
図９は、更新順番情報を生成する過程を示した図である。更新プログラムをプログラムＥ、Ｆ、Ｄ、Ａとし、この順序でダウンロードされたとする。
【０１０９】
コントローラ６は、優先度情報から取得した更新プログラムの優先度を参照し、取得した更新プログラムとその優先度の組で構成される優先度表７０を生成する。そして、この優先度表７０を優先度で昇順にソートし、更新順番情報７１を生成する。また、更新順番情報７１は、順番と取得した更新プログラムにより更新されるプログラムの種類とを対応付けた情報を有している。
【０１１０】
このように、更新順番情報７１を生成した後、更新順番情報７１を拡張しても良い。図１０は、更新順番情報７１を拡張したもので、図に示されるようにバージョンや、実行状態を加えたものである。なお、図１０の実行状態には、「未実行」、「実行中」、「実行済み」が示される。「未実行」は、プログラムの更新を行なっていない状態を示す。「実行中」は、プログラムの更新を実行中である状態を示す、また、「実行済み」は、プログラムの更新の実行が済んだ状態を示す。以上のように、実行状態は、更新プログラムにより更新されるプログラムの更新状況を示す情報である。
【０１１１】
なお、図１０において、コントローラ６のプログラムの更新より操作パネルファームの更新の方が、後に行われるようになっている。その理由は、操作パネルファームがオペレータに対して進捗状況を描画するためである。そのため、操作パネルファームを更新する順番が最後となる。図１１は、操作パネルファーム２０５が書き込まれたＮＶ−ＲＡＭからＲＡＭ上に展開された更新プログラム２０６を示すものである。
【０１１２】
操作パネルファームの更新をコントローラ６のプログラムの更新の後に行う場合、コントローラ６の更新用プログラムは、操作パネルボードとの通信を行う処理を含む。なお、進捗状況を描画する必要が無ければ、操作パネルファームを更新する順番も、他の処理部のプログラムの更新と同様に定める。
【０１１３】
以上説明した更新順番情報は、コントローラ６のＳＣＳ２０が保有する。図１２は、更新順番情報のコントローラ６における位置を示す図である。図に示されるように更新順番情報２０７は、コントローラ６が保有する。
【０１１４】
次に、融合機１におけるプログラムの更新処理を図１３のフローチャートを用いて説明する。
【０１１５】
更新プログラム取得段階に対応するステップＳ１０１で、コントローラ６のＳＣＳ２０は、ネットワークを介して更新プログラムを取得したＯＵＳ１９からプログラム更新開始要求を受信する。次のステップＳ１０２で、コントローラ６は、優先情報とＲＡＭに展開された更新プログラムに応じて、更新順番情報を生成する。
【０１１６】
次に、コントローラ６は、プログラム更新段階に対応するステップＳ１０３で、更新順番情報に示される更新未実行状態のプログラムのうち、最優先のプログラムの更新を実行する。そして、コントローラ６は、ステップＳ１０４で更新を実行しているプログラムの更新順番情報の状態を実行中に変更し、変更終了後実行済みに変更する。
【０１１７】
次に、コントローラ６は、ステップＳ１０５で、更新順番情報に登録されている全プログラムの更新が実行完了したかどうか判断し、完了していない場合は、再びステップＳ１０３の処理を実行する。完了した場合、コントローラ６は、ステップＳ１０６で更新したプログラムが搭載されるボードのリブートを実行し、処理を終了する。
【０１１８】
次に、リブート処理について説明する。まず、ボードの種類について説明する。ボードには、コントローラ６が直接リブート可能なものと、コントローラ６がリブート実行要求をすることにより、ボードが自らリブートするものの２種類ある。これらのボードのリブート処理について説明する。
【０１１９】
最初に、コントローラ６が直接にリブート可能なボードのリブート処理について、図１４を用いて説明する。コントローラ６は、ステップＳ２０１で、全ての更新対象プログラムの更新処理が完了すると、ステップＳ２０２で、エンジンファームに対し、リブートしても不具合が起きないように、処理の実行を制限させる動作停止要求を通知する。
【０１２０】
ステップＳ２０３は、動作停止要求に対するエンジンファームからの動作停止完了待ちである。このステップで、動作停止完了を受信すると、コントローラ６はステップＳ２０４で、操作パネルファームに動作停止要求を通知する。そして、ステップＳ２０５で、コントローラ６は、再び動作停止要求対する操作パネルファームからの動作停止完了待ちとなる。
【０１２１】
このステップで動作停止完了を受信すると、コントローラ６はステップＳ２０６で、リブートを実行する。
【０１２２】
このように、コントローラ６が直接にリブート可能なボードの場合、コントローラ６は、リブートする前に動作停止要求を行う。
【０１２３】
次に、コントローラ６がリブート実行要求をすることにより、ボードが自らリブートするボードのリブート処理について、図１５を用いて説明する。コントローラ６は、ステップＳ３０１で、全ての更新対象プログラムの更新処理が完了すると、ステップＳ３０２で、エンジンファームに対し、リブート実行要求を通知する。次に、コントローラ６は、ステップＳ３０３で、操作パネルファームにリブート実行要求を通知する。その一定時間後に、コントローラ６は、ステップＳ３０４で、自らのリブートを実行する。そして、再起動後、コントローラ６は、ステップＳ３０５で各処理部と通信を再開する。
【０１２４】
このように、コントローラ６がリブート実行要求をすることにより、ボードが自らリブートするボードの場合、コントローラ６は、リブート実行要求を通知し、一定時間後に自らをリブートする。
【０１２５】
上述したフローチャートの処理を、図７のシーケンス図を用いて説明する。このシーケンス図は、ＯＵＳ１９と、ＳＣＳ２０と、操作パネルファーム６１と、システムソフト７２と、エンジンファーム７３との間で行われるやり取りを示すものである。なお、システムソフト７２は、図１に示されるコントローラ６とアプリケーション層５のプログラムを表す。エンジンファーム７３は、エンジンボードに搭載されているプロッタファーム５７あるいはスキャナファーム５８を表す。
【０１２６】
更新プログラム取得段階に対応するステップＳ４０１で、コントローラ６のＯＵＳ１９は、同じコントローラ６のＳＣＳ２０に対し、更新プログラムをダウンロードしたことを通知する。この通知により、ＳＣＳ２０は、モジュール判定処理を行い、後述する更新管理テーブルを生成する。更新管理テーブルを生成したＳＣＳ２０は、プログラム更新段階に対応するステップＳ４０２でエンジンファーム７３に更新プログラムを送信する。エンジンファーム７３は、プログラムの更新が完了するとステップＳ４０３で、ＳＣＳ２０に更新結果応答を通知する。
【０１２７】
次に、ＳＣＳ２０は、ステップＳ４０４で、コントローラ６のプログラムを更新するために、ＳＣＳ２０を除くシステムソフト７２にリブート準備要求を通知する。システムソフト７２は、リブートの準備が完了すると、ステップＳ４０５で、リブート準備完了を通知する。
【０１２８】
次に、ＳＣＳ２０は、揮発性記憶部であるＲＡＭ実行へ切り替える（図５参照）。ＲＡＭ実行に切り替わったＳＣＳ２０は、ステップＳ４０６でシステムソフト７２のプログラムの更新処理を行う。次に、ＳＣＳ２０は、ステップＳ４０７で、操作パネルファーム６１に対し、更新プログラムを送信する。操作パネルファーム６１は、ステップＳ４０８で、ＳＣＳ２０に対しプログラムを更新した結果を通知する。
【０１２９】
ＳＣＳ２０は、全てのプログラムの更新が完了したため、再起動段階に対応するステップＳ４０９でエンジンファーム７３と、操作パネルファーム７１とをステップＳ４０９でリブートする。そして、ＳＣＳ２０は、ｔ秒後にシステムソフト７２をリブートする。
【０１３０】
上述した更新管理テーブルの生成について、図１７を用いて説明する。この更新管理テーブルは、テーブルの項目として、プログラム種類と、そのプログラムのバージョンと、受信プログラムデータのモジュールＩＤと、更新の実行状態とを有する。
【０１３１】
受信プログラムデータのモジュールＩＤとは、プログラムデータを一意的に特定するものである。また、実行状態は、図１０で説明した実行状態と同じものである。
【０１３２】
この更新実行用データテーブルにおいて、例えばスキャナエンジンプログラムは、バージョンが1.22で、モジュールＩＤがJP2CFa_escanで、実行状態は未実行である。
【０１３３】
この更新管理テーブルの生成を説明するため、まず、図１８に示されるテーブルについて説明する。図１８に示されるテーブルは、融合機１に搭載されているモジュールＩＤの構成を示すものである。
【０１３４】
このテーブルは、項目として、融合機１のプログラムのプログラム種類と、そのプログラムのバージョンと、モジュールＩＤとを有する。融合機１の構成が、図１８に示される構成であるとする。また、ダウンロードした更新プログラムが、プロッタエンジンプログラム、スキャナエンジンプログラム、コントローラプログラム、プリンタアプリプログラム、ＦＡＸアプリプログラム、操作部プログラムの６つであるとする。
【０１３５】
このときＳＣＳ２０は、当該機種のプログラム構成情報に含まれないプログラムを外し、図１９に示される更新管理テーブルを生成する。今の場合、融合機１の構成にＦＡＸアプリプログラムが搭載されていないため、図１９に示されるように、ＦＡＸアプリプログラムを除いた更新管理テーブルが生成される。
【０１３６】
次に、ＳＣＳ２がプログラムを更新した順にリブートさせる処理について、図２０のフローチャートを用いて説明する。
【０１３７】
プログラム更新段階に対応するステップＳ５０１で、ＳＣＳ２０は、エンジンファーム７３のプログラム更新処理を実行する。次のステップＳ５０２で、ＳＣＳ２０は、エンジンファーム７３に動作停止要求を通知する。
【０１３８】
ステップＳ５０３は、エンジンファーム７３から送信される動作停止完了の受信待ちである。この動作停止完了をＳＣＳ２０が受信すると、再起動段階に対応するステップＳ５０４で、ＳＣＳ２０は、エンジンファーム７３のリブートを実行し、ステップＳ５１２へ処理を進める。
【０１３９】
ステップＳ５０２の処理に戻る。ステップＳ５０２で、エンジンファーム７３に動作停止要求を通知したＳＣＳ２０は、ステップＳ５０５で、システムソフト７２のプログラム更新処理を実行する。次のステップＳ５０６で、ＳＣＳ２０は、ＳＣＳ２０以外のシステムソフト７２に動作停止要求を通知する。
【０１４０】
ステップＳ５０７は、システムソフト７２から送信される動作停止完了の受信待ちである。この動作停止完了をＳＣＳ２０が受信すると、ＳＣＳ２０は、ステップＳ５１２へ処理を進める。
【０１４１】
ステップＳ５０６の処理に戻る。ステップＳ５０６で、システムソフト７２に動作停止要求を通知したＳＣＳ２０は、ステップＳ５０８で、操作パネルファーム６１のプログラム更新処理を実行する。次のステップＳ５０９で、ＳＣＳ２０は、操作パネルファーム６１に動作停止要求を通知する。
【０１４２】
ステップＳ５１０は、操作パネルファーム６１から送信される動作停止完了の受信待ちである。この動作停止完了をＳＣＳ２０が受信すると、ＳＣＳ２０は、再起動段階に対応するステップＳ５１１で操作パネルファーム６１のリブートを実行する。
【０１４３】
ＳＣＳ２０は、ステップＳ５１２で、エンジンファーム７３と操作パネルファーム６１のリブートが完了したと判断すると、ステップＳ５１３でシステムソフト７２のリブートを実行し処理を終了する。
【０１４４】
次に、上述した処理を、図２１のシーケンス図を用いて説明する。このシーケンス図は、先ほどのシーケンス図と同様に、ＯＵＳ１９と、ＳＣＳ２０と、操作パネルファーム６１と、システムソフト７２と、エンジンファーム７３との間で行われるやり取りを示すものである。
【０１４５】
更新プログラム取得段階に対応するステップＳ６０１で、ＯＵＳ１９は、ＳＣＳ２０に対し、更新プログラムをダウンロードしたことを通知する。この通知により、ＳＣＳ２０は、上述したモジュール判定処理を行い、更新管理テーブルを生成する。
【０１４６】
次に、ＳＣＳ２０は、プログラム更新段階に対応するステップＳ６０２でエンジンファーム７３に更新プログラムを送信する。エンジンファーム７３は、プログラムの更新が完了すると、ステップＳ６０３で、ＳＣＳ２０に更新結果応答を通知する。更新結果応答を通知されたＳＣＳ２０は、再起動段階に対応するステップＳ６０４で、エンジンファーム７３に対し、リブート実行要求を行い、エンジンファーム７３は、リブートを実行する。
【０１４７】
次に、ＳＣＳ２０は、ステップＳ６０５で、コントローラ６のプログラムを更新するために、ＳＣＳ２０を除くシステムソフト７２にリブート準備要求を通知する。システムソフト７２は、リブートの準備が完了すると、ステップＳ６０６で、リブート準備完了を通知する。そして、ＳＣＳ２０は、上述したＲＡＭ実行へ切り替える。
【０１４８】
ＲＡＭ実行に切り替わったＳＣＳ２０は、ステップＳ６０７でシステムソフトのプログラムの更新処理を行う。次に、ＳＣＳ２０は、ステップＳ６０８で、操作パネルファーム６１に対し、更新プログラムを送信する。操作パネルファーム６１は、ステップＳ６０９で、ＳＣＳ２０に対しプログラムを更新した結果を通知する。
【０１４９】
次に、ＳＣＳ２０は、再起動段階に対応するステップＳ６１０で、操作パネルファームに対し、リブート実行要求を行い、操作パネルファーム６１は、リブートを実行する。
【０１５０】
そして、ＳＣＳ２０は、全てのプログラムの更新が完了したため、ｔ秒後にシステムソフト７２をリブートする。
【０１５１】
次に、ＳＣＳ２０が、操作パネルファーム６１やエンジンファーム７３との通信回線が切断されたことを検出することで、ＳＣＳ２０が自らのリブートを実行する処理について説明する。
【０１５２】
通信回線が切断されることは、通信相手がリブートしたことを意味する。したがって、この処理は、ＳＣＳ２０の通信相手が確実にリブートを実行したかどうか確認した後に、ＳＣＳ２０が自らのリブートを実行する処理である。
【０１５３】
この処理を、図２２を用いて説明する。更新プログラム取得段階に対応するステップＳ７０１で、ＯＵＳ１９は、ＳＣＳ２０に対し、更新プログラムをダウンロードしたことを通知する。この通知により、ＳＣＳ２０は、モジュール判定処理を行い、上述した更新管理テーブルを生成する。
【０１５４】
更新管理テーブルを生成したＳＣＳ２０は、プログラム更新段階に対応するステップＳ７０２でエンジンファーム７３に更新プログラムを送信する。エンジンファーム７３は、プログラムの更新が完了するとステップＳ７０３で、ＳＣＳ２０に更新結果応答を通知する。
【０１５５】
次に、ＳＣＳ２０は、ステップＳ７０４で、コントローラ６のプログラムを更新するために、ＳＣＳ２０を除くシステムソフト７２にリブート準備要求を通知する。システムソフト７２は、リブートの準備が完了すると、ステップＳ７０５で、リブート準備完了を通知する。
【０１５６】
次に、ＳＣＳ２０は、ＲＡＭ実行へ切り替える。ＲＡＭ実行に切り替わったＳＣＳ２０は、ステップＳ７０６でシステムソフト７２のプログラムの更新処理を行う。次に、ＳＣＳ２０は、ステップＳ７０７で、操作パネルファーム６１に対し、更新プログラムを送信する。操作パネルファーム６１は、ステップＳ７０８で、ＳＣＳ２０に対しプログラムを更新した結果を通知する。
【０１５７】
そして、ＳＣＳ２０は、全てのプログラムの更新が完了したため、再起動段階に対応するステップＳ７０９でエンジンファーム７３にリブート実行要求を行う。これにより、ステップＳ７１０で、エンジンファーム７３との通信回線が切断されたことが確認される。
【０１５８】
次に、ＳＣＳ２０は、再起動段階に対応するステップＳ７１１で操作パネルファーム６１にリブート実行要求を行う。これにより、ステップＳ７１２で、操作パネルファーム６１との通信回線が切断されたことが確認される。
【０１５９】
次に、ＳＣＳ２０は、エンジンファーム７３と操作パネル６１がリブートを実行したことが確認できたので、ＳＣＳ２０は、システムソフト７２をリブートする。
【０１６０】
以上、リブートする方法として、全てのプログラムの更新が完了してからリブートする方法と、プログラムの更新が完了した順にリブートする方法の２つの方法について説明した。
【０１６１】
これら２つの方法は、融合機１がリブートするまでの時間が異なっている。図２３は、全ての処理部のプログラムの更新が終了した後に、リブートする場合に要する時間を示すものである。
【０１６２】
図２３には、プログラムの更新をＦＣＵファームから行い、そのＦＣＵファームのプログラムの更新が終了した時刻ａに、エンジンファームのプログラムの更新を開始していることが示されている。また、エンジンファームのプログラムの更新処理が終了した時刻ｂに操作パネルファームの更新が開始することが示されている。そして、操作パネルファームのプログラムの更新が終了した時刻ｃにリブートを実行し、時刻ｄにリブートが終了したことが示されている。
【０１６３】
次の図２４は、プログラムの更新が完了した順にリブートする方法で行った場合に要する時間を示したものである。
【０１６４】
図２４には、プログラムの更新がＦＣＵファームから行われ、そのＦＣＵファームのプログラムの更新が終了した時刻ａに、エンジンファームのプログラムの更新とＦＣＵファームのリブート処理とが開始されていることが示されている。また、エンジンファームのプログラムの更新処理が終了した時刻ｂに操作パネルファームの更新とエンジンファームのリブート処理とを開始していることが示されている。そして、操作パネルファームのプログラムの更新が終了した時間ｃに操作パネルファームのリブートを実行し、時間ｄにリブートが終了したことが示されている。
【０１６５】
このように、プログラムの更新とリブートを平行して行うと、処理時間が短縮することができる。また、平行して処理を行う場合は、リブートする時間が長くかかるプログラムの更新を早く行うほど時間を短縮することが可能となる。
【０１６６】
次に、図２５を用いて、表示部であるオペレーションパネル３９の表示処理について説明する。
【０１６７】
更新プログラム取得段階に対応するステップＳ８０１で、ＳＣＳ２０は、ＯＵＳ１９から更新プログラムをダウンロードしたことを通知される。次のステップＳ８０２で、ＳＣＳ２０は、更新管理テーブルを生成する。そして、ＳＣＳ２０は、ステップＳ８０３で、更新未実行状態のプログラムのうち、テーブルの最上位のもののプログラムの更新を実行する。
【０１６８】
次に、ＳＣＳ２０は、ステップＳ８０４で、省エネモードかどうか判断し、省エネモードでなければ、ステップＳ８０７へ処理を進める。省エネモードの場合、ＳＣＳ２０は操作パネルファーム６１に対してパネルを非表示にさせる。この間、ＳＣＳ２０は、ステップＳ８０６で、省エネモードを解除するイベントが起きているかどうか判断する。
【０１６９】
ここで、省エネモードの解除するイベントとは、例えば、タッチセンサを有するオペレーションパネル３９が触れられたなどのイベントをいう。
【０１７０】
省エネモードが解除されると、ステップＳ８０７で、ＳＣＳ２０は、更新の進捗状況を表示し、処理を終了する。
【０１７１】
上述した省エネモードについて説明する。省エネモードには、待機状態、予熱状態、低電力状態、静音状態、エンジンオフ状態の５種類のモードが存在する。
【０１７２】
待機状態とは、印刷可能な状態である。予熱状態と低電力状態とは、定着温度を下げた状態で、低電力状態はエネルギースターに対応している。なお、定着温度を何度まで下げるか、あるいは下げないかは、機種や設定により異なる。静音状態とは、定着温度に係る電源の供給をやめ、周辺機器が静音起動し、ＨＤＤのアクセスが可能な状態であり、ファックスの着信やデータの入力に対応しているものである。エンジンオフ状態とは、エンジンを停止させた状態であり、例えばエンジンのＣＰＵがスリープしている、もしくは電気的に遮断されている状態である。
【０１７３】
次に、図２６を用いて、融合機１の状態を保持し、プログラム更新後に融合記１を更新前の状態に移行させる処理について説明する。
【０１７４】
更新プログラム取得段階に対応するステップＳ９０１で、ＳＣＳ２０は、ＯＵＳ１９から更新プログラムをダウンロードしたことを通知される。次に、ＳＣＳ２０は、現在の融合機１の状態を不揮発性記憶部であるＮＶ−ＲＡＭ４７に記憶する。
【０１７５】
なお、融合機１の状態とは、例えば先ほど省エネ状態などであり、オペレーションパネル３９の画面を暗くしている状態、予熱状態、定着温度を抑える、エンジンを停止しているなどの状態が挙げられる。
【０１７６】
ステップＳ９０３で、プログラムの更新実行が完了すると、ＳＣＳ２０は、ステップＳ９０４でリブートを実行する。
【０１７７】
そして、再起動後のステップＳ９０４でＳＣＳ２０は、ＮＶ−ＲＡＭ４７に記憶していた融合機１の状態に融合機を移行する。
【０１７８】
以下、利用者や管理者などからなるオペレータにプログラムの更新をしたことを通知する処理について説明する。図２７に示されるフローチャートは、プログラム更新後、印刷用紙に更新結果を印刷することによりオペレータに通知するＳＣＳ２０の処理を示している。
【０１７９】
このフローチャートの説明をする。更新プログラム取得段階に対応するステップＳ１００１でＳＣＳ２０は、ＯＵＳ１９からプログラム更新開始要求を受信する。次に、ＳＣＳ２０は、通知された更新プログラムから、更新管理テーブルを生成する。
【０１８０】
更新管理テーブルを生成したＳＣＳ２０は、プログラム更新段階に対応するステップＳ１００３で、更新管理テーブルの実行状態が未実行状態のプログラムのうち、最上位のもののプログラムの更新を実行する。
【０１８１】
ステップＳ１００４で、ＳＣＳ２０は、更新を実行したプログラムの更新管理テーブルにおける実行状態を実行中に変更する。次に、ＳＣＳ２０は、更新結果情報生成段階に対応するステップＳ１００５で、ＮＶ−ＲＡＭ４７に記憶される更新フラグを更新したプログラムごとに書き込む。この書き込み内容については後述する。
【０１８２】
ＳＣＳ２０は、ステップＳ１００６で更新実行用テーブルに登録されている全プログラムの更新が実行完了したかどうか判断し、完了していなければ、再びステップＳ１００３の処理を行い、完了していればステップＳ１００７へ処理を進める。
【０１８３】
ステップＳ１００７で、ＳＣＳ２０は、後述する更新日時情報に更新日時を書き込み、リブートを実行する。そして、ステップＳ１００８でリブート実行が完了、すなわち再起動後、ＳＣＳ２０は、ステップＳ１００９で、ＮＶ−ＲＡＭ４７に更新されたプログラムの情報があるかどうか判断する。
【０１８４】
ＮＶ−ＲＡＭ４７に更新されたプログラムの情報がない場合、ＳＣＳ２０は、ステップＳ１０１０でオペレーションパネル３９に通常の画面を表示し、処理を終了する。
【０１８５】
ＮＶ−ＲＡＭ４７に更新されたプログラムの情報がある場合、ＳＣＳ２０は、更新結果出力段階に対応するステップＳ１０１１で、更新結果情報に基づいた更新結果をプリントし、排出する。このプリント内容については、後に説明する。
【０１８６】
このように、プリントし、排出した後、ＳＣＳ２０は、ステップＳ１０１２で、ＮＶ−ＲＡＭ４７に記憶していた更新結果情報を消去し処理を終了する。
【０１８７】
以上説明したフローチャートにおけるステップＳ１００５で、ＮＶ−ＲＡＭ４７に書き込まれる内容について、図２８を用いて説明する。
【０１８８】
図２８に示される表は、ＮＶ−ＲＡＭ４７に書き込まれるデータ構造を示すものである。このデータ構造は、項目として、プログラム名と、更新前のバージョンと、更新後のバージョンと、更新結果を有する。
【０１８９】
このうち、プログラム名は、エンジンプログラムのように、プログラムの名前を表し、例えば、文字コードまたは予め割り振られたコードで表すことができる。更新前のバージョンは、そのプログラムの更新する前のバージョンを表し、同様に文字コードで表すことができる。更新後のバージョンは、そのプログラムを更新した後のバージョンを表し、同様に文字コードで表すことができる。プログラムの更新の成否を示す更新結果は、プログラムの更新が成功したかどうかを表すデータであり、このデータは、１ビット以上のデータであれば表すことができる。
【０１９０】
なお、図中のプリンタアプリプログラムの更新後と更新結果に示されている「ＮＵＬＬ」は、そのデータが「０」で表されており、そのデータの内容がないことを示す。したがって、プリンタアプリプログラムは、更新されなかったことが示されている。
【０１９１】
次に、図２９を用いて、ＮＶ−ＲＡＭ４７に書き込まれる更新日時情報について説明する。図２９に示されるように、更新日時情報は、西暦、月、日、時、分で書き込まれる。
【０１９２】
図２８、図２９に示したデータが更新結果情報であるが、オペレータに提供する更新結果に応じ、更新結果情報の内容を適宜変更しても良い。例えば単にプログラムの更新の成否だけ提供するのであれば、１ビット以上の情報があれば十分である。
【０１９３】
次に、ステップＳ１０１１でプリントされる内容について、図３０を用いて説明する。プリントした内容は、更新結果情報が有するプログラム名２１１と、更新前のバージョン２１２と更新後のバージョン２１３と、更新結果２１４と、更新日時２１５と、その他の定型文２１６、２１７になっている。
【０１９４】
このように、プリントされる内容には、更新結果情報が有する情報がプリントされ、オペレータなどにとっては、必要な情報が揃ったものとなっている。
【０１９５】
次に、更新結果をオペレータに電子メールで送信する処理について、図３１のフローチャートを用いて説明する。なお、図３１のフローチャートのステップＳ１１０１からステップＳ１１０８までは、図２７のフローチャートのステップＳ１００１からステップＳ１００８と同じ処理のため、説明を省略し、ステップＳ１１０９以降の処理について説明する。
【０１９６】
リブート実行完了後、ＳＣＳ２０は、ステップＳ１１０９で、ＮＶ−ＲＡＭ４７に更新されたプログラムの情報があるかどうか判断する。
【０１９７】
ＮＶ−ＲＡＭ４７に更新されたプログラムの情報がない場合、ＳＣＳ２０は、ステップＳ１１１０でオペレーションパネル３９に通常の画面を表示し、処理を終了する。
【０１９８】
ＮＶ−ＲＡＭ４７に更新されたプログラムの情報がある場合、ＳＣＳ２０は、ステップＳ１１１１で、管理者のメールアドレスが設定されているかどうか判断する。管理者のメールアドレスが設定されていない場合、ＳＣＳ２０は、ステップＳ１１１３へ処理を進める。
【０１９９】
管理者のメールアドレスが設定されている場合、ステップＳ１１１２で、ＳＣＳ２０は、管理者宛に更新結果情報に基づいた更新結果が記された電子メールを送信する。電子メールを送信した後、ＳＣＳ２０は、ステップＳ２１３で、ＮＶ−ＲＡＭ４７に記憶していた更新結果情報を消去し処理を終了する。
【０２００】
送信した電子メールの内容を、図３２を用いて説明する。図３２に示されるように、更新結果情報が有するプログラム名２１１と、更新前のバージョン２１２と更新後のバージョン２１３と、更新結果２１４と、更新日時２１５と、その他の定型文２１６、２１７になっている。電子メールで送信される内容も、プリントされる内容と同様のものとなる。
【０２０１】
次に、表示部であるオペレーションパネル３９に表示することによってオペレータに通知する処理について、図３３のフローチャートを用いて説明する。なお、図３３のフローチャートのステップＳ１２０１からステップＳ１２０８までは、図２７のフローチャートのステップＳ１００１からステップＳ１００８と同じ処理のため、説明を省略し、ステップＳ１２０９以降の処理について説明する。
【０２０２】
リブート実行完了後、ＳＣＳ２０は、ステップＳ１２０９で、ＮＶ−ＲＡＭ４７に更新されたプログラムの情報があるかどうか判断する。
【０２０３】
ＮＶ−ＲＡＭ４７に更新されたプログラムの情報がない場合、ＳＣＳ２０は、ステップＳ１２１０でオペレーションパネル３９に通常の画面を表示し、処理を終了する。
【０２０４】
ＮＶ−ＲＡＭ４７に更新されたプログラムの情報がある場合、ＳＣＳ２０は、ステップＳ１２１１で、記憶した更新結果情報に基づいた更新結果をオペレーションパネル３９に表示する。
【０２０５】
このように、オペレーションパネル３９に表示した後、ＳＣＳ２０は、ステップＳ１２１２で、ＮＶ−ＲＡＭ４７に記憶していた更新結果情報を消去し処理を終了する。
【０２０６】
オペレーションパネル３９の表示内容を、図３４を用いて説明する。図３４には、各種キー２２１、２２３、２２４、２２５、２２６と、表示画面２２２が示されている。表示画面２２２には、更新結果情報が有するプログラム名２２８と、更新前のバージョン２２９と更新後のバージョン２３０と、更新結果２３１と、更新日時２３２と、その他の定型文２３３と、ＯＫボタン２２７が表示される。
【０２０７】
各種キー２２１、２２３、２２４、２２５、２２６は、融合機１の操作をするためのキーである。表示画面２２２は、オペレータに向け情報を表示するものである。ＯＫボタン２２７は、表示されている内容を閉じる際にオペレータが押下するものである。オペレーションパネルに表示される内容も、プリントされる内容と同様のものとなる。
【０２０８】
次に、オペレータが閲覧できるように、ＮＶ−ＲＡＭ４７に更新履歴を記憶する処理について、図３５のフローチャートを用いて説明する。なお、図３５のフローチャートのステップＳ１３０１からステップＳ１３０８までは、図２７のフローチャートのステップＳ１００１からステップＳ１００８と同じ処理のため、説明を省略し、ステップＳ１３０９以降の処理について説明する。
【０２０９】
リブート実行完了後、ＳＣＳ２０は、ステップＳ１３０９で、ＮＶ−ＲＡＭ４７に更新されたプログラムの情報があるかどうか判断する。
【０２１０】
ＮＶ−ＲＡＭ４７に更新されたプログラムの情報がない場合、ＳＣＳ２０は、ステップＳ１３１０でオペレーションパネル３９に通常の画面を表示し、処理を終了する。
【０２１１】
ＮＶ−ＲＡＭ４７に更新されたプログラムの情報がある場合、ＳＣＳ２０は、ステップＳ１３１１で、記憶した更新結果情報を更新履歴情報に追記する。更新履歴情報に更新結果情報を追記した後、ＳＣＳ２０は、ステップＳ１３１２で、ＮＶ−ＲＡＭ４７に記憶していた更新結果情報を消去し処理を終了する。
【０２１２】
更新履歴情報を、図３６を用いて説明する。更新履歴情報は、図３６に示されるように、更新日時ごとに更新結果情報が有するプログラム名と、更新前のバージョンと更新後のバージョンと、更新結果と、更新日時とを有する。
【０２１３】
このように、更新するごとに、その結果が記憶される。例えば、図３６の更新履歴情報には、２００１年の１２月１５日午前４時０分に行われた更新から、２００２年１１月１日午前２時０分に行われた更新までの更新履歴が記憶されている。
【０２１４】
以上が本発明の実施例であるが、この実施例において、更新プログラムを格納する不揮発性メモリは、コストのかからないフラッシュメモリを用いるようにしても良い。
【図面の簡単な説明】
【０２１５】
【図１】本発明による融合機の一実施例の構成図である。
【図２】本発明による融合機の一実施例のハードウェア構成図である。
【図３】各処理部とプログラムの位置づけを示す図である。
【図４】各処理部の起動を示すシーケンス図である。
【図５】ＮＶ−ＲＡＭからＲＡＭへの更新用プログラムの展開を示す図である。
【図６】通常の状態における通信の様子を示す図である。
【図７】更新用プログラム実行中の状態における通信の様子を示す図である。
【図８】優先情報を示す図である。
【図９】更新順番情報を生成する過程を示す図である。
【図１０】更新順番情報を示す図である。
【図１１】ＮＶ−ＲＡＭからＲＡＭへの更新用プログラムの展開を示す図である。
【図１２】更新順番情報の位置を示す図である。
【図１３】プログラムの更新処理を示すフローチャートである。
【図１４】直接にリブートを実行する処理を示すフローチャートである。
【図１５】リブート要求をすることによりリブートを実行する処理を示すフローチャートである。
【図１６】全てのプログラムの更新後にリブートを実行する処理を示すシーケンス図である。
【図１７】更新管理テーブルを示す図である。
【図１８】モジュールＩＤの構成を示す図である。
【図１９】更新管理テーブルを示す図である。
【図２０】プログラムの更新完了の順にリブートを実行する処理を示すフローチャートである。
【図２１】プログラムの更新完了の順にリブートを実行する処理を示すシーケンス図である。
【図２２】通信回線切断後にリブートを実行する処理を示すシーケンス図である。
【図２３】全てのプログラムの更新後にリブートを実行する場合の所要時間を示す図である。
【図２４】プログラムの更新順にリブートを実行する場合の所要時間を示す図である。
【図２５】更新進捗状況の表示に関する処理を示すフローチャートである。
【図２６】融合機の状態を保持する処理を示すフローチャートである。
【図２７】更新結果を印刷する処理を示すフローチャートである。
【図２８】更新結果情報を示す図である。
【図２９】更新結果情報を示す図である。
【図３０】印刷された更新結果を示す図である。
【図３１】更新結果を電子メールで送信する処理を示すフローチャートである。
【図３２】電子メールで送信された更新結果を示す図である。
【図３３】更新結果を表示する処理を示すフローチャートである。
【図３４】表示された更新結果を示す図である。
【図３５】更新履歴情報を記憶する処理を示すフローチャートである。
【図３６】更新履歴情報を示す図である。
【図３７】更新プログラムのデータ構造を示す図である。
【符号の説明】
【０２１６】
１  融合機
２  ソフトウェア群
３  融合機起動部
４  ハードウェア資源
５  アプリケーション層
６  コントローラ
７  コントロールサービス層
８  ハンドラ層
９  プリンタアプリ
１０  コピーアプリ
１１  ファックスアプリ
１２  スキャナアプリ
１３  ネットワークコントロールサービス（ＮＣＳ）
１４  リモートサービス（ＲＳ）
１５  オペレーションパネルコントロールサービス（ＯＣＳ）
１６  ファックスコントロールサービス（ＦＣＳ）
１７  エンジンコントロールサービス（ＥＣＳ）
１８  メモリコントロールサービス（ＭＣＳ）
１９  オンデマンドアップデートサービス（ＯＵＳ）
２０  システムコントロールサービス（ＳＣＳ）
２１  システムリソースマネージャ（ＳＲＭ）
２２  ファックスコントロールユニットハンドラ（ＦＣＵＨ）
２３  イメージメモリハンドラ（ＩＭＨ）
２４  その他のハードウェアリソース
２５  スキャナ
２６  プロッタ
２７  エンジンＩ／Ｆ（ＰＣＩ）
２８  アプリケーションプログラムインターフェース（ＡＰＩ）
３１  ＣＰＵ
３２  システムメモリ（ＭＥＭ−Ｐ）
３３  ノースブリッジ（ＮＢ）
３４  サウスブリッジ（ＳＢ）
３５  ＡＧＰ（Accelerated Graphics Port）
３６  ＡＳＩＣ
３７  ローカルメモリ（ＭＥＭ−Ｃ）
３８  ハードディスク装置（ＨＤ）
３９  オペレーションパネル
４０  ファックスコントロールユニット（ＦＣＵ）
４１  ＵＳＢデバイス
４２  ＩＥＥＥ１３９４デバイス
４３  エンジン部
４７  ＮＶ−ＲＡＭ
５０  コントローラボード
５１  ＦＣＵボード
５２  エンジンボード
５３  フィニッシャ
５４  ＡＤＦ
５５  操作パネルボード
５６  ＦＣＵファーム
５７  プロッタファーム
５８  スキャナファーム
５９  フィニッシャファーム
６０  ＡＤＦファーム
６１  操作パネルファーム
６２  ＰＣＩバス
６３  シリアル回線
６４  同期シリアル回線
７０  優先度表
７１  更新順番情報
７２  システムソフト
７３  エンジンファーム
１０１  ＮＩＣ
１０２  セントロニクスデバイス
１０３  Ｇ３規格対応ユニット
１０４  Ｇ４規格対応ユニット
２０１、２０２  更新用プログラム
２０３  コントローラプログラム
２０４  周辺ソフトプログラム
【図１】
2008152793.tif 000003
【図２】
2008152793.tif 000004
【図３】
2008152793.tif 000005
【図４】
2008152793.tif 000006
【図５】
2008152793.tif 000007
【図６】
2008152793.tif 000008
【図７】
2008152793.tif 000009
【図８】
2008152793.tif 000010
【図９】
2008152793.tif 000011
【図１０】
2008152793.tif 000012
【図１１】
2008152793.tif 000013
【図１２】
2008152793.tif 000014
【図１３】
2008152793.tif 000015
【図１４】
2008152793.tif 000016
【図１５】
2008152793.tif 000017
【図１６】
2008152793.tif 000018
【図１７】
2008152793.tif 000019
【図１８】
2008152793.tif 000020
【図１９】
2008152793.tif 000021
【図２０】
2008152793.tif 000022
【図２１】
2008152793.tif 000023
【図２２】
2008152793.tif 000024
【図２３】
2008152793.tif 000025
【図２４】
2008152793.tif 000026
【図２５】
2008152793.tif 000027
【図２６】
2008152793.tif 000028
【図２７】
2008152793.tif 000029
【図２８】
2008152793.tif 000030
【図２９】
2008152793.tif 000031
【図３０】
2008152793.tif 000032
【図３１】
2008152793.tif 000033
【図３２】
2008152793.tif 000034
【図３３】
2008152793.tif 000035
【図３４】
2008152793.tif 000036
【図３５】
2008152793.tif 000037
【図３６】
2008152793.tif 000038
【図３７】
2008152793.tif 000039