JP6464162B2 - ファームウェア仮想化のための方法および装置 - Google Patents

ファームウェア仮想化のための方法および装置 Download PDF

Info

Publication number
JP6464162B2
JP6464162B2 JP2016525493A JP2016525493A JP6464162B2 JP 6464162 B2 JP6464162 B2 JP 6464162B2 JP 2016525493 A JP2016525493 A JP 2016525493A JP 2016525493 A JP2016525493 A JP 2016525493A JP 6464162 B2 JP6464162 B2 JP 6464162B2
Authority
JP
Japan
Prior art keywords
firmware
user device
virtualized
data
remote
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016525493A
Other languages
English (en)
Other versions
JP2016529602A (ja
Inventor
トリサラ・チャンダリア
ジャン−バティスト・レオネリ
Original Assignee
チャンベッラ・リミテッド
トリサラ・チャンダリア
ジャン−バティスト・レオネリ
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by チャンベッラ・リミテッド, トリサラ・チャンダリア, ジャン−バティスト・レオネリ filed Critical チャンベッラ・リミテッド
Publication of JP2016529602A publication Critical patent/JP2016529602A/ja
Application granted granted Critical
Publication of JP6464162B2 publication Critical patent/JP6464162B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明の実施形態は、一般的に、ファームウェア仮想化のための方法および装置に関する。
電子システムおよび計算において、ファームウェアは、持続的なメモリと、メモリに格納されたプログラムコードおよびデータとの組合せである。ファームウェアを含むデバイスの典型的な例は、組み込み型のファームウェアシステムである(たとえば、交通信号灯、民生用機器、デジタル腕時計、コンピュータ、コンピュータの周辺機器、デジタルカメラなど)。これらのデバイスに含まれているファームウェアは、デバイスに対して管理プログラムを提供する。ファームウェアは、典型的には、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 ネットワーク

Claims (15)

  1. ユーザデバイスのファームウェアを仮想化するように動作する方法であって、
    リモートサーバ上で前記ユーザデバイスに対して仮想化されたファームウェアを格納するステップと、
    ネットワークを介して前記ユーザデバイスからファームウェアデータを受信するステップと、
    前記リモートサーバ上に格納された対応する仮想化されたファームウェアに前記ファームウェアデータの一部を割り当てるステップと、
    前記対応する仮想化されたファームウェアに前記ファームウェアデータの前記一部を挿入するステップと、
    前記ファームウェアデータの前記一部を含む前記対応する仮想化されたファームウェアに基づいて、前記リモートサーバによって提示されたリモートサービスにアクセスするために、少なくとも1つのリモートプロセスを展開するステップと
    を含む方法。
  2. 前記ファームウェアデータは、前記ユーザデバイス上の組み込み型のファームウェアからのコマンドをさらに含む、請求項1に記載の方法。
  3. 前記ファームウェアデータの一部割り当てるステップは、前記コマンドにおいてトリガパラメータおよびターゲットパラメータを特定するステップ含む、請求項2に記載の方法。
  4. 前記特定されたトリガパラメータおよびターゲットパラメータのパラメータ値に対する対応するソースを決定するステップをさらに含む、請求項3に記載の方法。
  5. 前記少なくとも1つのリモートプロセスは、前記リモートサーバ上のプラットフォームによって仮想化された従来型のサービス構成要素(CSC)における展開のためのプロセスに対応する、請求項1に記載の方法。
  6. 前記少なくとも1つのリモートプロセスを展開するステップは、前記CSCに対応するネイティブ言語でプロセスコードを生成し、前記CSCにおいて前記生成されたプロセスコードを実行する、請求項5に記載の方法。
  7. 前記ユーザデバイスに格納されたファームウェアは、前記リモートサーバ上に格納された前記仮想化されたファームウェアとは異なる、請求項1に記載の方法。
  8. 前記仮想化されたファームウェアに挿入するために前記ユーザデバイスに対応する前記リモートサーバに格納されたユーザデータを取得するステップをさらに含む、請求項1に記載の方法。
  9. ユーザデバイスからリモートサーバ上のファームウェア仮想化システムにアクセスするための方法であって、
    前記ユーザデバイスにおいて接続マネージャを使用して、前記リモートサーバ上のリモートの仮想化されたファームウェアプラットフォームにネットワークを通じて接続するステップと、
    ファームウェアデータに基づいてリモートプロセスを展開するために、前記ユーザデバイス上に格納された組み込み型のファームウェアから前記ファームウェアデータを前記仮想化されたファームウェアプラットフォームに送るステップと、
    前記仮想化されたファームウェアプラットフォームによって実行された前記リモートプロセスから処理されたデータを受信するステップであって、前記処理されたデータは、前記組み込み型のファームウェアのネイティブ言語である、ステップと、
    前記処理されたデータに基づいて前記ユーザデバイスおよび組み込み型のファームウェアを操作するステップと
    を含む方法。
  10. 接続するステップは、前記リモートサーバ上の対応するユーザアカウントを用いて前記ユーザデバイスを認証するステップをさらに含む、請求項9に記載の方法。
  11. 前記ファームウェアデータは、前記ユーザデバイス上の組み込み型のファームウェアからのコマンドをさらに含む、請求項9に記載の方法。
  12. 前記ファームウェアデータは、前記コマンドにおいてトリガパラメータおよびターゲットパラメータをさらに含む、請求項11に記載の方法。
  13. 前記ユーザデバイスの組み込み型のファームウェアに、前記組み込み型のファームウェアを使用して、前記仮想化されたファームウェアプラットフォームによって前記リモートプロセスの展開を開始するためのリモートプロセスコールをインストールするステップをさらに含む、請求項9に記載の方法。
  14. ユーザデバイスのファームウェアを仮想化するように動作するシステムであって、
    a)少なくとも1つのプロセッサと、
    b)少なくとも1つのネットワークに結合された少なくとも1つの入力デバイスと、
    c)前記少なくとも1つのプロセッサによって実行されたときに、
    i.リモートサーバ上にユーザデバイスに対して仮想化されたファームウェアを格納するステップと、
    ii.ネットワークを介して前記ユーザデバイスからファームウェアデータを受信するステップと、
    iii.前記リモートサーバ上に格納された対応する仮想化されたファームウェアに、前記ファームウェアデータの一部を割り当てるステップと、
    iv.前記対応する仮想化されたファームウェアに前記ファームウェアデータの前記一部を挿入するステップと、
    v.前記ファームウェアデータの前記一部を含む前記対応する仮想化されたファームウェアに基づいて、前記リモートサーバによって提示されたリモートサービスにアクセスするために少なくとも1つのリモートプロセスを展開するステップと
    を含む方法を実行するプロセッサ実行可能命令を格納する少なくとも1つのストレージデバイスと
    を含むシステム。
  15. 前記ファームウェアデータは、前記ユーザデバイス上の組み込み型のファームウェアからのコマンドをさらに含む、請求項14に記載のシステム。
