(57)【特許請求の範囲】
【請求項１】
画像形成処理で使用されるプリンタ部又はスキャナ部の少なくとも一方を含むハードウェア資源を備えた画像形成装置であって、
オペレーティングシステムと、
前記オペレーティングシステム上で動作し、前記ハードウェア資源を用いた画像形成処理をそれぞれ行う複数のアプリケーションをそれぞれ別個に更新できるように記憶可能な記憶部と、
前記記憶部に記憶されている複数のアプリケーションをそれぞれ起動させるアプリケーション起動手段と、
ネットワークを介して外部の装置からアプリケーションを更新する更新データを受信すると、前記記憶部に記憶されている複数のアプリケーションのうち、該更新データで更新すべきアプリケーションを該更新データに基づいて更新する更新手段と
を有し、
前記更新手段は、前記アプリケーション起動手段により前記複数のアプリケーションのすべてが起動されていないときに、起動されていない該複数のアプリケーションのうち前記更新すべきアプリケーションを前記外部の装置から受信した前記更新データに基づいて更新すること
を特徴とする画像形成装置。
【請求項２】
前記更新手段は、前記記憶部に記憶されている複数のアプリケーションのうち、前記更新データに含まれる識別情報により識別されるアプリケーションを該更新データに基づいて更新すること
を特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記画像形成装置は、前記更新すべきアプリケーションの更新を失敗したときに、更新が失敗した旨を表示部に表示させること
を特徴とする請求項１又は２に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置に係り、特に記憶部に格納されたプログラムをネットワーク経由で受信した更新データで更新する画像形成装置に関するものである。
【背景技術】
【０００２】
従来、プリンタ、コピー、ファクシミリ、スキャナなどの装置はそれぞれ別筐体として配設されるのが一般的であった。しかし、最近では、これら各装置の機能を１つの筐体内に収納した画像形成装置（以下、「複合機」という。）が知られている。この複合機は、１つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応する３種類のソフトウェアを設け、ソフトウェアの切り替えによって、当該装置をプリンタ、コピー、スキャナまたはファクシミリ装置として動作させるものである。
【０００３】
このような従来の複合機では、プリンタ、コピー、ファクシミリおよびスキャナの各機能ごとにソフトウェアを組み込んだ書き換え不可能なＲＯＭ（Read Only Memory）を搭載したコントローラボードを設け、複数の機能を実現する構成としていた。
【０００４】
したがって、従来の複合機では、各機能の変更、追加などを行う場合に、機能追加または機能変更を反映したプログラムを組み込んだ新たなＲＯＭを用意してＲＯＭごと交換するというハードウェア的な作業が必要であり、更新作業の労力が過大なものとなっていた。
【０００５】
このため、最近の複合機はフラッシュメモリのように電気的に内容の書き換えが可能なＲＯＭにプリンタ、コピー、ファクシミリおよびスキャナの各機能を含むプログラムを組み込み、複数の機能を複合サービスとして実現している。
【０００６】
このような複合機は、各機能の変更、追加などを行う場合に、機能追加または機能変更を行ったプログラムを更新データとしてフラッシュカードに記録し、このフラッシュカードを複合機のフラッシュカードインタフェースに挿入した状態で複合機を再起動する。
【０００７】
このとき複合機は、更新プログラムによって更新データをフラッシュカードから読み出し、読み出された更新データによってフラッシュメモリに記録されているプログラムが更新されるようになっている。このように、最近の複合機では、電気的に書き換え可能というフラッシュメモリの特性を利用して、ソフトウェア的にＲＯＭ更新を行っている。
【０００８】
例えば特許文献１には、ソフトウェアの変更や追加に柔軟に対処することを課題とする技術が記載されている。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、出願人は、表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピーまたはファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットホームを備えた画像形成装置（特開２００２−８２８０６号公報）を発明した。
【００１０】
なお、ユーザサービスとはユーザに提供する画像形成に係るサービスをいう。また、コントロールサービスとはアプリケーションに画像形成に係るハードウェア資源を提供するサービスをいう。
【００１１】
この画像形成装置によれば、アプリケーションの少なくとも２つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行うプラットホームを備えた構成とすることによって、通常の複合機に比べて将来的なアプリケーションの追加やコントロールサービスの追加などのソフトウェア開発を容易に行うことができ、拡張性が高いものとなっている。このため、このような構成の複合機では、機能追加や機能変更によるプログラム更新の必要性が従来の複合機よりも非常に高くなってくる。
【００１２】
例えば、複合機の使用契約では、プリンタ、コピー、スキャナの機能のみを使用する契約で複合機を導入し稼働していたが、使用契約の変更によりファクシミリ機能を追加して複合機を使用する場合も考えられる。この場合、ファクシミリ機能の追加により、ファクシミリ用のアプリケーションの追加、およびこれに伴うプラットホームの追加、変更が必要となってくる。
【００１３】
このような複数のアプリケーションおよび共通的な処理を行うプラットホームを備えた構成の複合機の場合には、特にこのような機能変更、機能追加の要求が不定期にかつ頻繁に生じるケースが多い。このため、従来のプログラム更新方法のように、プログラム更新を行うごとにフラッシュカードを入手し、そのフラッシュカードから更新データを読み込んでＲＯＭに格納されたプログラムの更新を行うという作業では、不定期にかつ頻繁に生じるプログラム更新のニーズに迅速に対応できない。また、フラッシュカードを用いたプログラム更新方法では、更新作業が非常に煩雑となり、作業効率が悪いという問題がある。
【００１４】
複合機は、コピー、プリンタ、スキャナ、ファクシミリなどの複合サービスを提供するものではあるが、複合機のすべての機種において提供可能なサービスが統一されているわけではない。例えば、すべての機能が提供可能な機種やファクシミリ機能やコピー機能など一部の機能が制限された機種など種々のパターンがある。このため、汎用ＯＳ上で動作する複数のアプリケーションや複数のコントロールサービスなども、提供可能な機能によって必然的に変わってくる。
【００１５】
しかしながら、従来の複合機では、上述のようにフラッシュカードを挿入して電源投入を行った場合、各アプリケーションや各コントロールサービスの起動を行わずにただちに更新プログラムが実行されてしまうため、複合機の構成を認識することができず、構成の相違に応じたプログラムの更新を正確に行うことができないという問題がある。
【００１６】
例えば、ファックスアプリやファックスコントロールサービスなどファクシミリ通信関連のプログラムが存在しない構成の複合機に対して、すべてのプログラムの更新データを含むフラッシュカードでプログラム更新処理を行った場合、ＲＯＭ上で更新の必要のないプログラムまで更新してしまう可能性もあり、プログラム更新を行うことにより複合機に障害を生じさせてしまう場合がある。
【００１７】
なお、特開２００１−２６８３０６号公報に記載されている技術は、所定のネットワークを介して接続されている機器を用いて、マルチファンクションペリフェラルが実行するプログラムを取得，実行するものであって、プログラムの更新を行うものではない。
【００１８】
この発明は上記に鑑みてなされたもので、プログラム更新作業を迅速，正確かつ容易に行うことができる画像形成装置を得ることを目的とする。
【課題を解決するための手段】
【００１９】
上記課題を解決するため、本発明は、画像形成処理で使用されるプリンタ部又はスキャナ部の少なくとも一方を含むハードウェア資源を備えた画像形成装置であって、オペレーティングシステムと、前記オペレーティングシステム上で動作し、前記ハードウェア資源を用いた画像形成処理をそれぞれ行う複数のアプリケーションをそれぞれ別個に更新できるように記憶可能な記憶部と、前記記憶部に記憶されている複数のアプリケーションをそれぞれ起動させるアプリケーション起動手段と、ネットワークを介して外部の装置からアプリケーションを更新する更新データを受信すると、前記記憶部に記憶されている複数のアプリケーションのうち、該更新データで更新すべきアプリケーションを該更新データに基づいて更新する更新手段とを有し、前記更新手段は、前記アプリケーション起動手段により前記複数のアプリケーションのすべてが起動されていないときに、起動されていない該複数のアプリケーションのうち前記更新すべきアプリケーションを前記外部の装置から受信した前記更新データに基づいて更新することを特徴とする。
【００２２】
本発明によれば、ネットワーク経由で更新データを受信し、更新データで記憶部に格納されているアプリケーション又はプログラムを更新するので、フラッシュカードなどの記録媒体を用いずにアプリケーション又はプログラム更新を迅速，正確かつ容易に、いつでも行うことができる。
【発明の効果】
【００２３】
本発明によれば、プログラム更新作業を迅速，正確かつ容易に行うことができる画像形成装置を提供可能である。
【図面の簡単な説明】
【００２４】
【図１】この発明の実施の形態１である複合機の構成を示すブロック図である。
【図２】実施の形態１の複合機のハードウェア構成図である。
【図３】実施の形態１の複合機で受信した更新データパケットの展開後のデータ構造図である。
【図４】実施の形態１の複合機における複合機起動部の構成を示すブロック図である。
【図５】実施の形態１の複合機におけるＲＯＭ更新の全体の処理手順を示す説明図である。
【図６】実施の形態１の複合機において、ＲＯＭモニタで実行される処理の手順を示すフローチャートである。
【図７】実施の形態１の複合機において、プログラム起動部で実行される処理の手順を示すフローチャートである。
【図８】実施の形態１の複合機１００において、ＳＣＳ１２２のＲＯＭ更新モードスレッドで実行される更新データの選定処理の手順を示すフローチャート（１／２）である。
【図９】実施の形態１の複合機１００において、ＳＣＳ１２２のＲＯＭ更新モードスレッドで実行される更新データの選定処理の手順を示すフローチャート（２／２）である。
【図１０】実施の形態１の複合機において、ＲＯＭ更新部によるＲＯＭ更新処理の手順を示すフローチャートである。
【図１１】実施の形態２の複合機で受信した更新データパケットの展開後のデータ構造図である。
【図１２】実施の形態２の複合機において、ＲＯＭモニタで実行される処理の手順を示すフローチャートである。
【図１３】実施の形態２の複合機において、ＳＣＳのＲＯＭ更新モードスレッドで実行される更新データ選定処理の手順を示すフローチャートである。
【図１４】実施の形態３の複合機におけるＲＯＭ更新の全体の処理手順を示す説明図である。
【図１５】実施の形態４の複合機におけるＲＯＭ更新の全体の処理手順を示す説明図である。
【発明を実施するための形態】
【００２５】
以下に添付図面を参照して、この発明にかかる画像形成装置およびプログラム更新方法の好適な実施の形態を詳細に説明する。
（実施の形態１）
図１は、この発明の実施の形態１である画像形成装置（以下、「複合機」という）の構成を示すブロック図である。図１に示すように、複合機１００は、白黒ラインプリンタ（B&W LP）１０１と、カラーラインプリンタ（Color LP）１０２と、スキャナ、ファクシミリなどのハードウェアリソース１０３などを有するとともに、プラットホーム１２０とアプリケーション１３０とから構成されるソフトウェア群１１０と、電源投入時に実行される複合機起動部１４０とを備えている。
【００２６】
複合機起動部１４０は、複合機１００の電源投入時にまずはじめに実行され、プラットホーム１２０やアプリケーション１３０を起動モードに応じて実行するものである。ここで、起動モードには通常モードとＲＯＭ更新モードがある。通常モードとは、複合機１００でコピー、プリント、スキャナ、ファクシミリなど通常の複合サービスを行うために起動するモードであり、後述するＳＲＡＭ２０８のリモートＲＯＭ更新フラグがＯＦＦに設定されている場合に起動される。
【００２７】
一方、ＲＯＭ更新モードとは記憶部の一例としてのフラッシュメモリの更新を行うために複合機１００を起動するモードであり、ＳＲＡＭ２０８のリモートＲＯＭ更新フラグがＯＮに設定されている場合に起動される。
【００２８】
プラットホーム１２０は、アプリケーション１３０からの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ（ＳＲＭ）１２３と、汎用ＯＳ１２１とを有する。
【００２９】
コントロールサービスは、複数のサービスモジュールから形成され、ＳＣＳ（システムコントロールサービス）１２２と、ＥＣＳ（エンジンコントロールサービス）１２４と、ＭＣＳ（メモリコントロールサービス）１２５と、ＯＣＳ（オペレーションパネルコントロールサービス）１２６と、ＦＣＳ（ファックスコントロールサービス）１２７と、ＮＣＳ（ネットワークコントロールサービス）１２８とから構成される。なお、このプラットホーム１２０は、あらかじめ定義された関数により前記アプリケーション１３０から処理要求を受信可能とするアプリケーションプログラムインタフェース（ＡＰＩ）を有する。
【００３０】
汎用ＯＳ１２１は、ＵＮＩＸ（登録商標）などの汎用オペレーティングシステムであり、プラットホーム１２０並びにアプリケーション１３０の各ソフトウェアをそれぞれプロセスとして並列実行する。
【００３１】
ＭＣＳ１２５は、メモリの制御を行うプロセスとして起動される。このＭＣＳ１２５のプロセスは、画像メモリの取得および解放、ハードディスク装置（ＨＤＤ）の利用、画像データの圧縮および伸張などのコピー、プリンタ、ファクシミリおよびスキャナなどの複合サービスを行う際に実行される通常モードスレッドと、複合機１００がＲＯＭ更新モードで起動された場合に、後述するリモートＲＯＭ更新アプリによって更新データパケットから展開された更新データを格納する更新データ領域をＳＤＲＡＭ２０３に確保するＲＯＭ更新モードスレッドとを有している。ここで、更新データパケットは、本発明における更新データ群を構成するものである。
【００３２】
ＯＣＳ１２６のプロセスは、オペレータと本体制御間の情報伝達手段となる操作パネル（オペレーションパネル）の制御という複合サービスを行う際に起動される通常モードスレッドと、かかる操作パネルの制御を行わず単に起動されるだけのＲＯＭ更新モードスレッドを有している。
【００３３】
ＦＣＳ１２７のプロセスは、システムコントローラの各アプリ層からＰＳＴＮ／ＩＳＤＮ網を利用したファクシミリ送受信、ＢＫＭ（バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用、ファクシミリ読みとり、ファクシミリ受信印刷、複合送受信を行うためのＡＰＩを提供するという複合サービスを行う際に起動される通常モードスレッドと、かかる機能を実行せずに単に起動されるだけのＲＯＭ更新モードスレッドを有している。
【００３４】
ＮＣＳ１２８は、ネットワークＩ／Ｏを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行うという複合サービスを行う際に実行される通常モードスレッドを有している。また、ＮＣＳ１２８の通常モードスレッドでは、さらにネットワークに接続された、例えば複合機開発元のホストコンピュータやアプリケーション開発元のサードベンダなどから、フラッシュメモリのＲＯＭ更新要求パケットを受信する。ＮＣＳ１２８のプロセスには、フラッシュメモリに組み込まれたプログラムの更新データを含む更新データパケットを複合機開発元のホストコンピュータやアプリケーション開発元のサードベンダからネットワーク経由で受信するＲＯＭ更新モードスレッドも有している。
【００３５】
ＳＲＭ１２３のプロセスは、ＳＣＳ１２２とともにシステムの制御およびリソースの管理を行うものである。ＳＲＭ１２３のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、ＨＤＤファイル、ホストＩ／Ｏ（セントロＩ／Ｆ、ネットワークＩ／Ｆ、ＩＥＥＥ１３９４  Ｉ／Ｆ、ＲＳ２３２Ｃ Ｉ／Ｆなど）のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御するという複合サービスを行う際に実行される通常モードスレッドと、かかるリソース管理を実行せずに単に起動されるだけのＲＯＭ更新モードスレッドを有している。
【００３６】
具体的には、このＳＲＭ１２３の通常モードスレッドは、要求されたハードウェア資源が利用可能であるか（他の要求により利用されていないかどうか）を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、ＳＲＭ１２３は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容（例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など）を直接実施している。
【００３７】
ＳＣＳ１２２のプロセスは、アプリ管理、操作部制御、システム画面表示、ＬＥＤ表示、リソース管理、割り込みアプリ制御という複合サービスを行う際に実行される通常モードスレッドを有している。例えばＳＣＳ１２２の通常モードスレッドは、ＮＣＳ１２８がネットワーク経由でＲＯＭ更新要求パケットを受信したときに、ＳＲＡＭ２０８のリモートＲＯＭ更新フラグをＯＮに設定し、複合機１００に対して再起動コマンドを発行する処理を行う。
【００３８】
ＳＣＳ１２２のプロセスは、さらに複合機１００がＲＯＭ更新モードで起動された場合にのみ起動されるＲＯＭ更新モードスレッドを通常モードスレッドとは別個に有している。このＲＯＭ更新モードスレッドは、複合機１００がＲＯＭ更新モードで起動されたときに、ＳＤＲＡＭ２０３に展開されたデータの中から、複合機１００で動作するアプリケーション、コントロールサービスの構成に応じた更新データを選定する処理を行う。
【００３９】
ＥＣＳ１２４のプロセスは、白黒ラインプリンタ（B&W LP）１０１、カラーラインプリンタ（Color LP）１０２、スキャナ、ファクシミリなどからなるハードウェアリソース１０３のエンジンの制御という複合サービスを行う際に実行される通常モードスレッドと、このようなエンジン制御を行わずに単に起動されるだけのＲＯＭ更新モードスレッドを有している。
【００４０】
このように、ＥＣＳ１２４、ＯＣＳ１２６、ＦＣＳ１２７、ＳＲＭ１２３の各ＲＯＭ更新モードスレッドはいずれも単に起動されるだけであるが、これは、ＲＯＭ更新処理時に、複合機内部で動作するコントロールサービスの存在を示すために起動されるようになっている。一方、ＭＣＳ１２５、ＳＣＳ１２２、ＮＣＳ１２８の各ＲＯＭ更新モードスレッドも、それぞれＲＯＭ更新に必要な処理を行うとともに、複合機内部で動作するコントロールサービスの存在を示すために起動されるようになっている。
【００４１】
アプリケーション１３０は、ページ記述言語（ＰＤＬ）、ＰＣＬおよびポストスクリプト（ＰＳ）を有するプリンタ用のアプリケーションであるプリンタアプリ１１１と、コピー用アプリケーションであるコピーアプリ１１２と、ファクシミリ用アプリケーションであるファックスアプリ１１３と、スキャナ用アプリケーションであるスキャナアプリ１１４と、ネットワークファイル用アプリケーションであるネットファイルアプリ１１５と、工程検査用アプリケーションである工程検査アプリ１１６と、更新データをＳＤＲＡＭ２０３上に展開するリモートＲＯＭ更新アプリ（以下、「ＲＲＵアプリ」という。）１１７とを有している。
【００４２】
これらの各アプリも、プラットホーム１２０と同様にそれぞれプロセスとして起動される。なお、ＲＲＵアプリ１１７のプロセスは、複合機１００がＲＯＭ更新モードで起動された場合に起動するようにしてもよい。ここで、アプリケーション１３０は、本発明におけるユーザサービスを構成するものである。
【００４３】
例えばＲＲＵアプリ１１７は、ＮＣＳ１２８がＲＯＭ更新要求パケットを受信して複合機１００がＲＯＭ更新モードで再起動したときに、後述するプログラム起動部によって起動されるようにしてもよい。また、ＲＲＵアプリ１１７はプラットホーム１２０と同様に、複合機１００が通常モードで起動したときも起動されるようにしてもよい。
【００４４】
ＲＲＵアプリ１１７は、ＮＣＳ１２８によりネットワーク経由で受信した更新データパケットを更新データに展開し、その更新データをＭＣＳ１２５のＲＯＭ更新モードスレッドによって確保されたＳＤＲＡＭ２０３の更新データ領域に格納する。
【００４５】
図２は、図１に示した実施の形態１の複合機１００のハードウェア構成図である。図２に示すように、この複合機１００は、コントローラボード２００と、オペレーションパネル２１０と、ファックスコントロールユニット（ＦＣＵ）２２０と、ＵＳＢデバイス２３０と、ＩＥＥＥ１３９４デバイス２４０と、ブルートゥースデバイス２５０と、エンジン部２６０から構成されている。
【００４６】
図２のコントローラボード２００は、ＡＳＩＣ２０１、ＣＰＵ２０２、ＳＤＲＡＭ２０３、フラッシュメモリ２０４、ＨＤＤ２０５、ＳＲＡＭ２０８およびネットワークインターフェースコントローラ２０９から構成されている。
【００４７】
オペレーションパネル２１０は、ＡＳＩＣ２０１に直接接続されている。ＦＣＵ２２０、ＵＳＢデバイス２３０、ＩＥＥＥ１３９４デバイス２４０，ブルートゥースデバイス２５０およびエンジン部２６０は、ＰＣＩバスを介してＡＳＩＣ２０１に接続されている。
【００４８】
ネットワークインターフェースコントローラ２０９は、ネットワーク２７１に接続されている他の機器とＭＡＣアドレスなどを用いて通信する。ＦＣＵ２２０は電話網２７２に接続されている。また、ＵＳＢデバイス２３０、ＩＥＥＥ１３９４デバイス２４０およびブルートゥースデバイス２５０は、他の端末２７３〜２７５に接続される。
【００４９】
ＳＲＡＭ２０８は、ＲＯＭ更新要求パケットを受信したときにＯＮ状態に設定されるリモートＲＯＭ更新フラグを格納する領域と、ＲＯＭ更新要求パケットの受信後、更新データパケットをネットワーク２７１経由で受信したときに、受信した更新データパケットから展開される更新データを格納する更新データ領域とが確保される不揮発性メモリである。また、ＳＲＡＭ２０８には、ＲＯＭ更新中に電源が切れた場合に、処理復帰のために更新中の各種情報が蓄積される。
【００５０】
ＳＲＡＭ２０８は、ＲＯＭ更新中に電源が切れた場合に、処理復帰のために更新中の各種情報を蓄積するバッテリを用いた不揮発性メモリであり、本発明における不揮発性記憶手段を構成する。
【００５１】
フラッシュメモリ（以下、「フラッシュＲＯＭ」という。）２０４には、上述の各アプリ、プラットホームを構成する各コントロールサービスやＳＲＭ１２３の各プログラムが格納されている。実施の形態１にかかる複合機１００は、これらの各プログラムがあらかじめフラッシュＲＯＭ２０４に組み込まれた状態で出荷され、ＲＯＭ更新要求パケットの受信によって、フラッシュＲＯＭ２０４のプログラムが更新されるという、リモートＲＯＭ更新の処理が実行されるようになっている。
【００５２】
フラッシュＲＯＭ２０４は、本発明における記憶部を構成するものである。なお、本発明における記憶部はフラッシュメモリ２０４に限るものでなく、ＳＤＲＡＭ２０３、ＨＤＤ２０５であってもよい。
【００５３】
図３は、ＮＣＳ１２８がネットワーク経由で受信した更新データパケットを展開した後のデータ構造図である。ここで、更新データパケットの展開とは、更新データパケットから、宛先ネットワークアドレス、パケット長などのネットワーク情報を除去してＲＯＭ更新に必要なデータを参照可能とすることである。
【００５４】
展開された更新データパケットは、図３に示すように、先頭のＲＯＭモニタ起動命令３０１と、ヘッダ部３０２と、データ部３０３とから構成される。ＲＯＭモニタ起動命令３０１は、複合機１００の起動時に参照されて後述するＲＯＭモニタの起動を行うコマンドである。
【００５５】
ヘッダ部３０２は、更新するモジュールに対応するように、モジュールごとのヘッダブロックに分かれている。各ヘッダブロックには、次のヘッダブロックまでのオフセットである次ヘッダオフセットと、モジュールの更新データまでのオフセットである更新データオフセットと、更新データのサイズと、モジュールの識別情報であるモジュールＩＤと、そのモジュールのフラッシュＲＯＭ２０４上での相対番地を示す更新先アドレスと、そのモジュールのサイズである更新先領域長とから構成される。
【００５６】
ここで、モジュールは、ＭＣＳ１２５、ＥＣＳ１２４、ＮＣＳ１２８などのコントロールサービス単位のプログラム、プリンタアプリ１１１、コピーアプリ１１２などのアプリ単位のプログラム、プリンタエンジン１０１，１０２、スキャナエンジンなどのエンジン単位のプログラムで更新可能となっている。また、更新データとは、これらのモジュールに対する変更プログラムのバイナリデータを圧縮形式にしたものである。なお、この圧縮された更新データは、ＲＲＵアプリ１１７によって展開される際に伸張される。
【００５７】
ヘッダ部３０２に続いてデータ部３０３が記録されており、データ部３０３には更新データがモジュールごとに格納されている。各モジュールの更新データの先頭は、モジュールに対応するヘッダブロックの更新データオフセットにより参照できるようになっている。
【００５８】
図４は、実施の形態１の複合機１００における複合機起動部１４０の構成を示すブロック図である。実施の形態１の複合機１００における複合機起動部１４０は、図４に示すとおり、ＲＯＭモニタ４１０と、プログラム起動部４２０と、ＲＯＭ更新モードスレッドを起動したＳＣＳ１２２と、ＲＯＭ更新部４３０とから構成される。ＲＯＭモニタ４１０、プログラム起動部４２０、ＲＯＭ更新部４３０はフラッシュＲＯＭ２０４に記憶されている。
【００５９】
ここで、プログラム起動部４２０は本発明におけるプログラム起動手段を、ＳＣＳ１２２は本発明の更新データ選定手段を、ＲＯＭ更新部４３０は本発明における更新手段をそれぞれ構成する。
【００６０】
ＲＯＭモニタ４１０は、更新データパケットの先頭に記録されたＲＯＭモニタ起動命令を実行することにより起動され、ハードウェアの初期化、コントローラボードの診断、ソフトウェアの初期化、汎用ＯＳ１２１の起動などを行う。
【００６１】
プログラム起動部４２０は、汎用ＯＳ１２１から呼び出されるものであり、起動モード設定部４２１と、サービス層起動部４２２と、アプリ起動部４２３と、アプリ起動情報設定部４２４とから構成される。
【００６２】
起動モード設定部４２１は、ＳＲＡＭ２０８に保持されているリモートＲＯＭ更新フラグのチェックを行って、通常モードまたはＲＯＭ更新モードの起動モードの設定を行う。サービス層起動部４２２は、汎用ＯＳ１２１の起動情報を取得して、コントロールサービスを起動する。アプリ起動情報設定部４２４は、ＲＯＭ更新モードの場合に実行され、各アプリの起動情報を取得して、取得したアプリ起動情報を環境変数に設定する。アプリ起動部４２３は、起動モードが通常モードである場合およびＲＯＭ更新モードである場合に実行され、各アプリの起動情報を取得して各アプリを起動する。
【００６３】
ＳＣＳ１２２のＲＯＭ更新モードスレッドは、プログラム起動部４２０のサービス層起動部４２２によって他のコントロールサービスとともに起動される。ＳＣＳ１２２のＲＯＭ更新モードスレッドでは、複合機１００で動作するコントロールサービスやアプリを判断して、ネットワーク２７１経由で受信した更新データから複合機１００の構成に応じた更新データを選定する。また、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ＲＯＭ更新部４３０を起動して、ＲＯＭ更新部４３０に対して選定した更新データの情報とともにＲＯＭ更新命令を発する。
【００６４】
ＲＯＭ更新部４３０は、ＳＣＳ１２２のＲＯＭ更新モードスレッドにより起動され、ＳＣＳ１２２からＲＯＭ更新命令を受け取って、更新データでフラッシュＲＯＭ２０４を更新するものである。ＲＯＭ更新部４３０は、ＳＣＳ１２２からのＲＯＭ更新命令を解析するＲＯＭ更新命令解読部４３１と、更新先アドレスと解析したＲＯＭ更新命令に基づいてフラッシュＲＯＭ２０４のプログラムを更新するＲＯＭ更新処理部４３３と、ＲＯＭ更新中の各種情報をＳＲＡＭ２０８へ格納するＳＲＡＭ処理部４３２と、ＲＯＭ更新処理中のユーザへの進捗表示を制御する表示制御部４３４とから構成される。
【００６５】
次にこのように構成された複合機１００におけるリモートＲＯＭ更新処理について説明する。図５は、実施の形態１の複合機１００におけるリモートＲＯＭ更新の全体処理の流れを示すブロック図である。
【００６６】
図５（ａ）は、複合機１００がＲＯＭ更新要求を受信したときの動作を示し、図５（ｂ）は複合機１００がＲＯＭ更新要求の受信後に再起動したときに、再起動の確認を行う動作を示し、図５（ｃ）は更新データパケットを受信したときの動作を示す。
【００６７】
図５（ａ）において、複合機１００が通常の複合サービスの動作を実行しているときは、各アプリ、各コントロールサービスがいずれも通常モードスレッドを実行している。
【００６８】
この状態で、ネットワーク経由で複合機開発元のホストコンピュータやアプリケーション開発元のサードベンダのホストコンピュータなどのリモートホストからＲＯＭ更新要求パケットが送信されてくると、ＮＣＳ１２８の通常モードスレッドはステップＳ５０１に進み、そのＲＯＭ更新要求パケットを受信する。
【００６９】
ステップＳ５０２では、ＮＣＳ１２８の通常モードスレッドが、受信したパケットの内容を判断して、ＲＯＭ更新要求パケットであった場合には、ＲＯＭ更新要求がある旨をプリンタアプリ１１１へ通知する。
【００７０】
ステップＳ５０３では、プリンタアプリ１１１が、ＮＣＳ１２８からＲＯＭ更新要求がある旨の通知を受信した場合に、ＳＣＳ１２２の通常モードスレッドに対して複合機１００の再起動リブート依頼通知を送信する。リブート依頼通知を受けたＳＣＳ１２２の通常モードスレッドは、ＳＲＡＭ２０８に格納されているリモートＲＯＭ更新フラグをＯＮに設定し、その後再起動コマンドを発行して複合機１００を再起動する。
【００７１】
複合機１００は再起動すると、フラッシュＲＯＭ２０４のブートベクタに記録されたＲＯＭモニタ４１０を起動する。図６は、実施の形態１の複合機１００において、ＲＯＭモニタ４１０で実行される処理の手順を示すフローチャートである。
【００７２】
ステップＳ６０１では、ＲＯＭモニタ４１０が、まずハードウェアの初期化を行う。ステップＳ６０２では、ＲＯＭモニタ４１０が、コントローラボード２００の診断処理を実行する。ステップＳ６０３では、ＲＯＭモニタ４１０が、ソフトウェアの初期化処理を行う。ステップＳ６０４では、ＲＯＭモニタ４１０が、汎用ＯＳ１２１を起動する。
【００７３】
図７は、実施の形態１の複合機１００において、プログラム起動部４２０で実行される処理の手順を示すフローチャートである。ステップＳ７０１では、プログラム起動部４２０が、起動モード設定部４２１によって、ＳＲＡＭ２０８に格納されているリモートＲＯＭ更新フラグの状態をチェックする。
【００７４】
リモートＲＯＭ更新フラグがＯＮである場合には、起動モード設定部４２１はステップＳ７０２に進み、起動モードをＲＯＭ更新モードに設定して以下の処理を行う。
【００７５】
ステップＳ７０３では、サービス層起動部４２２が、フラッシュＲＯＭ２０４のファイルシステムをマウントする。ステップＳ７０４では、サービス層起動部４２２が、フラッシュＲＯＭ２０４からＳＣＳ１２２，ＥＣＳ１２４，ＭＣＳ１２５などのコントロールサービスの起動情報を取得する。ステップＳ７０５では、サービス層起動部４２２が、ステップＳ７０４で取得した起動情報を環境変数に設定する。
【００７６】
そして、ステップＳ７０６では、サービス層起動部４２２が、ＳＣＳ１２２、ＥＣＳ１２４、ＭＣＳ１２５などのコントロールサービスを汎用ＯＳ１２１上で起動する。このとき、各コントロールサービスはＲＯＭ更新モードスレッドを起動する。従って、ＳＣＳ１２２のプロセスではＲＯＭ更新モードスレッドが起動される。
【００７７】
ステップＳ７０７では、サービス層起動部４２２が、ＳＣＳ１２２のＲＯＭ更新モードスレッドが起動したら、起動したコントロールサービスのコントロールサービス起動情報を環境変数に設定する。
【００７８】
ここで、コントロールサービス起動情報とは、起動したコントロールサービスのプロセスＩＤやモジュール名など、コントロールサービスのプログラムを識別するものであり、各コントロールサービスに固有の情報となっている。
【００７９】
ステップＳ７０８では、アプリ起動情報設定部４２４が、フラッシュＲＯＭ２０４のファイルシステムをマウントする。ステップＳ７０９では、アプリ起動情報設定部４２４が、マウントしたファイルシステムを検索して、格納されているアプリのプログラムを抽出し、複合機１００で起動されるアプリのアプリ起動情報を取得する。そして、ステップＳ７１０では、アプリ起動情報設定部４２４が、ステップＳ７０９で取得したアプリ起動情報を環境変数に設定する。
【００８０】
ここで、アプリ起動情報とは、複合機１００で動作可能なアプリを識別するアプリ固有の情報であり、アプリのモジュールＩＤ、モジュール名などである。なお、ＲＯＭ更新モードでは、コントロールサービスを起動し、アプリは起動しない。また、環境変数に設定されたコントロールサービス起動情報とアプリ起動情報は、ＳＣＳ１２２へ受け渡される。このようにしてＲＯＭ更新モードでのプログラム起動が行われる。そして、ステップＳ７１１では、アプリ起動部４２３が、ＲＲＵアプリ１１７を起動する。
【００８１】
なお、ステップＳ７０１で、リモートＲＯＭ更新フラグがＯＦＦである場合には、起動モード設定部４２１はステップＳ７１２に進み、起動モードを通常モードに設定して以下の通常起動の処理を行う。
【００８２】
ステップＳ７１３では、サービス層起動部４２２が、フラッシュＲＯＭ２０４のファイルシステムをマウントする。ステップＳ７１４では、サービス層起動部４２２が、フラッシュＲＯＭ２０４からＳＣＳ１２２，ＥＣＳ１２４，ＭＣＳ１２５などのコントロールサービスの起動情報を取得する。ステップＳ７１５では、サービス層起動部４２２が、ＳＣＳ１２２、ＥＣＳ１２４、ＭＣＳ１２５などのコントロールサービスを汎用ＯＳ上で起動する。このとき、各コントロールサービスのプロセスでは、通常モードスレッドが起動される。
【００８３】
ステップＳ７１６では、アプリ起動部４２３が、フラッシュＲＯＭ２０４のファイルシステムをマウントする。ステップＳ７１７では、アプリ起動部４２３が、マウントしたファイルシステムから複合機１００で起動される上述のアプリ起動情報を取得する。ステップＳ７１８では、アプリ起動部４２３が、各アプリを起動する。なお、このときはＲＲＵアプリ１１７は起動しない。
【００８４】
図５（ｂ）において、ＲＯＭ更新要求を行ったリモートホスト（複合機開発元のホストコンピュータやアプリケーション開発元のサードベンダのホストコンピュータなど）からＲＯＭ更新可能状態確認パケットがネットワーク２７１経由で複合機１００に対して送信されてくる。
【００８５】
ステップＳ５０４では、コントロールサービスおよびＲＲＵアプリ１１７が複合機１００で起動されているので、ＮＣＳ１２８のＲＯＭ更新モードスレッドがＲＯＭ更新可能状態確認パケットを受信する。ステップＳ５０５では、ＮＣＳ１２８のＲＯＭ更新モードスレッドが、受信したＲＯＭ更新可能状態確認パケットをＲＲＵアプリ１１７へ受け渡す。
【００８６】
このとき、複合機１００はＲＯＭ更新モードで再起動されているため、ＲＯＭ更新可能な状態となっている。ステップＳ５０６では、ＲＲＵアプリ１１７が、ＲＯＭ更新可能状態確認パケットに対する応答メッセージとしてリモートＲＯＭ更新可能のメッセージをＮＣＳ１２８へ送信する。ステップＳ５０７では、ＮＣＳ１２８のＲＯＭ更新モードスレッドが、リモートＲＯＭ更新可能のメッセージをネットワーク２７１経由でＲＯＭ更新可能状態確認パケットの送信元であるリモートホストへ送信する。
【００８７】
ＮＣＳ１２２がＲＯＭ更新可能状態確認パケットに対する応答をリモートホストへ送信すると、図５（ｃ）に示すように、リモートホストから更新データパケットが送信されてくる。このため、ステップＳ５０８では、複合機１００が、ＮＣＳ１２８のＲＯＭ更新モードスレッドで更新データパケットを受信する。ステップＳ５０９では、ＮＣＳ１２８のＲＯＭ更新モードスレッドが、受信した更新データパケットをＲＲＵアプリ１１７へ受け渡す。
【００８８】
ステップＳ５１０では、ＲＲＵアプリ１１７が、更新データパケットを展開したデータに必要な領域を得るために、ＭＣＳ１２５に対して、ＳＤＲＡＭ２０３上に更新データ領域の確保を要求する。ステップＳ５１１では、確保要求を受けたＭＣＳ１２５のＲＯＭ更新モードスレッドが、ＳＤＲＡＭ２０３上に更新データ領域を確保して、その領域の先頭アドレスと確保した領域サイズとをＲＲＵアプリ１１７に返す。
【００８９】
ＲＲＵアプリ１１７では、ネットワーク情報を除去し、また圧縮形式のデータを伸張した更新パケットデータを、ＭＣＳ１２５のＲＯＭ更新モードスレッドから通知された領域の先頭アドレスから展開する。これにより、ＳＤＲＡＭ２０３の更新データ領域には前述した図３に示した構造のデータが格納される。
【００９０】
ステップＳ５１２では、ＲＲＵアプリ１１７が、更新データパケットを展開したＳＤＲＡＭ２０３上の領域の先頭アドレスを、ＳＣＳ１２２へ通知する。これにより、ＳＣＳ１２２のＲＯＭ更新モードスレッドで更新データの選定処理が行われる。
【００９１】
図８および図９は、実施の形態１の複合機１００において、ＳＣＳ１２２のＲＯＭ更新モードスレッドで実行される更新データの選定処理の手順を示すフローチャートである。
【００９２】
ステップＳ８０１では、ＳＣＳ１２２のＲＯＭ更新モードスレッドが、ＳＲＡＭ２０８にモジュールＩＤやフラッシュＲＯＭ２０４の更新先アドレスなどの更新情報がすでに記憶されているか否かを確認する。
【００９３】
ＳＲＡＭ２０８に更新情報が記憶されていると判断した場合には、ＳＣＳ１２２のＲＯＭ更新モードスレッドはＲＯＭ更新処理が中断された後の起動であると判断し、ステップＳ８０２に進む。ステップＳ８０２では、ＳＣＳ１２２のＲＯＭ更新モードスレッドが、ＳＲＡＭ２０８から更新情報を取得する。
【００９４】
ステップＳ８０２に続いてステップＳ８０３に進み、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、フラッシュＲＯＭ２０４の先頭のヘッダブロックを参照する。ステップＳ８０３に続いてステップＳ８０４に進み、ＳＣＳ１２２のＲＯＭ更新モードスレッドはヘッダブロックからモジュールＩＤを取得する。
【００９５】
ステップＳ８０４に続いてステップＳ８０５に進み、ＳＣＳ１２２のＲＯＭ更新モードスレッドはヘッダブロックから取得したモジュールＩＤがステップＳ８０２でＳＲＡＭ２０８から取得した更新情報に相当するか否かを判断する。
【００９６】
ヘッダブロックから取得したモジュールＩＤが、ＳＲＡＭ２０８から取得した更新情報に該当する場合には、ＳＣＳ１２２のＲＯＭ更新モードスレッドはステップＳ８０６に進む。ステップＳ８０６では、ＳＣＳ１２２のＲＯＭ更新モードスレッドが、そのモジュールＩＤの更新データを選定し、さらにヘッダブロックから更新先アドレス、更新データオフセット、更新データサイズを取得する。
【００９７】
ステップＳ８０６に続いてステップＳ８０７に進み、ＳＣＳ１２２のＲＯＭ更新モードスレッドはモジュールＩＤ、更新先アドレス、更新データオフセット、更新データサイズを一組とした更新情報を「更新対象」の変数等に設定し、ステップＳ８０９に進む。
【００９８】
一方、ステップＳ８０５において、ヘッダブロックから取得したモジュールＩＤが、ＳＲＡＭ２０８から取得した更新情報に相当しない場合には、ＳＣＳ１２２のＲＯＭ更新モードスレッドは取得したモジュールＩＤの更新データを選定せず、ステップＳ８０９に進む。つまり、ＳＣＳ１２２のＲＯＭ更新モードスレッドはステップＳ８０６およびＳ８０７の処理は行わない。
【００９９】
ステップＳ８０９では、ＳＣＳ１２２のＲＯＭ更新モードスレッドが、次ヘッダブロックオフセットを参照することにより、次のヘッダブロックが存在するか否かを判断する。次のヘッダブロックが存在する場合には、ＳＣＳ１２２のＲＯＭ更新モードスレッドはステップＳ８１０に進み、次のヘッダブロックを参照する。そして、ＳＣＳ１２２のＲＯＭ更新モードスレッドはステップＳ８０４からステップＳ８０７，ステップＳ８０９およびステップＳ８１０の処理を繰り返し行う。
【０１００】
一方、次のヘッダブロックが存在しない場合には、ＳＣＳ１２２のＲＯＭ更新モードスレッドはステップＳ８０８に進む。つまり、すべてのヘッダブロックのモジュールＩＤについての更新データの選定が終了したら、ＳＣＳ１２２のＲＯＭ更新モードスレッドはＲＯＭ更新部４３０を起動してＲＯＭ更新命令を発行し、更新対象の変数を引き渡す。
【０１０１】
一方、ＳＲＡＭ２０８に更新情報が存在しない場合には、ＲＯＭ更新部４３０はステップＳ８１１に進み、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、まずフラッシュＲＯＭ２０４の最初のヘッダブロックを参照する。ステップＳ８１１に続いてステップＳ８１２に進み、ＳＣＳ１２２のＲＯＭ更新モードスレッドはヘッダブロックからモジュールＩＤを取得する。
【０１０２】
ステップＳ８１２に続いてステップＳ８１３に進み、ＳＣＳ１２２のＲＯＭ更新モードスレッドはヘッダブロックから取得したモジュールＩＤが環境変数の中のコントロールサービスまたはアプリに相当するか否かを判断する。
【０１０３】
ヘッダブロックから取得したモジュールＩＤが、環境変数の中のコントロールサービスまたはアプリに相当する場合には、ＳＣＳ１２２のＲＯＭ更新モードスレッドはステップＳ８１４に進む。
【０１０４】
ステップＳ８１４では、ＳＣＳ１２２のＲＯＭ更新モードスレッドが、そのモジュールＩＤの更新データを選定し、さらにヘッダブロックから更新先アドレス、更新データオフセット、更新データサイズを取得する。
【０１０５】
ステップＳ８１４に続いてステップＳ８１５に進み、ＳＣＳ１２２のＲＯＭ更新モードスレッドはモジュールＩＤ、更新先アドレス、更新データオフセット、更新データサイズを一組とした更新情報を「更新対象」の変数等に設定し、ステップＳ８１６に進む。
【０１０６】
一方、ステップＳ８１３において、ヘッダブロックから取得したモジュールＩＤが、環境変数の中のコントロールサービスまたはアプリに相当しない場合には、ＳＣＳ１２２のＲＯＭ更新モードスレッドは取得したモジュールＩＤの更新データを選定せず、ステップＳ８１６に進む。つまり、ＳＣＳ１２２のＲＯＭ更新モードスレッドはステップＳ８１４およびＳ８１５の処理は行わない。
【０１０７】
ステップＳ８１６では、ＳＣＳ１２２のＲＯＭ更新モードスレッドが、次ヘッダブロックオフセットを参照することにより、次のヘッダブロックが存在するか否かを判断する。次のヘッダブロックが存在する場合には、ＳＣＳ１２２のＲＯＭ更新モードスレッドはステップＳ８１７に進み、次のヘッダブロックを参照する。そして、ＳＣＳ１２２のＲＯＭ更新モードスレッドはステップＳ８１２からステップＳ８１７までの処理を繰り返し行う。
【０１０８】
一方、次のヘッダブロックが存在しない場合には、ＳＣＳ１２２のＲＯＭ更新モードスレッドはステップＳ８１８に進む。つまり、すべてのヘッダブロックのモジュールＩＤについての更新データの選定が終了したら、ＳＣＳ１２２のＲＯＭ更新モードスレッドはＲＯＭ更新部４３０を起動してＲＯＭ更新命令を発行し、更新対象の変数を引き渡す。
【０１０９】
これにより、リモートホストから提供される更新データの中から、複合機１００内に存在するモジュールの更新データが選定されることになる。
【０１１０】
図１０は、実施の形態１の複合機１００において、ＲＯＭ更新部４３０で実行されるＲＯＭ更新処理の手順を示すフローチャートである。
【０１１１】
ステップＳ９０２では、ＲＯＭ更新部４３０が、ＳＣＳ１２２から受け渡された更新対象の変数から最初の組の更新情報（モジュールＩＤ、バージョン情報、更新先アドレス、更新データオフセットおよび更新データサイズ）をＳＲＡＭ２０８に格納してステップＳ９０３に進む。ステップＳ９０２の処理により、更新処理がエラー発生によって中断した場合でも、次回の起動後に図５（ｂ）のステップＳ５０４以降の処理を再実行することができる。
【０１１２】
ステップＳ９０３では、ＲＯＭ更新部４３０が、ＳＤＲＡＭ２０３の先頭アドレスから更新データオフセットで示されるアドレスから更新データサイズ分のデータを更新データとして読み出し、この更新データでフラッシュＲＯＭ２０４上の更新先アドレスから始まるモジュールを更新する。
【０１１３】
ステップＳ９０３に続いてステップＳ９０４に進み、ＲＯＭ更新部４３０はＳＤＲＡＭ２０３の更新データと、ステップＳ９０３で更新したフラッシュＲＯＭ２０４上のモジュールのデータとを比較して同一か否かのチェックを行う。同一でない場合には、ＲＯＭ変換部４３０はステップＳ９０５に進み、更新処理が失敗した旨のエラーを表示してステップＳ９０３に進む。ＲＯＭ変換部４３０は、再度更新処理を行う。更新データと更新したモジュールのデータとが同一である場合には、ＲＯＭ変換部４３０は更新処理が成功したと判断し、ステップＳ９０６に進む。
【０１１４】
ステップＳ９０６では、ＲＯＭ変換部４３０が、更新対象の変数に、次の更新情報の組が存在するか否かを判断する。存在する場合には、ＲＯＭ変換部４３０はステップＳ９０２に進み、次の更新情報に対して、ステップＳ９０２からＳ９０５までの処理を行う。つまり、ＲＯＭ変換部４３０はＳＣＳ１２２から引き渡されたすべての更新情報に対してステップＳ９０２からステップＳ９０６の処理を繰り返す。
【０１１５】
次の更新情報の組が存在しない場合には、ＲＯＭ変換部４３０はステップＳ９０７に進み、ＳＲＡＭ２０８をクリアしてＲＯＭ更新処理を終了する。つまり、ＲＯＭ変換部４３０はＳＣＳ１２２から引き渡されたすべての更新対象のモジュールの更新が終了したら、ＳＲＡＭ２０８をクリアしてＲＯＭ更新処理を終了する。
【０１１６】
このように実施の形態１の複合機１００では、ＮＣＳ１２８によってネットワーク２７１経由でＲＯＭ更新要求パケット、ついで更新データパケットを受信し、ＲＯＭ更新部４３０によって更新データでフラッシュＲＯＭ２０４上のプログラムを更新しているので、フラッシュカードなどを用いずにＲＯＭ更新をいつでも行うことができる。
【０１１７】
また、実施の形態１の複合機１００では、ＮＣＳ１２８がＲＯＭ更新要求を受信したときに、複合機１００をＲＯＭ更新モードで再起動して、プログラム起動部４２０で複合機１００上で動作するすべてのコントロールサービスを起動し、ＳＣＳ１２２のＲＯＭ更新モードスレッドで起動されたコントロールサービスおよび起動可能なアプリを判断して構成に応じた更新データを選定し、選定された更新データでフラッシュＲＯＭ２０４上のプログラムを更新しているので、複合機１００上で動作するコントロールサービスやアプリケーションの構成に最適なＲＯＭ更新を正確に行うことができる。
【０１１８】
さらに、実施の形態１の複合機１００では、ＳＣＳ１２２、ＭＣＳ１２５などのコントロールサービスのプロセスは、すべて複合サービスを行う通常モードスレッドとは別にＲＯＭ更新処理に関するＲＯＭ更新モードスレッドを有し、ＲＯＭ更新の際にはＲＯＭ更新モードスレッドのみを起動しているので、ＲＯＭ更新処理中に、複合サービスの機能が実行されて更新処理が中断されることを防止して、ＲＯＭ更新処理を迅速に行うことができる。
（実施の形態２）
実施の形態１の複合機１００におけるＲＯＭ更新処理は複合機１００の機種ごとに更新データを用意したものではないため、ネットワーク上の複合機開発元のホストコンピュータやアプリケーション開発元のサードベンダのホストコンピュータなどが、契約相手ごとに複合機１００の機種を把握しておき、機種ごとに個別の更新データパケットを契約相手の複合機１００に送信する必要がある。
【０１１９】
そこで、この実施の形態２の複合機１００では、一つの更新データパケットで複数の機種のＲＯＭ更新処理を行う。実施の形態２にかかる複合機１００の機能的構成およびハードウェア構成は、図１および図２に示した実施の形態１の複合機１００と同様であるので説明を省略する。
【０１２０】
図１１は、実施の形態２の複合機１００で受信される更新データパケットを展開したデータの構造図である。更新データパケットは、実施の形態１と同様に、先頭のＲＯＭモニタ起動命令１００１と、ヘッダ部１００２と、データ部１００３とから構成される。
【０１２１】
実施の形態２における更新データパケットのデータ構造が実施の形態１におけるデータ構造と異なる点は、ヘッダ部１００２において一つの更新データに対して複数の機種識別情報、複数の更新先アドレスおよび複数の更新先領域長がある点である。
【０１２２】
すなわち、複数の機種の複合機１００に共通するモジュールに対して、共通する更新データで更新を行う場合には、更新データパケットに、更新対象となるすべての複合機１００の機種識別情報、その機種におけるフラッシュＲＯＭ２０４上の更新先アドレスおよび更新先領域長をヘッダブロックに登録した構造となっている。
【０１２３】
実施の形態２の複合機１００における複合機起動部１４０は、実施の形態１と同様に、ＲＯＭモニタ４１０と、プログラム起動部４２０と、ＳＣＳ１２２のＲＯＭ更新モードスレッドと、ＲＯＭ更新部４３０とから構成される。ＲＯＭモニタ４１０は本発明における機種情報取得手段を、プログラム起動部４２０は本発明におけるプログラム起動手段を、ＳＣＳ１２２は本発明の更新データ選定手段を、ＲＯＭ更新部４３０は本発明における更新手段をそれぞれ構成する。
【０１２４】
実施の形態２の複合機１００におけるプログラム起動部４２０とＲＯＭ更新部４３０は、実施の形態１の複合機１００の場合と同様の構成であるので説明を省略する。
【０１２５】
ＲＯＭモニタ４１０は、実施の形態１におけるＲＯＭモニタと同様に、ハードウェアの初期化、コントローラボード２００の診断、ソフトウェアの初期化、汎用ＯＳの起動などを行う他、さらに複合機１００の機種識別情報を取得する。
【０１２６】
次にこのように構成された複合機１００におけるＲＯＭ更新処理について説明する。ＲＯＭ更新の全体の処理手順は図５に示した実施の形態１の複合機１００の場合と同様である。
【０１２７】
図１２は、実施の形態２の複合機１００において、ＲＯＭモニタ４１０で実行される処理の手順を示すフローチャートである。ステップＳ１１０１では、ＲＯＭモニタ４１０が、実施の形態１と同様に、ハードウェアの初期化を行う。ステップＳ１１０１に続いてステップＳ１１０２に進み、ＲＯＭモニタ４１０はコントローラボードの診断処理を行う。ステップＳ１１０２に続いてステップＳ１１０３に進み、ＲＯＭモニタ４１０はソフトウェアの初期化処理を行う。
【０１２８】
ステップＳ１１０３に続いてステップＳ１１０４に進み、ＲＯＭモニタ４１０は複合機１００のフラッシュＲＯＭ２０４に記録されている機種識別情報を取得する。機種識別情報とは、複合機の機種を特定するものであり、機種ごとに固有のデータとなっている。そして、ステップＳ１１０４に続いてステップＳ１１０５に進み、ＲＯＭモニタ４１０は汎用ＯＳ１２１を起動する。
【０１２９】
この後、実施の形態２の複合機１００では実施の形態１と同様に、プログラム起動部４２０によってコントロールサービスの起動を行い、起動されたＳＣＳ１２２のＲＯＭ更新モードスレッドによって次の処理を行う。
【０１３０】
図１３は、実施の形態２の複合機において、ＳＣＳ１２２のＲＯＭ更新モードスレッドで実行される更新データ選定処理の手順を示すフローチャートである。ステップＳ１２０１では、ＳＣＳ１２２のＲＯＭ更新モードスレッドが、実施の形態１と同様に、ＳＤＲＡＭ２０３の先頭のヘッダブロックを参照する。ステップＳ１２０１に続いてステップＳ１２０２に進み、ＳＣＳ１２２のＲＯＭ更新モードスレッドはヘッダブロックからモジュールＩＤを取得する。
【０１３１】
ステップＳ１２０２に続いてステップＳ１２０３に進み、ＳＣＳ１２２のＲＯＭ更新モードスレッドは取得したモジュールＩＤが、プログラム起動部４２０から受け渡された環境変数のコントロールサービス起動情報およびアプリ起動情報にあるコントロールサービスまたはアプリのモジュールに該当するか否かをチェックする。
【０１３２】
取得したモジュールＩＤが、複合機１００内部で動作するコントロールサービスまたはアプリに該当する場合には、ＳＣＳ１２２のＲＯＭ更新モードスレッドはステップＳ１２０４に進み、さらにＲＯＭモニタ４１０で取得した複合機１００の機種識別情報が現在のモジュールＩＤのあるヘッダブロック内に登録されている機種識別情報に存在するか否かをチェックする。
【０１３３】
取得した機種識別情報がヘッダブロック内に存在する場合には、ＳＣＳ１２２のＲＯＭ更新モードスレッドはステップＳ１２０５に進み、そのヘッダブロックのモジュールＩＤの更新データを選定し、さらにヘッダブロックから更新先アドレス、更新データオフセット、更新データサイズを取得する。
【０１３４】
そして、ステップＳ１２０５に続いてステップＳ１２０６に進み、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、このモジュールＩＤ、更新先アドレス、更新データオフセット、更新データサイズを一組の更新情報として「更新対象」の変数等に設定する。
【０１３５】
一方、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、取得したモジュールＩＤが複合機１００内部で動作するコントロールサービスまたはアプリに該当しない場合または取得した機種識別情報がヘッダブロック内に存在しない場合には、ステップＳ１２０７に進む。つまり、取得したモジュールＩＤが複合機１００内部で動作するコントロールサービスまたはアプリに該当しない場合または取得した機種識別情報がヘッダブロック内に存在しない場合には、現在のモジュールＩＤに対応する更新データは選定せず、ステップＳ１２０４からステップＳ１２０６の処理は行わない。
【０１３６】
ついで、ステップＳ１２０７では、実施の形態１と同様に、ＳＣＳ１２２のＲＯＭ更新モードスレッドが、次のヘッダブロックが有るか否かを判断する。次のヘッダブロックが存在する場合には、ＳＣＳ１２２のＲＯＭ更新モジュールはステップＳ１２０８に進み、次のヘッダブロックを参照する。そして、ＳＣＳ１２２のＲＯＭ更新モジュールはステップＳ１２０２からステップＳ１２０７までの処理を繰り返し行う。
【０１３７】
一方、次のヘッダブロックが存在しない場合には、ＳＣＳ１２２のＲＯＭ更新モジュールはステップＳ１２０９に進む。つまり、すべてのヘッダブロックのモジュールＩＤについて、更新データの選定が終了したら、ＳＣＳ１２２のＲＯＭ更新モジュールはＲＯＭ更新部４３０を起動してＲＯＭ更新命令を発行し、更新対象の変数を引き渡す。
【０１３８】
これにより、リモートホストから提供される更新データの中から、複合機１００の機種に応じて複合機１００内部に存在するモジュールの更新データのみが選定される。
【０１３９】
このＳＣＳ１２２による更新データ選定処理の後、ＲＯＭ更新部４３０によってＲＯＭ更新処理が行われるが、このＲＯＭ更新処理は、実施の形態１の複合機１００の場合と同様であるので説明を省略する。
【０１４０】
このように実施の形態２の複合機１００では、ＳＣＳ１２２のＲＯＭ更新モードスレッドが、受信した更新データパケットに含まれるプログラムのモジュールＩＤと、コントロールサービスまたは各アプリの起動情報と、モジュールＩＤごとの機種識別情報と、ＲＯＭモニタ４１０で取得した機種情報とに基づいて、更新データを選定している。
【０１４１】
したがって、実施の形態２の複合機１００では、複合機１００の機種により動作可能なコントロールサービスやアプリケーションの配置が異なっている場合でも、一つの更新データパケットを複数機種の複合機１００のＲＯＭ更新に使用することができ、機種の相違により不要なデータでＲＯＭ更新を行ってしまうことが防止され、複合機１００の構成に最適なＲＯＭ更新を行える。
【０１４２】
また、実施の形態２の複合機１００では、更新データパケットを送信する複合機開発元アプリケーション開発元のサードベンダも、契約した複合機１００ごとに個別の更新データパケットを送信する必要がなく、送信側にとってもＲＯＭ更新作業が容易に行える。
【０１４３】
なお、実施の形態１および２の複合機１００では、ＮＣＳ１２８がＲＯＭ更新要求パケットを受信したときに、ＳＣＳ１２２の通常モードスレッドが複合機１００の再起動コマンドを発行して、複合機１００を自動的に再起動しているが、ＳＣＳ１２２によりＲＯＭ更新フラグをＯＮに設定した後、複合機１００の電源ＯＦＦおよび電源再投入により作業者が手動で複合機１００を再起動させるように構成してもよい。
（実施の形態３）
実施の形態１および２の複合機１００は、ネットワーク２７１経由でＲＯＭ更新要求パケットを受信したときに、複合機１００をＲＯＭ更新モードで再起動させてから、ＲＯＭ更新処理を行うものである。
【０１４４】
そこで、この実施の形態３の複合機１００では、ＲＯＭ更新要求パケットを受信したときに複合機１００を再起動せずに、各コントロールサービスの通常モードスレッドを動的にＲＯＭ更新モードスレッドに切り替えてＲＯＭ更新処理を行う。
【０１４５】
実施の形態３にかかる複合機１００の機能的構成およびハードウェア構成は、図１および図２に示した実施の形態１の複合機１００と同様であるので説明を省略する。また、更新データパケットを展開したデータの構造も、図３に示した実施の形態１の複合機１００で受信される更新データパケットと同様であるので説明を省略する。
【０１４６】
実施の形態３にかかる複合機１００では、コピーアプリ１１２、ファックスアプリ１１３、プリンタアプリ１１１、スキャナアプリ１１４およびネットファイルアプリ１１５の各アプリケーション１３０は、実施の形態１および２の複合機１００と同様の複合サービスを行うが、この複合サービスを行う際に実行される通常モードスレッドと、ＲＯＭ更新処理時に単に起動されるだけで複合サービスに関する処理を停止したＲＯＭ更新モードスレッドを有している。
【０１４７】
また、実施の形態３の複合機１００におけるＲＲＵアプリ１１７は、ＮＣＳ１２８がＲＯＭ更新要求パケットを受信したときに、ＳＣＳ１２２の通常モードスレッドによって起動されるようになっている。
【０１４８】
また、実施の形態３の複合機１００におけるＳＣＳ１２２の通常モードスレッドは、実施の形態１および２と異なり、ＮＣＳ１２８がＲＯＭ更新要求パケットを受信した場合でも、複合機１００の再起動コマンドを発行およびＳＲＡＭ２０８のＲＯＭ更新フラグをＯＮに設定する処理は行わない。その代わりに、ＳＣＳ１２２の通常モードスレッドは、ＲＲＵアプリ１１７を起動し、さらにコピーアプリ１１２、ファックスアプリ１１３、プリンタアプリ１１１、スキャナアプリ１１４およびネットファイルアプリ１１５の各アプリケーション１３０および他のコントロールサービスに対して、通常モードスレッドを停止して、ＲＯＭ更新モードスレッドのみの起動要求を行うようになっている。
【０１４９】
次に、実施の形態３の複合機１００によるＲＯＭ更新処理について説明する。図１４は、実施の形態３の複合機１００におけるＲＯＭ更新の全体の処理手順を示すフローチャートである。図１４（ａ）は、複合機１００がＲＯＭ更新要求を受信したときの動作を示し、図１４（ｂ）は複合機１００がＲＯＭ更新要求の受信後にＲＯＭ更新モードに移行した状態を示し、図１４（ｃ）は更新データパケットを受信したときの動作を示す。
【０１５０】
図１４（ａ）において、複合機１００が通常の複合サービスの動作を実行しているときは、各アプリ、各コントロールサービスがいずれも通常モードスレッドを実行している。
【０１５１】
この状態で、ネットワーク経由で複合機開発元のホストコンピュータやアプリケーション開発元のサードベンダのホストコンピュータなどのリモートホストからＲＯＭ更新要求パケットが送信されてくると、ＮＣＳ１２８の通常モードスレッドはステップＳ１３０１に進み、そのＲＯＭ更新要求パケットを受信する。
【０１５２】
ステップＳ１３０２では、ＮＣＳ１２８の通常モードスレッドが、受信したパケットの内容を判断して、ＲＯＭ更新要求パケットであった場合には、ＲＯＭ更新要求がある旨をＳＣＳ１２２へ通知する。
【０１５３】
ステップＳ１３０３では、ＳＣＳ１２２が、ＲＯＭ更新要求がある旨の通知を受信すると、現在動作中のすべてのアプリケーションに対して、通常モードスレッドの停止およびＲＯＭ更新モードスレッドの起動要求を行う。ステップＳ１３０４では、ＳＣＳ１２２が、ＲＯＭ更新要求がある旨の通知を受信すると、現在動作中のすべてのコントロールサービスおよびＳＲＭ１２３に対して、通常モードスレッドの停止およびＲＯＭ更新モードスレッドの起動要求を行う。さらに、ＳＣＳ１２２の通常モードスレッドは、ＲＲＵアプリ１１７を起動し、またＳＣＳ１２２自身のＲＯＭ更新モードスレッドを起動する。
【０１５４】
通常モードスレッドの停止およびＲＯＭ更新モードスレッドの起動要求を受け取ったすべてのアプリケーション、すべてのコントロールサービスおよびＳＲＭ１２３は、実行中のスレッドを通常モードスレッドからＲＯＭ更新モードスレッドへ切り替える。これにより、複合機１００は、複合サービスの機能が停止して通常モードからＲＯＭ更新可能な状態であるＲＯＭ更新モードへ移行する。
【０１５５】
図１４（ｂ）に示すように、ＲＯＭ更新要求を行ったリモートホスト（複合機開発元のホストコンピュータやアプリケーション開発元のサードベンダのホストコンピュータなど）からＲＯＭ更新可能状態確認パケットがネットワーク経由で複合機１００に対して送信されてくる。
【０１５６】
ステップＳ１３０５では、ＮＣＳ１２８のＲＯＭ更新モードスレッドが、このＲＯＭ更新可能状態確認パケットを受信する。ステップＳ１３０６では、ＮＣＳ１２８のＲＯＭ更新モードスレッドが、受信したＲＯＭ更新可能状態確認パケットをＲＲＵアプリ１１７へ受け渡す。
【０１５７】
このとき、すでに複合機１００はＲＯＭ更新モードへ移行した状態となっているので、ＲＯＭ更新可能な状態となっている。ステップＳ１３０７では、ＲＲＵアプリ１１７が、ＲＯＭ更新可能状態確認パケットに対する応答メッセージとしてリモートＲＯＭ更新可能のメッセージをＮＣＳ１２８へ送信する。ステップＳ１３０８では、ＮＣＳ１２８のＲＯＭ更新モードスレッドが、リモートＲＯＭ更新可能のメッセージをネットワーク２７１経由でＲＯＭ更新可能状態確認パケットの送信元であるリモートホストへ送信する。
【０１５８】
ＮＣＳ１２２がＲＯＭ更新可能状態確認に対する応答をリモートホストへ送信すると、図１４（ｃ）に示すように、リモートホストから更新データパケットが送信されてくる。このため、ステップＳ１３０９では、複合機１００が、ＮＣＳ１２８のＲＯＭ更新モードスレッドで更新データパケットを受信する。ステップＳ１３１０では、ＮＣＳ１２８のＲＯＭ更新モードスレッドが、受信した更新データパケットをＲＲＵアプリ１１７へ受け渡す。
【０１５９】
ステップＳ１３１１では、ＲＲＵアプリ１１７が、更新データパケットを展開したデータに必要な領域を得るために、ＭＣＳ１２５に対して、ＳＤＲＡＭ２０３上に更新データ領域の確保を要求する。ステップＳ１３１２では、確保要求を受けたＭＣＳ１２５のＲＯＭ更新モードスレッドが、ＳＤＲＡＭ２０３上に更新データ領域を確保して、その領域の先頭アドレスと確保した領域サイズとをＲＲＵアプリ１１７に返す。
【０１６０】
ＲＲＵアプリ１１７では、ネットワーク情報を除去し、また圧縮形式のデータを伸張した更新パケットデータを、ＭＣＳ１２５のＲＯＭ更新モードスレッドから通知された領域の先頭アドレスから展開する。これにより、ＳＤＲＡＭ２０３の更新データ領域には前述した図３に示した構造のデータが格納される。
【０１６１】
ステップＳ１３１３では、ＲＲＵアプリ１１７が、更新データパケットを展開したＳＤＲＡＭ２０３上の領域の先頭アドレスを、ＳＣＳ１２２へ通知する。これにより、ＳＣＳ１２２のＲＯＭ更新モードスレッドで更新データの選定処理が行われる。
【０１６２】
これ以降の、ＳＣＳ１２２による更新データの選定処理およびＲＯＭ更新部４３０によるフラッシュＲＯＭ２０４上のプログラムの更新処理は、実施の形態１にかかる複合機１００と同様であるので説明を省略する。
【０１６３】
このように実施の形態３の複合機１００では、ＮＣＳ１２２がＲＯＭ更新要求パケットを受信したときに、ＳＣＳ１２２の指令によって、すべてのアプリケーション１３０、すべてのコントロールサービスおよびＳＲＭ１２３が通常モードスレッドを停止してＲＯＭ更新モードスレッドを起動している。
【０１６４】
したがって、実施の形態３の複合機１００では、切り替え時間の速いスレッドの切り替えで複合サービスの機能を停止してＲＯＭ更新モードへ移行することができ、複合機１００を再起動させたり、切り替え時間の遅いプロセスの切り替えを行う場合に比べ、ＲＯＭ更新要求があった場合に迅速に対応してＲＯＭ更新を行うことができる。
【０１６５】
なお、実施の形態３にかかる複合機１００では、コントロールサービス、アプリケーションへのＲＯＭ更新モードスレッドの起動要求をＳＣＳ１２２で行っているが、プログラム起動部４２０や他のプロセスで実現するように構成しても良い。
【０１６６】
以上説明した実施の形態１〜３にかかる複合機１００では、ネットワーク２７１経由でＲＯＭ更新要求パケットを受信した後に、更新データパケットを受信することとしているが、ＲＯＭ更新要求パケットが送信されずに、いきなり更新データパケットを受信するようにしてもよい。
【０１６７】
いきなり更新データパケットを受信するようにした場合には、この更新データパケットをＲＯＭ更新要求とみなし、更新データパケットをＳＲＡＭ２０８の不揮発性メモリに格納した後、ＳＣＳ１２２によって複合機１００を再起動させることで、同様の処理を行うように構成してもよい。
【０１６８】
さらにこの場合、ＲＲＵアプリ１１７は複合機１００の再起動後に起動するのではなく、更新データパケットを受信したときに、ＳＣＳ１２２などによってＲＲＵアプリ１１７を起動するとともにＭＣＳ１２５のＲＯＭ更新モードスレッドを起動し、更新データパケットをＳＤＲＡＭ２０３に展開してから、複合機１００を再起動する構成としてもよい。
（実施の形態４）
実施の形態１〜３の複合機１００は、ネットワーク２７１経由でＲＯＭ更新要求パケットを受信したときに、ＲＲＵアプリ１１７を起動させてＲＯＭ更新処理を行うものである。
【０１６９】
そこで、この実施の形態４の複合機１００では、ＲＲＵアプリ１１７を複合機１００の起動時など予め起動させておき、ＲＯＭ更新要求パケットを受信することなく、更新データパケットを受信したときに、各コントロールサービスの通常モードスレッドを動的にＲＯＭ更新モードスレッドに切り替えてＲＯＭ更新処理を行う。
【０１７０】
実施の形態４にかかる複合機１００の機能的構成およびハードウェア構成は、図１および図２に示した実施の形態１の複合機１００と同様であるので説明を省略する。また、更新データパケットを展開したデータの構造も、図３に示した実施の形態１の複合機１００で受信される更新データパケットと同様であるので説明を省略する。
【０１７１】
実施の形態４にかかる複合機１００では、コピーアプリ１１２、ファックスアプリ１１３、プリンタアプリ１１１、スキャナアプリ１１４およびネットファイルアプリ１１５の各アプリケーション１３０は、実施の形態１および２の複合機１００と同様の複合サービスを行うが、この複合サービスを行う際に実行される通常モードスレッドと、ＲＯＭ更新処理時に単に起動されるだけで複合サービスに関する処理を停止したＲＯＭ更新モードスレッドを有している。
【０１７２】
また、実施の形態３の複合機１００におけるＲＲＵアプリ１１７は、例えば複合機１００の起動時に、ＳＣＳ１２２の通常モードスレッドによって起動されるようになっている。
【０１７３】
また、実施の形態４の複合機１００におけるＳＣＳ１２２の通常モードスレッドは、実施の形態１および２と異なり、ＮＣＳ１２８がＲＯＭ更新要求パケットを受信せず、複合機１００の再起動コマンドを発行およびＳＲＡＭ２０８のＲＯＭ更新フラグをＯＮに設定する処理は行わない。
【０１７４】
その代わりに、ＳＣＳ１２２の通常モードスレッドは、コピーアプリ１１２、ファックスアプリ１１３、プリンタアプリ１１１、スキャナアプリ１１４およびネットファイルアプリ１１５の各アプリケーション１３０および他のコントロールサービスに対して、通常モードスレッドを停止して、ＲＯＭ更新モードスレッドのみの起動要求を行うようになっている。
【０１７５】
次に、実施の形態４の複合機１００によるＲＯＭ更新処理について説明する。図１５は、実施の形態４の複合機１００におけるＲＯＭ更新の全体の処理手順を示すフローチャートである。図１５（ａ）は、複合機１００が更新データパケットを受信したときの動作を示し、図１５（ｂ）は複合機１００が更新データパケットの受信後にＲＯＭ更新モードに移行した状態を示す。
【０１７６】
図１５（ａ）において、複合機１００が通常の複合サービスの動作を実行しているときは、各アプリ、各コントロールサービスがいずれも通常モードスレッドを実行している。
【０１７７】
この状態で、ネットワーク２７１経由で複合機開発元のホストコンピュータやアプリケーション開発元のサードベンダのホストコンピュータなどのリモートホストから更新データパケットが送信されてくると、ＮＣＳ１２８の通常モードスレッドはステップＳ１４０１に進み、その更新データパケットを受信する。
【０１７８】
ステップＳ１４０２では、ＮＣＳ１２８の通常モードスレッドが、受信したパケットの内容を判断して、更新データパケットであった場合には、その更新データパケットをＲＲＵアプリ１１７へ送信する。
【０１７９】
ステップＳ１４０３では、ＲＲＵアプリ１１７が、更新データパケットを受信すると、更新データパケットを受信した旨をＳＣＳ１２２に通知する。ステップＳ１４０４では、ＳＣＳ１２２が、更新データパケットを受信した旨の通知を受信すると、現在動作中のすべてのアプリケーションに対して、通常モードスレッドの停止およびＲＯＭ更新モードスレッドの起動要求を行う。
【０１８０】
ステップＳ１４０５では、ＳＣＳ１２２が、更新データパケットを受信した旨の通知を受信すると、現在動作中のすべてのコントロールサービスおよびＳＲＭ１２３に対して、通常モードスレッドの停止およびＲＯＭ更新モードスレッドの起動要求を行う。さらに、ＳＣＳ１２２の通常モードスレッドは、ＲＲＵアプリ１１７を起動し、また、ＳＣＳ１２２は自身のＲＯＭ更新モードスレッドを起動する。
【０１８１】
通常モードスレッドの停止およびＲＯＭ更新モードスレッドの起動要求を受け取ったすべてのアプリケーション、すべてのコントロールサービスおよびＳＲＭ１２３は、実行中のスレッドを通常モードスレッドからＲＯＭ更新モードスレッドへ切り替える。これにより、複合機１００は、複合サービスの機能が停止して通常モードからＲＯＭ更新可能な状態であるＲＯＭ更新モードへ移行する。
【０１８２】
ＲＯＭ更新可能な状態であるＲＯＭ更新モードへ移行すると、図１５（ｂ）に示すように、ステップＳ１４０６で、ＲＲＵアプリ１１７が、更新データパケットを展開したデータに必要な領域を得るために、ＭＣＳ１２５に対して、ＳＤＲＡＭ２０３上に更新データ領域の確保を要求する。ステップＳ１４０７では、確保要求を受けたＭＣＳ１２５のＲＯＭ更新モードスレッドが、ＳＤＲＡＭ２０３上に更新データ領域を確保して、その領域の先頭アドレスと確保した領域サイズとをＲＲＵアプリ１１７に返す。
【０１８３】
ＲＲＵアプリ１１７では、ネットワーク情報を除去し、また圧縮形式のデータを伸張した更新パケットデータを、ＭＣＳ１２５のＲＯＭ更新モードスレッドから通知された領域の先頭アドレスから展開する。これにより、ＳＤＲＡＭ２０３の更新データ領域には前述した図３に示した構造のデータが格納される。
【０１８４】
ステップＳ１４０８では、ＲＲＵアプリ１１７が、更新データパケットを展開したＳＤＲＡＭ２０３上の領域の先頭アドレスを、ＳＣＳ１２２へ通知する。これにより、ＳＣＳ１２２のＲＯＭ更新モードスレッドで更新データの選定処理が行われる。
【０１８５】
これ以降の、ＳＣＳ１２２による更新データの選定処理およびＲＯＭ更新部４３０によるＲＯＭ上のプログラムの更新処理は、実施の形態１にかかる複合機１００と同様であるので説明を省略する。
【０１８６】
このように実施の形態４の複合機１００では、ＮＣＳ１２２が更新データパケットを受信したときに、ＳＣＳ１２２の指令によって、すべてのアプリケーション１３０、すべてのコントロールサービスおよびＳＲＭ１２３が通常モードスレッドを停止してＲＯＭ更新モードスレッドを起動している。
【０１８７】
したがって、実施の形態４の複合機１００では、切り替え時間の速いスレッドの切り替えで複合サービスの機能を停止してＲＯＭ更新モードへ移行することができ、複合機１００を再起動させたり、切り替え時間の遅いプロセスの切り替えを行う場合に比べ、更新要求データパケットがあった場合に迅速に対応してＲＯＭ更新を行うことができる。
【０１８８】
なお、実施の形態４にかかる複合機１００では、コントロールサービス、アプリケーションへのＲＯＭ更新モードスレッドの起動要求をＳＣＳ１２２で行っているが、プログラム起動部４２０や他のプロセスで実現するように構成しても良い。
【０１８９】
以上説明した実施の形態１〜４にかかる複合機１００では、更新データの選定処理をＳＣＳ１２２のＲＯＭ更新モードスレッドで行っているが、プログラム起動部４２０でＳＣＳ１２２とは別のプロセスを起動して、この起動した別のプロセスで更新データの選定処理を行うように構成してもよい。
【符号の説明】
【０１９０】
１００    複合機
１０１    白黒ラインプリンタ
１０２    カラーラインプリンタ
１０３    ハードウェアリソース
１１０    ソフトウェア群
１１１    プリンタアプリ
１１２    コピーアプリ
１１３    ファックスアプリ
１１４    スキャナアプリ
１１５    ネットファイルアプリ
１１６    工程検査アプリ
１１７    リモートＲＯＭ更新アプリ（ＲＲＵアプリ）
１２０    プラットホーム
１２１    汎用ＯＳ
１２２    ＳＣＳ
１２３    ＳＲＭ
１２４    ＥＣＳ
１２５    ＭＣＳ
１２６    ＯＣＳ
１２７    ＦＣＳ
１２８    ＮＣＳ
１３０    アプリケーション
１４０    複合機起動部
２００    コントローラボード
２０１    ＡＳＩＣ
２０２    ＣＰＵ
２０３    ＳＤＲＡＭ
２０４    フラッシュメモリ（フラッシュＲＯＭ）
２０５    ハードディスク装置（ＨＤＤ）
２０８    ＳＲＡＭ
２０９    ネットワークインターフェースコントローラ
２１０    オペレーションパネル
２２０    ＦＣＵ
２３０    ＵＳＢデバイス
２４０    ＩＥＥＥ１３９４デバイス
２５０    ブルートゥースデバイス
２６０    エンジン部
２７１    ネットワーク
２７２    電話網
４１０    ＲＯＭモニタ
４２０    プログラム起動部
４２１    起動モード設定部
４２２    サービス層起動部
４２３    アプリ起動部
４２４    アプリ起動情報設定部
４３０    ＲＯＭ更新部
４３１    ＲＯＭ更新命令解読部
４３２    ＳＲＡＭ処理部
４３３    ＲＯＭ更新処理部
４３４    表示制御部
【先行技術文献】
【特許文献】
【０１９１】
【特許文献１】特開２００１−２６８３０６号公報
【図１】
0005510586.tif 000002
【図２】
0005510586.tif 000003
【図３】
0005510586.tif 000004
【図４】
0005510586.tif 000005
【図５】
0005510586.tif 000006
【図６】
0005510586.tif 000007
【図７】
0005510586.tif 000008
【図８】
0005510586.tif 000009
【図９】
0005510586.tif 000010
【図１０】
0005510586.tif 000011
【図１１】
0005510586.tif 000012
【図１２】
0005510586.tif 000013
【図１３】
0005510586.tif 000014
【図１４】
0005510586.tif 000015
【図１５】
0005510586.tif 000016