(57)【要約】【課題】パワーオン時にファームウェア書き換えを行い、ファームウェアの書き換えを安全且つ確実に行うこと。【解決手段】  更新アプリケーションデータ６００Ａおよび更新用データ７００Ａを断片化していない状態にするファイルでフラグ部３０２と、更新アプリケーションデータ６００Ｂおよび更新用データ７００Ｂの格納場所を示すアドレス情報を取得するアドレス情報取得部３０３と、アドレス情報を含む更新情報２２０をＨＤＤ１２１に書き込む更新情報生成／書込部３０４と、更新情報２２０に基づいて前記更新アプリケーションデータ６００Ｂをメモリ１１３にロードする処理と、マルチタスク機能を有するオペレーティングシステムをブートする前にメモリ１１３内の更新アプリケーション６００に基づいて更新用データ２１０を用いて不揮発性メモリ２０１に格納されているファームウェア２０２を更新するファームウェア書換部６０２とを具備する。【選択図】    図２
2008276555.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
ファームウェアが格納された不揮発性メモリと、前記ファームウェアに基づいた処理を実行するコントローラとを有するデバイスと、
前記不揮発性メモリに保存されているファームウェアを更新するための更新用データ、および更新アプリケーションデータが格納される記憶装置と、
前記更新アプリケーションデータおよび前記更新用データを断片化していない状態にする処理と、前記更新アプリケーションデータおよび前記更新用データの格納場所を示すアドレス情報を取得する処理と、前記更新アプリケーションデータおよび前記更新用データのアドレス情報を含む更新情報を前記記憶装置に書き込む処理と、パワーオン時に前記記憶装置に前記更新情報が書き込まれているか否かを検出する処理と、前記更新情報が書き込まれていると判断した場合に、前記更新情報に基づいて前記記憶装置内の前記更新アプリケーションデータを前記メモリにロードする処理と、マルチタスク機能を有するオペレーティングシステムをブートする前に前記メモリにロードされた前記更新アプリケーションデータに基づいて前記更新用データを用いて前記不揮発性メモリに格納されているファームウェアを更新する処理とを実行するプロセッサと
を具備することを特徴とする情報処理装置。
【請求項２】
前記プロセッサは、前記更新処理後に、前記更新アプリケーションデータに基づいて前記更新情報を削除する処理を実行することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記プロセッサは、システムＢＩＯＳに基づいて前記検出処理およびロード処理を実行することを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記デバイスは、ハードディスクドライブであることを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記記憶装置は、ハードディスクドライブであって、
前記格納場所を示すアドレス情報は、先頭セクタのＬＢＡ（Logical Block Adress）、およびサイズであることを特徴とする請求項１記載の情報処理装置。
【請求項６】
前記更新情報は、前記記憶装置の先頭セクタと第１パーティションとの間の領域に書き込まれることを特徴とする請求項５記載の情報処理装置。
【請求項７】
記憶装置に格納された更新アプリケーションデータおよび前記更新用データを断片化していない状態にし、
前記更新アプリケーションデータおよび前記更新用データの格納場所を示すアドレス情報を取得し、
前記更新アプリケーションデータおよび前記更新用データのアドレス情報を含む更新情報を前記記憶装置に書き込む処理と、
パワーオン時に前記先頭セクタと前記第１パーティションとの間の領域に前記更新情報が書き込まれているか否かを検出し、
前記更新情報が書き込まれていると判断した場合に、前記更新情報に基づいて前記記憶装置内の前記更新アプリケーションデータを前記メモリにロードし、
マルチタスク機能を有するオペレーティングシステムをブートする前に、前記メモリにロードされた前記更新アプリケーションデータに基づいて前記更新用データを用いてデバイスの不揮発性メモリに格納されているファームウェアを更新する
ことを特徴とするファームウェアの更新方法。
【請求項８】
前記更新処理後に、前記更新アプリケーションデータに基づいて前記更新情報を削除することを特徴とする請求項７記載のファームウェアの更新方法。
【請求項９】
前記ロード処理は、システムＢＩＯＳに基づいて前記実行されることを特徴とする請求項７記載のファームウェアの更新方法。
【請求項１０】
前記デバイスは、ハードディスクドライブであることを特徴とする請求項７の記載のファームウェアの更新方法。
【請求項１１】
前記記憶装置は、ハードディスクドライブであって、
前記格納場所を示すアドレス情報は、先頭セクタのＬＢＡ（Logical Block Adress）、およびサイズであることを特徴とする請求項７記載のファームウェアの更新方法。
【請求項１２】
前記更新情報は、前記記憶装置の先頭セクタと第１パーティションとの間の領域に書き込まれることを特徴とする請求項１１記載のファームウェアの更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーソナルコンピュータなどの情報処理装置に係わり、特に不揮発性メモリに格納されたファームウェアを更新する機能を有する情報処理装置およびファームウェア更新方法に関する。
【背景技術】
【０００２】
ディスク記憶装置は、ヘッドによりデータが記録されるディスク媒体を備えている。通常、ディスク記憶装置は、当該ディスク記憶装置を利用するホストシステムに接続して用いられる。ホストシステムは、一般にディスク記憶装置を補助記憶装置（大容量記憶装置）として利用するパーソナルコンピュータである。ディスク記憶装置では、ディスク媒体へのデータ記録及びディスク媒体からのデータ読み出しを含む各種処理が実行される。これらの処理は、ディスク記憶装置に設けられた不揮発性メモリに格納されているプログラム（制御プログラム）を当該ディスク記憶装置内のコントローラが実行することにより実現される。
【０００３】
最近のディスク記憶装置には、当該ディスク記憶装置内の不揮発性メモリに格納されているプログラムを最新のものに書き換えられることが要求されている。
【０００４】
ディスク記憶装置内の不揮発性メモリに格納されているプログラムを安全に書き換えるためには、プログラム書き換えの期間、当該プログラム書き換え以外でホストシステムからディスク記憶装置がアクセスされないことが必要となる。ところが、ホストシステムがパーソナルコンピュータである場合、当該コンピュータのＯＳは複数のタスク（プログラム）を並行して実行できるマルチタスク機能を有しているのが一般的である。このように、複数のタスクが並行して実行される環境下で、ディスク記憶装置内の不揮発性メモリに格納されているプログラムを書き換えることは危険である。
【０００５】
そこで従来は、プログラム書き換え後にホストシステム全体を再起動するためと、不揮発性メモリ上のプログラムを書き換える期間、ホストシステムからディスク記憶装置へのアクセスの発生を防止するために、次のような方法を適用している。まず、最低限のブート機能を持ったブートプログラムと、ホストシステムのアーキテクチャ（コンピュータアーキテクチャ）に適合するプログラム書き換え用のアプリケーションプログラムとを記憶したフレキシブルディスクを用意する。そして、このディスクをホストシステムのフレキシブルディスクドライブに装着して、当該ディスク内のプログラムを実行することで、上述の手順でプログラム書き換えを行う。
【０００６】
しかしながら、最近では、フレキシブルディスクを搭載していない情報処理装置などが増えてきていることもあり、ＯＳを起動させずにＦＷの書き換えのためのコマンドを実行させることが困難なケースが多くなっている。
【０００７】
特許文献１には、フレキシブルディスクを使用せずに、ファームウェアを書き換える技術が開示されている。特許文献１に開示されている方法は、以下に簡単に説明する。ファームウェア（ＦＷ）更新アプリが「パワーオフ＆ファームウェア更新」要求をＯＳに対して行う。ＯＳはこの要求を受けＯＳのシャットダウンを行い、シャットダウン処理が終了するとパワーオフ＆ファームウェア更新」イベントをＢＩＯＳに送り、ＢＩＯＳはイベントに応答してメモリ上のＦＷ更新プログラムを呼び出してＦＷを更新する。
【特許文献１】特開２００２−２４４８７４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、パーソナルコンピュータであれば、上述した方法を用いてファームウェアを更新できることが多い。ところが、ＰＯＳ（Point Of Sales System）レジスタ等に利用されている組み込み機器向けオペレーティングシステムを利用した情報処理装置の場合、通常のオペレーティングシステムのシャットダウン処理が異なるため、上述した方法は使えない。そこで、パワーオン時にファームウェアの更新を行う方法が望まれている。
【０００９】
また、完全に電源を切らない状態で、ファームウェアの更新を行っているので、正常にファームウェアの更新を行うことが出来ない可能性がある。
【００１０】
本発明の目的は、パワーオン時にファームウェア書き換えを行い、ファームウェアの書き換えを安全且つ確実に行うことができる情報処理装置、およびファームウェアの更新方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の一例に係わる情報処理装置は、メモリと、ファームウェアが格納された不揮発性メモリと、前記ファームウェアに基づいた処理を実行するコントローラとを有するデバイスと、前記不揮発性メモリに保存されているファームウェアを更新するための更新用データ、および更新アプリケーションデータが格納される記憶装置と、前記更新アプリケーションデータおよび前記更新用データを断片化していない状態にする処理と、前記更新アプリケーションデータおよび前記更新用データの格納場所を示すアドレス情報を取得する処理と、前記更新アプリケーションデータおよび前記更新用データのアドレス情報を含む更新情報を前記記憶装置内の先頭セクタと第１パーティションとの間の領域に書き込む処理と、パワーオン時に前記先頭セクタと前記第１パーティションとの間の領域に前記更新情報が書き込まれているか否かを検出する処理と、前記更新情報が書き込まれていると判断した場合に、前記更新情報に基づいて前記記憶装置内の前記更新アプリケーションデータを前記メモリにロードする処理と、マルチタスク機能を有するオペレーティングシステムをブートする前に前記メモリにロードされた前記更新アプリケーションデータに基づいて前記更新用データを用いて前記不揮発性メモリに格納されているファームウェアを更新する処理とを実行するプロセッサと具備することを特徴とする情報処理装置。
【００１２】
本発明の一例に係わるファームウェアの更新方法は、記憶装置に格納された更新アプリケーションデータおよび前記更新用データを断片化していない状態にし、前記更新アプリケーションデータおよび前記更新用データの格納場所を示すアドレス情報を取得し、前記更新アプリケーションデータおよび前記更新用データのアドレス情報を含む更新情報を前記記憶装置に書き込む処理と、パワーオン時に前記先頭セクタと前記第１パーティションとの間の領域に前記更新情報が書き込まれているか否かを検出し、前記更新情報が書き込まれていると判断した場合に、前記更新情報に基づいて前記記憶装置内の前記更新アプリケーションデータを前記メモリにロードし、マルチタスク機能を有するオペレーティングシステムをブートする前に、前記メモリにロードされた前記更新アプリケーションデータに基づいて前記更新用データを用いてデバイスの不揮発性メモリに格納されているファームウェアを更新することを特徴とする。
【発明の効果】
【００１３】
パワーオン時にファームウェア書き換えを行い、ファームウェアの書き換えを安全且つ確実に行うことができる。
【発明を実施するための最良の形態】
【００１４】
本発明の実施の形態を以下に図面を参照して説明する。
【００１５】
まず、図１を参照して、本発明の一実施形態に係る情報処理装置の構成について説明する。この情報処理装置は、バッテリ駆動可能な携帯型のノートブック型パーソナルコンピュータ１０として実現されている。図１は、パーソナルコンピュータ１０のシステム構成の例を示すブロック図である。
【００１６】
本コンピュータ１０は、図１に示されているように、ＣＰＵ（Central Processing Unit）１１１、ノースブリッジ１１２、主メモリ１１３、グラフィクスコントローラ１１４、サウスブリッジ１１９、ＢＩＯＳ−ＲＯＭ１２０、ハードディスクドライブ（ＨＤＤ）１２１、およびエンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１２４等を備えている。
【００１７】
ＣＰＵ１１１は、本コンピュータ１０の動作を制御するために設けられたプロセッサであり、ハードディスクドライブ（ＨＤＤ）１２１から主メモリ１１３にロードされる、マルチタスク機能を有するオペレーティングシステム（ＯＳ）および各種アプリケーションプログラムを実行する。ＯＳは、複数のウィンドウを表示画面上に表示するためのウィンドウシステムを有している。
【００１８】
また、ＣＰＵ１１１は、ＢＩＯＳ−ＲＯＭ１２０に格納されたシステムＢＩＯＳ（Basic Input Output System）も実行する。システムＢＩＯＳはハードウェア制御のためのプログラムである。
【００１９】
ノースブリッジ１１２には、主メモリ１１３をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ１１２は、ＰＣＩ  ＥＸＰＲＥＳＳバスなどを介してグラフィクスコントローラ１１４との通信を実行する機能も有している。
【００２０】
グラフィクスコントローラ１１４は本コンピュータ１０のディスプレイモニタとして使用されるＬＣＤ１７を制御する表示コントローラである。このグラフィクスコントローラ１１４はビデオメモリ（ＶＲＡＭ）を有しており、ＯＳ／アプリケーションプログラムによってビデオメモリに描画された表示データから、ＬＣＤ１７に表示すべき表示イメージを形成する映像信号を生成する。
【００２１】
サウスブリッジ１１９は、ＬＰＣ（Low Pin Count）バス上の各デバイスを制御する。また、サウスブリッジ１１９は、ＨＤＤ１２１を制御するためのＩＤＥ（Integrated Drive Electronics）コントローラを内蔵している。さらに、サウスブリッジ１１９は、ＢＩＯＳ−ＲＯＭ１２０をアクセス制御するための機能も有している。
【００２２】
ＨＤＤ１２１は、ディスク媒体へのデータ記録及びディスク媒体からのデータ読み出しを含む各種処理を実行する。これらの処理は、ＨＤＤ１２１に設けられた不揮発性メモリ（ＮＶＭ）２０１に格納されているファームウェア（制御プログラム）２０２をコントローラ２０３が実行することにより実現される。
【００２３】
エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１２４は、電源制御、放熱制御のためのエンベデッドコントローラと、キーボード（ＫＢ）１３を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【００２４】
ところで、ＨＤＤ１２１内のファームウェア２０２は、不具合の修正や新機能の追加等で新しいファームウェアに書き換えることがある。以下に、ＨＤＤ１２１内のファームウェア２０２を更新するための構成を説明する。
【００２５】
本実施形態では、マルチタスク機能を有するオペレーティングシステムの起動時にファームウェア２０２を更新するための設定を行い、再起動後にオペレーティングシステムが起動する前にファームウェア２０２を更新する。
【００２６】
図２は、ハードディスクドライブ１２１内のファームウェア２０２を更新するためのシステム構成を示すブロック図である。
【００２７】
図２に示すように、ファームウェア２０２の更新は、設定アプリケーション（ＡＰＰ）３００、オペレーティングシステム（ＯＳ）４００、システムＢＩＯＳ５００、書換アプリケーション（ＡＰＰ）６００等によって実行される。設定アプリケーション（ＡＰＰ）３００、システムＢＩＯＳ５００、および書換アプリケーション（ＡＰＰ）６００は、ＣＰＵ１１１によって実行されるプログラムである。
【００２８】
設定アプリケーション３００は、データ検出部３０１、ファイルデフラグ部３０２、アドレス情報取得部３０３、更新情報生成／書込部３０４、再起動指令部３０５等を有する。データ検出部３０１、ファイルデフラグ部３０２、アドレス情報取得部３０３、更新情報生成／書込部３０４、および再起動指令部３０５は、ＣＰＵ１１１によって実行されるプログラムである。
【００２９】
データ検出部３０１は、ＨＤＤ１２１に格納された書換アプリケーション（ＡＰＰ）データ６００Ａおよび更新用ファームウェア（ＦＷ）データ７００Ａのパス（path）を検出する。データ検出部３０１は、ＦＷ更新アプリケーション６００Ａのパスを検出するために、ファイルダイアログボックスを表示し、ユーザにＦＷ更新アプリケーション６００Ａを指定させる。また、データ検出部３０１は、更新用ファームウェアデータ７００Ａのパスを検出するために、ファイルダイアログボックスを表示し、ユーザに更新用ファームウェアデータ７００Ａを指定させる。
【００３０】
書換アプリケーション（ＡＰＰ）データ６００Ａおよび更新用ファームウェア（ＦＷ）データ７００Ａは、予めユーザがＷＥＢサーバなどからダウンロードして用意しておいても良いし、設定アプリケーション３００がＷＥＢサーバなどから自動的にダウンロードする機能を有していても良い。また、書換アプリケーション（ＡＰＰ）データ６００Ａが定期的に自動実行され、書換アプリケーション（ＡＰＰ）データ６００ＡがＷＥＢサーバにアクセスしてファームウェアの有無を確認し、ファームウェアがある場合にファームウェアを自動的にダウンロードし、自動的にファームウェアの更新を行うようにしても良い。
【００３１】
ファイルデフラグ部３０２は、マルチ機能を有するオペレーティングシステム（ＯＳ）４００に対し、ＦＷ更新アプリケーション６００Ａおよび更新用ファームウェアデータ７００Ａのそれぞれを連続した領域にデータの連続性が保持されるためのコマンドを実行する。オペレーティングシステム４００は、ＦＷ更新アプリケーションデータ６００Ａおよび更新用ファームウェアデータ７００Ａのそれぞれをデフラグする。デフラグ後のファイルが、ＦＷ更新アプリケーションデータ６００Ｂおよび更新用ファームウェアデータ７００Ｂである。
【００３２】
デフラグすることによって、ＦＷ更新アプリケーションデータ６００Ｂは、図３に示すように、ＷセクタからＸｋＢｙｔｅの連続した領域にデータの連続性を保持した状態で格納される。また、更新用ファームウェアデータ７００Ｂは、図３に示すように、ＹセクタからＺｋＢｙｔｅの連続した領域にデータの連続性を保持した状態で格納される。
【００３３】
図３において、１セクタ（先頭セクタ、ブートセクタ）のＭＢＲ（Master Boot Record）２１０には、ブートストラップローダ、パーティションテーブル、およびブートシグニチャが格納されている。
【００３４】
Ｎ＋１セクタから第１パーティション１２１Ｂが始まる。第１パーティション１２１Ｂには、マルチタスク機能を有するオペレーティングシステム４００のデータ、ユーザアプリケーションやユーザデータ等が格納されている。
【００３５】
１セクタと第１パーティションとの間、則ち２セクタからＮセクタ迄の領域１２１Ａは、領域は通常使用されない未予約領域である。未予約領域１２１Ａの大きさは、ＷｉｎｄｏｗｓＸＰ（登録商標）の場合、６３セクタである。
【００３６】
アドレス情報取得部３０３は、オペレーティングシステム４００に対しＦＷ更新アプリケーションデータ６００Ｂおよび更新用ファームウェアデータ７００Ｂのパスを渡し、それぞれのＨＤＤ１２１内の格納場所を示すアドレス情報を取得するためのコマンドを発行し、オペレーティングシステム４００からアドレス情報を取得する。アドレス情報は、格納領域の先頭セクタのＬＢＡ（Logical Block Address)と格納領域のサイズ（通常、５１２Ｂｙｔｅの整数倍）である。なお、この例はＬＢＡ方式のアドレス情報である。
【００３７】
更新情報生成／書込部３０４は、ＦＷ更新アプリケーション６００およびファームウェアデータのアドレス情報に所定のインデックスを付加した更新情報２２０を生成し、ＨＤＤの特定の領域に更新情報を格納する。更新情報２２０は、図３に示すように、未予約領域１２１Ａに格納される。未予約領域１２１Ａは、通常使用されない領域であるが、使用するアプリケーションがあるので、更新情報生成／書込部３０４は、空いている領域に更新情報を書き込む。
【００３８】
再起動ファイルデフラグ部３０２は、更新情報２２０を未予約領域１２１Ａに書き込んだ後、オペレーティングシステム４００に対して再起動コマンドを発行する。
【００３９】
次に、システムＢＩＯＳ５００について説明する。システムＢＩＯＳ５００は、ＰＯＳＴ／初期化部５０１、更新情報サーチ部５０２、ＡＰＰ／ＦＷロード部５０３、ＡＰＰ起動部５０４、ＭＢＲ実行部５０５等を具備する。ＰＯＳＴ／初期化部５０１、更新情報サーチ部５０２、ＡＰＰ／ＦＷロード部５０３、ＡＰＰ起動部５０４、ＭＢＲ実行部５０５は、ＣＰＵ１１１によって実行されるプログラムである。
【００４０】
ＰＯＳＴ／初期化部５０１は、ＰＯＳＴ（（ＰｏｗｅｒＯＮ Ｓｅｌｆ Ｔｅｓｔ）は、Power-On Self Test(ＰＯＳＴ)を実行して必要な機器が正常に動作するかをチェックする。また、同時にそれら周辺機器の初期化も行う。
【００４１】
更新情報サーチ部５０２は、更新情報２２０が有する所定のインデックスを元に、未予約領域１２１Ａから更新情報２２０を検出する。
【００４２】
ＡＰＰ／ＦＷロード部５０３は、更新情報サーチ部５０２が検出した更新情報２２０に基づいて、ＨＤＤ１２１からＦＷ更新アプリケーションデータ６００Ｂおよび更新用ファームウェアデータ７００Ｂを読み出し、メモリ１１３に順にロードする。図４に示すように、メモリ１１３上において、更新用ファームウェアデータ７００は、ＦＷ更新アプリケーション６００の後のアドレスからの領域に格納される。
【００４３】
ＡＰＰ起動部５０４は、メモリ１１３にロードされたＦＷ更新アプリケーション６００を起動する。ブート部は、ＭＢＲ２１０を探し、ＭＢＲを実行する。
【００４４】
ＦＷ更新アプリケーション６００は、ＦＷ検出部６０１、ＦＷ書換部６０２、更新情報削除部６０３等を有する。ＦＷ検出部６０１、ＦＷ書換部６０２、および更新情報削除部６０３は、ＣＰＵ１１１によって実行されるプログラムである。
【００４５】
ＦＷ検出部６０１は、メモリ１１３上の更新用ファームウェアデータ７００が格納されている領域を検出する。ＦＷ検出部６０１は、更新情報２２０を読み出し、更新用ファームウェアデータ７００のサイズを認識する。メモリ１１３上のファームウェアデータは、メモリ上のＦＷ更新アプリケーション６００の領域の後のアドレスから格納されている。よって、ＦＷ検出部６０１は、メモリ１１３上のＦＷ更新アプリケーション６００の後のアドレスと更新用ファームウェアデータ７００のサイズとからメモリ１１３上のファームウェアデータを検出する。
【００４６】
ＦＷ書換部６０２は、ＦＷ検出部６０１が検出したメモリ１１３上の更新用ファームウェアデータ７００を用いて、不揮発性メモリ２０１内のファームウェアデータ２０２を更新する。
【００４７】
更新情報削除部６０３は、ファームウェアの更新終了後に、ＨＤＤ１２１から更新情報２２０を削除し、削除後にシステムＢＩＯＳ５００に再起動コマンドを送信する。
【００４８】
次に、ファームウェアを更新するときの処理の流れについて図５のフローチャートを参照して説明する。
【００４９】
設定アプリケーション３００のデータ検出部３０１は、ＦＷ更新アプリケーションデータ６００Ａおよび更新用ファームウェアデータ７００Ａのパスを検出する（ステップＳ１１）。データ検出部３０１は、ファイルダイアログボックスを表示し、ユーザにＦＷ更新アプリケーションデータ６００Ａの場所とファイル名を指定させることによって、ＦＷ更新アプリケーションデータ６００Ａのパスを検出する。続いて、データ検出部３０１は、ファイルダイアログボックスを表示し、ユーザに更新用ファームウェアデータ７００Ａの場所とファイル名を指定させることによって、ＦＷ更新アプリケーションデータ６００Ａのパスを検出する。
【００５０】
ＦＷ更新アプリケーションデータ６００Ａおよび更新用ファームウェアデータ７００Ｂのデフラグを行う（ステップＳ１２）。ファイルデフラグ部３０２は、ＦＷ更新アプリケーションデータ６００Ａがハードディスクドライブ内の連続した空き領域にデータの連続性が保持されるように、オペレーティングシステム４００にファイルをデフラグするためのコマンドを発行する。オペレーティングシステム４００は、ＦＷ更新アプリケーションデータ６００Ａをデフラグする。
【００５１】
ファイルデフラグ部３０２は、更新用ファームウェアデータ７００Ａがハードディスクドライブ内の連続した空き領域にデータの連続性が保持されるように、オペレーティングシステム４００にファイルをデフラグするためのコマンドを発行する。オペレーティングシステム４００は、更新用ファームウェアデータ７００Ａをデフラグする。
【００５２】
設定アプリケーション３００は、デフラグ後のＦＷ更新アプリケーションデータ６００Ｂおよび更新用ファームウェアデータ７００ＢのそれぞれのＨＤＤ１２１内の格納場所を示すアドレス情報を取得する（ステップＳ１３）。
【００５３】
アドレス情報取得部３０３は、ＦＷ更新アプリケーションデータ６００Ｂのアドレス情報を取得するためのコマンドを発行し、オペレーティングシステム４００からアドレス情報を取得する。アドレス情報取得部３０３は、更新用ファームウェアデータ７００Ｂのアドレス情報を取得するためのコマンドを発行し、オペレーティングシステム４００からアドレス情報を取得する。アドレス情報取得部３０３が取得するアドレス情報は、格納領域の先頭セクタのＬＢＡ（Logical Block Address)と格納領域のサイズ（通常、５１２Ｂｙｔｅの整数倍）である。
【００５４】
更新情報生成／書込部３０４は、検索時の目印となるインデックス、ＦＷ更新アプリケーションデータ６００Ｂのアドレス情報、および更新用ファームウェアデータ７００Ｂのアドレス情報を含む更新情報２２０を生成し、更新情報２２０をＨＤＤ１２１の未予約領域１２１Ａに格納する（ステップＳ１４）。
【００５５】
再起動指令部３０５は、オペレーティングシステム４００に対して再起動を指令し、再起動が行われる（ステップＳ１５）。
【００５６】
そして、再起動後、ＰＯＳＴ／初期化部５０１は、Power-On Self Test(POST) を実行して必要な機器が正常に動作するかをチェックする。また、同時にそれら周辺機器の初期化も行う（ステップＳ１６）。
【００５７】
そして、更新情報サーチ部５０２が、ＭＢＲ２１０と第１パーティション１２１Ｂとの間の未予約領域１２１Ａのデータをサーチし、インデックスを元に更新情報２２０が存在するか否かを判別する（ステップＳ１７）。
【００５８】
もし、更新情報２２０が第１パーティション１２１Ａ等に格納されると、更新情報サーチ部５０２は広い領域をサーチしなければならず、サーチ時間、ひいてはブート処理に時間がかかる。ところが、更新情報２２０は領域が限定される未予約領域１２１Ａに格納される。従って、サーチ時間を短くすることが出来る。
【００５９】
更新情報が存在すると判断した場合（ステップＳ１７のＹｅｓ）、ＡＰＰ／ＦＷロード部５０３は、更新情報２２０からＦＷ更新アプリケーションデータ６００Ｂおよび更新用ファームウェアデータ７００Ｂのそれぞれのアドレス情報を抽出する（ステップＳ１８）。
【００６０】
ＡＰＰ／ＦＷロード部５０３は、抽出されたアドレス情報に基づいてＨＤＤ１２１内のＦＷ更新アプリケーションデータ６００Ｂおよび更新用ファームウェアデータ７００Ｂをメモリにロードする（ステップＳ１９）。先ず、ＡＰＰ／ＦＷロード部５０３は、ＬＢＡおよびサイズを指定して、ＦＷ更新アプリケーションデータ６００ＢをＨＤＤ１２１からメモリ１１３にロードする。次に、ＡＰＰ／ＦＷロード部５０３は、ＬＢＡおよびサイズを指定して、更新用ファームウェアデータ７００ＢをＨＤＤ１２１からメモリ１１３にロードする。
【００６１】
システムＢＩＯＳ５００が、ファイルをメモリにロードする場合にオペレーティングシステム４００が使用しているファイルシステムを理解できないとそのプログラム、データを読み出すことができない。本実施形態では、ファイルの連続性を確保することによりシステムＢＩＯＳ５００のＡＰＰ／ＦＷロード部５０３がファイルシステムを意識せずにＦＷ更新アプリケーションデータ６００Ｂ、および更新用ファームウェアデータ７００Ｂを読み出すことが可能となる。
【００６２】
ＡＰＰ起動部５０４は、メモリ１１３にロードされたＦＷ更新アプリケーション６００を起動する（ステップＳ２０）。
【００６３】
ＦＷ更新アプリケーション６００のＦＷ検出部６０１は、メモリ１１３上の更新用ファームウェアデータ７００の格納場所を検出する（ステップＳ２１）。
【００６４】
ファームウェア書換部６０２は、不揮発性メモリ２０１に格納されているファームウェアデータ２０２を更新用ファームウェアデータ７００によって書き換えることによって、ファームウェアを更新する（ステップＳ２２）。
【００６５】
そして、ファームウェア書換部６０２は、不揮発性メモリ２０１内のファームウェアデータ２０２が正常に更新されたか否かを検証する（ステップＳ２３）。正常に更新されていないと判別した場合（ステップＳ２３のＮｏ）、ファームウェア書換部６０２は、再度更新用ファームウェアデータ７００を用いて、不揮発性メモリ２０１内のファームウェアデータ２０２を書き換える。
【００６６】
正常に更新されたと判別した場合（ステップＳ２３のＹｅｓ）、更新情報削除部６０３が、ＨＤＤ１２１内の更新情報２２０を削除する（ステップＳ２４）。ＨＤＤ１２１内の更新情報２２０を削除することで、この後に実施される再起動後に、再度ファームウェアの更新を行うという無限ループに陥ることがない。
【００６７】
削除後、更新情報削除部６０３は、システムＢＩＯＳ５００に対して再起動を指示し、再起動する（ステップＳ２５）。そして、ステップＳ１６に戻り、ＰＯＳＴ／初期化部５０１は、Power-On Self Test(POST) を実行して必要な機器が正常に動作するかをチェックする。また、同時にそれら周辺機器の初期化も行う（ステップＳ１６）。
【００６８】
ステップＳ１７において、更新情報２２０が存在しないと判断した場合（ステップＳ１７のＮｏ）、ＭＢＲ実行部５０５は、ＭＢＲ２１０を探し、ＭＢＲ２１０を実行する（ステップＳ３０）。
【００６９】
ＭＢＲ実行部５０５は、事前に設定されたデバイスリストを順にあたって、ブート可能な周辺機器を探す。そのようなデバイスが見つからない場合、エラーが発生してブート処理は停止する。ブート可能デバイスを発見すると、そのブートセクター内のＭＢＲ２１０をロードして実行する（ステップＳ３０）。
【００７０】
ＭＢＲ２１０のブートストラップローダは、パーティションテーブルを調べてアクティブなパーティションを探す。アクティブなパーティションが見つかったら、ブートストラップローダは、ＭＢＲ２１０のブートストラップローダはパーティションのブートセクターをロードして実行する。
【００７１】
以上説明した処理によって、フレキシブルディスクを有しない情報処理装置において、パワーオン時にファームウェア書き換えを行い、ファームウェアの書き換えを安全且つ確実に行うことができる。
【００７２】
なお、ＡＰＰ／ＦＷロード部５０３が、更新用ファームウェアデータ７００Ｂをメモリ１１３にロードしていたが、ＦＷ更新アプリケーション６００が更新情報２２０に基づいて更新用ファームウェアデータ７００Ｂをメモリ１１３にロードしても良い。
【００７３】
なお、上述した実施形態では、ＨＤＤ１２１のファームウェアを更新する例を説明したが、他のデバイスのファームウェアの更新にも適用することが出来る。
【００７４】
また、ＦＷ更新アプリケーションデータ６００Ａ，６００Ｂと更新用ファームウェアデータ７００Ａ，７００Ｂとが別のファイルであったが、一つのファイルにパッケージングされていても良い。
【００７５】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００７６】
【図１】本発明の一実施形態に係わる、情報処理装置のシステム構成を示すブロック図。
【図２】図１に示す情報処理装置におけるデバイスのファームウェアを更新するための構成を示すブロック図。
【図３】本発明の一実施形態に係わるハードディスクドライブ内のデータの配列構成を示す図。
【図４】本発明の一実施形態に係わるメモリ内のデータの配列構成を示す図。
【図５】図１に示す情報処理装置におけるデバイスのファームウェアを更新するための手順を示すフローチャート。
【符号の説明】
【００７７】
１１１…ＣＰＵ（プロセッサ），１１３…主メモリ，１２１…ハードディスクドライブ（デバイス、記憶装置），１２１Ａ…未予約領域，１２１Ｂ…第１パーティション，２０１…不揮発性メモリ，２０２…ファームウェア，２０３…コントローラ，２１０…ＭＢＲ，２２０…更新情報，３００…設定アプリケーション，３０１…データ検出部，３０２…ファイルデフラグ部，３０３…アドレス情報取得部，３０４…書込部，３０５…再起動指令部，４００…オペレーティングシステム，５００…システムＢＩＯＳ，５０１…初期化部，５０２…更新情報サーチ部，５０３…ＡＰＰ／ＦＷロード部，５０４…ＡＰＰ起動部，５０５…ＭＢＲ実行部，６００Ａ，６００Ｂ…ＦＷ更新アプリケーションデータ，６００…ＦＷ更新アプリケーション，６０１…ＦＷ検出部，６０２…ＦＷ書換部，６０３…更新情報削除部，７００…更新用ファームウェアデータ。
【図１】
2008276555.tif 000003
【図２】
2008276555.tif 000004
【図３】
2008276555.tif 000005
【図４】
2008276555.tif 000006
【図５】
2008276555.tif 000007