JP2016525493A 2013-07-12 2014-07-10 ファームウェア仮想化のための方法および装置 Active JP6464162B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361845395P 2013-07-12 2013-07-12
US61/845,395 2013-07-12
PCT/US2014/046215 WO2015006599A1 (en) 2013-07-12 2014-07-10 Method and apparatus for firmware virtualization

Publications (2)

Publication Number Publication Date
JP2016529602A JP2016529602A (ja) 2016-09-23
JP6464162B2 true JP6464162B2 (ja) 2019-02-06

Family

ID=52278052

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016525493A Active JP6464162B2 (ja) 2013-07-12 2014-07-10 ファームウェア仮想化のための方法および装置

Country Status (9)

Country Link
US (2) US9830136B2 (ja)
EP (1) EP3019956A4 (ja)
JP (1) JP6464162B2 (ja)
KR (1) KR102073678B1 (ja)
CN (1) CN105765533B (ja)
CA (1) CA2915695C (ja)
HK (1) HK1225471A1 (ja)
SG (1) SG11201600194SA (ja)
WO (1) WO2015006599A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3054763B1 (fr) * 2016-07-29 2019-08-30 Dover Europe Sarl Systeme de protection avancee d'elements consommables ou detachables d'imprimante industrielle
CN106301914B (zh) * 2016-08-16 2019-10-25 上海斐讯数据通信技术有限公司 一种配置数据方法
CN106897027B (zh) * 2017-01-18 2020-03-24 成都电科致远网络科技有限公司 一种基于桌面虚拟化的分布式存储服务***及方法
JP2018120422A (ja) * 2017-01-25 2018-08-02 ルネサスエレクトロニクス株式会社 車載通信システム、ドメインマスタ、及びファームウェア更新方法
WO2019023359A1 (en) * 2017-07-25 2019-01-31 BioHiTech America, LLC SYSTEMS AND METHODS FOR INTELLIGENTLY CONTROLLING EQUIPMENT SUCH AS FOOD WASTE MACHINERY
US11269308B2 (en) 2017-12-01 2022-03-08 Ciambella Ltd. Method and apparatus for creating and managing smart programmable logic controller (PLC) solutions
US10802821B2 (en) * 2018-07-24 2020-10-13 Vmware, Inc. Firmware management
US11789748B2 (en) 2020-10-05 2023-10-17 SK Hynix Inc. Firmware parameters optimizing systems and methods
KR102553371B1 (ko) 2023-03-29 2023-07-07 주식회사 하임아이엔씨 사용 환경에 따른 커스터마이징된 mcu 펌웨어 업데이트 자동화 방법 및 장치

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US562360A (en) * 1896-06-16 Drawing-press
US5623604A (en) * 1992-11-18 1997-04-22 Canon Information Systems, Inc. Method and apparatus for remotely altering programmable firmware stored in an interactive network board coupled to a network peripheral
US6108715A (en) 1994-12-13 2000-08-22 Microsoft Corporation Method and system for invoking remote procedure calls
US6266809B1 (en) * 1997-08-15 2001-07-24 International Business Machines Corporation Methods, systems and computer program products for secure firmware updates
US6158031A (en) 1998-09-08 2000-12-05 Lucent Technologies, Inc. Automated code generating translator for testing telecommunication system devices and method
US7376904B2 (en) 2000-06-13 2008-05-20 National Instruments Corporation Automatic generation of programs with GUI controls for interactively setting or viewing values
US6907446B1 (en) 2000-10-16 2005-06-14 Implicit Networks, Inc. Method and system for dynamic delivery of beads
US20020111995A1 (en) * 2001-02-14 2002-08-15 Mansour Peter M. Platform-independent distributed user interface system architecture
US20020194608A1 (en) 2001-04-26 2002-12-19 Goldhor Richard S. Method and apparatus for a playback enhancement system implementing a "Say Again" feature
US7103641B2 (en) 2001-06-18 2006-09-05 Intel Corporation Method and apparatus for distributing computer platform firmware across a network
EP1454234A2 (en) 2001-09-28 2004-09-08 British Telecommunications Public Limited Company Client server model
US6895573B2 (en) 2001-10-26 2005-05-17 Resultmaker A/S Method for generating a workflow on a computer, and a computer system adapted for performing the method
US7320126B2 (en) * 2001-11-06 2008-01-15 Sandisk Corporation Implementation of in system programming to update firmware on memory cards
US7346672B2 (en) * 2002-03-12 2008-03-18 Hewlett-Packard Development Company, L.P. Automatic TFTP firmware download
WO2004006299A2 (en) 2002-07-03 2004-01-15 Tokyo Electron Limited Method for dynamic sensor configuration and runtime execution
US8074201B2 (en) 2002-07-10 2011-12-06 National Instruments Corporation Deployment and execution of a program on an embedded device
SE524627C2 (sv) 2002-10-07 2004-09-07 Abb Research Ltd Trådlös regulator och förfarande för styrning av en anordning anordnad relativt en robot
US7478141B2 (en) 2003-06-26 2009-01-13 Intel Corporation Accessing firmware of a remote computer system using a remote firmware interface
US7246319B2 (en) 2003-08-22 2007-07-17 Idx Systems Corporation Information system supporting customizable user interfaces and process flows
US8104043B2 (en) 2003-11-24 2012-01-24 Microsoft Corporation System and method for dynamic cooperative distributed execution of computer tasks without a centralized controller
US20060036755A1 (en) 2004-05-07 2006-02-16 Abdullah Ibrahim S Meta-protocol
US7810099B2 (en) 2004-06-17 2010-10-05 International Business Machines Corporation Optimizing workflow execution against a heterogeneous grid computing topology
US7603562B2 (en) * 2005-02-02 2009-10-13 Insyde Software Corporation System and method for reducing memory requirements of firmware
US7530059B2 (en) 2005-02-18 2009-05-05 International Business Machines Corporation Method for inlining native functions into compiled java code
US9317259B2 (en) 2005-05-12 2016-04-19 International Business Machines Corporation Apparatus, system, and method for automatically generating a reusable software component for interfacing with a web service
US7558915B2 (en) * 2005-06-06 2009-07-07 Dell Products L.P. System and method for updating the firmware of a device in a storage network
US20070056024A1 (en) * 2005-09-05 2007-03-08 Ho-Hsiung Hsu Method for remote server login
US7481361B2 (en) 2005-09-29 2009-01-27 International Business Machines Corporation Method and system for identifying unsafe synthetic transactions and modifying parameters for automated playback
KR100687762B1 (ko) 2006-03-07 2007-02-27 한국전자통신연구원 코드 해석 장치, 코드정보 제공 장치 및 이를 이용한 방법
JP4808558B2 (ja) 2006-07-12 2011-11-02 日本電信電話株式会社 連携シナリオ作成支援システム及びその方法並びにプログラム
US7886234B2 (en) 2006-10-13 2011-02-08 Mediatek Inc. Systems and methods for creating embedded target images
KR20080044576A (ko) 2006-11-17 2008-05-21 오종택 애드혹 통신 네트워크를 이용한 전력분산 장치 및 시스템과그 방법
US10997531B2 (en) 2007-09-11 2021-05-04 Ciambella Ltd. System, method and graphical user interface for workflow generation, deployment and/or execution
US20090198770A1 (en) 2008-02-04 2009-08-06 Universal Scientific Industrial Co., Ltd. System and method of updating codes in controller
US9311115B2 (en) 2008-05-13 2016-04-12 Apple Inc. Pushing a graphical user interface to a remote device with display rules provided by the remote device
US8249950B2 (en) 2008-07-11 2012-08-21 Ebay Inc. Payment mechanism integration wizard
EP2329369A1 (en) 2008-08-25 2011-06-08 Power-One Italy S.p.a. A hardware virtualization system
CN101373441B (zh) * 2008-09-19 2012-04-18 苏州壹世通科技有限公司 一种基于固件的虚拟化平台***
DE102009011679A1 (de) 2009-02-23 2010-08-26 Pilz Gmbh & Co. Kg Verfahren und Vorrichtung zum Erstellen eines Anwenderprogrammes für eine Sicherheitssteuerung
US8948067B2 (en) 2009-04-23 2015-02-03 Honeywell International Inc. Wireless controller grids for process control and other systems and related apparatus and method
EP2433257A4 (en) * 2009-05-19 2014-07-30 Nholdings Sa PROVIDING A LOCAL DEVICE OF COMPUTER SERVICES FROM A REMOTE HOST
US8214653B1 (en) * 2009-09-04 2012-07-03 Amazon Technologies, Inc. Secured firmware updates
JP2011150430A (ja) 2010-01-19 2011-08-04 Kyocera Mita Corp Sdk配布パッケージ生成装置、sdk配布パッケージ生成方法、およびsdk配布パッケージ生成プログラム
US8869138B2 (en) * 2011-11-11 2014-10-21 Wyse Technology L.L.C. Robust firmware update with recovery logic
US8775781B2 (en) * 2010-03-25 2014-07-08 Microsoft Corporation Intelligent boot device selection and recovery
CN102262557B (zh) 2010-05-25 2015-01-21 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
US8655461B2 (en) 2010-05-25 2014-02-18 Siemens Product Lifecycle Management Software Inc. Method, system, and non-transitory computer readable storage medium for generating code for a closed-loop controller
US8959363B2 (en) * 2010-06-03 2015-02-17 Intel Corporation Systems, methods, and apparatus to virtualize TPM accesses
US8479154B1 (en) 2010-08-20 2013-07-02 Google Inc. Interaction with partially constructed mobile device applications
CN102479079B (zh) 2010-11-29 2015-04-01 中兴通讯股份有限公司 应用生成方法和装置
US20120198434A1 (en) * 2011-01-31 2012-08-02 Digi International Inc. Virtual bundling of remote device firmware upgrade
US20120233588A1 (en) 2011-03-10 2012-09-13 Infosys Technologies Ltd. Blended service creation, test, and deployment environment for multiple service endpoints
US9250883B2 (en) 2011-06-02 2016-02-02 Open Invention Network, Llc System and method for pervasive software platform-based model driven architecture application generator
IN2014DN03053A (ja) * 2011-10-21 2015-05-08 Hewlett Packard Development Co
US20130201316A1 (en) 2012-01-09 2013-08-08 May Patents Ltd. System and method for server based control
IN2014DN06956A (ja) 2012-01-23 2015-04-10 Scl Elements Inc
AU2013247347B2 (en) 2012-04-12 2018-02-15 Ivanti, Inc. Configuration of third party applications in a sandboxed environment
US9015694B2 (en) * 2012-10-31 2015-04-21 Aruba Networks, Inc Cloud-based firmware distribution service
KR102243793B1 (ko) 2013-06-18 2021-04-26 시암벨라 리미티드 코드 가상화 및 원격 프로세스 호출 생성을 위한 방법 및 장치
DK3011442T3 (da) 2013-06-18 2021-01-04 Ciambella Ltd Fremgangsmåde og anordning til generering af et brugerdefineret softwareudviklingskit (sdk)
US20150127192A1 (en) 2013-11-06 2015-05-07 Hitachi, Ltd Wireless vehicle control system
US9619122B2 (en) 2014-01-10 2017-04-11 Ciambella Ltd. Method and apparatus for automatic device program generation
JP6441061B2 (ja) 2014-12-16 2018-12-19 株式会社ダイヘン 機械制御システム及び機械制御システムのユーザインタフェース設定方法
US9547482B2 (en) 2015-06-02 2017-01-17 Sap Portals Israel Ltd. Declarative design-time experience platform for code generation

