(57)【要約】      （修正有）【課題】コンピュータシステムのコンポーネントにおいて、ファームウェアを更新する改良された方法を提供する。【解決手段】コンピュータシステム１００は、ホスト１０とイメージファイル１４とを備えるメモリと１３０、ホスト１０を実行するように構成されるプロセッサ１１０ａ−１１０ｎと、プロセッサ１１０ａ−１１０ｎに連結された入出力（Ｉ／Ｏ）コントローラ１２４と、Ｉ／Ｏコントローラ１２４に連結され不揮発性メモリ２２を備える管理処理システム２０とを具備する。ホスト１０は、プロセッサ１１０ａ−１１０ｎに対しイメージファイル１４の第１の部分を第１のメモリに格納させるように、プロセッサ１１０ａ−１１０ｎに対しイメージファイル１４を管理処理システム２０に提供させるように構成され、管理処理システム２０は、イメージファイル１４をホスト１０から受け取ることに応じてイメージファイルを不揮発性メモリ２２に格納する。【選択図】図２
2005182812.tif 000002
【特許請求の範囲】
【請求項１】
ホスト（１０）とイメージファイル（１４）とを備えるメモリ（１３０）と、
前記ホストを実行するように構成されるプロセッサ（１１０）と、
該プロセッサに連結された入出力（Ｉ／Ｏ）コントローラ（１２４）と、
該Ｉ／Ｏコントローラに連結され不揮発性メモリ（２２）を備える管理処理システム（２０）と、
を具備するコンピュータシステム（１００）であって、
前記ホストは、前記プロセッサに対し前記イメージファイルを前記管理処理システムに提供させるように構成され、
前記管理処理システムは、前記イメージファイルを前記ホストから受け取ることに応じて前記イメージファイルを前記不揮発性メモリに格納するように構成される
コンピュータシステム。
【請求項２】
前記管理処理システムは、
リモートユーザ（１６０）が、前記コンピュータシステムにアクセスすることができるようにするように構成されるネットワーク接続
を備える
請求項１に記載のコンピュータシステム。
【請求項３】
前記Ｉ／Ｏコントローラと前記管理処理システムとに連結されるＰＣＩバス（１５０）
をさらに具備し、
前記Ｉ／Ｏコントローラは、
ＰＣＩコントローラ
を含む
請求項１に記載のコンピュータシステム。
【請求項４】
前記ホストは、オペレーティングシステムが、前記プロセッサによってブートされた後に、前記プロセッサによって実行されるように構成される
請求項１に記載のコンピュータシステム。
【請求項５】
前記ホストは、オペレーティングシステムが、前記プロセッサによってブートされる前に、前記プロセッサによって実行されるように構成される
請求項１に記載のコンピュータシステム。
【請求項６】
前記ホストは、
前記イメージファイルが、管理処理システムに提供されるようにする前に、前記プロセッサに対し前記管理処理システムにファイル転送開始メッセージを提供させるように、
前記イメージファイルが、前記管理処理システムに提供されるようにした後に、前記プロセッサに対し、前記管理処理システムに前記ファイル転送終了メッセージを提供させる
ように構成される
請求項１に記載のコンピュータシステム。
【請求項７】
前記管理処理システムは、前記ファイル転送終了メッセージを受け取ることに応じて、前記イメージファイルを、前記不揮発性メモリに格納するように構成される
請求項６に記載のコンピュータシステム。
【請求項８】
前記管理処理システムは、前記イメージファイルを、前記不揮発性メモリに格納した後に、前記ホストに対し応答メッセージを提供するように構成される
請求項７に記載のコンピュータシステム。
【請求項９】
前記イメージファイルは、
ファームウェア
を備える
請求項１に記載のコンピュータシステム。
【請求項１０】
前記メモリは、
構成ファイル（１２）
を備え、
前記プロセッサは、前記構成ファイルの情報に応じて、前記イメージファイルが前記管理処理システムに提供されるようにするように構成される
請求項１に記載のコンピュータシステム。
【請求項１１】
入出力（Ｉ／Ｏ）バス（１５０）に連結された管理処理システム（２０）を備えるコンピュータシステム（１００）によって実行される方法であって、
前記Ｉ／Ｏバスを使用して前記管理処理システムに対しアップグレード開始メッセージを提供することと、
前記Ｉ／Ｏバスを使用して前記管理処理システムに対し第１のファイル転送開始メッセージを提供することと、
前記Ｉ／Ｏバスを使用して前記管理処理システムに対し第１のイメージファイルを含む第１の複数のデータ送信メッセージを提供することと、
前記Ｉ／Ｏバスを使用して前記管理処理システムに対し第１のファイル転送終了メッセージを提供することと、
前記Ｉ／Ｏバスにより前記管理処理システムから、前記第１のイメージファイルが格納されたことを示す第１の応答メッセージを受け取ること
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおいてイメージファイルを格納するシステムおよび方法に関する。
【背景技術】
【０００２】
コンピュータシステムは、通常、内部に組み込まれたソフトウェアを使用して動作するコンポーネントを有する。
このソフトウェアは、一般にファームウェアとして知られており、コンポーネントに電源が投入される、すなわちオンにされるかまたはリセットされるのに応じて、それらコンポーネントによって実行される命令を含む。
ファームウェアは、コンポーネントに対し、それがコンピュータシステムにおいて他のコンポーネントと動作するのを可能にする初期化およびセットアップ機能を実行する場合がある。
ファームウェアはまた、コンポーネントがその主要な機能を実行することができるようにそのコンポーネントのハードウェアと対話する場合もある。
【０００３】
コンポーネントのメーカは、コンポーネントのファームウェアを改良し続けようと努める場合がある。
ファームウェアを改良することにより、ファームウェアの先のバージョンのバグが修正されるか、もしくは拡張されまたは改良された機能が提供される場合がある。
しかしながら、改良が行われると、新たなファームウェアが有効になるためには、それを既存のコンポーネントにインストールする必要がある。
【非特許文献１】ＰＣＩローカルバス仕様、改訂版２．３（PCI Special Interest Group; 5440 SW Westgate Drive, Suite 217, Portland,OR 97221, USA)
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ファームウェアアップグレードをインストールすることは、コンピュータシステムのエンドユーザには難しい作業である可能性がある。
プロセスは複雑化する可能性があり、アップグレードプロセスで発生するエラーが、コンポーネントまたはコンピュータシステム全体さえも動作不能にする可能性がある。
エンドユーザは、通常、コンピュータシステムにおけるファームウェアアップグレードが、それに関連する可能性のあるいかなる問題もないように改良されることを求める。
したがって、コンピュータシステムのエンドユーザに、コンピュータシステムの１つまたは複数のコンポーネントにおいてファームウェアを更新する改良された方法を提供することが望ましい。
【課題を解決するための手段】
【０００５】
例示的な一実施形態によれば、ホストとイメージファイルとを備えるメモリと、ホストを実行するように構成されるプロセッサと、プロセッサに連結された入出力（Ｉ／Ｏ）コントローラと、Ｉ／Ｏコントローラに連結され不揮発性メモリを備える管理処理システムと、を具備するコンピュータシステムが提供される。
ホストは、プロセッサに対しイメージファイルの第１の部分を第１のメモリに格納させるように構成され、ホストは、プロセッサに対しイメージファイルを管理処理システムに提供させるように構成され、管理処理システムは、イメージファイルをホストから受け取ることに応じてイメージファイルを不揮発性メモリに格納するように構成される。
【発明を実施するための最良の形態】
【０００６】
好ましい実施形態の以下の詳細な説明では、その一部を形成し本発明を実施してもよい特定の実施形態を例示として示す添付図面を参照する。
他の実施形態を利用してもよく、本発明の範囲から逸脱することなく構造上または論理上の変更を行ってもよい、ということを理解すべきである。
したがって、以下の詳細な説明を、限定する意味でとるべきではなく、本発明の範囲を、添付の特許請求の範囲によって規定する。
【０００７】
本開示の一態様では、コンピュータシステムは、コンピュータシステムの入出力（Ｉ／Ｏ）バスに連結された管理処理システムのファームウェアをアップグレードするシステムおよび方法を提供する。
本システムおよび方法は、一連のメッセージを使用して、ファームウェアアップグレードを含むイメージファイルをホストアプリケーション（本明細書では「ホスト」とも呼ぶ）と管理処理システムとの間で転送することを企図する。
ホストは、オペレーティングシステムがコンピュータシステムによってブートされる前かまたはその後に、コンピュータシステムによって実行される。
【０００８】
本開示の別の態様では、コンピュータシステムは、コンピュータシステムにおけるマスタとスレーブとの間の通信プロトコルを提供する。
マスタおよびスレーブは、共有メモリとドアベルと呼ばれる一対の記憶場所とを使用して互いの間で情報を転送する。
スレーブに情報を提供するために、マスタは、共有メモリに第１の情報を格納し、その後マスタからスレーブへの（master-to slave）ドアベルを設定する。
スレーブは、マスタからスレーブへのドアベルが設定されたことを検出すると、第１の情報にアクセスする。
スレーブは、共有メモリに第２の情報を格納しスレーブからマスタへのドアベルを設定することにより応答する。
マスタは、スレーブからマスタへのドアベルが設定されたことを検出すると第２の情報にアクセスする。
【０００９】
図１は、管理処理システム２０のファームウェアをアップグレードするシステム８の実施形態を示すブロック図である。
システム８は、矢印３０によって示すように管理処理システム２０と通信するホスト１０を有する。
ホスト１０は、構成ファイル１２と１つまたは複数のイメージファイル１４とを使用して、管理処理システム２０のファームウェアアップグレードを実行するように構成される。
管理処理システム２０は、フラッシュメモリ等の不揮発性メモリ（ＮＶＭ）２２を有する。
【００１０】
ホスト１０は、コンピュータシステムによって実行可能なソフトウェアを備える。
ホスト１０は、コンピュータシステムにより、コンピュータシステムがオペレーティングシステムをブートする前に実行可能であってもその後に実行可能であってもよい。
たとえば、オペレーティングシステムが、拡張可能ファームウェアインタフェース仕様（Extensible Firmware Interface Specification）、バージョン１．１０もしくは任意の先のまたは後のバージョンによって提供されるような拡張可能ファームウェアインタフェース（ＥＦＩ）プロトコルを使用してブートされる前に、ホスト１０をアプリケーションとして実行してもよい。
拡張可能ファームウェアインタフェース仕様、バージョン１．１０は、2200 Mission College Blvd.、Santa Clara、CA 95052 USAのインテル（Intel）から入手可能である。
【００１１】
また、ホスト１０を、中間システムローダ（Intermediate System Loader）（ＩＳＬ）スタンドアロン環境の下でアプリケーションとして実行してもよい。
ＩＳＬは、ＰＡ−ＲＩＳＣコンピュータシステム等のコンピュータシステムにおけるファームウェアの実行後に実行されるプログラムである。
ＩＳＬは、ユーザがシステムのブートアップ特性に関する情報を取得し、これらの特性を変更し、オペレーティングシステム、ＩＳＬベースツールおよびホスト１０等のプログラムをロードし実行することができるようにするコマンドラインインタフェースを実施する。
【００１２】
ホスト１０を、さらに、オペレーティングシステム下のアプリケーションとして実行してもよい。
【００１３】
ホスト１０は、実行されることに応じて、イメージファイル１４が構成ファイル１２の情報に従って管理処理システム２０に提供されるようにする。
構成ファイル１２の情報は、イメージファイル１４、管理処理システム２０にイメージファイル１４を提供する順序、着手されるファームウェアアップグレードに対して存在する必要のある可能性がある条件のセット、または管理処理システム２０のファームウェアをアップグレードするために使用される可能性のある他の情報を特定するリストを含んでもよい。
イメージファイル１４は、各々ファームウェアアップグレードの一部を含む。
その部分を、構成ファイル１２によって指示される順序で管理処理システム２０に転送してもよい。
【００１４】
管理処理システム２０は、イメージファイル１４を受け取ることに応じて、イメージファイル１４がＮＶＭ２２に格納されるようにする。
管理処理システム２０は、管理処理システム２０に含まれるメモリ（図１には示さず）に各イメージファイル１４を受け取ってもよく、ＮＶＭ２２にイメージファイル１４を格納する前に１つまたは複数の中間メモリ（図１には示さず）に各イメージファイル１４を格納してもよい。
【００１５】
構成ファイル１２とイメージファイル１４とを、図１ではホスト１０の一部として示すが、図２に示す実施形態等の他の実施形態では、ホスト１０とは別個に格納可能であってもよい。
【００１６】
図２は、図１に示す実施形態を組み込んだコンピュータシステム１００の実施形態を示すブロック図である。
コンピュータシステム１００は、ハンドヘルド、デスクトップ、ノートブック、モバイル、ワークステーションまたはサーバコンピュータ等、いかなるタイプのコンピュータシステムであってもよい。
コンピュータシステム１００は、プロセッサ１１０ａ〜１１０（ｎ）、チップセット１２０、メモリ１３０、入出力（Ｉ／Ｏ）デバイス１４０のセット、ネットワークデバイス１４２および管理処理システム２０を有する。
【００１７】
コンピュータシステム１００は、１つ以上の任意の数のプロセッサを有し、ここでは、１つのプロセッサ１１０（ｎ）はｎ番目のプロセッサを指す。
本明細書で使用する「１つのプロセッサ１１０」は、プロセッサ１１０ａ〜１１０（ｎ）のうちの任意の１つを指し、「プロセッサ１１０」は、プロセッサ１１０ａ〜１１０（ｎ）のセットを指す。
プロセッサ１１０は、いかなるタイプまたは数のキャッシュを含んでもよく、またはそれらとともに動作可能であってもよい。
【００１８】
コンピュータシステム１００はまた、プロセッサ１１０のうちの１つまたは複数によって実行可能なオペレーティングシステム（図示せず）を含む。
プロセッサ１１０のうちの１つまたは複数は、オンにされるかまたはリセットされることに応じて、オペレーティングシステムがブートされ実行されるようにする。
プロセッサ１１０は、メモリ１３０を使用してオペレーティングシステムおよび他のプログラムからの命令を実行する。
【００１９】
チップセット１２０は、システムコントローラ１２２とＩ／Ｏコントローラ１２４のセットとを有する。
システムコントローラ１２２は、プロセッサ１１０、Ｉ／Ｏデバイス１４０、ネットワークデバイス１４２および管理処理システム２０からの書込みおよび読出しトランザクションそれぞれに応じて、メモリ１３０に情報を格納しかつメモリ１３０から情報を読み出すように構成されるメモリコントローラ１２６を有する。
メモリコントローラ１２６は、メモリ１３０から情報を読み出すことに応じて、メモリ１３０に対しメモリスクラビングまたは他の誤り訂正機能を実行するように構成されたハードウェアおよび／またはソフトウェアを含んでもよい。
【００２０】
Ｉ／Ｏコントローラ１２４は、１つまたは複数のＩ／Ｏデバイス１４０とネットワークデバイス１４２と管理処理システム２０とを管理するように構成された任意のタイプおよび数のコントローラとバスブリッジとを有してもよい。
Ｉ／Ｏコントローラ１２４の例には、ＩＤＥ／ＡＴＡコントローラ、ＳＡＴＡコントローラ、ＰＣＩコントローラ、ＳＣＳＩコントローラ、ＵＳＢコントローラ、ＩＥＥＥ１３９４（ファイヤワイヤ）コントローラ、ＰＣＭＣＩＡコントローラ、パラレルポートコントローラおよびシリアルポートコントローラがある。
一実施形態では、Ｉ／Ｏコントローラ１２４は、システムコントローラ１２２に連結された中間バスと、中間バスに連結されたＰＣＩコントローラと、ＰＣＩコントローラに連結されたＳＣＳＩ、ＩＤＥおよび他のコントローラと、を含む複数のマイクロチップからなる。
本明細書で使用する「１つのＩ／Ｏコントローラ１２４」は、Ｉ／Ｏコントローラ１２４における単一のＩ／Ｏコントローラを指し、「Ｉ／Ｏコントローラ１２４」は、Ｉ／Ｏコントローラ１２４のセットを指す。
【００２１】
メモリ１３０は、ＲＡＭ、ＳＲＡＭ、ＤＲＡＭ、ＳＤＲＡＭおよびＤＤＲ  ＳＤＲＡＭ等、メモリコントローラ１２６によって管理される任意のタイプのメモリを含む。
メモリコントローラ１２６は、システムファームウェア（図示せず）またはオペレーティングシステムからのコマンドに応じて、ハードドライブまたはＣＤ−ＲＯＭドライブ等のＩ／Ｏデバイス１４０かまたはネットワークデバイス１４２を使用して外部メディア１４８からメモリ１３０に情報がロードされるようにしてもよい。
【００２２】
Ｉ／Ｏデバイス１４０は、Ｉ／Ｏコントローラ１２４を使用してコンピュータシステム１００と通信するように構成された任意のタイプおよび数のデバイスを含んでもよい。
各Ｉ／Ｏデバイス１４０は、コンピュータシステム１００の内部であっても外部であってもよく、Ｉ／Ｏコントローラ１２４に連結される、マザーボードの拡張スロットまたはコンピュータシステム１００を収容するシャシのコネクタにつながってもよい。
本明細書で使用する「１つのＩ／Ｏデバイス１４０」はＩ／Ｏデバイス１４０における単一のＩ／Ｏデバイスを指し、「Ｉ／Ｏデバイス１４０」は、Ｉ／Ｏデバイス１４０のセットを指す。
【００２３】
ネットワークデバイス１４２は、コンピュータシステム１００が、コンピュータシステム１００と他のコンピュータシステムおよび記憶デバイス（図示せず）との間で情報を転送することにより、それら他のコンピュータシステムおよび記憶デバイスと通信するのを可能にするように構成される。
【００２４】
管理処理システム２０は、１つのＩ／Ｏコントローラ１２４に連結されたバス１５０を使用してコンピュータシステム１００に連結される。
一実施形態では、１つのＩ／Ｏコントローラ１２４は、ＰＣＩコントローラを備え、バス１５０は、ＰＣＩローカルバス仕様、改訂版２．３もしくは任意の先のまたは後の改訂版に従うＰＣＩバスからなる。
ＰＣＩローカルバス仕様、改訂版２．３は、5440 SW Westgate Drive、Suite 217、Portland、OR 97221、USAのPCI Special Interest Groupから入手可能である。
他の実施形態では、１つのＩ／Ｏコントローラ１２４は別のタイプのＩ／Ｏコントローラからなり、バス１５０は別のタイプのバスからなる。
【００２５】
管理処理システム２０は、管理処理システム２０がコンピュータシステム１００に関する種々の機能を実行するのを可能にするファームウェア（図示せず）を実行するように構成される。
たとえば、管理処理システム２０は、１０／１００ＬＡＮポート、モデムポートまたはＲＳ−２３２コンソールポート等、管理処理システム２０の１つまたは複数のネットワーク接続（図示せず）を使用して、リモートユーザ１６０がコンピュータシステム１００内の情報にアクセスすることができるようにするように構成される。
情報には、ステータス情報またはコンピュータシステム１００に関連する他のタイプの情報が含まれてもよい。
管理処理システム２０はまた、リモートユーザ２０が、コンピュータシステム１００のシステムコンソール（図示せず）にアクセスすることができるようにしてもよい。
システムコンソールを使用して、コンピュータシステム１００のいくつかの設定または機能を制御してもよい。
さらに、管理処理システム２０は、リモートユーザ１６０が外部管理アプリケーションを統合することによりコンピュータシステム１００を管理することができるようにし、コンピュータシステム１００の環境健全性および障害管理を提供し、セキュリティ機能と他のコンピュータシステム（図示せず）との協調能力とを提供してもよい。
【００２６】
図１を参照して上述したように、ホスト１０は、管理処理システム２０のファームウェアが構成ファイル１２とイメージファイル１４とを使用してアップグレードされるようにするように構成される。
図２に示す実施形態では、ホスト１０は、メモリ１３０を使用してプロセッサ１１０のうちの１つまたは複数によって実行可能である。
ホスト１０、構成ファイル１２およびイメージファイル１４を、コンピュータシステム１００によって実行される前にまたはその実行に応じて、ハードディスクドライブ等の内部メディアまたは外部メディア１４８からアクセスしメモリ１３０にコピーしてもよい。
【００２７】
ホスト１０は、実行されることに応じて、複数のメッセージが管理処理システム２０に提供されるようにすることによりイメージファイル１４が管理処理システム２０に提供されるようにする。
メッセージには、ホスト１０の命令に応じて１つまたは複数のプロセッサ１１０によって作成される制御メッセージおよびデータ転送メッセージが含まれる。
１つまたは複数のプロセッサ１１０は、メッセージがシステムコントローラ１２２に提供されるようにし、それによってシステムコントローラ１２２は、管理処理システム２０に連結された１つのＩ／Ｏコントローラ１２４にメッセージを提供する。
そして、その１つのＩ／Ｏコントローラ１２４は、管理処理システム２０にメッセージを提供する。
【００２８】
管理処理システム２０はまた、その１つのＩ／Ｏコントローラ１２４にメッセージを提供することにより、ホスト１０にメッセージを提供する。
その１つのＩ／Ｏコントローラ１２４は、システムコントローラ１２２にメッセージを提供し、システムコントローラ１２２は、それによって、プロセッサ１１０および／またはメモリ１３０によりホスト１０にメッセージを提供する。
【００２９】
図３は、メッセージ３００の一実施形態を示すブロック図である。
メッセージ３００は、ヘッダ３１０と本文３１６とを含む。
ヘッダ３１０は、タイプ指示子３１２とＩＤ指示子３１４とを含む。
【００３０】
タイプ指示子３１２は、メッセージ３００が制御メッセージであるかデータ転送メッセージであるかを指示する。
ＩＤ指示子３１４は、メッセージ３００のＩＤを指示する。
制御メッセージは、アップグレード開始ＩＤを含むアップグレード開始メッセージ、アップグレード終了ＩＤを含むアップグレード終了メッセージ、ファイル転送開始ＩＤを含むファイル転送開始メッセージ、ファイル転送終了ＩＤを含む転送終了メッセージ、または応答ＩＤを含む応答メッセージであってもよい。
データ転送メッセージは、送信データＩＤを含むデータ送信メッセージであってもよい。
【００３１】
アップグレード開始メッセージは、ホスト１０がアップグレードプロセスを開始していることを指示するために、ホスト１０から管理処理システム２０に提供される。
アップグレード開始メッセージは、ダウンロードおよびフラッシュプログラム、ダウンロードおよび比較またはフラッシュのないダウンロードプログラム等、管理処理システム２０が行うべき動作を指示するアップグレードモード指示子を含む。
アップグレード終了メッセージは、アップグレードプロセスが完了したことを指示するために、ホスト１０から管理処理システム２０に提供される。
【００３２】
ファイル転送開始メッセージは、イメージファイル１４がホスト１０から管理処理システム２０に提供されようとしていることを指示するために、ホスト１０から管理処理システム２０に提供される。
ファイル転送開始メッセージは、セクション、フラッシュアドレス、ファイルサイズ、チェックサムおよび改訂番号等のパラメータを含む。
転送終了メッセージは、イメージファイル１４がホスト１０から管理処理システム２０に提供されたことを指示するために、ホスト１０から管理処理システム２０に提供される。
【００３３】
応答メッセージは、予測されたメッセージが受け取られたことを指示するために、ホスト１０から管理処理システム２０に提供されるかまたは管理処理システム２０からホスト１０に提供される。
応答メッセージは、先のメッセージよってもたらされた動作の結果、たとえば、格納された画像部分、検出されたエラー等を示す完了コードを含む。
【００３４】
データ転送メッセージは、イメージファイル１４の一部をホスト１０から管理処理システム２０に提供するために、ホスト１０から管理処理システム２０に提供される。
データ送信メッセージは、イメージファイル１４の一部とともにデータ送信メッセージの長さ等のパラメータ、チェックサムおよび順序指示子を含む。
【００３５】
図４は、管理処理システム２０に情報を転送する方法の一実施形態を示すフローチャートである。
図４に示す方法を、後にさらに詳細に説明するホスト１０によって実施してもよい。
【００３６】
図４において、ブロック４０２に示すようにアップグレードプロセスを開始する。
ホスト１０は、アップグレード開始メッセージが生成され管理処理システム２０に提供されるようにすることによってアップグレードプロセスを開始する。
ブロック４０４に示すように、ファイル転送を開始する。
ホスト１０は、ファイル転送開始メッセージが生成され管理処理システム２０に提供されるようにすることにより、ファイル転送を開始する。
ブロック４０６に示すように、イメージファイルの一部分を管理処理システム２０に提供する。
ホスト１０は、その部分を含むデータ送信メッセージが生成され管理処理システム２０に提供されるようにすることによりその部分を提供する。
【００３７】
ブロック４０８に示すように、イメージファイル転送が完了したか否かを判断する。
ホスト１０は、イメージファイルのすべての部分が管理処理システム２０に提供されたことを検出することに応じて、イメージファイル転送が完了したと判断する。
イメージファイル転送が完了していない場合、イメージファイル転送が完了するまでブロック４０６および４０８の機能を繰り返す。
イメージファイル転送が完了した後、ブロック４１０に示すようにファイル転送を終了する。
ホスト１０は、ファイル転送終了メッセージが生成され管理処理システム２０に提供されるようにすることによりファイル転送を終了する。
【００３８】
ブロック４１２に示すように、管理処理システム２０から応答が受け取られたか否かを判断する。
ホスト１０は、管理処理システム２０から応答メッセージを受け取ることに応じて応答が受け取られたと判断する。
応答が受け取られていない場合、タイムアウト状態が発生するまでブロック４１２の判断を周期的に繰り返す。
【００３９】
応答が受け取られると、ブロック４１４に示すように、転送すべき別のイメージファイルがあるか否かを判断する。
ホスト１０は、構成ファイル１２を使用して転送すべき別のイメージファイルがあるか否かを判断する。
転送すべき別のイメージファイルがある場合、ブロック４０４〜４１４の機能を繰り返す。
転送すべき別のイメージファイルがない場合、ブロック４１６に示すようにアップグレードプロセスを終了する。
ホスト１０は、アップグレード終了メッセージが生成され管理処理システム２０に提供されるようにすることにより、アップグレードプロセスを終了する。
【００４０】
図５は、ホスト１０から情報を受け取る方法の一実施形態を示すフローチャートである。
図５に示す方法を、後にさらに詳細に説明するように管理処理システム２０によって実施してもよい。
【００４１】
図５において、ブロック５０２に示すようにアップグレードプロセスが開始したか否かを判断する。
管理処理システム２０は、ホスト１０からアップグレード開始メッセージを受け取ることに応じて、アップグレードプロセスが開始したと判断する。
アップグレードプロセスが開始していない場合、ブロック５０２の機能を後に繰り返す。
アップグレードプロセスが開始した場合、ブロック５０４に示すように応答を提供する。
管理処理システム２０は、応答メッセージを生成しその応答メッセージをホスト１０に提供することにより、応答を提供する。
【００４２】
ブロック５０６に示すように、ファイル転送が開始したか否かを判断する。
管理処理システム２０は、ホスト１０からファイル転送開始メッセージを受け取ることに応じてファイル転送が開始したと判断する。
ファイル転送が開始していない場合、タイムアウト状態が発生するまでブロック５０６の機能を周期的に繰り返す。
ファイル転送が開始した場合、ブロック５０８に示すように応答を提供する。
管理処理システム２０は、応答メッセージを生成しその応答メッセージをホスト１０に提供することにより応答を提供する。
【００４３】
ブロック５１０に示すように、イメージファイルの一部分が受け取られたか否かを判断する。
管理処理システム２０は、ホスト１０からのその部分を含むデータ送信メッセージを受け取ることに応じてイメージファイルの一部分が受け取られたと判断する。
イメージファイルの一部分が受け取られていない場合、タイムアウト状態が発生するまで、ブロック５１０の機能を周期的に繰り返す。
イメージファイルの一部分が受け取られた場合、ブロック５１２に示すようにその部分を格納する。
管理処理システム２０は、管理処理システム２０に含まれるメモリにその部分を格納する。
ブロック５１４に示すように、応答を提供する。
管理処理システム２０は、応答メッセージを生成しその応答メッセージをホスト１０に提供することにより、応答を提供する。
【００４４】
ブロック５１６に示すように、ファイル転送が終了したか否かを判断する。
管理処理システム２０は、ホスト１０からファイル転送終了メッセージを受け取ることに応じてファイル転送が終了したと判断する。
ファイル転送が終了していない場合、後にブロック５１０の機能を繰り返す。
ファイル転送が終了した場合、ブロック５１８に示すようにイメージファイルを不揮発性メモリ（ＮＶＭ）に格納する。
ＮＶＭ２２がフラッシュメモリからなる実施形態では、管理処理システム２０は、イメージファイルのフラッシュプログラミングによりＮＶＭ２２にイメージファイルを格納する。
管理処理システム２０は、イメージファイルを格納する前にホスト１０によって提供されたチェックサムを検証する。
ブロック５２０に示すように応答を提供する。
管理処理システム２０は、応答メッセージを生成しその応答メッセージをホスト１０に提供することによって応答を提供する。
【００４５】
ブロック５２２に示すように、ファイル転送が開始したか否かを判断する。
管理処理システム２０は、ホスト１０からファイル転送開始メッセージを受け取ることに応じてファイル転送が開始したと判断する。
ファイル転送が開始した場合、ブロック５０８の機能を繰り返す。
ファイル転送が開始していない場合、ブロック５２４に示すようにアップグレードプロセスが終了したか否かを判断する。
管理処理システム２０は、ホスト１０からアップグレード終了メッセージを受け取ることに応じてアップグレードプロセスが終了したと判断する。
アップグレードプロセスが終了していない場合、タイムアウト状態が発生するまでブロック５２４の機能を周期的に繰り返す。
アップグレードプロセスが終了した場合、本方法は終了する。
【００４６】
図４および図５の実施形態においてタイムアウトが発生した場合、アップグレードプロセスをキャンセルする。
ホスト１０は、後にアップグレードプロセスを再試行してもよい。
【００４７】
図６は、マスタ６１０とスレーブ６２０との間で情報を転送し受け取るシステム６００の実施形態を示すブロック図である。
システム６００は、マスタからスレーブへのドアベル６２２と、共有メモリ６２４と、スレーブからマスタへの（slave -to- master）ドアベル６２６と、を含む。
マスタからスレーブへのドアベル６２２とスレーブからマスタへのドアベル６２６とは、各々、記憶場所、たとえばマスタ６１０およびスレーブ６２０それぞれによって設定されるように構成されるレジスタを備える。
【００４８】
マスタ６１０は、マスタからスレーブへのドアベル６２２を設定し、共有メモリ６２４に対する読出しおよび書込みを行い、スレーブからマスタへのドアベル６２６を読み出すように構成される。
スレーブ６２０は、マスタからスレーブへのドアベル６２２を読み出し、共有メモリ６２４に対する読出しおよび書込みを行い、スレーブからマスタへのドアベル６２６を設定するように構成される。
マスタ６１０の動作については図７を参照して説明し、スレーブ６２０の動作については図８を参照して説明する。
【００４９】
図７は、スレーブ６２０と通信する方法の一実施形態を示すフローチャートである。
図７において、ブロック７００に示すように共有メモリ６２４に書込みを行う。
ブロック７０２に示すように、マスタからスレーブへのドアベル６２２を設定する。
マスタ６１０は、マスタからスレーブへのドアベル６２２に、既知の値を格納することによりマスタからスレーブへのドアベル６２２が設定されるようにしてもよい。
【００５０】
ブロック７０４に示すように、スレーブからマスタへのドアベル６２６をポーリングする。
マスタ６１０は、スレーブからマスタへのドアベル６２６に周期的にアクセスすることにより、スレーブからマスタへのドアベル６２６がポーリングされるようにしてもよい。
ブロック７０６に示すように、スレーブからマスタへのドアベル６２６が設定されているか否かを判断する。
スレーブからマスタへのドアベル６２６が設定されていない場合、後にブロック７０４および７０６の機能を繰り返す。
スレーブからマスタへのドアベル６２６が設定されている場合、ブロック７０８に示すように共有メモリ６２４から読出しを行う。
【００５１】
図８は、マスタ６１０と通信する方法の一実施形態を示すフローチャートである。
図８において、ブロック８００に示すようにマスタからスレーブへのドアベル６２２をポーリングする。
スレーブ６２０は、マスタからスレーブへのドアベル６２２に、周期的にアクセスすることにより、マスタからスレーブへのドアベル６２２がポーリングされるようにしてもよい。
ブロック８０２に示すように、マスタからスレーブへのドアベル６２２が設定されているか否かを判断する。
マスタからスレーブへのドアベル６２２が設定されていない場合、後にブロック８００および８０２の機能を繰り返す。
マスタからスレーブへのドアベル６２２が設定されている場合、ブロック８０４に示すように共有メモリ６２４から読出しを行う。
【００５２】
ブロック８０６に示すように、共有メモリ６２４に書込みを行う。
ブロック８０８に示すように、スレーブからマスタへのドアベル６２６を設定する。
スレーブ６２０は、スレーブからマスタへのドアベル６２６に既知の値を格納することにより、スレーブからマスタへのドアベル６２６が設定されるようにしてもよい。
【００５３】
図９は、図６に示す実施形態を図１に示す実施形態に組み込んだシステム９００の実施形態を示すブロック図である。
図９において、管理処理システム２０は、マスタからスレーブへのドアベル６２２と、共有メモリ６２４と、スレーブからマスタへのドアベル６２６と、を有する。
さらに、ホスト１０は、上述したようにマスタ６１０として動作し、管理処理システム２０は、上述したようにスレーブ６２０として動作する。
【００５４】
一実施形態では、矢印３０はＰＣＩバスを表す。
この実施形態では、マスタ６１０としての機能を果たすホスト１０は、ＰＣＩディスカバリスキャンを使用して、マスタからスレーブへのドアベル６２２のアドレスと、共有メモリ６２４のアドレスおよびサイズと、スレーブからマスタへのドアベル６２６のアドレスと、を特定する。
共有メモリ６２４は、ＰＣＩアドレス空間にマッピングされる管理処理システム２０の主メモリ（図示せず）の一部を含んでもよい。
管理処理システム２０は、共有メモリ６２４のサイズを規定してもよい。
【００５５】
再び図４および図５で説明した機能に戻ると、ホスト１０と管理処理システム２０とは、図９の実施形態において、イメージファイル１４の一部を含むデータ送信メッセージを含むメッセージが共有メモリ６２４に格納されるようにし、マスタからスレーブへのドアベル６２２とスレーブからマスタへのドアベル６２６とをそれぞれ設定することにより、通信する。
管理処理システム２０のファームウェアをアップグレードするために、管理処理システム２０は、提供されたイメージファイル１４の各々をＮＶＭ２２に格納する。
【００５６】
他の実施形態では、矢印３０は、別のタイプのバスまたは通信リンクを表してもよい。
【００５７】
本明細書では特定の実施形態を例示し説明したが、当業者には、示し説明した特定の実施形態の代わりに、本発明の範囲から逸脱することなく種々の代替および／または等価実施態様を用いてもよい、ということが理解されよう。
本出願は、本明細書で論じた特定の実施形態のあらゆる適応または変形を包含するように意図されている。
したがって、本発明は、特許請求の範囲とその等価物とによってのみ限定される、ということが意図されている。
【図面の簡単な説明】
【００５８】
【図１】管理処理システムのファームウェアをアップグレードするシステムの一実施形態を示すブロック図である。
【図２】図１に示す実施形態を組み込んだコンピュータシステムの一実施形態を示すブロック図である。
【図３】メッセージの一実施形態を示すブロック図である。
【図４】管理処理システムに情報を転送する方法の一実施形態を示すフローチャートである。
【図５】ホストから情報を受け取る方法の一実施形態を示すフローチャートである。
【図６】マスタとスレーブとの間で情報を転送し受け取るシステムの一実施形態を示すブロック図である。
【図７】スレーブと通信する方法の一実施形態を示すフローチャートである。
【図８】マスタと通信する方法の一実施形態を示すフローチャートである。
【図９】図６に示す実施形態を組み込んだシステムの一実施形態を示すブロック図である。
【符号の説明】
【００５９】
１０・・・ホスト，
１２・・・構成，
１４・・・イメージファイル，
２０・・・管理処理システム，
２２・・・不揮発性メモリ，
１００・・・コンピュータシステム，
１１０・・・プロセッサ，
１２０・・・チップセット，
１２２・・・システムコントローラ，
１２４・・・Ｉ／Ｏコントローラ，
１２６・・・メモリコントローラ，
１３０・・・メモリ，
１４０・・・Ｉ／Ｏデバイス，
１４２・・・ネットワークデバイス，
１４８・・・外部メディア，
１６０・・・リモートユーザ，
【図１】
2005182812.tif 000003
【図２】
2005182812.tif 000004
【図３】
2005182812.tif 000005
【図４】
2005182812.tif 000006
【図５】
2005182812.tif 000007
【図６】
2005182812.tif 000008
【図７】
2005182812.tif 000009
【図８】
2005182812.tif 000010
【図９】
2005182812.tif 000011