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