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