JP2005196745A - 情報処理装置、プログラム復旧方法、プログラム復旧プログラム及び記録媒体 - Google Patents

情報処理装置、プログラム復旧方法、プログラム復旧プログラム及び記録媒体 Download PDF

Info

Publication number
JP2005196745A
JP2005196745A JP2004354412A JP2004354412A JP2005196745A JP 2005196745 A JP2005196745 A JP 2005196745A JP 2004354412 A JP2004354412 A JP 2004354412A JP 2004354412 A JP2004354412 A JP 2004354412A JP 2005196745 A JP2005196745 A JP 2005196745A
Authority
JP
Japan
Prior art keywords
program
update
stored
information processing
update data
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
Application number
JP2004354412A
Other languages
English (en)
Inventor
Hisanori Kawaura
久典 川浦
Fumiyuki Yoshida
文幸 吉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2004354412A priority Critical patent/JP2005196745A/ja
Priority to US11/007,708 priority patent/US20050151987A1/en
Priority to DE602004014884T priority patent/DE602004014884D1/de
Priority to EP04029264A priority patent/EP1542125B1/en
Publication of JP2005196745A publication Critical patent/JP2005196745A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Facsimiles In General (AREA)

Abstract

【課題】 プログラムの更新に係り生じる問題を容易に解決し、装置及び/又はプログラムを復旧させることを目的とする。
【解決手段】 プログラムを記憶するプログラム記憶手段と、該プログラム記憶手段に記憶されているプログラムに係る更新データを受信する更新データ受信手段と、更新データに基づいて、プログラム記憶手段に記憶されている対応するプログラムを更新するプログラム更新手段と、を有する情報処理装置であって、当該情報処理装置が前回起動されていたときに、プログラム更新手段におけるプログラムの更新が中断されたかどうかを判定する更新中断判定手段(ステップS11)と、更新中断判定手段(ステップS11)における判定結果に応じて、対応するオペレーティングシステムを起動するオペレーティングシステム起動手段(ステップS12又はステップS17)と、プログラム記憶手段に記憶されているプログラムを復旧する第一プログラム復旧手段と、を有することによって上記課題を解決する。
【選択図】 図11

Description

