(57)【特許請求の範囲】
【請求項１】
無線通信デバイス（１０４）のメモリに格納されているシステムソフトウェアを更新する方法であって、
該方法は、
該無線通信デバイス（１０４）の不揮発性メモリ（１０８）のコード格納セクション（１１２）の複数の現在のコードセクション（３０２、３０４、３０６）に該無線デバイスのシステムソフトウェアを格納することと、
無線通信ネットワークを介してソフトウェア更新（１０２）を受信することであって、該ソフトウェア更新は、パッチメーカ命令セット（２００、４５４）と新しいコードセクション（４５０）とを含む、ことと、
該不揮発性メモリ（１０８）のファイル格納システム（１１０）に該ソフトウェア更新（１０２）を格納することと、
該コード格納セクション（１１２）に格納されているパッチマネージャコードセクション（３０８）を用いて、該パッチメーカ命令セット（２００、４５４）を実行することと
を包含し、
該パッチメーカ命令セット（２００、４５４）は、該複数の現在のコードセクション（３０２、３０４、３０６）とともに該新しいコードセクション（４５０）を配置することにより、該無線通信デバイスの更新されたシステムソフトウェアを形成するための命令を含む、方法。
【請求項２】
更新するために現在のコードセクションを識別することをさらに包含し、
前記複数の現在のコードセクション（３０２、３０４、３０６）とともに前記新しいコードセクション（４５０）を配置することにより、更新されたシステムソフトウェアを形成することは、該識別された現在のコードセクションを該新しいコードセクション（４５０）と置き換えることを包含する、請求項１に記載の方法。
【請求項３】
前記格納することは、
前記システムソフトウェアを複数のシンボルライブラリ（３１０、３１２、３１４）に形成することであって、該複数のシンボルライブラリのそれぞれは、少なくとも１つのシンボルを含む、ことと、
該複数のシンボルライブラリを前記複数の現在のコードセクションに配置することと
をさらに包含する、請求項１に記載の方法。
【請求項４】
シンボルライブラリ内の前記少なくとも１つのシンボルのそれぞれは、関連した機能を有する、請求項３に記載の方法。
【請求項５】
前記形成することは、
前記複数のシンボルライブラリのリード−ライトデータを形成することと、
該リード−ライトデータを、共有されているリード−ライトコードセクション（３３０）に配置することと
をさらに包含する、請求項３に記載の方法。
【請求項６】
前記ソフトウェア更新は、更新されたリード−ライトコードセクションをさらに含む、請求項５に記載の方法。
【請求項７】
前記更新されたリード−ライトコードセクションに対応する前記リード−ライトコードセクションを識別することをさらに包含し、
前記実行することは、該リード−ライトコードセクションを該更新されたリード−ライトコードセクションと置き換えることをさらに包含する、請求項６に記載の方法。
【請求項８】
前記配置することは、前記複数のシンボルライブラリをコードセクションの開始点に配置することを包含し、
前記方法は、
該コードセクションの開始点を対応する開始アドレスに格納することと、
コードセクション識別子と、対応する開始アドレスとを相互参照するコードセクションアドレステーブル（３２６）を維持することと
をさらに包含する、請求項３に記載の方法。
【請求項９】
前記配置することは、
コードセクションの開始アドレスからオフセットされるように第２の複数のシンボルライブラリを配置することと、
該第２の複数のシンボルライブラリのシンボル識別子と、対応するオフセットアドレスおよび対応するコードセクション識別子とを相互参照するシンボルオフセットアドレステーブル（３２８）を維持することと
をさらに包含する、請求項８に記載の方法。
【請求項１０】
前記コードセクションアドレステーブル（３２６）を前記パッチマネージャコードセクション（３０８）に格納することと、
前記シンボルオフセットアドレステーブル（３２８）を該パッチマネージャセクション（３０８）に格納することと
をさらに包含する、請求項９に記載の方法。
【請求項１１】
前記ソフトウェア更新は、更新されたコードセクションアドレステーブルと更新されたシンボルオフセットアドレステーブルとをさらに含み、
前記複数の現在のコードセクションとともに前記新しいコードを配置することは、前記コードセクションアドレステーブル（３２６）を該更新されたコードセクションアドレステーブルと置き換え、前記シンボルオフセットアドレステーブル（３２８）を該更新されたシンボルオフセットアドレステーブルと置き換えることを包含する、請求項１０に記載の方法。
【請求項１２】
前記コードセクションアドレステーブル（３２６）と前記シンボルオフセットアドレステーブル（３２８）とにアクセスして、シンボル識別子とコードセクション識別子とを含むシンボルアクセサコード（３３２）からシンボルのアドレスを計算することをさらに包含する、請求項１０に記載の方法。
【請求項１３】
前記ソフトウェア更新は、更新されたシンボルアクセサコードをさらに含み、
前記方法は、
前記シンボルアクセサコード（３３２）を該更新されたシンボルアクセスコードと置き換えることをさらに包含する、請求項１２に記載の方法。
【請求項１４】
前記複数のシンボルライブラリを前記対応するコードセクションの開始点に格納することは、
複数の連続してアドレス指定されているメモリブロックを作成することと、
対応するコードセクションを用いて該複数の連続してアドレス指定されているメモリブロックのそれぞれを識別することと、
該対応するコードセクションを該識別されたメモリブロックに格納することと
をさらに包含する、請求項８に記載の方法。
【請求項１５】
前記作成することは、
対応するコードセクションを収容するように、前記メモリブロックをサイズ合わせすることをさらに包含する、請求項１４に記載の方法。
【請求項１６】
前記サイズ合わせすることは、
前記配置された複数のシンボルライブラリよりも大きいサイズを収容するように、前記コードセクションをサイズ合わせすることをさらに包含する、請求項１５に記載の方法。
【請求項１７】
無線通信デバイス（１０４）のためのソフトウェア更新システムであって、
該システムは、
不揮発性メモリ（１０８）のコード格納セクション（１１２）であって、複数の現在のコードセクション（３０２、３０４、３０６）に配置された実行可能な無線デバイスシステムソフトウェアを含み、該複数の現在のコードセクションのそれぞれは、１つ以上のシンボルライブラリを含む、コード格納セクション（１１２）と、
無線通信ネットワークを介してソフトウェア更新（１０２）を受信し、該ソフトウェア更新（１０２）を該不揮発性メモリのファイル格納システム（１１０）に格納するように構成されている無線通信インターフェース（１５０）であって、該ソフトウェア更新は、パッチメーカ命令セット（２００、４５４）と、新しいシンボルライブラリを有する新しいコードセクション（４５０）とを含む、無線通信インターフェース（１５０）と、
該コード格納セクション（１１２）に格納されているマッチマネージャコードセクション（３０８）であって、該ソフトウェア更新を処理し、該パッチメーカ命令セットを実行することにより、該新しいシンボルライブラリを対応する新しいコードセクションに配置するように構成されている、マッチマネージャコードセクション（３０８）と
を備えた、システム。
【請求項１８】
前記ソフトウェア更新を処理することは、現在のコードセクションを前記新しいコードセクションと置き換える、請求項１７に記載のシステム。
【請求項１９】
前記１つ以上のシンボルライブラリのそれぞれは、関連した機能を有するシンボルを含む、請求項１７に記載のシステム。
【請求項２０】
前記複数の現在のコードセクションのそれぞれは、対応するシンボルライブラリにアクセス可能なリード−ライトデータを有する共有されているリード−ライトコードセクションを含む、請求項１７に記載のシステム。
【請求項２１】
前記ソフトウェア更新は、更新されたリード−ライトコードセクションを含み、
前記ソフトウェア更新を処理することは、該共有されているリード−ライトコードセクションを該更新されたリード−ライトコードセクションと置き換えることを包含する、請求項１７に記載のシステム。
【請求項２２】
前記１つ以上のシンボルライブラリは、前記複数の現在コードセクションのそれぞれの開始点において始まるように配置されており、
前記コード格納セクションは、コードセクションアドレステーブルをさらに含み、該コードセクションアドレステーブルは、該複数の現在のコードセクションの開始アドレスに関連付けられた複数のコードセクション識別子を含む、請求項１７に記載のシステム。
【請求項２３】
前記１つ以上のシンボルライブラリは、それぞれのコードセクション開始アドレスからのオフセットされている各シンボルを含み、
前記パッチマネージャコードセクション（３０８）は、シンボルオフセットアドレステーブル（３２８）を含み、該シンボルオフセットアドレステーブル（３２８）は、対応するオフセットアドレスと対応するコードセクション識別子とに関連付けられたシンボル識別子を含む、請求項２２に記載のシステム。
【請求項２４】
前記ソフトウェア更新は、更新されたコードセクションテーブルアドレス（３２６）と更新されたシンボルオフセットアドレステーブル（３２８）とを含む、請求項２３に記載のシステム。
【請求項２５】
現在のコードセクションは、前記パッチマネージャコードセクション（３０８）を含む、請求項１７に記載のシステム。
【請求項２６】
前記ソフトウェア更新は、更新されたパッチマネージャコードセクションを含み、
前記ソフトウェア更新を処理することは、前記コード格納セクション内の前記パッチマネージャコードセクションを前記ファイルシステムセクション内の該更新されたパッチマネージコードセクションと置き換えることを包含する、請求項１７に記載のシステム。
【請求項２７】
前記パッチマネージャコードセクションは、リード−ライトデータと、コードセクションアドレステーブル（３２６）と、シンボルオフセットアドレステーブル（３２８）とを含み、
前記更新されたパッチマネージャコードセクションを受信することは、更新されたシンボルオフセットアドレステーブルと、更新されたコードセクションアドレステーブルと、更新されたリード−ライトデータとを受信することを包含する、請求項２６に記載のシステム。
【請求項２８】
前記パッチマネージャコードセクションは、シンボルアクセサコード（３３２）を含み、該シンボルアクセサコード（３３２）は、シンボル識別子と、対応するコードセクション識別子とを含む、請求項２６に記載のシステム。
【請求項２９】
前記シンボルアクセサコードは、前記コードセクションアドレステーブルと前記シンボルオフセットアドレステーブルとにアクセスすることによってシンボルのアドレスを計算する、請求項２８に記載のシステム。
【請求項３０】
前記ファイルシステムセクションは、更新されたシンボルアクセサコードを有する前記更新されたパッチマネージャコードセクションを受信し、
前記パッチライブラリは、前記コード格納セクション内の前記パッチマネージコードセクションを該更新されたパッチマネージャコードセクションと置き換え、
該更新されたパッチマネージャコードセクション内の該更新されたシンボルアクセサコードを該コード格納セクション内の前記複数の現在のコードセクションとともに配置することは、更新された実行可能なシステムソフトウェアを形成する、請求項２９に記載のシステム。
【請求項３１】
前記コード格納セクションは、対応する複数の現在のコードセクションを用いて識別される複数の連続してアドレス指定されているメモリブロックを含む、請求項１７に記載のシステム。
【請求項３２】
現在のコードセクションは、該現在のコードセクション内に配置される対応する１つ以上のシンボルライブラリを収容するようにサイズ合わせされ、対応するメモリブロックは、該現在のコードセクションを収容するようにサイズ合わせされる、請求項３１に記載のシステム。
【請求項３３】
現在のコードセクションは、該現在のコードセクションに配置される対応する１つ以上のシンボルライブラリよりも大きいようにサイズ合わせされる、請求項３２に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、無線通信デバイスに関し、より詳細には、エアリンクインターフェースを介して、現場における無線通信デバイスのシステムソフトウェアにおいてコードセクションを更新するシステムおよび方法に関する。
【背景技術】
【０００２】
（関連技術の説明）
現場に既に存在するフォンに対してソフトウェア更新をリリースすることは珍しくはない。これらの更新は、一度フォンが製造され公に流通されてからソフトウェアに見つけられた問題に関連し得る。ある更新には、サービスプロバイダかから供給されたフォンの新機能の用途またはサービスが含まれ得る。さらに他の更新は、地域的な問題、またはある通信事業者に関連する問題に関係し得る。例えば、ある地域では、通信事業者のネットワークレイアウトが、より不適切なチャンネル検索、より不適切なコールの終了、より不適切なオーディオまたはこれと同等の予期していない動作をハンドセットに示させる、ハンドセットにエアリンクインターフェース条件を課し得る。
【０００３】
このような更新に対する従来のアプローチは、最も近い通信事業者小売店／サービスアウトレットまたは製造業者に、本明細書中で無線デバイス、フォン、電話、またはハンドセットと呼ばれている無線通信デバイスを、その変更を処理するためにリコールすることであった。このような更新に含まれるコストは、広範囲に渡り、最終結果へ食い込む。さらに、顧客は、不便であり、いらいらさせられがちである。多くの場合、実際的なソリューションは、顧客に新しいフォンを提供することである。
【０００４】
顧客に不便さなく、無線通信デバイスソフトウェアが安価でアップグレードされ得れば、より有利である。
【０００５】
無線通信デバイスソフトウェアが、顧客が重要な期間のフォンの利用を失うことなく、アップグレードされ得れば、より有利である。
【０００６】
無線通信デバイスソフトウェアが、最小の専門家のサービス時間で、または、サービス設備へデバイスを送る必要なく更新され得れば、より有利である。
【０００７】
無線デバイスシステムソフトウェアが、コードセクションに区分され得、システムソフトウェアの特定のコードセクションのみがシステムソフトウェアを更新するために置き換えられる必要があれば、より有利である。これらのコードセクションが、エアリンクを介して無線デバイスに通信され得れば、より有利である。
【発明の開示】
【課題を解決するための手段】
【０００８】
（発明の要旨）
無線通信デバイスソフトウェア更新は、顧客にできる限り最良の製品およびユーザ経験を与える。本商業界の高価な部分とは、ソフトウェアを更新するためにハンドセットのリコールを含むことである。これらの更新は、フォンが製造された後に、ユーザに付加的なサービスを提供し、フォンの利用中に発見された問題を処理するために必要とし得る。本発明は、エアリンクインターフェースを介して、現場のハンドセットソフトウェアを実際に更新することを可能にする。
【０００９】
従って、無線通信デバイスのメモリに格納されるシステムソフトウェアを更新するための方法が提供された。本方法は、コードセクションアドレステーブル、シンボルオフセットアドレステーブル、シンボルアクセサコード、パッチライブラリ、および複数のシンボルライブラリのリード−ライトデータを含む第１の複数のシンボルライブラリにシステムソフトウェアを形成するステップと、パッチマネージャコードセクションに、コードセクションアドレステーブル、シンボルオフセットアドレステーブル、シンボルアクセサコード、パッチライブラリ、リード−ライトデータ、およびシンボルアクセサコードアドレスを配置するステップと、複数の現在のコードセクションに無線デバイスのためのシステムソフトウェアを格納するステップと、無線通信デバイスのエアインターフェースを介して新しいコードセクションを受信するステップと、メモリファイルシステムセクションに新しいコードセクションを格納するステップと、更新するために現在のコードセクションを識別するステップと、現在のコードセクションを新しいコードセクションに置き換えて、無線デバイスのための更新したシステムソフトウェアを形成するステップと、更新されたシステムソフトウェアを実行するステップとを包含する。
【００１０】
本発明のいくつかの局面において、新しいコードセクションを受信するステップは、新しいパッチマネージャコードセクションを受信するステップを包含し、現在のコードセクションを新しいコードセクションに置き換えて、無線デバイスの更新したシステムソフトウェアを形成するステップは、現在のパッチマネージャコードセクションを新しいパッチマネージャコードセクションに置き換えるステップを包含する。無線デバイスシステムソフトウェアを更新するための上述の方法およびシステムソフトウェアを更新するための無線デバイスシステムのさらなる詳細は、以下に詳細に提示される。
【発明を実施するための最良の形態】
【００１１】
以下の詳細な説明のいくつかの部分は、無線デバイスマイクロプロセッサまたはメモリ内のデータビットにおける動作の手順、ステップ、ロジックブロック、コード、処理、および、他のシンボリックな表現ついて示される。これらの記述および表現は、データ処理技術の当業者によって利用される手段であって、これらは、当該の別の技術者に仕事の実質を最も効果的に提供するためのものである。手順、マイクロプロセッサに実行されるステップ、アプリケーション、ロジックブロック、プロセス等は、本明細書中において、および一般的に、所望の結果を導くステップまたは命令の一貫したシーケンスであると考えられる。本ステップは、物理量（ｑｕａｎｔｉｔｙ）の物理的操作を要求するステップである。通常、必須ではないが、これらの量は、マイクロプロセッサに基づく無線デバイスにおいて、格納、伝達、結合、比較、およびそうでなければ操作され得る電気または磁気信号の形式を取り得る。これらの信号をビット、値、エレメント、シンボル、文字、用語、または数字等として示すことは、原則的に共通の用法で、時には便利であることが証明されている。メモリ等の物理的デバイスについて言及される場合、それらは、バスまたは他の電気接続を介して他の物理的デバイスに接続される。これらの物理的デバイスは、論理的プロセスまたはアプリケーションと相互作用し、従って、論理的演算に「接続される」と考えられ得る。例えば、メモリはさらなる論理演算に対するコードを格納またはアクセスし得る。
【００１２】
しかし、尚、全てのこれらおよび同様の用語は、適切な物理量に関連すべきであり、単にこれらの量に適用される便利なラベルにすぎない。他に特別に述べられない限り、以下の説明から明らかなように、本発明を通して、「処理」「接続」「翻訳」「表示」「プロンプト」「判定」「表示」または「認識」等の用語を利用した説明は、コンピュータシステムのレジスタおよびメモリ内の物理（電気的）量として示されるデータを無線デバイスメモリまたはレジスタまたは他のこのような情報格納デバイス、送信デバイスまたは表示デバイス内の物理量として同様に示される他のデータへ操作して変換する、無線デバイスマイクロプロセッサシステムのアクションおよびプロセスを示す。
【００１３】
図１は、無線デバイスソフトウェアメンテナンスシステム全体１００の概略的なブロック図である。本発明のシステムソフトウェアの組織化は、以下に詳細に示され、ソフトウェアメンテナンスシステムの一般的概要１００に従う。一般的なシステム１００は、システムソフトウェア更新および命令セット（プログラム）を送達するステップ、および送達されたソフトウェアを無線デバイスにインストールするステップのプロセスについて記述する。システムソフトウェア更新またはパッチメーカ命令セット（ＰＭＩＳ）は、ハンドセットの製造業者によって作成される。システムソフトウェアは、シンボルライブラリに組織化される。シンボルライブラリは、コードセクション内に配置される。シンボルライブラリが更新される場合、ソフトウェア更新１０２は、１つ以上のコードセクションとしてトランスポートされる。ソフトウェア更新は、現場の無線デバイス（無線通信デバイス１０４はその代表である）にブロードキャストされるか、または、公知の従来の空中でかつ、データまたはメッセージトランスポートプロトコルを利用して基地局１０６から別々の通信で送信される。本発明は、無線通信デバイスが、システムソフトウェアおよびＰＭＩＳ更新を受信する目的のために、任意の利用可能な空中を介した（ｏｖｅｒ−ｔｈｅ−ａｉｒ）トランスポートプロトコルを処理するように容易に修正され得るので、任意の特定のトランスポーテーションフォーマットに制限されない。
【００１４】
システムソフトウェアは、異なるサブシステムのコレクションとみなされ得る。コードオブジェクトは、これらの抽象的なサブシステムの１つにしっかりと接続され得、結果のコレクションは、シンボルライブラリとしてラベル付けされ得る。これは、コードベースの論理的ブレークダウンを提供し、ソフトウェアパッチおよび修正は、これらのシンボルライブラリに関連し得る。多くの場合、単一の更新は、１つまたは多くとも２つのシンボルライブラリと関連する。残りのコードベース、すなわち他のシンボルライブラリは、変化しないままである。
【００１５】
シンボルライブラリの概念は、コードおよび定数を扱うためのメカニズムを提供する。一方、リードライト（ＲＷ）データは、全てのライブラリのためのＲＡＭベースのデータを含む固有の個別ＲＷライブラリへ適合する。
【００１６】
無線デバイス１０４によって受信されると、トランスポートされたコードセクションは、処理されなければならない。この無線デバイスは、不揮発性メモリ１０８の固有のコードセクションを上書きする。不揮発性メモリ１０８は、ファイルシステムセクション（ＦＳＳ）１１０およびコード格納セクション１１２を含む。コードセクションは、通常、ＦＳＳ１１０の占有率を最小化するためにトランスポートの前に圧縮される。多くの場合、更新されたコードセクションは、ＲＷデータを伴う。システムソフトウェアは実行時にランダムアクセス揮発性リード−ライトメモリ１１４にロードされるが、ＲＷデータは、常に不揮発性メモリ１０８に格納される必要があり、そのため、ＲＷデータは、無線デバイスがリセットされる度に、ランダムアクセス揮発性リード−ライトメモリ１１４にロードされ得る。これは、初回のＲＷデータのランダムアクセス揮発性リード−ライトメモリへのロードを含む。以下により詳細に説明されるように、ＲＷデータは、通常、パッチマネージャコードセクションに配置される。
【００１７】
システム１００は、仮想テーブルの概念を含む。このようなテーブルを用いて、あるコードセクションのシンボルライブラリは、システムソフトウェアの他の部分（他のコードセクション）を壊す（置き換える）ことなく、パッチされる（置き換えられる）。仮想テーブルは、効率性のために、ランダムアクセス揮発性リード−ライトメモリ１１４から実行する。コードセクションアドレステーブルおよびシンボルオフセットアドレステーブルは、仮想テーブルである。
【００１８】
更新されたコードセクションは、無線デバイス１０４によって受信され、ＦＳＳ１１０に格納される。無線デバイスユーザインターフェース（ＵＩ）は、通常、新しいソフトウェアが利用可能であることをユーザに通知する。ＵＩプロンプトに応答して、ユーザは、通知を確認し、かつ、パッチまたは更新動作を許可する。もしくは、更新動作が自動的に実行される。無線デバイスは、更新プロセスが実行される時、標準的な通信タスクを実行不可能であり得る。パッチマネージャコードセクションは、さらにランダムアクセス揮発性リード−ライトメモリ１１４へロードされる不揮発性リード−ライトドライバシンボルライブラリを含み得る。不揮発性リード−ライトドライバシンボルライブラリは、コードセクションを更新されるべきコードセクションで上書きさせる。図に示されるように、コードセクションｎおよびパッチマネージャコードセクションは、更新されるコードセクションで上書きされる。パッチマネージャコードセクションは、リード−ライトデータ、コードセクションアドレステーブル、およびシンボルオフセットアドレステーブル、ならびに、シンボルアクセサコードおよびシンボルアクセサコードアドレス（以下に説明される）を含む。このデータの一部分は、更新されたコードセクションが導入される時に無効であり、更新されたパッチマネージャコードセクションは、更新されたコードセクションに対して有効なリード−ライトデータ、コードセクションアドレステーブル、およびシンボルオフセットアドレステーブルを含む。一旦、更新されたコードセクションが、コード格納セクション１１２内にロードされると、無線デバイスはリセットされる。リセット動作に続いて、無線デバイスは、更新されたシステムソフトウェアを実行し得る。尚、パッチマネージャコードセクションは、上述されていない他のシンボルライブラリを含み得る。これらの他のシンボルライブラリは、リード−ライト揮発性メモリ１１４へロードされる必要がない。
【００１９】
図２は、エアリンクインターフェースを介する命令セットのインストールをハイライトする、ソフトウェアメンテナンスシステム１００の概略的なブロック図である。更新されたコードセクションに加えて、メンテナンスシステム１００は、本明細書中でパッチメーカ命令セット（ＰＭＩＳ）と呼ばれる、命令セットまたはプログラムをダウンロードおよびインストールし得る。ＰＭＩＳコードセクションは、上述の更新されたコードセクションと同一の態様で無線デバイス１０４にトランスポートされる。ＰＭＩＳコードセクションは、最初にＦＳＳ１１０に格納される。ＰＭＩＳコードセクションは、通常、ハンドセットへのコンパイルされた命令として思い描くことが可能なバイナリフィアルである。ＰＭＩＳコードセクションは、基本数学的演算の性能および条件付きで実行される演算の性能を提供するのに十分に包括的である。例えば、ＲＦ調整ＰＭＩＳは、以下の動作を実行し得る。
【００２０】
【数１】
0004073399.tif 000002
ＰＭＩＳは、加算、減算、乗算、および除算等の基本数学的演算をサポートし得る。システムソフトウェアコードセクションと共に、ＰＭＩＳコードセクションは、ＵＩプロンプトに応答してロードされ得、無線デバイスは、ＰＭＩＳがコード格納セクション１１２へロードされた後、リセットされなくてはならない。その後、ＰＭＩＳセクションは、実行され得る。ＰＭＩＳコードセクションが任意の仮想テーブルまたはリード−ライトデータと関連する場合、更新されたパッチマネージャコードセクションは、コード格納セクション１１２にインストールされるようにＰＭＩＳを用いてトランスポートされる。もしくは、ＰＭＩＳは、保持されて、ＦＳＳ１１０から処理され得る。ハンドセット１０４は、ＰＭＩＳセクションにおける全ての命令を実行した後、ＰＭＩＳセクションは、ＦＳＳ１１０から削除され得る。
【００２１】
本発明のある局面では、システムソフトウェアを複数のシンボルライブラリとして構成することは、実行のために要求される揮発性メモリ１１４および不揮発性メモリ１０８のサイズに影響をし得る。これは、コードセクションが、コードセクション内に配置されるシンボルライブラリよりも典型的には大きいという事実による。これらのより大きいコードセクションが存在するのは、更新されたコードセクションを収容するためである。システムソフトウェアのライブラリのコレクションとしての組織化は、不揮発性メモリサイズ要件に影響する。同一のコードサイズに対して、利用される不揮発性メモリの量は、コードセクションが、内部に配置されるシンボルライブラリよりも大きくなるようにサイズ合わせし得るという事実により、より大きくなる。
【００２２】
ＰＭＩＳは、非常に強力なランタイム命令エンジンである。ハンドセットは、ＰＭＩＳ環境を介してハンドセットに送達される任意の命令を実行し得る。このメカニズムは、ＲＦ調整およびＰＲＩ更新をサポートするために利用され得る。より一般的には、ＰＭＩＳが利用され、典型的にはユーザの不満の結果等のソフトウェア問題が製造業者またはサービスプロバイダによって認識される場合、無線デバイスソフトウェアをリモートデバックし得る。ＰＭＩＳはまた、ソフトウェアの問題を診断するために必要なデータを記録できる。ＰＭＩＳは、データ解析、デバック、および修正用の新しくダウンロードされたシステムアプリケーションを起動し得る。ＰＭＩＳは、更新されたシステムソフトウェアコードセクションの代わりに、ある問題に対する解析およびできる限り短い時間での修正のためのＲＷデータをベースにした更新を提供し得る。ＰＭＩＳは、無線デバイスによる利用のためにメモリ圧縮アルゴリズムを提供し得る。
【００２３】
一旦、ソフトウェア更新が、無線デバイスに送達されると、ソフトウェアメンテナンスシステム１００は、メモリ圧縮をサポートする。メモリ圧縮は、デスクトップコンピュータのディスクデフラグアプリケーションと同様である。圧縮メカニズムは、メモリが最適に利用され、将来のコードセクション更新のために良好にバランスされることを保証し、ここで、更新されるコードセクションのサイズは、予測できない。システム１００は、パッチがあてられる（更新される）コード格納セクションを解析する。システム１００は、更新されたコードセクションを、置換されるコードセクションにより占有されるメモリスペースへ適応させることを試みる。更新されたコードセクションが置換されるコードセクションよりも大きい場合、システム１００は、メモリ１１２のコードセクションを圧縮する。もしくは、圧縮は、製造業者またはサービスプロバイダによって計算され得、圧縮命令は、無線デバイス１０４へトランポートされ得る。
【００２４】
圧縮は、アルゴリズムの複雑性および膨大な量のデータ移動により、時間消費プロセスになり得る。圧縮アルゴリズムは、任意の処理が開始する前に、実行可能性を予測する。ＵＩプロンプトは、圧縮が試みられる前に、ユーザからの許可を適用するために利用され得る。
【００２５】
本発明のある局面では、全システムソフトウェアコードセクションは、同時に更新され得る。しかしながら、完全なシステムソフトウェア更新は、より大きなＦＳＳ１１０を要求する。
【００２６】
図３は、無線通信デバイスにおいてシステムソフトウェアを更新するための本発明のシステムを示す概略的ブロック図である。システム３００は、複数の現在のコードセクションに配置された実行可能な無線デバイスシステムソフトウェアを含むメモリ１０８におけるコード格納セクション１１２を含む。コードセクション１（３０２）、コードセクション２（３０４）、およびコードセクションｎ（３０６）、ならびにパッチマネージャコードセクション３０８が示される。しかし、本発明は、コードセクションの任意の特定の数に制限されない。その上、システム３００はさらに、第２の複数のコードセクション内に配置される第１の複数のシンボルライブラリを含む。示されるのは、コードセクション１（３０２）に配置されるシンボルライブラリ１（３１０）、コードセクション２（３０４）に配置されるシンボルライブラリ２（３１２）および３（３１４）、ならびにコードセクションｎ（３０６）に配置されるシンボルライブラリｍ（３１６）である。各ライブラリは、関連する機能性を有するシンボルを含む。例えば、シンボルライブラリ１（３１０）は、無線デバイス液晶ディスプレイ（ＬＣＤ）の動作に関与し得る。そして、シンボルは、ディスプレイ機能に関連する。以下に詳細に示されるように、さらなるシンボルライブラリは、パッチマネージャコードセクション３０８に配置される。
【００２７】
図４は、無線デバイスメモリの概略的なブロック図である。示されるように、メモリは、図１のコード格納セクション１１２である。メモリは、フラッシュメモリのような書き込み可能な不揮発性メモリである。尚、コードセクションは、必ずしもＦＳＳ１１０と同一のメモリに格納される必要はないことが理解される。尚、本発明のシステムソフトウェア構造は、複数の協働するメモリに格納されるコードセクションにより有効にされることも理解される。コード格納セクション１１２は、連続してアドレスされる複数のメモリブロックを含み、ここで、各メモリブロックは、複数のコードセクションのうち、対応するコードセクションを格納する。従って、コードセクション１（３０２）は、第１のメモリブロック４００に格納され、コードセクション２（３０４）は、第２のメモリブロック４０２に格納され、コードセクションｎ（３０６）は、第ｎのメモリブロック４０４に格納され、そしてパッチマネージャコードセクション（３０８）は、第ｐのメモリブロック４０６に格納される。
【００２８】
図３および４を参照して、各コードセクションの開始点は、対応する開始アドレスによって指定されるメモリ内の位置に格納され、シンボルライブラリは、コードセクションの開始点で開始するように配置される。すなわち、各シンボルライブラリは、第１のアドレスで開始し、第１のアドレスから連続してある範囲のアドレスを通って走行する。例えば、コードセクション１（３０２）は、コード格納セクション１１２の第１の開始アドレス４０８（「Ｓ」でマークされる）で開始する。図３では、シンボルライブラリ１（３１０）は、コードセクション１（３０２）の開始点３１８で開始する。コードセクション２（３０４）が第２の開始アドレス４１０（図４）で開始するのと同様に、シンボルライブラリ２は、コードセクション２（図３）の開始点３２０で開始する。コードセクションｎ（３０６）は、コード格納セクション１１２の第３の開始アドレス４１２（図４）で開始し、シンボルライブラリｍ（３１６）は、コードセクションｎ３２２（図３）の開始点で開始する。パッチマネージャコードセクションは、コード格納セクション１１２の第ｐの開始アドレス４１４で開始し、そしてパッチマネージャコードセクション３０８の第１のシンボルライブラリは、パッチマネージャコードセクションの開始点３２４で開始する。従って、シンボルライブラリ１（３１０）は、最終的に、第１のメモリブロック４００に格納される。コードセクションが、コードセクション２（３０４）のような複数のシンボルライブラリを含む場合、複数のシンボルライブラリは、対応するメモリブロック（この場合、第２のメモリブロック４０２）に格納される。
【００２９】
図３では、システムソフトウェア構造３００は、パッチマネージャコードセクション３０８に配置されるシンボルライブラリに含まれるシンボルのあるタイプとして、コードセクションアドレステーブル３２６をさらに含む。コードセクションアドレステーブルは、コードセクション識別子をメモリの対応するコードセクション開始アドレスと相互参照する。
【００３０】
図５は、図３のコードセクションアドレステーブル３２６を示すテーブルである。コードセクションアドレステーブル３２６は、シンボルライブラリに対するコードセクション開始アドレスを見つけ出すために参照される。例えば、システム３００は、シンボルライブラリ１のシンボルが実行に必要とされる時、コードセクション１を検索する。コードセクション１の開始アドレスを見つけ出し、従って、シンボルをシンボルライブラリ１に位置付けるために、コードセクションアドレステーブル３２６は、参照される。コードセクションのシンボルライブラリの配置、およびテーブルによるコードセクションのトラッキングは、コードセクションが移動され、かつ拡張されることを可能にする。拡張または移動動作は、アップグレードされたコードセクション（アップグレードされたシンボルライブラリを含む）をインストールするために必要とされ得る。
【００３１】
尚、図３に戻って、全てのシンボルライブラリは、必ずしもコードセクションの開始点で開始するわけではない。示されるように、シンボルライブラリ３（３１４）は、コードセクション２（３０４）に配置されるが、コードセクション開始アドレス３２０で開始しない。従って、シンボルライブラリ３（３１４）のシンボルが実行のために必要とされる場合、システム３００は、コードセクション２（３０４）の開始アドレスに対してコードセクションアドレステーブル３２６を参照する。図７を参照して以下に説明されるように、シンボルオフセットアドレステーブルは、シンボルライブラリ３（３１４）のシンボルがコードセクション１内に位置付けられることを可能にする。
【００３２】
上述されたように、各シンボルライブラリは、機能的に関連したシンボルを含む。シンボルは、ルーティン本体、変数、またはデータ構造を位置付け、かつ利用するための、プログラマ定義の名前（例えば、”Ｘ”のようなアドレスまたは値）である。シンボルは、内部シンボルまたは外部シンボルであり得る。内部シンボルは、現在のコードセクションの範囲を超えて、可視ではない。より詳細には、内部シンボルは、他のコードセクションにおいて、他のシンボルライブラリによって検索されない。外部シンボルは、コードセクション間で利用および呼び出しされ、かつ、異なるコードセクションのライブラリによって検索される。シンボルオフセットアドレステーブルは、通常、全ての外部シンボルのリストを含む。
【００３３】
例えば、シンボルライブラリ１は、無線デバイスディスプレイ上に文字を生成する。このライブラリのシンボルは、電話番号、名前、時刻、または他のディスプレイ機能を生成する。各機能は、本明細書中でシンボルとして参照する、ルーティンによって生成される。例えば、シンボルライブラリ１（３１０）の１つのシンボルは、ディスプレイ上に電話番号を生成する。このシンボルは、「Ｘ」で表わされ、外部である。無線デバイスがフォンコールを受け、呼び出し側ＩＤサービスが起動される場合、システムは、「Ｘ」シンボルを実行することにより、ディスプレイ上に番号を生成しなければならない。従って、システムは、「Ｘ」シンボルを位置付けなければならない。
【００３４】
図６は、シンボルを有する、図３のシンボルライブラリ１（３１０）の詳細な図である。シンボルは、各コードセクション開始アドレスからオフセットされるように配置される。多くの状況では、シンボルライブラリの開始点は、コードセクションの開始点であるが、これは、コードセクションが１つより多いシンボルライブラリを含む場合に当てはまらない。シンボルライブラリ１は、コードセクション１（図３を参照されたい）の開始点で開始する。図６に示されるように、「Ｘ」シンボルは、シンボルライブラリの開始点からの（０３）のオフセットに位置付けられ、「Ｙ」シンボルは、（１５）のオフセットに位置付けられる。シンボルオフセットアドレスは、パッチマネージャコードセクションのシンボルオフセットアドレステーブル３２８に格納される（図３）。
【００３５】
図７は、図３のシンボルオフセットアドレステーブル３２８を示すテーブルである。シンボルオフセットアドレステーブル３２８は、対応するオフセットアドレス、およびメモリの対応するコードセクション識別子によってシンボル識別子を相互参照する。従って、システムは、シンボルライブラリ１において「Ｘ」シンボルを実行させるために検索し、シンボルオフセットアドレステーブル３２８は、それが配置されるコードセクションについて、シンボルの正確なアドレスを位置付けるために参照される。
【００３６】
図３に戻って、通常、第１の複数のシンボルライブラリの全ては、リード−ライトデータを含む。このリード−ライトデータは、これらのシンボルライブラリの実行時に参照されなれければばらない、または、設定されなければならない。例えば、シンボルライブラリは、条件付きステートメントに依存する動作を含み得る。リード−ライトデータセクションを参照して、条件付きステートメントを完了させるために必要なステータスを判定する。本発明は、全てのシンボルライブラリから共有されるリード−ライトセクションへリード−ライトデータをグループ化する。本発明のある局面では、リード−ライトデータ３３０は、パッチマネージャコードセクション３０８に配置される。もしくは（示されない）、リード−ライトデータは、異なるコードセクション、例えば、コードセクションｎ（３０６）に配置され得る。第１の複数のシンボルライブラリはまた、検索されるシンボルのアドレスを計算するために、コードセクションに配置されるシンボルアクセサコードを含む。シンボルアクセサコードは、別々のコードセクション、例えば、コードセクション２（３０４）のアドレスに配置され、かつ格納され得る。しかし、示されるように、シンボルアクセサコード３３２は、パッチマネージャコードセクション３０８のアドレスに配置され、格納される。システムソフトウェア構造３００は、さらに、シンボルアクセサコードアドレスを格納する第１の位置を含む。第１の位置は、コード格納セクション１１２、または無線デバイス（示されない）の別々のメモリセクションにおけるコードセクションであり得る。第１の位置はまた、リード−ライトデータと同一のコードセクションにも配置され得る。示されるように、第１の位置３３４は、リード−ライトデータ３３０、シンボルオフセットアドレステーブル３２８、コードセクションアドレステーブル３２６、シンボルアクセサコード３３２、およびパッチライブラリ（パッチシンボルライブラリ）３３６を有するパッチマネージャコードセクション３０８に格納される。
【００３７】
シンボルアクセサコードは、コードセクションアドレステーブルおよびシンボルオフセットアドレステーブルを利用して、メモリにおいて検索されるべきシンボルの正確なアドレスを検索する。すなわち、シンボルアクセサコードは、対応するシンボル識別子および対応するコードセクション識別子を用いて検索されたシンボルのアドレスを計算する。例えば、シンボルライブラリ１の「Ｘ」シンボルが検索される場合、シンボルアクセサは、「Ｘ」シンボルに対応して（図７を参照されたい）、シンボル識別子（シンボルＩＤ）Ｘ＿１を検索するために呼び出される。シンボルアクセサコードは、シンボルオフセットアドレスを参照して、Ｘ＿１シンボル識別子がコードセクション１の開始点から（０３）のオフセットを有することを判定する（図６を参照されたい）。シンボルアクセサコードは、コードセクション１に対応して、コードセクション識別子ＣＳ＿１を検索するために呼び出される。シンボルアクセサコードは、コードセクションテーブルを参照して、コードセクション識別子（コードセクションＩＤ）ＣＳ＿１と関連する開始アドレスを決定する。この方法では、シンボルアクセサコードは、シンボル識別子Ｘ＿１が、（００１００）のアドレスから（０３）の分だけオフセットされている（すなわち、アドレス（００１０３）に位置する）ことを決定する。
【００３８】
シンボル「Ｘ」は、実際のコードの一部であり、予め定義された名前である。言い換えると、シンボル「Ｘ」は、それに関連する絶対値データを有する。データは、アドレスまたは値であり得る。シンボル識別子は、シンボルを識別するために生成される。シンボルオフセットアドレステーブルおよびコードセクションアドレステーブルの両方が識別子と共に作用して、予約されたシンボルおよびコードセクション名との混乱を避ける。また、同一のシンボル名を多くのシンボルライブラリにわたって利用することが可能である。識別子の利用は、これらのシンボル間の混乱を避ける。図１に戻って、システムソフトウェア構造３００はさらに、リード−ライト揮発性メモリ１１４、典型的にはランダムアクセスメモリ（ＲＡＭ）を含む。リード−ライトデータ３３０、コードセクションアドレステーブル３２６、シンボルオフセットアドレステーブル３２８、シンボルアクセサコード３３２、およびシンボルアクセサコードアドレス３３４は、システムソフトウェアの実行中のアクセスのために、パッチメネージャセクションからリード−ライト揮発性メモリ１１４へロードされる。周知のように、ＲＡＭに格納されるコードのアクセス時間は、Ｆｌａｓｈのような不揮発性メモリへのアクセスよりもはるかに短い。
【００３９】
図３に戻って、尚、シンボルライブラリは、それらが配置されるコードセクションを必ずしも満杯にする必要はないが、メモリブロックが内部に格納される対応のコードセクションを正確に収容するようにサイズ合わせされる。代わりに述べられるのは、第２の複数のコードセクションの各々は、配置されるシンボルライブラリを収容するバイトサイズを有し、連続してアドレスされるメモリブロックの各々は、対応するコードセクションを収容するバイトサイズを有する。例えば、コードセクション１（３０２）は、１００バイトの長さを有するシンボルライブラリを収容する１００バイトのセクションであり得る。第１のメモリブロックは、コードセクション１のバイトサイズに一致する１００バイトである。しかし、コードセクション１にロードされるシンボルライブラリは、１００バイトよりも小さくなってもよい。図３に示されるように、コードセクション１（３０２）は、シンボルライブラリ１（３１０）が１００バイトよりも小さい場合、未使用セクション３４０を有する。従って、第２の複数のコードセクションの各々は、配置されるシンボルライブラリを収容するのに必要となるサイズよりも大きいサイズを有する。「過剰なサイズ」のコードセクションにより、より大きな更新されたシンボルライブラリが収容され得る。
【００４０】
図３に示されるように、システム３００は、パッチシンボルライブラリを含む。これは、本明細書中にパッチライブラリ３３６として言及され、現在のコードセクションを用いてコード格納セクションにおいて新しいコードセクションを配置する。コード格納セクションにおける現在のコードセクションによる新しいコードセクションの配置は、更新した実行可能なシステムソフトウェアを形成する。パッチマネージャは、現在のコードセクションにより新しいコードセクションを配置するだけでなく、さらに、更新したコードセクションでコードセクションを置き換える。
【００４１】
図４に戻ると、メモリ１０８のファイルシステムセクション１１０は、例えば、新しいコードセクション４５０および更新されたパッチマネージャコードセクション４５２といった新しいコードセクションを受信する。ファイルシステムセクションはまた、現在のコードセクションを用いて新しいコードセクションを配置するための命令を含む第１のパッチメーカ命令セット（ＰＭＩＳ）４５４を受信する。図１に示されるように、エアリンクインターフェース１５０は、新しいか、または更新されたコードセクション、ならびに、第１のＰＭＩＳを受信する。エアリンクインターフェース１５０はアンテナによって表されているが、エアリンクインターフェースはまた、ＲＦトランシーバ、ベースバンド回路部、および復調回路部（図示せず）を含むことは理解されるべきである。ファイルシステムセクション１１０は、エアリンクインターフェース１５０を介して受信される新しいコードセクションを格納する。リード−ライト揮発性メモリ１１４から実行するパッチライブラリ３３６は、ファイルシステムセクション１１０における、例えば、コードセクション４５０のような更新されたコードセクションによって、コード格納セクション１１２における、例えば、コードセクションｎ（３０６）のような第１のコードセクションを上書きする。概して、パッチマネージャコードセクション３０８は、更新されたパッチマネージャコードセクション４５２で置き換えられる。コードセクションが置き換えられると、パッチライブラリ３３６は、例えば、更新されたコードセクションを用いてコード格納セクション１１２におけるコードセクションｎ（３０６）、例えば、ファイルシステムセクション１１０におけるコードセクション４５０といった第１のコードセクションを上書きする。極端な場合には、コード格納セクション１１２における全てのコードセクションは、更新されたコードセクションで置き換えられる。すなわち、ＦＳＳ１１０は、第２の複数の更新されたコードセクション（図示せず）を受信して、パッチライブラリ３３６は、コード格納セクション１１２における第２の複数のコードセクションを第２の複数の更新されたコードセクションで置き換える。もちろん、ＦＳＳ１１０は、エアリンクインターフェースを介して受信された第２の複数の更新されたコードセクションを収容するほど十分大きくなる必要がある。
【００４２】
上述されるように、受信される更新されたコードセクションは、リード−ライトデータコードセクション、コードセクションのアドレステーブルコードセクション、シンボルライブラリ、シンボルオフセットアドレステーブルコードセクション、シンボルアクセサコードセクション、または新しいパッチライブラリを有するコードセクションを含み得る。これらの関連付けられたシンボルライブラリおよびシンボルを有する全てのこれらのコードセクションは、別個の、かつ、独立したコードセクションとして格納され得る。次に、これらのコードセクションの各々は、固有の更新されたコードセクションで置き換えられる。すなわち、更新されたリード−ライトコードセクションが受信され、コード格納セクションにおけるリード−ライトコードセクションを置き換える。更新されたコードセクションのアドレステーブルコードセクションが受信され、コード格納セクションにおけるコードセクションアドレステーブルコードセクションを置き換える。更新されたシンボルオフセットアドレステーブルコードセクションが受信され、コード格納セクションにおけるシンボルオフセットアドレステーブルコードセクションを置き換える。更新されたシンボルアクセサコードセクションが受信され、コード格納セクションにおけるシンボルアクセサコードセクションを置き換える。同様に、（パッチライブラリを有する）更新されたパッチマネージャコードセクションが受信され、コード格納セクションにおけるパッチマネージャコードセクションを置き換える。
【００４３】
しかし、上述のコードセクションは、概して、パッチマネージャコードセクションにおいて共に束ねられる。従って、パッチマネージャコードセクション３０８が、更新されたパッチマネージャコードセクション４５２で置き換えられる場合、コード格納セクションにおけるリード−ライトコードセクションは、ファイルシステムセクション１１０からの更新されたリード−ライトコードセクションで置き換えられる。同様に、コードセクションアドレステーブル、シンボルオフセットアドレステーブル、シンボルアクセサコードセクション、およびパッチライブラリは、更新されたパッチマネージャコードセクション４５２がインストールされた場合に置き換えられる。新しいリード−ライトデータ、新しいコードセクションアドレステーブル、新しいシンボルオフセットアドレステーブル、新しいシンボルアクセサコード、および更新されたパッチマネージャコードセクション４５２のような新しいパッチライブラリの配置は、コード格納セクションにおける現在のコードセクションと共に更新された実行可能なシステムソフトウェアを形成する。ファイルシステムセクション１１０が更新されたシンボルアクセサコードアドレスを受信する場合、パッチマネージャは、更新されたシンボルアクセサコードアドレスを用いてメモリの第１の位置におけるシンボルアクセサコードアドレスを置き換える。上述されるように、メモリ３３４の第１の位置は、概して、パッチマネージャコードセクションにある（図３を参照されたい）。
【００４４】
図８ａ〜８ｃは、無線通信デバイスメモリのシステムソフトウェアを更新するための本発明の方法を示すフローチャートである。本方法は、簡単のためにナンバリングされたステップのシーケンスとして示されるが、明確に記述されない限り、順序は、ナンバリングから推論されるべきではない。本方法は、ステップ８００で開始する。ステップ８０２は、システムソフトウェアを第１の複数のシンボルライブラリへ形成し、各シンボルライブラリは、少なくとも１つのシンボルを含む。さらに、第１の複数のシンボルライブラリにシステムソフトウェアを形成するステップは、関連した機能を有するシンボルを含む各シンボルライブラリを含む。ステップ８０４は、第１の複数のシンボルライブラリを第２の複数のコードセクションへ配置する。ステップ８０６は、複数の現在のコードセクションに無線デバイスのシステムソフトウェアを格納する。ステップ８０８は、無線通信デバイスエアインターフェースを介して新しいコードセクションを受信する。ステップ８１０は、現在のコードセクションを用いて新しいコードセクションを配置し、無線デバイスの更新されたシステムソフトウェアを形成する。ステップ８１２は、更新されたシステムソフトウェアを実行する。本発明のいくつかの局面において、ステップ８０９は、更新するための第１のコードセクションを識別する。次に、ステップ８１０において、現在のコードセクションを用いて新しいコードセクションを配置するステップは、新しいコードセクションを用いて第１のコードセクションを置き換えるステップを包含する。ステップ８１２において更新されたシステムソフトウェアを実行するステップは、更新されたシステムソフトウェアを実行する際に新しいコードセクションを用いるステップを包含する。ステップ８０６が、第２の複数の現在のコードセクションに無線デバイスのためのシステムソフトウェアを格納し、第２の複数の更新されたコードセクションがステップ８０８において受信される場合、次にステップ８１０は、第２の複数の更新されたコードセクションを用いて、第２の複数の現在のコードセクションを置き換えるステップを包含し、ステップ８１２は、更新されたシステムソフトウェアを実行する際に第２の複数の更新されたコードセクションを用いる。
【００４５】
いくつかの局面において、ステップ８０２において第１の複数のシンボルライブラリにシステムソフトウェアを形成するステップは、複数のシンボルライブラリのためのリード−ライトデータを形成するステップを包含する。次に、ステップ８０４において第２の複数のコードセクションに第１の複数のシンボルライブラリを配置するステップは、共有されたリード−ライトコードセクションにおいてリード−ライトデータを配置するステップを包含する。ステップ８０８において新しいコードセクションを受信するステップは、更新されたリード−ライトコードセクションを受信するステップを包含し、ステップ８０９において更新するための第１のコードセクションを識別するステップは、リード−ライトコードセクションを識別するステップを包含する。ステップ８１０において更新されたシステムソフトウェアを形成するために現在のコードセクションを用いて新しいコードセクションを配置するステップは、更新されたリード−ライトコードセクションでリード−ライトコードセクションを置き換えるステップを包含する。ステップ８１２において更新されたシステムソフトウェアを実行するステップは、更新されたシステムソフトウェアを実行する際に更新されたリード−ライトコードセクションを用いるステップを包含する。本発明のいくつかの局面において、ステップ８０４において第２の複数のコードセクションに第１の複数のシンボルライブラリを配置するステップは、コードセクションの開始点においてシンボルライブラリを開始するステップを包含する。ステップ８０６において複数の現在のコードセクションに無線デバイスのためのシステムソフトウェア格納するステップは、対応する開始アドレスにコードセクションの開始点を格納するステップを包含する。次に、さらなるステップであるステップ８０７ａは、対応する開始アドレスを用いてコードセクション識別子を相互参照するコードセクションアドレステーブルを保持する。
【００４６】
本発明のいくつかの局面において、ステップ８０４において第２の複数のコードセクションに第１の複数のシンボルライブラリを配置するステップは、その各コードセクションの開始点アドレスからのオフセットになるようにそれぞれのシンボルを配置するステップを包含する。次に、さらなるステップ、ステップ８０７ｂは、対応するオフセットアドレスおよび対応するコードセクション識別子を用いてシンボル識別子を相互参照するシンボルオフセットアドレステーブルを保持する。
【００４７】
ステップ８０４において第２の複数のコードセクションに第１の複数のシンボルライブラリを配置するステップは、サブステップを含む。ステップ８０４ａは、第１のテーブルコードセクションにおいてコードセクションアドレステーブルを配置し、ステップ８０４ｂは、第２のテーブルコードセクションにおいてシンボルオフセットアドレステーブルを配置する。ステップ８０８において更新されたコードセクションを受信するステップは、更新された第１のテーブルコードセクションおよび更新された第２のテーブルコードセクションを受信するステップを包含する。ステップ８１０において更新されたシステムソフトウェアを形成するために現在のコードセクションを用いて新しいコードセクションを配置するステップは、更新された第１のテーブルコードセクションで第１のテーブルコードセクションを置き換えて、更新された第２のテーブルコードセクションで第２のテーブルコードセクションを置き換えるステップとを包含する。ステップ８１２における更新されたシステムソフトウェアを実行するステップは、更新されたシステムソフトウェアを実行する際に更新された第１のテーブルコードセクションと更新された第２のコードセクションを用いるステップを包含する。
【００４８】
本発明のいくつかの局面において、ステップ８０２で第１の複数のシンボルライブラリにシステムソフトウェアを形成するステップは、パッチライブラリまたはパッチシンボルライブラリを形成するステップを包含する。ステップ８０４において第２の複数のコードセクションに第１の複数のシンボルライブラリを配置するステップは、パッチマネージャコードセクションにパッチライブラリを配置するステップを包含する。無線デバイスの更新されたシステムソフトウェアを形成するために現在のコードセクションを用いて新しいコードセクションを配置するステップは、サブステップを含む。ステップ８１０ａは、パッチマネージャコードセクションにアクセスする。ステップ８１０ｂは、新しいコードセクションを格納するためにパッチライブラリを呼び出す。ステップ８１０ｂにおいて新しいコードセクションを格納するためにパッチライブラリを呼び出すステップは、概して、新しいコードセクションを用いて第１のコードセクションを上書きするためにパッチライブラリを呼び出すステップを包含する。
【００４９】
いくつかの局面において、ステップ８０８において新しいコードセクションを受信するステップの後のステップ８０８ａは、メモリファイルシステムセクションに新しいコードセクションを格納する。ステップ８１０において更新されたシステムソフトウェアを形成するために現在のコードセクションを用いて新しいコードセクションを配置するステップは、メモリファイルシステムセクションに格納された新しいコードセクションを用いて第１のコードセクションを上書きするためにパッチライブラリを呼び出すステップを包含する。
【００５０】
本発明の他の局面において、ステップ８０８で新しいコードセクションを受信するステップは、更新されたパッチマネージャコードセクションを受信するステップを包含する。ステップ８１０において更新されたシステムソフトウェアを形成するために現在のコードセクションを用いて新しいコードセクションを配置するステップは、更新されたパッチマネージャコードセクションでパッチマネージャコードセクションを置き換えるステップを包含する。ステップ８１２において更新されたシステムソフトウェアを実行するステップは、更新されたシステムソフトウェアを実行する際に更新されたパッチマネージャコードを用いるステップを包含する。
【００５１】
一般に、ステップ８０４は、パッチマネージャコードセクションにおいてリード−ライトデータ、コードセクションアドレステーブル、およびシンボルオフセットアドレステーブルを配置するステップを包含する。次に、ステップ８０８において更新されたパッチマネージャコードセクションを受信するステップは、更新されたシンボルオフセットアドレステーブル、更新されたコードセクションアドレステーブル、および更新されたリード−ライトデータを受信するステップを包含する。本発明のいくつかの局面において、ステップ８０２において第１の複数のシンボルライブラリにシステムソフトウェアを形成するステップは、シンボルアクセサコードを形成するステップを包含し、ステップ８０４において第２の複数のコードセクションに第１の複数のシンボルライブラリを配置するステップは、パッチマネージャコードセクションにおいてシンボルアクセサコードを配置するステップを包含する。次に、さらなるステップ、ステップ８０６ａは、メモリ内の第１の位置にシンボルアクセサコードアドレスを格納する。ステップ８１２において更新されたシステムソフトウェアを実行するステップは、サブステップを含む。ステップ８１２ａは、リード−ライト揮発性メモリ（一般にＲＡＭ）に第３の複数のシンボルライブラリをロードする。パッチマネージャコードセクションにおけるシンボルライブラリが全て、リード−ライト揮発性メモリに必ずしもロードされるわけではないことが理解されるべきである。さらに、パッチマネージャコードセクションの後方の他のコードセクションにおけるシンボルライブラリは、リード−ライト揮発性メモリにロードされ得る。メモリ内の第１の位置の参照に応じて、ステップ８１２ｂは、シンボルアクセサコードにアクセスする。ステップ８１２ｃは、対応するシンボル識別子を用いて検索されるシンボルのアドレスを計算するためにシンボルアクセサを呼び出す。検索されたシンボルのアドレスを計算するためにシンボルアクセサコードを呼び出すステップは、検索されたシンボルのアドレスを計算するためにコードセクションアドレステーブルおよびシンボルオフセットアドレステーブルにアクセスするステップを包含する。ステップ８１２ｄは、ＲＡＭから第３の複数のシンボルライブラリにアクセスする。
【００５２】
概して、ステップ８０８において更新されたパッチマネージャコードセクションを受信するステップは、更新されたシンボルアクセサコードを受信するステップを包含する。ステップ８１０において更新されたパッチマネージャコードセクションでパッチマネージャコードセクションを置き換えるステップは、更新されたシンボルアクセサコードでシンボルアクセサコードを置き換えるステップを包含する。ステップ８１２において更新されたシステムソフトウェアを実行するステップは、更新されたシステムソフトウェアを実行する際に更新されたシンボルアクセサコードを用いるステップを包含する。
【００５３】
本発明のいくつかの局面は、さらなるステップを含む。ステップ８０８ｂは、更新されたシンボルアクセサコードアドレスを受信する。ステップ８０８ｃは、ファイルシステムセクションに更新されたシンボルアクセサコードアドレスを格納する。ステップ８１０ｃは、ファイルシステムセクションからの更新されたシンボルアクセサコードアドレスでメモリ内の第１の位置におけるシンボルアクセサコードアドレスを置き換える。次に、ステップ８１２において更新されたシステムソフトウェアを実行するステップは、更新されたシステムソフトウェアを実行する際に更新されたシンボルアクセサコードアドレスを用いるステップを包含する。
【００５４】
概して、ステップ８０４において第２の複数のコードセクションに第１の複数のシンボルライブラリを配置するステップは、パッチマネージャコードセクションにおいてシンボルアクセサコードアドレスを配置するステップを包含する。次に、ステップ８１０ｃにおいてファイルシステムセクションからの更新されたシンボルアクセサコードアドレスでメモリ内の第１の位置におけるシンボルアクセサコードアドレスを置き換えるステップは、更新されたパッチマネージャコードセクションにおける更新されたシンボルアクセサコードアドレスでパッチマネージャコードセクションにおけるシンボルアクセサコードアドレスを置き換えるステップを包含する。いくつかの局面において、ステップ８１２ａは、リード−ライトデータ、コードセクションアドレステーブル、シンボルオフセットアドレステーブル、パッチライブラリ、シンボルアクセサコード、およびシンボルアクセサコードアドレスをパッチマネージャコードセクションからリード−ライト揮発性メモリにロードする。ステップ８１２ｄは、リード−ライト揮発性メモリから、リード−ライトデータ、コードセクションアドレステーブル、シンボルオフセットアドレステーブル、パッチライブラリ、シンボルアクセサコード、およびシンボルアクセサコードアドレスにアクセスする。
【００５５】
ステップ８０６において対応する開始アドレスにコードセクションの開始点を格納するステップは、サブステップを含む。ステップ８０６ｂは、第２の複数の連続してアドレスされたメモリブロックを生成する。ステップ８０６ｃは、対応するコードセクションと各メモリブロックとを識別する。ステップ８０６ｄは、識別されたメモリブロックにコードセクションを格納する。
【００５６】
いくつかの局面において、ステップ８０４において第２の複数のコードセクションに第１の複数のシンボルライブラリを配置するステップは、第１のコードセクションにおいて第３の複数のシンボルライブラリを配置するステップを包含する。ステップ８０６ｃにおいて対応するコードセクションと各メモリブロックとを識別するステップは、第１のコードセクションと第１のメモリブロックとを識別するステップを包含する。ステップ８０６ｄにおいて識別されたメモリブロックにおいてコードセクションを格納するステップは、第１のメモリブロックに第３の複数のシンボルライブラリを格納するステップを包含する。ステップ８０８において新しいコードセクションを受信するステップは、内部に第３の複数のシンボルライブラリが配置される更新された第１のコードセクションを受信するステップを包含する。次に、ステップ８１０において無線デバイスのための更新されたシステムソフトウェアを形成するために現在のコードセクションを用いて新しいコードセクションを配置するステップは、更新された第１のコードセクションを用いて第１のメモリブロックの第１のコードセクションを上書きするステップを包含する。
【００５７】
別の局面において、ステップ８０４において第２の複数のコードセクションに第１の複数のシンボルライブラリを配置するステップは、第１のコードセクションに第１のシンボルライブラリを配置するステップを包含する。ステップ８０６ｃにおいて対応するコードセクションと各メモリブロックとを識別するステップは、第１のコードセクションと第１のメモリブロックとを識別するステップを包含する。ステップ８０６ｄにおいて識別されたメモリブロックにコードセクションを格納するステップは、第１のメモリブロックに第１のシンボルライブラリを格納するステップを包含する。ステップ８０８において新しいコードセクションを受信するステップは、内部に第１のシンボルライブラリが配置される更新された第１のコードセクションを受信するステップを包含する。次に、ステップ８１０において無線デバイスの更新されたシステムソフトウェアを形成するために現在のコードセクションを用いて新しいコードセクションを配置するステップは、更新された第１のコードセクションを用いて第１のメモリブロックの第１のコードセクションを上書きするステップを包含する。
【００５８】
ステップ８０４の第１の複数のシンボルライブラリを第２の複数のコードセクションへ配置するステップは、配置されるシンボルライブラリを収容するようにコードセクションをサイズ合わせするステップを包含する。次いで、ステップ８０６ｂの第２の複数の連続してアドレスされるメモリブロックを生成するステップは、対応するコードセクションを収容するためにメモリブロックをサイズ合わせすることを含む。もしくは、ステップ８０４の第１の複数のシンボルライブラリを第２の複数のコードセクションへ配置するステップは、配置されるシンボルライブラリよりも大きいサイズを収容するようにコードセクションをサイズ合わせするステップを包含する。
【００５９】
無線通信デバイスにおいて利用するための更新可能なシステムソフトウェア構造のためのシステムおよび方法が、提供された。本システムは、メモリにおけるコードセクションの開始アドレスおよびシンボルライブラリのシンボルのオフセットアドレスとアクセスするためのテーブルにより、コードセクションにおけるシンボルライブラリの配置のために、容易に更新可能である。これらのライブラリ配置および相互参照テーブルのいくつかの例が、ディスプレイ機能のために与えられたが、本発明は、これらの例だけに制限されない。当業者には、本発明の他の改変および実施形態が思い至る。
【図面の簡単な説明】
【００６０】
【図１】図１は、無線デバイスソフトウェアメンテナンスシステム全体の概略的なブロック図である。
【図２】図２は、エアリンクインターフェースを介して命令セットのインストールをハイライトする、ソフトウェアメンテナンスシステムの概略的なブロック図である。
【図３】図３は、無線通信デバイスにおける利用のための、本発明の現場更新可能なシステムソフトウェア構造の概略的なブロック図である。
【図４】図４は、無線デバイスメモリの概略的ブロック図である。
【図５】図５は、図３のコードセクションアドレステーブルを示すテーブルである。
【図６】図６は、シンボルを有する、図３のシンボルライブラリの詳細な図である。
【図７】図７は、図３のシンボルオフセットアドレステーブルを示すテーブルである。
【図８ａ】図８ａは、無線通信デバイスにおいてシステムソフトウェアを更新する本発明の方法を示すフローチャートである。
【図８ｂ】図８ｂは、無線通信デバイスにおいてシステムソフトウェアを更新する本発明の方法を示すフローチャートである。
【図８ｃ】図８ｃは、無線通信デバイスにおいてシステムソフトウェアを更新する本発明の方法を示すフローチャートである。
【図１】
0004073399.tif 000003
【図２】
0004073399.tif 000004
【図３】
0004073399.tif 000005
【図４】
0004073399.tif 000006
【図５】
0004073399.tif 000007
【図６】
0004073399.tif 000008
【図７】
0004073399.tif 000009
【図８ａ】
0004073399.tif 000010
【図８ｂ】
0004073399.tif 000011
【図８ｃ】
0004073399.tif 000012