(57)【特許請求の範囲】
【請求項１】
ユーザデバイスのファームウェアを仮想化するように動作する方法であって、
リモートサーバ上で前記ユーザデバイスに対して仮想化されたファームウェアを格納するステップと、
ネットワークを介して前記ユーザデバイスからファームウェアデータを受信するステップと、
前記リモートサーバ上に格納された対応する仮想化されたファームウェアに前記ファームウェアデータの一部を割り当てるステップと、
前記対応する仮想化されたファームウェアに前記ファームウェアデータの前記一部を挿入するステップと、
前記ファームウェアデータの前記一部を含む前記対応する仮想化されたファームウェアに基づいて、前記リモートサーバによって提示されたリモートサービスにアクセスするために、少なくとも1つのリモートプロセスを展開するステップと
を含む方法。
【請求項２】
前記ファームウェアデータは、前記ユーザデバイス上の組み込み型のファームウェアからのコマンドをさらに含む、請求項1に記載の方法。
【請求項３】
前記ファームウェアデータの一部を割り当てるステップは、前記コマンドにおいてトリガパラメータおよびターゲットパラメータを特定するステップを含む、請求項2に記載の方法。
【請求項４】
前記特定されたトリガパラメータおよびターゲットパラメータのパラメータ値に対する対応するソースを決定するステップをさらに含む、請求項3に記載の方法。
【請求項５】
前記少なくとも1つのリモートプロセスは、前記リモートサーバ上のプラットフォームによって仮想化された従来型のサービス構成要素(CSC)における展開のためのプロセスに対応する、請求項1に記載の方法。
【請求項６】
前記少なくとも1つのリモートプロセスを展開するステップは、前記CSCに対応するネイティブ言語でプロセスコードを生成し、前記CSCにおいて前記生成されたプロセスコードを実行する、請求項5に記載の方法。
【請求項７】
前記ユーザデバイスに格納されたファームウェアは、前記リモートサーバ上に格納された前記仮想化されたファームウェアとは異なる、請求項1に記載の方法。
【請求項８】
前記仮想化されたファームウェアに挿入するために前記ユーザデバイスに対応する前記リモートサーバに格納されたユーザデータを取得するステップをさらに含む、請求項1に記載の方法。
【請求項９】
ユーザデバイスからリモートサーバ上のファームウェア仮想化システムにアクセスするための方法であって、
前記ユーザデバイスにおいて接続マネージャを使用して、前記リモートサーバ上のリモートの仮想化されたファームウェアプラットフォームにネットワークを通じて接続するステップと、
ファームウェアデータに基づいてリモートプロセスを展開するために、前記ユーザデバイス上に格納された組み込み型のファームウェアから前記ファームウェアデータを前記仮想化されたファームウェアプラットフォームに送るステップと、
前記仮想化されたファームウェアプラットフォームによって実行された前記リモートプロセスから処理されたデータを受信するステップであって、前記処理されたデータは、前記組み込み型のファームウェアのネイティブ言語である、ステップと、
前記処理されたデータに基づいて前記ユーザデバイスおよび組み込み型のファームウェアを操作するステップと
を含む方法。
【請求項１０】
接続するステップは、前記リモートサーバ上の対応するユーザアカウントを用いて前記ユーザデバイスを認証するステップをさらに含む、請求項9に記載の方法。
【請求項１１】
前記ファームウェアデータは、前記ユーザデバイス上の組み込み型のファームウェアからのコマンドをさらに含む、請求項9に記載の方法。
【請求項１２】
前記ファームウェアデータは、前記コマンドにおいてトリガパラメータおよびターゲットパラメータをさらに含む、請求項11に記載の方法。
【請求項１３】
前記ユーザデバイスの組み込み型のファームウェアに、前記組み込み型のファームウェアを使用して、前記仮想化されたファームウェアプラットフォームによって前記リモートプロセスの展開を開始するためのリモートプロセスコールをインストールするステップをさらに含む、請求項9に記載の方法。
【請求項１４】
ユーザデバイスのファームウェアを仮想化するように動作するシステムであって、
a)少なくとも1つのプロセッサと、
b)少なくとも1つのネットワークに結合された少なくとも1つの入力デバイスと、
c)前記少なくとも1つのプロセッサによって実行されたときに、
i.リモートサーバ上にユーザデバイスに対して仮想化されたファームウェアを格納するステップと、
ii.ネットワークを介して前記ユーザデバイスからファームウェアデータを受信するステップと、
iii.前記リモートサーバ上に格納された対応する仮想化されたファームウェアに、前記ファームウェアデータの一部を割り当てるステップと、
iv.前記対応する仮想化されたファームウェアに前記ファームウェアデータの前記一部を挿入するステップと、
v.前記ファームウェアデータの前記一部を含む前記対応する仮想化されたファームウェアに基づいて、前記リモートサーバによって提示されたリモートサービスにアクセスするために少なくとも1つのリモートプロセスを展開するステップと
を含む方法を実行するプロセッサ実行可能命令を格納する少なくとも1つのストレージデバイスと
を含むシステム。
【請求項１５】
前記ファームウェアデータは、前記ユーザデバイス上の組み込み型のファームウェアからのコマンドをさらに含む、請求項14に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般的に、ファームウェア仮想化のための方法および装置に関する。
【背景技術】
【０００２】
電子システムおよび計算において、ファームウェアは、持続的なメモリと、メモリに格納されたプログラムコードおよびデータとの組合せである。ファームウェアを含むデバイスの典型的な例は、組み込み型のファームウェアシステムである(たとえば、交通信号灯、民生用機器、デジタル腕時計、コンピュータ、コンピュータの周辺機器、デジタルカメラなど)。これらのデバイスに含まれているファームウェアは、デバイスに対して管理プログラムを提供する。ファームウェアは、典型的には、ROM、EEPROM、または多くの場合、デバイスに組み込まれているフラッシュメモリなどの不揮発性メモリデバイスに保持される。デバイスのファームウェアの変更は、その経済的耐用年数の間に、めったに、またはまったくなされない場合がある。一部のファームウェアメモリデバイスは永久的にインストールされており、製造後に変更され得ない。ファームウェアを更新する共通の理由は、バグを修正すること、またはデバイスがユーザに利用可能になった後にデバイスに機能を追加することを含む。これには、物理的にROM集積回路を変更すること、またはファームウェアに格納された命令をすべて消去および交換することを必要とする特別な手順を用いてフラッシュメモリを再プログラミングすることが必要な場合がある。パーソナルコンピュータのROM BIOSなどのファームウェアは、デバイスの初歩的な基本機能のみを含むことができ、より高レベルのソフトウェアにサービスを提供することができるだけである。組み込み型システムメモリのプログラムなどのファームウェアは、システムで実行され、その機能のすべてを提供する唯一のプログラム場合がある。
【０００３】
しかしながら、ネットワーク接続およびクラウドベースの展開が急増したため、アプリケーション/ソフトウェアが仮想化される方法が変わってきた。ネットワーク接続されたデバイスは、インターネットを介してファームウェア更新をフラッシュまたはインストールすることができる。しかしながら、更新は、組み込み型メモリのサイズに制限される必要があり、多くの場合、ユーザによる手作業での始動、デバイスの再起動、ファームウェアROMのフラッシュ、ダウンロードする時間、およびそうでなければ、電子デバイスの動作を中断する不便なステップを必要とする。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、当技術分野には、新しいファームウェアのより高速な展開、およびファームウェアの機能の拡張のためにファームウェア仮想化に対するニーズがある。
【課題を解決するための手段】
【０００５】
本発明の実施形態は、一般的に、特許請求の範囲に完全に記述するように、リモートプロセスを実行するためにリモートに格納されたファームウェアへのコールを使用し、図の少なくとも1つに関して本質的に図示および/または記述したユーザデバイスファームウェアにプロセスの結果を返すユーザデバイスのファームウェア仮想化のための方法、装置に関する。
【０００６】
本開示のこれらおよび他の特徴および利点は、全体を通じて同様の参照番号は同様の部分を示している添付の図とともに、本開示の以下の詳細な説明を検討することから理解され得る。
【０００７】
本発明の上に詳しく述べられた特徴が詳細に理解され得る方法、上に要約された、本発明のより特定の記述は、実施形態を参照することによって得られ、その一部は添付された図に示されている。しかし、添付された図は、本発明の典型的な実施形態を示しているにすぎず、したがって、その範囲を制限するものと考えるべきではなく、本発明は、他の同様に効果的な実施形態を認めるものであることに留意されたい。
【図面の簡単な説明】
【０００８】
【図１】本発明の1つまたは複数の実施形態によるファームウェア仮想化システムを示す図である。
【図２】本発明の1つまたは複数の実施形態によるファームウェア仮想化システムを示す図である。
【図３】本発明の1つまたは複数の実施形態による、ユーザデバイスの組み込み型ファームウェアとインターフェースをとる、図2に開示された仮想化されたファームウェアプロバイダを使用する全体的な方法を示す流れ図である。
【図４】本発明の1つまたは複数の実施形態によるプラットフォームで仮想化されたファームウェアを生成するための方法を示す流れ図である。
【図５】本発明の1つまたは複数の実施形態による仮想化されたファームウェアプラットフォームを使用する、ユーザデバイスのスタンドアロンの動作のための方法を示す流れ図である。
【図６】本発明の1つまたは複数の実施形態による例示的なコンピューティングサーバ内のモジュールを示すブロック図である。
【発明を実施するための形態】
【０００９】
記述された以下の実施形態では、「プロセス」は、実行コンピュータ(たとえば、サーバ、パーソナルコンピュータ、モバイルデバイスなど)に格納されている機能のための、すぐに実行可能なコードベースまたは事前生成されたプロセスコードを表すものとする。各プロセスは、総合開発環境(IDE)のユーザに対して、名前、プロセスID、アイコン、またはプロセスの機能を示す他の識別子によって一意に識別される。プロセスは、ユーザデバイスの組み込み型ファームウェア間で通信されるファームウェアデータを含む。実行は、コンピュータ(ローカルもしくリモート、またはクラウドベース)上のプロセスの開始を表すものとする。展開は、後で実行されるように調整された最終的なコードを送信または格納することである。「バンドル」は、共通する属性(API名、共通のパラメータ、SDK、パラメータ名、リモートサービスなど)によって整理されたプロセスの集合を表すものとする。機能(たとえばプロセス)は、プロセスに関連するコードの動作を記述する、ユーザに提示するための記述的な用語および/またはイメージである。一部の実施形態では、機能はプロセスコードを含む。
【００１０】
「ファームウェア」は、より高レベルのソフトウェアにサービスを提供するために基本的な機能のためのコードを含む、ユーザデバイスに組み込まれている不揮発性メモリに格納されるコードを表すものとする。下述するように、ユーザデバイスは、仮想化されたファームウェアにアクセスするためにリモートサーバに接続することができる電子デバイスである。ユーザデバイスの限定を目的としない実例を挙げると、ラップトップ、タブレット、セル式電話、コンピュータ、電気製品、ゲームシステム、プリンタ、スキャナ、周辺装置、自動車、プロセッサ、マイクロコントローラ、および格納されたファームウェアを用いる他の電子デバイスなどがある。
【００１１】
本明細書に開示された実施形態は、リモートサーバまたはサーバの群(つまり「クラウド」)上のファームウェアライブラリに関し、ユーザデバイスは、ユーザデバイス上のファームウェアからプロセスにアクセスするために、リモートサーバをリモートに選択または自動的に接続することができる。一部の実施形態では、リモートプロセスコールが、ユーザデバイスからリモートサーバ上のプロセスを直接的に呼び出すために、ユーザデバイスのファームウェアにダウンロードおよびインストールされる。コンピューティングプラットフォームは、ハードウェアアーキテクチャおよびソフトウェアフレームワーク(アプリケーションフレームワークを含む)を含み、組合せによりソフトウェアの実行が可能になる。典型的なプラットフォームは、コンピュータアーキテクチャ、オペレーティングシステム、およびランタイムライブラリを含む。
【００１２】
図1は、本発明の1つまたは複数の実施形態によるファームウェア仮想化システム100を示す図である。システム100は、少なくとも1つのユーザデバイス(102a…102n)、ネットワーク110、および少なくとも1つのリモートサーバ(104a…104n)を含む。少なくとも1つのユーザデバイス(102a…102n)は、まとめてユーザデバイス102と呼ばれ、パーソナルコンピュータ、周辺装置、電気製品、ゲームシステム、サーバ、仮想サーバ、マイクロコントローラ(MCU)およびコントローラ、センサ、アクチュエータ、ゲートウェイに接続されたエッジ装置、特定用途向け集積回路(ASIC)、マイクロプロセッサおよびプロセッサ、セル式電話、スマートフォン、タブレット、ラップトップなど、プログラムを格納および実行することができる電子デバイスを含む。
【００１３】
各ユーザデバイス(102a…102n)は、少なくとも1つのリモートサーバ(104a…104n)に接続するために、ネットワーク110に接続および認証するのに必要な組み込み型のファームウェア(103a…103n)およびコードを格納する対応するメモリ(112a…112n)を含む。ファームウェアは、ネットワーク110およびリモートサーバ104への接続を促進するために接続エージェントを利用する。
【００１４】
ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ワイヤレスローカルエリアネットワークWLAN、セルラーネットワーク、Wi-Fi、インターネット、またはイントラネットネットワークなど、有線および/または無線のネットワークの少なくとも1つまたは組合せを含むことができる。少なくとも1つのリモートサーバ(104a…104n)は、リモートアプリケーションサーバ、ウェブサーバ、メールサーバ、ホストサーバ、データベースサーバ、ストレージサーバなどを含むことができる。
【００１５】
少なくとも1つのリモートサーバ(104a…104n)は、リモートファームウェア仮想化プラットフォーム(以下「プラットフォーム」)108、およびファームウェア集合120、デバイスプロフィール122、および実行エンジン124を使用して、仮想化されたファームウェアに対して特定のプロセスコールを格納および実行するためのメモリ(114a…114n)を含む。デバイスプロフィール122は、ユーザデバイス102aに関する追加情報を含むことができる(たとえば、ファームウェアの更新履歴、既知のエラー、拡張、およびライブラリなど)。
【００１６】
メモリ114a…114nは、また、ネットワーク110で他のサーバ(104n)を横断してプロセスをリンクおよび実行するために、ユーザインターフェースモジュール、ユーザプロフィール/アカウントのデータベース、プロセスの集合(つまりプロセスライブラリ)、SDK、および関連するパラメータを格納することができる。
【００１７】
以下にさらに記述するように、実行エンジン124は、ユーザデバイス102から受信された仮想化されたファームウェアおよびファームウェアデータに基づいてリモートプロセスを展開する。ユーザデバイス102のファームウェアに格納されたリモートプロセスコールを用いる実施形態では、実行エンジン124は、呼び出された、識別されたルーチンを相関させ、ファームウェアパラメータおよびコールパラメータを使用してプロセスを実行する(running/executing)ことによって、プロセスライブラリのルーチンへのコールを処理する。コールパラメータは、ユーザデバイス102aまたはリモートサーバ104aのいずれかに格納され、一部の実施形態では、グラフィカルユーザインターフェースまたはボタンの押下を介してなどユーザデバイス102aのファームウェアとの対話を介してユーザによって直接に指定される。プロセスコールパラメータは、ユーザデバイス102aからのファームウェアデータ通信から解析される。一部の実施形態では、実行エンジン126は、ユーザデバイス102aのファームウェアにプロセスの結果を返す前に、リモートサーバ104上に格納された別のプロセスコールまたはオリジナルのプロセスコールに出力を送ることができる。
【００１８】
図2は、本発明の1つまたは複数の実施形態によるファームウェア仮想化システム200を示す図である。システム200は、ユーザデバイス102n、ファームウェアが仮想化されたファームウェアプラットフォーム108、および仮想化されたファームウェアサービス(2021…202N)を含む。ユーザデバイス102nは、少なくともCPU203N、サポート回路204N、ならびに命令およびアルゴリズムを含むメモリ112nを含む。CPU203Nは、ユーザデバイス102nへの入力および出力を処理する。CPU203Nは、市販のプロセッサ、マイクロプロセッサ、マイクロコントローラなどの場合がある。他の実施形態では、CPU203Nは、PICなどのマイクロコントローラである。サポート回路204Nは、クロック回路、ネットワーク通信、キャッシュ、電源、I/O回路など、CPU203Nに機能を提供する、よく知られている回路を含む。代替実施形態は、カスタムの特定用途向け集積回路(ASIC)で制御アルゴリズムを使用することができる。
【００１９】
メモリ112nは、データおよび実行可能なソフトウェアを格納するために使用される任意の形態のデジタルストレージの場合がある。そのようなメモリは、限定しないが、ランダムアクセスメモリ、読み取り専用メモリ、ディスクストレージ、光学ストレージなどを含む。メモリ112nは、ユーザインターフェース211N、組み込み型のファームウェア215N、およびネットワーク接続マネージャ220Nに対応するコンピュータで読み取り可能な命令を格納する。
【００２０】
一部の実施形態では、ユーザインターフェース211Nは、キーパッド、電子ボタン、スピーカ、タッチスクリーン、ディスプレイ、または他のユーザ対話メカニズムを含む。一部の実施形態では、ユーザインターフェース211Nは、ユーザが、ユーザデバイス102nと対話できるように、組み込み型のファームウェア215Nと通信することができる。
【００２１】
組み込み型のファームウェア215Nは、ユーザデバイス102nの動作に対する命令を含む。一部の実施形態では、組み込み型のファームウェア215Nは、高水準言語で記述されたプログラムを実行するために利用される基本命令セットの場合がある。他の実施形態では、組み込み型のファームウェア215Nは、実行可能プログラムの場合がある。組み込み型のファームウェア215Nは、組み込み型のファームウェアが、外部の仮想化されたファームウェアサービス(2021…202N)に結合され得るように、ネットワーク接続マネージャ220Nと通信する。組み込み型のファームウェア215Nは、ユーザデバイス102nのすべて基本的な入力信号および出力信号が、ネットワーク接続マネージャ220Nによって通信に利用可能であることを本質的に可能にするコードをさらに含む。ユーザデバイス102nがプリンタである実例では、組み込み型のファームウェア215Nは、ボタン、インジケータ(たとえばLED)、表示画面、またはキャッシュされたプリントファイルのデータのファームウェアデータがネットワーク接続マネージャ220に送信されることを選択的に可能にする。
【００２２】
ネットワーク接続マネージャ220Nは、ユーザデバイス102nからの通信のためにファームウェアデータを準備するだけでなく、仮想化されたファームウェアプラットフォーム108からファームウェアデータを受信する。ネットワーク接続マネージャ220Nは、有線または無線のネットワークを介して結合され得て、ネットワーク110およびプラットフォーム108にアクセスするためにブリッジとして動作する。
【００２３】
仮想化されたファームウェアプラットフォーム108は、ネットワーク接続マネージャ220Nへの信号を符号化し、ネットワーク接続マネージャ220Nからの信号を復号化する。仮想化されたファームウェアプラットフォーム108は、まとめてVFP202と呼ばれる、少なくとも1つの仮想ファームウェアプロバイダ(VFP)202Nを含む。VFP202は、仮想化されたファームウェアライブラリ120N、実行エンジン124N、デバイス認証モジュール228N、ファームウェア仮想化モジュール230N、プロセス拡張モジュール235N、およびデバイスプロフィール122Nのデータベースを含む。一部の実施形態では、仮想化されたファームウェアプラットフォーム108は、他のVFP202とのプロセスを実行するコードだけでなく、従来型のサービス構成要素(CSC)2101…210Nによって提示されるリモートサービスを呼び出しインターフェースをとるコードを含む。
【００２４】
デバイス認証モジュール228Nは、ファームウェアを、仮想化されたファームウェアライブラリ120Nに格納された仮想化されたファームウェアおよび/またはデバイスプロフィール122Nと比較することによって、ユーザデバイス102nの組み込み型のファームウェアを決定する。一部の実施形態では、デバイスプロフィール122Nは、また、仮想化されたファームウェアのカスタム化、およびユーザの個別設定に基づいた仮想化されたファームウェアの実行のために、ユーザアカウント情報および個別設定を含む。たとえば、ユーザアカウントの個別設定は、ユーザのファームウェアおよび所有権に一致するプリンタが、仮想化されたファームウェアプラットフォーム108に接続する場合、PDF文書が生成され、印刷されたすべての文書の指定されたユーザの電子メールアカウントに電子メールで送信されることを指定することができる。電子メールアカウントの電子メールアドレスなどアカウント情報は、ユーザアカウントの一部として格納され得る。
【００２５】
一部の実施形態では、デバイス認証モジュール228Nは、特定のCSC210に対応する特定のユーザアカウントに対して仮想化されたファームウェアサービス(2021…202N)に関連するトークンおよび資格情報を検証する。たとえば、デバイス認証モジュール228Nは、また、プロセス拡張モジュール235Nからのプロセスに基づいて、送る電子メールプロセスを実行するために、POP3電子メールサーバであるCSC210にログインするために、格納された電子メール資格情報を取得することができる。
【００２６】
ファームウェア仮想化モジュール230Nは、ユーザデバイス102nからのファームウェアデータを処理するだけでなく、仮想化されたファームウェアを生成する。仮想化されたファームウェアを生成するために、ファームウェア仮想化モジュール230Nは、ファームウェアを受信する(たとえば、ユーザデバイス102nのソフトウェア開発者または製造業者から)。ファームウェアの命令およびパラメータ(たとえば変数)が解析される。パラメータに対する値のソースは、値が、ユーザデバイスから102n、VFP202からのプロセス、またはCSC210によって提示されるサービスから生じるかに基づいて決定される。パラメータは、また、ファームウェアの他のパラメータとの相対的な関連を決定するために検査される。次に、パラメータは、それぞれのデータソースに割り当てられリンクされる。ファームウェアのリンクおよび関連づけられた形式は、仮想化されたファームウェアライブラリ120Nに仮想化されたファームウェア命令セットとして格納される。
【００２７】
一部の実施形態では、仮想化されたファームウェアライブラリ120Nは、ユーザデバイス102nに対して更新されたファームウェア命令を含む。最新のファームウェアバージョンを含めることによって、開発者は、ユーザデバイス102nに新しいファームウェアをインストールする必要なく、ユーザデバイス102で展開されているファームウェアバージョンを迅速に分散および決定することができる。言い換えると、ユーザデバイス102nは、組み込み型のファームウェア215Nの機能を拡張するネットワーク110を通じて仮想化されたファームウェアで動作することができる。以下にさらに詳細に記述するように、ネットワーク110が利用不可能である事例の間に、ユーザデバイス102は、ネットワーク110および仮想化されたファームウェアが再び使用可能になるときまで、工場でインストールされたファームウェアで動作する。
【００２８】
プロセス拡張モジュール235Nは、CSC210で展開するようなプラットフォーム108によって提示された仮想化されたファームウェアとサービスの間のプロセスを実行するために、ファームウェア仮想化モジュール230Nで調整する。プロセス拡張モジュール235Nは、デバイスプロフィール122Nでユーザまたは開発者によって指定されたプロセスを実行するために、仮想化されたファームウェアパラメータおよびパラメータ値ソースのリンクを調整する。プロセス拡張モジュール235Nは、また、CSC210に必要なように特定のプロセスを実装するために、仮想化されたファームウェアを対応するAPIおよびSDKにリンクするためにコードを生成する。たとえば、プリンタ(つまりユーザデバイス102n)は、現在の文書のプリンタキャッシュをキャンセルおよび削除するために製造業者によってプログラムされた「印刷をキャンセルする」ボタンを備えることができる。プラットフォーム108のプロセスによって指定されるように、そして仮想化されたファームウェアを使用して、同じボタンが2度押下されると、次にキャッシュデータを抽出しファイルのデジタルPDFイメージを生成するために、VFP202にプリンタキャッシュデータを送るようにプリンタをトリガすることができる。次に、PDFイメージは、デバイスプロフィール122Nに格納された電子メールアドレスに電子メールで送信される。したがって、組み込み型のファームウェア215Nによって追加の処理を修正または必要とすることなく、プリンタのファームウェアの機能を拡張すること。
【００２９】
CSC210は、クラウドクライアント205Nによって仮想化され、プラットフォーム108とインターフェースをとるため、プロセスは、CSC210で展開される。一部の実施形態では、CSC210は、ネットワーク110を介してプラットフォーム108に通信するように結合される。CSC210Nは、リモートインターフェース206N、アプリケーションレイヤ208N、仮想化レイヤ212N、および物理装置214Nを含む。各CSC210は、プラットフォーム180によって提示される特定のリモートサービスを表している。たとえば、CSC210Nは、インターネットサービスおよび対応するサーバの場合があり(たとえば、フェイスブック、EBAY、POP3電子メール、ツイッター、アマゾン、SMS、FTP、HTTPなど)、CSC2102は、従来のローカルデータ情報処理を提供するコンピュータの場合がある(たとえば、画像レンダリング、コードのコンパイル、データ分析、データ記憶など)。
【００３０】
物理装置214Nまたはマシン(CPU、メモリ、ネットワークルータなど)は、処理およびストレージのリソースをアプリケーションレイヤ208Nで利用可能にするために、仮想化レイヤ212Nにおいて仮想化される。仮想化により、単一のコンピュータにおいて、およびさらに複数のマシンが仮想化されている実施形態において、冗長性および動作帯域幅の増加が生じる。そのような実施形態では、処理の作業負荷は、また、優先度に基づいて、および物理的位置と無関係に、様々な装置に割り当てられ得る。
【００３１】
アプリケーションレイヤ208Nは、仮想化されたマシンでのデータベース動作(たとえば、アカウントプロフィールの格納、データの保管など)など、プログラムおよび機能の実行ランタイムを可能にする。リモートインターフェースレイヤ206Nは、ウェブサーバにアクセスし、APIを利用するためのコードを含む。リモートインターフェース206Nは、クラウドクライアント205Nと通信する(たとえば、シンクライアント、ウェブブラウザ、モバイルアプリケーション、ターミナルエミュレータプログラムなど)。
【００３２】
クラウドクライアント205Nは、アプリケーションレイヤ2081を用いてVCP245との間のデータの通信を促進する。クラウドクライアント205は、ウェブブラウザ、ターミナルエミュレータ、または他のクライアントのインターフェースを提示することによって、レイヤインターフェース2061、2081、2121、および2151を簡素化する。本発明の前述の実施形態は、仮想化されたファームウェアを使用して、ユーザデバイス102nからのファームウェアデータに基づいてリモートプロセスコールコード生成を促進するために、クラウドクライアント205を利用することができる。仮想化されたファームウェアは、アプリケーションレイヤ208Nに、VFP202によって生成および提示されたプロセスコールをリンクする。
【００３３】
一部の実施形態では、仮想化されたファームウェアプラットフォーム108は、組み込み型のファームウェア215の機能を拡張するためにコードの追加のライブラリを含むことができる。たとえば、ユーザデバイス102nがデジタルビデオレコーダ(DVR)である場合、DVRの組み込み型のファームウェアは、記録されたテレビプログラムのリモートネットワークストレージのためにネットワーク接続マネージャ220Nを含む。そのような実例では、組み込み型のファームウェア215Nは、リモートプラットフォーム108のみと通信する命令を含む。リモートプラットフォーム108のVFP202は、次に、ビデオを受信するためにファームウェアデータを処理し、組み込み型のファームウェア215Nから記録をリダイレクトするために仮想化されたファームウェアプラットフォーム108を使用して、ネットワーク110で追加および/または冗長なストレージと調整する。別の実例では、VFP202は、セットトップボックスによってトリガしたときに記録のためにチャネルを格納するために、独立してチャネルに合わせるために、仮想化されたファームウェアを含むことができる。そのような実例では、セットトップボックス組み込み型のファームウェア215Nは、トリガリングパラメータを送り、記録プロセスはVFP202に移されるため、セットトップボックスのファームウェアは、DVRとしての拡張された機能を持つ。
【００３４】
図3は、本発明の1つまたは複数の実施形態によるユーザデバイス102Nの組み込み型のファームウェア215Nとインターフェースをとる、図2に開示された仮想化されたファームウェアプロバイダ202を使用する全体的な方法300を示す流れ図である。
【００３５】
方法300は、ステップ305で始まり、ステップ310へと進む。ステップ310で、ユーザデバイス102Nは、入力されたファームウェアデータを受信する。ファームウェアデータは、ユーザによって入力されたデータだけでなく、リモートサーバ104Nによって提示されたプロセスのためのパラメータも含む。ファームウェアデータは、また、デバイス操作データ、プロセッサ命令、および外部周辺装置(たとえば、センサデータ、スイッチ、押しボタンなど)からのデジタル信号に変換されたアナログ信号を含む。
【００３６】
次に、ステップ315で、方法300は、プラットフォーム108にファームウェアデータを通信するために、組み込み型のファームウェア215Nおよび接続エージェント(たとえばネットワーク接続マネージャ220)を調整する。次に、方法は、ステップ320へと続く。ステップ320で、ユーザデバイス102Nは、リモートサーバ104Nでプラットフォーム108によって認証される。認証は、ユーザデバイス102Nで動作するファームウェアだけでなく、ユーザデバイス102Nに関連する事前に定めたユーザプロフィールを検証するステップを含む。
【００３７】
ステップ325で、方法300は、仮想化されたファームウェアライブラリ120Nに格納された対応する仮想化されたファームウェアに組み込み型のファームウェア215Nに一致させる。それぞれのユーザデバイス102に対するファームウェアの仮想化については、図4にさらに記述している。オプションの実施形態では、方法300は、ステップ335へと進み、ウェブリンクまたはリモートプロセスコールは送信され、組み込み型のファームウェア215Nに格納される。そのような実施形態では、ユーザデバイス102Nは、直接的に協調ステップ315なしで、リモートサーバ104上のプロセスのリモートプロセスコールをトリガする命令を格納する。格納するべきリモートプロセスのタイプは、リモートサーバ104上の仮想化されたファームウェアのユーザまたはソフトウェア開発者によって指定される。
【００３８】
ステップ330で、ユーザデバイス102Nからのファームウェアデータは、それぞれのパラメータへと解析され、仮想化されたファームウェアに文脈的にマッピングされる。したがって、ユーザデバイス上の特定の入力または出力から発するパラメータは、対応する仮想化されたファームウェアに割り当てられる。たとえば、組み込み型のファームウェアパラメータは、テレビのパワーランプがオンであり、したがって、仮想化されたファームウェアで等価なパラメータに関連づけられていることを示している。
【００３９】
代替実施形態は、ファームウェアデータが事前解析される部分を含み、そのような部分(つまりパラメータ)のみがリモートサーバ104Nに通信される。そのような実施形態では、事前解析されたファームウェアデータは、ステップ325のマッピングに基づいて等価な仮想化されたファームウェアに割り当てられる。
【００４０】
ステップ340で、解析されたファームウェアデータは、ステップ325および330で、一致およびマッピングに基づいて仮想化されたファームウェアに挿入される。次に、ステップ345で、リモートプロセスは、仮想化されたファームウェア、およびユーザデバイス102Nから受信されたファームウェアデータに基づいてプラットフォーム108によって実行される。
【００４１】
ステップ350で、そのプロセスは、対応するCSC210でプラットフォームによって展開される。例について続けると、ユーザは、家庭でテレビの視聴を監視するためにテレビのパワーランプがオンである場合、それらの携帯電話にSMSテキストメッセージを送るためにプラットフォーム108でプロセスを指定することができる。そのような実例では、ファームウェアデータは、仮想化されたファームウェアによって解釈されるテレビのパワーランプであり、次に、SMSサーバ(つまりCSC210)でSMSメッセージを送るためにコードを実行するプロセスをトリガする。テキストメッセージは、テレビ使用についての通知を含み、ユーザアカウントに関連するデータに基づいて、プロセスに定義されているように、またはリモートサーバ104に格納されているように、ユーザのセル式電話の指定された携帯電話番号に送られる。
【００４２】
ステップ355で、CSC210からの処理された結果として生じるデータは、プラットフォーム108に返される。結果として生じるデータは、プロセスが正しく展開されたという確認信号を含む。さらに、結果として生じるデータは、CSC210からの追加の応答をアクティブにリスンおよび受信することを含む。例について続けると、プラットフォーム108は、ユーザのセル式電話番号からのSMSテキストメッセージだけでなく、テキストメッセージのコンテンツもリスンする。ユーザは、したがって、電源オン、電源オフ、表示タイマーのリセットなど、テレビの監視を制御するために、リモートサーバ104Nでユーザプロフィールとともに格納された事前に定めたプロセスコマンドをテキストメッセージ送信する(text)ことができる。
【００４３】
ステップ360で、CSCからの受信されたデータは、仮想化されたファームウェアライブラリおよびリモートプロセスパラメータに基づいて変換される。VFP202は、また、ユーザデバイス102の組み込み型のファームウェア215Nに固有のコードまたは信号を生成するために、対応するAPIおよびSDKを利用する。
【００４４】
ステップ365で、結果として生ずるデータは、接続エージェントによって受信され、リモートプロセスの実行を完了するために組み込み型のファームウェア215Nに通信される。受信されたデータは、したがって、組み込み型のファームウェア215Nのネイティブ言語であるため、リモートプロセスデータが生じ、組み込み型のファームウェア215Nによって生成されたかのようにユーザデバイス102Nが操作される。次に、方法300は、ステップ370で終了する。
【００４５】
図4は、本発明の1つまたは複数の実施形態によるプラットフォーム108で仮想化されたファームウェアを生成するための方法400を示す流れ図である。ユーザデバイスの各ファームウェアバージョンは、リモートサーバ104に別々に格納される。さらに、ファームウェアバージョンは、様々な提示されたサービスに対するリモートプロセスの実行を促進するために、修正されたパラメータを用いる複数の下位の反復(sub-iteration)を含むことができる。
【００４６】
方法は、ステップ405で始まり、ステップ410へと続く。ステップ410で、ファームウェアセットが、ソフトウェア開発者またはユーザから受信される。次に、ステップ415で、ファームウェアは、VFP202によって以前に受信および格納されたファームウェアと比較される。比較により、リモートサーバ104に格納された同じファームウェアの不必要なコピーの数が減らされる。ステップ420で、方法400が、ファームウェアが既に仮想化されていると決定した場合、方法400は、ステップ445で終了する。しかしながら、ファームウェアが異なる場合、またはそうでなければ、既存する仮想化されたファームウェアの修正である場合、方法400は、ステップ425に進む。
【００４７】
ステップ425で、ファームウェア命令は、それぞれの変動パラメータへと解析される。解析は、パラメータの文脈上のマッピング(つまり、1つのパラメータ値が、どのように別のパラメータに関係されるか)に基づく。パラメータは、また、所与のパラメータが表すコンテキストに関して解析される。たとえば、スキャナのファームウェアについて、特定のピンからの信号がスタートボタンの物理的なボタン押下が受信されたことを表すかどうかのパラメータ値が解析され、リモートプロセスのために認識される。
【００４８】
次に、ステップ430で、方法400は、特定のパラメータの値がどこで生じるかを決定する。パラメータ値は、ユーザによって入力され得る、ユーザデバイス102の動作の間に生成され得る、ユーザデバイスの特定のメモリブロックに格納され得る、リモートサーバ104のデバイスに対してユーザプロフィールとともに格納され得る、またはリモートソース(たとえばCSC210)から受信され得る。
【００４９】
ステップ435で、パラメータは、対応する値のソースに割り当てられる。割り当ては、ファームウェアがファームウェアデータをリスンするため、またはファームウェアに挿入するためにプロセスからデータをルーティングするために、パラメータをネットワークパラメータにリンクするステップを含む。
【００５０】
ステップ440で、ファームウェアは、仮想化されたファームウェアライブラリ120Nに仮想化されたファームウェア命令セットとして格納される。上記のように、ライブラリは、リモートプロセスを実行するだけでなく、更新されたファームウェアが所与のユーザデバイスで動作していることを確認するために、プラットフォーム108で利用可能である。次に、方法400は、ステップ445で終了する。
【００５１】
一部の実施形態では、ユーザインターフェース211を介して仮想化されたファームウェアのリアルタイム実行を提供するために、仮想化されたファームウェアは、リアルタイム実行で呼び出され運用され、組み込み型のファームウェアコマンドは、リモートファームウェアに統合される。リアルタイム実行は、リモートプロセスコール、およびリモートサーバ104aで更新されるサービスに対するコマンドまたは質問の復号化を含むため、ユーザデバイス102nが開発されたときに提示されたものに加えて、ユーザデバイス102nの後に開発されたサービスが呼び出され得る。たとえば、どの番組がユーザによって現在見られているかのツイートを投稿するためにテレビのリモートコントローラにキーを割り当てるオプションがユーザに提示され得る。仮想化されたファームウェアプラットフォーム108は、ツイッターのソーシャルサービスがリモート制御の後に開発されたという事実に関係なく、ツイートが送られることを可能にする。したがって、ファームウェア機能は、仮想化されたファームウェアプラットフォーム108によって提示されるものに制限され、純粋にユーザデバイス102n上の組み込み型のファームウェア215の機能ではない。
【００５２】
図5は、本発明の1つまたは複数の実施形態による仮想化されたファームウェアプラットフォーム108を使用するユーザデバイス102Nのスタンドアロンの動作のための方法500を示す流れ図である。方法500は、ユーザデバイスは、仮想化されたファームウェアプラットフォーム108にアクセスできない場合がある事例を扱うための例示的な方法である。方法500はステップ505で始まり、接続マネージャ220が、ネットワーク接続が失われているか、または利用不可能であるかを決定するステップ510に進む。必要に応じて、ステップ515で、方法500は、破棄された接続および削減されたファームウェア機能についてユーザに通知することができる。次に、ステップ520で、ユーザデバイス102Nは、削減された組み込まれた命令セットで動作する。一部の実施形態では、削減された組み込まれた命令セットは、ユーザデバイス102Nのデフォルトのファームウェア命令セットである。ステップ520で、ユーザデバイス102N、組み込み型のファームウェアは、仮想化されたファームウェアが、組み込み型のファームウェアによって実行されることを必要としない機能を用いて動作する。
【００５３】
ステップ525で、ユーザデバイス102Nは、仮想化されたファームウェア機能およびクエリを必要とする機能のキューを作成および格納する。方法500は、リモートサーバ104Nへの接続が使用可能であるかどうかを決定するためにステップ530に進み、接続があるまで、ステップ525でキューリストを構築するステップに戻る。接続が使用可能な場合、方法500は、仮想化されたファームウェアプラットフォーム108にアクセスするために、リモートサーバ104Nに、格納されたクエリを転送するためにステップ535に進む。
【００５４】
次に、ステップ540で、転送されたクエリは、リモートサーバ104Nでリモートプロセスに対して復号および解析される。ステップ545で、方法は、方法300に記述されているように、リモートサービスから結果として生じるデータを実行して、展開し、返す。次に、方法500は、ステップ550で終了する。
【００５５】
本明細書に開示された方法は、図1のシステム100を実装する例示的な方法の実例であり、範囲を制限するものではない。追加の実施形態は、異なる順序で実行される方法のステップ、または様々な開示された方法からのステップの組合せを含むことができる。
【００５６】
図6は、本発明の1つまたは複数の実施形態による例示的なコンピューティングサーバ内のモジュールを示す簡略化されたブロック図である。コンピュータシステム600は、前述の実施形態のサーバまたは電子デバイスを含む本質的に同様の構造を含む。
【００５７】
仮想化されたファームウェアのための方法および装置の様々な実施形態。そのようなコンピュータシステムの1つは、図6に示されているコンピュータシステム600であり、これは様々な実施形態において、図1〜図5に示された要素または機能のいずれかを実装することができる。様々な実施形態において、コンピュータシステム600は、上に記述した方法を実装するように構成され得る。コンピュータシステム600は、上記の実施形態の他のシステム、デバイス、要素、機能、または方法を実装するために使用され得る。図示した実施形態では、コンピュータシステム600は、様々な実施形態において、プロセッサで実行可能な実行可能プログラム命令622として(たとえば、プロセッサ610によって実行可能なプログラム命令)、方法300、400、および500を実装するように構成され得る。
【００５８】
図示する実施形態では、コンピュータシステム600は、入力/出力(I/O)インターフェース630を介してシステムメモリ620に結合された1つまたは複数のプロセッサ610a〜610nを含む。コンピュータシステム600は、I/Oインターフェース630に結合されたネットワークインターフェース640、およびカーソル制御デバイス660、キーボード670、およびディスプレイ680など1つまたは複数の入力/出力デバイス650をさらに含む。一部の実施形態では、キーボード670は、タッチスクリーン入力デバイスの場合がある。
【００５９】
様々な実施形態において、構成要素のいずれも、上記のファームウェアを仮想化するために、システムによって利用され得る。様々な実施形態において、ユーザインターフェースは、ディスプレイ680に生成および表示され得る。場合によっては、実施形態は、コンピュータシステム600の単一のインスタンスを使用して実装され得る一方、他の実施形態では、複数のそのようなシステム、またはコンピュータシステム600を構築する複数のノードは、様々な実施形態の異なる部分またはインスタンスをホストするように構成され得ることが考えられる。たとえば、一実施形態では、一部の要素は、他の要素を実装するノードとは異なるコンピュータシステム600の1つまたは複数のノードを介して実装され得る。別の例では、複数のノードは、分散的な方法でコンピュータシステム600を実装することができる。
【００６０】
異なる実施形態で、コンピュータシステム600は、限定しないが、パーソナルコンピュータシステム、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、アプリケーションサーバ、ストレージデバイス、スイッチ、モデム、ルータなどのなど周辺機器、または一般的に任意のタイプのコンピューティングデバイスまたは電子デバイスを含む様々なタイプのデバイスのいずれかの場合がある。
【００６１】
様々な実施形態において、コンピュータシステム600は、1つのプロセッサ610を含むユニプロセッサシステム、または複数のプロセッサ610を含むマルチプロセッサシステムの場合がある(たとえば、2、4、8、または別の適切な数)。1つのプロセッサ610を含むユニプロセッサシステムは、プログラムの同時データを処理および実行するために、複数のプロセッサに見えるようにシングルプロセッサの機能を分割することができる。プロセッサ610は、命令を実行することができる任意の適切なプロセッサの場合がある。たとえば、様々な実施形態において、プロセッサ610は、様々な命令セットアーキテクチャ(ISA)のいずれかを実装する汎用プロセッサまたは組み込まれたプロセッサの場合がある。マルチプロセッサシステムでは、プロセッサ610の各々は、一般に、必ずではないが、同じISAを実装する。
【００６２】
システムメモリ620は、プロセッサ610によってアクセス可能なプログラム命令622、ファームウェア633および/またはデータ632を格納するように構成され得る。様々な実施形態において、システムメモリ620は、静的ランダムアクセスメモリ(SRAM)、シンクロナス動的RAM(SDRAM:synchronous dynamic RAM)、不揮発性/フラッシュ型メモリ、または他のタイプのメモリなど適切なメモリ技術を使用して実装され得る。図示する実施形態では、上に記述した実施形態の要素のいずれかを実装するプログラム命令およびデータは、システムメモリ620内に格納され得る。他の実施形態では、プログラム命令および/またはデータは、異なるタイプのコンピュータでアクセス可能な媒体、またはシステムメモリ620もしくはコンピュータシステム600から離れた同様の媒体で受信、送信、または格納され得る。
【００６３】
一実施形態では、I/Oインターフェース630は、入力/出力デバイス650など、ネットワークインターフェース640または他の周辺インターフェースを含む、デバイスのプロセッサ610、システムメモリ620、および任意の周辺機器の間のI/Oトラフィックを調整するように構成され得る。一部の実施形態では、I/Oインターフェース630は、ある構成要素(たとえばシステムメモリ620)から別の構成要素(たとえばプロセッサ610)による使用に適した形式にデータ信号を変換するために、必要なプロトコル、タイミング、または他のデータ変換を実行することができる。一部の実施形態では、I/Oインターフェース630は、たとえば、ペリフェラルコンポーネントインターコネクト(PCI)バス標準またはユニバーサルシリアルバス(USB)標準の変形など、様々なタイプの周辺バスを通じて接続されたデバイスに対するサポートを含むことができる。一部の実施形態では、I/Oインターフェース630の機能は、たとえば、ノースブリッジおよびサウスブリッジなど2つ以上の個別の構成要素へと分割され得る。また、一部の実施形態では、システムメモリ620へのインターフェースなど、I/Oインターフェース630の機能の一部またはすべては、プロセッサ610に直接的に組み込まれ得る。
【００６４】
ネットワークインターフェース640は、データが、コンピュータシステム600と1つまたは複数の外部システムなどネットワーク(たとえばネットワーク690)に接続された他のデバイスとの間、またはコンピュータシステム600のノードの間で交換されることを可能にするように構成され得る。様々な実施形態において、ネットワーク690は、限定しないが、ローカルエリアネットワーク(LAN)(たとえばイーサネット(登録商標)または企業ネットワーク)、ワイドエリアネットワーク(WAN)(たとえばインターネット)、ワイヤレスデータネットワーク、セルラーネットワーク、Wi-Fi、他の何らかの電子データネットワーク、またはそれらの組合せを含む1つまたは複数のネットワークを含むことができる。様々な実施形態において、ネットワークインターフェース640は、たとえば、適切なタイプのイーサネット(登録商標)ネットワークなど、有線もしくは無線の一般的なデータネットワークを介して、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなど、電気通信/電話通信ネットワークを介して、ファイバチャネルSANなど、ストレージエリアネットワークを介して、または他の適切なタイプのネットワークおよび/またはプロトコルを介して、通信をサポートすることができる。
【００６５】
入力/出力デバイス650は、一部の実施形態では、1つまたは複数のディスプレイ端末、キーボード、キーパッド、タッチパッド、タッチスクリーン、スキャンデバイス、音声または光学による認識装置、または1つまたは複数のコンピュータシステム600によってデータを入力もしくはアクセスするのに適した他のデバイスを含む。複数の入力/出力デバイス650は、コンピュータシステム600に存在する場合があるか、またはコンピュータシステム600の様々なノードに分散され得る。一部の実施形態では、同様の入力/出力デバイスは、コンピュータシステム600から離れている場合があり、ネットワークインターフェース640を通じてなど有線または無線の接続を通じてコンピュータシステム600の1つまたは複数のノードと対話することができる。
【００６６】
一部の実施形態では、図示するコンピュータシステムは、図3〜図5の流れ図によって示された方法など、上に記述された方法のいずれかを実装することができる。他の実施形態では、異なる要素およびデータが含まれ得る。
【００６７】
コンピュータシステム600は、単に説明のためのものであり、実施形態の範囲を制限することを意図するものではないことを当業者は理解されるであろう。特に、コンピュータシステムおよびデバイスは、コンピュータ、ネットワークデバイス、インターネット家電、スマートフォン、タブレット、PDA、ワイヤレス電話、ポケットベルなどを含む、様々な実施形態の示された機能を実行することができるハードウェアまたはソフトウェアの任意の組合せを含むことができる。コンピュータシステム600は、図示されていない他のデバイスに接続され得るか、または代わりにスタンドアロンのシステムとして動作することができる。さらに、図示する構成要素によって提供される機能は、一部の実施形態では、より少数の構成要素で組み合わせられ得るか、または追加の構成要素に分散され得る。同様に、一部の実施形態では、図示する構成要素の一部の機能は、提供されない場合があるか、かつ/または他の追加的な機能が使用可能な場合がある。
【００６８】
当業者は、また、様々なアイテムは、使用される間にメモリまたはストレージに格納されるものとして示されているが、それらのアイテムまたはそれらの一部は、メモリ管理およびデータ完全性の目的のために、メモリと他のストレージデバイスとの間で転送され得ることを理解されるであろう。あるいは、他の実施形態では、ソフトウェア構成要素の一部またはすべては、別のデバイスのメモリで実行され、コンピュータ間通信を介して図示したコンピュータシステムと通信することができる。システム構成要素またはデータ構造の一部またはすべては、(たとえば命令または構造化データとして)コンピュータでアクセス可能な媒体または適切なドライブによって読み込まれる携帯用の物品に格納され得て、その様々な実例については上に記述されている。一部の実施形態では、コンピュータシステム600から離れているコンピュータでアクセス可能な媒体に格納された命令は、送信媒体またはネットワークおよび/もしくはワイヤレスリンクなどの通信媒体を介して伝達される、電気信号、電磁気信号、もしくはデジタル信号など信号を介して、コンピュータシステム600に送信され得る。様々な実施形態は、コンピュータでアクセス可能な媒体で、または通信媒体を介して、前述の記述により実装された命令および/またはデータの受信、送信、または格納をさらに含むことができる。一般的に、コンピュータでアクセス可能な媒体は、たとえばディスクまたはDVD/CD-ROMなど磁気的または光学的な媒体、RAM(たとえばSDRAM、DDR、RDRAM、SRAMなど)、ROMなど揮発性または不揮発性の媒体など記憶媒体またはメモリ媒体を含むことができる。
【００６９】
本明細書に記述した方法は、異なる実施形態では、ソフトウェア、ハードウェア、またはそれらの組合せにおいて実装され得る。さらに、方法の順序は変更され得て、また、様々な要素を追加、並べ替え、組み合わせ、省略、あるいは修正され得る。本明細書に記述したすべての実例は、限定を目的とせずに提示されている。本開示の利益を受ける当業者には明白なように、様々な修正および変更が行われ得る。特定の実施形態に関連して、実施形態による実現について記述してきた。これらの実施形態は、説明を目的とするものであり、限定を目的としていない。多数の変形形態、修正、追加、および改善が可能である。したがって、単一のインスタンスとして本明細書に記述された構成要素について、複数のインスタンスを提供され得る。様々な構成要素、動作、およびデータストアの間の境界はある程度は自由に決めてよく、また、特定の動作は、特定の説明的な構成に関連して示されている。機能の他の割り当てが想像され、後述する特許請求の範囲の範囲以内に該当する場合がある。最後に、例示的な構成における個別の構成要素として提示されている構造および機能は、組み合わせられた構造または構成要素として実装され得る。これらおよび他の変形形態、修正、追加、および改善は、後述する特許請求の範囲に規定される実施形態の範囲内に該当する場合がある。
【００７０】
前述の内容は、本発明の実施形態に関するものであるが、その基本的な範囲から逸脱することなく、本発明の他の実施形態およびさらなる実施形態が考案され得て、その範囲は、後述する特許請求の範囲によって決定される。
【符号の説明】
【００７１】
100  ファームウェア仮想化システム
102a  ユーザデバイス
102n  ユーザデバイス
103a  組み込まれたファームウェア
103n  組み込まれたファームウェア
104a  リモートサーバ
104N  リモートサーバ
108  リモートファームウェア仮想化プラットフォーム、プラットフォーム
110  ネットワーク
112a  メモリ
112n  メモリ
114a  メモリ
114n  メモリ
120  ファームウェア集合
120N  仮想化されたファームウェアライブラリ
122N  デバイスプロフィール
124  実行エンジン
124N  実行エンジン
200  ファームウェア仮想化システム
202  VFP
202N  仮想化されたファームウェアプロバイダ(VFP)
2021  仮想化されたファームウェアサービス
202N  仮想化されたファームウェアサービス
204N  サポート回路
205  クラウドクライアント
205N  クラウドクライアント
2061  レイヤインターフェース
206N  リモートインターフェース、リモートインターフェースレイヤ
2081  アプリケーションレイヤ、レイヤインターフェース
208N  アプリケーションレイヤ
2101  従来型のサービス構成要素(CSC)
210N  従来型のサービス構成要素(CSC)
211  ユーザインターフェース
211N  ユーザインターフェース
2121  レイヤインターフェース
212N  仮想化レイヤ
214N  物理装置
215  組み込み型のファームウェア
215N  組み込み型のファームウェア
220  ネットワーク接続マネージャ
220N  ネットワーク接続マネージャ
228N  デバイス認証モジュール
230N  ファームウェア仮想化モジュール
235N  プロセス拡張モジュール
2451…245N  仮想コードプロバイダ(VCP)
600  コンピューティングシステム
610a  プロセッサ
610b  プロセッサ
610n  プロセッサ
620  メモリ
622  プログラム命令
630  I/Oインターフェース
632  データ
633  ファームウェア
640  ネットワークインターフェース
650  入力/出力デバイス
660  カーソル制御デバイス
670  キーボード
680  ディスプレイ
690  ネットワーク
【図１】
0006464162.tif 000002
【図２】
0006464162.tif 000003
【図３】
0006464162.tif 000004
【図４】
0006464162.tif 000005
【図５】
0006464162.tif 000006
【図６】
0006464162.tif 000007