(57)【要約】本発明は、第１および第２のハンドセットが無線通信ネットワークを介してデータ通信に携わることを可能にするピアツーピアデータ通信システムおよび方法を提供する。第１のハンドセットは、サーバオペコードセットを生成し、対応するサーバデータペイロードと組み合わせる。サーバコードセットおよび対応するサーバデータペイロードは、ネットワークサーバに送信され、データが抽出され、かつオペコードが実行可能な命令に翻訳される。実行可能命令は、ネットワークサーバにリモートオペコードセットおよび対応するリモートデータペイロードをコンパイルさせ、第２のハンドセットに送信し、第１のハンドセットにより識別される。第２のハンドセットは、リモートオペコードセットおよびリモートデータペイロードを受信した場合、リモートデータペイロードを抽出し、リモートオペコードセットにおけるオペコードに対応する命令を実行する。【選択図】図１
2004537895.tif 000002
【特許請求の範囲】
【請求項１】
第１のハンドセットと第２のハンドセットとの間でピアツーピア通信する方法であって、該第１のハンドセットおよび該第２のハンドセットは、無線通信ネットワークを介して通信サーバと通信可能に接続され、該方法は、
第１のハンドセットからサーバオペコードセットを受信するステップであって、該サーバオペコードセットは、少なくとも１つのサーバオペコードおよび第１のデータペイロードを含む、ステップと、
リモートオペコードセットを構築するために、該サーバオペコードセットを処理するステップであって、該リモートオペコードセットは、少なくとも１つのリモートオペコードおよび第２のデータペイロードを含む、ステップと、
該第２のハンドセットに該リモートオペコードセットを送信するステップとを包含する、方法。
【請求項２】
前記第１のデータペイロードは、前記第２のハンドセットのための一意的識別子を含む、請求項１に記載の方法。
【請求項３】
前記第１のデータペイロードは、前記第２のハンドセットのためのデータ通信を含む、請求項１に記載の方法。
【請求項４】
前記サーバオペコードセットを構文解析して、前記少なくとも１つのサーバオペコードおよび前記第１のデータペイロードを取得するステップと、
該少なくとも１つのサーバオペコードを１つ以上の実行可能な命令に翻訳するステップと、
前記リモートオペコードセットを生成するために、該１つ以上の実行可能な命令を実行するステップとをさらに包含する、請求項１に記載の方法。
【請求項５】
前記実行するステップは、
前記第１のデータペイロードから一意的識別子を取得するステップと、
リモートオペコードライブラリから１つ以上のリモートオペコードを取得するステップと、
第２のデータペイロードを取得するステップであって、該第２のデータペイロードの少なくとも一部分は該第１のデータペイロードから導出されるステップと、
該１つ以上のリモートオペコードを該第２のデータペイロードと組み合わせて、前記リモートオペコードセットを生成するステップとをさらに包含する、請求項４に記載の方法。
【請求項６】
第１のハンドセットと第２のハンドセットとの間でピアツーピア通信する方法であって、該第１のハンドセットおよび該第２のハンドセットは、無線通信ネットワークを介して通信サーバと通信可能に接続され、該方法、
第１のハンドセットにおいてサーバオペコードセットをコンパイルするステップであって、該サーバオペコードセットは、少なくとも１つのサーバオペコードおよび第１のデータペイロードを含む、ステップと、
通信サーバに該サーバオペコードセットを送信するステップと、
リモートオペコードセットを生成するために、該サーバオペコードセットを処理するステップであって、該リモートオペコードセットは、少なくとも１つのリモートオペコードおよび第２のデータペイロードを含む、ステップと、
第２のハンドセットに該リモートオペコードセットを送信するステップと、
該第２のハンドセットにてデータ通信を受信するために、該リモートオペコードセットを処理するステップとを包含する、方法。
【請求項７】
前記コンパイルするステップは、
１つ以上のサーバオペコードをサーバオペコードライブラリから取得するステップと、
第１のデータペイロードを取得するステップであって、該第１のデータペイロードは、データ通信、および前記第２のハンドセットのための一意的識別子を含む、ステップと、
該１つ以上のサーバオペコードを該第１のデータペイロードと組み合わせて、サーバオペコードセットを生成するステップとをさらに包含する、請求項６に記載の方法。
【請求項８】
前記サーバオペコードセットを処理する前記ステップは、
該サーバオペコードセットを構文解析して、前記少なくとも１つのサーバオペコードおよび前記第１のデータペイロードを取得するステップと、
該少なくとも１つのサーバオペコードを１つ以上の実行可能な命令に翻訳するステップと、
該１つ以上の実行可能な命令を実行するステップとをさらに包含する、請求項６に記載の方法。
【請求項９】
前記実行するステップは、
前記第１のデータペイロードから一意的識別子を取得するステップと、
リモートオペコードライブラリから１つ以上のリモートオペコードを取得するステップと、
第２のデータペイロードを取得するステップであって、該第２のデータペイロードの少なくとも一部分は、該第１のデータペイロードから導出される、ステップと、
該１つ以上のリモートオペコードを該第２のデータペイロードと組み合わせて、リモートオペコードセットを生成するステップと
をさらに包含する、請求項８に記載の方法。
【請求項１０】
前記リモートオペコードセットを処理する前記ステップは、
該リモートオペコードセットを構文解析して、少なくとも１つのリモートオペコードおよび第２のデータペイロードを取得するステップと、
該少なくとも１つのリモートオペコードを１つ以上の実行可能な命令に翻訳するステップと、
該１つ以上の実行可能な命令を実行して、前記第２のデータペイロードからデータ通信を取得するステップとをさらに包含する、請求項６に記載の方法。
【請求項１１】
１つ以上のマイクロプロセッサに無線通信デバイス間でピアツーピア通信するステップを実行させるための命令の１つ以上のシーケンスが格納されたコンピュータ読み出し可能媒体であって、該ステップは、
第１のハンドセットにてサーバオペコードセットをコンパイルするステップであって、該サーバオペコードセットは、少なくとも１つのサーバオペコードおよび第１のデータペイロードを含む、ステップと、
通信サーバに該サーバオペコードセットを送信するステップと、
リモートオペコードセットを生成するために、該サーバオペコードセットを処理するステップであって、該リモートオペコードセットは、少なくとも１つのリモートオペコードおよび第２のデータペイロードを含む、ステップと、
第２のハンドセットに該リモートオペコードセットを送信するステップと、
該第２のハンドセットにてデータ通信を受信するために、該リモートオペコードセットを処理するステップと、を包含する、コンピュータ読み出し可能媒体。
【請求項１２】
前記コンパイルするステップは、
サーバオペコードライブラリから１つ以上のサーバオペコードを取得するステップと、
第１のデータペイロードを取得するステップであって、該第１のデータペイロードは、データ通信、および前記第２のハンドセットのための一意的識別子を含む、ステップと、
該１つ以上のサーバオペコードを該第１のデータペイロードを組み合わせて、サーバオペコードセットを生成するステップとをさらに包含する、請求項１１に記載のコンピュータ読み出し可能媒体。
【請求項１３】
前記サーバオペコードセットを処理する前記ステップは、
該サーバオペコードセットを構文解析して、前記少なくとも１つのサーバオペコードおよび前記第１のデータペイロードを取得するステップと、
該少なくとも１つのサーバオペコードを１つ以上の実行可能な命令に翻訳するステップと、
該１つ以上の実行可能な命令を実行するステップとをさらに包含する、請求項１１に記載のコンピュータ読み出し可能な媒体。
【請求項１４】
前記実行するステップは、
前記第１のデータペイロードから一意的識別子を取得するステップと、
リモートオペコードライブラリから１つ以上のリモートオペコードを取得するステップと、
第２のデータペイロードを取得するステップであって、該第２のデータペイロードの一部分は該第１のデータペイロードから導出される、ステップと、
前記１つ以上のリモートオペコードを該第２のデータペイロードと組み合わせて、リモートオペコードセットを生成するステップとをさらに包含する、請求項１３に記載のコンピュータ読み出し可能媒体。
【請求項１５】
前記リモートオペコードセットを処理する前記ステップは、
該リモートオペコードセットを構文解析して、少なくとも１つのリモートオペコードおよび第２のデータペイロードを取得するステップと、
該少なくとも１つのリモートオペコードを１つ以上の実行可能な命令に翻訳するステップと、
該１つ以上の実行可能な命令を実行して、前記第２のデータペイロードからデータ通信を取得するステップとをさらに包含する、請求項１１に記載のコンピュータ読み出し可能媒体。
【請求項１６】
無線通信デバイス間でピアツーピア通信するシステムであって、該システムは、
複数のサーバオペコードを含むサーバオペコードライブラリおよびデータ格納領域を有する第１のハンドセットと、
複数のリモートオペコードを含むリモートオペコードライブラリを有する第２のハンドセットと、
複数のサーバオペコードを含むサーバオペコードと、複数のリモートオペコードを含むリモートオペコードライブラリとを有する通信サーバであって、該第１のハンドセットおよび該第２のハンドセットと無線通信ネットワークを介して通信可能に接続される、通信サーバとを備え、
該第１のハンドセットは、少なくとも１つのサーバオペコードと第１のペイロードとを含むサーバオペコードセットをコンパイルし、かつ、該サーバオペコードセットを該通信サーバに送信し、ここで、該サーバオペコードセットは、処理され、かつ該データペイロードの少なくとも一部分が、少なくとも１つのリモートオペコードおよび第２のデータペイロードを含むリモートオペコードにコンパイルされて、該第２のハンドセットに送信され、ここで、該リモートオペコードセットは、該第２のデータペイロードを受信するために処理される、システム。
【請求項１７】
前記第１のデータペイロードは、前記第２のハンドセットのための一意的識別子を含む、請求項１６に記載のシステム。
【請求項１８】
前記第１のデータペイロードは、前記第２のハンドセットのためのデータ通信を含む、請求項１６に記載のシステム。
【請求項１９】
前記第２のデータペイロードは、前記第２のハンドセットのための前記データ通信を含む、請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（１．発明の分野）
本発明は、概して、無線通信の分野に関し、より具体的には、無線通信ネットワークを介する無線通信デバイス間のピアツーピア通信に関する。
【背景技術】
【０００２】
（２．関連技術）
市場で展開される従来の無線通信デバイス（本明細書中で「無線デバイス」「ハンドセット」および「モバイルデバイス」とも記載される）は、通常、無線通信ネットワークを介して従来のボイス接続を経由して他の無線通信デバイスと接続する。この従来のボイス接続は、リアルタイムオーディオデータがボイス接続に参加する、地理的に分散した２つ以上の無線通信デバイス間で搬送されることを可能にする。
【０００３】
従来の無線通信デバイスの別の有用な局面は、これらのデバイスの、無線通信ネットワークとのデータ接続を確立する能力である。このような従来のデータ接続は、モバイルデバイスが、ネットワークと通信して、例えば、ソフトウェア更新をリクエストおよび受信することを可能にする。
【０００４】
しかしながら、欠けているのは、従来のモバイルデバイスが、無線通信ネットワークを介して実行される、モバイルデバイス間のデータ通信を開始、およびこれに参加する能力である。従って、必要なのは、上述の従来システムに見出されるこれらの重要な問題を克服するシステムおよび方法である。
【発明の開示】
【課題を解決するための手段】
【０００５】
（要旨）
現場で展開されるハンドセットは、制限されたデータ通信能力を有する。特に、ハンドセットは、ハンドセット間のピアツーピアデータ通信の能力を完全に欠く。この無能力は、無線通信デバイスの有用性を制限し、従って、エアタイム使用（ａｉｒ  ｔｉｍｅ  ｕｓａｇｅ）も制限する。
【０００６】
ハンドセットが無線通信ネットワークを介してデータ通信に携わることを可能にするピアツーピアデータ通信システムおよび方法が提供される。最初に、送信元ハンドセットは、サーバオペレーションコード（「オペコード」）セットを生成し、そして、このサーバオペコードセットを対応するデータペイロードと結合する。サーバオペコードセットおよび対応するデータペイロードは、次に、ネットワークベースのサーバに送信され、ここで、データが抽出されて、オペコードに対応する実行可能な命令が実行される。実行可能な命令は、ネットワークベースのサーバにリモートオペコードセットおよび対応するデータペイロードをコンパイルさせる。このリモートオペコードセットおよびデータペイロードは、データペイロードにおける送信元側ハンドセットによって識別された受信側ハンドセットに送信される。受信側ハンドセットがリモートオペコードセットおよびデータペイロードを受信した場合、受信側ハンドセットは、データペイロードを抽出し、かつリモートオペコードセットにおけるオペコードに対応する命令を実行する。命令の実行は、送信元側ハンドセットと受信側ハンドセットとの間のデータ通信を実施する受信側ハンドセットに対してアクションが実行されるようにする。
【０００７】
種々のアプリケーションが、この無線通信デバイス間のピアツーピアデータ通信のシステムおよび方法を用いて実現され得る。例えば、モバイルデバイス上の電話帳エントリが追加または更新され得、映像またはｅメールまたは他のドキュメント等のデータファイルが配信され得、顧客信号発信音（ｃｕｓｔｏｍｅｒ  ｒｉｎｇｅｒ）が送信元側ハンドセットに配信かつ割り当てられ得、ＧＰＳおよび位置ロケーションがリクエストおよび提供され得、空想スポーツチームドラフトさえも行われ得る。
【０００８】
本発明の詳細は、その構造および動作の両方について、部分的に添付の図面を検討することにより収集され得、図面において、同じ符号は同じ部分を指す。
【発明を実施するための最良の形態】
【０００９】
（詳細な説明）
本明細書中に記載された特定の実施形態は、無線通信デバイスと無線通信ネットワークとの間の動的命令セットの双方向通信のシステムおよび方法を提供する。例えば、本明細書中に記載されたある方法は、無線通信デバイスが命令セットを動的に構築し、かつその命令セットを実行および処理するためにネットワークに送信することを可能にする。
【００１０】
この説明を読んだ後、種々の実施形態および代替的アプリケーションで本発明を実現する態様が当業者に明らかになる。しかしながら、本発明の種々の実施形態が本明細書中に記載されるが、これらの実施形態は、例示にすぎず、限定されないことが理解される。従って、この種々の代替的実施形態の詳細な説明は、添付の請求項に記載される本発明の範囲または主旨を限定すると解釈されるべきでない。
【００１１】
以下の詳細な説明のいくつかの部分は、無線デバイスマイクロプロセッサまたはメモリ内のデータビットにおける動作の手順、ステップ、ロジックブロック、コード、処理、および、他のシンボリックな表現ついて示される。これらの記述および表現は、データ処理技術の当業者によって利用される手段であって、これらは、当該の別の技術者に仕事の実質を最も効果的に提供するためのものである。手順、マイクロプロセッサに実行されるステップ、アプリケーション、ロジックブロック、プロセス等は、本明細書中において、および一般的に、所望の結果を導くステップまたは命令の一貫したシーケンスであると考えられる。本ステップは、物理量（ｑｕａｎｔｉｔｙ）の物理的操作を要求するステップである。通常、必須ではないが、これらの量は、マイクロプロセッサに基づく無線デバイスにおいて、格納、伝達、結合、比較、およびそうでなければ操作され得る電気または磁気信号の形式を取り得る。これらの信号をビット、値、エレメント、シンボル、文字、用語、または数字等として示すことは、原則的に共通の用法で、時には便利であることが証明されている。メモリ等の物理的デバイスについて言及される場合、それらは、バスまたは他の電気接続を介して他の物理的デバイスに接続される。これらの物理的デバイスは、論理的プロセスまたはアプリケーションと相互作用し、従って、論理的演算に「接続される」と考えられ得る。例えば、メモリはさらなる論理演算に対するコードを格納またはアクセスし得るか、または、アプリケーションは、実行するためにメモリからコードセクションを呼び出し得る。
【００１２】
しかし、尚、全てのこれらおよび同様の用語は、適切な物理量に関連すべきであり、単にこれらの量に適用される便利なラベルにすぎない。他に特別に述べられない限り、以下の説明から明らかなように、本発明を通して、「処理」「接続」「翻訳」「表示」「プロンプト」「判定」「表示」または「認識」等の用語を利用した説明は、コンピュータシステムのレジスタおよびメモリ内の物理（電気的）量として示されるデータを無線デバイスメモリまたはレジスタまたは他のこのような情報格納デバイス、送信デバイスまたは表示デバイス内の物理量として同様に示される他のデータへ操作して変換する、無線デバイスマイクロプロセッサシステムのアクションおよびプロセスを示す。
【００１３】
図１は、無線デバイスソフトウェアメンテナンスシステム全体１００の概略的なブロック図である。本発明のシステムソフトウェアの組織化は、以下に詳細に示され、ソフトウェアメンテナンスシステムの一般的概要１００に従う。一般的なシステム１００は、システムソフトウェア更新および命令セット（プログラム）を送達するステップ、および送達されたソフトウェアを無線デバイスにインストールするステップのプロセスについて記述する。より一般的には命令セットまたは動的命令セットとして知られるシステムソフトウェア更新およびパッチマネージャランタイム命令（ＰＭＲＴＩ）は、ハンドセットの製造業者によって作成される。システムソフトウェアは、シンボルライブラリに組織化される。シンボルライブラリは、コードセクション内に配置される。シンボルライブラリが更新される場合、ソフトウェア更新１０２は、１つ以上のコードセクションとしてトランスポートされる。ソフトウェア更新は、現場の無線デバイス（無線通信デバイス１０４はその代表である）にブロードキャストされるか、または、公知の従来の空中でかつ、データまたはメッセージトランスポートプロトコルを利用して基地局１０６から別々の通信で送信される。本発明は、無線通信デバイスが、システムソフトウェアおよびＰＭＲＴＩ更新を受信する目的のために、任意の利用可能な空中を介した（ｏｖｅｒ−ｔｈｅ−ａｉｒ）トランスポートプロトコルを処理するように容易に修正され得るので、任意の特定のトランスポーテーションフォーマットに制限されない。
【００１４】
システムソフトウェアは、異なるサブシステムのコレクションとみなされ得る。コードオブジェクトは、これらの抽象的なサブシステムの１つにしっかりと接続され得、結果のコレクションは、シンボルライブラリとしてラベル付けされ得る。これは、コードベースの論理的ブレークダウンを提供し、ソフトウェアパッチおよび修正は、これらのシンボルライブラリに関連し得る。多くの場合、単一の更新は、１つまたは多くとも２つのシンボルライブラリと関連する。残りのコードベース、すなわち他のシンボルライブラリは、変化しないままである。
【００１５】
シンボルライブラリの概念は、コードおよび定数を扱うためのメカニズムを提供する。一方、リードライト（ＲＷ）データは、全てのライブラリのためのＲＡＭベースのデータを含む固有の個別ＲＷライブラリへ適合する。
【００１６】
無線デバイス１０４によって受信されると、トランスポートされたコードセクションは、処理されなければならない。この無線デバイスは、不揮発性メモリ１０８の固有のコードセクションを上書きする。不揮発性メモリ１０８は、ファイルシステムセクション（ＦＳＳ）１１０およびコード格納セクション１１２を含む。コードセクションは、通常、ＦＳＳ１１０の占有率を最小化するためにトランスポートの前に圧縮される。多くの場合、更新されたコードセクションは、ＲＷデータを伴い、ＲＷデータは、各シンボルライブラリのための全ＲＷデータを含む別の種類のシンボルライブラリである。システムソフトウェアは実行時にランダムアクセス揮発性リード−ライトメモリ１１４にロードされるが、ＲＷデータは、常に不揮発性メモリ１０８に格納される必要があり、そのため、ＲＷデータは、無線デバイスがリセットされる度に、ランダムアクセス揮発性リード−ライトメモリ１１４にロードされ得る。これは、初回のＲＷデータのランダムアクセス揮発性リード−ライトメモリへのロードを含む。以下により詳細に説明されるように、ＲＷデータは、通常、パッチマネージャコードセクションに配置される。
【００１７】
システム１００は、仮想テーブルの概念を含む。このようなテーブルを用いて、あるコードセクションのシンボルライブラリは、システムソフトウェアの他の部分（他のコードセクション）を壊す（置き換える）ことなく、パッチされる（置き換えられる）。仮想テーブルは、効率性のために、ランダムアクセス揮発性リード−ライトメモリ１１４から実行する。コードセクションアドレステーブルおよびシンボルオフセットアドレステーブルは、仮想テーブルである。
【００１８】
更新されたコードセクションは、無線デバイス１０４によって受信され、ＦＳＳ１１０に格納される。無線デバイスユーザインターフェイス（ＵＩ）は、通常、新しいソフトウェアが利用可能であることをユーザに通知する。ＵＩプロンプトに応答して、ユーザは、通知を確認し、かつ、パッチまたは更新動作をシグナリングする。もしくは、更新動作が自動的に実行される。無線デバイスは、更新プロセスが実行される時、標準的な通信タスクを実行不可能であり得る。パッチマネージャ更新セクションは、さらにランダムアクセス揮発性リード−ライトメモリ１１４へロードされる不揮発性リード−ライトドライバシンボルライブラリを含み得る。不揮発性リード−ライトドライバシンボルライブラリは、コードセクションを更新されるべきコードセクションで上書きさせる。図に示されるように、コードセクションｎおよびパッチマネージャコードセクションは、更新されるコードセクションで上書きされる。パッチマネージャコードセクションは、リード−ライトデータ、コードセクションアドレステーブル、およびシンボルオフセットアドレステーブル、ならびに、シンボルアクセサコードおよびシンボルアクセサコードアドレス（以下に説明される）を含む。このデータの一部分は、更新されたコードセクションが導入される時に無効であり、更新されたパッチマネージャコードセクションは、更新されたコードセクションに対して有効なリード−ライトデータ、コードセクションアドレステーブル、およびシンボルオフセットアドレステーブルを含む。一旦、更新されたコードセクションが、コード格納媒体１１２内にロードされると、無線デバイスはリセットされる。リセット動作に続いて、無線デバイスは、更新されたシステムソフトウェアを実行し得る。尚、パッチマネージャコードセクションは、上述されていない他のシンボルライブラリを含み得る。これらの他のシンボルライブラリは、リード−ライト揮発性メモリ１１４へロードされる必要がない。
【００１９】
図２は、エアリンクインターフェイスを介する命令セットのインストールをハイライトする、ソフトウェアメンテナンスシステム１００の概略的なブロック図である。更新システムソフトウェアコードセクションに加えて、メンテナンスシステム１００は、本明細書中でパッチマネージャランタイム命令（ＰＭＲＴＩ）と呼ばれる、動的命令セット、プログラム、またはパッチマネージャ命令セット（ＰＭＩＳ）をダウンロードおよびインストールし得る。ＰＭＲＴＩコードセクション２００は、上述のシステムソフトウェアコードセクションと同一の態様で無線デバイス１０４にトランスポートされる。ＰＭＲＴＩコードセクションは、最初にＦＳＳ１１０に格納される。ＰＭＲＴＩコードセクションは、通常、コンパイルされたハンドセットへの命令として可視化され得るバイナリフィアルである。ＰＭＲＴＩコードセクションは、基本数学的演算の性能および条件付きで実行される演算の性能を提供するのに十分に包括的である。例えば、ＲＦ調整ＰＭＲＴＩは、以下の動作を実行し得る。
【００２０】
【数１】
2004537895.tif 000003
ＰＭＲＴＩは、加算、減算、乗算、および除算等の基本数学的演算をサポートし得る。システムソフトウェアコードセクションと共に、ＰＭＲＴＩコードセクションは、ＵＩプロンプトに応答してロードされ得、無線デバイスは、ＰＭＲＴＩがコード格納セクション１１２へロードされた後、リセットされなくてはならない。その後、ＰＭＲＴＩセクションは、実行され得る。ＰＭＲＴＩコードセクションが任意の仮想テーブルまたはリード−ライトデータと関連する場合、更新されたパッチマネージャコードセクションは、コード格納セクション１１２におけるインストールのためにＰＭＲＴＩと共にトランスポートされる。もしくは、ＰＭＲＴＩは、保持されて、ＦＳＳ１１０から処理され得る。ハンドセット１０４は、ＰＭＲＴＩセクションにおける全ての命令を実行した後、ＰＭＲＴＩセクションは、ＦＳＳ１１０から削除され得る。あるいは、ＰＭＲＴＩは、さらなる動作のために維持される。例えば、ＰＭＲＴＩは、無線デバイスが電力供給（ｅｎｅｒｇｉｚｅｄ）されるたびに実行され得る。
【００２１】
ＰＭＲＴＩは、非常に強力なランタイム命令エンジンである。ハンドセットは、ＰＭＲＴＩ環境を介してハンドセットに送達される任意の命令を実行し得る。このメカニズムは、ＲＦ調整をサポートするために利用され得る。より一般的には、ＰＭＲＴＩが利用され、典型的にはユーザの不満の結果等のソフトウェア問題が製造業者またはサービスプロバイダによって認識される場合、無線デバイスソフトウェアをリモートデバックし得る。ＰＭＲＴＩはまた、ソフトウェアの問題を診断するために必要なデータを記録できる。ＰＭＲＴＩは、データ解析、デバック、および修正用の新しくダウンロードされたシステムアプリケーションを起動し得る。ＰＭＲＴＩは、更新されたシステムソフトウェアコードセクションの代わりに、ある問題に対する解析およびできる限り短い時間での修正のためのＲＷデータをベースにした更新を提供し得る。ＰＭＲＴＩは、無線デバイスによる利用のためにメモリ圧縮アルゴリズムを提供し得る。
【００２２】
本発明のいくつかの局面において、システムソフトウェアのシンボルライブラリへの組織化が、実行のために必要とされる揮発性メモリ１１４および不揮発性メモリ１０８のサイズに影響を及ぼし得る。これは、コードセクションが、通常、コードセクション内に配置される、シンボルライブラリよりも大きいという事実による。これらのより大きいコードセクションは、更新コードセクションを収容するために存在する。システムソフトウェアをライブラリのコレクションとして組織化することにより、不揮発性メモリのサイズ要件に影響が及ぼされる。コードセクションは、中に配置されるシンボルライブラリよりも大きいサイズであり得るという事実により、同じコードサイズに対して用いられる不揮発性メモリの量が多くなる。
【００２３】
一旦、ソフトウェア更新が、無線デバイスに送達されると、ソフトウェアメンテナンスシステム１００は、メモリ圧縮をサポートする。メモリ圧縮は、デスクトップコンピュータのディスクデフラグアプリケーションと同様である。圧縮メカニズムは、メモリが最適に利用され、将来のコードセクション更新のために良好にバランスされることを保証し、ここで、更新されるコードセクションのサイズは、予測できない。システム１００は、パッチがあてられる（更新される）コード格納セクションを解析する。システム１００は、更新されたコードセクションを、置換されるコードセクションにより占有されるメモリスペースへ適応させることを試みる。更新されたコードセクションが置換されるコードセクションよりも大きい場合、システム１００は、メモリ１１２のコードセクションを圧縮する。もしくは、圧縮は、製造業者またはサービスプロバイダによって計算され得、圧縮命令は、無線デバイス１０４へトランポートされ得る。
【００２４】
圧縮は、アルゴリズムの複雑性および膨大な量のデータ移動により、時間消費プロセスになり得る。圧縮アルゴリズムは、任意の処理が開始する前に、実行可能性を予測する。ＵＩプロンプトは、圧縮が試みられる前に、ユーザからの許可を適用するために利用され得る。
【００２５】
本発明のある局面では、全システムソフトウェアコードセクションは、同時に更新され得る。しかしながら、完全なシステムソフトウェア更新は、より大きなＦＳＳ１１０を要求する。
【００２６】
図３は、無線通信デバイスにおける本発明の動的命令セットの実行を示す模式的ブロック図である。システム３００は、複数の現在のコードセクションに区分された実行可能な無線デバイスシステムソフトウェアを含むメモリ１０８内にコード格納セクション１１２を備える。コードセクション１（３０２）、２（３０４）、およびｎ（３０６）、ならびにパッチマネージャコードセクション３０８が示される。しかしながら、本発明は、コードセクションの任意の特定の数に制限されない。システム３００はさらに、第２の複数のコードセクション内に配置される第１の複数のシンボルライブラリを含む。示されるのは、コードセクション１（３０２）に配置されるシンボルライブラリ１（３１０）、コードセクション２（３０４）に配置されるシンボルライブラリ２（３１２）および３（３１４）、ならびにコードセクションｎ（３０６）に配置されるシンボルライブラリｍ（３１６）である。各ライブラリは、関連する機能性を有するシンボルを含む。例えば、シンボルライブラリ１（３１０）は、無線デバイス液晶ディスプレイ（ＬＣＤ）の動作に関与し得る。そして、シンボルは、ディスプレイ機能に関連する。以下に詳細に示されるように、さらなるシンボルライブラリは、パッチマネージャコードセクション３０８に配置される。
【００２７】
図４は、無線デバイスメモリの概略的なブロック図である。示されるように、メモリは、図１のコード格納セクション１１２である。メモリは、フラッシュメモリのような書き込み可能な不揮発性メモリである。尚、コードセクションは、必ずしもＦＳＳ１１０と同一のメモリに格納される必要はないことが理解される。尚、本発明のシステムソフトウェア構造は、複数の協働するメモリに格納されるコードセクションにより有効にされることも理解される。コード格納セクション１１２は、第２の複数の連続してアドレスされるメモリブロックを含み、ここで、各メモリブロックは、第２の複数のコードセクションに対応するコードセクションを格納する。従って、コードセクション１（３０２）は、第１のメモリブロック４００に格納され、コードセクション２（３０４）は、第２のメモリブロック４０２に格納され、コードセクションｎ（３０６）は、第ｎのメモリブロック４０４に格納され、そしてパッチマネージャコードセクション（３０８）は、第ｐのメモリブロック４０６に格納される。
【００２８】
図３および４と対照的に、各コードセクションの開始点は、メモリの対応する開始アドレスに格納され、シンボルライブラリは、コードセクションの開始点で開始するように配置される。すなわち、各シンボルライブラリは、第１のアドレスで開始し、第１のアドレスから連続してある範囲のアドレスを通って走行する。例えば、コードセクション１（３０２）は、コード格納セクションメモリ１１２の第１の開始アドレス４０８（「Ｓ」でマークされる）で開始する。図３では、シンボルライブラリ１（３１０）は、第１のコードセクションの開始点３１８で開始する。コードセクション２（３０４）が第２の開始アドレス４１０（図４）で開始するのと同様に、シンボルライブラリ２は、コードセクション２（図３）の開始点３２０で開始する。コードセクションｎ（３０６）は、コード格納セクションメモリ１１２の第３の開始アドレス４１２（図４）で開始し、シンボルライブラリｍ（３１６）は、コードセクションｎ３２２（図３）の開始点で開始する。パッチマネージャコードセクションは、コード格納セクションメモリ１１２の第ｐの開始アドレス４１４で開始し、そしてパッチマネージャコードセクション３０８の第１のシンボルライブラリは、パッチマネージャコードセクションの開始点３２４で開始する。従って、シンボルライブラリ１（３１０）は、最終的に、第１のメモリブロック４００に格納される。コードセクションが、コードセクション２（３０４）のような複数のシンボルライブラリを含む場合、複数のシンボルライブラリは、対応するメモリブロック（この場合、第２のメモリブロック４０２）に格納される。
【００２９】
図３では、システムソフトウェア構造３００は、パッチマネージャコードセクション３０８に配置されるシンボルライブラリに含まれるシンボルのあるタイプとして、コードセクションアドレステーブル３２６をさらに含む。コードセクションアドレステーブルは、コードセクション識別子をメモリの対応するコードセクション開始アドレスと相互参照する。
【００３０】
図５は、図３のコードセクションアドレステーブル３２６を示すテーブルである。コードセクションアドレステーブル３２６は、シンボルライブラリに対するコードセクション開始アドレスを見つけ出すために参照される。例えば、システム３００は、シンボルライブラリ１のシンボルが実行に必要とされる時、コードセクション１を検索する。コードセクション１の開始アドレスを見つけ出し、従って、シンボルをシンボルライブラリ１に位置付けるために、コードセクションアドレステーブル３２６は、参照される。コードセクションのシンボルライブラリの配置、およびテーブルによるコードセクションのトラッキングは、コードセクションが移動され、かつ拡張されることを可能にする。拡張または移動動作は、アップグレードされたコードセクション（アップグレードされたシンボルライブラリを含む）をインストールするために必要とされ得る。
【００３１】
尚、図３に戻って、全てのシンボルライブラリは、必ずしもコードセクションの開始点で開始するわけではない。示されるように、シンボルライブラリ３（３１４）は、コードセクション２（３０４）に配置されるが、コードセクション開始アドレス３２０で開始しない。従って、シンボルライブラリ３（３１４）のシンボルが実行のために必要とされる場合、システム３００は、コードセクション２（３０４）の開始アドレスに対してコードセクションアドレステーブル３２６を参照する。以下に説明されるように、シンボルオフセットアドレステーブルは、シンボルライブラリ３（３１４）のシンボルが位置付けられることを可能にする。シンボルが、複数のライブラリにわたって広がることは、同一のコードセクションに保持されない限り、問題ではない。
【００３２】
上述されたように、各シンボルライブラリは、機能的に関連したシンボルを含む。シンボルは、空中を介した通信本体、変数、またはデータ構造を位置付け、かつ利用するための、プログラマ定義の名前である。従って、シンボルは、アドレスまたは値であり得る。シンボルは、内部または外部であり得る。内部シンボルは、現在のコードセクションの範囲を超えて、可視ではない。より詳細には、内部シンボルは、他のコードセクションにおいて、他のシンボルライブラリによって検索されない。外部シンボルは、コードセクション間で利用および呼び出しされ、かつ、異なるコードセクションのライブラリによって検索される。シンボルオフセットアドレステーブルは、通常、全ての外部シンボルのリストを含む。
【００３３】
例えば、シンボルライブラリ（３１０）は、無線デバイスディスプレイ上に文字を生成する。このライブラリのシンボルは、電話番号、名前、時刻、または他のディスプレイ機能を生成する。各機能は、本明細書中でシンボルとして参照する、空中を介した通信によって生成される。例えば、シンボルライブラリ１（３１０）の１つのシンボルは、ディスプレイ上に電話番号を生成する。このシンボルは、「Ｘ」で表わされ、外部である。無線デバイスがフォンコールを受け、呼び出し側ＩＤサービスが起動される場合、システムは、「Ｘ」シンボルを実行させたい場合、ディスプレイ上に番号を生成しなければならない。従って、システムは、「Ｘ」シンボルを位置付けなければならない。
【００３４】
図６は、シンボルを有する、図３のシンボルライブラリ１（３１０）の詳細な図である。シンボルは、各コードセクション開始アドレスからオフセットされるように配置される。多くの状況では、シンボルライブラリの開始点は、コードセクションの開始点であるが、これは、コードセクションが１つより多いシンボルライブラリを含む場合に当てはまらない。シンボルライブラリ（３１０）は、コードセクション１（図３を参照されたい）の開始点で開始する。図６に示されるように、「Ｘ」シンボルは、シンボルライブラリの開始点からの（０３）のオフセットに位置付けられ、「Ｙ」シンボルは、（１５）のオフセットに位置付けられる。シンボルオフセットアドレスは、パッチマネージャコードセクションのシンボルオフセットアドレステーブル３２８に格納される（図３）。
【００３５】
図７は、図３のシンボルオフセットアドレステーブル３２８を示すテーブルである。シンボルオフセットアドレステーブル３２８は、対応するオフセットアドレス、およびメモリの対応するコードセクション識別子によってシンボル識別子を相互参照する。従って、システムは、シンボルライブラリ１において「Ｘ」シンボルを実行させるために検索し、シンボルオフセットアドレステーブル３２８は、それが配置されるコードセクションについて、シンボルの正確なアドレスを位置付けるために参照される。
【００３６】
図３に戻って、第１の複数のシンボルライブラリは全て、通常、これらのシンボルライブラリの実行時に参照される、または設定されなければならないリード−ライトデータを含む。例えば、シンボルライブラリは、条件付きステートメントに依存する動作を含み得る。リード−ライトデータセクションを参照して、条件付きステートメントを完了させるために必要なステータスを判定する。本発明は、全てのシンボルライブラリから共有されるリード−ライトセクションへリード−ライトデータをグループ化する。本発明のある局面では、リード−ライトデータ３３０は、パッチマネージャコードセクション３０８に配置される。もしくは（示されない）、リード−ライトデータは、異なるコードセクション、例えば、コードセクションｎ（３０６）に配置され得る。
【００３７】
第１の複数のシンボルライブラリはまた、検索されるシンボルのアドレスを計算するために、コードセクションに配置されるシンボルアクセサコードを含む。シンボルアクセサコードは、別々のコードセクション、例えば、コードセクション２（３０４）のアドレスに配置され、かつ格納され得る。しかし、示されるように、シンボルアクセサコード３３２は、パッチマネージャコードセクション３０８のアドレスに配置され、格納される。システム３００は、さらに、シンボルアクセサコードアドレスを格納する第１の位置を含む。第１の位置は、コード格納セクション１１２、または無線デバイス（示されない）の別々のメモリセクションにおけるコードセクションであり得る。第１の位置はまた、リード−ライトデータと同一のコードセクションにも配置され得る。示されるように、第１の位置３３４は、リード−ライトデータ３３０、シンボルオフセットアドレステーブル３２８、コードセクションアドレステーブル３２６、シンボルアクセサコード３３２、およびパッチライブラリ（パッチシンボルライブラリ）３３６を有するパッチマネージャコードセクション３０８に格納される。
【００３８】
シンボルアクセサコードは、コードセクションアドレステーブルおよびシンボルオフセットアドレステーブルを利用して、メモリにおいて検索されるべきシンボルの正確なアドレスを検索する。すなわち、シンボルアクセサコードは、対応するシンボル識別子および対応するコードセクション識別子を用いて検索されるシンボルのアドレスを計算する。例えば、シンボルライブラリ１の「Ｘ」シンボルが検索される場合、シンボルアクセサは、「Ｘ」シンボルに対応して（図７を参照されたい）、シンボル識別子（シンボルＩＤ）Ｘ＿１を検索するために呼び出される。シンボルアクセサコードは、シンボルオフセットアドレスを参照して、Ｘ＿１シンボル識別子がコードセクション１の開始点から（０３）のオフセットを有することを判定する（図６を参照されたい）。シンボルアクセサコードは、コードセクション１に対応して、コードセクション識別子ＣＳ＿１を検索するために呼び出される。シンボルアクセサコードは、コードセクションテーブルを参照して、コードセクション識別子（コードセクションＩＤ）ＣＳ＿１と関連する開始アドレスを決定する。この方法では、シンボルアクセサコードは、シンボル識別子Ｘ＿１が、（００１００）のアドレスからの（０３）のオフセットであるか、または、アドレス（００１０３）に位置付けられるかを決定する。
【００３９】
シンボル「Ｘ」は、実際のコードの一部であるので、予約された名前である。言い換えると、シンボル「Ｘ」は、それに関連する絶対値データである。データは、アドレスまたは値であり得る。シンボル識別子は、シンボルをトラックするために生成されるエイリアスである。シンボルオフセットアドレステーブルおよびコードセクションアドレステーブルの両方が識別子と共に作用して、予約されたシンボルおよびコードセクション名との混乱を避ける。また、同一のシンボル名を多くのシンボルライブラリにわたって利用することが可能である。識別子の利用は、これらのシンボル間の混乱を避ける。
【００４０】
図１に戻って、システム構造３００はさらに、リード−ライト揮発性メモリ１１４、典型的にはランダムアクセスメモリ（ＲＡＭ）を含む。リード−ライトデータ３３０、コードセクションアドレステーブル３２６、シンボルオフセットアドレステーブル３２８、シンボルアクセサコード３３２、およびシンボルアクセサコードアドレス３３４は、システムソフトウェアの実行中のアクセスのために、パッチメネージャセクションからリード−ライト揮発性メモリ１１４へロードされる。周知のように、ＲＡＭに格納されるコードのアクセス時間は、Ｆｌａｓｈのような不揮発性メモリへのアクセスよりもはるかに短い。
【００４１】
図３に戻って、尚、シンボルライブラリは、それらが配置されるコードセクションを必ずしも満たす必要はないが、メモリブロックが内部に格納される対応のコードセクションを正確に収容するようにサイズ合わせされる。代わりに述べられるのは、第２の複数のコードセクションの各々は、配置されるシンボルライブラリを収容するバイトサイズを有し、連続してアドレスされるメモリブロックの各々は、対応するコードセクションを収容するバイトサイズを有する。例えば、コードセクション１（３０２）は、１００バイトの長さを有するシンボルライブラリを収容する１００バイトのセクションであり得る。第１のメモリブロックは、コードセクション１のバイトサイズに一致する１００バイトである。しかし、コードセクション１にロードされるシンボルライブラリは、１００バイトよりも小さくなってもよい。図３に示されるように、コードセクション１（３０２）は、シンボルライブラリ１（３１０）が１００バイトよりも小さい場合、未使用セクション３４０を有する。従って、第２の複数のコードセクションの各々は、配置されるシンボルライブラリを収容するのに必要となるサイズよりも大きいサイズを有する。「過剰なサイズ」のコードセクションにより、より大きな更新されたシンボルライブラリが収容され得る。
【００４２】
連続的にアドレスされるメモリブロックは、物理的メモリ空間を種々のサイズのロジックブロックに区切ることである。コードセクションおよびメモリブロックは、コードセクションがメモリに格納された場合に実質的に交換可能である用語である。コードセクションという概念は、コードセクションにおけるシンボルライブラリ、またはシンボルライブラリのコレクションよりもおそらく大きいコードのセクションが移動および操作される場合に識別するために用いられる。
【００４３】
図３に見出されるように、現在のコードセクションを有するコード格納セクションに新しいコードセクションを配置するために、システム３００は、本明細書中でパッチライブラリ３３６と呼ばれるパッチシンボルライブラリを含む。コード格納セクションにおける現在のコードセクションと共に新しいコードセクションの配置は、更新される実行可能なシステムソフトウェアを形成する。パッチマネージャ３３６は、現在のコードセクションと共に新しいコードセクションを配置するだけでなく、コードセクションを更新されるコードセクションとも置換する。
【００４４】
図４に戻って、メモリ１０８のファイルシステムセクション１１０は、新しいコードセクション４５０および更新されるパッチマネージャコードセクション４５２等の新しいコードセクションを受信する。ファイルシステムセクションは、さらに、現在のコードセクションと共に新しいコードセクションを配置するための命令を含む第１のパッチマネージャランタイム命令（ＰＭＲＴＩ）４５４を受信する。図１に見出されるように、エアリンクインターフェイス１５０は、新しいか、または更新されるコードセクション、ならびに第１のＰＭＲＴＩを受信する。エアリンクインターフェイス１５０は、アンテナによって表されるが、エアリンクインターフェイス１５０は、さらに、ＲＦトランシーバ、ベースバンド回路および復調回路（図示せず）を含むことに留意されたい。ファイルシステムセクション１１０は、エアリンクインターフェイス１５０を介して受信された新しいコードセクションを格納する。パッチライブラリ３３６は、リード−ライト揮発性メモリ１１４から実行し、コード格納セクションの第１のコードセクション、例えば、コードセクションｎ（３０６）を、第１のＰＭＲＴＩ４５４に応答して、新しいか、または更新されるコードセクション４５０と置換する。通常、パッチマネージャコードセクション３０８は、更新されるパッチマネージャコードセクション４５２と置換される。コードセクションが置換された場合、パッチライブラリ３３６は、コード格納セクション１１２における第１のコードセクション、例えば、コードセクションｎ（３０６）を、ファイルシステムセクション１１０における、更新されたコードセクション、例えば、コードセクション４５０に上書きする。極端な場合、コード格納セクション１１２におけるすべてのコードセクションは、更新されるコードセクションと置換される。すなわち、ＦＳＳ１１０は、第２の複数の更新されたコードセクション（図示せず）を受信し、パッチライブラリ３３６は、コード格納セクション１１２における第２の複数のコードセクションを第２の複数の更新されるコードセクションと置換する。当然、ＦＳＳ１１０は、エアリンクインターフェイスを介して受信された第２の複数の更新されるコードセクションを収容するように十分に大きくしなければならない。
【００４５】
上述のように、受信された更新されるコードは、リード−ライトデータコードセクション、コードセクションアドレステーブルコードセクション、シンボルライブラリ、シンボルオフセットアドレステーブルコードセクション、シンボルアクセサコードセクション、または新しいパッチライブラリを有するコードセクションを含み得る。これらのすべてのコードセクションは、関連するシンボルライブラリおよびシンボルと共に、別個かつ独立したコードセクションとして格納され得る。その後、これらのコードセクションの各々は、一意的に更新されるコードセクションと置換される。すなわち、更新されるリード−ライトコードセクションは、受信されて、コード格納セクションにおけるリード−ライトコードセクションを置換する。更新されたコードセクションアドレステーブルコードセクションは、受信されて、コード格納セクションにおけるコードセクションアドレステーブルコードセクションを置換する。更新されたシンボルオフセットアドレステーブルコードセクションは、受信されて、コード格納セクションにおけるシンボルオフセットアドレステーブルコードセクションを置換する。更新されるシンボルアクセサコードセクションは、受信されて、コード格納セクションにおけるシンボルアクセサコードセクションと置換する。同様に、更新されるパッチマネージャコードセクション（パッチライブラリを有する）は、受信されて、コード格納セクションにおけるパッチマネージャコードセクションと置換する。
【００４６】
しかしながら、上述のコードセクションは、通常、パッチマネージャコードセクションの中でバンドルされる。従って、コード格納セクションにおけるリード−ライトコードセクションは、パッチマネージャコードセクション３０８が、更新されるパッチマネージャコードセクション４５０と置換された場合、ファイルシステムセクション１１０からの更新されるリード−ライトコードセクションと置換される。同様に、更新されるパッチマネージャコードセクション４５０がインストールされた場合、コードセクションアドレステーブル、シンボルオフセットアドレステーブル、シンボルアクセサコードセクション、およびパッチライブラリが置換される。新しいリード−ライトデータ、新しいコードセクションアドレステーブル、新しいシンボルオフセットアドレステーブル、新しいシンボルアクセサコード、および更新されるパッチマネージャコードセクション４５０としての新しいパッチライブラリの、コード格納セクションにおける現在のコードセクションと共に配置されることが更新される実行可能なシステムソフトウェアを形成する。
【００４７】
ファイルシステムセクション１１０が更新されたシンボルアクセサコードアドレスを受信した場合、パッチマネージャは、メモリ内の第１のロケーションにおけるシンボルアクセサコードアドレスを更新されるシンボルアクセサコードアドレスと置換する。上述のように、メモリ内３３４の第１のロケーションは、通常、パッチマネージャコードセクションにある（図３を参照）。
【００４８】
図３に見出されるように、パッチライブラリ３０８は、さらに、圧縮器、または圧縮器シンボルライブラリ３４２を含み得る。圧縮器３４２は、さらに、別個および独立したコードセクションとしてイネーブルされ得るが、上述のように、システムソフトウェアアップグレードと関連した機能を単一のパッチマネージャコードセクションにバンドルすることは有用かつ効率的である。通常、圧縮器３４２は、コードセクションのサイズを変更すると考えられることができ、これにより、新しいセクションは、コード格納セクション１１２における現在のコードセクションと共に配置され得る。
【００４９】
ここで確立された組織、ダウンロード、および圧縮の本発明の局面に関して、以下の説明は、無線通信デバイス動的命令セット実行システム３００に集中させる。システム３００は、詳細に上述されたように、実行可能なシステムソフトウェア、およびコードセクションと区分されたシステムデータを含む。さらに、システム３００は、システムデータおよびシステムソフトウェア上で演算し、かつ、システムソフトウェアの実行を制御するための動的命令セットを含む。図４に示されるように、動的命令セット４７０は、第１のＰＭＲＴＩ４５４に組織化される。図３に見出されるように、システムは、さらに、ランタイムライブラリ３７０によってイネーブルされる動的命令セットを処理するためのランタイムエンジンを含む。圧縮器ライブラリ３４２およびパッチライブラリ３３６に関して述べられたように、ランタイムライブラリ３７０は、通常、パッチマネージャコードセクション３０８に配置される。しかしながら、ランタイムライブラリ３７０は、代替的に、別のコードセクション、例えば、第１のコードセクション３０４において配置され得る。
【００５０】
動的命令セットは、条件付きオペレーションコードを含み、かつ、通常、データアイテムを含む命令の１つまたは複数のセットである。ランタイムエンジンは、オペレーションコードを読み出し、かつ、どの演算が実行されることが必要かを決定する。オペレーションコードは、条件的、数学的、プロシージャ的または論理的であり得る。ランタイムエンジン、またはランタイムライブラリ３７０は、数学的または論理演算等の演算を実行するために動的命令セットを処理する。すなわち、ランタイムエンジンは、動的命令セット４７０を読み出し、かつ、このオペレーションコードに応答して、演算のシーケンスを実行する。動的命令セットは任意の特定の言語に限定されないが、オペレーションコードは、通常、マシンコードの形態であり、これは、無線デバイスメモリが限定され、実行速度が重要だからである。オペコードは、データアイテムを解析し、かつ、解析の結果として決定を下すという点で条件的であると考えられる。ランタイムエンジンは、さらに、解析される前に、データに関する演算が実行されることを決定し得る。
【００５１】
例えば、オペレーションコードは、無線デバイスメモリからのデータが所定の値と比較されるように規定し得る。データアイテムが所定の値よりも小さい場合、データアイテムは、そのままにされ、データアイテムが所定の値よりも大きい場合、これは所定の値と置換される。あるいは、オペレーションコードは、上述の比較演算が実行される前に、第２の所定の値を無線デバイスメモリからのデータアイテムに追加し得る。
【００５２】
上述のように、ファイルシステムセクション不揮発性メモリ１１０は、エアリンク１５０等のインターフェイスを通じて動的命令セットを受信する。図１に示されるように、インターフェイスは、さらに、無線周波数の（ＲＦ）ハードライン１６０であり得る。その後、ＰＭＲＴＩは、システムソフトウェアが工場での調整環境等のように動作状態ではなく、ＦＳＳ１１０によって受信され得る。ＰＭＲＴＩは、さらに、論理ポートインターフェイス１６２、またはインストール可能メモリモジュール１６４を介して受信され得る。メモリモジュール１６４は、初期調整で無線デバイス１０４にインストールされるか、または工場での再調整中にインストールされ得る。特に記載はないが、ＰＭＲＴＩは、赤外線またはＢｌｕｅｔｏｏｔｈインターフェイスを介して受信され得る。
【００５３】
図８は、ランタイムエンジン３７０によってアクセスされる命令を示す。示されるのは、第１の命令８００、第２の命令８０２、およびｊ番目の命令８０４であるが、動的命令セットは任意の特定の数の命令に限定されない。各命令におけるオペレーションコードの長さは固定される。ランタイムエンジン３７０は、バイトまたはビットの測定のように、命令の長さをキャプチャし、命令がデータアイテムを含むか否かを決定する。オペレーションコードが減算された後の命令の残りの長さは、データアイテムを含む。ランタイムエンジンは命令からデータアイテムを抽出する。示されるように、第１の命令８００の長さ８０６が測定され、かつデータアイテム８０８が抽出される。すべての命令が抽出されるべきデータアイテムを必ずしも含まないことに留意されたい。ランタイムエンジン３７０は、命令８００におけるオペレーションコード８１０に応答する演算のシーケンスを実行する際に、この抽出されたデータ８０８を用いる。
【００５４】
図９は、図８の第１の命令８００のより詳細な図である。第１の命令８００を例として用いて、命令は、オペレーションコード８１０およびデータ８０８を含む。命令、および、より具体的には、データアイテムセクション８０８は、シンボル識別子を含み、これは、無線デバイスコードセクションにおけるシンボルへのリンクとして機能する。すでに詳細に説明されたように、シンボル識別子は、シンボル識別子に対応するシンボルを配置するために、コードセクションアドレステーブル３２６（図５を参照）およびシンボルオフセットアドレステーブル３２８（図７を参照）と共に用いられる。示されるように、シンボル識別子「Ｘ＿１」は、第１の命令８００において示される。シンボルオフセットアドレステーブル３２８は、「ＣＳ＿１」識別子および「３」のオフセットを有するコードセクションにおいて対応するシンボルを配置する。コードセクションアドレステーブル３２６は、コードセクション１の開始アドレス（３０２）を与える。このようにして、シンボル「Ｘ」が見出される（図６を参照）。
【００５５】
ランタイムエンジンが、コードセクションアドレステーブルおよびシンボルオフセットアドレステーブルを用いて、受信されたシンボル識別子に対応するシンボルを配置した後、これは、配置されたシンボルがデータアイテムである場合データを抽出する。例えば、シンボル「Ｘ」がシンボルライブラリ１（３１０）におけるデータアイテムである場合、ランタイムエンジンはこれを抽出する。あるいは、「Ｘ」シンボルは、オペレーションコードであり得、ランタイムエンジンは、これが配置されると、シンボル「Ｘ」を実行させる。
【００５６】
ＰＭＲＴＩがシステムデータまたはシステムデータアイテムを更新するために用いられ得る。本発明のいくつかの局面において、システムデータが、ファイルシステムセクション１１０、例えば、コードセクション４７２におけるコードセクションに格納される（図４を参照）。ランタイムエンジンはコードセクション４７２からのシステムデータにアクセスし、かつ、このシステムデータを解析する。ランタイムエンジンは、上述のように、データアイテムに関する数学的、または論理的演算を実行するために、動的命令のオペレーションコードを処理する。演算の後、ランタイムエンジンは、更新されるシステムデータを生成する命令を処理する。更新されるシステムデータは、いくつかの状況において、変更されないデータアイテムを含み得ることに留意されたい。第２のコードセクション４７２におけるシステムデータは、オペレーションコードに応答して、更新されるシステムデータと置換される。従って、ランタイムエンジンによる命令の処理によって、システムソフトウェアは、コードセクション４７２における更新されたシステムデータを用いて実行するように制御される。このようにして、システムソフトウェアにおける、特定のターゲットとされたシンボルが更新され得るが、コードセクション全体は置換されない。同じプロセスによって、システムデータは、コード格納セクション１１２におけるコードセクションにおいて置換され得る。例えば、システムデータは、第３のコードセクション３４４に格納され得、ランタイムエンジンは、第３のコードセクションにおけるシステムデータを、オペレーションコードに応答して、更新されるシステムデータと置換し得る。
【００５７】
ＰＭＲＴＩは、さらに、揮発性メモリ１１４内のデータを更新するために用いられ得る。１例として、揮発性メモリ１１４は、リード−ライトデータ３３０を受取る（図１を参照）。リード−ライトデータは、コード格納セクション１１２および／またはＦＳＳ１１０における１つまたは複数のコードセクションから出力され得る。ランタイムエンジンは、リード−ライトデータにアクセスし、リード−ライトデータ３３０を解析し、更新されるリード−ライトデータを生成し、かつ揮発性メモリ１１４におけるリード−ライトデータ３３０を、オペレーションコードに応答して、更新されるリード−ライトデータ３３０と置換する。その後、システムソフトウェアは、揮発性メモリ１１４内の更新されたリード−ライトデータを用いて実行するように制御される。
【００５８】
本発明のいくつかの局面において、ランタイムエンジンは、システムソフトウェアの実行をモニタリングする。性能モニタリングは、多数の無線デバイスアクティビティを含むように広く規定される。例えば、チャネルパラメータ、チャネル特性、システムスタック、エラー状態、または、特定の故障状態または性能低下状態に至る演算のシーケンスを通じてのＲＡＭにおけるデータアイテムのレコード等のデータが収集され得る。収集された性能データを解析するために動的命令セットを用い、更新されるデータの変形を提供し、かつ問題に対する可能な解決策を検討するためにデータを再キャプチャすることも可能である。ＰＭＲＴＩプロセスを用いて一次的な修理も提供され得る。
【００５９】
より具体的には、ランタイムエンジンは性能データを収集し、かつ、オペレーションコードに応答して、性能データをファイルシステムセクションに格納する。その後、システムソフトウェアは、システムソフトウェアの評価のために性能データを収集することによって実行するように制御される。評価は、動的命令セットオペレーションコードによって実行される解析の形態として行われ得るか、または、評価は、無線デバイスの外部で実行され得る。本発明のいくつかの局面において、ランタイムエンジンは、ファイルシステムセクションから収集された性能データをアクセスし、かつ、オペレーションコードに応答して、エアリンクインターフェイスを介して性能データを送信する。現場の無線デバイスから性能データを収集することによって、製造業者が、デバイスをリコールすることなく、地域的または地球規模で問題を徹底的に解析することが可能になる。
【００６０】
本発明のいくつかの局面において、ファイルシステムセクション１１０は、新しいコードセクションを含むパッチマネージャランタイム命令を受信する。例えば、新しいコードセクション４７４は、図４に示される。あるいは、新しいコードセクションｎ（４５０）等の新しいコードセクションは、ＰＭＲＴＩに依存し得ない。例えば、新しいコードセクションｎ（４５０）は、以前のエアリンク通信で受信され得るか、または、工場調整中にインストールされ得る。ランタイムエンジンは、オペレーションコードに応答して、新しいコードセクション４７４（４５０）をコード格納セクションに追加する。本発明のいくつかの局面において、新しいコードセクションは、コード格納セクション１１２における未使用のブロックに追加される。あるいは、圧縮演算が必要とされる。その後、システムソフトウェアは、新しいコードセクション４７４（４５０）を用いて実行するように制御される。本発明の他の局面において、ＰＭＲＴＩ４５４は、更新されたコードセクション４７４を含む。あるいは、新しいコードセクション４５０は、ＰＭＲＴＩに依存しない更新されたコードセクションである。ランタイムエンジンは、コード格納セクションにおけるコードセクション、例えば、コードセクション２（３０４）を、オペレーションコードに応答して、更新されるコードセクション４７４（４５０）と置換する。システムソフトウェアは、更新されたコードセクション４７４（４５０）を用いて実行するように制御される。本発明のいくつかの局面において、圧縮演算は、更新されるコードセクションを収容するために必要とされる。あるいは、更新されるコードセクションは、コード格納セクションの未使用または空のセクションに追加される。
【００６１】
上述のように、新しいコードセクションの追加、またはコードセクションの更新は、通常、新しいコードセクションアドレステーブルの生成を必要とし、これは、これらの演算は、新しいおよび／または変更されたコードセクション開始アドレステーブルを含むからである。さらに、圧縮演算はまた、新しいコードセクションアドレステーブルを必要とする。圧縮演算は、上述の圧縮器３４２の演算の結果か、または、圧縮方法関する詳細を供給するＰＭＲＴＩ命令の結果であり得る。ＰＭＲＴＩがダウンロードおよび圧縮命令を含む場合、ＰＭＲＴＩは、通常、ダウンロードおよび圧縮が完了された後に有効になる新しいコードセクションアドレステーブルをさらに含む。
【００６２】
図１０ａおよび図１０ｂは、無線通信デバイスにおいて動的命令セットを実行する本発明の方法を示すフローチャートである。明瞭にするために、ナンバリングされたステップのシーケンスとして示されるが、特に明示なき場合、ナンバリング（および後述される方法におけるナンバリング）から順序が推論されるべきでない。方法は、ステップ１０００で開始する。ステップ１００１ａは、システムソフトウェアをシンボルライブラリに形成し、各シンボルライブラリは、関連する機能を有するシンボルを含む。ステップ１００１ｂは、シンボルライブラリをコードセクションに配置する。ステップ１００２は、システムソフトウェアを実行する。ステップ１００３は、動的命令セットを受信する。ステップ１００３の動的命令セットを受信するステップは、エアリンク、無線周波数の（ＲＦ）ハードライン、インストール可能メモリモジュール、赤外線および論理ポートインターフェイスを含む群より選択されたインターフェイスを通じて動的命令セットを受信することを含む。本発明のいくつかの局面において、ステップ１００３において動的命令セットを受信するステップは、ファイルシステムセクション不揮発性メモリにおけるパッチマネージャランタイム命令（ＰＭＲＴＩ）を受信することを含む。
【００６３】
ステップ１００４は、ランタイムエンジンを起動する。通常、ランタイムエンジンを起動するステップは、第１のコードセクションからランタイムライブラリを呼出すことを含む。ランタイムエンジンは、揮発性または不揮発性メモリから起動され得る。ステップ１００６は、動的命令セットを処理する。動的命令を処理するステップは、数学的および論理的演算に応答して、命令を処理することを含む。本発明のいくつかの局面において、ステップ１００７（図示せず）は、動的命令セットの処理に続いて、動的命令セットを削除する。ステップ１００８は、システムデータおよびシステムソフトウェア上で演算する。ステップ１０１０は、システムデータおよびシステムソフトウェア上での演算に応答して、システムソフトウェアの実行を制御する。
【００６４】
通常、ステップ１００３におけるパッチマネージャランタイム命令を受信するステップは、条件付きオペレーションコードおよびデータアイテムを受信することを含む。その後、ステップ１００６における動的命令セットを処理するステップは、サブステップを包含する。ステップ１００６ａ１は、パッチマネージャランタイム命令オペレーションコードを読み出すために、ランタイムエンジンを用いる。ステップ１００６ｂは、オペレーションコードに応答して、演算のシーケンスを実行する。
【００６５】
いくつかの局面において、ステップ１００１ｂにおいてシンボルライブラリをコードセクションに配置するステップは、コードセクションの開始点でシンボルライブラリを開始すること、およびシンボルをそれぞれのコードセクションスタートアドレスからオフセットされるように配置することを包含する。その後、この方法は、さらなるステップを包含する。ステップ１００１ｃは、対応する開始アドレスにコードセクションの開始を格納する。ステップ１００１ｄは、コードセクション識別子を対応する開始アドレスと相互参照するコードセクションアドレステーブル（ＣＳＡＴ）を維持する。ステップ１００１ｅは、シンボル識別子を対応するオフセットアドレスおよび対応するコードセクション識別子と相互参照するシンボルオフセットアドレステーブル（ＳＯＡＴ）を維持する。
【００６６】
本発明のいくつかの局面において、ステップ１００３においてパッチマネージャランタイム命令を受信するステップは、シンボル識別子を受信することを包含する。その後、この方法は、さらなるステップを包含する。ステップ１００６ａ２は、コードセクションアドレステーブルおよびシンボルオフセットアドレステーブルを用いることによって受信されたシンボル識別子に対応するシンボルを配置する。ステップ１００６ｂにおけるオペレーションコードに応答して、演算のシーケンスを実行するステップは、サブステップを包含する。ステップ１００６ｂ１は、配置されたシンボルがデータアイテムである場合、データを抽出する。ステップ１００６ｂ２は、配置されたシンボルが命令であると、このシンボルを実行する。
【００６７】
本発明のいくつかの局面において、ステップ１００６ｂ１において動的命令を処理するステップは、さらなるサブステップを包含する。ステップ１００６ｂ１ａ、パッチマネージャランタイム命令の長さをキャプチャするために、ランタイムエンジンを用いる。ステップ１００６ｂ１ｂは、オペレーションコードに応答して、パッチマネージャランタイム命令からデータアイテムを抽出する。ステップ１００６ｂ１ｃは、オペレーションコードを応答して、演算のシーケンスを実行する際に抽出されたデータを用いる。
【００６８】
図１１は、例示的動的命令セット演算を示すフローチャートである。図１１におけるステップのいくつかは、図１０におけるものと同じであり、簡潔にするために、ここでは繰返されない。ステップ１１０６において動的命令セットを処理するステップは、サブステップを包含する。ステップ１１０６ａは、ファイルシステムセクションにおける第２のコードセクションに格納されたシステムデータにアクセスする。ステップ１１０６ｂは、システムデータを解析する。ステップ１１０６ｃは、更新されるシステムデータを生成する。その後、ステップ１１０８のシステムデータおよびシステムソフトウェア上で演算するステップは、第２のセクションにおけるシステムデータを更新されるシステムデータと置換するステップを包含し、ステップ１０１０のシステムソフトウェアの実行を制御するステップは、システムソフトウェアの実行において更新されたシステムデータを用いるステップを包含する。
【００６９】
図１２は、別の例示的動的命令セット演算を示すフローチャートである。図１２におけるステップのいくつかは、図１０におけるものと同じであり、簡潔にするために、ここでは繰返されない。ステップ１２０１ｃは、コード格納セクション不揮発性メモリに複数のコードセクションを格納する。ステップ１２０６の動的命令セットを処理するステップは、サブステップを包含する。ステップ１２０６ａは、コード格納セクション（ＣＳＳ）における第３のコードセクションに格納されたシステムデータにアクセスする。ステップ１２０６ｂは、システムデータを解析する。ステップ１２０６ｃは、更新されるシステムデータを生成する。ステップ１２０８のシステムデータおよびシステムソフトウェア上で演算するステップは、第３のコードセクションにおけるシステムデータを更新されるシステムデータと置換するステップを包含する。ステップ１２１０のシステムソフトウェアの実行を制御するステップは、システムソフトウェアの実行において更新されたシステムデータを用いるステップを包含する。
【００７０】
図１３は、第３の例示的動的命令セット演算を示すフローチャートである。図１３におけるステップのいくつかは、図１０におけるものと同じであり、簡潔にするために、ここでは繰返されない。ステップ１３０１ｃは、コード格納セクション不揮発性メモリに複数のコードセクションを格納する。ステップ１３０１ｄは、リード−ライトデータを揮発性メモリにロードする。ステップ１３０６の動的命令セットを処理するステップは、サブステップを包含する。ステップ１３０６ａは、揮発性メモリにおけるリード−ライトデータにアクセスする。ステップ１３０６ｂは、リード−ライトデータを解析する。ステップ１３０６ｃは、更新されるリード−ライトデータを生成する。ステップ１３０８のシステムデータおよびシステムソフトウェア上で演算するステップは、揮発性メモリ内のリード−ライトデータを更新されるリード−ライトデータと置換するステップを包含する。システムソフトウェアの実行を制御するステップは、システムソフトウェアの実行において更新されたリード−ライトデータを用いるステップを包含する。
【００７１】
図１４は、第４の例示的動的命令セット演算を示すフローチャートである。図１４におけるステップのいくつかは、図１０におけるものと同じであり、簡潔にするために、ここでは繰返されない。動的命令セットを処理するステップは、サブステップを包含する。ステップ１４０６ａは、オペレーションコードに応答して、システムソフトウェアの実行をモニタリングする。ステップ１４０６ｂは、性能データを収集する。ステップ１４０６ｃは、性能データを格納する。ステップ１４０６ｄは、エアリンクインターフェイスを介して、格納されたデータを送信する。ステップ１４０８のシステムデータおよびシステムソフトウェア上で演算するステップは、システムソフトウェアの評価において性能データを用いるステップを包含する。
【００７２】
図１５は、第５の例示的動的命令セット演算を示すフローチャートである。図１５におけるステップのいくつかは、図１０におけるものと同じであり、簡潔にするために、ここでは繰返されない。ステップ１５０１ｃは、コード格納セクション不揮発性メモリに複数のコードセクションを格納する。ステップ１５０３のパッチマネージャランタイム命令を受信するステップは、新しいコードセクションを受信するステップを包含する。ステップ１５０８のシステムデータおよびシステムソフトウェア上で演算するステップは、コード格納セクションに新しいコードセクションを追加するステップを包含し、ステップ１５１０のシステムソフトウェアの実行を制御するステップは、システムソフトウェアの実行において新しいコードセクションを用いるステップを包含する。
【００７３】
あるいは、ステップ１５０３の新しいコードセクションを受信するステップは、更新されるコードセクションを受信するステップを包含する。その後、ステップ１５０８のシステムデータおよびシステムソフトウェア上で演算するステップは、コード格納セクションにおける第４のコードセクションを更新されるコードセクションと置換するステップを包含する。
【００７４】
無線通信デバイスにおける動的命令セットを実行するシステムおよび方法が提供され、これにより、ソフトウェアを更新する、およびソフトウェアの性能をモニタリングするプロセスを支援する。システムは、コードセクションにシンボルライブラリが配置されるために、容易に更新可能であり、テーブルを用いてメモリ内のコードセクションの開始アドレスおよびシンボルライブラリにおけるシンボルのオフセットアドレスにアクセスする。動的命令セットの使用は、カスタム変更が、そのデバイスの特定の特性に基づいて、各無線デバイスに実行されることを可能にする。動的命令セットの可能な使用を示すいくつかの一般的な例が与えられた。しかしながら、本発明は、これらの例だけに限定されない。本発明の他の変形および実施形態が当業者に思い浮かぶ。
【００７５】
図１６は、例示的無線通信ネットワークを示すハイレベルネットワーク図である。図示された無線通信ネットワークは、ネットワーク４０を介してＰＭＲＴＩサーバ３０と通信可能に接続された複数の無線通信デバイス１０、１２および１４を備える。
【００７６】
無線通信デバイス１０、１２および１４は、無線通信ネットワーク内で通信する能力を有する任意の種類の電子デバイスであり得る。例えば、無線通信デバイス１０は、セル電話、パーソナルデジタルアシスタント（「ＰＤＡ」）、ラップトップコンピュータ、腕時計、または、無線通信のために構成された任意の他のデバイスであり得る。無線通信デバイスは、本明細書中で、「ハンドセット」または「モバイル電話」または「モバイルデバイス」、または「無線デバイス」とも呼ばれ得る。
【００７７】
ネットワーク４０は、好適には、無線通信事業者によって動作されるプライベートネットワークである。ネットワーク４０は、有利にも、ハンドセット間に無線通信のインフラストラクチャを提供し、これは、基地局（図示せず）および基地局コントローラ（これも図示せず）を含む。ネットワーク４０は、無線ネットワークのセル間を移動するハンドセットのための基地局間でのハンドオフ（ｈａｎｄｏｆｆ）についてのネゴシエーションを含む無線通信を管理するように構成される。さらに、ネットワーク４０は、好適には、種々のアプリケーションサーバと、ＰＭＲＴＩサーバ３０等の他のコンピュータベースサーバとの間に通信リンクを提供する。
【００７８】
ネットワーク４０は、さらに、サービス総合デジタル通信網（「ＩＳＤＮ」）、加入電話網（「ＰＬＭＮ」）、公衆陸上移動網（Ｐｕｂｌｉｃ  Ｌａｎｄ  Ｍｏｂｉｌｅ  Ｎｅｔｗｏｒｋ（「ＰＳＴＮ」））、パケット交換公衆データ網（Ｐａｃｋｅｔ  Ｓｗｉｔｃｈｅｄ  Ｐｕｂｌｉｃ  Ｄａｔａ  Ｎｅｔｗｏｒｋ（「ＰＳＰＤＮ」））、およびインターネット（いくつかのみを挙げる）等の他のネットワーク（図示せず）に接続するためのパイプ役として利用され得る。
【００７９】
ＰＭＲＴＩサーバ３０は、モバイルデバイスに動的命令セットを提供し、モバイルデバイスから受信された動的命令セットを実行するように論理的に配置された１つのコンピュータとして、または、複数のサーバとして実現され得る。ＰＭＲＴＩサーバ３０は、単一のプロセッサまたは複数のプロセッサを有する。ＰＭＲＴＩサーバ３０として実現され得る汎用コンピュータの記載は、後に、図９を参照して提供される。ＰＭＲＴＩサーバ３０は、通信サーバとも呼ばれ得る。
【００８０】
図１７Ａは、例示的無線通信デバイス１０を示す。そのように機能することを可能にする無線通信デバイス１０の一般的特徴は当業者に周知であり、従って、本明細書中に示されず、かつ説明されない。
【００８１】
無線通信デバイス１０は、ランタイムエンジン５０、リモートオペレーションコード（「オペコード」）ライブラリ６０、サーバオペコードライブラリ７０およびリモートランタイム命令コードセクション８０を備える。ランタイムエンジン５０は、好適には、動的命令セットを処理するように構成される。動的命令セットの１例は、ＰＭＲＴＩ命令セットである。動的命令セットの別の例は、ＲＰＭＲＴＩ命令セットである。これらの２つの命令セット間の相違は、ＰＭＲＴＩセットが、無線デバイスによって実行され得る機能を備える一方で、ＲＰＭＲＴＩ命令セットは、ネットワーク４０上に常駐するＰＭＲＴＩサーバ３０によって実行され得る機能を備えることである。
【００８２】
動的命令セットの処理は、ＰＭＲＴＩサーバ３０から受信されたＲＰＭＲＴＩセットの実行、およびＰＭＲＴＩサーバ３０への伝達のＰＭＲＴＩセットと対応するデータのコンパイルを含む。好適には、ランタイムエンジン５０は、必要に応じて無線通信デバイス１０によって起動され得、これにより、デバイス１０上で必要な場合のみ演算し、かつ最小量のシステムリソース（例えば、メモリ、ＣＰＵサイクル等）を消費する。
【００８３】
リモートオペコードライブラリ６０は、好適には、各ＰＭＲＴＩ機能または実行可能なコードセグメントを表すオペコードの母集団を含む。有利にも、リモートオペコードライブラリ６０は、実際に実行可能なマシンコード機能またはコードセグメントのプレースホルダとして利用されるオペレーションコードを含む。従って、リモートオペコードライブラリ６０は、無線通信デバイス１０によって実行され得る各およびすべてのＰＭＲＴＩ機能に対応するすべての利用可能なオペレーションコードのリストを含む。
【００８４】
同様に、サーバオペコードライブラリ７０は、好適には、各ＲＰＭＲＴＩ機能または実行可能コードセグメントを表すオペレーションコードの母集団を含む。有利にも、サーバオペコードライブラリ７０は、無線通信デバイス１０上に常駐しない現在実行可能なマシンコード機能またはコードセグメントのオペレーションコードのみを含む。従って、サーバオペコードライブラリ７０は、無線通信デバイス１０に代わってＰＭＲＴＩサーバ３０によって実行され得る各利用可能なＲＰＭＲＴＩ機能のすべてのオペレーションコードのリストを含む。
【００８５】
好適な実施形態において、利用可能なＲＰＭＲＴＩ機能の数は、利用可能なＰＭＲＴＩ機能の数を十分に超過し得る。なぜなら、ＰＭＲＴＩサーバ３０は、セル電話およびＰＤＡ等のモバイルデバイス上に通常見出される最小リソースに苦慮しないからである。
【００８６】
さらに、無線通信デバイス１０は、リモートランタイム命令コードセクション８０を含む。コードセクション８０は、実際のマシンコードまたは実行可能な命令がデバイス１０上の永久メモリに常駐する場所である。これらの実行可能な命令またはコードセグメントは、好適には、リモートオペコードライブラリ６０に含まれるオプコードと１対１の関係で対応する。図１７Ｂは、例示的コードセクション８０を示すブロック図である。示されるように、命令０１〜命令ｎの任意の数のＰＭＲＴＩ機能がコードセクション８０に含まれ得る。最適には、コードセクション８０において多数の機能が利用可能であり、さらに、デバイス１０の非常にわずかなリソース（例えば、永久メモリ）しか消費しない。
【００８７】
有利にも、サーバオペコードライブラリ７０、リモートオペコードライブラリ６０、および対応するコードセクション８０は、デバイス１０の製造中、および、現場で展開される前（すなわち、顧客に購買される前）に無線通信デバイス１０上の永久メモリにインストールされ得る。ライブラリに含まれるオペコードのセットまたはコードセクション８０における実行可能な命令のセットの将来の更新が、図２２に関して後述されるプロセスを実現するＰＭＲＴＩサーバ３０によって提供され得る。
【００８８】
最後に、示された実施形態において、無線通信デバイスは、空中を介した通信リンク９０を含む。通信リンク９０の実現は、当業者に周知であり、無線通信デバイス１０に、無線または他の空中接続を介して無線通信ネットワーク１００内で通信する能力を提供する。有利にも、空中通信リンク９０は、ＰＭＲＴＩサーバ３０がリモートオペコードライブラリ６０、サーバオペコードライブラリ７０およびリモートランタイム命令コードセクション８０を更新する手段を提供し得る。
【００８９】
図１８Ａは、例示的ＰＭＲＴＩサーバ３０を示すブロック図である。ＰＭＲＴＩサーバを実現し得る汎用コンピュータの機能が図２４に関して後述される。
【００９０】
示された実施形態において、ＰＭＲＴＩサーバ３０は、制御モジュール９５、リモートオペコードライブラリ６０、サーバオペコードライブラリ７０、およびサーバランタイム命令コードセクション８２を含む。リモートオペコードライブラリ６０およびサーバオペコードライブラリ７０は、好適には、無線通信デバイス１０に存在するライブラリと同じオペレーションコードのリストを含む。制御モジュール９５は、好適には、動的命令セットを処理し、かつ、ＰＭＲＴＩサーバ３０と、無線通信ネットワークを介して利用可能な複数の無線通信デバイスとの間のＰＭＲＴＩ通信のネットワークを管理するように構成される。
【００９１】
例えば、制御モジュール９５は、種々のダイナミックＰＭＲＴＩセットをコンパイルし、かつ、これらの命令セットを、種々の別個の無線通信デバイスに送信し得る。同様に、制御モジュール９５は、さらに、複数のダイナミックＲＰＭＲＴＩセットを受信し、かつ、無線通信デバイスを送信する代わりにこれらの命令セットを実行し得る。
【００９２】
リモートオペコードライブラリ６０は、好適には、各利用可能なＰＭＲＴＩ機能または実行可能なコードセグメントに対応するオペレーションコードの母集団を含む。有利にも、リモートオペコードライブラリ６０は、リモートランタイム命令コードセクション８０における（無線通信デバイス上の）実際の実現可能なマシンコード機能またはコードセグメントのプレースホルダとして利用されるオペレーションコードのリストを含む。従って、リモートオペコードライブラリ６０は、無線通信デバイスによって実行され得るすべての利用可能なＰＭＲＴＩ機能のすべての利用可能なオペコードのリストを含む。
【００９３】
同様に、サーバオペコードライブラリ７０は、好適には、各ＲＰＭＲＴＩ機能または実行可能なコードセグメントに対応するオペレーションコードの母集団を含む。有利にも、サーバオペコードライブラリ７０は、実際に実行可能なマシンコード機能のオペレーションコード、またはＰＭＲＴＩサーバ３０で実行し得るコードセグメントをのみを含む。好適な実施形態において、利用可能なＲＰＭＲＴＩ機能の数は、利用可能なＰＭＲＴＩ機能の数を十分に超過し得る。なぜなら、ＰＭＲＴＩサーバ３０は、セル電話およびＰＤＡ等のモバイルデバイス上に通常見出される最小のリソースに苦慮しないからである。
【００９４】
さらに、ＰＭＲＴＩサーバ３０は、サーバランタイム命令コードセクション８２を含む。コードセクション８２は、実際のマシンコードまたは実行可能な命令がサーバ３０上の永久メモリに常駐する場所である。これらの実行可能な命令またはコードセグメントは、好適には、サーバオペコードライブラリ７０に含まれるオペレーションコードと１対１の関係で対応し、これは、サーバ３０と無線通信デバイス１０の両方に常駐する。図１８Ｂは、例示的サーバランタイム命令コードセクションを示すブロック図である。
【００９５】
図１９は、ハンドセット間の例示的ピアツーピア通信を示すフローチャートである。図示される実施形態において、ピアツーピア通信は、ハンドセット１０とハンドセット１２との間で実行される。しかしながら、これに代わって、ピアツーピア通信は、単一のハンドセットと複数のハンドセットとの間で１対多の関係または多対１の関係で実行され得る。すべての場合に、ＰＭＲＴＩサーバ３０は、通信プロセスにおける中間機能、すなわち、ハンドセットの代わりにオペコードおよびデータペイロードの操作および処理を実行する。
【００９６】
ハンドセット１０とハンドセット１２との間の例示的通信は、ハンドセット１２上の電話帳に新しい電話帳エントリを追加する、ハンドセット１０からの通信であり得る。このような例示的通信は、ハンドセット１０がサーバオペコードセットおよび対応するデータペイロードをコンパイルすることで開始し得る。この例において、サーバオペコードセットは、ハンドセット１２にデータを送信するためのオペコードを含む。対応するデータペイロードは、ハンドセット１２の一意的識別子（例えば、電話番号）、およびハンドセット１２に送信されるべき電話帳エントリデータを含む。他の例において、送信されるデータは、映像、ｅメール、テキストドキュメント、ＧＰＳ、または他のタイプのロケーション、あるいは任意の他の所望のデータ等のデータファイルであり得る。
【００９７】
一旦ＰＭＲＴＩサーバ３０がサーバオペコードセットおよび対応するデータペイロードを受信すると、これは、データペイロードを抽出し、好適には、このデータペイロードを一時メモリに保存する。次に、オペコードが実行可能な命令に翻訳されて、命令が実行される。この場合、オペコードは、ハンドセット１２にデータを送信するという命令に対応し、このデータは、データペイロードに収容され、かつ新しい電話帳エントリを含む。ＰＭＲＴＩサーバ３０は、その後、リモートオペコードセット、およびハンドセット１２に送信されるべき対応するデータペイロードをコンパイルする。
【００９８】
この例において、リモートオペコードセットは、新しい電話帳エントリを追加するためのオペコードを含み、データペイロードは、追加されるべき電話帳エントリを含む。ハンドセット１２がリモートオペコードセットおよびデータペイロードを受信した場合、ハンドセットは、データペイロードを抽出し、好適には、このデータペイロードを一時メモリに保存する。次に、ハンドセット１２は、オペコードを実行可能な命令に翻訳して、命令が実行される。この例において、オペコードは、電話帳に新しいエントリを追加するという命令に対応し、新しいエントリは、一時メモリに格納されたデータペイロードに収容される。ハンドセット１２は、その後、命令を実行することによって、電話帳に新しいエントリを追加し、従って、ハンドセット１０とハンドセット１２との間でピアツーピアデータ通信を完了する。
【００９９】
図２０は、無線通信デバイス上で動的命令セットを実行する例示的プロセスを示すフローチャートである。最初に、ステップ５００において、無線デバイスは、リモートオペコードのセットを受信する。リモートオペコードのセットは、無線通信ネットワークとのリンク等の、空中を介する（ｏｖｅｒ−ｔｈｅ−ａｉｒ）通信リンクを介して受信され得る。好適には、オペコードは、空中を介して送信されるデータの量を最小化するために最適化される。さらに、データペイロードは、無線デバイスによって受信されるオペコードのセットと共に含まれ得る。
【０１００】
ステップ５〜２において、無線デバイスは、そのランタイムエンジンを起動して、リモートオペコードセットを処理する。ステップ５０４に示されるように、ランタイムエンジンは、リモートオペコードセットを構文解析し、その後、ステップ５０６においてデータペイロードを抽出する。データペイロードが存在しない場合、このステップは省略され得る。データペイロードが存在する場合、結果として生じたデータは、後で用いるために、揮発性メモリの利用可能な部分に格納され得る。次に、ランタイムエンジンは、ステップ５０８に示されるように、リモートオペコードセットにおけるオペコードに対応する、実行可能な命令を取得する。これらの命令は、無線デバイスのリモートランタイム命令コードセクションから取得され得る。
【０１０１】
一旦リモートオペコードセットにおけるオペコードに対応する実行可能な命令が取得されると、ステップ５１０に示されるように、ランタイムエンジンが命令を実行する。命令が実行される場合、演算される任意の必要なデータは、データペイロードが格納される揮発性メモリから取得され得る。あるいは、またはさらに、演算される任意の必要なデータが実行された命令の結果として取得され得る。
【０１０２】
例えば、データペイロードは、無線デバイスの更新されるソフトウェアモジュールを含み得る。さらに、リモートオペコードセットにおけるオペコードの１つは、永久メモリのセクションをデータペイロードの一部分と置換するという実行可能な命令に対応し得る。従って、ピア無線デバイスによって送信された新しいソフトウェアペイロードが無線デバイス上で動作する。
【０１０３】
ハンドセット間のデータ通信の他の例は、新しい電話帳エントリを更新または追加することと、データファイル（例えば、写真、ｅメール、ドキュメント等）を送信することと、顧客信号発信音をインストールすることと、ＧＰＳまたはロケーション情報、および空想スポーツリーグドラフトさえも提供またはリクエストすることとを含み得る。
【０１０４】
一旦命令セットがランタイムエンジンによって完全に実行されると、ステップ５１２に示されるように、ランタイムエンジンは終了し得る。有利にも、ランタイムエンジンは、起動かつ終了され得、これにより、ランタイムエンジンは、必要に応じてのみ走行し得る。これは、無線デバイス上のシステムリソースを節約し、例えば、揮発性メモリ空間およびＣＰＵサイクルを節約し得る。
【０１０５】
図２１は、無線通信デバイス上に動的命令セットをコンパイルするための例示的プロセスを示すフローチャートである。最初に、ステップ５２０に示されるように、ランタイムエンジンが起動される。一旦ランタイムエンジンが動作すると、ステップ５２２に示されるように、エンジンは、サーバのオペコードのセットをコンパイルし得る。サーバオペコードのセットは、無線デバイス上で走行するバックグラウンドプロセスから取得され得る。あるいは、サーバオペコードセットは、ユーザの指示下で、無線デバイス上で走行するプロセスから取得され得る。
【０１０６】
例えば、無線デバイスは、システムメンテナンスまたは他の所望の機能を実行するために、オペレーティングシステムによって周期的および自動的に走行されるルーティンセットを含み得る。これらのプロシージャは、それらを実行した結果として、ランタイムエンジンによってサーバオペコードセットが生成され得る。あるいは、ユーザは、ユーザによってリクエストされた場合にのみ実行されるルーティンの複数のセットを開始する。ルーティンの複数のセットは、さらに、サーバオペコードセットがランタイムエンジンによって生成されるようにし得る。両方の場合において、結果は、ステップ５２２に示されるように、ランタイムエンジンによって生成される。
【０１０７】
一旦サーバオペコードセットが生成されると、ランタイムエンジンは、ステップ５２４において、データペイロードがサーバオペコードセットに付随するか否かを決定する。サーバオペコードセットと共に付随する必要のデータがある場合、ステップ５２６において、ランタイムエンジンは、永久または揮発性メモリからそのデータをフェッチするか、または、必要とされるデータを戻すという命令を実行する。一旦データが取得されると、ステップ５２８に示されるように、ランタイムエンジンは、次に、データをサーバオペコードセットに挿入する。これを達成する１つの簡単な方法は、単一のデータパケットにおけるサーバオペコードセットにデータペイロードを添付することである。
【０１０８】
一旦データペイロードがサーバオペコードセットと組み合わされると、または、データペイロードが必要とされない場合、ステップ５３０に示されるように、ランタイムエンジンは、サーバオペコードセット（データペイロードをともなうか、またはともなわない）をサーバに送信する。サーバオペコードセットが送信された後、ランタイムエンジンは、ステップ５３２に示されるように、終了されて、無線デバイス上のリソースを解放し得る。
【０１０９】
図２２は、ＰＭＲＴＩサーバ上で動的命令セットを実行するための例示的プロセスを示すフローチャートである。最初に、ステップ５４０において、サーバは、サーバオペコードセットを受信する。オペコードセットは、好適には、一連の実行可能な命令を表す名前（ｍｏｎｉｋｅｒ）のリストであり、各オペコードは、別個の実行可能な命令または実行可能な命令の別個のセットを表す。一旦サーバオペコードのセットが受信されると、ステップ５４２において、サーバはサーバオペコードセットを構文解析し、ステップ５４４に示されるように、サーバオペコードセットと共に含まれる任意のデータペイロードを抽出する。データペイロードが抽出された場合、これは、後で用いるために、サーバ上の揮発性メモリに一時的に格納され得る。
【０１１０】
次に、サーバは、ステップ５４６に示されるように、対応する命令セットを取得する。好適には、対応する命令セットは、ＰＭＲＴＩサーバマシン上の永久メモリ内に常駐するサーバランタイム命令コードセクションに格納される。一旦命令セットが取得されると、ステップ５４８に見出されるように、サーバは、命令セットを実行する。命令セットが実行される場合、実行するルーティンは、サーバオプコードセットと共に来たデータペイロードを用い得る。好適には、データペイロードは、この目的で、サーバ上のメモリ内に格納される。あるいは、実行するルーティンは、命令セットがこの機能を実行するために必要なデータを生成する命令を含み得る。
【０１１１】
図２３は、電話帳エントリ（すなわち、データ通信）をピアハンドセットに送信する例示的プロセスを示すフローチャートである。最初に、ステップ５８０において、ハンドセットは、ハンドセットにおけるメモリから電話帳エントリを取得する。有利にも、電話帳エントリは、データペイロードのサイズを低減するようにハンドセットによって圧縮され得る。次に、ステップ５８２において、ハンドセットは、ピアハンドセットの一意的識別子を取得する。大抵の場合、ハンドセットの電話番号が一意的識別子として用いられ得る。この情報は、電話帳からか、または入力としてユーザから取得され得る。
【０１１２】
一旦電話帳エントリおよび一意的識別子を含むデータペイロードが取得されると、ステップ５８４に示されるように、ハンドセットは、サーバオペコードセットおよび対応するデータペイロードをコンパイルする。好適には、サーバがデータ通信をピアハンドセットに送信することを命令するサーバオペコードが存在する。この例において、データ通信は、電話帳エントリである。一旦サーバオペコードセットおよび対応するデータペイロードが組み合わされると、ステップ５８６において、ハンドセットは、これらを処理するために、および最終的にピアハンドセットに配布するためにＰＭＲＴＩサーバに送信する。
【０１１３】
図２２に戻って、ステップ５４０において、ＰＭＲＴＩサーバがサーバオペコードセットおよび対応するデータペイロードを受信した場合、ステップ５４２において、これはサーバオペコードセットを構文解析し、かつステップ５４４においてデータペイロードを抽出する。データペイロードは、有利にも、ＰＭＲＴＩサーバ上の一時ローカルメモリに格納され得る。サーバは、次に、ステップ５４６において、オペコードを実行可能な命令の対応するセットに翻訳し、ステップ５４８に示されるように、これらの命令を実行する。この例において、命令のセットは、サーバにリモートオペコードセットをコンパイルさせ、かつこれを、この場合、電話帳エントリである、対応するデータペイロードと組合させる。サーバは、その後、リモートオペコードセットおよびデータペイロードを一意的識別子によって識別されたピアハンドセットに送信する。
【０１１４】
図２０に戻って、ピアハンドセットが、ステップ５００において、リモートオペコードセットおよび対応するデータペイロードを受信した場合、これは、ステップ５０２においてランタイムエンジンを起動する。ランタイムエンジンは、その後、ステップ５０４においてリモートオペコードセットを構文解析し、ステップ５０６において電話帳エントリを含むデータペイロードを抽出する。好適には、データペイロードは、一時メモリロケーションに格納され得る。ランタイムエンジンは、その後、ステップ５０８において、リモートオペコードセットを対応する実行可能な命令セットに翻訳し、その後、ステップ５１０に示されるように、命令のセットを実行する。この例において、命令のセットは、ハンドセットにデータペイロードに含まれる電話帳エントリをハンドセットの固有の電話帳に追加させる。一旦命令セットが実行されると、ハンドセットは、ステップ５１２において、ランタイムエンジンを終了し得る。
【０１１５】
ハンドセットがサーバオペコードセットおよび対応するデータペイロードを構築し、かつこれらを処理、およびピアハンドセットに配信するためにＰＭＲＴＩサーバ３０に送信する能力のさらなるアプリケーションは、ロケーション更新（すなわち、ＧＤＳ情報）をピアハンドセットに提供することと、ピアハンドセットにボイスメモを送信することと、他の人々に動画、イメージ、テキストおよびオーディオを含むファイルを送信することとを含む。一般的な意味では、ピアハンドセットにファイルを送信することは、顧客信号発信音を友人または家族のメンバーに送信することと、無線デバイスによってキャプチャされた写真またはデジタルイメージを送信することと、ｅメール、ドキュメント、ソフトウェアアプリケーション、または、他の人々またはピアハンドセットと共有されるべき任意の他のデータを送信することを含む。
【０１１６】
図２４は、本明細書中に記載された種々の実施例と共に用いられ得る例示的コンピュータシステム５５０を示すブロック図である。例えば、コンピュータシステム５５０は、無線通信ネットワーク内に常駐するＰＭＲＴＩサーバとして用いられ得る。コンピュータシステム５５０は、さらに、無線通信ネットワークおよびその構成要素を含む種々の他の一般的または汎用のコンピュータシステムのいずれかとして用いられ得る。しかしながら、当業者に明らかなように、他のコンピュータシステムおよびアーキテクチャが用いられ得る。
【０１１７】
コンピュータシステム５５０は、好適には、プロセッサ５５２などの１つ以上のプロセッサを備える。入力および出力を管理する補助プロセッサ、浮動少数点数演算を実行する補助プロセッサ、信号処理アルゴリズムを高速で実行するために適切なアーキテクチャを有する専用マイクロプロセッサ（例えば、デジタル信号プロセッサ）、メイン処理システムに従属するスレーブプロセッサ（例えば、バックエンドプロセッサ）、デュアルまたはマルチプロセッサシステム用のさらなるマイクロプロセッサまたはコントローラ、あるいはコプロセッサ等のさらなるプロセッサが提供され得る。このような補助プロセッサは、個別のプロセッサであり得るか、またはプロセッサ５５２と統合され得る。
【０１１８】
プロセッサ５５２は、好適には、通信バス５５４に接続される。通信バス５５４は、ストレージと、コンピュータシステム５５０の他の周辺コンポーネントとの間の情報伝達を容易にするためのデータチャネルを含み得る。通信バス５５４は、データバス、アドレスバス、およびコントロールバス（図示せず）を含む、プロセッサ５５２との通信のために用いられる信号のセットを提供し得る。通信バス５５４は、例えば、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＥＩＳＡ（Ｅｘｔｅｎｄｅｄ  ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ローカルバス、または、ＩＥＥＥ４８８ＧＰＩＢ（Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ  Ｉｎｔｅｒｆａｃｅ  Ｂｕｓ）、ＩＥＥＥ６９６／Ｓ−１００等を含む米国電気電子学会（「ＩＥＥＥ」）によって公布される標準規格等に準じるバスアーキテクチャ等の任意の標準規格、または非標準規格のバスアーキテクチャを備え得る。
【０１１９】
コンピュータシステム５５０は、好適には、メインメモリ５５６を備え得、かつ、２次メモリ５５８も備え得る。メインメモリ５５６は、プロセッサ５５２上で実行するプログラムの命令およびデータの格納を提供する。メインメモリ５５６は、通常、ダイナミックアクセスメモリ（「ＤＲＡＭ」および／またはスタティックランダムアクセスメモリ（「ＳＲＡＭ」）等の半導体ベースのメモリである。他の半導体ベースのメモリタイプは、読み出し専用メモリ（「ＲＯＭ」）を含む、例えば、同期ダイナミックランダムアクセスメモリ（「ＳＤＲＡＭ」）、ラムバスダイナミックランダムアクセスメモリ（「ＲＤＲＡＭ」）、強誘電体ランダムアクセスメモリ（「ＦＲＡＭ」）等を含む。
【０１２０】
２次メモリ５５８は、選択的に、ハードディスクドライブ５６０および／または、例えば、フロッピー（Ｒ）ディスクドライブ、磁気テープドライブ、コンパクトディスク（「ＣＤ」）ドライブ、デジタルバーサタイルディスク（「ＤＶＤ」）ドライブ等の取り外し可能格納ドライブ５６２を含み得る。取り外し可能格納ドライブ５６２は、周知の態様で、取り外し可能格納媒体５６４から読み出しおよび／またはこれに書き込みする。取り外し可能格納媒体５６４は、例えば、フロッピー（Ｒ）ディスク、磁気テープ、ＣＤ、ＤＶＤ等であり得る。
【０１２１】
取り外し可能格納媒体５６４は、好適には、コンピュータによって実行可能なコード（すなわち、ソフトウェア）および／またはデータを格納したコンピュータによって読み出し可能な媒体である。取り外し可能な格納媒体５６４に格納されたコンピュータソフトウェアまたはデータは、電気通信信号５７８としてコンピュータシステム５５０に読み込まれる。
【０１２２】
これに代わる実施形態において、２次メモリ５５８は、コンピュータプログラム、または他のデータまたは命令が、コンピュータシステム５５０にロードされることを可能にする、他の同様の手段を含み得る。このような手段は、例えば、外部格納媒体５７２およびインターフェイス５７０を含み得る。外部格納媒体５７２の例は、外部ハードディスクドライブまたは外部光学ドライブ、または、外部磁気光学ドライブを含み得る。
【０１２３】
２次メモリ５５８の他の例は、プログラム可能読み出し専用メモリ）「ＰＲＯＭ」）、消去可能プログラム可能読み出し専用メモリ（「ＥＰＲＯＭ」、電気的消去可能読み出し専用メモリ（「ＥＥＰＲＯＭ」）、またはフラッシュメモリ（ＥＥＰＲＯＭと同様のブロック指向型メモリ）等の半導体ベースのメモリを含み得る。さらに、ソフトウェアおよびデータが取り外し可能格納ユニット５７２からコンピュータシステム５５０に伝送されることを可能にする、任意の他の取り外し可能格納ユニット５７２およびインターフェイス５７０が含まれる。
【０１２４】
コンピュータシステム５５０は、さらに、通信インターフェイス５７４を含み得る。通信インターフェイス５７４は、ソフトウェアおよびデータが通信システム５５０と外部デバイス（例えば、プリンタ）、ネットワーク、または情報ソース間で伝送されることを可能にする。例えば、コンピュータソフトウェアまたは実行可能なコードは、通信インターフェイス５７４を介してネットワークサーバからコンピュータシステム５５０に転送され得る。通信インターフェイス５７４の例は、ほんの少しを挙げても、モデム、ネットワークインターフェイスカード（「ＮＩＣ」）、通信ポート、ＰＣＭＣＩＡスロットおよびカード、赤外線インターフェイス、およびＩＥＥＥ１３９４ファイヤワイヤを含む。
【０１２５】
通信インターフェイス５７４は、好適には、Ｅｔｈｅｒｎｅｔ（Ｒ）  ＩＥＥＥ  ８０２標準規格、ファイバチャネル、デジタル加入者線（「ＤＳＬ」）、非同期デジタル加入者線（「ＡＤＳＬ」）、フレームリレー、非同期転送モード（「ＡＴＭ」）、サービス総合デジタル通信網（「ＩＳＤＮ」）、パーソナルコミュニケーションサービス（「ＰＣＳ」）、トランスミッションコントロールプロトコル／インターネットプロトコル（「ＴＣＰ／ＩＰ」）、シリアルラインインターネットプロトコル／ポイントツーポイントプロトコル（「ＳＬＩＰ／ＰＰＰ」）等の業界で普及しているプロトコル標準規格を実装するが、カスタマイズされたか、または非標準規格のインターフェイスプロトコルも実装され得る。
【０１２６】
通信インターフェイス５７４を介して伝送されたソフトウェアおよびデータは、通常、電気通信信号５７８の形態である。これらの信号５７８は、好適には、通信チャネル５７６を介して通信インターフェイス５７４に提供される。通信チャネル５７６は、信号５７８を搬送し、ほんの少しを挙げても、ワイヤまたはケーブル、光ファイバ、従来の電話回線、セルラー電話リンク、無線周波数（ＲＦ）リンク、または赤外線リンクを含む種々の通信手段を用いて実装され得る。
【０１２７】
コンピュータによって実行可能なコード（すなわち、コンピュータプログラムまたはソフトウェア）は、メインメモリ５５６および／または２次メモリ５５８に格納される。コンピュータプログラムは、さらに、通信インターフェイス５７４を介して受信され、かつメインメモリ５５６に格納され、および／または２次メモリ５５８に格納され得る。このようなコンピュータプログラムは、実行されると、上述のように、コンピュータシステム５５０が種々の機能を実行することを可能にする。
【０１２８】
この記載において、用語「コンピュータ読み出し可能媒体」は、コンピュータによって実行可能なコード（例えば、ソフトウェアおよびコンピュータプログラム）をコンピュータシステム５５０に提供するために用いられる任意のメディアに対して用いられる。これらの媒体の例は、メインメモリ５５６、２次メモリ５５８（ハードディスクドライブ５６０、取り外し可能格納媒体５６４、および外部格納媒体５７２を含む）、および通信インターフェイス５７４（ネットワーク情報サーバまたは他のネットワークデバイスを含む）と通信可能に接続された任意の周辺デバイスを含む。コンピュータ読み出し可能媒体は、実行可能コード、プログラム命令、およびソフトウェアをコンピュータシステム５５０に提供する手段である。
【０１２９】
ソフトウェアを用いて実装される実施形態において、ソフトウェアは、取り外し可能格納ドライブ５６２、インターフェイス５７０、または通信インターフェイス５７４を用いてコンピュータによって読み出し可能な媒体に格納され、かつコンピュータシステムに５５０にロードされる。このような実施形態において、ソフトウェアは、電気通信信号５７８の形態でコンピュータシステム５５０にロードされる。ソフトウェアは、プロセッサ５５２によって実行されると、好適には、プロセッサ５５２に上述の発明の特徴および機能を実行させる。
【０１３０】
種々の実施例はまた、例えば、応用専用向け集積回路（「ＡＳＩＣ」）、またはフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）等のコンポーネントを用いるハードウェアにおいて主に実装される。本明細書中に記載される機能を実行することができるハードウェア状態マシンのインプリメンテーションはまた、当業者には明らかである。ハードウェアおよびソフトウェアの両方の組み合わせを用いて、さらに、種々の実施例が実現され得る。
【０１３１】
本明細書中において詳細に示され、かつ記載された特定のシステムおよび方法は、本発明の上述の目的を完全に達成することができ、本明細書中に提供された記載および図面は、本発明の、現在好適な実施形態を表し、従って、本発明により広く考察された主題を表すことが理解されるべきである。本発明の範囲は、当業者に明らかになり得る他の実施形態を完全に含み、従って、本発明範囲が添付の請求項以外の何物によっても限定されないことがさらに理解され得る。
【図面の簡単な説明】
【０１３２】
【図１】図１は、無線デバイスソフトウェアメンテナンスシステム全体の模式的ブロック図である。
【図２】図２は、エアリンクインターフェイスを介して命令セットのインストレーションを強調表示する、ソフトウェアメンテナンスシステムの模式的ブロック図である。
【図３】図３は、無線通信デバイスにおける動的命令セットを実行する本発明のシステムを示す模式的ブロック図である。
【図４】図４は、無線デバイスメモリの模式的ブロック図である。
【図５】図５は、図３のコードセクションアドレステーブルを表すテーブルである。
【図６】図６は、図３のシンボルライブラリ１のシンボルを有する詳細図である。
【図７】図７は、図３のシンボルオフセットアドレステーブルを表すテーブルである。
【図８】図８は、ランタイムエンジンによってアクセスされるオペレーションコード（「オペコード」）の図である。
【図９】図９は、図８の第１のオペレーションコードのより詳細な図である。
【図１０】図１０は、無線通信デバイスにおいて動的命令を実行する本発明の方法を示すフローチャートである。
【図１１】図１１は、例示的動的命令セットのオペレーションを示すフローチャートである。
【図１２】図１２は、別の例示的動的命令セットのオペレーションを示すフローチャートである。
【図１３】図１３は、第３の例示的動的命令セットのオペレーションを示すフローチャートである。
【図１４】図１４は、第４の例示的動的命令セットのオペレーションを示すフローチャートである。
【図１５】図１５は、第５の例示的動的命令セットのオペレーションを示すフローチャートである。
【図１６】図１６は、例示的無線通信ネットワークを示すハイレベルネットワーク図である。
【図１７Ａ】図１７Ａは、例示的無線通信デバイスを示すブロック図である。
【図１７Ｂ】図１７Ｂは、例示的リモートランタイム命令コードセクションを示すブロック図である。
【図１８Ａ】図１８Ａは、ＰＭＲＴＩサーバを示すブロック図である。
【図１８Ｂ】図１８Ｂは、例示的サーバランタイム命令コードセクションを示すブロック図である。
【図１９】図１９は、ハンドセット間の例示的ピアツーピア通信を示すフローチャートである。
【図２０】図２０は、無線通信デバイス上で動的命令セットを実行する例示的プロセスを示すフローチャートである。
【図２１】図２１は、無線通信デバイス上で動的命令セットをコンパイルする例示的プロセスを示すフローチャートである。
【図２２】図２２は、ＰＭＲＴＩサーバ上で動的命令セットを実行する例示的プロセスを示すフローチャートである。
【図２３】図２３は、データ通信をピアハンドセットに送信する例示的プロセスを示すフローチャートである。
【図２４】図２４は、本明細書中に記載される種々の実施形態と共に用いられ得る例示的コンピュータシステムを示すブロック図である。
【図１】
2004537895.tif 000004
【図２】
2004537895.tif 000005
【図３】
2004537895.tif 000006
【図４】
2004537895.tif 000007
【図５】
2004537895.tif 000008
【図６】
2004537895.tif 000009
【図７】
2004537895.tif 000010
【図８】
2004537895.tif 000011
【図９】
2004537895.tif 000012
【図１０】
2004537895.tif 000013
【図１１】
2004537895.tif 000014
【図１２】
2004537895.tif 000015
【図１３】
2004537895.tif 000016
【図１４】
2004537895.tif 000017
【図１５】
2004537895.tif 000018
【図１６】
2004537895.tif 000019
【図１７Ａ】
2004537895.tif 000020
【図１７Ｂ】
2004537895.tif 000021
【図１８Ａ】
2004537895.tif 000022
【図１８Ｂ】
2004537895.tif 000023
【図１９】
2004537895.tif 000024
【図２０】
2004537895.tif 000025
【図２１】
2004537895.tif 000026
【図２２】
2004537895.tif 000027
【図２３】
2004537895.tif 000028
【図２４】
2004537895.tif 000029
【国際公開パンフレット】
2004537895.tif 000030
2004537895.tif 000031
2004537895.tif 000032
2004537895.tif 000033
2004537895.tif 000034
2004537895.tif 000035
2004537895.tif 000036
2004537895.tif 000037
2004537895.tif 000038
2004537895.tif 000039
2004537895.tif 000040
2004537895.tif 000041
2004537895.tif 000042
2004537895.tif 000043
2004537895.tif 000044
2004537895.tif 000045
2004537895.tif 000046
2004537895.tif 000047
2004537895.tif 000048
2004537895.tif 000049
2004537895.tif 000050
2004537895.tif 000051
2004537895.tif 000052
2004537895.tif 000053
2004537895.tif 000054
2004537895.tif 000055
2004537895.tif 000056
2004537895.tif 000057
2004537895.tif 000058
2004537895.tif 000059
2004537895.tif 000060
2004537895.tif 000061
2004537895.tif 000062
2004537895.tif 000063
2004537895.tif 000064
2004537895.tif 000065
2004537895.tif 000066
2004537895.tif 000067
2004537895.tif 000068
2004537895.tif 000069
2004537895.tif 000070
2004537895.tif 000071
2004537895.tif 000072
2004537895.tif 000073
2004537895.tif 000074
2004537895.tif 000075
2004537895.tif 000076
2004537895.tif 000077
2004537895.tif 000078
2004537895.tif 000079
2004537895.tif 000080
2004537895.tif 000081
2004537895.tif 000082
2004537895.tif 000083
2004537895.tif 000084
2004537895.tif 000085
2004537895.tif 000086
2004537895.tif 000087
2004537895.tif 000088
2004537895.tif 000089
2004537895.tif 000090
2004537895.tif 000091
2004537895.tif 000092
2004537895.tif 000093
2004537895.tif 000094
2004537895.tif 000095
【国際公開パンフレット（コレクトバージョン）】
2004537895.tif 000096
2004537895.tif 000097
【国際調査報告】
2004537895.tif 000098
2004537895.tif 000099
2004537895.tif 000100