本発明は、情報処理装置、プログラム復旧方法、プログラム復旧プログラム及び記録媒体に関する。
従来、プリンタ、コピー、ファクシミリ、スキャナ等の装置はそれぞれ別筐体として配設されるのが一般的であった。しかし、最近では、これら各装置の機能を1つの筐体内に収納した画像形成装置が知られている。この画像形成装置は、1つの筐体内に表示部、印刷部及び撮像部等を設けると共に、プリンタ、コピー、スキャナ及びファクシミリ装置にそれぞれ対応する4種類のソフトウェアを設け、ソフトウェアの切り替えによって、当該装置をプリンタ、コピー、スキャナ及びファクシミリ装置として動作させるものである。
このような従来の画像形成装置では、プリンタ、コピー、スキャナ及びファクシミリの各機能ごとにソフトウェアを組み込んだ書き換え不可能なROM(Read Only Memory)を搭載したコントローラボードを設け、複数の機能を実現する構成としていた。
したがって、従来の画像形成装置では、各機能の変更、追加等を行う場合に、機能追加又は機能変更を反映したプログラムを組み込んだ新たなROMを用意してROMごと交換するというハードウェア的な作業が必要であり、更新作業の労力が過大なものとなっていた。
このため、最近の画像形成装置はフラッシュメモリのように電気的に内容の書き換えが可能なROMにプリンタ、コピー、スキャナ及びファクシミリの各機能を含むプログラムを組み込み、複数の機能を複合サービスとして実現している。
このような画像形成装置は、各機能の変更、追加等を行う場合に、機能追加又は機能変更を行ったプログラムを更新データとしてフラッシュカードに記録し、このフラッシュカードを画像形成装置のフラッシュカードインタフェースに挿入した状態で画像形成装置を再起動する。
このとき画像形成装置は、更新プログラムによって更新データをフラッシュカードから読み出し、読み出された更新データによってフラッシュメモリに記録されているプログラムが更新されるようになっている。このように、最近の画像形成装置では、電気的に書き換え可能というフラッシュメモリの特性を利用して、ソフトウェア的にROM更新を行っている。
例えば特許文献1には、ソフトウェアの変更や追加に柔軟に対処することを課題とする技術が記載されている。
ところで、出願人は、表示部、印刷部及び撮像部等の画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピー、スキャナ及びファクシミリ等の各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも2つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットフォームを備えた画像形成装置を発明した(特許文献2参照。)。
なお、ユーザサービスとはユーザに提供する画像形成に係るサービスをいう。また、コントロールサービスとはアプリケーションに画像形成に係るハードウェア資源を提供するサービスをいう。
この画像形成装置によれば、アプリケーションの少なくとも2つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行うプラットフォームを備えた構成とすることによって、通常の画像形成装置に比べて将来的なアプリケーションの追加やコントロールサービスの追加等のソフトウェア開発を容易に行うことができ、拡張性が高いものとなっている。このため、このような構成の画像形成装置では、機能追加や機能変更によるプログラム更新の必要性が従来の画像形成装置よりも非常に高くなってくる。
例えば、画像形成装置の使用契約では、プリンタ、コピー、スキャナの機能のみを使用する契約で画像形成装置を導入し稼働していたが、使用契約の変更によりファクシミリ機能を追加して画像形成装置を使用する場合も考えられる。この場合、ファクシミリ機能の追加により、ファクシミリ用のアプリケーションの追加、及びこれに伴うプラットフォームの追加、変更が必要となってくる。
このような複数のアプリケーション及び共通的な処理を行うプラットフォームを備えた構成の画像形成装置の場合には、特にこのような機能変更、機能追加の要求が不定期に且つ頻繁に生じるケースが多い。このため、従来のプログラム更新方法のように、プログラム更新を行うごとにフラッシュカードを入手し、そのフラッシュカードから更新データを読み込んでROMに格納されたプログラムの更新を行うという作業では、不定期に且つ頻繁に生じるプログラム更新のニーズに迅速に対応できない。また、フラッシュカードを用いたプログラム更新方法では、更新作業が非常に煩雑となり、作業効率が悪いという問題がある。
したがって、出願人は、ネットワーク経由でプログラムの更新データを受信し、該更新データを用いてプログラム更新を行う画像形成装置、プログラム更新方法及び記録媒体を発明した(特許文献3参照。)。
特開2001−268306号公報 特開2002−82806号公報 特開2003−182191号公報
しかしながら、例えば上述したネットワーク経由でプログラムの更新データを受信し、該更新データを用いてプログラム更新を行う画像形成装置では、プログラム更新中に停電やコンセント抜け、人為的電源OFF等が起こると、次回の画像形成装置の電源ONで、画像形成装置の機能の一部又は全てが使用不可能になってしまう問題があった。
以下、プログラムの更新中断後に画像形成装置の機能の一部が使用不可能になった一例を、図1を用いて説明する。図1は、プログラムの更新中断後に画像形成装置の機能の一部が使用不可能になった一例を説明するための図である。なお、画像形成装置の構成の詳細は後述する図3等を用いて説明する。
図1(A)は、プラットフォームの更新前の画像形成装置の一例を示している。一方、図1(B)は、プラットフォームの更新中に、例えば人為的に電源OFFされ、再び起動した後の画像形成装置の一例を示している。
図1(B)は、図1(A)と比べて、SRMと、SCSと、NCSと、は、v.1.00からv.1.10にプログラムが更新されているが、例えばプラットフォームを構成するプロセスの一つであるECSに係るプログラムの更新中に画像形成装置の電源がOFFされたため、図1(B)ではECSが起動されておらず、コピーアプリ及びプリンタアプリ等が使用不可能となっている。
また、例えば上述したネットワーク経由でプログラムの更新データを受信し、該更新データを用いてプログラム更新を行う画像形成装置では、プログラム更新後の画像形成装置で、更新を行ったプログラムと、更新を行わなかったプログラムと、の組み合わせ等が原因で画像形成装置の機能の一部又は全てが使用不可能又は動作が不安定となった場合も、画像形成装置を容易に復旧できない問題もあった。
以下、バージョンの不整合により画像形成装置の機能の一部が使用不可能になった一例を、図2を用いて説明する。図2は、バージョンの不整合により画像形成装置の機能の一部が使用不可能になった一例を説明するための図である。
図2(A)は、コピーアプリの更新前の画像形成装置の一例を示している。一方、図2(B)は、コピーアプリの更新後、コピーアプリv.2.00と、ECSv.1.00と、の組み合わせだと、コピーアプリが正常に動作しない一例を示している。
本発明は、上記の点に鑑みなされたもので、プログラムの更新に係り生じる問題を容易に解決し、装置及び/又はプログラムを復旧させることを目的とする。
そこで、上記問題を解決するため、本発明は、プログラムを記憶するプログラム記憶手段と、該プログラム記憶手段に記憶されているプログラムに係る更新データを受信する更新データ受信手段と、前記更新データに基づいて、前記プログラム記憶手段に記憶されている対応するプログラムを更新するプログラム更新手段と、を有する情報処理装置であって、当該情報処理装置が前回起動されていたときに、前記プログラム更新手段における前記プログラムの更新が中断されたかどうかを判定する更新中断判定手段と、前記更新中断判定手段における判定結果に応じて、対応するオペレーティングシステムを起動するオペレーティングシステム起動手段と、前記プログラム記憶手段に記憶されているプログラムを復旧する第一プログラム復旧手段と、を有することを特徴とする。
また、本発明は、プログラムを記憶するプログラム記憶手段と、該プログラム記憶手段に記憶されているプログラムに係る更新データを受信する更新データ受信手段と、前記更新データに基づいて、前記プログラム記憶手段に記憶されている対応するプログラムを更新するプログラム更新手段と、を有する情報処理装置であって、当該情報処理装置が前回起動されていたときに、前記プログラム記憶手段に記憶されているプログラムを復旧するため、リブートされたかどうかを判定するリブート判定手段と、前記リブート判定手段における判定結果に応じて、対応するオペレーティングシステムを起動するオペレーティングシステム起動手段と、前記プログラム記憶手段に記憶されているプログラムを復旧する第二プログラム復旧手段と、を有することを特徴とする。
なお、プログラム記憶手段は、例えば後述するフラッシュメモリ204に対応する。
本発明によれば、プログラムの更新に係り生じる問題を容易に解決し、装置及び/又はプログラムを復旧させることができる。
また、上記課題を解決するための手段として、プログラム復旧方法、プログラム復旧プログラム及び記録媒体としてもよい。
本発明によれば、プログラムの更新に係り生じる問題を容易に解決し、装置及び/又はプログラムを復旧させることができる。
以下、本発明の実施の形態について図面に基づいて説明する。
図3は、画像形成装置(以下、複合機という)の構成を示すブロック図(その1)である。なお、図3では、後述するROMモニタ410によって、汎用OS121が起動された場合の複合機の構成の一例を示している。
図3に示すように、複合機100は、プロッタ101と、スキャナ102と、FCU(Fax Control Unit)103と、その他ハードウェアリソース104等を有すると共に、汎用OS(Operating System)121と、プラットフォーム120と、アプリケーション130と、から構成されるソフトウェア群110と、電源投入時に実行される複合機起動部140と、を備えている。
複合機起動部140は、複合機100の電源投入時にまず始めに実行され、後述する更新中断情報に更新情報が格納されていない場合及び/又は更新中断情報にメンテナンスフラグが格納されていない場合、図3に示される汎用OS121や、プラットフォーム120、アプリケーション130を起動する。
プラットフォーム120は、アプリケーション130からの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一又は複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ(SRM)123と、を有する。
コントロールサービスは、複数のサービスモジュールから形成され、SCS(システムコントロールサービス)122と、ECS(エンジンコントロールサービス)124と、MCS(メモリコントロールサービス)125と、OCS(オペレーションパネルコントロールサービス)126と、FCS(ファックスコントロールサービス)127と、NCS(ネットワークコントロールサービス)128と、から構成される。なお、プラットフォーム120は、あらかじめ定義された関数によりアプリケーション130から処理要求を受信可能とするアプリケーションプログラムインタフェース(API)を有する。
汎用OS121は、UNIX(登録商標)等の汎用オペレーティングシステムであり、プラットフォーム120並びにアプリケーション130の各ソフトウェアをそれぞれプロセスとして並列実行する。なお、図3に示される汎用OS121は、プロセスに通常モードスレッドと、ROM更新モードスレッドとが存在する場合、初め、各プロセスの通常モードスレッドを実行する。
MCS125は、メモリの制御を行うプロセスとして起動される。MCS125のプロセスは、画像メモリの取得及び解放、ハードディスク装置(HDD)の利用、画像データの圧縮及び伸張等のコピー、プリンタ、ファクシミリ及びスキャナ等の複合サービスを行う通常モードスレッドと、後述するリモートROM更新アプリ117によって更新データパケットから展開された更新データを格納する更新データ領域をSDRAM203等に確保する等の処理を行うROM更新モードスレッドと、を有している。
OCS126のプロセスは、オペレータと本体制御間の情報伝達手段となる操作パネル(オペレーションパネル1310)の制御を行う通常モードスレッドと、ROMの更新に係る情報等を操作パネル(オペレーションパネル1310)に表示する処理等を行うROM更新モードスレッドと、を有している。
FCS127のプロセスは、システムコントローラの各アプリ層からPSTN/ISDN網を利用したファクシミリ送受信、BKM(バックアップSRAM)で管理されている各種ファクシミリデータの登録/引用、ファクシミリ読みとり、ファクシミリ受信印刷、複合送受信を行うためのAPIを提供する等の処理を行う通常モードスレッドと、かかる機能を実行せずに単に起動されるだけのROM更新モードスレッドと、を有している。
NCS128は、ネットワークI/Oを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行ったりする等の処理を行う通常モードスレッドを有している。また、NCS128の通常モードスレッドでは、更に、ネットワークに接続された、例えば複合機開発元のホストコンピュータやアプリケーション開発元のサードベンダ等のリモートホストから、フラッシュメモリ204のROM更新データパケットを受信する。
なお、NCS128のプロセスは、フラッシュメモリ204のROM更新データパケットに含まれる更新データを、後述するリモートROM更新アプリ117に渡す等の処理を行う、ROM更新モードスレッドも有している。
SRM123のプロセスは、SCS122と共にシステムの制御及びリソースの管理を行うものである。SRM123のプロセスは、スキャナ部やプリンタ部等のエンジン、メモリ、HDDファイル、ホストI/O(セントロニクスI/F、IEEE1394 I/F、USB I/F、NIC I/F等)のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する等の処理を行う通常モードスレッドと、かかるリソース管理を実行せずに単に起動されるだけのROM更新モードスレッドを有している。 具体的には、このSRM123の通常モードスレッドは、要求されたハードウェア資源が利用可能であるか(他の要求により利用されていないかどうか)を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、SRM123の通常モードスレッドは、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容(例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成等)を直接実施している。
SCS122のプロセスは、アプリ管理、操作部制御、システム画面表示、LED表示、リソース管理、割り込みアプリ制御等の処理を行う通常モードスレッドを有している。
また、SCS122の通常モードスレッドは、後述するリモートROM更新アプリ117からの要求に基づいて、プリンタアプリ111、コピーアプリ112、ファックスアプリ113、スキャナアプリ114、ネットファイルアプリ115や、ECS124、MCS125、OCS126、FCS127、NCS128等にROM更新モードスレッドの起動依頼を通知する。
また、SCS122のプロセスは、ROM更新モードスレッドも有し、該ROM更新モードスレッドは、SDRAM203等に展開された更新データの中から、複合機100で動作するアプリケーション130、プラットフォーム120の構成に応じた更新データを選定する処理を行ったり、後述するROM更新部430を起動したりする処理を行う。
ECS124のプロセスは、プロッタ101、スキャナ102、FCU(Fax Control Unit)103、その他ハードウェアリソース104、のエンジンの制御等の処理を行う通常モードスレッドと、このようなエンジン制御を行わずに単に起動されるだけのROM更新モードスレッドと、を有している。
このように、SRM123、ECS124、FCS127の各ROM更新モードスレッドはいずれも単に起動されるだけであるが、これは、ROM更新処理時に、複合機内部で動作するコントロールサービスの存在を示すために起動されるようになっている。一方、SCS122、MCS125、OCS126、NCS128の各ROM更新モードスレッドも、それぞれROM更新に必要な処理を行うと共に、複合機内部で動作するコントロールサービスの存在を示すために起動されるようになっている。
アプリケーション130は、ページ記述言語(PDL)、PCL及びポストスクリプト(PS)を有するプリンタ用のアプリケーションであるプリンタアプリ111と、コピー用アプリケーションであるコピーアプリ112と、ファクシミリ用アプリケーションであるファックスアプリ113と、スキャナ用アプリケーションであるスキャナアプリ114と、ネットワークファイル用アプリケーションであるネットファイルアプリ115と、NCS128によりネットワーク経由で受信した更新データパケットを更新データに展開し、その更新データをMCS125のROM更新モードスレッドによって確保されたSDRAM203等の更新データ領域に格納する処理等を行うリモートROM更新アプリ(以下、RRUアプリという)117と、を有している。
これらの各アプリも、プラットフォーム120と同様にそれぞれプロセスとして起動され、RRUアプリ117以外の各アプリは、各々上述したような処理を行う通常モードスレッドと、当該自身の存在を示すために起動されるROM更新モードスレッドと、を有する。
以下、複合機100のハードウェア構成の一例を、図4を用いて説明する。図4は、複合機のハードウェア構成を示すブロック図である。
図4に示すように、複合機100は、オペレーションパネル1310、FAXコントロールユニット(FCU)103、エンジン部1350(スキャナ102等が接続される)及びプロッタ101とコントローラ1300のASIC1301とをPCI(Peripheral ComPonent Interconnect)バス1309等で接続した構成となる。
コントローラ1300は、ASIC1301にNVRAM208、SDRAM203、フラッシュメモリ204、HDD(Hard Disk Drive)1303等を接続すると共に、このASIC1301とCPU1304とをCPUチップセットのNB1305を介して接続している。このように、NB1305を介して接続する理由は、CPU1304自体のインターフェースが公開されていないためである。
ここで、このASIC1301とNB1305は、単にPCIを介して接続されているのではなく、AGP1308を介して接続されている。このようにAGP1308を介して接続することとした理由は、この複合機100が図3に示したプラットフォーム120やアプリケーション130を形成する複数のプロセスを実行制御する関係上、これらを低速のPCIで接続したのでは、パフォーマンスが低下するからである。
CPU1304は、複合機100の全体制御を行うものであり、具体的には、汎用OS121上でSRM123や、プラットフォーム120を形成するSCS122、ECS124、MCS125、OCS126、FCS127、NCS128をそれぞれプロセスとして起動して実行させると共に、アプリケーション130を形成するプリンタアプリ111、コピーアプリ112、ファックスアプリ113、スキャナアプリ114、ネットファイルアプリ115、RRUアプリ117を起動して実行させる。なお、例えば、複合機100が後述する図10に示すような構成の場合、CPU1304は、汎用レスキューOS131上でSRM123や、プラットフォーム120を形成するSCS122、MCS125をそれぞれプロセスとして起動して実行させる。
NB1305は、CPU1304と、システムメモリ1306と、SB1307と、NIC(Network Interface Card)1341と、USB(Universal Serial Bus)1330と、IEEE13941340と、セントロニクス1342と、ドライバI/F1343と、ASIC1301と、を接続するためのブリッジである。
システムメモリ1306は、複合機の描画用メモリ等として用いるメモリであり、SB1307は、NB1305と周辺デバイスとを接続するためのブリッジである。SB1307は、コントローラ1300での時間を計測するRTC(Real Time Clock)を有する。また、SB1307は、内部にUSBホストを有し、例えば、USB接続のカメラを接続することで画像データを取り込むことが可能であり、また、他のUSBターゲットからデータを受け取ることも可能である。
ドライバI/F1343は、挿入された、プログラム又はアプリケーション等が格納されている記録媒体から、プログラム又はアプリケーション等を読み込んで、複合機100に搭載するのに用いるI/Fである。なお、例えば記録媒体としては、SDメモリカード、スマートメディア、マルチメディアカード、コンパクトフラッシュ(登録商標)等がある。
SDRAM203は、更新データパケットをネットワーク経由で受信したときに、受信した更新データパケットから展開される更新データを格納する更新データ領域が確保される不揮発性メモリである。
NVRAM208は、例えば後述する更新中断情報等を格納する不揮発性メモリである。
フラッシュメモリ(以下、フラッシュROMという)204には、上述の各アプリ、プラットフォームを構成する各コントロールサービスやSRM123の各プログラムが格納されている。複合機100は、これらの各プログラムがあらかじめフラッシュROM204に組み込まれた状態で出荷され、ROM更新データパケットの受信によって、フラッシュROM204のプログラムが更新されるという、リモートROM更新の処理が実行されるようになっている。
HDD1303は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積、文書の蓄積を行うストレージであり、オペレーションパネル1310は、操作者からの入力操作の受け付け並びに操作者に向けた表示を行う操作部である。
ASIC1301には、NVRAM208及びSDRAM203等を接続するためのRAMインターフェースと、フラッシュROM204を接続するためのROMインターフェースと、HDD1303を接続するためのハードディスクインターフェースと、が設けられ、これらの記憶部に対して画像データの入出力を行う場合には、入出力先がRAMインターフェース又はROMインターフェース又はハードディスクインターフェースに切り替えられる。
AGP1308は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレーターカード用のバスインターフェースであり、システムメモリ1306に高スループットで直接アクセスすることにより、グラフィックスアクセラレーターカードを高速にする。
以下、リモートROM更新の全体処理の一例を、図5及び図6を用いて説明する。図5は、リモートROM更新の全体処理を説明するための図(その1)である。
図5に示されるように、複合機100が通常の複合サービスの動作を実行しているときは、通常モードスレッドと、ROM更新モードスレッドと、を有している各アプリ、各コントロールサービス等は、何れも通常モードスレッドを実行している。
この状態で、ネットワーク経由で複合機開発元のホストコンピュータやアプリケーション開発元のサードベンダのホストコンピュータ等のリモートホストから更新データパケットが送信されてくると、NCS128の通常モードスレッドは、更新データパケットを受信する(シーケンスSQ1。)。
NCS128の通常モードスレッドは、受信したパケットの内容を判断し、更新データパケットであると判定すると、ROMの更新データパケットを受信した旨をRRUアプリ117に通知する(シーケンスSQ2。)。
NCS128の通常モードスレッドよりROMの更新データパケットを受信した旨を通知されたRRUアプリ117は、SCS122の通常モードスレッドに対して、ROM更新モードスレッドの移行依頼通知の発行を要求する(シーケンスSQ3。)。
RRUアプリ117よりROM更新モードスレッドの移行依頼通知の発行を要求されたSCS122の通常モードスレッドは、プリンタアプリ111、コピーアプリ112、ファックスアプリ113、スキャナアプリ114、ネットファイルアプリ115、ECS124、MCS125、OCS126、FCS127、NCS128の各通常モードスレッドに対して、ROM更新モードスレッドの移行依頼を通知する(シーケンスSQ4。)。
図6は、リモートROM更新の全体処理を説明するための図(その2)である。
図5のシーケンスSQ4によって、SCS122の通常モードスレッドより、ROM更新モードスレッドの移行依頼を通知されたプリンタアプリ111、コピーアプリ112、ファックスアプリ113、スキャナアプリ114、ネットファイルアプリ115、ECS124、MCS125、OCS126、FCS127、NCS128は、図6に示されるようにそれぞれ通常モードスレッドからROM更新モードスレッドに移行する。
また、RRUアプリ117は、更新データパケットを展開するのに必要な領域を得るために、MCS125のROM更新モードスレッドに対して、更新データ領域の確保を要求する(シーケンスSQ5。)。
RRUアプリ117より更新データ領域の確保を要求されたMCS125のROM更新モードスレッドは、例えば、SDRAM203上に更新データ領域を確保して、該更新データ領域の先頭アドレスと、該更新データ領域の領域サイズと、をRRUアプリ117に返す(シーケンスSQ6。)。
MCS125のROM更新モードスレッドより、更新データ領域の先頭アドレスと、該更新データ領域の領域サイズと、を受け取ったRRUアプリ117は、NCS128のROM更新モードスレッドより更新データパケットを受け取り(シーケンスSQ7)、ネットワーク情報を除去し、また圧縮形式のデータを伸張した更新データパケットを、MCS125のROM更新モードスレッドから通知された更新データ領域の先頭アドレスから展開する。
以下、更新データ領域に展開された更新データパケットの一例を、図7を用いて説明する。図7は、複合機で受信した更新データパケットの展開後のデータ構造図である。
図7に示されるように、展開された更新データパケットは、ヘッダ部302と、データ部303と、を含む。
ヘッダ部302は、更新するモジュールに対応するように、モジュールごとのヘッダブロックに分かれている。各ヘッダブロックには、次のヘッダブロックまでのオフセットである次ヘッダオフセットと、モジュールの更新データまでのオフセットである更新データオフセットと、更新データのサイズと、モジュールの識別情報であるモジュールIDと、該モジュールのフラッシュROM204上での相対番地を示す更新先アドレスと、該モジュールのサイズである更新先領域長と、を含む。
データ部303は、更新データがモジュールごとに格納されている。なお、各モジュールの更新データの先頭は、モジュールに対応するヘッダブロックの更新データオフセットにより参照できるようになっている。
図6に戻り、RRUアプリ117は、更新データパケットを展開した更新データ領域の先頭アドレスをSCS122の通常モードスレッドに通知し、更新データの選定を依頼する(シーケンスSQ8。)。
RRUアプリ117より更新データの選定依頼を受け取ったSCS122の通常モードスレッドは、SCS122のROM更新モードスレッドを起動し、後述する図12に示すような処理を行い、更新データを選定する(シーケンスSQ9。)。
また、SCS122のROM更新モードスレッドは、後述する図9に示すROM更新部430を起動し、後述する図13に示すようなROMの更新処理を行う(シーケンスSQ10。)。
以下、複合機起動部140の構成の一例を、図8を用いて説明する。図8は、複合機起動部の構成の一例を示すブロック図である。
図8に示されるように、複合機起動部140は、ROMモニタ410と、プログラム起動部420と、を含む。
ROMモニタ410は、後述する更新中断情報に更新情報が格納されていない場合及び/又は更新中断情報にメンテナンスフラグが格納されていない場合、図3に示される汎用OS121を起動し、更新中断情報に更新情報が格納されている場合及び/又は更新中断情報にメンテナンスフラグが格納されている場合、後述する図10に示されるように、汎用レスキューOS131を起動する。
プログラム起動部420は、汎用OS121又は汎用レスキューOS131より呼び出され、サービス層起動部422と、アプリ起動部423と、起動情報設定部424と、を含む。
サービス起動部422は、プログラム起動部420が汎用OS121より呼び出された場合は、汎用OS121の起動情報を取得して、プラットフォーム120を起動する。一方、サービス起動部422は、プログラム起動部420が汎用レスキューOS131より呼び出された場合は、汎用レスキューOS131の起動情報を取得して、後述する図10に示すように、例えばSRM123や、MCS125、SCS122等を含むプラットフォーム120を起動する。
アプリ起動部423は、プログラム起動部420が汎用OS121より呼び出された場合に実行され、各アプリの起動情報を取得して各アプリを起動する。なお、後述する実施例4等に示されるように、アプリ起動部423は、プログラム起動部420が汎用レスキューOS131より呼び出された場合であっても実行され、RRUアプリ117の起動情報を取得してRRUアプリ117を起動するようにしてもよい。
起動情報設定部424は、プラットフォーム120に含まれる各コントロールサービスやSRM123、アプリケーション130に含まれる各アプリのROM更新モードスレッドが実行されたときに起動され、各コントロールサービスや、SRM123及び各アプリの起動情報を取得して、取得した起動情報を環境変数に設定する。なお、起動情報設定部424は、後述する各コントロールサービスやSRM123、アプリケーション130に含まれる各アプリのレスキューモードスレッドが実行されたときにも起動され、各コントロールサービスや、SRM123及び各アプリの起動情報を取得して、取得した起動情報を環境変数に設定するようにしてもよい。
以下、SCS122に含まれるROM更新部430の一例を、後述する図9を用いて説明する。図9は、ROM更新部の構成の一例を示すブロック図である。
図9に示されるように、ROM更新部430は、更新情報格納部431と、領域データ蓄積部432と、ROM更新部433と、更新情報削除部434と、を含む。また、後述する実施例2、3、4、5、6、7の場合は、更に表示制御部435を含む。また、後述する実施例4の場合は、更に送信制御部436を含む。
更新情報格納部431は、図7に示したようなモジュールIDや、更新先アドレス等の更新情報を更新中断情報に格納する。
領域データ蓄積部432は、更新される領域のデータをHDD1303等の二次記憶装置に蓄積する。
ROM更新部433は、更新データに基づいて、該更新データに含まれるプログラムで、フラッシュROM204の対応するプログラムを更新する。
更新情報削除部434は、更新情報格納部431が格納した更新情報を、更新中断情報から削除する。
表示制御部435は、例えばOCS126が起動しているかどうかを判定し、OCS126が起動していると判定すると、フラッシュROM204の復旧中画面を作成し、OCS126を介してオペレーションパネル1310に表示したり、エラー画面を作成し、OCS126を介してオペレーションパネル1310に表示したりする。
送信制御部436は、例えばNCS128が起動しているかどうかを判定し、NCS128が起動していると判定すると、フラッシュROM204の復旧に係る情報を、NCS128を介してネットワーク経由で、複合機開発元のホストコンピュータやアプリケーション開発元のサードベンダのホストコンピュータ等のリモートホストに送信する。
以下、ROMモニタ410によって、汎用レスキューOS131が起動された場合の複合機100の構成の一例を、図10を用いて説明する。図10は、複合機の構成を示すブロック図(その2)である。
図10に示されるように、汎用レスキューOS131が起動された場合は、SRM123と、MCS125と、SCS122と、のレスキューモードスレッドが実行される。
SCS122のレスキューモードスレッドは、後述するようにレスキュー方法の判定を行い、該判定結果に基づいて、MCS125のレスキューモードスレッドを介してHDD1303等の二次記憶装置よりプログラムの更新に係る情報やデータを取得し、ROM更新部430を起動する。
MCS125のレスキューモードスレッドは、SCS122のレスキューモードスレッドからの要求に基づいて、HDD1303等の二次記憶装置よりプログラムの更新に係る情報やデータを取得し、SCS122のレスキューモードスレッドに提供したり、ROM更新部430からの要求に基づいて、更新される領域のデータをHDD1303等の二次記憶装置に蓄積したりする。
以下、ブート時のOS切り替え処理を、図11を用いて説明する。図11は、ブート時のOS切り替え処理を説明するためのフローチャートである。
複合機100は、電源が投入されると、ステップS10において、ROMモニタ410を起動する。
ステップS10に続いてステップS11に進み、ROMモニタ410は、更新中断情報に更新情報が格納されているかどうかを判定する。ROMモニタ410は、更新中断情報に更新情報が格納されていると判定すると(ステップS11においてYES)、ステップS16に進み、更新中断情報に更新情報が格納されていないと判定すると(ステップS11においてNO)、ステップS12に進む。
ステップS12では、ROMモニタ410が、汎用OS121を起動する。
ステップS12に続いてステップS13に進み、ステップS12において起動された汎用OS121は、プログラム起動部420を起動する。
ステップS13に続いてステップS14に進み、プログラム起動部420に含まれるサービス起動部422は、プラットフォーム120を起動する。
ステップS14に続いてステップS15に進み、プログラム起動部420に含まれるアプリ起動部423は、アプリケーション130を起動する。
一方、ステップS16では、ROMモニタ410が、起動時情報にレスキューブートフラグを格納する。
ステップS16に続いてステップS17に進み、ROMモニタ410は、汎用レスキューOS131を起動する。
ステップS17に続いてステップS18に進み、ステップS17において起動された汎用レスキューOS131は、プログラム起動部420を起動する。
ステップS18に続いてステップS19に進み、プログラム起動部420に含まれるサービス起動部422は、起動時情報を参照し、レスキューブートフラグが格納されていると、レスキューモードオプションを付加して、プラットフォーム120を起動する。
ステップS19に続いてステップS20に進み、SCS122は、レスキューモードスレッドを起動する。
以下、図6のシーケンスSQ9において説明したSCS122のROM更新モードスレッドによる更新データの選定処理の一例を、図12を用いて説明する。図12は、SCSのROM更新モードスレッドで実行される更新データ選定処理を説明するためのフローチャート(その1)である。
ステップS30において、SCS122のROM更新モードスレッドは、RRUアプリ117より通知された更新データパケットを展開した更新データ領域の先頭アドレスに基づいて、更新データの先頭のヘッダブロックをシークする。
ステップS30に続いてステップS31に進み、SCS122のROM更新モードスレッドは、ヘッダブロックからモジュールIDを取得する。
ステップS31に続いてステップS32に進み、SCS122のROM更新モードスレッドは、ステップS31において取得したモジュールIDと、環境変数に設定されているプラットフォーム120又はアプリケーション130の起動情報に含まれるモジュールIDとを比較して、一致するかどうか判定する。
SCS122のROM更新モードスレッドは、ステップS31において取得したモジュールIDが、環境変数に設定されているプラットフォーム120又はアプリケーション130の起動情報に含まれるモジュールIDと一致すると判定すると(ステップS32においてYES)、ステップS33に進み、ステップS31において取得したモジュールIDが、環境変数に設定されているプラットフォーム120又はアプリケーション130の起動情報に含まれるモジュールIDと一致しないと判定すると(ステップS32においてNO)、ステップS35に進む。
ステップS33では、SCS122のROM更新モードスレッドが、ヘッダブロックから、更新先アドレス、更新データオフセット、更新データサイズ等を取得する。
ステップS33に続いてステップS34に進み、SCS122のROM更新モードスレッドは、モジュールID、更新先アドレス、更新データオフセット、更新データサイズ等を一組とした更新情報を更新対象の変数等に設定する。
ステップS35では、SCS122のROM更新モードスレッドが、更新データパケットを展開した更新データ領域を参照し、次のヘッダブロックが存在するかどうかを判定する。SCS122のROM更新モードスレッドは、次のヘッダブロックが存在すると判定すると(ステップS35においてYES)、ステップS36に進み、次のヘッダブロックが存在しないと判定すると(ステップS35においてNO)、ステップS37に進む。
ステップS36では、SCS122のROM更新モードスレッドが、次のヘッダブロックをシークし、ステップS31からの処理を繰り返す。
一方、ステップS37では、SCS122のROM更新モードスレッドが、更新対象の変数等を参照し、更新情報が設定されているかどうかを判定する。SCS122のROM更新モードスレッドは、更新対象の変数等に更新情報が設定されていると判定すると(ステップS37においてYES)、ステップS38に進み、更新対象の変数等に更新情報が設定されていないと判定すると(ステップS37においてNO)、処理を終了する。
ステップS38では、SCS122のROM更新モードスレッドが、更新データパケットを展開した更新データ領域に格納されている対応する更新データを、HDD1303等の二次記憶装置に蓄積する。
このように、更新データをHDD1303等の二次記憶装置に蓄積しておくことによって、例えプログラムの更新中に電源がOFFされても、HDD1303等の二次記憶装置に蓄積されている該更新データを用いて、プログラムの更新を再実行し、復旧することができる。
ステップS38に続いて、ステップS39に進み、SCS122のROM更新モードスレッドは、SCS122のROM更新部430を起動する。
以下、SCS122のROM更新部430によるROM更新処理の一例を、図13を用いて説明する。図13は、SCSのROM更新部によるROM更新処理を説明するためのフローチャート(その1)である。
ステップS50において、SCS122のROM更新部430は、モジュールID、更新先アドレス、更新データオフセット、更新データサイズ等の更新情報の1つを更新中断情報に格納する。なお、最初にステップS50を実行する際は、SCS122のROM更新部430は、更新情報の1番目(例えば、n=0番目)を更新中断情報に格納し、後述するステップS55等においてYESと判定し、ステップS50の処理に来るたびに、nの値を1つインクリメントし、例えば次は2番目(n=1番目)の更新情報を更新中断情報に格納する。
ステップS50に続いてステップS51に進み、SCS122のROM更新部430は、更新データによって更新されるフラッシュROM204の対応する領域のデータを、HDD1303等の二次記憶装置に蓄積する。
このように、更新される領域のデータをHDD1303等の二次記憶装置に蓄積しておくことによって、例えプログラムの更新中に電源がOFFされても、HDD1303等の二次記憶装置に蓄積されている該更新される領域のデータを用いて、プログラムの更新を行う前の状態に復旧することができる。
ステップS51に続いてステップS52に進み、SCS122のROM更新部430は、更新データパケットを展開した更新データ領域から対応する更新データを読み出して、該更新データで、フラッシュROM204の更新先アドレスから書き換えを行う。
ステップS52に続いてステップS53に進み、SCS122のROM更新部430は、ステップS52において読み出した更新データと、ステップS52において書き換えを行った後のフラッシュROM204の更新したモジュールのデータと、を比較して、正しく書き換えが行われたかどうか判定する。SCS122のROM更新部430は、正しく書き換えが行われたと判定すると(ステップS53においてYES)、ステップS55に進み、正しく書き換えが行われなかったと判定すると(ステップS53においてNO)、ステップS54に進む。
ステップS54では、SCS122のROM更新部430が、エラー処理を行う。例えば、SCS122のROM更新部430は、図12において説明したように、SCS122のROM更新モードスレッドから呼ばれた場合は、OCS126のROM更新モードスレッドを介して、エラー画面をオペレーションパネル1310に表示する。また、SCS122のROM更新部430は、後述するように、SCSのレスキューモードスレッドから呼ばれた場合は、エラー情報をHDD1303等に格納されているログファイルに格納する。
一方、ステップS55では、SCS122のROM更新部430が、更新対象の変数等を参照し、次の更新情報が設定されているかどうかを判定する。SCS122のROM更新部430は、更新対象の変数等に次の更新情報が設定されていると判定すると(ステップS55においてYES)、ステップS50からの処理を繰り返し、更新対象の変数等に次の更新情報が設定されていないと判定すると(ステップS55においてNO)、ステップS56に進む。
ステップS56では、SCS122のROM更新部430が、更新中断情報に格納されている更新情報を削除する。
以下、図11のステップS20において起動されたSCS122のレスキューモードスレッドによる更新データの選定処理の一例を、図14を用いて説明する。図14は、SCSのレスキューモードスレッドで実行される更新データ選定処理を説明するためのフローチャート(その1)である。
ステップS60において、SCS122のレスキューモードスレッドは、例えばHDD1303等に格納されている複合機100の定義ファイル等を参照して、予め設定されているレスキュー方法を選択する。SCS122のレスキューモードスレッドは、レスキュー方法として、「中断された更新を再実行する」を選択すると、ステップS63に進み、「更新を行う1つ前の状態に戻す」を選択すると、ステップS61に進む。
ステップS61では、SCS122のレスキューモードスレッドが、図13のステップS51等において蓄積された、更新されるフラッシュROM204の領域のデータをHDD1303等の二次記憶装置より取得する。
ステップS61に続いてステップS62に進み、SCS122のレスキューモードスレッドは、図13のステップS50等において格納された更新情報を更新中断情報から取得する。
一方、ステップS63では、SCS122のレスキューモードスレッドが、図12のステップS38等において蓄積された更新データを、HDD1303等の二次記憶装置より取得する。
ステップS63に続いてステップS64に進み、SCS122のレスキューモードスレッドは、ステップS63において取得した更新データの先頭のヘッダブロックをシークする。
ステップS64に続いてステップS65に進み、SCS122のレスキューモードスレッドは、ヘッダブロックからモジュールIDを取得する。
ステップS65に続いてステップS66に進み、SCS122のレスキューモードスレッドは、ステップS65において取得したモジュールIDと、図13のステップS50等において格納された更新情報に含まれるモジュールIDと、が一致するかどうかを判定する。
SCS122のレスキューモードスレッドは、ステップS65において取得したモジュールIDと、図13のステップS50等において格納された更新情報に含まれるモジュールIDと、が一致すると判定すると(ステップS66においてYES)、ステップS67に進み、ステップS65において取得したモジュールIDと、図13のステップS50等において格納された更新情報に含まれるモジュールIDと、が一致しないと判定すると(ステップS66においてNO)、ステップS69に進む。
ステップS67では、SCS122のレスキューモードスレッドが、ヘッダブロックから、更新先アドレス、更新データオフセット、更新データサイズ等を取得する。
ステップS67に続いてステップS68に進み、SCS122のレスキューモードスレッドは、モジュールID、更新先アドレス、更新データオフセット、更新データサイズ等を一組とした更新情報を更新対象の変数等に設定する。
ステップS69では、SCS122のレスキューモードスレッドが、次のヘッダブロックが存在するかどうかを判定する。SCS122のレスキューモードスレッドは、次のヘッダブロックが存在すると判定すると(ステップS69においてYES)、ステップS70に進み、次のヘッダブロックが存在しないと判定すると(ステップS69においてNO)、ステップS71に進む。
ステップS70では、SCS122のレスキューモードスレッドが、次のヘッダブロックをシークし、ステップS65からの処理を繰り返す。
一方、ステップS71では、SCS122のレスキューモードスレッドが、更新対象の変数等を参照し、更新情報が設定されているかどうかを判定する。SCS122のレスキューモードスレッドは、更新対象の変数等に更新情報が設定されていると判定すると(ステップS71においてYES)、ステップS72に進み、更新対象の変数等に更新情報が設定されていないと判定すると(ステップS71においてNO)、処理を終了する。
ステップS72では、SCS122のレスキューモードスレッドが、SCS122のROM更新部430を起動する。
SCS122のレスキューモードスレッドによって起動されたSCS122のROM更新部430は、図13に示したような処理を行い、フラッシュROM204の更新を行う。
以下、複合機100のメモリ構造の一例を、図15を用いて説明する。図15は、メモリ構造の一例を示すための図である。
図15に示されるように、例えば、更新中断情報は、NVRAM空間に含まれ、ROM空間には、ROMモニタ410に対応するプログラムや、図10に示したようなソフトウェア群110のプログラムに対応するレスキューシステムや、図3に示したようなプラットフォーム120のプログラムに対応する通常システムや、各アプリのプログラムに対応するアプリ1、アプリ2等が含まれている。
以下、図15に示したように、更新中断情報をNVRAM空間に格納する場合の更新中断情報のレイアウトの一例を、図16を用いて説明する。図16は、更新中断情報をNVRAMに格納する場合の更新中断情報のレイアウトを説明するための図(その1)である。
図16に示されるように、更新中断情報は、例えば16バイトのモジュールIDと、4バイトの更新先アドレスと、を含む。
以下、HDD1303のディレクトリ及びファイル構成の一例を、図17を用いて説明する。図17は、HDDのディレクトリ及びファイル構成を説明するための図(その1)である。
図17に示されるように、HDD1303には、更新データ及び/又は更新される領域のデータを保持するディレクトリとしてbackupディレクトリを有し、該backupディレクトリには、更新データ及び/又は更新される領域のデータとしてbackup.binファイルが格納されている。
以下、HDD1303のディレクトリ及びファイル構成の他の例を、図18を用いて説明する。図18は、HDDのディレクトリ及びファイル構成を説明するための図(その2)である。
図15及び図16に示したように、更新中断情報をNVRAM208に格納するのではなく、図18に示されるように更新中断情報を保持するディレクトリとして、romupdateディレクトリをHDD1303に設け、該romupdateディレクトリに、更新中断情報を含むファイルとして更新中断情報ファイルを格納するようにしてもよい。
以下、更新中断情報ファイルの内容の一例を、図19を用いて説明する。図19は、更新中断情報ファイルの内容の一例を説明するための図である。
図19に示されるように、更新中断情報ファイルには、モジュールIDと、更新先アドレスと、が含まれている。
上述した実施例1では、例えば、図13のステップS52においてフラッシュROM204の更新中に複合機100の電源がOFFされても、次回、複合機100の電源がONされれば、汎用レスキューOS131が起動され、フラッシュROM204の更新を再開するか又はフラッシュROM204を更新前の状態に戻すことによって、プログラムを復旧させることができたが、複合機100のオペレーションパネル1310に何ら表示されないため、ユーザは、汎用レスキューOS131が起動され、プログラムの復旧(ROMのアップデート)が行われているのかどうか等知ることができない問題があった。
したがって、実施例2では、汎用レスキューOS131が起動された場合も、オペレーションパネル1310にフラッシュROM204の更新に係る画面等を表示して、上記問題を解決する。なお、以下では、実施例1とは異なる点について説明を行い、実施例1と同じ点は説明を省略する。
以下、ROMモニタ410によって、汎用レスキューOS131が起動された場合の複合機100の構成の他の例を、図20を用いて説明する。図20は、複合機の構成を示すブロック図(その3)である。
図20に示される複合機100の構成は、実施例1の図10に示される複合機100の構成と比べて、OCS126のレスキューモードスレッドが含まれている。
OCS126のレスキューモードスレッドは、オペレータと本体制御間の情報伝達手段となる操作パネル(オペレーションパネル1310)の制御を行い、例えば後述する画面等を、オペレーションパネル1310に表示する。
以下、実施例2におけるブート時のOS切り替え処理の一例を、図21を用いて説明する。図21は、ブート時のOS切り替え処理を説明するためのフローチャート(その2)である。
図21のステップS100からステップS109までの処理は、図11のステップS10からステップS19までの処理と同様である。
ステップS109に続いてステップS110に進み、OCS126のレスキューモードスレッドは、起動時画面をオペレーションパネル1310に表示する(図22参照。)。
図22に示されるように、起動時の画面をオペレーションパネル1310に表示することによって、例えば、ユーザにレスキューモードで起動されていることを知らせることができる。
ステップS110に続いてステップS111に進み、SCS122は、レスキューモードスレッドを起動する。
SCS122のレスキューモードスレッドは、図14に示したような処理を行い、SCS122のROM更新部430を起動する。
以下、SCS122のROM更新部430によるROM更新処理の他の例を、図23を用いて説明する。図23は、SCSのROM更新部によるROM更新処理を説明するためのフローチャート(その2)である。
ステップS120において、SCS122のROM更新部430は、モジュールID、更新先アドレス、更新データオフセット、更新データサイズ等の更新情報を更新中断情報に格納する。
ステップS120に続いてステップS121に進み、SCS122のROM更新部430は、更新データによって更新されるフラッシュROM204の対応する領域のデータを、HDD1303等の二次記憶装置に蓄積する。
このように、更新される領域のデータをHDD1303等の二次記憶装置に蓄積しておくことによって、例えプログラムの更新中に電源がOFFされても、HDD1303等の二次記憶装置に蓄積されている該更新される領域のデータを用いて、フラッシュROM204を、プログラムの更新を行う前の状態に復旧することができる。
ステップS121に続いてステップS122に進み、SCS122のROM更新部430は、更新データパケットを展開した更新データ領域から対応する更新データを読み出して、該更新データで、フラッシュROM204の更新先アドレスから書き換えを行う。
ステップS122に続いてステップS123に進み、SCS122のROM更新部430は、OCS126のレスキューモードスレッドが起動されているかどうかを判定する。
SCS122のROM更新部430は、OCS126のレスキューモードスレッドが起動されていると判定すると(ステップS123においてYES)、ステップS124に進み、OCS126のレスキューモードスレッドが起動されていないと判定すると(ステップS123においてNO)、ステップS125に進む。
SCS122のROM更新部430は、例えば、環境変数等を参照し、OCS126のレスキューモードスレッドが起動されているかどうかを判定する。
ステップS124では、SCS122のROM更新部430が、OCS126のレスキューモードスレッドを介して、オペレーションパネル1310に復旧中画面を表示する(図24参照。)。
図24に示されるように、フラッシュROM204の復旧中の画面をオペレーションパネル1310に表示することによって、ユーザに、ROMをアップデートしている旨及びROMをアップデートしているため、電源を切らないで欲しい旨等、通知することができる。
ステップS125では、SCS122のROM更新部430が、ステップS122において読み出した更新データと、ステップS122において書き換えを行った後のフラッシュROM204の更新したモジュールのデータと、を比較して、正しく書き換えが行われたかどうか判定する。SCS122のROM更新部430は、正しく書き換えが行われたと判定すると(ステップS125においてYES)、ステップS128に進み、正しく書き換えが行われなかったと判定すると(ステップS125においてNO)、ステップS126に進む。
ステップS126では、SCS122のROM更新部430が、OCS126のレスキューモードスレッドが起動されているかどうかを判定する。
SCS122のROM更新部430は、OCS126のレスキューモードスレッドが起動されていると判定すると(ステップS126においてYES)、ステップS127に進み、OCS126のレスキューモードスレッドが起動されていないと判定すると(ステップS126においてNO)、処理を終了する。
ステップS127では、SCS122のROM更新部430が、OCS126のレスキューモードスレッドを介して、オペレーションパネル1310にエラー画面を表示する(図25参照。)。
図25に示されるように、エラー時の画面をオペレーションパネル1310に表示することによって、ユーザにROMのアップデート中にエラーが生じたので、サービスセンターに連絡する必要がある旨等、通知することができる。
一方、ステップS128では、SCS122のROM更新部430が、更新対象の変数等を参照し、次の更新情報が設定されているかどうかを判定する。SCS122のROM更新部430は、更新対象の変数等に次の更新情報が設定されていると判定すると(ステップS128においてYES)、ステップS120からの処理を繰り返し、更新対象の変数等に次の更新情報が設定されていないと判定すると(ステップS128においてNO)、ステップS129に進む。
ステップS129では、SCS122のROM更新部430が、更新中断情報に格納されている更新情報を削除する。
上述した実施例1及び実施例2では、フラッシュROM204の更新が中断された場合の復旧方法等について説明を行ったが、以下の実施例では、フラッシュROM204の更新後、更新を行ったプログラムと、更新を行わなかったプログラムと、の組み合わせ等が原因で複合機100の機能の一部又は全てが使用不可能又は動作が不安定となった場合の復旧方法等について説明を行う。なお、以下では、実施例1及び実施例2と異なる点について説明を行い、実施例1及び実施例2と同じ点は説明を省略する。
以下、ROMモニタ410によって、汎用レスキューOS131が起動された場合の複合機100の構成の他の例を、図26を用いて説明する。図26は、複合機の構成を示すブロック図(その4)である。
図26に示される複合機100の構成は、実施例2の図20に示される複合機100の構成と比べてNCS128のレスキューモードスレッドと、RRUアプリ117と、が含まれている。
NCS128のレスキューモードスレッドは、ネットワークに接続された、例えば複合機開発元のホストコンピュータやアプリケーション開発元のサードベンダ等から、フラッシュROM204のROM更新データパケットを受信する。
また、RRUアプリ17は、上述したように、NCS128によりネットワーク経由で受信した更新データパケットを更新データに展開し、その更新データをMCS125のレスキューモードスレッドによって確保されたSDRAM203等の更新データ領域に格納する処理等を行う。
以下、実施例3におけるブート時のOS切り替え処理の一例を、図27を用いて説明する。図27は、ブート時のOS切り替え処理を説明するためのフローチャート(その3)である。
複合機100は、電源が投入されると、ステップS200において、ROMモニタ410を起動する。
ステップS200に続いてステップS201に進み、ROMモニタ410は、更新中断情報にメンテナンスフラグが格納されているかどうかを判定する。ROMモニタ410は、更新中断情報にメンテナンスフラグが格納されていると判定すると(ステップS201においてYES)、ステップS210に進み、更新中断情報にメンテナンスフラグが格納されていないと判定すると(ステップS201においてNO)、ステップS202に進む。
ステップS202では、ROMモニタ410が、汎用OS121を起動する。
ステップS202に続いてステップS203に進み、ROMモニタ410は、ステップS202において起動された汎用OS121が正常に起動したかどうかを判定する。ROMモニタ410は、汎用OS121が正常に起動したと判定すると(ステップS203においてYES)、ステップS204に進み、汎用OS121が正常に起動しなかったと判定すると(ステップS203においてNO)、ステップS208に進む。
ステップS204では、汎用OS121がプログラム起動部420を起動する。
ステップS204に続いてステップS205に進み、プログラム起動部420に含まれるサービス起動部422は、プラットフォーム120を起動する。
ステップS205に続いてステップS206に進み、プログラム起動部420に含まれるアプリ起動部423は、アプリケーション130を起動する。
ステップS206に続いてステップS207に進み、プログラム起動部420は、ステップS205及びステップS206において起動したプラットフォーム120及びアプリケーション130の起動すべき全てのプログラムが正常起動したかどうかを判定する。プログラム起動部420は、ステップS205及びステップS206において起動したプラットフォーム120及びアプリケーション130の起動すべき全てのプログラムが正常起動したと判定すると(ステップS207においてYES)、処理を終了し、ステップS205及びステップS206において起動したプラットフォーム120及びアプリケーション130の起動すべき全てのプログラムが正常起動しなかったと判定すると(ステップS207においてNO)、ステップS208に進む。
ステップS208では、ROMモニタ410又はプログラム起動部420が、メンテナンスフラグを更新中断情報に格納する。
ステップS208に続いてステップS209に進み、ROMモニタ410又はプログラム起動部420は、複合機100をリブートする。
一方、ステップS210では、ROMモニタ410が、起動時情報にレスキューブートフラグを格納する。
ステップS210に続いてステップS211に進み、ROMモニタ410は、汎用レスキューOS131を起動する。
ステップS211に続いてステップS212に進み、ステップS211において起動された汎用レスキューOS131は、プログラム起動部420を起動する。
ステップS212に続いてステップS213に進み、プログラム起動部420に含まれるサービス起動部422は、起動時情報を参照し、レスキューブートフラグが格納されていると、レスキューモードオプションを付加して、プラットフォーム120を起動する。
ステップS213に続いてステップS214に進み、OCS126のレスキューモードスレッドは、後述する図28に示される復旧メニュー画面をオペレーションパネル1310に表示する。なお、以下では、後述する図28(A)の画面において、ユーザに「行う」を選択されたものとして説明を行う。
ステップS214に続いてステップS215に進み、OCS126のレスキューモードスレッドは、後述する図28(B)の画面において選択された復旧内容(復旧方法)に従いメンテナンス内容フラグを更新中断情報に格納する。
ステップS215に続いてステップS216に進み、SCS122は、後述する図29に示すようなメンテナンス内容フラグチェック処理を行う。
以下、復旧メニュー画面の一例を、図28を用いて説明する。図28は、復旧メニュー画面を示すための図(その1)である。
図28(A)に示されるように、OCS126のレスキューモードスレッドは、初めに、復旧作業を行うかどうかの選択画面をオペレーションパネル1310に表示する。OCS126のレスキューモードスレッドは、ユーザが「行う」を選択したと判定すると、図28(B)に示されるような復旧内容の選択画面をオペレーションパネル1310に表示し、ユーザが「行わない」を選択したと判定すると、図28(C)に示されるような復旧作業を中止する旨を表す画面をオペレーションパネル1310に表示する。
以下、SCS122によるメンテナンス内容フラグチェック処理の一例を、図29を用いて説明する。図29は、SCSによるメンテナンス内容フラグチェック処理を説明するためのフローチャート(その1)である。
ステップS220において、SCS122は、図27のステップS215において更新中断情報に格納されたメンテナンス内容フラグをチェックする。SCS122は、メンテナンス内容フラグをチェックして、図28の画面(B)においてユーザが復旧内容として「リモートホストより更新データパケットを送信する。」を選択したと判定すると、ステップS222に進み、図28の画面(B)においてユーザが復旧内容として「機器に蓄積されているソフトウェアに戻す。」を選択したと判定すると、ステップS221に進む。
ステップS221では、SCS122が、SCS122のレスキューモードスレッドを起動する。
一方、ステップS222では、SCS122が、RRUアプリ117より更新データの選定依頼を受け取ったかどうかを判定する。SCS122は、RRUアプリ117より更新データの選定依頼を受け取ったと判定すると(ステップS222においてYES)、ステップS223に進み、RRUアプリ117より更新データの選定依頼を受け取っていないと判定すると(ステップS222においてNO)、ステップS222の処理を繰り返す。
ステップS223では、SCS122が、SCS122のROM更新モードスレッドを起動する。
なお、図29において説明を省略したが、ステップS220においてSCS122が図28の画面(B)においてユーザが復旧内容として「リモートホストより更新データパケットを送信する。」を選択したと判定した場合、OCS126のレスキューモードスレッドは、オペレーションパネル1310に受信待機中画面を表示するようにしてもよい(図30参照。)。
以下、図29のステップS221において起動されたSCS122のレスキューモードスレッドで実行される更新データ選定処理の一例を、図31を用いて説明する。図31は、SCSのレスキューモードスレッドで実行される更新データ選定処理を説明するためのフローチャート(その2)である。
ステップS230においてSCS122のレスキューモードスレッドは、HDD1303等より正常動作する出荷時のプログラムを取得する。
ステップS230に続いてステップS231に進み、SCS122のレスキューモードスレッドは、HDD1303等より正常動作する出荷時のプログラムのモジュールIDや、更新先アドレス、更新データサイズ等のモジュール情報を取得する。
ステップS231に続いてステップS232に進み、SCS122のレスキューモードスレッドは、SCS122のROM更新部430を起動する。
図31に示したように、出荷時のプログラムを取得し、SCS122のROM更新部430を起動して、フラッシュROM204を更新することによって、プログラムを正常に動作していた出荷時の状態に戻すことができる。
以下、図29のステップS223において起動されたSCS122のROM更新モードスレッドで実行される更新データ選定処理の一例を、図32を用いて説明する。図32は、SCSのROM更新モードスレッドで実行される更新データ選定処理を説明するためのフローチャート(その2)である。
ステップS240において、SCS122のROM更新モードスレッドは、RRUアプリ117より通知された更新データパケットを展開した更新データ領域の先頭アドレスに基づいて、更新データの先頭のヘッダブロックをシークする。
ステップS240に続いてステップS241に進み、SCS122のROM更新モードスレッドは、ヘッダブロックからモジュールIDを取得する。
ステップS241に続いてステップS242に進み、SCS122のROM更新モードスレッドは、ヘッダブロックから、更新先アドレス、更新データオフセット、更新データサイズ等を取得する。
ステップS242に続いてステップS243に進み、SCS122のROM更新モードスレッドは、モジュールID、更新先アドレス、更新データオフセット、更新データサイズ等を一組とした更新情報を更新対象の変数等に設定する。
ステップS243に続いてステップS244に進み、SCS122のROM更新モードスレッドは、次のヘッダブロックが存在するかどうかを判定する。SCS122のROM更新モードスレッドは、次のヘッダブロックが存在すると判定すると(ステップS244においてYES)、ステップS245に進み、次のヘッダブロックが存在しないと判定すると(ステップS244においてNO)、ステップS246に進む。
ステップS245では、SCS122のROM更新モードスレッドが、次のヘッダブロックをシークし、ステップS241からの処理を繰り返す。
ステップS246では、SCS122のROM更新モードスレッドが、更新対象の変数等を参照し、更新情報が設定されているかどうかを判定する。SCS122のROM更新モードスレッドは、更新対象の変数等に更新情報が設定されていると判定すると(ステップS246においてYES)、ステップS247に進み、更新対象の変数等に更新情報が設定されていないと判定すると(ステップS246においてNO)、処理を終了する。
ステップS247では、SCS122のROM更新モードスレッドが、更新データパケットを展開した更新データ領域に格納されている対応する更新データを、HDD1303等の二次記憶装置に蓄積する。
ステップS247に続いてステップS248に進み、SCS122のROM更新モードスレッドは、SCS122のROM更新部430を起動する。
図29及び図32に示したように、リモートホストより更新データを取得して、SCS122のROM更新モードスレッド及びSCS122のROM更新部430を起動して、フラッシュROM204を更新することによって、プログラムを修正することができる。
以下、SCS122のROM更新部430によるROM更新処理の他の例を、図33を用いて説明する。図33は、SCSのROM更新部によるROM更新処理を説明するためのフローチャート(その3)である。
ステップS250において、SCS122のROM更新部430は、モジュールID、更新先アドレス、更新データオフセット、更新データサイズ等の更新情報を更新中断情報に格納する。
ステップS250に続いてステップS251に進み、SCS122のROM更新部430は、更新データによって更新されるフラッシュROM204の対応する領域のデータを、HDD1303等の二次記憶装置に蓄積する。
ステップS251に続いてステップS252に進み、SCS122のROM更新部430は、更新データパケットを展開した更新データ領域から対応する更新データを読み出して、該更新データで、フラッシュROM204の更新先アドレスから書き換えを行う。
ステップS252に続いてステップS253に進み、SCS122のROM更新部430は、OCS126のレスキューモードスレッドを介して、オペレーションパネル1310に復旧中画面を表示する(図24参照。)。
ステップS253に続いてステップS254に進み、SCS122のROM更新部430は、ステップS252において読み出した更新データと、ステップS252において書き換えを行った後のフラッシュROM204の更新したモジュールのデータと、を比較して、正しく書き換えが行われたかどうか判定する。SCS122のROM更新部430は、正しく書き換えが行われたと判定すると(ステップS254においてYES)、ステップS256に進み、正しく書き換えが行われなかったと判定すると(ステップS254においてNO)、ステップS255に進む。
ステップS255では、SCS122のROM更新部430が、OCS126のレスキューモードスレッドを介して、オペレーションパネル1310にエラー画面を表示する(図25参照。)。
一方、ステップS256では、SCS122のROM更新部430が、更新対象の変数等を参照し、次の更新情報が設定されているかどうかを判定する。SCS122のROM更新部430は、更新対象の変数等に次の更新情報が設定されていると判定すると(ステップS256においてYES)、ステップS250からの処理を繰り返し、更新対象の変数等に次の更新情報が設定されていないと判定すると(ステップS256においてNO)、ステップS257に進む。
ステップS257では、SCS122のROM更新部430が、更新中断情報に格納されている更新情報を削除する。
なお、SCS122のROM更新部430は、実施例2の図23に示したようにOCS126のレスキューモードスレッドが起動されているかどうかを判定する処理を行い、OCS126のレスキューモードスレッドが起動されていたら、ステップS253やステップS255の処理を行うようにしてもよい。図33では説明の簡略化のため、OCS126のレスキューモードスレッドが起動されているものとして説明を行っている。
以下、複合機100が正常起動した後から、正常に動作していないアプリケーション130等が存在して、レスキューモードに移行する場合の処理の一例を、図34を用いて説明する。図34は、正常起動後からのレスキューモード移行処理を説明するためのフローチャート(その1)である。
ステップS260において、OCS126の通常モードスレッドは、オペレーションパネル1310に表示している画面(図35参照)のレスキューボタンが押下されたかどうかを判定する。OCS126の通常モードスレッドは、オペレーションパネル1310に表示している画面のレスキューボタンが押下されたと判定すると(ステップS260においてYES)、ステップS261に進み、レスキューボタンが押下されていないと判定すると(ステップS260においてNO)、ステップS260の処理を繰り返す。
ステップS261では、OCS126の通常モードスレッドが、レスキューモード移行の確認画面をオペレーションパネル1310に表示する(図36参照。)。
ステップS261に続いてステップS262に進み、OCS126の通常モードスレッドは、図36のレスキューモード移行確認画面の実行ボタンが押下されたかどうかを判定する。OCS126の通常モードスレッドは、図36のレスキューモード移行確認画面の実行ボタンが押下されたと判定すると(ステップS262においてYES)、ステップS263に進み、中止ボタンが押下さたと判定すると(ステップS262においてNO)、図35に示した画面をオペレーションパネル1310に表示し、ステップS260からの処理を繰り返す。
ステップS263では、OCS126の通常モードスレッドより、レスキューモード移行確認画面の実行ボタンが押下された旨を通知された、例えばSCS122の通常モードスレッドが、メンテナンスフラグを更新中断情報に格納する。
ステップS263に続いてステップS264に進み、例えばSCS122の通常モードスレッドより通知を受けたROMモニタ410又はプログラム起動部420は、複合機100をリブートする。
図34に示す処理によってリブートされた複合機100は、図27に示したような処理を行う。
以下、更新中断情報をNVRAM空間に格納する場合の更新中断情報のレイアウトの他の例を、図37を用いて説明する。図37は、更新中断情報をNVRAMに格納する場合の更新中断情報のレイアウトを説明するための図(その2)である。
図37に示されるように、更新中断情報は、例えば16バイトのモジュールIDと、4バイトの更新先アドレスと、1バイトのメンテナンスフラグと、1バイトのメンテナンス内容フラグと、を含む。
なお、図18及び図19に示したように、更新中断情報をHDD1303に格納する場合、メンテナンスフラグやメンテナンス内容フラグを、例えば更新中断情報ファイルに含めるようにしてもよい。
以下、HDD1303のディレクトリ及びファイル構成の他の例を、図38を用いて説明する。図38は、HDDのディレクトリ及びファイル構成を説明するための図(その3)である。
図38に示されるように、HDD1303には、正常動作する出荷時のデータ(プログラム)を保持するディレクトリとしてstoreディレクトリを有し、該storeディレクトリには、アプリケーション130やプラットフォーム120等を構成する各モジュールに対応する、正常動作する出荷時のデータ(プログラム)と、前記モジュールに係るモジュール情報ファイルと、が格納されている。
以下、モジュール情報ファイルの一例として、正常動作する出荷時のプリンタアプリのモジュール情報ファイルの内容の一例を、図39を用いて説明する。図39は、正常動作する出荷時のプリンタアプリのモジュール情報ファイルの内容の一例を説明するための図である。
図39に示されるように、モジュール情報ファイルには、モジュールIDと、更新先アドレスと、モジュールのサイズと、が含まれる。
なお、図28(B)において、「機器に蓄積されているソフトウェアに戻す。」のみを表示又は選択可能とした場合は、図26に示した複合機100の構成において、NCS128のレスキューモードスレッドや、RRUアプリ117は、含まれなくてもよい。
上述した実施例3では、図33に示したように、SCS122のROM更新部430が、復旧情報を、OCS126のレスキューモードスレッドを介して、オペレーションパネル1310に、復旧中画面として表示した。しかしながら、復旧情報を、オペレーションパネル1310に表示すると共に、SCS122のROM更新部430が、復旧情報を、NCS128のレスキューモードスレッドを介して、リモートホストに送信するようにしてもよい。
以下、SCS122のROM更新部430によるROM更新処理の他の例を、図40を用いて説明する。図40は、SCSのROM更新部によるROM更新処理を説明するためのフローチャート(その4)である。
ステップS300において、SCS122のROM更新部430は、モジュールID、更新先アドレス、更新データオフセット、更新データサイズ等の更新情報を更新中断情報に格納する。
ステップS300に続いてステップS301に進み、SCS122のROM更新部430は、更新データによって更新されるフラッシュROM204の対応する領域のデータを、HDD1303等の二次記憶装置に蓄積する。
ステップS301に続いてステップS302に進み、SCS122のROM更新部430は、更新データパケットを展開した更新データ領域から対応する更新データを読み出して、該更新データで、フラッシュROM204の更新先アドレスから書き換えを行う。
ステップS302に続いてステップS303に進み、SCS122のROM更新部430は、OCS126のレスキューモードスレッドを介して、オペレーションパネル1310に復旧中画面を表示する(図24参照。)。
ステップS303に続いてステップS304に進み、SCS122のROM更新部430は、NCS128のレスキューモードスレッドが起動されているかどうかを判定する。
SCS122のROM更新部430は、NCS128のレスキューモードスレッドが起動されていると判定すると(ステップS304においてYES)、ステップS305に進み、NCS128のレスキューモードスレッドが起動されていないと判定すると(ステップS304においてNO)、ステップS306に進む。
SCS122のROM更新部430は、例えば、環境変数等を参照し、NCS128のレスキューモードスレッドが起動されているかどうかを判定する。
ステップS305では、SCS122のROM更新部430が、NCS128のレスキューモードスレッドを介して、リモートホストに復旧情報を送信する。
ステップS306では、SCS122のROM更新部430が、ステップS302において読み出した更新データと、ステップS302において書き換えを行った後のフラッシュROM204の更新したモジュールのデータと、を比較して、正しく書き換えが行われたかどうか判定する。SCS122のROM更新部430は、正しく書き換えが行われたと判定すると(ステップS306においてYES)、ステップS308に進み、正しく書き換えが行われなかったと判定すると(ステップS306においてNO)、ステップS307に進む。
ステップS307では、SCS122のROM更新部430が、OCS126のレスキューモードスレッドを介して、オペレーションパネル1310にエラー画面を表示する(図25参照。)。
一方、ステップS308では、SCS122のROM更新部430が、更新対象の変数等を参照し、次の更新情報が設定されているかどうかを判定する。SCS122のROM更新部430は、更新対象の変数等に次の更新情報が設定されていると判定すると(ステップS308においてYES)、ステップS300からの処理を繰り返し、更新対象の変数等に次の更新情報が設定されていないと判定すると(ステップS308においてNO)、ステップS309に進む。
ステップS309では、SCS122のROM更新部430が、更新中断情報に格納されている更新情報を削除する。
なお、SCS122のROM更新部430は、実施例2の図23に示したようにOCS126のレスキューモードスレッドが起動されているかどうかを判定する処理を行い、OCS126のレスキューモードスレッドが起動されていたら、ステップS303やステップS307の処理を行うようにしてもよい。図40では説明の簡略化のため、OCS126のレスキューモードスレッドが起動されているものとして説明を行っている。
以下、実施例3の図29に示したSCS122によるメンテナンス内容フラグチェック処理の他の例を、図41を用いて説明する。図41は、SCSによるメンテナンス内容フラグチェック処理を説明するためのフローチャート(その2)である。なお、以下では、上述した実施例とは異なる点について説明を行い、上述した実施例と同じ点は説明を省略する。
ステップS310において、SCS122は、実施例3の図27のステップS215等において更新中断情報に格納されたメンテナンス内容フラグをチェックする。SCS122は、メンテナンス内容フラグをチェックして、実施例3の図28の画面(B)等においてユーザが復旧内容として「リモートホストより更新データパケットを送信する。」を選択したと判定すると、ステップS312に進み、図28の画面(B)等においてユーザが復旧内容として「機器に蓄積されているソフトウェアに戻す。」を選択したと判定すると、ステップS311に進む。
ステップS311では、SCS122が、SCS122のレスキューモードスレッドを起動する。
一方、ステップS312では、SCS122が、予め定められたタイムアウト時間(例えば、4秒)が超過したか否かを判定する。SCS122は、予め定められたタイムアウト時間を超過したと判定すると(ステップS312においてYES)、ステップS311に進み、予め定められたタイムアウト時間を超過していないと判定すると(ステップS312においてNO)、ステップS313に進む。なお、ステップS312において、SCS122が、予め定められたタイムアウト時間を超過したと判定すると、OCS126のレスキューモードスレッドは、オペレーションパネル1310に強制復旧移行画面を表示し(図42参照)、ステップS311に進むようにしてもよい。
ステップS313では、SCS122が、RRUアプリ117より更新データの選定依頼を受け取ったか否かを判定する。SCS122は、RRUアプリ117より更新データの選定依頼を受け取ったと判定すると(ステップS313においてYES)、ステップS314に進み、RRUアプリ117より更新データの選定依頼を受け取っていないと判定すると(ステップS313においてNO)、ステップS312からの処理を繰り返す。
ステップS314では、SCS122が、SCS122のROM更新モードスレッドを起動する。
以下、強制復旧移行画面の一例を、図42に示す。図42は、強制復旧移行画面の一例を示す図である。
図42に示されるように、強制復旧移行画面には、更新データパケットの受信待機タイムアウトを起こしたため、機器(複合機100)に蓄積されているソフトウェア(又はプログラム)に戻す旨の情報が表示されている。
実施例5に示したような処理、及び/又は後述する実施例に示す処理を行うことによって、リモートホストからの更新データパケット受信の待機状態がタイムアウトしたときに、全プログラム又はユーザに選択されたプログラムを出荷時、又は過去バーションのプログラムに戻すことができる。
以下、複合機100が正常起動した後から、正常に動作していないアプリケーション130等が存在して、レスキューモードに移行する場合の処理の他の例を、図43を用いて説明する。図43は、正常起動後からのレスキューモード移行処理を説明するためのフローチャート(その2)である。なお、以下では、上述した実施例とは異なる点について説明を行い、上述した実施例と同じ点は説明を省略する。
ステップS320において、OCS126の通常モードスレッドは、オペレーションパネル1310に表示している画面(実施例3の図35参照)のレスキューボタンが押下されたかどうかを判定する。OCS126の通常モードスレッドは、オペレーションパネル1310に表示している画面のレスキューボタンが押下されたと判定すると(ステップS320においてYES)、ステップS321に進み、レスキューボタンが押下されていないと判定すると(ステップS320においてNO)、ステップS320の処理を繰り返す。
ステップS321では、OCS126の通常モードスレッドが、レスキューモード移行の確認画面をオペレーションパネル1310に表示する(実施例3の図36参照。)。
ステップS321に続いてステップS322に進み、OCS126の通常モードスレッドは、図36のレスキューモード移行確認画面の実行ボタンが押下されたかどうかを判定する。OCS126の通常モードスレッドは、図36のレスキューモード移行確認画面の実行ボタンが押下されたと判定すると(ステップS322においてYES)、ステップS323に進み、中止ボタンが押下さたと判定すると(ステップS322においてNO)、図35に示した画面をオペレーションパネル1310に表示し、ステップS320からの処理を繰り返す。
ステップS323では、OCS126の通常モードスレッドが、メンテナンスを行うモジュールをユーザに選択させるメンテナンスモジュール一覧画面をオペレーションパネル1310に表示する(後述する図44参照。)。
ステップS323に続いてステップS324に進み、OCS126の通常モードスレッドは、図44のメンテナンスモジュール一覧画面においてメンテナンスモジュールが選択されたか否かを判定する。OCS126の通常モードスレッドは、図44のメンテナンスモジュール一覧画面においてメンテナンスモジュールが選択されたと判定すると(ステップS324においてYES)、ステップS325に進み、メンテナンスモジュールが選択されていないと判定すると(ステップS324においてNO)、ステップS324の処理を繰り返す。
ステップS325では、OCS126の通常モードスレッドが、選択したモジュールをユーザに確認させる選択モジュール確認画面をオペレーションパネル1310に表示する(後述する図45参照。)。
ステップS325に続いてステップS326に進み、OCS126の通常モードスレッドは、図45の選択モジュール確認画面において「はい」ボタンが押下されたか否かを判定する。OCS126の通常モードスレッドは、図45の選択モジュール確認画面において「はい」ボタンが押下されたと判定すると(ステップS326においてYES)、ステップS327に進み、「いいえ」ボタンが押下されたと判定すると(ステップS326においてNO)、ステップS320からの処理を繰り返す。
ステップS327では、OCS126の通常モードスレッドより、メンテナンス対象のモジュールを識別するID等を渡された、例えばSCS122の通常モードスレッドが、メンテナンスフラグと、メンテナンス対象のモジュールのモジュール情報と、を更新中断情報に格納する。
ステップS327に続いてステップS328に進み、例えばSCS122の通常モードスレッドより通知を受けたROMモニタ410又はプログラム起動部420は、複合機100をリブートする。
以下、メンテナンスモジュール一覧画面の一例を、図44に示す。図44は、メンテナンスモジュール一覧画面の一例を示す図である。
図44に示されるように、メンテナンスモジュール一覧画面には、メンテナンス対象のモジュールの一覧が表示されている。ユーザは、図44に示されるようなメンテナンスモジュール一覧画面を参照し、メンテナンス対象、つまり正常動作していたプログラムに戻す1又は複数のモジュールを選択する。
以下、選択モジュール確認画面の一例を、図45に示す。図45は、選択モジュール確認画面の一例を示す図である。
図45に示されるように、選択モジュール確認画面には、ユーザが選択したモジュールを確認する旨の情報が表示されている。
以下、SCS122のレスキューモードスレッドで実行される更新データ選定処理の他の例を、図46を用いて説明する。図46は、SCSのレスキューモードスレッドで実行される更新データ選定処理を説明するためのフローチャート(その3)である。
ステップS330においてSCS122のレスキューモードスレッドは、更新中断情報にモジュールID及び更新先アドレスが格納されているか否かを判定する。SCS122のレスキューモードスレッドは、更新中断情報にモジュールID及び更新先アドレスが格納されていると判定すると(ステップS330においてYES)、ステップS331に進み、更新中断情報にモジュールID及び更新先アドレスが格納されていないと判定すると(ステップS330においてNO)、ステップS333に進む。
ステップS333では、SCS122のレスキューモードスレッドが、HDD1303等より正常動作する出荷時の全プログラムを取得する。
ステップS333に続いてステップS334に進み、SCS122のレスキューモードスレッドは、HDD1303等より正常動作する出荷時の全プログラムのモジュールIDや、更新先アドレス、更新データサイズ等のモジュール情報を取得し、ステップS335に進む。
一方、ステップS331では、SCS122のレスキューモードスレッドが、更新中断情報に格納されているモジュールIDに対応するプログラム、つまりユーザによって選択された1又は複数のモジュールに対応する正常動作する出荷時のプログラムをHDD1303等より取得する。
ステップS331に続いてステップS332に進み、SCS122のレスキューモードスレッドは、HDD1303等より、更新中断情報に格納されているモジュールIDに対応するプログラム、つまりユーザによって選択された1又は複数のモジュールに対応するプログラムのモジュールIDや、更新先アドレス、更新データサイズ等のモジュール情報を取得し、ステップS335に進む。
ステップS335では、SCS122のレスキューモードスレッドが、SCS122のROM更新部430を起動する。
図46に示したように、出荷時の全プログラム又はユーザに選択されたモジュールに対応するプログラムを取得し、SCS122のROM更新部430を起動して、フラッシュROM204を更新することによって、全プログラム又はユーザに選択された1又は複数のモジュールに対応するプログラムを正常に動作していた出荷時の状態に戻すことができる。
以下、更新中断情報をNVRAM空間に格納する場合の更新中断情報のレイアウトの他の例を、図47を用いて説明する。図47は、更新中断情報をNVRAMに格納する場合の更新中断情報のレイアウトを説明するための図(その3)である。
図47に示されるように、更新中断情報は、例えば1バイトのメンテナンスフラグと、1バイトのメンテナンス内容フラグと、少なくとも1つ以上の、16バイトのモジュールIDと、該モジュールIDに対応するモジュールに係る4バイトの更新先アドレスと、を含む。
なお、上述した実施例に示したように、更新中断情報をHDD1303に格納する場合、図47に示した内容を、例えば更新中断情報ファイル等に含めるようにしてもよい。
実施例6に示したような処理を行うことによって、全プログラム又はユーザに選択された1又は複数のモジュールに対応するプログラムを正常に動作していた出荷時の状態に戻すことができる。
以下、SCS122のROM更新部430によるROM更新処理の他の例を、図48を用いて説明する。図48は、SCSのROM更新部によるROM更新処理を説明するためのフローチャート(その5)である。なお、以下では、上述した実施例とは異なる点について説明を行い、上述した実施例と同じ点は説明を省略する。
ステップS340において、SCS122のROM更新部430は、モジュールID、更新先アドレス、更新データオフセット、更新データサイズ等の更新情報を更新中断情報に格納する。
ステップS340に続いてステップS341に進み、SCS122のROM更新部430は、更新データによって更新されるフラッシュROM204の対応する領域のデータを、HDD1303等の二次記憶装置に蓄積する。
ステップS341に続いてステップS342に進み、SCS122のROM更新部430は、更新データによって更新されるフラッシュROM204の対応する領域のデータを、HDD1303等の二次記憶装置に蓄積できたか否かを判定する。SCS122のROM更新部430は、更新データによって更新されるフラッシュROM204の対応する領域のデータを、HDD1303等の二次記憶装置に蓄積できたと判定すると(ステップS342においてYES)、ステップS347に進み、二次記憶装置に蓄積できなかったと判定すると(ステップS342においてNO)、ステップS345に進む。
ステップS345では、SCS122のROM更新部430が、二次記憶装置内の、後述する図50や、図51等に示されるような(モジュールID).logの先頭に記述されている蓄積ファイル名に対応する、HDD1303等の二次記憶装置に蓄積されている蓄積ファイルを削除する。
ステップS345に続いてステップS346に進み、SCS122のROM更新部430は、(モジュールID).logの先頭に記述されている蓄積ファイルの情報を削除し、ステップS341からの処理を繰り返す。
一方、ステップS347では、SCS122のROM更新部430が、(モジュールID).logに、蓄積ファイル名、バージョン、利用した最終時刻(現在時刻)を記入する。
ステップS347に続いてステップS348に進み、SCS122のROM更新部430は、更新データパケットを展開した更新データ領域から対応する更新データを読み出して、該更新データで、フラッシュROM204の更新先アドレスから書き換えを行う。
ステップS348に続いてステップS349に進み、SCS122のROM更新部430は、ステップS348において読み出した更新データと、ステップS348において書き換えを行った後のフラッシュROM204の更新したモジュールのデータと、を比較して、正しく書き換えが行われたかどうか判定する。SCS122のROM更新部430は、正しく書き換えが行われたと判定すると(ステップS349においてYES)、ステップS360に進み、正しく書き換えが行われなかったと判定すると(ステップS349においてNO)、ステップS350に進む。 ステップS350では、SCS122のROM更新部430が、エラー処理を行う。例えば、SCS122のROM更新部430は、SCS122のROM更新モードスレッドから呼ばれた場合は、OCS126のROM更新モードスレッドを介して、エラー画面をオペレーションパネル1310に表示する。また、SCS122のROM更新部430は、SCSのレスキューモードスレッドから呼ばれた場合は、エラー情報をHDD1303等に格納されているログファイルに格納する。
一方、ステップS360では、SCS122のROM更新部430が、更新対象の変数等を参照し、次の更新情報が設定されているかどうかを判定する。SCS122のROM更新部430は、更新対象の変数等に次の更新情報が設定されていると判定すると(ステップS360においてYES)、ステップS340からの処理を繰り返し、更新対象の変数等に次の更新情報が設定されていないと判定すると(ステップS360においてNO)、ステップS361に進む。
ステップS361では、SCS122のROM更新部430が、更新中断情報に格納されている更新情報を削除する。
図48に示されるような処理を行うことによって、二次記憶装置に蓄積された、更新される領域のデータを、ログ情報ファイルと対応付けて、過去のバージョンとして二次記憶装置に蓄積することができる。このような構成とすることによって、後述するように、ユーザは、1又は複数のプログラムを、所定の過去のバージョンのプログラムに戻すことができる。
以下、更新中断情報をNVRAM空間に格納する場合の更新中断情報のレイアウトの他の例を、図49を用いて説明する。図49は、更新中断情報をNVRAMに格納する場合の更新中断情報のレイアウトを説明するための図(その4)である。
図49に示されるように、更新中断情報は、例えば1バイトのメンテナンスフラグと、1バイトのメンテナンス内容フラグと、少なくとも1つ以上の、16バイトのモジュールIDと、該モジュールIDに対応するモジュールに係る4バイトの更新先アドレスと、該モジュールのバージョンに係る後述する図50に示されるような4バイトの通し番号と、を含む。
なお、上述した実施例に示したように、更新中断情報をHDD1303に格納する場合、図49に示した内容を、例えば更新中断情報ファイル等に含めるようにしてもよい。
以下、HDD1303のディレクトリ及びファイル構成の他の例を、図50を用いて説明する。図50は、HDDのディレクトリ及びファイル構成を説明するための図(その4)である。
図50に示されるように、HDD1303のstoreディレクトリ配下には、アプリケーション130やプラットフォーム120等を構成する各モジュールに対応する、正常動作する出荷時のデータ(プログラム)と、モジュールに係るモジュール情報ファイルと、が格納されている。
また、図50に示されるように、HDD1303のbackupディレクトリ配下には、図48のステップS341等において蓄積したデータ(プログラム)や、該データに係るログ情報が記述された、後述する図51に示すようなログ情報ファイル等が格納されている。なお、データの名称は、“(モジュールID).(通し番号)”でHDD1303のbackupディレクトリ配下に格納され、ログ情報ファイルは、“(モジュールID).log”でHDD1303のbackupディレクトリ配下に格納される。
以下、ログ情報ファイルの内容の一例を、図51を用いて説明する。図51は、ログ情報ファイルの内容の一例を説明するための図である。
図51に示されるように、ログ情報ファイルには、蓄積ファイル名と、バージョンと、利用した最終時刻(蓄積された時刻)と、が含まれる。
以下、プログラムを過去バージョンに戻す処理に係る復旧メニュー画面の他の例を、図52を用いて説明する。図52は、復旧メニュー画面を示すための図(その2)である。
図52(A)に示されるように、OCS126のレスキューモードスレッドは、初めに、復旧作業を行うかどうかの選択画面をオペレーションパネル1310に表示する。OCS126のレスキューモードスレッドは、ユーザが「行う」を選択したと判定すると、図52(B)に示されるような復旧内容の選択画面をオペレーションパネル1310に表示し、ユーザが「行わない」を選択したと判定すると、図52(C)に示されるような復旧作業を中止する旨を表す画面をオペレーションパネル1310に表示する。
また、OCS126のレスキューモードスレッドは、図52(B)に示されるような復旧内容の選択画面において、ユーザが「機器に蓄積されているソフトウェアに戻す」を選択したと判定すると、図52(D)に示されるような復旧するモジュールの選択画面をオペレーションパネル1310に表示し、ユーザが、例えばモジュールの少なくとも1つを選択したと判定すると、選択された該モジュールでよいか否かを確認する図52(E)に示されるような選択モジュール確認画面をオペレーションパネル1310に表示する。
OCS126のレスキューモードスレッドは、図52(E)に示されるような選択モジュール確認画面においてユーザが「はい」ボタンを選択したと判定すると、図52(F)に示されるような、複合機100が蓄積している対応するプログラムのバージョンの選択画面をオペレーションパネル1310に表示し、ユーザが、例えばバージョンの1つを選択したと判定すると、選択された該バージョンでよいか否かを確認する図52(G)に示されるような選択バージョン確認画面をオペレーションパネル1310に表示する。
以下、SCS122のレスキューモードスレッドで実行される更新データ選定処理の他の例を、図53を用いて説明する。図53は、SCSのレスキューモードスレッドで実行される更新データ選定処理を説明するためのフローチャート(その4)である。
ステップS370においてSCS122のレスキューモードスレッドは、HDD1303等より、ユーザによって選択されたモジュールで、且つユーザによって選択されたバージョンのプログラムを取得する。
ステップS370に続いてステップS371に進み、SCS122のレスキューモードスレッドは、HDD1303等より、ユーザによって選択されたモジュールで、且つユーザによって選択されたバージョンのプログラムのモジュールIDや、更新先アドレス、更新データサイズ等のモジュール情報を取得する。
ステップS371に続いてステップS372に進み、SCS122のレスキューモードスレッドは、SCS122のROM更新部430を起動する。
図53に示したように、ユーザによって選択されたモジュールで、且つユーザによって選択されたバージョンのプログラムを取得し、SCS122のROM更新部430を起動して、フラッシュROM204を更新することによって、ユーザによって選択されたプログラムを、ユーザによって選択された、正常に動作していたバージョンの状態に戻すことができる。
実施例7に示したような処理を行うことによって、ユーザからの要求等に応じて、指定された1又は複数のプログラムを、指定された過去のバージョンに戻すことができる。
以上、本発明の好ましい実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
プログラムの更新中断後に画像形成装置の機能の一部が使用不可能になった一例を説明するための図である。 バージョンの不整合により画像形成装置の機能の一部が使用不可能になった一例を説明するための図である。 複合機の構成を示すブロック図(その1)である。 複合機のハードウェア構成を示すブロック図である。 リモートROM更新の全体処理を説明するための図(その1)である。 リモートROM更新の全体処理を説明するための図(その2)である。 複合機で受信した更新データパケットの展開後のデータ構造図である。 複合機起動部の構成の一例を示すブロック図である。 ROM更新部の構成の一例を示すブロック図である。 複合機の構成を示すブロック図(その2)である。 ブート時のOS切り替え処理を説明するためのフローチャートである。 SCSのROM更新モードスレッドで実行される更新データ選定処理を説明するためのフローチャート(その1)である。 SCSのROM更新部によるROM更新処理を説明するためのフローチャート(その1)である。 SCSのレスキューモードスレッドで実行される更新データ選定処理を説明するためのフローチャート(その1)である。 メモリ構造の一例を示すための図である。 更新中断情報をNVRAMに格納する場合の更新中断情報のレイアウトを説明するための図(その1)である。 HDDのディレクトリ及びファイル構成を説明するための図(その1)である。 HDDのディレクトリ及びファイル構成を説明するための図(その2)である。 更新中断情報ファイルの内容の一例を説明するための図である。 複合機の構成を示すブロック図(その3)である。 ブート時のOS切り替え処理を説明するためのフローチャート(その2)である。 起動時画面を示すための図である。 SCSのROM更新部によるROM更新処理を説明するためのフローチャート(その2)である。 復旧中画面を示すための図である。 エラー画面を示すための図である。 複合機の構成を示すブロック図(その4)である。 ブート時のOS切り替え処理を説明するためのフローチャート(その3)である。 復旧メニュー画面を示すための図(その1)である。 SCSによるメンテナンス内容フラグチェック処理を説明するためのフローチャート(その1)である。 受信待機中画面を示すための図である。 SCSのレスキューモードスレッドで実行される更新データ選定処理を説明するためのフローチャート(その2)である。 SCSのROM更新モードスレッドで実行される更新データ選定処理を説明するためのフローチャート(その2)である。 SCSのROM更新部によるROM更新処理を説明するためのフローチャート(その3)である。 正常起動後からのレスキューモード移行処理を説明するためのフローチャート(その1)である。 正常起動後の画面を示すための図である。 レスキューモード移行確認画面を示すための図である。 更新中断情報をNVRAMに格納する場合の更新中断情報のレイアウトを説明するための図(その2)である。 HDDのディレクトリ及びファイル構成を説明するための図(その3)である。 正常動作する出荷時のプリンタアプリのモジュール情報ファイルの内容の一例を説明するための図である。 SCSのROM更新部によるROM更新処理を説明するためのフローチャート(その4)である。 SCSによるメンテナンス内容フラグチェック処理を説明するためのフローチャート(その2)である。 強制復旧移行画面の一例を示す図である。 正常起動後からのレスキューモード移行処理を説明するためのフローチャート(その2)である。 メンテナンスモジュール一覧画面の一例を示す図である。 選択モジュール確認画面の一例を示す図である。 SCSのレスキューモードスレッドで実行される更新データ選定処理を説明するためのフローチャート(その3)である。 更新中断情報をNVRAMに格納する場合の更新中断情報のレイアウトを説明するための図(その3)である。 SCSのROM更新部によるROM更新処理を説明するためのフローチャート(その5)である。 更新中断情報をNVRAMに格納する場合の更新中断情報のレイアウトを説明するための図(その4)である。 HDDのディレクトリ及びファイル構成を説明するための図(その4)である。 ログ情報ファイルの内容の一例を説明するための図である。 復旧メニュー画面を示すための図(その2)である。 SCSのレスキューモードスレッドで実行される更新データ選定処理を説明するためのフローチャート(その4)である。
符号の説明
100 複合機
111 プリンタアプリ
112 コピーアプリ
113 ファックスアプリ
114 スキャナアプリ
115 ネットファイルアプリ
117 リモートROM更新アプリ(RRUアプリ)
121 汎用OS
122 SCS
123 SRM
124 ECS
125 MCS
126 OCS
127 FCS
128 NCS
131 汎用レスキューOS
410 ROMモニタ
420 プログラム起動部
422 サービス層起動部
423 アプリ起動部
424 起動情報設定部
430 ROM更新部
431 更新情報格納部
432 領域データ蓄積部
433 ROM更新部
434 更新情報削除部
435 表示制御部
436 送信制御部

