(57)【要約】【課題】異なるシステムまたは実装に渡ってファームウェアをアップデートするための一様のスキームを提供する。【解決手段】読み取り専用管理オブジェクトは、アップデートすることができるファームウェアコンポーネントに関連する情報を含むように作成される。この情報には、コンポーネント識別子、コンポーネントバージョン、および、コンポーネントのためのユーザーフレンドリ名が含まれ、ファームウェアコンポーネントを含むデバイスの状態を指示する状態識別子も含まれる。他のコンポーネントは、管理オブジェクトからの情報をファームウェアアップデートプロセスの一部として使用することができる。アップデート管理オブジェクトは、アップデートパッケージをデバイスに配信するように動的に作成される。アップデートパッケージは、複数のファームウェアコンポーネントへのアップデートを含むことができる。【選択図】図１
2006216047.tif 000002
【特許請求の範囲】
【請求項１】
モバイルコンピューティングデバイスのファームウェアを記述するためのシステムであって、
ファームウェアコンポーネントの識別情報およびバージョン情報を含む読み取り専用管理オブジェクトと、
前記ファームウェアコンポーネントのアップデートパッケージに関連する識別情報およびバージョン情報を含むアップデートオブジェクトとを備えることを特徴とするシステム。
【請求項２】
前記ファームウェアコンポーネントの前記識別情報およびバージョン情報にアクセスして、ファームウェアコンポーネントアップデートパッケージが入手可能であるかどうかを判断するアップデートモジュールをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項３】
前記アップデートオブジェクトは、前記ファームウェアコンポーネントアップデートパッケージのロケーションをさらに含むことを特徴とする請求項２に記載のシステム。
【請求項４】
前記ファームウェアコンポーネントアップデートパッケージの前記ロケーションは、ユニフォームリソース識別子であることを特徴とする請求項３に記載のシステム。
【請求項５】
前記管理オブジェクトを使用して、前記アップデートオブジェクトを提供するアップデートサーバをさらに備えることを特徴とする請求項４に記載のシステム。
【請求項６】
前記アップデートオブジェクトは、ローカライズされたコンポーネントを参照することを特徴とする請求項５に記載のシステム。
【請求項７】
前記アップデートオブジェクトをモバイルコンピューティングデバイスから得ることができるピアアップデートモジュールをさらに備えることを特徴とする請求項５に記載のシステム。
【請求項８】
ローカライズされたコンテンツを参照するアップデートオブジェクトを識別することができるローカライゼーションモジュールをさらに備えることを特徴とする請求項５に記載のシステム。
【請求項９】
前記アップデートオブジェクトを送信のために保護することができるセキュリティモジュールをさらに備えることを特徴とする請求項５に記載のシステム。
【請求項１０】
ポータブルコンピューティングデバイスのファームウェアコンポーネントを管理する、コンピュータにより実施される方法であって、
読み取り専用管理オブジェクトを使用して、少なくとも部分的には、アクセスされた情報に基づいて、入手可能なファームウェアコンポーネントアップデートパッケージを識別するステップと、
前記ファームウェアコンポーネントアップデートパッケージに関連する情報を含むアップデートオブジェクトを作成するステップとを備えることを特徴とする方法。
【請求項１１】
アップデートオブジェクトを作成するステップは、アップデートコンポーネントのロケーションを提供するステップ、および、ローカライゼーション情報を使用するステップのうちの少なくとも１つを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記アップデートオブジェクトをモバイルコンピューティングデバイスに送信するステップをさらに備えることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記アップデートオブジェクトをモバイルコンピューティングデバイスに送信するステップは、前記アップデートオブジェクトにデジタル署名するステップ、および、前記アップデートオブジェクトを暗号化するステップのうちの少なくとも１つを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記ファームウェアコンポーネントパッケージを前記モバイルコンピューティングデバイスに送信するステップをさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１５】
ポータブルコンピューティングデバイスのファームウェアコンポーネントを管理するためのシステムであって、
読み取り専用管理オブジェクトを使用して、少なくとも部分的には、アクセスされた情報に基づいて、入手可能なファームウェアコンポーネントアップデートパッケージを識別する手段と、
前記ファームウェアコンポーネントアップデートパッケージに関連する情報を含むアップデートオブジェクトを作成する手段とを備えることを特徴とするシステム。
【請求項１６】
アップデートオブジェクトを作成する前記手段は、アップデートコンポーネントのロケーションを提供する手段を含むことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記アップデートオブジェクトをモバイルコンピューティングデバイスに送信する手段をさらに備えることを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記アップデートオブジェクトをモバイルコンピューティングデバイスに送信する前記手段は、前記アップデートオブジェクトにデジタル署名する手段、および、前記アップデートオブジェクトを暗号化する手段のうちの少なくとも１つを含むことを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記ファームウェアコンポーネントパッケージを前記モバイルコンピューティングデバイスに送信する手段をさらに備えることを特徴とする請求項１７に記載のシステム。
【請求項２０】
アップデートオブジェクトを作成する前記手段は、ローカライゼーション情報を使用する手段を含むことを特徴とする請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェアコンポーネントのステータスの発行およびファームウェアコンポーネントのアップデートに関する。
【背景技術】
【０００２】
コンピューティングデバイス、特に、数ある中でも、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）および携帯電話など、ポータブルコンピューティングデバイスは通常、マシン可読命令のセット、またはコードを含む。このような命令は通常、コンピューティングデバイス上で、フラッシュメモリまたは読出し専用メモリ（ＲＯＭ）など、不揮発性ストレージエリア内に格納される。命令を、ＲＯＭなどの不揮発性ストレージエリアに格納することによって、そのデバイスの操作命令を、デバイスへの電力の供給が中断されるときでさえ、保持することができる。ＲＯＭなどの不揮発性メモリ内に格納されたコードは時として、ファームウェアと呼ばれる。
【０００３】
これらのコンピューティングデバイスのメーカー、所有者およびユーザは、時々、ＲＯＭ内に格納されたコードを変更することを必要とするか、または望む場合がある。このような変更の動機には、機能またはセキュリティにおける変更、または、コード内の欠陥を訂正することが含まれる。このタスクを支援するため、バージョン番号付け、モジュール化および通信プロトコルなどの方法およびデバイスが使用されている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、ファームウェアをアップデートするための、異なる、および潜在的に互換性のない、方法およびデバイスの存在は、アップデートを実行するタスクを複雑にする。ファームウェアをアップデートするための現在のシステムおよび方法は、ファームウェアアップデートシステムまたはファームウェアアップデート実装において根本的な差異を考慮に入れることができず、異なるシステムまたは実装に渡ってファームウェアをアップデートするための一様のスキームを提供しない。
【課題を解決するための手段】
【０００５】
以下で、基本的理解を提供するために、簡単な概要を提示する。この概要は、広範な概要ではない。これは、主要／重要な要素を特定することも、範囲を線引きすることも意図するものではない。その唯一の目的は、後に提示されるより詳細な説明の前置きとして、いくつかの概念を簡単な形態で提示することである。加えて、本明細書で使用されたセクションの見出しは、単に便宜上提供されるものであり、決して限定として解釈されるべきではない。
【０００６】
読み取り専用管理オブジェクトは、アップデートすることができるファームウェアコンポーネントに関連する情報を含むように作成される。この情報には、コンポーネントＩＤ、コンポーネントバージョン、および、このコンポーネントのユーザーフレンドリ名が含まれる。この情報にはまた、ファームウェアコンポーネントを含むデバイスの状態を指示する状態識別子もが含まれる。他のコンポーネントは、管理オブジェクトからの情報を、ファームウェアアップデートプロセスの一部として使用することができる。
【０００７】
アップデートオブジェクトは、モバイルコンピューティングデバイスに送信されるように作成される。アップデートオブジェクトは、使用可能なファームウェアコンポーネントアップデートパッケージに関連する情報を含み、通常は、バージョン、名前およびロケーション情報を含む。ロケーション（記憶場所）情報は通常、ユニフォームリソース識別子の形態で提供される。アップデートオブジェクトは、複数の使用可能なファームウェアコンポーネントアップデートパッケージについての情報を含むことができる。
【０００８】
アップデートサーバは、管理オブジェクトからの情報にアクセスし、モバイルコンピューティングデバイスのファームウェアをアップデートするために使用可能であるファームウェアコンポーネントアップデートパッケージを識別することができる。アップデートサーバはアップデートオブジェクトを作成し、そのオブジェクトをモバイルコンピューティングデバイスに送信する。アップデートオブジェクト内に含まれた情報は、モバイルコンピューティングデバイスに、ファームウェアコンポーネントアップデートパッケージのロケーションを与える。
【０００９】
開示および説明されるコンポーネントおよび方法は、以下で十分に説明され、特に特許請求の範囲において指摘される特徴を備える。以下の説明および添付の図面は、ある例示的態様を詳細に示す。しかし、これらの態様は、開示されたコンポーネントおよび方法を使用することができる様々な方法のほんの数例を示す。開示および説明されるコンポーネントおよび方法の特定の実施態様は、そのような態様およびそれらの等価物のいくつか、多数またはすべてを含むことができる。本明細書で提示された特定の実施態様および実施例の変形形態は、図面と共に考慮されると以下の詳細な説明から明らかになるであろう。
【発明を実施するための最良の形態】
【００１０】
本出願で使用されるとき、「コンポーネント」、「システム」、「モジュール」などの語はコンピュータ関連エンティティを指すように意図され、このエンティティは、ハードウェア、ソフトウェア（例えば、実行中のソフトウェア）、および／またはファームウェアなどである。例えば、コンポーネントは、プロセッサ上で実行するプロセス、プロセッサ、オブジェクト、実行可能ファイル、プログラム、および／またはコンピュータであり得る。また、サーバ上で実行するアプリケーションおよびサーバの両方も、コンポーネントであり得る。１つまたは複数のコンポーネントがプロセス内に存在することができ、コンポーネントは、１つのコンピュータ上でローカライズされるか、および／または、２つ以上のコンピュータの間で分散され得る。
【００１１】
開示されるコンポーネントおよび方法は、図面を参照して説明され、図面において、類似の参照番号は全体に渡って類似の要素を指すために使用される。以下の説明では、説明のため、開示される主題の十分な理解を提供するために、多数の特定の詳細を示す。しかし、特定の実施態様では、これらの特定の詳細のあるものを省略することができ、または他のものと結合することができることは明らかであろう。他の場合では、説明を容易にするために、ある構造およびデバイスをブロック図の形で示す。加えて、示される特定の実施例は、クライアント／サーバキテクチャと一致する用語を使用する場合があり、または、クライアント／サーバ実施態様の実施例である場合もあるが、開示および説明されたコンポーネントおよび方法の主旨または範囲から逸脱することなく、クライアントおよびサーバの役割は逆にされる場合があること、開示および説明されたコンポーネントおよび方法はクライアント／サーバキテクチャに限定されず、具体的にはピアツーピア（Ｐ２Ｐ）アーキテクチャを含む他のアーキテクチャにおける使用のために容易に適合される場合があることは、当業者には理解されよう。さらに、本明細書で提示される特定の実施例は、特定のコンポーネントを含むか、または参照するが、本明細書で開示および説明されるコンポーネントおよび方法の実施態様は、必ずしもこれらの特定のコンポーネントに限定されず、他の状況においても使用することができることに留意されたい。
【００１２】
図１は、本発明の一態様によるファームウェアアップデートシステム１００のシステムブロック図である。このシステムは、ファームウェアコードデータストア１２０にアクセスする、アップデートサーバ１１０を含む。アップデートサーバは、ファームウェアアップデートを提供するために特に設計された専用サーバとすることができ、または、ウェブサーバなど、より汎用的な情報サーバの一部にすることができる。ファームウェアコードデータストア１２０は、ファームウェアコードバージョン、ならびに、いかなるアップデートされたコードバージョンにも関連する情報をそれ自体で含むことができる。アップデートサーバ１１０を、無線通信コンポーネントを含むネットワーク１３０に接続することができる。通信チャネル１４０は、アップデートサーバ１１０をネットワーク１３０に結合し、有線チャネルまたは無線チャネルとすることができる。
【００１３】
モバイルコンピューティングデバイス１５０は、マシン可読命令をファームウェア１６０の形態で含む。モバイルコンピューティングデバイス１５０はまた、数ある中でも、送信器、受信器、または複合トランシーバなど、無線通信コンポーネントを含むこともできる。モバイルコンピューティングデバイス１５０は、無線通信チャネル１７０によってネットワーク１３０に結合される。無線通信チャネル１７０は、ＩＥＥＥ  ８０２．１１ｘベース（ＷｉＦｉ）の無線接続とすることができ、または、別の適切な無線通信チャネルとすることができる。企図されたこれらの無線チャネルの中には、ＩＥＥＥ  ８０２．１６（ＷｉＭａｘ）、ブルートゥース、赤外線（ＩｒＤａ）、符号分割多元接続（ＣＤＭＡ）、時分割多元接続（ＴＤＭＡ）、および、ＧＳＭ（ｇｌｏｂａｌ  ｓｙｓｔｅｍ  ｆｏｒ  ｍｏｂｉｌｅ  ｃｏｍｍｕｎｉｃａｔｉｏｎｓ）携帯電話接続がある。
【００１４】
オペレーション中のファームウェアアップデートシステム１００の一実施例は、以下の通りである。モバイルコンピューティングデバイス１５０は、ネットワーク１３０との無線接続１７０を作成する。ネットワーク１３０は、アップデートサーバ１１０との接続１４０を提供する。アップデートサーバは、確立された接続を使用して、モバイルコンピューティングデバイス１５０上に現在あるファームウェア１６０に関する情報にアクセスする。
【００１５】
アップデートサーバ１１０は、モバイルコンピューティングデバイス１５０上に現在インストールされているファームウェア１６０の個々のコンポーネントを、ファームウェアコードデータストア１２０内に格納されているそのデバイスのためのファームウェアコンポーネントのバージョンと比較する。モバイルコンピューティングデバイス１５０上にインストールされたファームウェア１６０のコンポーネントが現在のバージョンである場合、アクションは起きない。ファームウェアコードデータストア１２０内に格納された、モバイルコンピューティングデバイス１５０のための少なくとも１つのファームウェアコンポーネントが、モバイルコンピューティングデバイス１５０上に格納されたファームウェア１６０のコンポーネントのアップグレードまたはより新しいバージョンである場合、モバイルコンピューティングデバイス１５０は、アップグレードまたはより新しいバージョンをアップデートサーバ１１０からダウンロードし、現在インストールされているコンポーネントを置換する。このスキームのさらなる詳細を以下で論ずる。
【００１６】
ファームウェアは慣習上、いくつかの数の個々のパッケージまたはコンポーネントに分離され、その各々を個別にアップデート、削除または置換することができる。各パッケージは通常、パッケージ識別子、バージョン識別子、およびアップデートステータス識別子を含む。簡素な可能なアップデートスキームでは、記述された各ファームウェアコンポーネントは、ステータス情報をユーザまたはアップデートサーバへ提供し、アップデートをダウンロードすること、および、ＲＯＭ内のそれの適切な場所において、特定のコンポーネントをアップデートまたは置換することに備える。しかし、しばしば、ファームウェアアップデートは、ＲＯＭイメージのいくつかの異なったエリアのアップデートまたは置換を必要とし、その各々は通常、別々にバージョニングされるようになる。このようなスキームでは、ＯＭＡ（Ｏｐｅｎ  Ｍｏｂｉｌｅ  Ａｌｌｉａｎｃｅ）ファームウェアアップデート（ＦＵＭＯ）仕様によって想定された実施態様など、標準化された実施態様を使用してアップデートすることは、複数のダウンロードおよびアップデートサイクルが、ＲＯＭイメージの、影響を受ける各セクションを個々にアップデートすることを必要とする。このプロセスは、「同期していない（ｏｕｔ  ｏｆ  ｓｙｎｃ）」ファームウェアパッケージをもたらす。というのは、あるパッケージはアップデートされていたが、他のパッケージはまだ置換されていなかったからである。
【００１７】
解決策は、ステータスを、ダウンロードおよびアップデートの挙動から分割することである。この論理的分割は、モバイルオペレータインフラストラクチャによる、アップデートされる必要のあるファームウェアコンポーネントの検出のための、標準化された問い合わせを許可する一方で、なお、ＲＯＭイメージに適用されるべきコードアップデートの集合体を含むパッチを可能にする。１つの可能な実施態様は、標準化されたモバイルオペレータインフラストラクチャを使用することを含む。このようなスキームでは、読み取り専用管理オブジェクトを発行して、アップデートすることができるＲＯＭイメージの領域またはファームウェアコンポーネントを記述することができる。管理オブジェクトを、図２に示すスキーマによって示すように実施することができる。
【００１８】
図２は、読み取り専用管理オブジェクト２００のためのスキーマを示す。このタイプのオブジェクトを、数ある中でも、ＯＭＡ  ＦＵＭＯデバイス管理ツリーなど、デバイス管理ツリーの一部として管理することができる。読み取り専用管理オブジェクト２００は、ＲＯＭＰａｃｋａｇｅノード２１０をルートレベルで含む。この特定のスキーマによれば、ただ１つのルートレベルノードが存在することができる。異なる数のノードをルートレベルで有する他のスキーマが可能であることは、当業者には理解されよう。
【００１９】
この実施例では、ＲＯＭＰａｃｋａｇｅノード２１０は、ルートレベルの親ノードであり、グローバル一意識別子（「ＧＵＩＤ」）とすることができるＲＯＭパッケージ識別子を、バージョンおよび名前情報と共にグループ化する。ＧＵＩＤは、英数字識別子、バイナリ識別子、１６進識別子、または別の適切な識別子とすることができる。この特定のスキーマに示すように、ＲＯＭＰａｃｋａｇｅノード２１０が必要とされ、これはルートレベルに位置する単一のインスタンスに制限される。このスキーマのさらなる考察は時々、ある形式において必要とされるか、または制限されるとき、あるコンポーネントを参照することに留意されたい。このような参照が行われるとき、これらの参照は特定の実施例のためのみであり、一実施例として提供された特定の実施態様からの逸脱が不可能であることを示唆しない。
【００２０】
次のレベルは、少なくとも１つのｘ＋ノード２２０を含み、これはパッケージ識別子を含む。このパッケージ識別子は、英数字識別子、バイナリ識別子、１６進識別子、または別の適切な識別子とすることができる。簡単のため、単一のｘ＋ノード２２０のみを示す。しかし、複数のｘ＋ノード２２０が可能であるだけでなく、想定される。この実施例の各ｘ＋ノード２２０は、１つのＰｋｇＶｅｒｓｉｏｎノード２３０、１つのＰｋｇＮａｍｅノード２４０、および１つのＳｔａｔｅノード２５０を含む。これらのコンポーネントのさらなる考察は、以下の通りである。
【００２１】
各ｘ＋ノード２２０は、特定のＲＯＭパッケージの識別子を表す。ｘ＋ノード２２０に含まれた値はＧＵＩＤであり、これは、英数字識別子、バイナリ識別子、１６進識別子、または別の適切な識別子とすることができる。ｘ＋ノード２２０は、それが関連するＲＯＭイメージについてのさらなる記述的情報を含む、他の下位レベルノードをグループ化する働きをする。具体的には、各ｘ＋ノード２２０は、イメージ全体から離れて、単一で分離可能なユニットとして処理することができる、ＲＯＭイメージの別個の部分のための識別子としての機能を果たすことができる。
【００２２】
ＰｋｇＶｅｒｓｉｏｎノード２３０は、ＲＯＭイメージの部分について、具体的には、ＲＯＭイメージのパッケージについてのバージョン情報を含む。バージョン情報を任意の適切なフォーマットで提供することもでき、これらのフォーマットには、具体的には、英数字ストリング、バイナリ識別子、または１６進識別子が含まれる。この特定の実施例では、ただ１つのＰｋｇＶｅｒｓｉｏｎノード２３０のみが、ｘ＋ノード２２０によって指定されたグループ内で許可される。しかし、他のスキームが可能であることは、当業者には容易に理解されよう。企図されるこれらのスキームの中には、複数のバージョン識別子を含むものがあり、その場合、パッケージは複数の既存のパッケージを置換することができ、また、数ある中でもゲームまたはテレビ会議など、特定の使用のために意図されたバージョンなど、サブバージョンまたは特殊バージョンを含むものがある。サブバージョンまたは特殊バージョンのコンポーネントの場合、サブバージョンまたは特殊バージョンに関連付けられる、特殊にフォーマットされた識別子を使用することができる。加えて、または代替として、提示された実施例のスキーマを拡張して、サブバージョンまたは特殊バージョン識別のためのノードを含めることができる。
【００２３】
提示されたスキーマの１つの利点は、その拡張性である。本明細書で提示された実施例のスキーマは、ベースレベルフレームワークを提供し、拡張の開発を含むさらなる開発が、このフレームワークに基づくようにすることができる。汎用的に適用可能か、極めて実装依存か、またはその中間のどこかにすることができる様々な方法で、ベーススキーマを拡張することができることに留意されたい。
【００２４】
ＰｋｇＮａｍｅノード２４０は、ＲＯＭパッケージの名前を含む。この実施例では、名前は、人が読めるものであり、文字または英数字ストリングである。しかし、ＲＯＭパッケージの名前は代替方法で表すことができ、これらの方法には具体的には、人が読めない英数字識別子、バイナリ識別子、１６進識別子、または別の適切な識別子が含まれる。この実施例では、ただ１つのＰｋｇＮａｍｅノード２４０のみが各ｘ＋ノード２２０について提供されるが、特定の実施態様では複数を使用することができる。
【００２５】
Ｓｔａｔｅノード２５０は、パッケージのためのモバイルデバイスの状態のための値を含む。この値は実装依存にすることができ、モバイルコンピューティングデバイスの状態情報を格納するために使用することができる。例えば、アップデートが成功したこと、および、古いデータが削除されたことを指示する値を、Ｓｔａｔｅノード２５０にセットすることができる。同様に、アップデートの試行が失敗していること、および、古いデータが保持されていることを指示する値をセットすることができる。同様に、アップデートの試みが失敗したこと、および古いデータが保持されたままであることを指示する値をセットすることができる。幅広い種類の他の状態記述子および値を作成し使用することができる。
【００２６】
図３は、本発明の一態様によるアップデートオブジェクト３００のスキーマ図である。この実施例では、アップデートオブジェクト３００のインスタンスが、適用されるべき特定のアップデートに応じて、ランタイムで動的に作成される。図２に関連して論じたオブジェクトスキーマのように、アップデートオブジェクトをまた、ＯＭＡ  ＦＵＭＯシステムまたは別の適切なシステムに従って処理することもできる。このオブジェクトは、ＦｗＵｐｄａｔｅノード３１０をルートレベルで含む。この特定のスキーマによれば、ただ１つのルートレベルノードが存在することができる。しかし、他の実施態様では、複数のルートレベルノードが使用され得る。提示されたスキーマを、特定の実施態様の特有の必要性に合わせてどのように修正することができるか、当業者には理解されよう。
【００２７】
次のレベルは、パッケージ識別子を含む、ｘ＊ノード３２０を含む。明確にするために、単一のｘ＊ノード３２０を示す。しかし、複数のｘ＊ノード３２０を使用することができ、使用されるであろうことが企図されている。この実施例では、ｘ＊ノード３２０のパッケージ識別子は、イメージアップデートパッケージのＧＵＩＤである。ＧＵＩＤは、英数字識別子、バイナリ識別子、１６進識別子、または別の適切な識別子とすることができる。
【００２８】
各ｘ＊ノード３２０は、ＲＯＭイメージのアップデートパッケージを表す。表されたアップデートパッケージは、複数のＲＯＭパッケージをアップデートするための情報を含むことができる。各ｘ＊ノード３２０は、ＤｏｗｎｌｏａｄＡｎｄＵｐｄａｔｅノード３３０を含み、ノード３３０自体がＰｋｇＵＲＬノード３４０を含む。ＤｏｗｎｌｏａｄＡｎｄＵｐｄａｔｅノード３３０は、ブール（ｂｏｏｌｅａｎ）データを含むことができる。ＰｋｇＵＲＬノード３４０は、ダウンロードされてファームウェアアップデートとして適用されるべきパッケージのためのユニフォームリソースロケータ（「ＵＲＬ」）などのロケーション情報を含むことができる。
【００２９】
ｘ＊ノード３２０はまた、ＰｋｇＶｅｒｓｉｏｎノード３５０を含む。ＰｋｇＶｅｒｓｉｏｎノード３５０は、イメージアップデートパッケージについてのバージョン情報を含む。このバージョン情報は、文字ストリングの場合のように、人が読めるものにすることができ、または、バイナリコードなど、マシン可読フォーマットにすることができる。バージョン情報のための他の適切なフォーマットを使用することができる。加えて、サブバージョンまたは特殊バージョン情報を、提示されたスキーマの一部として、または、このスキーマの拡張として、含めることができる。
【００３０】
ｘ＊ノード３２０はまた、ＰｋｇＮａｍｅノード３６０を含む。この実施例では、ＰｋｇＮａｍｅノード３６０は、ＲＯＭパッケージのユーザーフレンドリ名を含む。本明細書で提示された他の実施例のように、名前は、特定の実施態様に応じてそれら自体が変わる可能性のある様々なフォーマットで表すことができる。
【００３１】
Ｓｔａｔｅノード３７０は、さらに、ｘ＊ノード３２０の下に含まれる。Ｓｔａｔｅノード３７０は、ＲＯＭパッケージをアップデートしようとする試行の後の、モバイルデバイスの状態についての値を含む。この値は実装依存にすることができ、モバイルコンピューティングデバイスについての状態情報を格納するために使用することができる。例えば、アップデートが成功したこと、および、古いデータが削除されていることを指示する値を、Ｓｔａｔｅノード３７０にセットすることができる。同様に、アップデートの試行が失敗したこと、および、古いデータが保持されたままであることを指示する値をセットすることができる。幅広い種類の他の状態記述子および値を作成し使用することができる。
【００３２】
図４は、本発明の別の態様による、ローカライゼーション機能を含むＲＯＭアップデートシステム４００のシステムブロック図である。ローカライゼーションは一般に、具体的にはソフトウェアコンポーネントを含む、コンピューティングデバイスのコンポーネントを、特定の地理的ロケーションの必要性を反映するように適合させるプロセスを示す。一般に、ローカライゼーションは、特定の地域で話される言語を使用するようにソフトウェアを適合させるようなことを含む。本明細書で使用されるように、ローカライゼーションはまた、コンピューティングデバイスに、ある地理的エリア内で別の地理的エリア内とは異なる動作をさせるように、オペレーションレベルの変更を行うことをも含む。
【００３３】
このような機能的変更の一実施例は、通信プロトコルにおけるものである。モバイルコンピューティングデバイスは、複数の通信プロトコルをサポートするハードウェアを含むことができる。このデバイスは、米国内に位置する間、ＴＤＭＡプロトコルを通信施設への無線アクセスのために使用することができる。しかし、欧州では、ＧＳＭプロトコルが主として使用される。したがって、モバイルコンピューティングデバイスのＲＯＭ内の変更により、モバイルコンピューティングデバイスが欧州内で動作中であるときに、このデバイスにＴＤＭＡの代わりにＧＳＭを使用させることができる。
【００３４】
同様に、モバイルコンピューティングデバイスは、ＩＥＥＥ  ８０２．１１ｘ（ＷｉＦｉ）通信を、他の通信プロトコルと共にサポートすることができる。モバイルコンピューティングデバイスがＷｉＦｉホットスポット、または、ＷｉＦｉアクセスポイントによってサービスされる別のエリアに入るとき、モバイルコンピューティングデバイスはそのＲＯＭをアップデートして、デバイスにＷｉＦｉアクセスポイントを使用させることができる。複数の通信プロトコルの間のこのような切り替えの他の実施例は、当業者には明らかになるであろう。
【００３５】
もう１つの実施例は、地理的ロケーションによって、モバイルコンピューティングデバイスの機能を追加または除去すること（または同様に、使用可能もしくは使用不可にすること）を含む。米国内では、強力な暗号化技術を使用して、電子通信を保護することができる。このような技術のためのサポートは通常、あらゆる地理的ロケーションにおいて使用可能ではない。モバイルコンピューティングデバイスは、その内部ＲＯＭイメージをアップデートすることによって、暗号化機能を追加または除去すること（または、使用可能もしくは使用不可にすること）ができる。このような機能的修正の他の実施例は、当業者には明らかになるであろう。
【００３６】
ＲＯＭアップデートシステム４００は、モバイルコンピューティングデバイスの地理的ロケーションに従って、モバイルコンピューティングデバイスのＲＯＭイメージのアップデートを可能にするように意図されている。ＲＯＭアップデートシステム４００は、ローカライズされたファームウェア４２０をそれ自体が含む、モバイルコンピューティングデバイス４１０を含む。モバイルコンピューティングデバイス４１０は、携帯電話、パーソナル情報マネージャ、携帯情報端末、または別のデバイスとすることができる。全地球測位システム（ＧＰＳ）モジュール４３０はモバイルコンピューティングデバイスに結合され、ＧＰＳ衛星４４０にアクセスすることができる。ＧＰＳモジュール４３０は、ＧＰＳ衛星４４０からの情報を使用して、モバイルコンピューティングデバイス４１０の地理的ロケーションを決定することができる。
【００３７】
モバイルコンピューティングデバイス４１０は、ネットワーク４５０にアクセスすることができる。ネットワーク４５０は、有線または無線ネットワークにすることができ、特にインターネットとすることができる。ネットワーク４５０は、アップデートサーバ４６０に接続することができる。アップデートサーバは、専門ファイルサーバ、ファームウェアアップデートタスクのために適合されているウェブサーバ、または、別の適切なタイプのサーバとすることができる。どのように実装されても、アップデートサーバ４６０はモバイルコンピューティングデバイス４１０と通信することができ、特に、アップデート情報をモバイルコンピューティングデバイス４１０に送信することができる。
【００３８】
アップデートサーバ４６０は、ローカライゼーションモジュール４７０にアクセスすることができる。ローカライゼーションモジュール４７０は、ＧＰＳモジュール４３０からの情報を使用して、モバイルコンピューティングデバイス４１０に送信されるべき、ローカライズされたＲＯＭイメージまたはその一部など、適切なローカライゼーション情報を決定することができる。アップデートサーバ４６０は、ＲＯＭコードデータストア４８０から、ローカライゼーションモジュール４７０によって指定された適切なＲＯＭコンポーネントにアクセスすることができる。ＲＯＭデータストア４８０からのＲＯＭコンポーネントは、アップデートサーバ４６０により、ネットワーク４５０を使用して、モバイルコンピューティングデバイス４１０に送信することができる。
【００３９】
例えば、ローカライゼーションまたは識別タスクに関連して開示および説明されるコンポーネントは、その様々な態様を実行するための様々な人工知能ベースのスキームを使用することができる。例えば、ローカライズされたＲＯＭコンポーネントの識別は、ニューラルネットワーク、エキスパートシステム、ルールベースの処理コンポーネント、またはＳＶＭによって実行することができる。また、複数のコンポーネントを使用することができるとき、ニューラルネットワーク、他の人工知能ベースのコンポーネントは、事前定義された要素（ｆａｃｔｏｒ）に基づいて「最良適合（ｂｅｓｔ  ｆｉｔ）」を提供する、ローカライズされたＲＯＭコンポーネントの識別を支援することができる。
【００４０】
分類子は、入力属性ベクトルＸ＝（ｘ１，ｘ２，ｘ３，ｘ４，．．．ｘｎ）を、入力がクラスに属する信頼性、すなわちｆ（Ｘ）＝ｃｏｎｆｉｄｅｎｃｅ（ｃｌａｓｓ）、にマッピングする関数である。このような分類は、確率的および／または統計ベースの解析を使用して（例えば、解析の有用性およびコストの要素に入れる）、ユーザが自動的に実行されるように望むアクションを予知または推論することができる。ＲＯＭコンポーネント置換システムの場合、例えば、属性は、ファイル名、署名、ハッシュ関数、アップグレードコード、互換性コード、バージョン番号、ビルド番号、リリース日、または、ＲＯＭファイルから導出された他のデータ固有の属性などのファイル記述子とすることができ、クラスは、例えば、デバイスが使用することができる他のＲＯＭコンポーネントの記述子など、関心のあるカテゴリまたはエリアである。
【００４１】
サポートベクトルマシン（ＳＶＭ）は、使用することのできる分類子の一例である。ＳＶＭは、可能な入力の空間における超曲面を見つけることによって動作し、その超曲面は、トリガリング基準（ｔｒｉｇｇｅｒｉｎｇ  ｃｒｉｔｅｒｉａ）を非トリガリングイベントから分割しようと試行する。直観的に、これは、トレーニングデータに近いが等しくはないデータをテストするために、分類を正しくする。他の有向および無向モデル分類手法には、例えば、ナイーブベイズ、ベイジアンネットワーク、判定ツリーが含まれ、異なるパターンの独立性を提供する確率分類モデルを使用することができる。分類にはまた、本明細書で使用されるとき、優先順位のモデルを開発するために利用される、統計的回帰（ｓｔａｔｉｓｔｉｃａｌ  ｒｅｇｒｅｓｓｉｏｎ）が含まれる。
【００４２】
本明細書から容易に理解されるように、本発明は、明示的にトレーニングされる（例えば、汎用トレーニングデータによる）、ならびに、暗示的にトレーニングされる（例えば、ユーザの挙動を観察すること、外部の情報を受信することによる）、分類子を使用することができる。例えば、ＳＶＭは、分類子コンストラクタおよび機能選択モジュール内で学習フェーズまたはトレーニングフェーズによって構成される。従って、分類子を使用して、いくつかのファンクションを自動的に実行することができ、これらのファンクションには、それに限定されないが、デバイスにデータが送信されるべきであるかどうかを判断することが含まれる。
【００４３】
ＲＯＭアップデートシステム４００のオペレーションの一実施例は、以下の通りである。使用中に、モバイルコンピューティングデバイス４１０はＧＰＳモジュール４３０にアクセスして、その地理的ロケーションについての情報を得る。この情報を得るため、ＧＰＳモジュール４３０はＧＰＳ衛星４４０にアクセスし、このＧＰＳ衛星４４０からの情報に基づいてその地理的位置を計算する。モバイルコンピューティングデバイスはまた、前の図に関連して上述したスキーマまたはオブジェクトのうち１つの形態における、ローカライズされたファームウェア４２０についての情報にもアクセスする。
【００４４】
モバイルコンピューティングデバイス４１０は、その地理的ロケーションおよびローカライズされたフォームウェア４２０についての情報を、ネットワーク４５０を介して送信する。その情報は、アップデートサーバ４６０によって受信される。アップデートサーバ４６０はその地理的情報、および、ローカライズされたファームウェア４２０についての情報を、ローカライゼーションモジュール４７０に送信する。ローカライゼーションモジュール４７０は、その地理的情報、および、ローカライズされたファームウェア４２０についての情報を使用して、置換ローカライズドＲＯＭコンポーネントが存在するかどうか、および、その置換ローカライズドＲＯＭコンポーネントが適用されるべきであるかどうかを判断する。
【００４５】
置換ローカライズドＲＯＭコンポーネントが存在し、適用されるべきである場合、ローカライゼーションモジュール４７０は、置換ＲＯＭコンポーネントについての識別情報をアップデートサーバ４６０に提供する。アップデートサーバ４６０は、ＲＯＭコードデータストア４８０からコンポーネントを得て、このコンポーネントを、ネットワーク４５０を介して送信する。モバイルコンピューティングデバイス４１０は、ネットワーク４５０から置換コンポーネントを受信し、置換コンポーネントを用いて、ローカライズされたファームウェア４２０をアップデートすることを続ける。
【００４６】
図５は、本発明のさらなる態様による、ピアベースのＲＯＭアップデートシステム５００のシステムブロック図である。このピアベースのＲＯＭアップデートシステムは、それによりモバイル通信デバイスが置換ＲＯＭコンポーネントを第２のモバイルコンピューティングデバイスからピアツーピアベースで直接得ることができる手段を提供するように、意図されている。このようなピアツーピア機能は、他の環境の中でも、モバイルコンピューティングデバイスのファームウェアの一部が破損しているか、または誤動作しているときなど、モバイルコンピューティングデバイスがネットワークに接続してＲＯＭアップデートを得ることができないときの環境において、有用であり得る。
【００４７】
ピアベースのＲＯＭアップデートシステム５００は、モバイルコンピューティングデバイス５１０、５２０を含む。モバイルコンピューティングデバイス５１０、５２０の各々は、ファームウェア５３０、５４０のセットを含む。モバイルコンピューティングデバイス５１０、５２０の各々はまた、関連するピアアップデートマネージャ５５０、５６０にもアクセスすることができる。ピアアップデートマネージャ５５０、５６０は、モバイルコンピューティングデバイス５１０、５２０のファームウェア５３０、５４０についての記述的情報を得ることができる。その記述的情報は、ピアアップデートマネージャ５５０、５６０によって、他のモバイルコンピューティングデバイスに発行することができる。ピアアップデートマネージャ５５０、５６０など、モバイルコンピューティングデバイスに関連付けられたピアアップデートマネージャは、発行された情報を使用して、ファームウェア５３０、５４０などのファームウェアが、発行側モバイルコンピューティングデバイスをソースとして使用してアップデートされるべきであるかどうかを判断することができる。
【００４８】
モバイルコンピューティングデバイス５１０、５２０はまた、それぞれネットワーク５７０にもアクセスすることができる。各モバイルコンピューティングデバイス５１０、５２０はまた、ネットワーク５７０を使用して、アップデートサーバ５８０にアクセスすることができる。アップデートサーバ５８０へのアクセスは、アップデートを得る追加または代替手段として提供される。アップデートサーバ５８０は常に、最新バージョンのＲＯＭコンポーネントを、モバイルコンピューティングデバイスのファームウェアへのインストレーションのために有するようになるが、必ずしもそうとは限らないことが企図されている。また、アップデートサーバ５８０は、アップデートサーバにアクセスする他のモバイルコンピューティングデバイスへの配布のために、モバイルコンピューティングデバイスからＲＯＭコンポーネントを得ることができる場合もある。
【００４９】
可能なオペレーションシナリオの一実施例は、以下の通りである。モバイルコンピューティングデバイス５１０はネットワーク５７０を使用して、アップデートサーバ５８０にアクセスし、ファームウェア５３０へのインストレーションのためにアップデートされたＲＯＭコンポーネントを得る。アップデートサーバ５８０は、アップデートが入手可能であることを決定し、そのアップデートをモバイルコンピューティングデバイス５１０に送信する。モバイルコンピューティングデバイス５１０は、新しいコンポーネントを用いてファームウェア５３０をアップデートし、そのオペレーションを継続する。
【００５０】
モバイルコンピューティングデバイス５１０は、ピアアップデートマネージャ５５０を使用して、そのＲＯＭコンポーネントについての情報をモバイルコンピューティングデバイス５２０に発行する。モバイルコンピューティングデバイス５２０のピアアップデートマネージャ５６０は、モバイルコンピューティングデバイス５１０によって発行された情報を、モバイルコンピューティングデバイス５２０のファームウェア５４０のＲＯＭコンポーネントについての情報と比較する。ピアアップデートマネージャ５６０はこの情報を使用して、アップデートされたバージョンのＲＯＭコンポーネントがモバイルコンピューティングデバイス５１０から入手可能であるかどうかを判断する。そうである場合、ピアアップデートマネージャ５６０は、モバイルコンピューティングデバイス５１０からアップデートされたコンポーネントを得て、モバイルコンピューティングデバイス５２０のファームウェア５４０をアップデートする。
【００５１】
図６は、開示された発明のなおさらなる態様による、安全なＲＯＭアップデートシステム６００のシステムブロック図である。安全なＲＯＭアップデートシステム６００は、モバイルコンピューティングデバイスのファームウェアをアップデートするため、および、そのようなＲＯＭコンポーネントのソースの識別を検証するために使用される、ＲＯＭコンポーネントのコンテンツを保護することができる、プラットフォームを提供するように意図されている。様々な手法を使用して、ＲＯＭコンポーネントを保護および検証することができる。いくつかの実施例を以下でさらに論ずる。
【００５２】
安全なＲＯＭアップデートシステム６００は、アップデートサーバ６１０を含む。アップデートサーバ６１０はセキュリティモジュール６２０にアクセスすることができ、セキュリティモジュール６２０は、アップデートサーバ６１０のためのセキュリティファンクションおよび認証ファンクションを提供する。このようなセキュリティファンクションおよび認証ファンクションは、デジタル署名を電子通信に適用すること、および、このような電子通信を暗号化することを含むことができる。様々な技術を使用して、電子通信にデジタル署名し、またはこれを暗号化することができる。これらの技術には、対称秘密鍵暗号化アルゴリズム、非対称秘密鍵−公開鍵アルゴリズム、または別の適切な暗号化スキームを使用することが含まれる。
【００５３】
アップデートサーバはネットワーク６３０にアクセスして、モバイルコンピューティングデバイス６５０と通信することができる。モバイルコンピューティングデバイス６５０はモバイルセキュリティモジュール６４０にアクセスすることができ、モバイルセキュリティモジュール６４０は、アップデートサーバ６１０に関連付けられたセキュリティモジュール６２０によって署名または暗号化される電子通信を解釈することができる。モバイルセキュリティモジュール６４０によって解釈された電子通信は、モバイルコンピューティングデバイス６５０へ、使用のために転送することができる。
【００５４】
オペレーション中に、モバイルコンピューティングデバイス６５０は、アップデート要求をモバイルセキュリティモジュール６４０に送信することができる。モバイルセキュリティモジュール６４０はこの要求を暗号化およびデジタル署名し、これをネットワーク６３０へ、配信のために転送する。ネットワーク６３０はこの要求をセキュリティモジュール６２０に転送し、セキュリティモジュール６２０はデジタル署名を検証し、この要求を復号化する。セキュリティモジュール６２０は次いで、この要求をアップデートサーバ６１０に転送する。
【００５５】
アップデートサーバは、アップデートパッケージを識別し、セキュリティモジュール６２０に送信する。セキュリティモジュール６２０は、アップデートパッケージを暗号化およびデジタル署名し、次いでこのアップデートパッケージをネットワーク６３０に転送する。ネットワーク６３０はアップデートパッケージをモバイルセキュリティモジュール６４０に転送し、モバイルセキュリティモジュール６４０は、アップデートパッケージのデジタル署名を検証し、このパッケージを復号化する。モバイルセキュリティモジュール６４０は次いで、アップデートパッケージをモバイルコンピューティングデバイス６５０に転送し、モバイルコンピューティングデバイス６５０はこのパッケージを使用して、そのファームウェアをアップデートする。
【００５６】
図７〜１２を参照して、様々な方法または手順による流れ図を提示する。説明を簡単にするため、例えば、流れ図の形態において、本明細書で示された１つまたは複数の方法は、一連の動作として図示および説明されるが、図示および説明された方法および手順も、それと共にこのような方法または手順を使用することができるいかなるコンポーネントも、必ずしもこの動作の順序によって限定されないことを理解されたい。というのは、いくつかの動作は異なる順序で、および／または、本明細書で図示および説明されたもの以外の動作と同時に行われる場合があるからである。例えば、状態図においてなど、ある方法を代替として、一連の相互に関係する状態またはイベントとして表現することができることは、当業者には理解されよう。また、例示された動作のすべてが、方法または手順を実施するために必要とされるとは限らない。
【００５７】
図７は、本明細書で開示または説明されているコンポーネントによって使用され得る一般的な処理方法７００における動作を示す流れ図である。処理は開始ブロック７１０で開始し、プロセスブロック７２０に続き、そこで管理オブジェクトが発行される。プロセスブロック７３０で、アップデートするＲＯＭセクションが識別される。処理は次いでプロセスブロック７４０に続き、そこでアップデートオブジェクトが得られる。プロセスブロック７５０で、実際のアップデートがダウンロードされ、デバイスのＲＯＭイメージに適用される。プロセスブロック７６０で、アップデートの試行に続いてデバイスの状態を指示するステータス識別子がセットされ、処理は終了ブロック７７０で終了する。
【００５８】
図８は、本明細書で開示または説明されているコンポーネントによって使用され得る一般的な処理方法８００における動作を示す流れ図である。方法８００は、モバイルコンピューティングデバイスのファームウェアをローカライズすることができる方法を提供するように意図されている。処理は開始ブロック８１０で開始し、プロセスブロック８２０に続く。プロセスブロック８２０で、モバイルコンピューティングデバイスの地理的ロケーションが得られる。地理的ロケーション情報を、ＧＰＳシステムを使用して自動的に得ることができる。加えて、または代替として、このような情報をユーザが、ロケーションを入力すること、またはロケーションを地図から選択すること、またはメニュー内のロケーションのセットの中からロケーションを選択することによって、あるいは別の適切な方法によって、手動で入力することができる。
【００５９】
処理はプロセスブロック８３０に続き、そこで、モバイルコンピューティングデバイス上にインストールされたファームウェアの記述子が得られる。このような記述子を、前の図と共に前述した記述子の１つにすることができ、または、別の適切な記述子にすることができる。プロセスブロック８４０で、モバイルコンピューティングデバイスのファームウェア記述子および地理的情報を含むアップデート要求が、アップデートサーバに送信される。これらの２つの情報を共に単一のユニットとして送信することができ、または分離することができる。
【００６０】
プロセスブロック８５０で、アップデートサーバは適切なローカライズされたファームウェアアップデートコンポーネントを、コンポーネントデータストアから識別する。ローカライズされたファームウェアアップデートを、完全なＲＯＭイメージにすることができ、または、ＲＯＭイメージのコンポーネントにすることができる。また、ローカライズされたファームウェアアップデートは、モバイルコンピューティングデバイスの機能性を、数ある中でも、他の図と共に前に論じた方法のいずれにおいても調整することができる。処理はプロセスブロック８６０に続き、そこで、アップデートサーバは、ローカライズされたファームウェアアップデートコンポーネントをモバイルコンピューティングデバイスに送信する。モバイルコンピューティングデバイスは、ローカライズされたアップデートコンポーネントを使用して、そのファームウェアの少なくとも一部をアップデートする。処理は終了ブロック８８０で終了する。
【００６１】
図９は、本明細書で開示または説明されているコンポーネントと共に使用することができる一般的な処理方法９００の処理を示す流れ図である。方法９００は、モバイルコンピューティングデバイスのファームウェアを、ピアツーピア通信などにより別のモバイルコンピューティングデバイスにアクセスすることよって、アップデートすることができる方法を提供するように意図されている。方法９００の処理は開始ブロック９１０で開始し、プロセスブロック９２０に続き、そこで、モバイルコンピューティングデバイスは、そのファームウェア内にインストールされるＲＯＭイメージの記述子を発行する。この記述子は、前の図と共に説明される記述子の１つとすることができ、または別の適切な記述子とすることもできる。
【００６２】
処理はプロセスブロック９３０に続き、そこで、第２のモバイルコンピューティングデバイスは、発行されたＲＯＭ記述子を、第２のモバイルコンピューティングデバイス内に現在インストールされているＲＯＭイメージの記述子と比較する。第２のモバイルコンピューティングデバイスの現在インストールされているＲＯＭイメージの記述子は、前の図と共に説明される記述子の１つとすることができ、または別の適切な記述子とすることもできる。判断ブロック９４０で、発行された記述子が、第２のモバイルコンピューティングデバイスのＲＯＭコンポーネントをアップデートすることができるＲＯＭコンポーネントに、関連付けられているかどうかの判断が行われる。
【００６３】
判断ブロック９４０で行われた判断がｙｅｓである場合、処理はプロセスブロック９５０に続き、そこで、アップグレードするために使用することができるＲＯＭコンポーネントが第１のモバイルコンピューティングデバイスから得られる。記述子のパブリケーションのように、複数のデバイスの間のコンポーネントの転送は、モバイルコンピューティングデバイスがサポートすることができる有線または無線通信プロトコルのいずれを使用することもできる。企図される有線システムの中には、ユニバーサルシリアルバス（「ＵＳＢ」）、ＩＥＥＥ  １３９４（ファイアワイヤ）、シリアルおよびパラレル接続、ならびに他のものがある。使用することができる無線システムには、ＷｉＦｉ、ＷｉＭａｘ、ＣＤＭＡ、ＴＤＭＡ、ＧＳＭ、ブルートゥース、および他のものが含まれる。
【００６４】
処理はプロセスブロック９６０に続き、そこで、得られたアップデートコンポーネントが第２のモバイルコンピューティングデバイスのファームウェアにインストールされる。インストレーションは、アップデートプロセスがうまく完了したことを保証するための１つまたは複数のチェックを含むことができる。処理は終了ブロック９７０で終了する。同様に、判断ブロック９４０で行われた判断が、アップデートコンポーネントが他のモバイルコンピューティングデバイスから入手可能でないことを指示する場合、処理は終了ブロック９７０で終了する。
【００６５】
図１０は、本明細書で開示または説明されているコンポーネントと共に使用することができる一般的な処理方法１０００の処理を示す流れ図である。方法１０００は、モバイルコンピューティングデバイスのファームウェア内にインストールされたＲＯＭコンポーネントを安全にアップデートするための方法を提供するように意図されている。方法１０００の処理は開始ブロック１０１０で開始し、プロセスブロック１０２０に続く。プロセスブロック１０２０で、モバイルコンピューティングデバイスは、暗号化およびデジタル署名されるアップデート要求を構築する。ここでは、暗号化およびデジタル署名が論じられる他の場所のように、これらの技術のいずれも単独で使用することができ、または両方を組み合わせて使用することができることに留意されたい。
【００６６】
処理はプロセスブロック１０３０に続き、そこで、現在署名され暗号化されたアップデート要求がアップデートサーバに送信される。要求の送信を、アップデートサーバへの直接接続を通じて、アップデートサーバへのネットワーク接続を通じて、または、アップデートサーバの代わりをすることができるピアとの接続を通じて、実施することができる。プロセスブロック１０４０で、サーバはアップデート要求を受信し、アップデート要求のデジタル署名を検証すること、および、アップデート要求のコンテンツを復号化することを続ける。この時点で、一連のチェック（図示せず）を設けて、要求が真正であることをデジタル署名が指示すること、および、要求がアップデートサーバへの転送中に改ざんされていないことを保証することができる。これらのチェックのいずれかが失敗する場合、処理を終了させることができる。
【００６７】
プロセスブロック１０５０で、アップデートサーバは、アップデート要求において提供された情報に従ってモバイルコンピューティングデバイスのファームウェアをアップデートするために使用することができる、ＲＯＭコンポーネントを識別する。プロセスブロック１０６０で、アップデートサーバは、アップグレードコンポーネントを暗号化およびデジタル署名する。加えて、アップデートサーバは、署名および暗号化されたＲＯＭコンポーネントをモバイルコンピューティングデバイスに送信する。
【００６８】
プロセスブロック１０７０で、モバイルコンピューティングデバイスは、署名および暗号化されたＲＯＭコンポーネントを受信し、この署名を検証すること、および、このコンポーネントを復号化することを続ける。以前の類似のプロセスのように、一連のチェック（図示せず）を設けて、要求が真正であることをデジタル署名が指示すること、および、要求がアップデートサーバへの転送中に改ざんされていないことを保証することができる。これらのチェックのいずれかが失敗する場合、処理を終了させることができる。
【００６９】
プロセスブロック１０８０で、モバイルコンピューティングデバイスはＲＯＭコンポーネントをインストールして、そのファームウェアをアップデートする。インストレーションはチェック（図示せず）を含んで、そのコンポーネントが適切にインストールされたものであり、動作可能であることを保証することができる。これらのチェックのいずれの失敗も、数ある中でも、別のアップデートの試行をもたらす可能性があり、または、処理の終了をもたらす可能性がある。方法１０００の処理は、終了ブロック１０９０で終了する。
【００７０】
実施態様のための追加のステータスを提供するために、図１１〜１２および以下の考察は、開示および説明されているコンポーネントおよび方法をその中で実施することができる適切なコンピューティング環境の簡単な全体的説明を提供するように意図されている。様々な特定の実施態様を一般に、ローカルコンピュータおよび／またはリモートコンピュータ上で実行するコンピュータプログラムのコンピュータ実行可能命令の一般的なコンテキストで上述したが、他の実施態様もまた、単独で、または、他のプログラムモジュールと組合せても可能であることは、当業者には理解されよう。一般に、プログラムモジュールには、ルーチン、プログラム、コンポーネント、データ構造などが含まれ、これらは特定のタスクを実行し、および／または、特定の抽象データ型を実装する。
【００７１】
また、上述のコンポーネントおよび方法を他のコンピュータシステム構成により実施することができ、これらの構成には、シングルプロセッサまたはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびに、パーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースおよび／またはプログラム可能な家庭用電化製品などが含まれ、その各々が１つまたは複数の関連付けられたデバイスと動作可能に通信することができることは、当業者には理解されよう。開示および説明されたコンポーネントおよび方法のある例示された態様をまた分散コンピューティング環境で実施することもでき、この環境では、あるタスクが、通信ネットワークまたは他のデータ接続を通じてリンクされるリモート処理デバイスによって実行される。しかし、これらの態様の、全部ではないがいくつかを、スタンドアロンコンピュータ上で実施することができる。分散コンピューティング環境では、プログラムモジュールはローカルおよび／またはリモートのメモリストレージデバイス内に位置することができる。
【００７２】
図１１は、開示および説明されているコンポーネントおよび方法をその中で使用することができる、サンプルコンピューティング環境１１００の概略ブロック図である。システム１１００は、１つまたは複数のクライアント１１１０を含む。クライアント１１１０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）とすることができる。システム１１００はまた、１つまたは複数のサーバ１１２０を含む。サーバ１１２０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）とすることができる。サーバ１１２０は、例えば、開示および説明されているコンポーネントまたは方法を使用することによって変換を実行するためのスレッドまたはプロセスを収容することができる。具体的には、サーバ１１２０上で実装することができる１つのコンポーネントは、図１のアップデートサーバ１１０など、アップデートサーバである。そのように実装することができるもう１つのコンポーネントは、図４のローカライゼーションモジュール４７０である。加えて、図６と共に論じたセキュリティモジュール６２０など、様々なセキュリティモジュールもまた、サーバ１１２０のコンポーネントとして実装することができる。様々な他の開示および論じられたコンポーネントを、サーバ１１２０上で実装することができる。
【００７３】
クライアント１１１０とサーバ１１２０の間の１つの可能な通信の手段を、２つ以上のコンピュータプロセスの間で送信されるように適合されたデータパケットの形態にすることができる。システム１１００は、クライアント１１１０とサーバ１１２０の間の通信を容易にするために使用することができる通信フレームワーク１１４０を含む。クライアント１１１０は、クライアント１１１０にローカルで情報を格納するために使用することができる１つまたは複数のクライアントデータストア１１５０に、動作可能に接続される。同様に、サーバ１１２０は、サーバ１１２０にローカルで情報を格納するために使用することができる１つまたは複数のサーバデータストア１１３０に、動作可能に接続される。
【００７４】
図１２を参照すると、様々なコンポーネントを実施するための例示的環境１２００は、コンピュータ１２１２を含む。コンピュータ１２１２は、処理装置１２１４、システムメモリ１２１６、およびシステムバス１２１８を含む。システムバス１２１８は、それに限定されないが、システムメモリ１２１６を含むシステムコンポーネントを処理装置１２１４に結合する。処理装置１２１４は様々な使用可能なプロセッサのいずれかにすることもできる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャもまた、処理装置１２１４として使用することができる。
【００７５】
システムバス１２１８を、いくつかのタイプのバス構造のいずれかにすることもでき、これらのバス構造には、任意の様々な使用可能なバスアーキテクチャを使用する、メモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および／または、ローカルバスが含まれ、これらのバスアーキテクチャには、それに限定されないが、ＩＳＡ（Ｉｎｄｕｓｔｒｉａｌ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＭＣＡ（Ｍｉｃｒｏ−Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＥＩＳＡ（Ｅｘｔｅｎｄｅｄ  ＩＳＡ）、ＩＤＥ（Ｉｎｔｅｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）、ＶＬＢ（ＶＥＳＡローカルバス）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）、ＥｘｐｒｅｓｓＣａｒｄ、カードバス、ユニバーサルシリアルバス（ＵＳＢ）、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）バス、ファイアワイヤ（ＩＥＥＥ  １３９４）、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）、および、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ）が含まれる。
【００７６】
システムメモリ１２１６は、揮発性メモリ１２２０および不揮発性メモリ１２２２を含む。基本入出力システム（ＢＩＯＳ）は、起動中など、コンピュータ１２１２内の複数の要素の間で情報を転送するための基本ルーチンを含み、不揮発性メモリ１２２２に格納される。例示として、限定ではなく、不揮発性メモリ１２２２には、読出し専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、またはフラッシュメモリが含まれる。揮発性メモリ１２２０には、外部キャッシュメモリの機能を果たすランダムアクセスメモリ（ＲＡＭ）が含まれる。例示として、限定ではなく、ＲＡＭは、シンクロナスＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ）、および、ダイレクトランバスＲＡＭ（ＤＲＲＡＭ）など、多数の形態で使用可能である。
【００７７】
コンピュータ１２１２はまた、リムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータ記憶媒体を含む。例えば、図１２は、ディスクストレージ１２２４を例示する。ディスクストレージ１２２４には、それに限定されないが、磁気ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、またはメモリスティックが含まれる。加えて、ディスクストレージ１２２４は記憶媒体を他の記憶媒体とは別々に、または、他の記憶媒体と組み合わせて含むことができ、他の記憶媒体には、それに限定されないが、コンパクトディスクＲＯＭデバイス（ＣＤ−ＲＯＭ）、書き込み可能ＣＤドライブ（ＣＤ−Ｒドライブ）、再書き込み可能ＣＤドライブ（ＣＤ−ＲＷドライブ）、またはデジタル多用途ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）など、光ディスクドライブが含まれる。システムバス１２１８へのディスクストレージデバイス１２２４の接続を容易にするために、インターフェイス１２２６など、リムーバブルまたは非リムーバブルインターフェイスが通常は使用される。
【００７８】
コンピュータ１２１２と共に提供される様々なタイプの揮発性および不揮発性メモリまたはストレージを使用して、本明細書で開示および説明されたデータポートシグナリングシステムの様々な実施態様のコンポーネントを格納することができる。例えば、図１を参照すると、ファームウェア１６０を、不揮発性メモリ１２２２内に格納することができるソフトウェアモジュールとして実施することができる。ランタイムで、ファームウェア１６０を揮発性メモリ１２２０へロードすることができ、そこから処理装置１２１４は、ファームウェア１６０のマシン解釈可能コードにアクセスし、それにより実行に入ることができる。
【００７９】
図１２は、ユーザと、適切なオペレーティング環境１２００で説明された基本コンピュータリソースの間の、仲介の機能を果たすソフトウェアを説明することを理解されたい。このようなソフトウェアにはオペレーティングシステム１２２８が含まれる。オペレーティングシステム１２２８はディスクストレージ１２２４上に格納することができ、コンピュータシステム１２１２のリソースをコントロールし割り振るように動作する。システムアプリケーション１２３０は、オペレーティングシステム１２２８による、システムメモリ１２１６内またはディスクストレージ１２２４上のいずれかに格納されたプログラムモジュール１２３２およびプログラムデータ１２３４を通じたリソースの管理を利用する。開示されたコンポーネントおよび方法を、様々なオペレーティングシステムまたはオペレーティングシステムの組合せと共に実施することができることを理解されたい。
【００８０】
ユーザはコマンドまたは情報をコンピュータ１２１２へ、入力デバイス１２３６を通じて入力する。入力デバイス１２３６には、それに限定されないが、マウスなどのポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ、ＴＶチューナーカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどが含まれる。これらおよび他の入力デバイスは処理装置１２１４へ、システムバス１２１８を通じて、インターフェイスポート１２３８を介して接続する。インターフェイスポート１２３８には、例えば、シリアルポート、パラレルポート、ゲームポート、および、ユニバーサルシリアルバス（ＵＳＢ）が含まれる。出力デバイス１２４０は、入力デバイス１２３６と同じタイプのポートのいくつかを使用する。したがって、例えば、ＵＳＢポートを使用して入力をコンピュータ１２１２に提供し、情報をコンピュータ１２１２から出力デバイス１２４０に出力することができる。インターフェイスポート１２３８には具体的には、数ある中でも、本明細書で開示および説明されたコンポーネントと共に使用することができる様々なデータ接続ポートが含まれる可能性がある。
【００８１】
出力アダプタ１２４２は、他の出力デバイス１２４０の中でも、特殊なアダプタを必要とするモニタ、スピーカおよびプリンタのようないくつかの出力デバイス１２４０があることを例示するために提供される。出力アダプタ１２４２には、例示として、限定ではなく、出力デバイス１２４０とシステムバス１２１８の間の接続の手段を提供するビデオおよびサウンドカードが含まれる。リモートコンピュータ１２４４など、他のデバイスおよび／またはデバイスのシステムは、入力および出力機能の両方を提供することに留意されたい。
【００８２】
コンピュータ１２１２はネットワーク環境において、リモートコンピュータ１２４４など、１つまたは複数のリモートコンピュータへの論理接続を使用して動作することができる。リモートコンピュータ１２４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースの機器、ピアデバイスまたは他の共通ネットワークノードなどとすることができ、通常は、コンピュータ１２１２に関連して上述した要素の多数またはすべてを含む。簡潔にするため、メモリストレージデバイス１２４６のみがリモートコンピュータ１２４４と共に例示される。リモートコンピュータ１２４４はコンピュータ１２１２に、ネットワークインターフェイス１２４８を通じて論理的に接続され、次いで通信接続１２５０を介して物理的に接続される。ネットワークインターフェイス１２４８は、ローカルエリアネットワーク（ＬＡＮ）およびワイドエリアネットワーク（ＷＡＮ）など、有線および／または無線通信ネットワークを包含する。ＬＡＮ技術には、ＦＤＤＩ（Ｆｉｂｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）、ＣＤＤＩ（Ｃｏｐｐｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）、イーサネット（登録商標）、トークンリングなどが含まれる。ＷＡＮ技術には、それに限定されないが、ｐｏｉｎｔ−ｔｏ−ｐｏｉｎｔリンク、総合デジタルサービス通信網（ＩＳＤＮ）およびその変形形態のような回線交換網、パケット交換網、およびデジタル加入者線（ＤＳＬ）が含まれる。
【００８３】
通信接続１２５０は、ネットワークインターフェイス１２４８をバス１２１８に接続するために使用されたハードウェア／ソフトウェアを指す。通信接続１２５０を例示的に明確にするためにコンピュータ１２１２の内部に図示するが、コンピュータ１２１２の外部にすることもできる。ネットワークインターフェイス１２４８への接続のために必要なハードウェア／ソフトウェアには、例示のためにのみ、通常の電話グレードモデム、ケーブルモデムおよびＤＳＬモデムを含むモデム、ＩＳＤＮアダプタ、およびイーサネット（登録商標）カードなど、内部および外部技術が含まれる。
【００８４】
上述されたものには、あるコンポーネントおよび方法の例示的実施例が含まれる。言うまでもなく、コンポーネントまたは方法のあらゆる考えられる組合せを説明することは可能ではないが、多数のさらなる組合せおよび置換が可能であることは、当業者には理解されよう。したがって、すべてのこのような変更、修正および変形形態は、付属の特許請求の範囲の主旨および範囲内に入るように意図されている。
【００８５】
特に、および、上述のコンポーネント、デバイス、回路、システムなどによって実行された様々な機能については、このようなコンポーネントを説明するために使用された語（「手段」への参照を含む）は、特に他の指示がない限り、説明されたコンポーネントの指定された機能を実行するいかなるコンポーネント（例えば、機能的等価物）にも対応するように意図されている。これは、たとえ、本明細書で例示された実施例における機能を実行する、開示された構造に構造上等価的でないとしてもである。この点で、開示および説明されたコンポーネントおよび方法は、様々な開示および説明された方法の動作および／またはイベントを実行するためのコンピュータ実行可能命令を有するシステムならびにコンピュータ可読媒体を含むことができるということも理解されよう。
【００８６】
加えて、特定の特徴は、いくつかの実施態様のうちただ１つに関して開示されている場合があるが、いずれかの所与のまたは特定の応用例のために望まれ、有利であるとき、このような特徴は、他の実施態様の１つまたは複数の他の特徴と共に結合され得る。さらに、「含む（ｉｎｃｌｕｄｅ）」および「含んでいる（ｉｎｃｌｕｄｉｎｇ）」という語、ならびにその変形形態が詳細な説明または特許請求の範囲において使用される範囲で、これらの語は、「含む、備える（ｃｏｍｐｒｉｓｉｎｇ）」という語に類似した方法で包含的であるように意図されている。
【図面の簡単な説明】
【００８７】
【図１】ファームウェアアップデートシステムのシステムブロック図である。
【図２】管理オブジェクトのためのスキーマ図である。
【図３】アップデートオブジェクトのためのスキーマ図である。
【図４】ローカライゼーション機能を含むＲＯＭアップデートシステムのシステムブロック図である。
【図５】ピアベースのＲＯＭアップデートシステムのシステムブロック図である。
【図６】安全なＲＯＭアップデートシステムのシステムブロック図である。
【図７】使用される場合のある方法における動作を示す流れ図である。
【図８】使用される場合のある方法における動作を示す流れ図である。
【図９】使用することができる方法の処理を示す流れ図である。
【図１０】使用することができる方法の処理を示す流れ図である。
【図１１】例示的ネットワーキング環境を例示する図である。
【図１２】例示的オペレーティング環境を例示する図である。
【符号の説明】
【００８８】
１１０  アップデートサーバ
１２０  ファームウェアコード
１５０  モバイルコンピューティングデバイス
１６０  ファームウェア
４１０  モバイルコンピューティングデバイス
４２０  ファームウェア
４３０  ＧＰＳモジュール
４６０  アップデートサーバ
４７０  ローカライゼーションモジュール
４８０  ＲＯＭコード
５１０、５２０  モバイルコンピューティングデバイス
５３０、５４０  ファームウェア
５５０、５６０  ピアアップデートマネージャ
５８０  アップデートサーバ
６１０  サーバ
６２０  セキュリティモジュール
６４０  モバイルセキュリティモジュール
６５０  モバイルコンピューティングデバイス
【図１】
2006216047.tif 000003
【図２】
2006216047.tif 000004
【図３】
2006216047.tif 000005
【図４】
2006216047.tif 000006
【図５】
2006216047.tif 000007
【図６】
2006216047.tif 000008
【図７】
2006216047.tif 000009
【図８】
2006216047.tif 000010
【図９】
2006216047.tif 000011
【図１０】
2006216047.tif 000012
【図１１】
2006216047.tif 000013
【図１２】
2006216047.tif 000014
【外国語明細書】
2006216047000001.pdf