(57)【要約】  【課題】ファームウェア更新時において異常が発生した場合に、製品の回収や部品の交換をせずに確実にリカバリを行なうためのリカバリ方法及び情報処理装置を提供する。  【解決手段】ファームウェアを、更新対象外の基本ファームウェア２０１と、更新対象のアプリケーションプログラム２０７を含む応用ファームウェア２０２とに分離してＲＯＭ１０３に記憶させる。ＣＰＵ１０１は、応用ファームウェア２０２をＲＯＭ１０３に記憶させた後に再起動して基本ファームウェア２０１を起動・初期化し、メモリ１０２内のエラー情報の有無を判断する。エラー情報がない場合には応用ファームウェア２０２の起動・初期化を行い、エラー情報があった場合にはエラー情報をクリアし、基本ファームウェア２０１の稼働下で応用ファームウェア２０２を再更新可能とする。また、応用ファームウェア２０２を起動・初期化した際にエラーが発生した場合にはエラー情報を格納する。【選択図】  図３
2005242446.tif 000002
【特許請求の範囲】
【請求項１】
更新・初期化実行手段により更新したファームウェアを起動・初期化する際にエラーが発生したときに、前記ファームウェアを再更新可能にして情報処理装置を復旧させるためのファームウェア更新エラー時のリカバリ方法において、
前記ファームウェアを、更新対象外の基本ファームウェアと、更新対象のアプリケーションプログラムを含む応用ファームウェアと、に分離して記憶手段に保持しておき、
更新・初期化実行手段は、
ファームウェア更新開始指示により基本ファームウェア内の更新用プログラムを起動して更新するべき応用ファームウェアを前記記憶手段に記憶させ、その後、情報処理装置を再起動して基本ファームウェアを優先的に起動・初期化し、
次に、エラー情報格納領域を参照して、前回更新した応用ファームウェアの起動・初期化時のエラー情報がある場合にはこのエラー情報をクリアして基本ファームウェアの稼働下における応用ファームウェアの再更新を可能にし、
エラー情報がない場合には前記記憶手段内の応用ファームウェアを起動・初期化し、その際にエラーが発生した場合には前記エラー情報格納領域にエラー情報を保存することを特徴とするファームウェアの更新エラー時におけるリカバリ方法。
【請求項２】
ファームウェアを、更新対象外の基本ファームウェアと、更新対象のアプリケーションプログラムを含む応用ファームウェアと、に分離して記憶させた記憶手段と、
応用ファームウェアの前回の起動・初期化時のエラー情報を保存するエラー情報格納領域と、
基本ファームウェア内の更新用プログラムを起動して更新した応用ファームウェアを前記記憶手段に記憶させ、再起動後に基本ファームウェアを優先的に起動・初期化すると共に、前記エラー情報格納領域を参照してエラー情報がある場合にはこのエラー情報をクリアして基本ファームウェアの稼働下における応用ファームウェアの再更新を可能にし、エラー情報がない場合には前記記憶手段内の応用ファームウェアを起動・初期化し、その際にエラーが発生した場合には前記エラー情報格納領域にエラー情報を保存する更新・初期化実行手段と、
を備えたことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアの基本的な制御に用いられるファームウェアを更新する際にエラーが発生した場合の情報処理装置のリカバリ（復旧）方法、及び、このリカバリ機能を備えた情報処理装置に関する。
詳しくは、ファームウェアを構成するアプリケーションプログラムを更新する際に、初期化エラー等によって情報処理装置が起動不能になったような場合に、そのエラー情報に基づいてファームウェアの起動ステップを変更することにより、アプリケーションプログラムを再更新可能にしてリカバリするようにしたリカバリ方法及び情報処理装置に関するものである。
【背景技術】
【０００２】
ファームウェアは、ハードウェアの基本的な制御を行なうためにパーソナルコンピュータ・家電機器等の情報処理装置（以下、単に情報処理装置という）に組み込まれた専用のソフトウェアを指すものである。
このファームウェアは、例えば、情報処理装置に内蔵された記憶部（ＲＯＭ（Read Only Memory）やフラッシュメモリ）に記憶されている。最近の情報処理装置では、機能追加、性能向上または不具合修正等の目的により、ファームウェアを後から更新できるものが多くなってきている。
【０００３】
このようなファームウェアは、その更新中にエラーが発生して更新が途中で失敗したり、更新後のファームウェア自身に不具合（いわゆるバグ）があって正常に起動しなくなると、記憶部の物理的な交換が必要になる場合もあった。そこで、記憶部を交換しなくても済むように、ファームウェアの更新により不具合が生じた場合に情報処理装置をリカバリ可能とする技術が種々提供されている。
【０００４】
このようなリカバリの一例として、例えば、特許文献１により開示された従来技術がある。この従来技術は、システム起動時に記憶部に格納されている更新前のファームウェアを外部記憶領域に一旦退避しておき、ファームウェア更新後に新しいファームウェアが不具合等で立ち上がらなくなった場合には、外部記憶領域に退避していた更新前のファームウェアを復元してシステムを正常に起動させることで、再度ファームウェアの更新を可能としている。
【０００５】
【特許文献１】特開平１０−３０７７２６号公報（段落番号００１８〜００２７，図２）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記の従来技術では以下のような問題が生じる。
（１）更新前のファームウェアを退避する外部記憶領域が別途必要である。
（２）ファームウェアの退避・復元に時間を要するため、システムの立ち上がり時間が遅くなる。
（３）ファームウェアの退避に失敗し、かつ、ファームウェアの更新に失敗するとシステムが正常に起動しなくなり、内部の記憶部の物理的な交換が必要になる場合がある。
従って、従来技術では情報処理装置のコスト、性能面、及び、保守性に問題を有していた。
【０００７】
本発明は上述した課題を解決するためになされたものであり、その目的は、ファームウェア更新時において異常が発生した場合に、製品の回収や部品の交換をせずに確実にリカバリを行えるようにした、ファームウェアの更新エラー時におけるリカバリ方法、及び、このリカバリ機能を備えた情報処理装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記の課題を解決するため、請求項１に記載したリカバリ方法は、更新・初期化実行手段により更新したファームウェアを起動・初期化する際にエラーが発生したときに、前記ファームウェアを再更新可能にして情報処理装置を復旧させるためのファームウェア更新エラー時のリカバリ方法において、
前記ファームウェアを、更新対象外のブートローダ、オペレーティングシステム、デバイスドライバ及び更新用プログラムを含む基本ファームウェアと、更新対象のアプリケーションプログラムを含む応用ファームウェアと、に分離して記憶手段に保持しておき、
更新・初期化実行手段は、
ファームウェア更新開始指示により基本ファームウェア内の更新用プログラムを起動して更新するべき応用ファームウェアを前記記憶手段に記憶させ、その後、情報処理装置を再起動して基本ファームウェアを優先的に起動・初期化し、
次に、エラー情報格納領域を参照して、前回更新した応用ファームウェアの起動・初期化時のエラー情報がある場合にはこのエラー情報をクリアして基本ファームウェアの稼働下における応用ファームウェアの再更新を可能にし、
エラー情報がない場合には前記記憶手段内の応用ファームウェアを起動・初期化し、その際にエラーが発生した場合には前記エラー情報格納領域にエラー情報を格納するものである。
【０００９】
また、請求項２に記載した情報処理装置は、ファームウェアを、更新対象外のブートローダ、オペレーティングシステム、デバイスドライバ及び更新用プログラムを含む基本ファームウェアと、更新対象のアプリケーションプログラムを含む応用ファームウェアと、に分離して記憶させた記憶手段と、
応用ファームウェアの前回の起動・初期化時のエラー情報を格納するエラー情報格納領域と、
基本ファームウェア内の更新用プログラムを起動して更新した応用ファームウェアを前記記憶手段に記憶させ、再起動後に基本ファームウェアを優先的に起動・初期化すると共に、前記エラー情報格納領域を参照してエラー情報がある場合にはこのエラー情報をクリアして基本ファームウェアの稼働下における応用ファームウェアの再更新を可能にし、エラー情報がない場合には前記記憶手段内の応用ファームウェアを起動・初期化し、その際にエラーが発生した場合には前記エラー情報格納領域にエラー情報を格納する更新・初期化実行手段と、を備えたものである。
【発明の効果】
【００１０】
本発明においては、アプリケーションプログラムを含む応用ファームウェアの更新時における起動・初期化エラー情報を、メモリ内のエラー情報格納領域に格納しておき、応用ファームウェアを更新する都度、基本ファームウェアのみを優先的に起動・初期化した状態で前記エラー情報を参照する。そして、前回更新時のエラー情報があればこれをクリアして応用ファームウェアの再更新を可能にする。このため、更新対象の応用ファームウェアを起動・初期化する際にエラーが発生して正常に立ち上がらなくなったとしても、基本ファームウェアの稼働下における応用ファームウェアの再更新を可能にして情報処理装置のリカバリを図ることができる。
これにより、ファームウェアが記憶された内部の記憶部を交換する必要もなく、また、更新前のファームウェアを退避させるための外部記憶領域も不要になると共に、システム起動時のファームウェア保存・復元処理も不要となるため、コストを抑制し、システム立ち上げ時間の短縮や保守性を含めた性能の向上を図ることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明を実施するための最良の形態について、図を参照しつつ説明する。
図１は、本発明の実施形態に係る情報処理装置のハードウェア構成図である。情報処理装置１００は、ファームウェアの更新・初期化手段としてのＣＰＵ（Central Processing Unit）１０１、記憶手段であるメモリ１０２及びＲＯＭ１０３、外部Ｉ／Ｆ（インターフェース）１０４から構成され、これらがバス接続されている。
【００１２】
メモリ１０２は、本発明におけるエラー情報格納領域を有するＲＡＭ（Random Access Memory）等のメモリであり、例えばバッテリーバックアップにより電源の遮断後でもデータを記憶保持するＮＶＲＡＭ（Non-Volatile RAM）等の不揮発性メモリを用いることが望ましい。
ＲＯＭ１０３は、例えばＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）のように電気的に書き換え可能な不揮発性メモリである。このＲＯＭ１０３には、後述するファームウェアが格納されている。
【００１３】
外部Ｉ／Ｆ１０４は、上位機器と接続するためのインタフェースであり、通信方式に応じてシリアルコントローラやＬＡＮコントローラといった通信デバイスが接続される。この外部Ｉ／Ｆ１０４を経由して上位機器からファームウェアをダウンロードし、更新を行う。
また、ＣＰＵ１０１は、これらのメモリ１０２、ＲＯＭ１０３、外部Ｉ／Ｆ１０４との間でデータを授受し、ファームウェアの更新、起動処理、初期化処理等を実行する。
【００１４】
図２はＲＯＭ１０３内のファームウェアの構成図である。このファームウェアは、基本ファームウェア２０１と応用ファームウェア２０２とに分離して格納されている。
基本ファームウェア２０１は固定プログラムであってファームウェア更新対象外であり、ブートローダ２０３、オペレーティングシステム（ＯＳ）２０４、デバイスドライバ２０５、更新用プログラム２０６等から構成される。ここで、ブートローダ２０３は、情報処理装置１００の起動直後に動作してＯＳ２０４等を起動するためのプログラムである。
一方、応用ファームウェア２０２はファームウェア更新対象であり、情報処理装置としての機能を果たすための複数のアプリケーションプログラム２０７から構成されている。
【００１５】
次に、図２の構成におけるファームウェア（すなわち応用ファームウェア２０２）の更新エラー時のリカバリ処理について、図３のフローチャートに従って説明する。
なお、ファームウェアの更新処理を開始する前の状態では、基本ファームウェア２０１のＯＳ２０４、デバイスドライバ２０５、また、更新前の応用ファームウェア２０２のアプリケーションプログラム２０７により、情報処理装置１００が有効に動作しているものとする。
【００１６】
図３において、まず、ＣＰＵ１０１が外部Ｉ／Ｆ１０４に接続された上位機器（図示せず）からのファームウェア更新開始指示を受けると、ＲＯＭ１０３に記憶されている基本ファームウェア２０１の更新用プログラム２０６を起動する（ステップＳ１）。そして、ＣＰＵ１０１は、上位機器からアプリケーションプログラム２０７をダウンロードし、このアプリケーションプログラム２０７を書き込み可能なＲＯＭ１０３に新しく書き込むことにより、応用ファームウェア２０２のダウンロード・記憶処理、すなわち更新処理を行う（ステップＳ２）。
【００１７】
その後、ＣＰＵ１０１はリセット（再起動）処理を実行してシステムを再起動する（ステップＳ３）。なお、ステップＳ３以降の処理は、ファームウェアの更新の有無に関わらず、リセット時や電源投入時に毎回、必ず実行される。
このリセット直後（及び電源投入時）に、ＣＰＵ１０１は最初にＲＯＭ１０３にアクセスして基本ファームウェア２０１内のブートローダ２０３を起動し、ブート処理（ハードウェアの初期化処理）を行なうと共に、ＯＳ２０４やデバイスドライバ２０５の起動処理を行う（ステップＳ４）。次に、ＣＰＵ１０１は、ＯＳ２０４やデバイスドライバ２０５を初期化する（ステップＳ５）。
【００１８】
ＯＳ２０４等の初期化終了後、応用ファームウェア２０２を起動する前に、ＣＰＵ１０１は応用ファームウェア２０２を前回起動・初期化した際に発生したエラー情報（アプリケーションプログラム２０７を前回、起動・初期化した際に発生したエラー情報）があるか否かを判断する（ステップＳ６）。
具体的には、ＣＰＵ１０１がメモリ１０２内のエラー情報格納領域にアクセスし、エラー情報が格納されているか否かについて判断する。先に記載したように、この例では、応用ファームウェア２０２を今回、更新するまでは通常に動作してエラーが発生していない（エラー情報がメモリ１０２に格納されていない）ため、ＣＰＵ１０１は応用ファームウェア２０２を起動し（ステップＳ６ ＮＯ，Ｓ７）、続いて初期化を行う（ステップＳ８）。
【００１９】
次にＣＰＵ１０１は、応用ファームウェア２０２の初期化途中でエラー（初期化エラー）が発生したか否かを判断する（ステップＳ９）。エラーがない場合（ステップＳ９ ＮＯ）には応用ファームウェア２０２の初期化が正常に終了したと判断してそのまま一連の処理を終了し、ＣＰＵ１０１は応用ファームウェア２０２を動作させて情報処理装置１００を通常動作に移行させる。
【００２０】
また、応用ファームウェア２０２の初期化途中でエラーが発生した場合（ステップＳ９ ＹＥＳ）には、ＣＰＵ１０１がエラー情報をメモリ１０２内のエラー情報格納領域に格納し（ステップＳ１０）、処理を一旦終了する。
このような初期化エラーの後でファームウェアを再更新する場合、ＣＰＵ１０１は、前述したステップＳ１〜Ｓ５を経てステップＳ６により、メモリ１０２内のエラー情報格納領域にアクセスしてエラー情報の有無を判断する。前述した如く、この時点ではエラー情報がメモリ１０２に格納されているため（ステップＳ６ ＹＥＳ）、ＣＰＵ１０１は応用ファームウェア２０２の起動・初期化（ステップＳ７，Ｓ８）を行わずにエラー情報をクリアする（ステップＳ１１）。
【００２１】
この場合、応用ファームウェア２０２は起動されないことになり、情報処理装置１００は先に立ち上げた基本ファームウェア２０１のＯＳ２０４やデバイスドライバ２０５、更新用プログラム２０６等が稼働状態にある。
【００２２】
この状態では、基本的な通信動作等が可能であり、また、前回のエラー情報もステップＳ１１によって既にクリアされているため、ＣＰＵ１０１が外部Ｉ／Ｆ１０４を介して上位機器からファームウェア更新開始指示を受けると、前述したステップＳ１，Ｓ２によるファームウェア更新処理を実行することが可能であり、応用ファームウェア２０２の再更新によるリカバリが可能となる。
【００２３】
以上の処理において、例えば、更新するべき応用ファームウェア２０２に不具合があって初期化時にエラーが発生し、正常に立ち上がらなくなった状態でリセットや電源投入を繰り返した場合には、基本ファームウェア２０１及び応用ファームウェア２０２が起動→基本ファームウェア２０１のみ起動して更新可能→基本ファームウェア２０１及び応用ファームウェア２０２が起動→基本ファームウェア２０１のみ起動して更新可能→……、というように、リセットまたは電源投入ごとに「基本ファームウェア２０１のみ」あるいは「基本ファームウェア２０１及び応用ファームウェア２０２の両方」が交互に起動され、エラー情報の有無に応じて起動ステップが変更されることになる。
従って、応用ファームウェア２０２がエラーにより稼働しなくなったとしても、基本ファームウェア２０１が稼働している状態に移行することにより、応用ファームウェア２０２の再更新を可能として情報処理装置のリカバリを達成することができる。
【００２４】
以上のように本発明によれば、更新前のファームウェアを一旦退避させたり、ファームウェアが記憶された記憶部を交換する等の手段を講じることなく、情報処理装置のリカバリを実行することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施形態における情報処理装置のハードウェア構成図である。
【図２】本発明の実施形態におけるファームウェアの構成図である。
【図３】本発明の実施形態におけるリカバリ処理を示すフローチャートである。
【符号の説明】
【００２６】
１００：情報処理装置
１０１：ＣＰＵ
１０２：メモリ
１０３：ＲＯＭ
１０４：外部Ｉ／Ｆ
２０１：基本ファームウェア
２０２：応用ファームウェア
２０３：ブートローダ
２０４：ＯＳ（オペレーティングシステム）
２０５：デバイスドライバ
２０６：更新用プログラム
２０７：アプリケーションプログラム
【図１】
2005242446.tif 000003
【図２】
2005242446.tif 000004
【図３】
2005242446.tif 000005