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