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