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