Also Published As

Publication number Publication date
US10282185B2 (en) 2019-05-07
US20150019692A1 (en) 2015-01-15
WO2015006599A1 (en) 2015-01-15
CA2915695C (en) 2022-03-29
HK1225471A1 (zh) 2017-09-08
EP3019956A1 (en) 2016-05-18
CN105765533A (zh) 2016-07-13
US9830136B2 (en) 2017-11-28
KR102073678B1 (ko) 2020-02-06
CN105765533B (zh) 2019-03-01
CA2915695A1 (en) 2015-01-15
SG11201600194SA (en) 2016-02-26
JP2016529602A (ja) 2016-09-23
KR20160061306A (ko) 2016-05-31
EP3019956A4 (en) 2017-03-15
US20180081658A1 (en) 2018-03-22

Similar Documents

Publication Publication Date Title
JP6464162B2 (ja) ファームウェア仮想化のための方法および装置
US10929117B2 (en) Container image building using shared resources
KR102622652B1 (ko) 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 방법 및 장치
EP3011442B1 (en) Method and apparatus for customized software development kit (sdk) generation
EP3011444B1 (en) Method and apparatus for code virtualization and remote process call generation
CN111930521A (zh) 用于部署应用的方法、装置、电子设备及可读存储介质
US9619122B2 (en) Method and apparatus for automatic device program generation
KR20160108306A (ko) 자동 장치 프로그램 생성을 위한 방법 및 장치
CN111367534B (zh) 一种基于应用环境的服务编排方法及***
US10574724B2 (en) Automatic discovery of management nodes and generation of CLI using HA module
US11900074B2 (en) Method and apparatus for implementing an end-to-end API design and development module integrating with firmwide tools and processes
US9513762B1 (en) Static content updates
JP2023520847A (ja) イメージファイル生成方法、装置及びコンピュータプログラム
EP2951678B1 (en) Remotely executing operations of an application using a schema that provides for executable scripts in a nodal hierarchy
US8914815B2 (en) Automated framework for tracking and maintaining kernel symbol list types
EP3872630B1 (en) Request processing method and apparatus, electronic device, and computer storage medium
CN116028099A (zh) 一种安装包生成的方法及相关装置、设备和存储介质
KR102368826B1 (ko) 클라우드 서버 및 클라우드 서버의 동작
CN112799687B (zh) 一种数据处理方法、装置、存储介质及计算机设备
US11068276B2 (en) Controlled customization of silicon initialization
KR101771438B1 (ko) 이동통신 단말기 및 이의 어플리케이션 설치 방법
TWI634481B (zh) 應用程式拼裝方法和系統
CN114564403A (zh) 信息展示方法和计算设备
TW201635140A (zh) 應用程式安裝方法及系統

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170707

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181126

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190107

R150 Certificate of patent or registration of utility model

Ref document number: 6464162

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250