(57)【要約】【課題】ファームウェア更新に必要な、フラッシュＲＯＭに割り当てるメモリアドレスを切り替えるためのハードウェアがサポートされていない構成でも、ファームウェアの更新が可能なコンピュータ及びそのファームウェアの更新方法を提供する。【解決手段】ファームウェアが格納されるプライマリＲＯＭ及びセカンダリＲＯＭを備え、ファームウェアの更新時、外部から供給された新しいファームウェアをセカンダリＲＯＭに一時的に書き込み、セカンダリＲＯＭに対する新しいファームウェアの書き込みが終了すると、セカンダリＲＯＭで保持しているファームウェアをプライマリＲＯＭに複製することで、プライマリＲＯＭ及びセカンダリＲＯＭに割り当てるメモリアドレスを切り替える。【選択図】図１
2008108048.tif 000002
【特許請求の範囲】
【請求項１】
プログラムにしたがって処理を実行するプロセッサと、
前記プロセッサが実行するファームウェアが格納される、書き換え可能な不揮発性メモリであるプライマリＲＯＭと、
前記ファームウェアの更新時、外部から供給される新しいファームウェアを一時的に保持する、書き換え可能な不揮発性メモリであるセカンダリＲＯＭと、
を有し、
前記プロセッサは、
前記ファームウェアの更新時、前記セカンダリＲＯＭに対する新しいファームウェアの書き込みが終了すると、前記セカンダリＲＯＭで保持しているファームウェアを前記プライマリＲＯＭに複製するコンピュータ。
【請求項２】
前記プライマリＲＯＭ及び前記セカンダリＲＯＭは、
コンピュータの電源投入時または前記プロセッサのリセット時に前記プロセッサで最初に実行されるプログラムが格納されるブートローダ部及び前記コンピュータに搭載された各種のハードウェアを実際に制御するためのプログラムであるファームウェア本体が格納される本体部を備え、
前記プロセッサは、
前記ファームウェアの更新時、前記セカンダリＲＯＭの本体部で保持しているファームウェア本体のみ、前記プライマリＲＯＭの本体部に複製する請求項１記載のコンピュータ。
【請求項３】
前記ファームウェアの更新時、前記セカンダリＲＯＭで保持しているファームウェアを前記プライマリＲＯＭに複製するためのプログラムを、前記ブートローダ部に備えた請求項２記載のコンピュータ。
【請求項４】
ファームウェアが格納される、書き換え可能な不揮発性メモリであるプライマリＲＯＭ及びセカンダリＲＯＭを備えたコンピュータの、前記ファームウェアを更新するための更新方法であって、
プロセッサが、
前記ファームウェアの更新時、外部から供給される新しいファームウェアを前記セカンダリＲＯＭに一時的に書き込み、
前記セカンダリＲＯＭに対する前記新しいファームウェアの書き込みが終了すると、前記セカンダリＲＯＭで保持しているファームウェアを前記プライマリＲＯＭに複製し、
前記プライマリＲＯＭに格納されたファームウェアにしたがって処理を実行するファームウェアの更新方法。
【請求項５】
前記プライマリＲＯＭ及び前記セカンダリＲＯＭに、
前記コンピュータの電源投入時または前記プロセッサのリセット時に前記プロセッサで最初に実行されるプログラムが格納されるブートローダ部、及び前記コンピュータに搭載された各種のハードウェアを実際に制御するためのプログラムであるファームウェア本体が格納される本体部を備え、
前記プロセッサが、
前記ファームウェアの更新時、前記セカンダリＲＯＭの本体部で保持しているファームウェア本体のみ、前記プライマリＲＯＭの本体部に複製する請求項４記載のファームウェアの更新方法。
【請求項６】
前記セカンダリＲＯＭで保持しているファームウェアを前記プライマリＲＯＭに複製するためのプログラムを、前記ブートローダ部で保持する請求項５記載のファームウェアの更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はファームウェアが組み込まれたコンピュータ及びそのファームウェアの更新方法に関する。
【背景技術】
【０００２】
例えば基幹系システムで利用されるコンピュータであるサーバ装置には、搭載された各種のハードウェアを制御するためのプログラムであるファームウェアが組み込まれている。ファームウェアは、書き換え可能な不揮発性メモリであるフラッシュＲＯＭ（フラッシュメモリ）等に格納され、サーバ装置の電源が切断されている状態でもその内容が保持される。
【０００３】
通常、ファームウェアが格納されたフラッシュＲＯＭにはサーバ装置で動作するオペレーティングシステム（ＯＳ： Operation System）からアクセスできない。そのため、サーバ装置のユーザは、オペレーティングシステムを利用してフラッシュＲＯＭに格納されたファームウェアを書き換えることはできない。ファームウェアの書き換えは危険を伴う作業であり、書き換え作業に失敗すると、サーバ装置が起動不能になることがある。
【０００４】
そこで、上述したサーバ装置等では、ファームウェアの更新作業による起動不能を回避するために、ファームウェアが格納されるフラッシュＲＯＭを複数備えることで可用性の向上を図っている。このような構成では、電源投入時やプロセッサ（ＣＰＵ: Central Processing Unit）のリセット時に、複数のフラッシュＲＯＭのうちのいずれか１つに格納されたファームウェアを読み出して動作する。そして、ファームウェアを更新する場合は、例えばネットワークを介して外部から供給される新しいファームウェアを他のフラッシュＲＯＭへ格納し、さらに電源投入時やリセット時に当該フラッシュＲＯＭへアクセスするように、専用のハードウェアにより各フラッシュＲＯＭへ割り当てるメモリアドレスを切り替えている。
【０００５】
図３は従来のサーバ装置の構成を示すブロック図である。
【０００６】
図３に示すように、従来のサーバ装置は、プロセッサ３０１と、ファームウェアが格納されるプライマリＲＯＭ３０２及びセカンダリＲＯＭ３０３と、プライマリＲＯＭ３０２及びセカンダリＲＯＭ３０３に対するメモリアドレスの割り当てを切り替えるための切替え制御回路３０４とを備えた構成である。なお、図３に示すサーバ装置は、ファームウェアが格納されるフラッシュＲＯＭとして、２つのフラッシュＲＯＭ（プライマリＲＯＭ３０２及びセカンダリＲＯＭ３０３）を備えた構成例を示している。プライマリＲＯＭ３０２及びセカンダリＲＯＭ３０３とプロセッサ３０１とは、例えばバス等を介して接続される。
【０００７】
図３に示す従来のサーバ装置では、切替え制御回路３０４によりプライマリＲＯＭ３０２またはセカンダリＲＯＭ３０３のいずれか一方に０ＭＢアドレスを割り当てることで、当該フラッシュＲＯＭに格納されたファームウェアで動作する。０ＭＢアドレスとは、サーバ装置の電源投入時あるいはプロセッサ３０１のリセット時に、プロセッサ３０１が最初にアクセスするメモリアドレスを指す。
【０００８】
例えばプライマリＲＯＭ３０２及びセカンダリＲＯＭ３０３のメモリ容量を２Ｍ（mega）バイトとした場合、サーバ装置の電源投入時あるいはプロセッサ３０１のリセット時、プロセッサ３０１は、最初に０ＭＢアドレスから２Ｍバイトのメモリ領域へアクセスすることで、０ＭＢアドレスが割り当てられたプライマリＲＯＭ３０２またはセカンダリＲＯＭ３０３に格納されたファームウェアを読み出し、該ファームウェアによる処理を実行する。
【０００９】
例えば、サーバ装置がプライマリＲＯＭ３０２に格納されたファームウェアで動作している場合、切替え制御回路３０４はプライマリＲＯＭ３０２に対して０ＭＢアドレスを割り当てる。
【００１０】
一方、ファームウェアを更新する場合、プロセッサ３０１はネットワーク等を介して外部から供給される新しいファームウェアをセカンダリＲＯＭ３０３へ格納し、切替え制御回路３０４を用いて０ＭＢアドレスの割り当てをプライマリＲＯＭ３０２からセカンダリＲＯＭ３０３へ切り替える。すなわち、切替え制御回路３０４はセカンダリＲＯＭ３０３に対して０ＭＢアドレスを割り当てる。このとき、切替え制御回路３０４はプライマリＲＯＭ３０２及びセカンダリＲＯＭ３０３に対して同時に０ＭＢアドレスを割り当てることはない。
【００１１】
その後、プロセッサ３０１をリセットすることで、プロセッサ３０１は、セカンダリＲＯＭ３０３に格納されたファームウェアを読み出し、該ファームウェアによる処理を実行する。
【００１２】
なお、特許文献１には、ホストコンピュータから受信したプログラムやデータを格納するための複数のバンクから成る不揮発性メモリと、該受信したプログラムやデータを格納する不揮発性メモリのバンクを切り替えるためのバンク切替え制御部とを備えた構成が記載されている。
【００１３】
また、特許文献２には、コンピュータのＢＩＯＳが格納される２つのフラッシュＲＯＭと、コンピュータの起動時に２つのフラッシュＲＯＭに格納されたＢＩＯＳのいずれか一方を選択するＢＩＯＳ選択モジュールとを備えた構成が記載されている。
【００１４】
特許文献１及び特許文献２に記載の構成では、いずれもハードウェア（バンク切替え制御部やＢＩＯＳ選択モジュール）により装置起動時にプロセッサがアクセスするメモリ領域を切替えている。
【特許文献１】特開２００１−３３４０５６号公報
【特許文献２】特開２００３−３１６５８２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
上述したように従来のサーバ装置では、ファームウェアを更新するためにファームウェアが格納される複数のフラッシュＲＯＭに割り当てるメモリアドレスを切り替えるためのハードウェアが必要である。
【００１６】
しかしながら、コスト削減等を理由に、このようなハードウェアがサポートされていないサーバ装置もある。その場合、サーバ装置は新しいファームウェアで動作することができない。
【００１７】
本発明は上記したような従来の技術が有する問題点を解決するためになされたものであり、ファームウェア更新に必要な、フラッシュＲＯＭに割り当てるメモリアドレスを切り替えるためのハードウェアがサポートされていない構成でも、ファームウェアの更新が可能なコンピュータ及びそのファームウェアの更新方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成するため本発明のコンピュータは、プログラムにしたがって処理を実行するプロセッサと、
前記プロセッサが実行するファームウェアが格納される、書き換え可能な不揮発性メモリであるプライマリＲＯＭと、
前記ファームウェアの更新時、外部から供給される新しいファームウェアを一時的に保持する、書き換え可能な不揮発性メモリであるセカンダリＲＯＭと、
を有し、
前記プロセッサは、
前記ファームウェアの更新時、前記セカンダリＲＯＭに対する新しいファームウェアの書き込みが終了すると、前記セカンダリＲＯＭで保持しているファームウェアを前記プライマリＲＯＭに複製する構成である。
【００１９】
一方、本発明のファームウェアの更新方法は、ファームウェアが格納される、書き換え可能な不揮発性メモリであるプライマリＲＯＭ及びセカンダリＲＯＭを備えたコンピュータの、前記ファームウェアを更新するための更新方法であって、
プロセッサが、
前記ファームウェアの更新時、外部から供給される新しいファームウェアを前記セカンダリＲＯＭに一時的に書き込み、
前記セカンダリＲＯＭに対する前記新しいファームウェアの書き込みが終了すると、前記セカンダリＲＯＭで保持しているファームウェアを前記プライマリＲＯＭに複製し、
前記プライマリＲＯＭに格納されたファームウェアにしたがって処理を実行する方法である。
【００２０】
上記のようなコンピュータ及びそのファームウェアの更新方法では、ファームウェアが格納されるプライマリＲＯＭ及びセカンダリＲＯＭを備え、ファームウェアの更新時、外部から供給された新しいファームウェアをセカンダリＲＯＭに一時的に書き込み、セカンダリＲＯＭに対する新しいファームウェアの書き込みが終了すると、セカンダリＲＯＭで保持しているファームウェアをプライマリＲＯＭに複製することで、プライマリＲＯＭ及びセカンダリＲＯＭに割り当てるメモリアドレスを切り替えるためのハードウェアがサポートされていない構成でも、ファームウェアを更新することが可能になる。
【００２１】
また、外部から供給される新しいファームウェアの最初の保存先がセカンダリＲＯＭであるため、ネットワーク等を介して新しいファームウェアが外部から供給される場合、保存中にネットワーク障害等が発生してもプライマリＲＯＭの内容には全く影響しない。
【発明の効果】
【００２２】
本発明によれば、プライマリＲＯＭ及びセカンダリＲＯＭに割り当てるメモリアドレスを切り替えるためのハードウェアがサポートされていない構成でも、ファームウェアを更新することが可能になる。
【００２３】
また、外部から供給される新しいファームウェアの最初の保存先がセカンダリＲＯＭであるため、ネットワーク等を介して新しいファームウェアが外部から供給される場合、保存中にネットワーク障害等が発生してもプライマリＲＯＭの内容には全く影響しない。したがって、ネットワーク障害等に対するファームウェアの更新作業の可用性が向上する。
【発明を実施するための最良の形態】
【００２４】
次に本発明について図面を参照して説明する。
【００２５】
なお、以下では基幹系システムで利用されるコンピュータであるサーバ装置を例にして説明するが、本発明はファームウェアが格納される２つのフラッシュＲＯＭを備え、それらに割り当てるメモリアドレスを切替えるためのハードウェアを持たない構成であれば、パーソナルコンピュータ、携帯電話機あるいはＰＤＡ（Personal Digital Assistants）のようにプロセッサを備える各種の装置にも適用可能である。
【００２６】
図１は本発明のサーバ装置の一構成例を示すブロック図である。
【００２７】
図１に示すように、本発明のサーバ装置は、プロセッサ１０１と、ファームウェアが格納されるプライマリＲＯＭ１０２及びセカンダリＲＯＭ１０３とを備えた構成である。プライマリＲＯＭ１０２及びセカンダリＲＯＭ１０３にはフラッシュＲＯＭが用いられる。本発明のサーバ装置は、図３に示したプライマリＲＯＭ３０２及びセカンダリＲＯＭ３０３へ割り当てるメモリアドレスを切り替えるための切替え制御回路３０４を持たない構成である。プライマリＲＯＭ１０２及びセカンダリＲＯＭ１０３とプロセッサ１０１とは、例えばバス等を介して接続される。
【００２８】
本発明のサーバ装置では、電源投入時あるいはプロセッサ１０１のリセット時、プロセッサ１０１は常にプライマリＲＯＭ１０２へ最初にアクセスすることでプライマリＲＯＭ１０２に格納されたファームウェアで動作する。そして、ファームウェアを更新する場合、新しいファームウェアをセカンダリＲＯＭ１０３へ一端格納し、その後、該ファームウェアをプライマリＲＯＭ１０２へ複製する。すなわち、本発明のサーバ装置では、セカンダリＲＯＭ１０３を新しいファームウェアを一時的に保存するためのバッファとして用いる。
【００２９】
図１に示すように、プライマリＲＯＭ１０２はブートローダ部１０４及び本体部１０５を備え、セカンダリＲＯＭ１０３はブートローダ部１０６及び本体部１０７を備えている。
【００３０】
プライマリＲＯＭ１０２が備えるブートローダ部１０４及びセカンダリＲＯＭ１０３が備えるブートローダ部１０６には、サーバ装置の電源投入時あるいはプロセッサ１０１のリセット時に最初に実行される命令コード群（プログラム）が格納される。ブートローダ部１０４及び１０６のプログラムは、例えば工場出荷時に書き込まれ、その後は書き換えられることがない。なお、ブートローダ部１０４及び１０６には、後述するファームウェアの更新処理の違いに応じて異なるプログラムを書き込んでもよく、それらの更新処理を全て実現する同一のプログラムを書き込んでもよい。
【００３１】
プライマリＲＯＭ１０２が備える本体部１０５及びセカンダリＲＯＭ１０３が備える本体部１０７には、サーバ装置が備える各種のハードウェア（不図示）を実際に制御するためのプログラムであるファームウェア本体が格納される。ここでは、これらブートローダ部１０４及び本体部１０５に格納されるプログラムを合わせてファームウェアと呼ぶ。同様にブートローダ部１０６及び本体部１０７に格納されるプログラムも合わせてファームウェアと呼ぶ。
【００３２】
例えばプライマリＲＯＭ１０２及びセカンダリＲＯＭ１０３のメモリ容量を２Ｍバイトとしたとき、本発明ではプライマリＲＯＭ１０２に上述した０ＭＢアドレスが予め割り当てられ、セカンダリＲＯＭ１０３に４ＭＢアドレスが予め割り当てられる。ここで、セカンダリＲＯＭ１０３に割り当てられる４ＭＢアドレスとは、０ＭＢアドレスから４Ｍバイトだけ離れたメモリアドレスを指す。セカンダリＲＯＭ１０３に割り当てるメモリアドレスは４ＭＢアドレスである必要はなく、プライマリＲＯＭ１０２に割り当てるメモリ領域から十分に離れていればどのような値でもよい。
【００３３】
上述したように、本発明のサーバ装置は、電源投入時あるいはリセット時にプロセッサ１０１が０ＭＢアドレスから２Ｍバイトのメモリ領域へアクセスすることで、常にプライマリＲＯＭ１０２に格納されたファームウェアで動作する。セカンダリＲＯＭ１０３には、例えば４ＭＢアドレスが割り当てられているため、セカンダリＲＯＭ１０３で保持されたファームウェアによりプロセッサ１０１が動作することはない。
【００３４】
次に図１に示した本発明のサーバ装置の動作について図２を用いて説明する。
【００３５】
図２は本発明のサーバ装置によるファームウェアの更新処理を示すフローチャートである。
【００３６】
上述したように本発明のサーバ装置では、プライマリＲＯＭ１０２に０ＭＢアドレスが割り当てられているため、サーバ装置の電源投入時またはプロセッサ１０１のリセット時、プロセッサ１０１は、最初にプライマリＲＯＭ１０２のブートローダ部１０４へアクセスし、該ブートローダ部１０４に格納されたプログラムにしたがって動作する。
【００３７】
プロセッサ１０１は、通常動作時、プライマリＲＯＭ１０２のブートローダ部１０４に格納されたプログラムにしたがって本体部１０５からファームウェア本体を読み出し、読み出したファームウェア本体にしたがって処理を実行する。このとき、プロセッサ１０１はセカンダリＲＯＭ１０３に格納されたファームウェアでは動作しない。
【００３８】
プライマリＲＯＭ１０２に格納されたファームウェアを更新する場合、プロセッサ１０１は、プライマリＲＯＭ１０２の本体部１０５に格納されたファームウェア本体による機能を用いて、例えばネットワーク等を介して外部から供給された新しいファームウェアをセカンダリＲＯＭ１０３へ書き込む（ステップＳ１）。このとき、プロセッサ１０１は、セカンダリＲＯＭ１０３の本体部１０７の内容のみ書き換え、ブートローダ部１０６の内容は書き換えない。なお、新しいファームウェア本体は、それまで実行している既存のファームウェア本体とバージョンが異なるものとする。
【００３９】
プロセッサ１０１は、セカンダリＲＯＭ１０３の本体部１０７に対して新しいファームウェアの書き込みが完了すると、プライマリＲＯＭ１０２の本体部１０５に格納されたファームウェア本体による機能を用いてソフトリセットを実行する（ステップＳ２）。
【００４０】
ソフトリセット後、プロセッサ１０１は、プライマリＲＯＭ１０２のブートローダ部１０４に格納されたプログラムを実行し（ステップＳ３）、プライマリＲＯＭ１０２の本体部１０５に格納されたファームウェア本体とセカンダリＲＯＭ１０３の本体部１０７に格納されたファームウェア本体のバージョンを比較する（ステップＳ４）。
【００４１】
ここでは、２つのファームウェア本体のバージョンが一致しないため、プロセッサ１０１は、セカンダリＲＯＭ１０３のブートローダ部１０６に格納されたプログラムを読み出し（ステップＳ５）、該プログラムにしたがってセカンダリＲＯＭ１０３の本体部１０７の内容をプライマリＲＯＭ１０２の本体部１０５へ複製する（ステップＳ６）。
【００４２】
プロセッサ１０１は、ファームウェアの複製作業が終了すると、プライマリＲＯＭ１０２の本体部１０５に格納されたファームウェア本体による機能を用いてソフトリセットを実行する（ステップＳ２）。
【００４３】
ソフトリセット後、プロセッサ１０１は、プライマリＲＯＭ１０２のブートローダ部１０４に格納されたプログラムを再び実行し（ステップＳ３）、プライマリＲＯＭ１０２の本体部１０４に格納されたファームウェア本体とセカンダリＲＯＭ１０３の本体部１０７に格納されたファームウェア本体のバージョンを比較する（ステップＳ４）。
【００４４】
ここでは、２つのファームウェア本体のバージョンが一致するため、プロセッサ１０１は、プライマリＲＯＭ１０２の本体部１０５に格納されたファームウェア本体を読み出し（ステップＳ７）、該ファームウェア本体にしたがって処理を実行する。以上の処理手順により、プライマリＲＯＭ１０２及びセカンダリＲＯＭ１０３へ割り当てるメモリアドレスを切り替えるためのハードウェアが無くてもファームウェアの更新が可能になる。
【００４５】
本発明によれば、セカンダリＲＯＭ１０３を、例えばネットワーク等を介して外部から供給される新しいファームウェアを一時的に保持するバッファとして使用することで、プライマリＲＯＭ１０２及びセカンダリＲＯＭ１０３に割り当てるメモリアドレスを切り替えるためのハードウェアがサポートされていない構成でも、ファームウェアを更新することが可能になる。
【００４６】
また、外部から供給される新しいファームウェアの最初の保存先がセカンダリＲＯＭ１０３であるため、ネットワーク等を介して外部から新しいファームウェアが供給される場合、保存中にネットワーク障害等が発生してもプライマリＲＯＭの内容には全く影響しない。そのため、ネットワーク障害等に対するファームウェアの更新作業の可用性が向上する。
【００４７】
また、ファームウェアの更新時、セカンダリＲＯＭ１０３の本体部で保持しているファームウェア本体のみ、プライマリＲＯＭ１０２の本体部１０５に複製するため、複製している最中にサーバ装置で電源障害等が発生しても、プライマリＲＯＭ１０２のブートローダ部１０４は複製対象外であるため、ブートローダ部１０４の内容には影響しない。そのため、プロセッサ１０１はプライマリＲＯＭ１０２のブートローダ部１０４のプログラムから再び処理を開始し、上述した手順でセカンダリＲＯＭ１０３からプライマリＲＯＭ１０２へ新しいファームウェアを複製する。したがって、電源障害等に対するファームウェアの更新作業の可用性が向上する。
【００４８】
さらに、本発明では、常にプライマリＲＯＭ１０２に格納されたファームウェアでプロセッサ１０１が動作するため、従来のように複数のフラッシュＲＯＭで異なるファームウェアを保持する必要がない。
【図面の簡単な説明】
【００４９】
【図１】本発明のサーバ装置の一構成例を示すブロック図である。
【図２】本発明のサーバ装置によるファームウェアの更新動作を示すフローチャートである。
【図３】従来のサーバ装置の構成を示すブロック図である。
【符号の説明】
【００５０】
１０１    プロセッサ
１０２    プライマリＲＯＭ
１０３    セカンダリＲＯＭ
１０４、１０６    ブートローダ部
１０５、１０７    本体部
【図１】
2008108048.tif 000003
【図２】
2008108048.tif 000004
【図３】
2008108048.tif 000005