Claims (24)

  1. プログラムを記憶するプログラム記憶手段と、該プログラム記憶手段に記憶されているプログラムに係る更新データを受信する更新データ受信手段と、前記更新データに基づいて、前記プログラム記憶手段に記憶されている対応するプログラムを更新するプログラム更新手段と、を有する情報処理装置であって、
    当該情報処理装置が前回起動されていたときに、前記プログラム更新手段における前記プログラムの更新が中断されたかどうかを判定する更新中断判定手段と、
    前記更新中断判定手段における判定結果に応じて、対応するオペレーティングシステムを起動するオペレーティングシステム起動手段と、
    前記プログラム記憶手段に記憶されているプログラムを復旧する第一プログラム復旧手段と、
    を有することを特徴とする情報処理装置。
  2. 前記更新データを記憶する更新データ記憶手段を更に有することを特徴とする請求項1記載の情報処理装置。
  3. 前記プログラム更新手段において更新される前のプログラムを記憶する更新前プログラム記憶手段を更に有することを特徴とする請求項1又は2記載の情報処理装置。
  4. 前記第一プログラム復旧手段は、前記プログラム記憶手段に記憶されているプログラムを、前記更新データ記憶手段に記憶されている更新データに含まれるプログラムで書き換えることを特徴とする請求項2記載の情報処理装置。
  5. 前記第一プログラム復旧手段は、前記プログラム記憶手段に記憶されているプログラムを、前記更新前プログラム記憶手段に記憶されているプログラムで書き換えることを特徴とする請求項3記載の情報処理装置。
  6. プログラムを記憶するプログラム記憶手段と、該プログラム記憶手段に記憶されているプログラムに係る更新データを受信する更新データ受信手段と、前記更新データに基づいて、前記プログラム記憶手段に記憶されている対応するプログラムを更新するプログラム更新手段と、を有する情報処理装置であって、
    当該情報処理装置が前回起動されていたときに、前記プログラム記憶手段に記憶されているプログラムを復旧するため、リブートされたかどうかを判定するリブート判定手段と、
    前記リブート判定手段における判定結果に応じて、対応するオペレーティングシステムを起動するオペレーティングシステム起動手段と、
    前記プログラム記憶手段に記憶されているプログラムを復旧する第二プログラム復旧手段と、
    を有することを特徴とする情報処理装置。
  7. 当該情報処理装置の出荷時のプログラムを記憶する出荷時プログラム記憶手段を更に有することを特徴とする請求項6記載の情報処理装置。
  8. 前記第二プログラム復旧手段は、前記プログラム記憶手段に記憶されているプログラムを、前記出荷時プログラム記憶手段に記憶されているプログラムで書き換えることを特徴とする請求項7記載の情報処理装置。
  9. 前記第二プログラム復旧手段は、前記プログラム記憶手段に記憶されている対応する1又は複数のプログラムを、前記出荷時プログラム記憶手段に記憶されている1又は複数のプログラムで書き替えることを特徴とする請求項8記載の情報処理装置。
  10. 前記第二プログラム復旧手段は、前記プログラム記憶手段に記憶されているプログラムを、前記更新データ受信手段において新たに受信した前記更新データに含まれるプログラムで書き換えることを特徴とする請求項6又は7記載の情報処理装置。
  11. 前記更新データを記憶する更新データ記憶手段を更に有することを特徴とする請求項6記載の情報処理装置。
  12. 前記プログラム更新手段において更新される前のプログラムを記憶する更新前プログラム記憶手段を更に有することを特徴とする請求項7又は11記載の情報処理装置。
  13. 前記更新前プログラム記憶手段によって記憶された、更新される前のプログラムに係るログ情報を記憶するログ情報記憶手段を更に有し、
    前記第二プログラム復旧手段は、前記プログラム記憶手段に記憶されている対応する1又は複数のプログラムを、対応する前記ログ情報記憶手段に記憶されている前記ログ情報に基づいて、前記更新前プログラム記憶手段に記憶されている1又は複数の更新される前のプログラムで書き替えることを特徴とする請求項12記載の情報処理装置。
  14. 前記プログラム記憶手段に記憶されているプログラムに係る更新データに係る待機状態がタイムアウトしたか否かを判定するタイムアウト判定手段を更に有し、
    前記タイムアウト判定手段においてタイムアウトしたと判定すると、前記第二プログラム復旧手段は、前記プログラム記憶手段に記憶されている1又は複数のプログラムを、前記出荷時プログラム記憶手段に記憶されている1又は複数のプログラムで書き換えるか、又は前記ログ情報記憶手段に記憶されている前記ログ情報に対応する前記更新前プログラム記憶手段に記憶されている1又は複数の更新される前のプログラムで書き替えることを特徴とする請求項12又は13記載の情報処理装置。
  15. 前記情報処理装置は、画像を形成する画像形成装置であることを特徴とする請求項1乃至14何れか一項記載の情報処理装置。
  16. プログラム記憶手段に記憶されているプログラムに係る更新データを受信する更新データ受信手段と、前記更新データ受信手段において受信した前記更新データに基づいて、前記プログラム記憶手段に記憶されている対応するプログラムを更新するプログラム更新手段と、を有する情報処理装置におけるプログラム復旧方法であって、
    当該情報処理装置が前回起動されていたときに、プログラムの更新が中断されたかどうかを判定する更新中断判定段階と、
    前記更新中断判定段階における判定結果に応じて、対応するオペレーティングシステムを起動するオペレーティングシステム起動段階と、
    前記プログラム記憶手段に記憶されているプログラムを復旧する第一プログラム復旧段階と、
    を有することを特徴とするプログラム復旧方法。
  17. 前記情報処理装置は、前記更新データを記憶する更新データ記憶手段を更に有し、
    前記第一プログラム復旧段階は、前記プログラム記憶手段に記憶されているプログラムを、前記更新データ記憶手段に記憶されている更新データに含まれるプログラムで書き換えることを特徴とする請求項16記載のプログラム復旧方法。
  18. 前記情報処理装置は、前記プログラム更新段階において更新される前のプログラムを記憶する更新前プログラム記憶手段を更に有し、
    前記第一プログラム復旧段階は、前記プログラム記憶手段に記憶されているプログラムを、前記更新前プログラム記憶手段に記憶されているプログラムで書き換えることを特徴とする請求項16記載のプログラム復旧方法。
  19. プログラム記憶手段に記憶されているプログラムに係る更新データを受信する更新データ受信手段と、前記更新データ受信手段において受信した前記更新データに基づいて、前記プログラム記憶手段に記憶されている対応するプログラムを更新するプログラム更新手段と、を有する情報処理装置におけるプログラム復旧方法であって、
    当該情報処理装置が前回起動されていたときに、前記プログラム記憶手段に記憶されているプログラムを復旧するため、リブートされたかどうかを判定するリブート判定段階と、
    前記リブート判定段階における判定結果に応じて、対応するオペレーティングシステムを起動するオペレーティングシステム起動段階と、
    前記プログラム記憶手段に記憶されているプログラムを復旧する第二プログラム復旧段階と、
    を有することを特徴とするプログラム復旧方法。
  20. 前記情報処理装置は、当該情報処理装置の出荷時のプログラムを記憶する出荷時プログラム記憶手段を更に有し、
    前記第二プログラム復旧段階は、前記プログラム記憶手段に記憶されているプログラムを、前記出荷時プログラム記憶手段に記憶されているプログラムで書き換えることを特徴とする請求項19記載のプログラム復旧方法。
  21. 前記第二プログラム復旧段階は、前記プログラム記憶手段に記憶されているプログラムを、新たに受信した前記更新データに含まれるプログラムで書き換えることを特徴とする請求項19記載のプログラム復旧方法。
  22. 前記情報処理装置は、前記プログラム更新手段において更新される前のプログラムを記憶する更新前プログラム記憶手段と、前記更新前プログラム記憶手段によって記憶された、更新される前のプログラムに係るログ情報を記憶するログ情報記憶手段と、を更に有し、
    前記第二プログラム復旧段階は、前記プログラム記憶手段に記憶されている対応する1又は複数のプログラムを、前記ログ情報記憶手段に記憶されている前記ログ情報に対応する前記更新前プログラム記憶手段に記憶されている1又は複数の更新される前のプログラムで書き替えることを特徴とする請求項19記載のプログラム復旧方法。
  23. 請求項16乃至22何れか一項記載のプログラム復旧方法をコンピュータに実行させるためのプログラム復旧プログラム。
  24. 請求項23記載のプログラム復旧プログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2004354412A 2003-12-10 2004-12-07 情報処理装置、プログラム復旧方法、プログラム復旧プログラム及び記録媒体 Pending JP2005196745A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2004354412A JP2005196745A (ja) 2003-12-10 2004-12-07 情報処理装置、プログラム復旧方法、プログラム復旧プログラム及び記録媒体
