(57)【特許請求の範囲】
【請求項１】
少なくとも第一のファームウェアと第二のファームウェアとを含む情報処理装置であって、
前記第一のファームウェアを用いて情報処理装置を起動させる第一の起動手段と、
前記第一のファームウェアを用いて、前記第二のファームウェアを更新する第一の更新手段と、
前記第一の更新手段による前記第二のファームウェアの更新中にエラーが発生したことに基づき、前記第二のファームウェアをバックアップ済みの第二のファームウェアに書き戻す書き戻し手段と、
前記書き戻し手段によって書き戻した前記第二のファームウェアを用いて前記情報処理装置を再起動させる第二の起動手段と、
前記第二のファームウェアを用いて、前記第一のファームウェアを更新する第二の更新手段と、
前記第二の更新手段によって更新された第一のファームウェアを用いて前記情報処理装置を起動させる第三の起動手段と、
前記第三の起動手段による前記情報処理装置の起動に応じて、前記更新された前記第一のファームウェアを用いて前記第二のファームウェアを更新する第三の更新手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記第二の起動手段は、前記第一の更新手段によって前記第二のファームウェアの更新が正常に終了すると、該第二のファームウェアを用いて前記情報処理装置を再起動させ、
前記第二の更新手段は、前記第一のファームウェアを更新することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記エラーが発生した際の処理をリトライするリトライ手段をさらに備えることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記書き戻し手段は、前記リトライ手段によるリトライ回数が所定回数を超えると、前記エラーが発生したと判断して、前記第二のファームウェアをバックアップ済みの第二のファームウェアに書き戻すことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
更新対象のファームウェアを外部から受信する受信手段をさらに備えることを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
ファームウェアの更新中に発生するエラーを検知する検知手段をさらに備え、
前記検知手段は、前記受信手段による前記更新対象のファームウェアの受信中に発生するエラーと、前記受信手段によって受信した前記更新対象のファームウェアをメモリに展開する際に発生するエラーと、前記更新対象のファームウェアに対応する前記情報処理装置の現在のファームウェアをバックアップする際に発生するエラーと、前記第一の更新手段によってファームウェアを更新する際に発生するエラーとの少なくとも１つを検知することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記書き戻し手段は、
前記バックアップ済みの前記第二のファームウェアを書き戻す際に、エラーが発生したことを操作部に表示することを特徴とする請求項１乃至６の何れか１項に記載の情報処理装置。
【請求項８】
前記書き戻し手段は、
前記バックアップ済みの前記第二のファームウェアを書き戻す際にエラーが発生すると、起動不良を回避すべく、前記情報処理装置の電源の入れ直しを促す表示を操作部に表示することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記第一のファームウェアは、通常起動時に用いられるファームウェアであり、
前記第二のファームウェアは、前記通常起動時に用いられるファームウェアを更新する際に用いられるファームウェアであることを特徴とする請求項１乃至８の何れか１項に記載の情報処理装置。
【請求項１０】
少なくとも第一のファームウェアと第二のファームウェアとを含む情報処理装置の制御方法であって、
第一の起動手段が、前記第一のファームウェアを用いて情報処理装置を起動させる第一の起動工程と、
第一の更新手段が、前記第一のファームウェアを用いて、前記第二のファームウェアを更新する第一の更新工程と、
書き戻し手段が、前記第一の更新工程による前記第二のファームウェアの更新中にエラーが発生したことに基づき、前記第二のファームウェアをバックアップ済みの第二のファームウェアに書き戻す書き戻し工程と、
第二の起動手段が、前記書き戻し工程で書き戻した前記第二のファームウェアを用いて前記情報処理装置を再起動させる第二の起動工程と、
第二の更新手段が、前記第二のファームウェアを用いて、前記第一のファームウェアを更新する第二の更新工程と、
第三の起動手段が、前記第二の更新工程で更新された第一のファームウェアを用いて前記情報処理装置を起動させる第三の起動工程と、
第三の更新手段が、前記第三の起動工程による前記情報処理装置の起動に応じて、前記更新された前記第一のファームウェアを用いて前記第二のファームウェアを更新する第三の更新工程と
を含むことを特徴とする情報処理装置の制御方法。
【請求項１１】
請求項１乃至９の何れか１項に記載の情報処理装置としてコンピュータを機能させるための該コンピュータで読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法及びプログラムに関するものである。
【背景技術】
【０００２】
ファームウェアアップデート（ソフトウェアアップデート）においては、通常ファームウェア（ソフトウェア）を更新するためのアップデート用のファームウェアが存在し、そのアップデート用ファームウェアにおいてアップデート処理を実行する。以下では、ファームウェアやソフトウェアをファームと称し、ファームウェアアップデートやソフトウェアアップデートをファームアップデートと称する。
【０００３】
アップデート処理の中では、ファームのダウンロードや展開、ファームの書き換え（実際のアップデート処理）の各工程においてエラーが発生しうる。例えば、新たなファームのダウンロード中にデータを正しく受信できなかったり、展開する場所に正しく書き込めない等のエラーが存在する。特許文献１には、アップデートが失敗した際に修復動作を行う技術が提案されている。以下では、説明の簡略化のために、アップデート用ファームはｓａｆｅファーム、通常ファームはｓｔｄファームと記載する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１２８７０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来技術には以下に記載する問題がある。例えば、上記従来技術では、アップデート中にエラーを検知した場合、前のバージョンに自動的に回復したり、或いは、他のバージョンを探して別のバージョンにアップデートする制御を行っている。しかし、上記従来技術では、機器の動作は保証されるものの、結果的に所望のファームへアップデートできないことになる。
【０００６】
本発明は、上述の問題に鑑みて成されたものであり、アップデート時にエラーが発生した場合であっても、エラーを回避しつつ、所望のアップデートを実行する仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、少なくとも第一のファームウェアと第二のファームウェアとを含む情報処理装置であって、前記第一のファームウェアを用いて情報処理装置を起動させる第一の起動手段と、前記第一のファームウェアを用いて、前記第二のファームウェアを更新する第一の更新手段と、前記第一の更新手段による前記第二のファームウェアの更新中にエラーが発生したことに基づき、前記第二のファームウェアをバックアップ済みの第二のファームウェアに書き戻す書き戻し手段と、前記書き戻し手段によって書き戻した前記第二のファームウェアを用いて前記情報処理装置を再起動させる第二の起動手段と、前記第二のファームウェアを用いて、前記第一のファームウェアを更新する第二の更新手段と、前記第二の更新手段によって更新された第一のファームウェアを用いて前記情報処理装置を起動させる第三の起動手段と、前記第三の起動手段による前記情報処理装置の起動に応じて、前記更新された前記第一のファームウェアを用いて前記第二のファームウェアを更新する第三の更新手段とを備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、アップデート時にエラーが発生した場合であっても、エラーを回避しつつ、所望のアップデートを実行することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態に係る情報処理装置１００の構成例を示す図。
【図２】一実施形態に係るＦｌａｓｈＲＯＭ２１９を中心とした情報処理装置１００のアップデートシステムの構成を示す図。
【図３】一実施形態に係るアップデートの工程とエラー処理の工程の簡略図。
【図４】一実施形態に係るエラーが発生した場合に操作部２２０に表示する画面を示す図。
【図５Ａ】、
【図５Ｂ】情報処理装置１００におけるアップデートシステムの処理フローを表したフローチャート。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１１】
＜情報処理装置の構成＞
まず、図１を参照して、一実施形態に係る情報処理装置１００の構成について説明する。図１に示すように、情報処理装置１００は、ＬＡＮ１１０を介してＰＣ２６０と、外部サーバ２５０と接続されている。情報処理装置１００は、制御部２００、操作部２２０、プリンタエンジン２２１、スキャナエンジン２２２、及び外部電源２４０を備える。さらに、制御部２００は、ＣＰＵ２１０、チップセット２１１、ＲＡＭ２１２、ＳＲＡＭ２１３、ＮＩＣ２１４、操作部Ｉ／Ｆ２１５、プリンタＩ／Ｆ２１６、スキャナＩ／Ｆ２１７、ＨＤＤ２１８、及びＦｌａｓｈＲＯＭ２１９を備える。
【００１２】
制御部２００は、情報処理装置１００全体の動作を統括的に制御する。ＣＰＵ２１０は、ＦｌａｓｈＲＯＭ２１９に記憶された制御プログラムをＲＡＭ２１２に読み出して、読取制御、印刷制御、及びファームアップデート制御などの各種制御処理を実行する。また、ＦｌａｓｈＲＯＭ２１９は、ファームアップデート用のファイル格納領域、ワークエリア、及びユーザデータ領域としても用いられる。ＲＡＭ２１２は、ＣＰＵ２１０の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＳＲＡＭ２１３は不揮発メモリであり、情報処理装置１００で必要となる設定値や画像調整値などを記憶しており、電源を再投入してもデータが消えないようになっている。ＨＤＤ２１８は、画像データやユーザデータ等を記憶する。
【００１３】
操作部Ｉ／Ｆ２１５は、操作部２２０と制御部２００とを接続する。操作部２２０には、タッチパネル機能を有する液晶表示部やキーボードなどが備えられている。プリンタＩ／Ｆ２１６は、プリンタエンジン２２１と制御部２００とを接続する。プリンタエンジン２２１内に含むＲＯＭにはプリンタエンジンファーム２３１が格納されている。プリンタエンジン２２１で印刷すべき画像データは、プリンタＩ／Ｆ２１６を介して制御部２００からプリンタエンジン２２１に転送され、プリンタエンジン２２１において記録媒体上に印刷される。
【００１４】
スキャナＩ／Ｆ２１７は、スキャナエンジン２２２と制御部２００とを接続する。スキャナエンジン２２２内に含むＲＯＭにはスキャナエンジンファーム２３２が格納されている。スキャナエンジン２２２は、原稿上の画像を読み取って画像データを生成し、スキャナＩ／Ｆ２１７を介して制御部２００に入力する。
【００１５】
ネットワークＩ／Ｆカード（ＮＩＣ）２１４は、制御部２００をＬＡＮ１１０に接続する。ＮＩＣ２１４は、ＬＡＮ１１０上の外部装置（例えば、外部サーバ２５０やＰＣ２６０）に画像データや情報を送信したり、逆にアップデートファームや各種情報を受信したりする。
【００１６】
外部サーバ２５０は、インターネットを介して情報処理装置１００に接続されてもよい。また、ＰＣ２６０に含まれるＷｅｂブラウザから情報処理装置１００の操作を行うこともできる。チップセット２１１は、一連の関連のある複数の集積回路のことを示す。ＲＴＣ２７０は、ＲｅａｌＴｉｍｅＣｌｏｃｋ（リアルタイムクロック）であり、計時専用のチップである。ＲＴＣ２７０は、外部電源２４０が接続されていなくとも、内蔵電池から電源供給を受けるため、スリープ時も動作することができる。これにより、チップセット２１１に対して一部の電源供給が行われる状態においては、スリープからの復帰が実現できる。逆に、チップセット２１１に電源供給が全く行われないシャットダウン状態の場合には、ＲＴＣ２７０は動作することができない。
【００１７】
＜ＦｌａｓｈＲＯＭの構成＞
次に、図２を参照してＦｌａｓｈＲＯＭ２１９の構成について説明する。３００と３１０はＦｌａｓｈＲＯＭ２１９内に構成されるパーティションを示す。３００がアップデート用ファームであるｓａｆｅファーム３０１を含むｓａｆｅパーティションであり、３１０は通常起動時に用いられるファームウェアであるｓｔｄファーム（第１のファームウェア）３１１を含むｓｔｄパーティションである。
【００１８】
ｓａｆｅファーム３０１（第２のファームウェア）は、ｓｔｄファームアップデート用ファーム３０２、プリンタエンジンファームアップデート用ファーム３０３、及びスキャナエンジンファームアップデート用ファーム３０４を含んで構成される。ｓｔｄファームアップデート用ファーム３０２は、ｓｔｄファーム３１１を更新する際に用いられる。プリンタエンジンファームアップデート用ファーム３０３は、図１で説明した、プリンタエンジンファーム２３１をアップデート（更新）する機能を備える。同様に、スキャナエンジンファームアップデート用ファーム３０４は、図１におけるスキャナエンジンファーム２３２をアップデートする機能を備える。
【００１９】
情報処理装置１００として、例えばフィニッシャなどの、スキャナエンジンやプリンタエンジン以外の構成が接続された場合も同様になる。ｓｔｄファーム３１１は、ｓａｆｅファームアップデート用ファーム３１２、通常起動用ファーム３１５で構成される。ｓａｆｅファームアップデート用ファーム３１２は、ｓａｆｅファーム３０１をアップデートする機能を備える。通常起動用ファーム３１５は、コピーやプリントなどの複合機として一般的な動作を司るファームである。本発明に係わる起動モードとは、ｓａｆｅファーム３０１での起動と、ｓｔｄファーム３１１での起動の何れかを指し、それぞれ、起動モードの切り替えを行う機能を備える。
【００２０】
＜処理工程＞
次に、図３を参照して、ファームをアップデートする工程とエラー処理の工程について説明する。まず、５０１で、ｓａｆｅファーム３０１を用いて情報処理装置１００を起動する。本実施形態によれば、ファームウェアの更新中にエラーの発生を検知すると、リトライ処理を実行し、リトライ処理が所定回数を超えて行われた場合であってもエラーが解消されない場合は、更新対象のファームウェアを切り替える制御を行う。ここで、ファームウェアの更新中の検知されるエラーとしては、更新対象のファームウェアの受信中に発生するエラーを含んでもよい。また、受信した更新対象のファームウェアをメモリに展開する際に発生するエラーや、更新対象のファームウェアに対応する情報処理装置１００の現在のファームウェアをバックアップする際に発生するエラーを含んでもよい。さらに、ファームウェアを更新する際に発生するエラーを含んでもよい。
【００２１】
４０１は、ダウンロード工程である。例えば、図１で示した外部サーバ２５０から、アップデート（更新）するファームをダウンロード（受信）する。ここでダウンロードに失敗した場合には一度リトライ処理を行う。本実施形態では、リトライ回数を１回として説明するが、本発明を限定する意図はなく、リトライ回数を複数回に設定してもよい。
【００２２】
４０２は、動作しているｓｔｄファーム３１１のバックアップと、ダウンロードしたファームの展開処理である。ダウンロードしたファームは、通常暗号化・難読化等の処理を施しているため、アップデートできる状態にするため復号化等の処理を行いＦｌａｓｈＲＯＭ２１９に展開する。ここで、バックアップや展開処理に失敗した場合には一度リトライ処理を行う。失敗するケースは、例えば、展開するＦｌａｓｈＲＯＭ２１９の容量オーバーや、書き込み失敗、復号化の失敗等が考えられる。
【００２３】
４０３は、ｓｔｄファーム３１１のアップデートであり、４０２で展開したファームを実際に書き込む処理である。ここでも、失敗した場合には一度リトライ処理を行う。失敗した場合にはｓｔｄファーム３１１が壊れた状態になっている可能性があるため、４０５において、以前動作していたファームで動作させるため、４０２でバックアップした旧ｓｔｄファーム３１１に書き戻しを行う。
【００２４】
４０４は、エンジンファームのアップデートであり、ここでも失敗した場合には一度リトライ処理を行うが、失敗した場合にはｓｔｄファーム３１１との組み合わせがおかしくなっている可能性があるため、４０５にて書き戻しを行う。その後、５０２においてｓｔｄファーム３１１で起動する。また、４０１、４０２、４０３、４０４の工程でのリトライ失敗時にも、ｓｔｄファーム３１１で起動する。これは、本発明に関わる、一度エラーが発生しても、ｓａｆｅファーム３０１をアップデートする工程を実施することでｓｔｄファーム３１１のアップデート処理が正しく動作するためのリカバリ処理となるからである。
【００２５】
同様に４０６は、ｓａｆｅファーム３０１のバックアップとダウンロードファームの展開、４０７はｓａｆｅファーム３０１のアップデート処理であり、失敗した場合にはリトライ処理が行われる。４０５の旧ｓｔｄファーム３１１の書き戻しや、４０８の旧ｓａｆｅファーム３０１の書き戻しが失敗した場合には、起動不良等の状況になることを回避するため、４１１で図４の６０２に示すようなエラーコードを操作部２２０に表示する。
【００２６】
逆に、それ以外の場合には、以前動作していたファームで動作することが可能であるため、４０９で図４の６０１に示すようなエラーメッセージのみを操作部２２０に表示し、４１０でｓｔｄファーム３１１で起動を行う。４１２、４１３、４１４はそれぞれ４０２、４０３、４０４と同様であるが、ここでは、４０６、４０７工程でｓａｆｅファーム３０１が新しいものに変わっているため、４０２、４０３、４０４で発生したようなエラーが発生しない可能性が高い。ただし、リトライ処理や旧ｓｔｄファーム３１１の書き戻し等の処理４１５は同様に行う。
【００２７】
４１５の旧ｓａｆｅファーム３０１の書き戻しが失敗した場合には、起動不良等の状況になることを回避するため、４１８で図４の６０２で示すようなエラーコードを操作部２２０に表示する。逆に、それ以外の場合には、以前動作していたファームで動作することが可能であるため、４１６で図４の６０１に示すようなエラーメッセージのみ表示し、４１７でｓｔｄファーム３１１で起動を行う。
【００２８】
＜エラー発生時の画面例＞
次に、図４を参照して、エラーが発生した場合に操作部２２０に表示するエラーメッセージ・エラーコード表示の画面例について説明する。６０１は、図３で説明した、アップデートはするもののエラーが発生し、リトライ処理も成功しなかった場合に、旧ファームを書き戻す際に表示する画面である。例えば、６０１は、４０６のｓａｆｅファーム３０１のアップデートが失敗し、リトライ処理にも失敗した場合に操作部２２０に表示される。ここで、６０１において、エラーコードを表示しない（サービスマンを呼ぶ等の処理をしない）のは、所望のアップデートができないものの、少なくともアップデート前の動作は可能であるからである。逆に、旧ファームの書き戻し処理すらも失敗してしまった場合には、起動不良等の状況になりユーザに悪影響を与えることを回避するため、６０２のようにエラーコード６０３を操作部２２０に表示する。
【００２９】
＜処理手順＞
次に、図５Ａ及び図５Ｂを参照して、一連の処理手順について説明する。以下で説明する処理は、ＣＰＵ２１０がＨＤＤ２１８やＦｌａｓｈＲＯＭ２１９に格納された制御プログラムをＲＡＭ２１２に読み出して実行することにより実現される。なお、以下では、正常処理のルートとして、まずｓａｆｅファーム３０１で情報処理装置１００を起動してｓｔｄファーム３１１をアップデートした後に、ｓｔｄファーム３１１で情報処理装置１００を再起動してｓａｆｅファーム３０１をアップデートする。しかし、本発明はこれに限定されず、ｓａｆｅファーム３０１を先にアップデートする方法を適用することもできる。
【００３０】
Ｓ１０１で、図３の５０１で示したように、まずｓａｆｅファーム３０１で情報処理装置１００を起動する。続いて、Ｓ１０２で、図３の４０１で示したように、ＣＰＵ２１０は、外部サーバ２５０から、アップデート対象のファームをダウンロードする。Ｓ１０３で、ＣＰＵ２１０は、ダウンロードが失敗したか否かを判定する。失敗していた場合はＳ１０４に進み、そうでない場合はＳ１０６に進む。
【００３１】
Ｓ１０４で、ＣＰＵ２１０は、当該エラーが１回目のエラーか否かを判定する。１回目のエラーの場合はＳ１０５に進み、そうでない場合はＳ１２０に進む。Ｓ１０５で、ＣＰＵ２１０は、リトライ処理、即ち、再ダウンロード処理を実行して、Ｓ１０２に戻る。Ｓ１０４でエラーが２回目（以上）の場合には、Ｓ１２０に進み、リトライ処理で解消できないエラーが発生したと判断して、ｓｔｄファーム３１１で情報処理装置１００を起動する。つまり、ここでは、ｓａｆｅファーム３０１からｓｔｄファーム３１１にファームウェアを切り替えて情報処理装置１００を起動する。したがって、これ以後の処理では、ｓｔｄファーム３１１で情報処理装置１００が起動しているため、更新対象のファームウェアとしては、ｓａｆｅファーム３０１となる。
【００３２】
一方、Ｓ１０３でエラーが発生していないと判定した場合にはＳ１０６に進み、図３の４０２で示したように、ＣＰＵ２１０は、旧ｓｔｄファーム３１１のバックアップ処理とダウンロードしたファームの展開処理を行う。続いて、Ｓ１０７で、ＣＰＵ２１０は、バックアップ処理や展開処理でエラーが発生したか否かを判定する。エラーが発生した場合はＳ１０８に進み、そうでない場合はＳ１１０に進む。Ｓ１０８で、ＣＰＵ２１０は、当該エラーが１回目のエラーか否かを判定する。１回目のエラーである場合はＳ１０９に進み、ＣＰＵ２１０は、リトライ処理、即ち、再バックアップ処理又は再展開処理を実行し、Ｓ１０６に戻る。Ｓ１０８でエラーが２回目（以上）の場合には、Ｓ１２０に進み、ｓｔｄファーム３１１で起動する。
【００３３】
一方、Ｓ１０７でエラーが発生していないと判定した場合にはＳ１１０に進み、ＣＰＵ２１０は、ｓｔｄファーム３１１のアップデート処理を実行する。Ｓ１１１で、ＣＰＵ２１０は、アップデート処理でエラーが発生したか否かを判定する。エラーが発生した場合はＳ１１２に進み、そうでない場合はＳ１１８に進む。Ｓ１１２で、ＣＰＵ２１０は、当該エラーが１回目のエラーか否かを判定する。１回目のエラーである場合は、Ｓ１１３に進み、リトライ処理、即ち、再度のアップデート処理を実行し、Ｓ１１０に戻る。
【００３４】
Ｓ１１２でエラーが２回目（以上）の場合には、Ｓ１１８に進み、ＣＰＵ２１０は、旧ｓｔｄファーム３１１を書き戻す処理を実行する。その後、Ｓ１１９に進み、書き戻しが成功したか否かを判定する。書き戻し処理が成功した場合にはＳ１２０に進み、ＣＰＵ２１０は、ｓｔｄファーム３１１で情報処理装置１００を起動する。失敗した場合には図５Ｂに示す処理Ｃに進む。
【００３５】
一方、Ｓ１１１でエラーでないと判定した場合にはＳ１１４に進み、ＣＰＵ２１０は、各種エンジン、図１におけるプリンタエンジンファーム２３１やスキャナエンジンファーム２３２をアップデートする処理に進む。Ｓ１１５で、ＣＰＵ２１０は、アップデート処理でエラーが発生したか否かを判定し、エラーが発生してればＳ１１６に進み、そうでない場合はＳ１１８に進む。
【００３６】
Ｓ１１６で、ＣＰＵ２１０は、当該エラーが１回目のエラーか否かを判定する。１回目のエラーである場合は、Ｓ１１７に進み、ＣＰＵ２１０は、リトライ処理、即ち、再度のアップデート処理を実行し、Ｓ１１４に戻る。Ｓ１１６でエラーが２回目（以上）の場合には、Ｓ１１８に進み、ＣＰＵ２１０は、旧ｓｔｄファーム３１１を書き戻す処理を実行する。これは、Ｓ１１０でｓｔｄファーム３１１のアップデートを先に実施してしまっているため、新しいエンジンファームが更新されないケースの場合に、ｓｔｄファーム３１１とエンジンファームとの組み合わせを保証できなくなるからである。
【００３７】
その後、Ｓ１１９に進み、ＣＰＵ２１０は、書き戻しが成功したか否かを判定する。書き戻し処理が成功した場合にはＳ１２０に進み、ＣＰＵ２１０は、ｓｔｄファーム３１１で情報処理装置１００を起動する。一方、失敗した場合には図５Ｂに示す処理Ｃに進む。
【００３８】
また、Ｓ１１５でエラーが発生していないと判定した場合には、Ｓ１２０に進み、ＣＰＵ２１０は、ｓｔｄファーム３１１で情報処理装置１００を起動し、図５Ｂに示す処理Ａに進む。
【００３９】
次に、図５Ｂのフローチャートについて説明する。図５Ａにて処理Ａから遷移した処理は、Ｓ１２１へ進み、図３の４０６で示したように、ＣＰＵ２１０は、旧ｓａｆｅファーム３０１のバックアップ処理と、ダウンロードしたファームの展開処理とを実行する。続いて、Ｓ１２２で、ＣＰＵ２１０は、バックアップ処理や展開処理でエラーが発生したか否かを判定する。エラーが発生していた場合はＳ１２３に進み、そうでない場合はＳ１２５に進む。
【００４０】
Ｓ１２３で、ＣＰＵ２１０は、当該エラーが１回目のエラーであるか否かを判定する。１回目のエラーである場合はＳ１２４に進み、ＣＰＵ２１０は、リトライ処理、即ち、再バックアップ処理又は再展開処理を実行し、Ｓ１２１に戻る。Ｓ１２３でエラーが２回目（以上）の場合には、処理Ｂに進む。
【００４１】
Ｓ１２２でエラーが発生していないと判定した場合にはＳ１２５に進み、ＣＰＵ２１０は、ｓａｆｅファーム３０１のアップデート処理を実行する。Ｓ１２６で、ＣＰＵ２１０は、アップデート処理でエラーが発生したか否かを判定する。エラーが発生していた場合はＳ１２７に進み、そうでない場合はＳ１３１に進む。
【００４２】
Ｓ１２７で、ＣＰＵ２１０は、当該エラーが１回目のエラーか否かを判定する。１回目のエラーである場合は、Ｓ１２８に進み、ＣＰＵ２１０は、リトライ処理、即ち、再度のアップデート処理を実行し、Ｓ１２５に戻る。Ｓ１２７でエラーが２回目（以上）の場合には、Ｓ１２９で旧ｓａｆｅファーム３０１を書き戻す処理を実行する。その後、Ｓ１３０に進み、ＣＰＵ２１０は、書き戻しが成功したか否かを判定する。書き戻し処理が成功した場合には処理Ｂに進み、失敗した場合には処理Ｃに進む。
【００４３】
Ｓ１２６でエラーが発生していないと判定した場合にはＳ１３１に進み、ＣＰＵ２１０は、ｓａｆｅファーム３０１で情報処理装置１００を起動する。続いて、Ｓ１３２に進み、ＣＰＵ２１０は、ｓｔｄファーム３１１のアップデート処理を実行する。Ｓ１３３で、ＣＰＵ２１０は、アップデート処理でエラーが発生したか否かを判定する。エラーが発生していると判定した場合はＳ１３４に進み、そうでない場合はＳ１３６に進む。
【００４４】
Ｓ１３４で、ＣＰＵ２１０は、当該エラーが１回目のエラーか否かを判定する。１回目のエラーである場合は、Ｓ１３５に進み、ＣＰＵ２１０は、リトライ処理、即ち、再度のアップデート処理を実行し、Ｓ１３２に戻る。Ｓ１３４でエラーが２回目（以上）の場合には、Ｓ１４０に進み、ＣＰＵ２１０は、旧ｓｔｄファーム３１１を書き戻す処理を実行する。その後、Ｓ１４１に進み、ＣＰＵ２１０は、書き戻しが成功したか否かを判定する。書き戻し処理が成功した場合には処理Ｂに進み、失敗した場合には処理Ｃに進む。
【００４５】
Ｓ１３３でエラーが発生していないと判定した場合にはＳ１３６に進み、ＣＰＵ２１０は、各種エンジン、例えば図１におけるプリンタエンジンファーム２３１やスキャナエンジンファーム２３２をアップデートする処理を実行する。Ｓ１３７で、ＣＰＵ２１０は、アップデート処理でエラーが発生したか否かを判定する。エラーが発生している場合はＳ１３８に進み、そうでない場合はＳ１４２に進む。
【００４６】
Ｓ１３８で、ＣＰＵ２１０は、当該エラーが１回目のエラーか否かを判定する。１回目のエラーである場合は、Ｓ１３９に進み、リトライ処理、即ち、再度のアップデート処理を実行し、Ｓ１３６に戻る。Ｓ１３８でエラーが２回目（以上）の場合には、Ｓ１４０に進み、ＣＰＵ２１０は、旧ｓｔｄファーム３１１を書き戻す処理を実行する。これは、Ｓ１３２でｓｔｄファーム３１１のアップデートをしてしまったため、新しいエンジンファームが更新されないケースの場合に、ｓｔｄファーム３１１とエンジンファームとの組み合わせが保証できなくなるからである。
【００４７】
その後、Ｓ１４１に進み、ＣＰＵ２１０は、書き戻しが成功したか否かを判定する。書き戻し処理が成功した場合には処理Ｂに進み、失敗した場合には処理Ｃに進む。処理Ｂについては、Ｓ１４３で、ＣＰＵ２１０は、図４の６０１で説明したように、操作部２２０にエラーメッセージを表示し、Ｓ１４２に進みｓｔｄファーム３１１で通常起動し、処理を終了する。処理Ｃについては、Ｓ１４４で、ＣＰＵ２１０は、図４の６０２で説明したように、操作部２２０にエラーコードを表示し、処理を終了する。Ｓ１３７でアップデートに失敗しなかった場合には、すべてのアップデート処理が完了したことになり、Ｓ１４２で、ＣＰＵ２１０は、ｓｔｄファーム３１１で通常起動し、処理を終了する。
【００４８】
以上説明したように、本実施形態に係る情報処理装置によれば、アップデート中に何らかのエラーが発生したケースでも、起動モードを切り替えて、例えば、アップデート用ファーム（ｓａｆｅファーム）を先に更新する。これにより、エラーを回避し、所望のアップデート処理を行うことができる。つまり、本実施形態に係る情報処理装置は、図３に示すように、通常起動時に使用されるｓｔｄファームと、ファーム更新時に使用されるｓａｆｅファームとを含む。この構成で、本情報処理装置は、２つのファームを更新する場合に、いずれか一方を先に更新し、その際にエラーが発生すると、リトライ処理を実行し、それでもエラーが回避できない場合は、現在起動しているファームとは異なるファームを用いて再起動する。つまり、再起動に用いたファームとは異なるファームを先に更新することになる。その後、当該ファームが正常に更新できた場合には、エラーが発生していたファームの更新を再度実行する。このように制御することで、本情報処理装置は、発生したエラーを回避しつつ、他方のファームを更新することができ、さらには、２つのファームを更新することができる場合もある。
【００４９】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００５０】
２１０：ＣＰＵ、２１１：チップセット、２１２：ＲＡＭ、２１３：ＳＲＡＭ、２１４：ＮＩＣ、２１８：ＨＤＤ、２１９：ＦｌａｓｈＲＯＭ、２２０：操作部、２２１：プリンタエンジン、２２２：スキャナエンジン、２４０：電源、２５０：外部サーバ、２６０：ＰＣ
【図１】
0006482211.tif 000002
【図２】
0006482211.tif 000003
【図３】
0006482211.tif 000004
【図４】
0006482211.tif 000005
【図５Ａ】
0006482211.tif 000006
【図５Ｂ】
0006482211.tif 000007