(57)【要約】      （修正有）【課題】ファームウェアストレージデバイスの既存のデータを失うことなく、コンピュータデバイス内のファームウェアストレージデバイスのファームウェアを更新するシステム及び方法を提供する。【解決手段】ファームウェアを更新する方法は、リモートユーティリティが、コンピュータデバイスの管理デバイスから、ファームウェアの既存のイメージを取り出す工程と、更新されたファームウェアの新たなイメージを取り出し、既存のイメージ及び新たなイメージを分析し、既存のイメージ及び新たなイメージの分析に基づいて、既存のイメージ及び新たなイメージから処理済みイメージを生成する工程と、処理済みイメージをコンピュータデバイスのファームウェアストレージデバイスに書き込む工程を含む。【選択図】図３Ｂ
2019204488.tif 000002
【特許請求の範囲】
【請求項１】
リモートユーティリティと通信可能に接続されたコンピュータデバイスのファームウェアを更新するために前記リモートユーティリティによって実行されるコンピュータ実行方法であって、
前記リモートユーティリティは、
前記ファームウェアの既存のイメージを取り出す工程であって、前記ファームウェアは、前記コンピュータデバイス内のファームウェアストレージデバイスに位置する、工程と、
更新されたファームウェアの新たなイメージを取り出す工程と、
前記既存のイメージ及び前記新たなイメージを分析する工程と、
前記既存のイメージ及び前記新たなイメージに基づいて、前記既存のイメージ及び前記新たなイメージから処理済みイメージを生成する工程と、
前記処理済みイメージを前記コンピュータデバイスの前記ファームウェアストレージデバイスに書き込む工程と、
を含む更新手順を実行する、
コンピュータ実行方法。
【請求項２】
前記ファームウェアの既存のイメージを取り出す工程は、前記コンピュータデバイスの管理デバイスから前記既存のイメージを受信する工程をさらに含み、
前記処理済みイメージを前記ファームウェアストレージデバイスに書き込む工程は、前記管理デバイスを介して、前記処理済みイメージを用いて前記既存のイメージを上書きする工程をさらに含む、ことを特徴とする請求項１に記載のコンピュータ実行方法。
【請求項３】
前記既存のイメージを分析する工程は、前記新たなイメージ内の複数の更新と、前記既存のイメージ内の既存のデータとを比較して、前記新たなイメージと競合しない前記既存のデータを識別する工程をさらに含む、ことを特徴とする請求項２に記載のコンピュータ実行方法。
【請求項４】
前記処理済みイメージを生成する工程は、前記新たなイメージと競合しない既存のデータとを組み合わせて、前記処理済みイメージを形成する工程をさらに含む、ことを特徴とする請求項２に記載のコンピュータ実行方法。
【請求項５】
リモートユーティリティと通信可能に接続されたコンピュータデバイスの既存のイメージを前記リモートユーティリティによって更新するためのコンピュータシステムであって、
メモリと、
前記メモリと通信する処理ユニットであって、実行されると前記リモートユーティリティに動作を実行させる命令を記憶する処理ユニットと、を備え、
前記動作は、
前記ファームウェアの既存のイメージを取り出す工程であって、前記ファームウェアは、前記コンピュータデバイス内のファームウェアストレージデバイスに位置する、工程と、
前記既存のイメージ及び前記新たなイメージを分析する工程と、
前記既存のイメージ及び前記新たなイメージに基づいて、前記既存のイメージ及び前記新たなイメージから処理済みイメージを生成する工程と、
前記処理済みイメージを前記コンピュータデバイスの前記ファームウェアストレージデバイスに書き込む工程と、を含む、
ことを特徴とするコンピュータシステム。
【請求項６】
前記ファームウェアの既存のイメージを取り出す工程は、前記コンピュータデバイスの管理デバイスから前記既存のイメージを受信する工程をさらに含み、
前記処理済みイメージを前記ファームウェアストレージデバイスに書き込む工程は、前記管理デバイスを介して、前記処理済みイメージを用いて前記既存のイメージを上書きする工程をさらに含む、ことを特徴とする請求項５に記載のコンピュータシステム。
【請求項７】
前記既存のイメージを分析する工程は、前記新たなイメージ内の複数の更新と、前記既存のイメージ内の既存のデータとを比較して、前記新たなイメージと競合しない前記既存のデータを識別する工程をさらに含み、
前記処理済みイメージを生成する工程は、前記新たなイメージと競合しない既存のデータとを組み合わせて、前記処理済みイメージを形成する工程をさらに含む、ことを特徴とする請求項６に記載のコンピュータシステム。
【請求項８】
リモートユーティリティによって実行されると、リモートユーティリティと通信可能に接続されたコンピュータデバイスの既存のイメージをコンピュータシステムに更新させる命令を記憶するコンピュータ可読記憶媒体であって、
前記既存のイメージを更新することは、
前記ファームウェアの既存のイメージを取り出す工程であって、前記ファームウェアは、前記コンピュータデバイス内のファームウェアストレージデバイスに位置する、工程と、
前記既存のイメージ及び前記新たなイメージを分析する工程と、
前記既存のイメージ及び前記新たなイメージに基づいて、前記既存のイメージ及び前記新たなイメージから処理済みイメージを生成する工程と、
前記処理済みイメージを前記コンピュータデバイスの前記ファームウェアストレージデバイスに書き込む工程と、を含む、
ことを特徴とするコンピュータ可読記憶媒体。
【請求項９】
前記ファームウェアの既存のイメージを取り出す工程は、前記コンピュータデバイスの管理デバイスから前記既存のイメージを受信する工程をさらに含み、
前記処理済みイメージを前記ファームウェアストレージデバイスに書き込む工程は、前記管理デバイスを介して、前記処理済みイメージを用いて前記既存のイメージを上書きする工程をさらに含む、ことを特徴とする請求項８に記載のコンピュータ可読記憶媒体。
【請求項１０】
前記既存のイメージを分析する工程は、前記新たなイメージ内の複数の更新と、前記既存のイメージ内の既存のデータとを比較して、前記新たなイメージと競合しない前記既存のデータを識別する工程をさらに含み、
前記処理済みイメージを生成する工程は、前記たなイメージと競合しない既存のデータとを組み合わせて、前記処理済みイメージを形成する工程をさらに含み、
前記既存のイメージを更新することは、
前記処理済みイメージの書き込み後に、前記コンピュータデバイスを再起動する工程と、
前記ファームウェアストレージデバイスの動作環境で前記処理済みイメージを実行する工程と、をさらに含む、
ことを特徴とする請求項９に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータデバイスのファームウェアの更新に関し、特に、リモートユーティリティを用いてファームウェアを更新するシステム及び方法に関する。
【背景技術】
【０００２】
ファームウェアは、コンピュータデバイスのハードウェアに対する低レベルの制御を提供する一部のソフトウェアである。ファームウェアは、コンピュータデバイスのファームウェアストレージデバイス内（例えば、コンピュータデバイスの不揮発性メモリコンポーネント内）に恒久的にインストールされ得る。コンピュータデバイスの起動時に、コンピュータデバイスの中央処理装置はファームウェアを実行する。コンピュータデバイスは、自身のメモリに記憶されたオペレーティングシステムを有することができ、オペレーティングシステムは、ファームウェアにアクセスすることができる。
【０００３】
時折、コンピュータデバイスのファームウェアを更新する必要がある。しかしながら、ファームウェアの更新中及び更新後の両方でコンピュータデバイスの動作機能性を維持する必要があるので、ファームウェアの更新は困難なプロセスとなり得る。その結果、ファームウェアベンダは、更新中及び更新後にコンピュータデバイスの動作を維持することが困難であるため、ファームウェアの更新を避けようとすることが多い。それにもかかわらず、特定の状況においては、コンピュータデバイスのファームウェアの更新の必要性が避けられない場合がある。例えば、ファームウェアの更新は、コンピュータデバイスが出荷された後に検出された機能上の問題を解決するために必要とされる場合がある。ファームウェアの更新は、コンピュータデバイスに既にプログラムされているが、コンピュータデバイス上で動作している別のソフトウェアから未だアクセスされていない機能を有効にするために必要とされる場合がある。また、ファームウェアの更新は、コンピュータデバイスによりアクセスされ得るファイルフォーマットのタイプを更新するために、又は、コンピュータデバイス用のバッテリ管理機能を更新するために、必要とされ得る。
【０００４】
ファームウェアを更新する現在の方法の１つは、すでに、コンピュータデバイスに既に存在する動作環境での起動に依存している。その動作環境を通じて、ファームウェアの更新をファームウェアストレージデバイスに実装するためのプロセスを実行することができる。しかしながら、このプロセスでは、故障した動作環境を有するコンピュータデバイスを回復することができない。例えば、このプロセスは、ファームウェアがクラッシュした場合、又は、コンピュータデバイスの動作環境が動作不能である場合、ファームウェアを更新することができない。
【０００５】
ファームウェアを更新する他の現在の方法は、ファームウェアストレージデバイスに接続する外部管理デバイスの使用に依存している。この外部管理デバイスは、コンピュータデバイスの動作環境が動作不能であるときでも、ファームウェアストレージデバイスをパワーオンすることができる。しかし、このような外部管理デバイスは、典型的に、ファームウェアストレージデバイスへのデータの選択的な読み出し、編集及び書き込み等のより複雑な機能を実行することができない。その結果、外部管理デバイスを使用すると、通常、ファームウェア全体を書き直すかイメージを変更する必要がある。よって、ファームウェアが書き換えられると、ファームウェアストレージデバイス上に以前から存在していたデータが失われる可能性がある。このようなデータの損失は、コンピュータデバイスの所有者又はオペレータにとって容認できない可能性がある。
【０００６】
よって、ファームウェアストレージデバイスに記憶されているファームウェア全体を再イメージングすることを要しない、ファームウェアを更新するシステム及び方法が必要とされている。このようなシステム及び方法は、コンピュータデバイスの動作環境にアクセスできない場合であっても更新を提供することができるべきである。このようなシステム及び方法は、複雑な計算機能を実行し、カスタマイズされた更新手順をファームウェアストレージデバイス上で実行する機能を提供すべきである。最後に、このようなシステム及び方法は、操作性を容易にするために、各種コンピュータデバイス内の様々なファームウェアストレージデバイスの更新をホストできるべきである。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、リモートユーティリティによるファームウェアの更新を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の各種実施形態は、コンピュータデバイスのファームウェアを更新するコンピュータ実行方法を提供する。本発明の一実施形態による例示的な方法は、最初に、ファームウェアの既存のイメージを取り出す。ファームウェアは、コンピュータデバイス内のファームウェアストレージデバイスに位置することができる。方法は、次に、更新されたファームウェアの新たなイメージを取り出す。方法は、既存のイメージと、新たなイメージと、を分析することができる。方法は、既存のイメージ及び新たなイメージに基づいて、既存のイメージ及び新たなイメージから処理済みイメージを生成することができる。方法は、次に、処理済みイメージを、コンピュータデバイスのファームウェアストレージデバイスに書き込むことを提供し得る。
【０００９】
いくつかの実施形態において、方法は、コンピュータデバイスがパワーオフの場合の全てのステップを実行することを提供する。
【００１０】
いくつかの実施形態において、既存のイメージを分析することは、新たなイメージ内の複数の更新と、既存のイメージ内の既存のデータとを比較することをさらに含むことができる。この比較により、新たなイメージと競合しない既存のデータを識別することができる。
【００１１】
他の実施形態において、処理済みイメージを生成することは、新たなイメージを、競合しない既存のデータと組み合わせて、処理済みイメージを形成することをさらに含むことができる。
【００１２】
他の実施形態において、方法は、ファームウェアストレージデバイスを再起動することと、ファームウェアストレージデバイス上で処理済みイメージを実行することと、をさらに含むことができる。
【００１３】
本発明の別の例示的な実施形態は、コンピュータデバイスの既存のイメージを更新するように構成されたコンピュータシステムを提供する。コンピュータシステムは、メモリと、処理ユニットと、を備えることができる。処理ユニットは、メモリと通信することができる。処理ユニットは、実行されるとコンピュータシステムに一連の動作を実行させる命令を記憶することができる。先ず、コンピュータシステムは、ファームウェアの既存のイメージを取り出すことができる。ファームウェアは、コンピュータデバイス内のファームウェアストレージデバイスに位置することができる。次に、命令は、既存のイメージと、新たなイメージとの分析を提供することができる。命令は、既存のイメージ及び新たなイメージの分析に基づいて、既存のイメージ及び新たなイメージから処理済みイメージを生成することができる。命令は、処理済みイメージをコンピュータデバイスのファームウェアストレージデバイスに書き込むことによって、完了することができる。
【００１４】
いくつかの実施形態において、コンピュータデバイスをパワーオフすることができる。
【００１５】
他の実施形態において、既存のイメージを分析することは、更新手順における複数の更新と、既存のイメージ内の既存のデータとを比較することをさらに含むことができる。これにより、新たなイメージと競合しない既存のデータを識別することができる。
【００１６】
他の実施形態において、処理済みイメージを生成することは、新たなイメージを、競合しない既存のデータと組み合わせて、処理済みイメージを形成することをさらに含むことができる。
【００１７】
他の実施形態において、命令は、ファームウェアストレージデバイスを再起動することと、ファームウェアストレージデバイス上で処理済みイメージを実行することと、をさらに含むことができる。
【００１８】
第３実施形態において、本発明は、命令を記憶する非一時的なコンピュータ可読記憶媒体を提供する。命令は、コンピュータシステムによって実行されると、一連の動作をコンピュータシステムに実行させる。一連の動作は、ファームウェアの既存のイメージを取り出すことから開始する。ファームウェアは、コンピュータデバイスのファームウェアストレージデバイスに位置することができる。命令は、次に、既存のイメージと、新たなイメージとの分析を提供することができる。次いで、命令は、既存のイメージ及び新たなイメージの分析に基づいて、既存のイメージ及び新たなイメージから処理済みイメージを生成する。最後に、命令は、処理済みイメージを、コンピュータデバイスのファームウェアストレージデバイスに書き込むことを提供することができる。
【００１９】
いくつかの実施形態において、コンピュータデバイスをパワーオフすることができる。
【００２０】
他の実施形態において、既存のイメージを分析することは、更新手順における複数の更新と、既存のイメージ内の既存のデータとを比較することをさらに含むことができる。これにより、新たなイメージと競合しない既存のデータを識別することができる。
【００２１】
他の実施形態において、処理済みイメージを生成することは、新たなイメージを、競合しない既存のデータと組み合わせて、処理済みイメージを形成することをさらに含むことができる。
【００２２】
他の実施形態において、命令は、ファームウェアストレージデバイスを再起動することと、ファームウェアストレージデバイス上で処理済みイメージを実行することと、をさらに含むことができる。
【発明の効果】
【００２３】
リモートユーティリティを用いたファームウェアストレージデバイスの更新によって、複雑な動作手順を実行することができる。
【００２４】
本発明の上述した利点及び特徴と、他の利点及び特徴とを得る方法を説明するために、上記で簡単に示した原理は、図面に示された具体的な実施形態によってさらに具体的に説明される。これらの図面は、本発明の一例を示すものであって、本発明を限定するものではないことを理解されたい。本発明の原理は、図面の記載及び付加された特徴と詳細の解釈とによって説明される。
【図面の簡単な説明】
【００２５】
【図１Ａ】ファームウェアストレージデバイスの動作環境に基づく従来の方法による、ユーザによるファームウェアストレージデバイスの更新を示す図である。
【図１Ｂ】ファームウェアストレージデバイスの動作環境に基づいてファームウェアを更新する方法のフローチャートである。
【図２Ａ】外部管理デバイスに基づく従来の方法による、ユーザによるファームウェアストレージデバイスの更新を示す図である。
【図２Ｂ】外部管理デバイスに基づいてファームウェアを更新する方法のフローチャートである。
【図３Ａ】本発明の例示的な実施形態による、ユーザによるファームウェアストレージデバイスの更新を示す図である。
【図３Ｂ】本発明の一実施形態による、ファームウェアを更新する方法のフローチャートである。
【図４】本発明の各種態様を実行するのに用いられるコンピュータシステムを示す図である。
【図５】本発明の各種態様を実行するのに用いられるコンピュータシステムを示す図である。
【発明を実施するための形態】
【００２６】
本発明に関し、「コンピュータデバイス」という用語は、ハードウェア及びソフトウェアコンポーネントを有する任意の電動式又は電池式の機器を意味することができ、ソフトウェアコンポーネントは、当該デバイスの機能を動作させるように構成することができる。
【００２７】
本発明に関し、「動作環境」という用語は、ソフトウェアがコンピュータデバイス上で実行するのを可能にするように機能する任意のオペレーティングシステム又は環境を意味することができる。
【００２８】
添付の図面を参照しながら本発明を説明する。図面全体を通して、類似又は同等の要素を示すために、同様の参照番号が使用されている。図面は縮尺通りに記載されておらず、単に本発明を提供するために提供されている。本発明のいくつかの態様は、例示のための例示的な用途を参照して以下に説明される。本発明を十分に理解するために、多くの具体的な詳細、関係及び方法が説明されていることを理解されたい。しかしながら、当業者であれば、本発明が１つ以上の具体的な詳細なしに又は他の方法を用いて実施され得ることを容易に認識するであろう。他の例では、本発明を曖昧にすることを避けるために、周知の構造又は動作については詳細に示されていない。いくつかの工程は、異なる順序及び／又は他の工程若しくは事象と同時に起こり得るので、本発明は、例示された工程又は事象の順序付けによって限定されない。さらに、本発明による方法を実施するために、例示された全ての工程又は事象が必要とされるわけではない。
【００２９】
既存のシステムの制限を考慮して、本発明は、ファームウェアを保存するファームウェアストレージデバイスから全ての既存のデータを削除することなく、コンピュータデバイスのファームウェアを更新する方法に関する。例示的な方法は、先ず、コンピュータデバイスをパワーオフし、次に、リモートユーティリティからファームウェアを更新するための更新手順を開始する工程を含むことができる。リモートユーティリティは、ファームウェアの既存のイメージを取得する。リモートユーティリティは、更新されたファームウェアの新たなイメージを取得することもできる。リモートユーティリティは、既存のイメージと、新たなイメージとを分析することができる。リモートユーティリティは、既存のイメージ及び新たなイメージの分析に基づいて、既存のイメージ及び新たなイメージから処理済みイメージを生成することができる。そして、リモートユーティリティは、処理済みイメージをコンピュータデバイスのファームウェアストレージデバイスに書き込むことを提供することができる。
【００３０】
よって、本発明の一実施形態による例示的な方法は、リモートユーティリティを使用することによって、ファームウェアストレージデバイスの更新を提供することができる。本発明の一実施形態による例示的な方法は、コンピュータデバイスの動作環境が動作可能であること、又は、動作環境によってファームウェアがアクセス可能であることを必要としない。例えば、この方法は、コンピュータデバイスがパワーオフの間に全ての工程を実行することができる。
【００３１】
従来のシステムと異なり、本発明の工程は、リモートユーティリティをさらに用いて、ファームウェアを更新する。リモートユーティリティは、複雑な動作手順を実行することができるので、利点を提供する。例えば、リモートユーティリティは、ファームウェアストレージデバイスからのイメージを分析して、どのデータを新たなイメージと共に保持することができ、どのデータを置き換える必要があるかを決定することができる。リモートユーティリティは、保存する必要がある古いファームウェアデータをコピーすることができ、古いファームウェアデータと、ファームウェアの更新に関連する新たなファームウェアデータとをマージすることができ、これら両方を含む処理済みイメージを生成することができる。次に、リモートユーティリティは、処理済みイメージをファームウェアストレージデバイスに書き込むように、管理デバイスに指示することができる。よって、更新されたファームウェアストレージデバイスは、更新手順の前に、当該デバイスのデータを保持することができる。
【００３２】
図１Ａは、従来の方法によるシステム１００を示す図であり、システム１００は、コンピュータデバイスで実行されるオペレーティングシステムに基づいて、ファームウェアストレージデバイスを更新することができる。システム１００は、ユーザ１１０によってアクセス可能なコンピュータデバイスである。システム１００は、ローカルユーティリティ１２０と、ファームウェアストレージデバイス１３０と、を有する。ファームウェアストレージデバイス１３０は、ファームウェアの更新を必要とするシステム１００の一部である。ユーザ１１０は、ファームウェアストレージデバイス１３０の更新手順を開始することができる個人である。ローカルユーティリティ１２０は、システム１００上で実行する動作環境である。ローカルユーティリティ１２０は、ファームウェアストレージデバイス１３０上で複雑なタスクを実行することができる。しかし、ユーザ１１０がローカルユーティリティ１２０及びファームウェアストレージデバイス１３０の両方にアクセスするためには、システム１００をパワーオンにしてローカルユーティリティ１２０から起動する必要がある。さらに、ローカルユーティリティ１２０が何らかの理由でファームウェアストレージデバイス１３０にアクセスできない場合、ユーザ１１０は、システム１００内のファームウェアストレージデバイス１３０を更新することができない。
【００３３】
図１Ｂは、ファームウェアストレージデバイスのオペレーティングシステムに依存し、図１のシステム１００内で動作するファームウェアストレージデバイスを更新するための従来の方法２００のフローチャートである。図１Ｂを参照すると、方法２００は、システム１００及びファームウェアストレージデバイス１３０をパワーオンすることによって開始する。特に、この方法２００は、ファームウェアストレージデバイス１３０の更新を進めるために、ファームウェアストレージデバイス１３０及びシステム１００の両方をパワーオンにする必要がある。
【００３４】
工程２２０において、方法２００は、システム１００を動作環境でブートして、ファームウェアストレージデバイス１３０のファームウェアを更新する。動作環境は、図１Ａに関して説明したローカルユーティリティ１２０とすることができる。特に、方法２００は、システム１００を動作環境でうまく起動することができない場合、ファームウェアストレージデバイス１３０の更新を進めることができない。例えばシステム１００等のコンピュータデバイスが動作環境で起動することができない多くの状況が存在する。例えば、ファームウェアストレージデバイス１３０は、ローカルユーティリティ１２０がシステム１００によりロードされること又は適切に動作することを妨げる、破損したソフトウェアを有する場合がある。
【００３５】
工程２３０において、方法２００は、システム１００の動作環境で更新手順を実行して、ファームウェアストレージデバイス１３０のファームウェアを更新することができる。方法２００がシステム１００のパワーオンに成功し、ファームウェアストレージデバイス１３０のファームウェアを更新するための動作環境での起動に成功した場合、工程２３０は、方法２００が更新手順を完了する間、ファームウェアストレージデバイス１３０上の既存のデータを保持する能力を方法２００に提供する。
【００３６】
工程２４０において、方法２００は、更新手順を完了し、システム１００を再起動する。システム１００を再起動すると、方法２００によって提供され、ファームウェアストレージデバイス１３０に記憶された新たな更新を使用して、システムを起動することができる。
【００３７】
しかし、上述したように、方法２００は、方法２００に基づく更新手順の柔軟性に影響を与える厳しい制限を有する。最も重要なことは、ユーザ１１０が、（１）システム１００をオンにする、（２）ローカルユーティリティ１２０でブートする、の両方を行うことができない場合、方法２００を進めることができない。これらの要件は、方法２００の工程２１０及び工程２２０の各々に取り込まれる。
【００３８】
図２Ａは、管理デバイスの使用に基づいてファームウェアを更新するシステム３００を示す図である。システム３００は、ユーザ３１０によってアクセス可能であり、管理デバイス３４０と、ファームウェアストレージデバイス３３０と、を有する。管理デバイス３４０は、システム３００のマザーボード上に設計することができ、システム３００の内部に存在し得る。管理デバイス３４０は、待機電力で動作する自身のマイクロプロセッサを備えることができるので、システムがパワーオフである場合であっても動作することができる。ファームウェアストレージデバイス３３０は、更新手順を必要とするデバイスである。ユーザ３１０は、ファームウェアストレージデバイス３３０の更新手順を開始することができる個人である。管理デバイス３４０は、ファームウェアストレージデバイス３３０の外部にあってもよい。管理デバイス３４０は、ユーザ３１０からの命令に従って、基本的なタスクを完了することができる。例えば、管理デバイス３４０は、ファームウェアストレージデバイス３３０から全てのデータを読み出すことができ、ファームウェアストレージデバイス３３０から全てのデータを削除することができ、及び／又は、ファームウェアストレージデバイス３３０にデータを書き込むことができる。ファームウェアストレージデバイス３３０にデータを書き込むことは、新たに書き込まれたデータをコンピュータデバイスが読み出すだけなので、ファームウェアストレージデバイス３３０上の既存のデータにアクセスできない状態にする。管理デバイス３４０は、システム３００がパワーオンにならない場合、ファームウェアストレージデバイス３３０の更新手順を完了するために使用することができる。よって、管理デバイス３４０は、ファームウェアストレージデバイス３３０を更新するための動作環境を提供することができる。
【００３９】
図２Ｂは、管理デバイスの使用に基づいて、図２Ａのシステム３００内で動作するファームウェアを更新する従来の方法のフローチャートである。図２Ｂを参照すると、方法４００は、工程４１０において、コンピュータデバイスをパワーオフにすることから開始する。コンピュータデバイスをパワーオフすることは、管理デバイスがファームウェアストレージデバイスにアクセスするのと同時に、コンピュータデバイスがファームウェアストレージデバイスにアクセスするのを防止する。コンピュータデバイス及び管理デバイスの両方が同時にファームウェアストレージデバイスにアクセスした場合、コマンドが競合して、更新処理が完了するのを妨げる可能性がある。
【００４０】
工程４２０において、ユーザ３１０は、管理デバイス３４０を介して更新手順を開始することができる。ユーザ３１０は、更新されたファームウェアイメージを管理デバイス３４０にアップロードすることができる。更新されたファームウェアイメージは、ファームウェアの更新バージョンをファームウェアストレージデバイス３３０に提供する。
【００４１】
工程４３０において、管理デバイス３４０は、ファームウェアストレージデバイス３３０に記憶されたファームウェアを再イメージする。つまり、管理デバイス３４０は、先ず、ファームウェアストレージデバイス３３０上の既存のイメージを削除した後に、更新されたファームウェアイメージをファームウェアストレージデバイス３３０に書き込む。或いは、管理デバイス３４０は、更新されたファームウェアイメージをファームウェアストレージデバイス３３０に単に上書きすることができる。この段階では、コンピュータデバイスは、新たに書き込まれたデータを読み出すだけなので、ファームウェアストレージデバイス３３０上の既存のデータへのアクセスがなくなる。
【００４２】
工程４４０において、ファームウェアストレージデバイス３３０のイメージ更新が完了する。よって、工程４４０は、システム３００の再起動を提供する。システム３００を再起動すると、システム３００は、方法４００によって提供された新たな更新されたファームウェアを用いて起動することができる。
【００４３】
方法４００は、更新手順がファームウェアストレージデバイス３３０内のファームウェアを完全に再イメージするという厳しい制限がある。よって、方法４００は、ファームウェアの如何なる選択的な編集を許可しない。方法４００は、ファームウェアストレージデバイス３３０内のファームウェアに以前適用された修正又は設定の保持を許可しない。方法４００による更新手順では、ユーザ３１０は、システム３００の選好に応じて、ファームウェアストレージデバイス３３０に記憶されているファームウェアを新たに設定するという冗長なタスクを実行しなければならない。
【００４４】
方法２００及び方法４００の制限を考慮して、本発明は、コンピュータデバイス又はシステムのファームウェアストレージデバイス内の既存のデータの削除を必要としない新たな方法を提供する。さらに、この方法は、コンピュータデバイス又はシステムがパワーオフの場合であっても使用することができる。よって、本発明は、従来技術を改善する柔軟な更新方法を提供する。
【００４５】
図３Ａは、リモートユーティリティ５２０及び管理デバイス５４０を用いてファームウェアストレージデバイス５３０を更新することができるシステム５００を示す図である。システム５００は、ユーザ５１０によってアクセス可能であり、コンピュータデバイス５０５と、リモートユーティリティ５２０と、を有する。コンピュータデバイス５０５は、管理デバイス５４０と、ファームウェアストレージデバイス５３０と、を有する。ファームウェアストレージデバイス５３０は、更新が必要なデバイスである。ユーザ５１０は、ファームウェアストレージデバイス５３０の更新手順を開始することができる個人である。
【００４６】
本開示により提供されるように、管理デバイス５４０は、コンピュータデバイス５０５の内部にあってもよい。管理デバイス５４０は、ユーザ５１０からの命令に従って、基本的なタスクを完了することができる。たとえば、管理デバイス５４０は、ファームウェアストレージデバイス５３０から全てのデータを読み出すことができ、ファームウェアストレージデバイス５３０から全てのデータを削除することができ、又は、データをファームウェアストレージデバイス５３０に書き込むことができる。データをファームウェアストレージデバイス５３０に書き込むことは、新たに書き込まれたデータをコンピュータデバイスが読み出すだけなので、ファームウェアストレージデバイス５３０の既存のデータにアクセスできないようにする。管理デバイス５４０は、コンピュータデバイス５０５がパワーオンできない場合、ファームウェアストレージデバイス５３０の更新手順を完了するために使用することができる。管理デバイス５４０は、ファームウェアストレージデバイス５３０のファームウェアを更新するための動作環境として機能することができる。管理デバイスは、コンピュータデバイスによって実行されるメインオペレーティングシステムとは別に動作するように、自身のマイクロプロセッサ及びメモリを用いて構成することができる。管理デバイスは、コンピュータデバイスがパワーオフ又は起動不能の場合であっても、待機電力により動作して、ファームウェアストレージデバイスの読み書きを実行することができる。
【００４７】
リモートユーティリティ５２０は、コンピュータデバイス５０５から独立したコンピュータシステムである。リモートユーティリティ５２０は、コンピュータデバイス５０５と通信可能に接続することができる。さらに、リモートユーティリティは、ファームウェア及びコンピュータデバイス５０５を用いて複雑なタスク（例えば、ファームウェアイメージの検証、ファームウェアストレージデバイス５３０に記憶されたファームウェアの設定の取得及び保存、及び／又は、ファームウェアストレージデバイス５３０から読み出した古いイメージの分析等）を完了するように構成されてもよい。例えば、リモートユーティリティ５２０は、スマートフォン、デスクトップコンピュータ、ラップトップコンピュータ、タブレット、又は、ソフトウェア編集及び分析機能を実行するためにユーザ５１０と対話可能な他のコンピュータシステムであってもよい。
【００４８】
図３Ｂは、本発明の一実施形態による、ファームウェアストレージデバイスを更新する例示的な方法のフローチャートである。この方法は、図３Ａのシステム５００で動作することができる。図３Ｂに戻ると、方法は、工程６１０において、コンピュータデバイス５０５をパワーオフにすることによって開始することができる。コンピュータデバイス５０５をパワーオフにすることによって、管理デバイス５４０がファームウェアストレージデバイス５３０にアクセスするのと同時に、コンピュータデバイス５０５がファームウェアストレージデバイス５３０にアクセスするのを防止することができる。コンピュータデバイス５０５及び管理デバイス５４０の両方が同時にファームウェアストレージデバイス５３０にアクセスした場合、命令が競合して、更新処理が完了するのを妨げる可能性がある。
【００４９】
工程６２０において、ユーザ５１０は、リモートユーティリティ５２０を介して、ファームウェアストレージデバイス５３０に記憶されているファームウェアを更新するための更新手順を開始することができる。特に、ユーザ５１０は、先ず、更新されたファームウェアイメージをリモートユーティリティ５２０にアップロードすることができる。管理デバイス５４０だけでなくリモートユーティリティ５２０を使用することによって、方法が管理デバイス５４０だけを使用した場合よりも、更新処理の更なるカスタマイズが可能になる。管理デバイス５４０の機能は、管理デバイス５４０がどのタイプのファームウェアを更新する必要があるのかについて十分に理解していない管理デバイスの設計者によって決定される。対照的に、リモートユーティリティ５２０は、どのファームウェアを更新する必要があるのかについて精通しているファームウェアストレージデバイス５３０の設計者によって設計することができる。よって、リモートユーティリティ５２０を使用することによって、更新プロセスのより容易な実施及びメンテナンスが可能になる。
【００５０】
工程６３０において、リモートユーティリティ５２０は、ファームウェアストレージデバイス５３０内のファームウェアの既存のイメージを管理デバイス５４０から受信する。この工程は、管理デバイス５４０が、ファームウェアストレージデバイス５３０上に現在存在する全てのデータを読み出すことを含む。管理デバイス５４０は、このデータを既存のイメージとしてリモートユーティリティ５２０に提供することができる。
【００５１】
工程６４０において、リモートユーティリティ５２０は、既存のイメージを分析することができる。この分析は、リモートユーティリティ５２０が、新たなファームウェアと既存のイメージとを比較する工程を含む。リモートユーティリティ５２０は、既存のデータ内のどの部分のデータが、新たなファームウェア内の更新と衝突しないかを識別することができる。リモートユーティリティ５２０は、更新手順によって提供された全ての更新を保持し、ファームウェアストレージデバイス５３０からの競合しない全ての既存のデータを保持する処理済みイメージを生成することができる。
【００５２】
例えば、リモートユーティリティ５２０は、ファームウェアイメージセキュリティチェックを実行し、既存のイメージに記憶されている元のファームウェア設定を保持することによって、既存のイメージを分析することができる。リモートユーティリティ５２０は、先ず、既存のイメージから公開鍵を取り出すことができる。リモートユーティリティ５２０は、次に、公開鍵を用いて、ユーザによって更新された新たなファームウェアイメージが、正しい秘密鍵によって適切に署名されていることを確認することができる。リモートユーティリティ５２０が、適切な署名を検証できない場合、リモートユーティリティ５２０は、更新要求を拒否することができる。リモートユーティリティ５２０が適切な署名を検証することができる場合、リモートユーティリティ５２０は、既存のイメージに記憶されている元のファームウェア設定を取り出すことができる。そして、リモートユーティリティ５２０は、設定と新たなファームウェアイメージとを組み合わせて、処理済みイメージを生成することができる。
【００５３】
他の実施形態において、リモートユーティリティ５２０の設計者は、管理デバイス５４０にとっては困難であるがリモートユーティリティ５２０にとっては容易な他の複雑な分析を追加することができる。
【００５４】
工程６５０において、リモートユーティリティ５２０は、ファームウェアストレージデバイス５３０内の処理済イメージを用いて既存のイメージを上書きするように、管理デバイス５４０に命令することができる。例えば、管理デバイス５４０は、ファームウェアストレージデバイス５３０から既存のイメージを消去することができる。いくつかのファームウェアストレージデバイスはＳＰＩフラッシュを使用するので、既存のイメージを消去する必要がある。ＳＰＩフラッシュに書き込む場合、消去命令は、新たなデータがファームウェアストレージデバイスに書き込まれる前に全てのビットが適切に元に戻るのを保証することができる。
【００５５】
工程６６０において、ファームウェアストレージデバイス５３０のファームウェア更新プロセスは完了している。よって、工程６６０はシステム５００の再起動を提供する。システム５００を再起動することは、方法６００によって提供された新たな更新を用いてファームウェアストレージデバイス５３０が起動するのを可能にする。
【００５６】
よって、方法６００は、ファームウェアストレージデバイス５３０の既存のデータの全てを失うことなく、ファームウェアストレージデバイスを更新する技術を提供する。方法６００によって、ファームウェアストレージデバイス５３０上の競合していない既存のデータを更新手順で保存することができる。この更新は、ファームウェアストレージデバイス５３０がパワーオンであるかパワーオフであるかにかかわらず、完了することができる。さらに、この更新は、ファームウェアストレージデバイス５３０を更新する動作環境が利用可能であるか否かにかかわらず、完了することができる。
【００５７】
図４は、コンピュータシステムのコンポーネントがバス７０２を用いて互いに電気的に通信する例示的なコンピュータシステム７００を示す図である。システム７００は、処理ユニット（ＣＰＵ又はプロセッサ）７３０と、システムバス７０２と、を有する。システムバス７０２は、メモリ７０４（例えば、読み出し専用メモリ（ＲＯＭ）７０６及びランダムアクセスメモリ（ＲＡＭ）７０８）を含む各種システムコンポーネントをプロセッサ７３０に接続する。システム７００は、高速メモリのキャッシュを有し、キャッシュは、プロセッサ７３０に直接接続され、プロセッサ７３０に隣接して接続され、又は、プロセッサ７３０の一部として統合されてもよい。システム７００は、プロセッサ７３０による高速アクセスのために、メモリ７０４及び／又はストレージデバイス７１２からキャッシュ７２８にデータをコピーしてもよい。この方法において、キャッシュは、プロセッサ７３０がデータを待つ間に遅延が生じるのを防止する性能向上を提供する。これら及び他のモジュールは、様々な動作を提供するためにプロセッサ７３０を制御するように構成されている。別のシステムメモリ７０４も同様に使用可能である。メモリ７０４は、異なるパフォーマンス特性を有する複数の異なるタイプのメモリを有することができる。プロセッサ７３０は、任意の汎用目的プロセッサと、例えばストレージデバイス７１２に記憶された第１モジュール７１４、第２モジュール７１６及び第３モジュール７１８等のハードウェアモジュール又はソフトウェアモジュールを含むことができる。ハードウェアモジュール又はソフトウェアモジュールは、プロセッサ７３０、及び、ソフトウェア命令が実際のプロセッサ設計に組み込まれる汎用目的プロセッサを制御するように構成されている。プロセッサ７３０は、実質的に、複数のコア又はプロセッサ、バス、メモリコントローラ、キャッシュ等を含む完全に独立したコンピュータシステムであってもよい。マルチコアプロセッサは、対称又は非対称であってもよい。
【００５８】
ユーザがコンピュータシステム７００と対話するのを可能にするために、入力デバイス７２０が入力メカニズムとして設けられている。入力デバイス７２０は、例えば、スピーチ用のマイクロフォン、ジェスチャ又はグラフィカル入力用のタッチスクリーン、キーボード、マウス、モーション入力等を含んでもよい。場合によっては、マルチモーダルシステムは、ユーザが、システム７００と通信するために複数のタイプの入力を提供できるようにする。この例では、出力デバイス７２２も設けられている。通信インタフェース７２４は、ユーザ入力及びシステム出力を統治及び管理することができる。
【００５９】
ストレージデバイス７１２は、コンピュータによってアクセス可能なデータを記憶する不揮発性メモリであってもよい。ストレージデバイス７１２は、磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ（ＲＡＭ）７０８、読み出し専用メモリ（ＲＯＭ）７０６、及び、これらの組み合わせ等であってもよい。
【００６０】
コントローラ７１０は、システム７００上の特殊なマイクロコントローラ又はプロセッサ（例えば、ＢＭＣ（ベースボード管理コントローラ））であってもよい。場合によっては、コントローラ７１０は、インテリジェントプラットフォーム管理インタフェイス（ＩＰＭＩ）の一部であってもよい。さらに、場合によっては、コントローラ７１０は、システム７００のマザーボード又はメイン回路基板に組み込まれてもよい。コントローラ７１０は、システム管理ソフトウェアとプラットフォームハードウェアとの間のインタフェースを管理することができる。また、コントローラ７１０は、以下に説明するように、例えばコントローラ又は周辺機器等の各種システムデバイス及びコンポーネント（内部、及び／又は、外部）と通信することができる。
【００６１】
コントローラ７１０は、通知、警告及び／又はイベントに対する特定の対応を生成し、遠隔デバイス又はコンポーネントと通信（例えば、電子メールメッセージ、ネットワークメッセージ等）し、自動ハードウェア障害回復工程等の指令や命令を生成する。システム管理者は、以下に更に説明するように、コントローラ７１０と遠隔通信して、特定のハードウェア障害回復工程又は操作を開始又は実行することができる。
【００６２】
コントローラ７１０は、コントローラ７１０によって受信されたイベント、警告、通知を管理及び記憶するシステムイベントログコントローラ及び／又はストレージを有してもよい。例えば、コントローラ７１０又はシステムイベントログコントローラは、１つ以上のデバイス及びコンポーネントからの警告や通知を受信し、当該警告や通知をシステムイベントログストレージコンポーネント内に維持することができる。
【００６３】
フラッシュメモリ７３２は、ストレージ及び／又はデータ転送に用いられるシステム７００によって使用される電子不揮発性コンピュータストレージ媒体又はチップであってもよい。フラッシュメモリ７３２は、電気的に消去及び／又は再プログラムされ得る。フラッシュメモリ７３２は、例えば、消去可能なプログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、ＲＯＭ、ＮＶＲＡＭ、又は、相補型ＭＯＳ（ＣＭＯＳ）を有する。フラッシュメモリ７３２は、システム７００が起動するときに、システム７００により実行されるファームウェア７３４を、ファームウェア７３４に指定されたセットとともに記憶することができる。さらに、フラッシュメモリ７３２は、ファームウェア７３４により用いられる構成を記憶することができる。
【００６４】
ファームウェア７３４は、基本入力／出力システム（ＢＩＯＳ）又はその後継品、等価物（例えば、エクステンシブルファームウェアインタフェース（ＥＦＩ）又はユニファイドエクステンシブルファームウェアインタフェース（ＵＥＦＩ））を有する。システム７００が起動される毎に、ファームウェア７３４は、シーケンスプログラムとしてロードされ、実行される。ファームウェア７３４は、構成のセットに基づいて、システム７００に存在するハードウェアを識別、初期化、テストする。ファームウェア７３４は、システム７００上でのセルフテスト（例えば、パワーオンセルフテスト（ＰＯＳＴ））を実行する。このセルフテストは、各種ハードウェアコンポーネント（例えば、ハードディスクドライブ、光学読み取りデバイス、冷却デバイス、メモリモジュール、拡張カード等）の機能性をテストする。ファームウェア７３４は、オペレーティングシステム（ＯＳ）を記憶するために、メモリ７０４、ＲＯＭ７０６、ＲＡＭ７０８及び／又はストレージデバイス７１２内の領域をアドレス指定及び割り当てることができる。ファームウェア７３４は、ブートローダ及び／又はＯＳをロードし、システム７００の制御をＯＳに渡すことができる。
【００６５】
システム７００のファームウェア７３４は、ファームウェア７３４がシステム７００内の各種ハードウェアコンポーネントをどのように制御するかを定義するファームウェア構成を有することができる。ファームウェア構成は、システム７００内の各種ハードウェアコンポーネントが起動される順序を判断する。ファームウェア７３４は、各種異なるパラメータの設定を許可するインタフェース（例えば、ＵＥＦＩ）を提供することができ、このパラメータは、ファームウェアのデフォルト設定のパラメータとは異なる。例えば、ユーザ（例えば、管理者）は、ファームウェア７３４を用いて、クロック及びバス速度を指定し、どの周辺機器をシステム７００に取り付けるか指定し、監視の状態（例えば、ファン速度及びＣＰＵ温度制限）を指定し、及び／又は、システム７００のパフォーマンス全体及び電力使用量に影響する各種の他のパラメータを提供する。ファームウェア７３４は、フラッシュメモリ７３２に記憶されているものとして説明されているが、当業者であれば、ファームウェア７３４を他のメモリコンポーネント（例えば、メモリ７０４又はＲＯＭ７０６等）に記憶することができるのを容易に認識するであろう。
【００６６】
システム７００は１つ以上のセンサ７２６を有する。１つ以上のセンサ７２６は、例えば、１つ以上の温度センサ、熱センサ、酸素センサ、化学センサ、ノイズセンサ、ヒートセンサ、電流センサ、電圧検出器、気流センサ、流量センサ、赤外線放射温度計、熱流束センサ、温度計、高温計等を有する。１つ以上のセンサ７２６は、例えば、バス７０２を介して、プロセッサ、キャッシュ７２８、フラッシュメモリ７３２、通信インタフェース７２４、メモリ７０４、ＲＯＭ７０６、ＲＡＭ７０８、コントローラ７１０及びストレージデバイス７１２と通信する。また、１つ以上のセンサ７２６は、１つ以上の異なる手段（例えば、集積回路（Ｉ２Ｃ）、汎用出力（ＧＰＯ）等）を介して、システム内の他のコンポーネントと通信することができる。システム７００上の異なるタイプのセンサ（例えば、センサ７２６）は、パラメータ（例えば、冷却ファン速度、電力状態、オペレーティングシステム（ＯＳ）状態、ハードウェア状態等）をコントローラ７１０に報告することもできる。
【００６７】
図５は、説明した方法又は動作の実行、並びに、グラフィカルユーザインタフェース（ＧＵＩ）の生成及び表示に用いることができるチップセット機構を有する例示的なコンピュータシステム８００を示す図である。コンピュータシステム８００は、本発明の技術を実行するのに用いられるコンピュータハードウェア、ソフトウェア及びファームウェアを含むことができる。システム８００は、識別された計算を実行するように構成されたソフトウェア、ファームウェア及びハードウェアを実行することができる任意の数の物理的及び／又は論理的に異なるリソースを表すプロセッサ８１０を含むことができる。プロセッサ８１０は、プロセッサ８１０への入出力を制御することができるチップセット８０２と通信する。この例において、チップセット８０２は、情報を出力デバイス８１４（例えば、ディスプレイ）に出力し、ストレージデバイス８１６（磁気媒体、固体媒体を含む）に対して情報を読み書きする。また、チップセット８０２は、ＲＡＭ８１８に対してデータをやり取りする。各種ユーザインタフェースコンポーネント８０６と相互作用するブリッジ８０４は、チップセット８０２と相互作用するために提供され得る。このようなユーザインタフェースコンポーネント８０６は、キーボード、マイクロフォン、タッチ検出及び処理回路、ポインティングデバイス（マウス等）を有する。一般に、システム８００への入力は、機器及び／又は人間が生成した各種ソースの何れかから生じる。
【００６８】
また、チップセット８０２は、異なる物理インタフェースを有する１つ以上の通信インタフェース８０８と相互作用する。このような通信インタフェースは、有線及び無線のローカルエリアネットワーク、ブロードバンドワイヤレスネットワーク及びパーソナルエリアネットワークのためのインタフェースを有する。さらに、機器は、ユーザインタフェースコンポーネント８０６を介して、ユーザからの入力を受信し、適当な機能（例えば、プロセッサ８１０を用いて、これらの入力を解釈することによりブラウズ機能を実行する）を実行する。
【００６９】
さらに、チップセット８０２は、電源が投入されると、コンピュータシステム８００によって実行され得るファームウェア８１２と通信することができる。ファームウェア８１２は、ファームウェア構成のセットに基づいて、コンピュータシステム８００内に存在するハードウェアを認識、初期化及びテストすることができる。ファームウェア８１２は、システム８００上でセルフテスト（例えば、ＰＯＳＴ）を実行する。セルフテストでは、各種ハードウェアコンポーネント８０２〜８１８の機能をテストすることができる。ファームウェア８１２は、ＯＳを記憶するために、メモリ８１８内の領域をアドレス指定及び割り当てることができる。ファームウェア８１２は、ブートローダ及び／又はＯＳをロードし、システム８００の制御をＯＳに渡す。場合によっては、ファームウェア８１２は、ハードウェアコンポーネント８０２〜８１０，８１４〜８１８と通信する。ここで、ファームウェア８１２は、チップセット８０２及び／又は１つ以上の他のコンポーネントを介して、ハードウェアコンポーネント８０２〜８１０，８１４〜８１８と通信する。場合によっては、ファームウェア８１２は、ハードウェアコンポーネント８０２〜８１０，８１４〜８１８と直接通信することができる。
【００７０】
例示的なシステム７００，８００は、より高い処理能力を提供するために、２つ以上のプロセッサ（例えば、７３０，８１０）を有することができ、又は、ネットワーク接続されたコンピュータデバイスのグループ又はクラスタの一部であり得ることが理解されるであろう。
【００７１】
説明をわかりやすくするために、ある実施形態において、デバイス、デバイスコンポーネント、ソフトウェアで実施される方法における工程やルーティン、又は、ハードウェアとソフトウェアの組み合わせを含む個々の機能ブロックを有するものとして提示することができる。
【００７２】
いくつかの実施形態において、コンピュータ可読ストレージデバイス、媒体及びメモリは、ビットストリーム等を含むケーブル又は無線信号を有する。しかし、言及されるとき、非一時的なコンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波及び信号そのもの等の媒体を明確に排除する。
【００７３】
上記の例における方法は、コンピュータ可読媒体に記憶されるか利用可能なコンピュータ実行可能命令を用いて実施される。このような命令は、例えば特定の機能又は機能グループを実行する汎用コンピュータ、専用コンピュータ又は特殊用途処理デバイスをもたらすか構成する命令及びデータを含むことができる。用いられるコンピュータリソースの一部は、ネットワークを介してアクセス可能である。コンピュータ実行可能命令は、例えば、バイナリ、中間フォーマット命令（例えば、アセンブリ言語）、ファームウェア又はソースコードである。
【００７４】
これらの開示における方法を実行するデバイスは、ハードウェア、ファームウェア及び／又はソフトウェアを有し、各種フォームファクタの何れかを利用する。このようなフォームファクタの一般的な例は、ラップトップ、スマートフォン、スモールフォームファクタパーソナルコンピュータ、ＰＤＡ、ラックマウント型デバイス、スタンドアロンデバイス等を有する。ここで説明される機能は、周辺デバイス又はアドインカードにも実装することができる。さらなる例として、このような機能は、単一のデバイスで実行される異なるチップ間又は異なるプロセス間の回路基板上で実行することができる。
【００７５】
各種実施形態は、場合によっては、いくつかのアプリケーションの何れかを動作させるために用いられる１つ以上のサーバコンピュータ、ユーザコンピュータ又はコンピュータデバイスを有する多種多様な動作環境で実行することができる。ユーザ又はクライアントデバイスは、標準のオペレーティングシステムを実行するデスクトップ又はラップトップコンピュータ等の多数の汎用パーソナルコンピュータ、並びに、モバイルソフトウェアを実行し、いくつかのネットワーク及びメッセージプロトコルをサポートすることができるセルラー、ワイヤレス及びハンドヘルドデバイスを含むことができる。このようなシステムは、さらに、開発及びデータベース管理等の目的のために様々な市販のオペレーティングシステム及び他の既知のアプリケーションを実行するいくつかのワークステーションを有する。これらのデバイスは、他の電子デバイス（例えば、ダミー端末、シンクライアント、ゲームシステム、及び、ネットワークを介して通信可能な他のデバイス等）を有する。
【００７６】
本発明のいくつかの実施態様又はその一部がハードウェアで実現される限り、本発明は、以下の技術の何れか又は組み合わせにより実現される。例えば、データ信号に基づきロジック機能を実行するロジックゲートを有する離散ロジック回路、適切な組み合わせのロジックゲートを有する特定用途向け集積回路（ＡＳＩＣ）、プログラマブルゲートアレイ（ＰＧＡ）等のプログラマブルハードウェア、及び／又は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等が含まれる。
【００７７】
ほとんどの実施形態は、例えばＴＣＰ／ＩＰ、ＯＳＩ、ＦＴＰ、ＵＰｎＰ、ＮＦＳ、ＣＩＦＳ、ＡｐｐｌｅＴａｌｋ（登録商標）等の商用のプロトコルの何れかを用いて通信をサポートするために、当業者によく知られている少なくとも１つのネットワークを使用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、及び、これらの任意の組み合わせである。
【００７８】
これらの開示における方法を実行するデバイスは、ハードウェア、ファームウェア及び／又はソフトウェアを有し、各種フォームファクタの何れかを利用する。このようなフォームファクタの一般的な例は、サーバコンピュータ、ラップトップ、スマートフォン、スモールフォームファクタパーソナルコンピュータ、ＰＤＡ等を有する。ここで説明される機能は、周辺デバイス又はアドインカードにも実装することができる。さらなる例として、このような機能は、単一のデバイスで実行される異なるチップ間又は異なるプロセス間の回路基板上で実行することができる。
【００７９】
ウェブサーバを用いた実施形態において、ウェブサーバは、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩサーバ、データサーバ、Ｊａｖａ（登録商標）サーバ、及び、ビジネスアプリケーションサーバを有する任意の種類のサーバ又は中間層アプリケーションを実行することができる。ウェブサーバは、ユーザデバイスからの要求に応じて、プログラム又はスクリプトを実行することもできる。例えば、ウェブサーバは、任意のプログラミング言語（例えば、Ｊａｖａ（登録商標）、Ｃ，Ｃ＃、Ｃ＋＋）、任意のスクリプト言語（例えば、Ｐｅｒｌ、Ｐｙｔｈｏｎ、ＴＣＬ）、及びこれらの組み合わせで書き込まれる１つ以上のスクリプト又はプログラムとして実行される１つ以上のウェブアプリケーションを実行することができる。サーバは、公開市場で市販されているものを含むがこれに限定されないデータベースサーバを含むことができる。
【００８０】
サーバシステムは、前述の様々なデータ記憶、他のメモリ、及び、ストレージ媒体を有する。これらは、例えば、ストレージ媒体が１つ以上のコンピュータにローカル接続され（及び／又は存在する）、又は、ネットワークにより、任意の若しくは全てのコンピュータから遠隔で連結される等のように、様々な場所に存在し得る。一組の特定の実施形態において、情報は、当業者によく知られているストレージエリアネットワーク（ＳＡＮ）中に存在することができる。同様に、コンピュータ、サーバ又は他のネットワークデバイスに起因する機能を実行するのに必要とされる任意のファイルは、必要に応じてローカル及び／又はリモートに記憶することができる。システムがコンピュータ化されたデバイスを含む場合、このようなデバイスは、バスを介して電気的に接続されるハードウェアコンポーネントを有し、コンポーネントは、例えば、少なくとも１つの中央処理ユニット（ＣＰＵ）と、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチセンサディスプレイコンポーネント、又は、キーパッド）と、少なくとも１つの出力デバイス（例えば、ディスプレイデバイス、プリンタ、又は、スピーカ）と、を有する。このようなシステムは、さらに、１つ以上のストレージデバイス（例えば、ディスクドライブ、光学ストレージデバイス、及び、ソリッドステートストレージデバイス（例えば、ランダムアクセスメモリ（ＲＡＭ）又は読み出し専用メモリ（ＲＯＭ））、及び、除去可能な媒体デバイス、メモリカード、フラッシュカード等）を有する。
【００８１】
コード又はコードの一部を含むストレージ媒体及びコンピュータ可読媒体は、従来技術で用いられる任意の適切な媒体（例えば、ストレージ媒体及びコンピューティング媒体）を含む。ストレージ媒体及びコンピューティング媒体は、データ若しくは情報の記憶及び／又は伝送のためのリムーバブル及び非リムーバブル媒体を含むことができるが、これらに限定されない。リムーバブル及び非リムーバブル媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、他のメモリ技術、ＣＤ-ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、他の磁気ストレージデバイス、又は、他の任意の媒体を含み、必要な情報を記憶するのに用いられたり、システムデバイスによりアクセスされる。データ又は情報は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータを含むことができる。本明細書で提供される技術及び教示に基づいて、当業者であれば、本発明の各種態様を実施する他のやり方及び／又は方法を理解するであろう。
【００８２】
本発明の各種実施形態を上述したが、これらは例としてのみ示されており、これに限定されないことを理解されたい。本発明の趣旨及び範囲から逸脱することなく、開示された実施形態に対して各種の変形を加えることができる。よって、本発明の幅及び範囲は、上述した実施形態によって限定されるべきではない。むしろ、本発明の範囲は、添付の特許請求の範囲及びその均等物に従って定義されるべきである。
【００８３】
本発明を１つ以上の実施形態に関して例示及び説明したが、当業者であれば、本明細書及び添付の図面を読んで理解すれば、同等の変更及び修正を考え付くであろう。また、本発明の特定の特徴は、いくつかの実施形態のうち１つのみに関して開示されているが、このような特徴は、所定の又は特定の用途について望まれ有利となるように、他の実施形態の１つ以上の他の特徴と組み合わせることができる。
【００８４】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、本発明を限定することを意図するものではない。本明細書で使用される単数形（例えば「１つの」、「その」等）は、文脈が明らかにそうでないことを示さない限り、複数形も含むことを意図している。さらに、「含む」、「有する」等の用語及びその変形は、詳細な説明及び／又は特許請求の範囲で用いられる限りにおいて、「備える」という用語と同様の方法で包括的であることを意図している。
【００８５】
他に定義されない限り、本明細書で用いられる全ての用語（技術用語及び科学用語を含む）は、当業者によって通常理解されるのと同じ意味を有する。さらに、一般的に用いられる辞典で定義されている用語等の用語は、関連する技術の文脈においてこれらの意味と一致する意味を有していると解釈されるべきであり、本明細書で明示的に定義されない限り、理想的又は過度に形式的な意味で解釈されるべきではない。
【符号の説明】
【００８６】
１００，３００，５００…システム
１１０，３１０，５１０…ユーザ
１２０…ローカルユーティリティ
１３０，３３０，５３０…ファームウェアストレージデバイス
２００，４００，６００…方法
７００…コンピュータシステム
７０２…バス
７０４…メモリ
７０６…読み出し専用メモリ
７０８，８１８…ランダムアクセスメモリ
７１０…コントローラ
７１２，８１６…ストレージデバイス
７１４〜７１８…モジュール
７２０…入力デバイス
７２２，８１４…出力デバイス
７２４，８０８…通信インタフェース
７２６…センサ
７２８…キャッシュ
７３０，８１０…プロセッサ
７３２…フラッシュメモリ
７３４，８１２…ファームウェア
８００…コンピュータシステム
８０２…チップセット
【図１Ａ】
2019204488.tif 000003
【図１Ｂ】
2019204488.tif 000004
【図２Ａ】
2019204488.tif 000005
【図２Ｂ】
2019204488.tif 000006
【図３Ａ】
2019204488.tif 000007
【図３Ｂ】
2019204488.tif 000008
【図４】
2019204488.tif 000009
【図５】
2019204488.tif 000010