US11/007,708 US20050151987A1 (en) 2003-12-10 2004-12-09 Information processing apparatus, program recovery method, and recording medium storing a program for program recovery
DE602004014884T DE602004014884D1 (de) 2003-12-10 2004-12-09 Informationsverarbeitungsvorrichtung, Verfahren zur Programm-Recovery, und ein Aufzeichnungsmedium für ein Programm zur Programm-Recovery
EP04029264A EP1542125B1 (en) 2003-12-10 2004-12-09 Information processing apparatus, program recovery method, and recording medium storing a program for program recovery

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003411679 2003-12-10
JP2004354412A JP2005196745A (ja) 2003-12-10 2004-12-07 情報処理装置、プログラム復旧方法、プログラム復旧プログラム及び記録媒体

Publications (1)

Publication Number Publication Date
JP2005196745A true JP2005196745A (ja) 2005-07-21

Family

ID=34525502

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004354412A Pending JP2005196745A (ja) 2003-12-10 2004-12-07 情報処理装置、プログラム復旧方法、プログラム復旧プログラム及び記録媒体

Country Status (4)

Country Link
US (1) US20050151987A1 (ja)
EP (1) EP1542125B1 (ja)
JP (1) JP2005196745A (ja)
DE (1) DE602004014884D1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1973052A1 (en) 2007-03-15 2008-09-24 Ricoh Company, Ltd. Information processing apparatus, software updating method, and image processing apparatus
JP2008226158A (ja) * 2007-03-15 2008-09-25 Ricoh Co Ltd 情報処理装置、ソフトウェア更新方法及び画像処理装置
JP2010231349A (ja) * 2009-03-26 2010-10-14 Kyocera Corp 電子機器
JP2013117833A (ja) * 2011-12-02 2013-06-13 Canon Inc 情報処理装置、その制御方法、および制御プログラム

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702789B2 (en) * 2005-11-03 2010-04-20 International Business Machines Corporation Apparatus, system, and method for reassigning a client
EP1903437A3 (en) 2006-07-31 2008-10-22 Seiko Epson Corporation Update data transmission method, firmware writing system, and update data transmission program
JP4991592B2 (ja) * 2008-02-18 2012-08-01 株式会社リコー ソフトウェア改ざん検知方法、ソフトウェア改ざん検知プログラム及び機器
US8495424B1 (en) 2009-04-30 2013-07-23 Bank Of America Corporation Self-service terminal portal management
JP2011113391A (ja) * 2009-11-27 2011-06-09 Ricoh Co Ltd 機器管理システム、機器管理装置、管理対象機器、ソフトウェア更新方法、ソフトウェア更新プログラム、及びそのプログラムを記録した記録媒体
US8593971B1 (en) 2011-01-25 2013-11-26 Bank Of America Corporation ATM network response diagnostic snapshot
US8746551B2 (en) 2012-02-14 2014-06-10 Bank Of America Corporation Predictive fault resolution
CN107479913A (zh) * 2017-07-27 2017-12-15 中国船舶重工集团公司第七二四研究所 一种fpga配置多启动低资源占用更新方法及实施系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1011296A (ja) * 1996-06-26 1998-01-16 Matsushita Graphic Commun Syst Inc 通信制御装置
JPH11338688A (ja) * 1998-05-21 1999-12-10 Nec Corp Sram型プログラマブルデバイスの書き込み方法
JP2000330779A (ja) * 1999-05-18 2000-11-30 Nec Corp ファームウエアプログラム遠隔更新システム及び方法
JP2000330778A (ja) * 1999-05-21 2000-11-30 Nec Corp 修正ロードモジュール置換後の復旧方法ならびに装置
JP2002044693A (ja) * 2000-07-24 2002-02-08 Nec Corp 電子交換機の制御装置
JP2003510678A (ja) * 1999-09-21 2003-03-18 インテル コーポレイション 不揮発性再プログラム可能半導体メモリに記憶された情報を編成する方法
JP2003256212A (ja) * 2002-02-27 2003-09-10 Seiko Epson Corp ソフトウェアの管理方法
JP2003280914A (ja) * 2002-03-22 2003-10-03 Toshiba Corp 情報機器、記憶媒体、及び初期状態復元方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2003A (en) * 1841-03-12 Improvement in horizontal windivhlls
US6678712B1 (en) * 1996-01-19 2004-01-13 International Business Machines Corporation Method and system for executing a program under one of a plurality of mutually exclusive operating environments
FR2752631B1 (fr) * 1996-08-22 1999-01-22 Schneider Automation Procede de chargement d'un systeme d'exploitation
JP4061814B2 (ja) * 2000-04-14 2008-03-19 コニカミノルタビジネステクノロジーズ株式会社 画像形成装置
US8458689B2 (en) * 2001-03-30 2013-06-04 Roderick A. Barman Method and apparatus for reprogramming engine controllers
JP4083505B2 (ja) * 2001-08-27 2008-04-30 株式会社リコー 画像形成装置,プログラム更新方法および記録媒体
JP4121333B2 (ja) * 2001-08-27 2008-07-23 株式会社リコー 画像形成装置,プログラム更新方法および記録媒体
US20030231343A1 (en) * 2002-05-08 2003-12-18 Ayako Kobayashi Image forming apparatus, program adding method, and a recording medium
US7340638B2 (en) * 2003-01-30 2008-03-04 Microsoft Corporation Operating system update and boot failure recovery

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1011296A (ja) * 1996-06-26 1998-01-16 Matsushita Graphic Commun Syst Inc 通信制御装置
JPH11338688A (ja) * 1998-05-21 1999-12-10 Nec Corp Sram型プログラマブルデバイスの書き込み方法
JP2000330779A (ja) * 1999-05-18 2000-11-30 Nec Corp ファームウエアプログラム遠隔更新システム及び方法
JP2000330778A (ja) * 1999-05-21 2000-11-30 Nec Corp 修正ロードモジュール置換後の復旧方法ならびに装置
JP2003510678A (ja) * 1999-09-21 2003-03-18 インテル コーポレイション 不揮発性再プログラム可能半導体メモリに記憶された情報を編成する方法
JP2002044693A (ja) * 2000-07-24 2002-02-08 Nec Corp 電子交換機の制御装置
JP2003256212A (ja) * 2002-02-27 2003-09-10 Seiko Epson Corp ソフトウェアの管理方法
JP2003280914A (ja) * 2002-03-22 2003-10-03 Toshiba Corp 情報機器、記憶媒体、及び初期状態復元方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1973052A1 (en) 2007-03-15 2008-09-24 Ricoh Company, Ltd. Information processing apparatus, software updating method, and image processing apparatus
JP2008226158A (ja) * 2007-03-15 2008-09-25 Ricoh Co Ltd 情報処理装置、ソフトウェア更新方法及び画像処理装置
US8347107B2 (en) 2007-03-15 2013-01-01 Ricoh Company, Ltd. Information processing apparatus, software updating method, and image processing apparatus
US8639942B2 (en) 2007-03-15 2014-01-28 Ricoh Company, Ltd. Information processing apparatus, software update method, and image processing apparatus
US8732484B2 (en) 2007-03-15 2014-05-20 Ricoh Company, Ltd. Information processing apparatus, software updating method, and image processing apparatus
US9235533B2 (en) 2007-03-15 2016-01-12 Ricoh Company, Ltd. Information processing apparatus, software update method, and image processing apparatus
US9729328B2 (en) 2007-03-15 2017-08-08 Ricoh Company, Ltd. Information processing apparatus, software updating method, and image processing apparatus
JP2010231349A (ja) * 2009-03-26 2010-10-14 Kyocera Corp 電子機器
JP2013117833A (ja) * 2011-12-02 2013-06-13 Canon Inc 情報処理装置、その制御方法、および制御プログラム

Also Published As

Publication number Publication date
US20050151987A1 (en) 2005-07-14
EP1542125A1 (en) 2005-06-15
EP1542125B1 (en) 2008-07-09
DE602004014884D1 (de) 2008-08-21

Similar Documents

Publication Publication Date Title
US10277767B2 (en) Image forming apparatus including a device that updates stored program based on updating data which is selected based on program that is started or startable
US9277093B2 (en) Method, apparatus, and computer product for managing image formation resources
US8305603B2 (en) Job processing apparatus coordinating update of software used in job execution and control method thereof
JP2004194298A (ja) 画像形成装置、プログラム更新方法
JP2002082806A (ja) 画像形成装置、画像形成方法およびプログラム
JP2005196745A (ja) 情報処理装置、プログラム復旧方法、プログラム復旧プログラム及び記録媒体
JP5888443B2 (ja) 画像形成装置,プログラム更新方法および記録媒体
JP4512565B2 (ja) 画像形成装置およびアプリケーションインストール方法
JP4695348B2 (ja) カード型メモリ、画像形成装置、画像形成装置起動方法
JP4856622B2 (ja) 画像形成装置、プログラム更新方法
JP5267624B2 (ja) 情報処理装置、表示制御方法、プログラム、及び記録媒体
JP2005173888A (ja) 情報処理装置、プログラム復旧方法、プログラム復旧プログラム及び記録媒体
JP2008079340A (ja) 画像形成装置,プログラム更新方法および記録媒体
JP2006271005A (ja) 画像形成装置およびアプリケーションインストール方法
JP4093770B2 (ja) データ転送方法およびそのデータ転送方法を利用するインターフェース制御モジュール,デバイス制御モジュール,画像形成装置
JP2011030272A (ja) 画像形成装置、プログラム、記録媒体、及び方法
JP2006103290A (ja) 画像形成装置
JP2006027277A (ja) 画像形成装置
JP2006262316A (ja) 画像読取システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070423

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101119

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110104