(57)【要約】本発明は、ソフトウェア（１１０ａ）と装置（１０４ａ）とデータ（１１０ｃ）とによって構成されている、ディジタル情報シーケンスをアップデートするための効率的な装置とシステムと方法とを開示する。さらに、このディジタル情報シーケンスは、ファイル、記憶場所、および／または、組込み記憶場所を非限定的に含む様々な形式で記憶され使用されることが可能である。したがって、開示される本発明は、様々なタイプのディジタル情報シーケンスをアップデートすることと、多数のファイルで構成されているソフトウェアをアップデートすることとに適している。さらに、本明細書で開示される装置とシステムと方法は、必要に応じてアップデート情報を生成する改善された能力を当業の開発者に提供し、さらには、誤りの影響を受けずかつ従来の技術の使用する場合よりも迅速に行われることが可能である、単純化されたアップデートパスをユーザが進むことを可能にする。
2004514214.tif 000002
【特許請求の範囲】
【請求項１】
第１の複数のディジタル情報シーケンスを含むアップデートされたオペレーティングコードによって複数の分散した電子装置をアップデートし、および、前記複数の電子装置の各々は、前記電子装置内に記憶されている第２の複数のディジタル情報シーケンスを含む常駐オペレーティングコードを含むシステムであって、
前記アップデートされたオペレーティングコードを含む前記第１の複数のディジタル情報シーケンスのイメージを、前記常駐オペレーティングコードを含む前記第２の複数のディジタル情報シーケンスのイメージに対して比較し、前記アップデートされたオペレーティングコードと前記常駐オペレーティングコードとの間の差異を識別し、その後で、前記常駐オペレーティングコードの前記第２の複数のディジタル情報シーケンスの少なくとも一部分を使用することによって、前記アップデートされたオペレーティングコードを生成する仕方を指示する命令セットを含むアップデートパッケージを生成するアップデートジェネレータと、
前記アップデートパッケージが前記電子装置によって受け取られてその中に記憶されるように前記電子装置に前記アップデートパッケージを配布する配布システムと、
前記複数の電子装置の各々にそれぞれ常駐している複数のクライアントモジュールであって、この複数のクライアントモジュールは前記配布システムにアクセスして前記アップデートパッケージを受け取り、および、前記アップデートパッケージの前記命令セットは、前記常駐オペレーティングコードからの前記第２の複数のディジタル情報シーケンスの少なくとも一部分を使用することによって前記アップデートされたオペレーティングコードを生成するように、この複数のクライアントモジュールによって実行される複数のクライアントモジュールと、
を含むシステム。
【請求項２】
前記アップデートされたオペレーティングコードの前記イメージと前記常駐オペレーティングコードの前記イメージは、各々のそれぞれのコードが、前記第１および第２の複数のディジタル情報シーケンスの構成および位置に関する情報が前記アップデートジェネレータによって認識されるように前記電子装置内に記憶されていて、各々のそれぞれのコードの実質的に正確な表現を含む、請求項１に記載のシステム。
【請求項３】
前記アップデートジェネレータは、前記命令セットを生成するために前記第２の複数のディジタル情報シーケンスの構成および位置に関する情報を使用し、前記常駐オペレーティングコードの前記イメージに対する前記命令セットの適用が、前記常駐オペレーティングコードの前記イメージを前記アップデートされたオペレーティングコードの前記イメージに変換することを結果的に生じさせる、請求項２に記載のシステム。
【請求項４】
前記アップデートされたオペレーティングコードと前記常駐オペレーティングコードとの間の前記識別された差異は、前記それぞれのコードイメージを互いに直接比較することと、前記アップデートされたオペレーティングコードと前記常駐オペレーティングコードとの間の別々のサイズの情報パターンを識別することとによって、コードインデペンデントな仕方で評価される、請求項１に記載のシステム。
【請求項５】
前記別々のサイズの情報パターンは、少なくとも１バイトの長さの情報パターンを含む、請求項４に記載のシステム。
【請求項６】
前記別々のサイズの情報パターンは、少なくとも１ビットの長さの情報パターンを含む、請求項４に記載のシステム。
【請求項７】
前記命令セットは、前記常駐オペレーティングコードの前記ディジタル情報シーケンスを再使用することと、前記常駐オペレーティングコードの前記ディジタル情報シーケンスを前記アップデートされたオペレーティングコードの前記ディジタル情報シーケンスに変換することとによって、前記第１の複数のディジタル情報シーケンスの少なくとも一部分を生成するために、前記常駐オペレーティングコードの前記第２の複数のディジタル情報シーケンスにアクセスしてこれらのディジタル情報シーケンスを使用する複数の操作を含む、請求項１に記載のシステム。
【請求項８】
前記命令セットの使用は、前記アップデートパッケージで使用される前記命令セットのサイズが、前記常駐オペレーティングコードを前記アップデートされたオペレーティングコードに変換するために使用される対応するビットパターンのサイズよりも小さいように、前記電子装置内に存在する前記常駐オペレーティングコードを好ましくは再使用する操作を指定することによって、前記常駐オペレーティングコードを前記アップデートされたオペレーティングコードに変換するために必要とされる前記アップデートパッケージのサイズを低減させる、請求項１に記載のシステム。
【請求項９】
前記ディジタル情報シーケンスはビット単位の情報パターンを含む、請求項１に記載のシステム。
【請求項１０】
前記アップデートパッケージは、前記配布システムと前記電子装置との間の通信リングを通信媒体を経由して確立することによって配布される、請求項１に記載のシステム。
【請求項１１】
前記通信媒体はワイヤレスネットワークを含む、請求項１０に記載のシステム。
【請求項１２】
前記通信媒体はワイヤードネットワークを含む、請求項１０に記載のシステム。
【請求項１３】
前記通信媒体はインターネット接続通信媒体を含む、請求項１０に記載のシステム。
【請求項１４】
前記複数の分散した電子装置は、移動電話、セルラー電話、パーソナルディジタルアシスタント、ページャ、人工衛星、ラップトップコンピュータ、ノートブックコンピュータ、および、テレマテック装置から本質的になるグループから選択されるワイヤレス装置を含む、請求項１に記載のシステム。
【請求項１５】
前記複数の分散した電子装置は、パーソナルコンピュータ、サーバコンピュータ、デスクトップコンピュータ、および、テレマテック装置から本質的になるグループから選択される電子装置を含む、請求項１に記載のシステム。
【請求項１６】
前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、前記電子装置のためのオペレーティングシステムを形成する命令および情報を含む請求項１に記載のシステム。
【請求項１７】
前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、第１の組の個人専用情報を第２の組の個人専用情報に変換するためにアップデートされる、前記電子装置内に記憶されている前記第１の組の個人専用情報を含む、請求項１に記載のシステム。
【請求項１８】
前記第１の組の個人専用情報と前記第２の組の個人専用情報は、名称、住所、電話番号、地図、道順、および、他のタイプの個人専用情報を含む、請求項１７に記載のシステム。
【請求項１９】
前記常駐オペレーティングコードはソフトウェアプログラムの第１のバージョンを含み、および、前記アップデートされたオペレーティングコードは前記ソフトウェアプログラムの第２のバージョンを含む、請求項１に記載のシステム。
【請求項２０】
第１のコードバージョンを含む第１の複数のデータシーケンスを含む電子装置を、前記第１のコードバージョンを第２のコードバージョンに変換する複数の変換命令を含むアップデートパッケージを使用することによって、第２の複数のデータシーケンスを含む前記第２のコードバージョンにアップデートするシステムであって、
前記第１の複数のデータシーケンスと前記第２の複数のデータシーケンスとの間のパターン差を識別するために前記第１のコードバージョンと前記第２のコードバージョンとの間のバージョン比較を行うアップデートジェネレータであって、前記識別されたパターン差は、前記識別されたパターン差の構築に使用されることが可能な前記第１の複数のデータシーケンスの一部分を識別する変換命令を使用することと、その後で前記変換命令を使用して前記アップデートパッケージを形成することとによって符号化されるアップデートジェネレータと、
前記アップデートジェネレータから前記アップデートパッケージを受け取って前記アップデートパッケージを前記電子装置に配布する配布システムと、
前記アップデートパッケージの前記変換命令を実行し、それによって前記電子装置内に常駐している前記第１のコードバージョンをアップデートされた前記第２のコードバージョンに変換する、前記電子装置上に常駐しているアップデートエージェントと、
を含むシステム。
【請求項２１】
前記アップデートパッケージの前記変換命令は、前記第１のコードバージョンを前記第２のコードバージョンに変換するために前記識別されたパターン差を解消するように１つまたは複数の比較機能を適用する効率を評価することによって選択される、請求項２０に記載のシステム。
【請求項２２】
前記比較機能の効率は、前記変換命令が適用される前記パターン差のサイズに比較した、結果的に生じた前記変換命令のサイズに基づいている、請求項２１に記載のシステム。
【請求項２３】
最も高い効率を有する前記変換命令が、前記アップデートパッケージ中への組込みのために前記アップデートジェネレータによって選択される、請求項２２に記載のシステム。
【請求項２４】
前記第１のコードバージョンと前記第２のコードバージョンは、前記電子装置のためのオペレーティングシステムを形成する命令および情報を含む、請求項２０に記載のシステム。
【請求項２５】
前記第１のコードバージョンは、前記第２のコードバージョンに表現されている第２の組の情報に変換するためにアップデートされる、前記電子装置内に記憶されている第１の組の情報を含む、請求項２０に記載のシステム。
【請求項２６】
前記第１の組の情報と前記第２の組の情報は、名称、住所、電話番号、地図、道順、および、他のタイプの個人専用情報を含む、請求項２５に記載のシステム。
【請求項２７】
前記第１のコードバージョンはソフトウェアプログラムであり、および、前記第２の組のコードバージョンは前記ソフトウェアプログラムのアップデートされたバージョンを含む、請求項２０に記載のシステム。
【請求項２８】
複数のデータブロックを含むアップデートされたオペレーティングコードによって複数の分散した電子装置をアップデートし、および、前記複数の分散した電子装置の各々は複数のデータブロックとして記憶されている常駐オペレーティングコードを含むシステムであって、
前記常駐オペレーティングコードの前記複数のデータブロックを前記アップデートされたオペレーティングコードの複数のデータブロックと比較し、それによって、前記常駐オペレーティングコードの前記複数のデータブロックを少なくとも部分的に使用することによって、前記アップデートされたオペレーティングコードを生成する仕方を指示する命令セットを含むアップデートパッケージを生成するアップデートジェネレータと、
前記アップデートパッケージを含みかつ前記複数の分散した電子装置の各々によってアクセス可能である配布システムと、
前記複数の分散した電子セットの各々にそれぞれに常駐しており、および、前記アップデートパッケージを受け取ることが可能であるように前記配布システムにアクセスする複数のクライアントモジュールであって、前記命令セットは、このクライアントモジュールが前記常駐オペレーティングコードを含む複数のデータブロックを使用することによって、前記アップデートオペレーティングコードを含む複数のデータブロックの少なくとも一部分を生成するようにこのクライアントモジュールに命令を提供する、複数のクライアントモジュールと、
を含むシステム。
【請求項２９】
前記アップデートジェネレータは、前記常駐オペレーティングコードの前記複数のデータブロックと前記アップデートされたオペレーティングコードの前記複数のデータブロックとを比較し、前記オペレーティングコードの相互間のシーケンス差を識別する、請求項２８に記載のシステム。
【請求項３０】
前記アップデートジェネレータは、前記アップデートパッケージ中に前記シーケンス差を直接含むことに比較して前記アップデートパッケージのサイズを低減させるために、前記常駐オペレーティングコードを含む前記データブロックの一部分を使用することによって、前記オペレーティングコードの相互間のシーケンス差を効率的に変換するための前記命令セットを形成する、請求項２９に記載のシステム。
【請求項３１】
前記シーケンス差はビット単位の差を含む、請求項３０に記載のシステム。
【請求項３２】
前記シーケンス差はバイト単位の差を含む、請求項３０に記載のシステム。
【請求項３３】
前記配布システムと前記複数の分散した電子装置は通信媒体を経由して情報を交換する、請求項２８に記載のシステム。
【請求項３４】
前記配布システムと前記複数の分散した電子装置とによって交換される情報の少なくとも一部分は前記アップデートパッケージを含む、請求項３３に記載のシステム。
【請求項３５】
前記通信媒体はワイヤレスネットワークを含む、請求項３３に記載のシステム。
【請求項３６】
前記通信媒体はワイヤードネットワークを含む、請求項３３に記載のシステム。
【請求項３７】
前記通信媒体はインターネット接続通信媒体を含む、請求項３３に記載のシステム。
【請求項３８】
前記複数の分散した電子装置は、移動電話、セルラー電話、パーソナルディジタルアシスタント、ページャ、人工衛星、ラップトップコンピュータ、ノートブックコンピュータ、および、テレマテック装置から本質的になるグループから選択されるワイヤレス装置を含む、請求項２８に記載のシステム。
【請求項３９】
前記複数の分散した電子装置は、パーソナルコンピュータ、サーバコンピュータ、デスクトップコンピュータ、および、テレマテック装置から本質的になるグループから選択される電子装置を含む、請求項２８に記載のシステム。
【請求項４０】
前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、前記電子装置のためのオペレーティングシステムを形成する命令および情報を含む、請求項２８に記載のシステム。
【請求項４１】
前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、第１の組の個人専用情報を第２の組の個人専用情報に変換するためにアップデートされる、前記電子装置内に記憶されている前記第１の組の個人専用情報を含む、請求項２８に記載のシステム。
【請求項４２】
前記第１の組の個人専用情報と前記第２の組の個人専用情報は、名称、住所、電話番号、地図、道順、および、他のタイプの個人専用情報を含む、請求項４１に記載のシステム。
【請求項４３】
前記常駐オペレーティングコードはソフトウェアプログラムの第１のバージョンを含み、および、前記アップデートされたオペレーティングコードは前記ソフトウェアプログラムの第２のバージョンを含む、請求項２８に記載のシステム。
【請求項４４】
前記常駐オペレーティングコードは第１のファンクショナリティを前記電子装置に伝達し、前記アップデートされたオペレーティングコードは第２のファンクショナリティを前記電子装置に伝達する、請求項２８に記載のシステム。
【請求項４５】
前記第１のファンクショナリティと前記第２のファンクショナリティは同一の機能種類またはアプリケーションタイプである、請求項４４に記載のシステム。
【請求項４６】
前記第１のファンクショナリティと前記第２のファンクショナリティは互いに異なる機能種類またはアプリケーションタイプである、請求項４４に記載のシステム。
【請求項４７】
前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは前記オペレーティングコードの互いに異なるバーションを含む、請求項４４に記載のシステム。
【請求項４８】
前記常駐オペレーティングコードはファームウェアの第１のバージョンを含み、前記アップデートされたオペレーティングコードはファームウェアの第２のバージョンを含む、請求項２８に記載のシステム。
【請求項４９】
複数のデータブロックを含むアップデートされたオペレーティングコードによって複数の分散した電子装置をアップデートし、および、前記複数の分散した電子装置は、複数のデータブロックとして記憶されている常駐オペレーティングコードを含むシステムであって、
前記常駐オペレーティングコードの前記複数のデータブロックを、前記アップデートされたオペレーティングコードの前記複数のデータブロックと比較し、それによって、前記アップデートされたオペレーティングコードと前記常駐オペレーティングコードとの間で異なっているアップデートデータブロックを識別し、および、前記常駐オペレーティングコードの前記複数のデータブロックを少なくとも部分的に使用することによって、前記常駐オペレーティングコードを前記前記アップデートされたオペレーティングコードに変換する仕方と、前記アップデートデータブロックを生成する仕方とを指示する命令セットを含むアップデートパッケージを生成するアップデートジェネレータと、
前記アップデートパッケージを含みかつ前記複数の分散した電子装置の各々によってアクセス可能である配布システムと、
前記複数の分散した電子セットの各々にそれぞれに常駐しており、および、前記アップデートパッケージを受け取ることが可能であるように前記配布システムにアクセスする複数のクライアントモジュールであって、前記命令セットは、前記常駐オペレーティングコードを前記アップデートされたオペレーティングコードに変更するようにこのクライアントモジュールに命令を与え、および、このクライアントモジュールは、前記アップデートデータブロックを生成するために、前記常駐オペレーティングコードの前記データブロックに対して操作を行うように前記受け取られた命令セットを使用することによって、前記アップデートデータブロックの少なくとも一部分を生成する複数のクライアントモジュールと、
を含むシステム。
【請求項５０】
前記第１のコードバージョンと前記第２のコードバージョンとの間の識別されたパターン差は、別々に識別可能なワードサイズを有する、請求項４９に記載のシステム。
【請求項５１】
前記パターン差の前記ワードサイズは少なくとも１ビットを含む、請求項５０に記載のシステム。
【請求項５２】
前記パターン差の前記ワードサイズは少なくとも１バイトを含む、請求項５０に記載のシステム。
【請求項５３】
前記アップデートジェネレータは、前記第２のコードバージョンに変換される前記第１のコードバージョンの少なくとも一部分を使用することによって、前記第１のコードバージョンと前記第２のコードバージョンとの間の前記パターン差を変換する仕方を定義する変換命令を形成する、請求項５０に記載のシステム。
【請求項５４】
前記配布システムと前記複数の分散した電子装置は通信媒体を経由して情報を交換する、請求項４９に記載のシステム。
【請求項５５】
前記配布システムと前記複数の分散した電子装置とによって交換される情報の少なくとも一部分は前記アップデートパッケージを含む、請求項５４に記載のシステム。
【請求項５６】
前記通信媒体はワイヤレスネットワークを含む、請求項５４に記載のシステム。
【請求項５７】
前記通信媒体はワイヤードネットワークを含む、請求項５４に記載のシステム。
【請求項５８】
前記通信媒体は、インターネット接続通信媒体、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、公衆インターネット、専用インターネット、専用コンピュータネットワーク、セキュアインターネット、専用ネットワーク、公衆ネットワーク、付加価値ネットワーク、対話型テレビネットワーク、ワイヤレスデータ伝送ネットワーク、双方向ケーブルネットワーク、対話型キオスクネットワークから本質的になるグループから選択される、請求項５４に記載のシステム。
【請求項５９】
前記電子装置は、移動電話、セルラー電話、パーソナルディジタルアシスタント、ページャ、人工衛星、ラップトップコンピュータ、ノートブックコンピュータ、および、テレマテック装置から本質的になるグループから選択されるワイヤレス装置を含む、請求項４９に記載のシステム。
【請求項６０】
前記電子装置は、パーソナルコンピュータ、デスクトップコンピュータ、サーバコンピュータ、および、テレマテック装置から本質的になるグループから選択される装置を含む、請求項４９に記載のシステム。
【請求項６１】
前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、前記電子装置のためのオペレーティングシステムを形成する命令および情報を含む、請求項４９に記載のシステム。
【請求項６２】
前記常駐オペレーティングコードは、前記アップデートされたオペレーティングコードによって表現される第２の組の情報に変換するためにアップデートされる、前記電子装置内に記憶されている第１の組の情報を含む、請求項４９に記載のシステム。
【請求項６３】
前記第１の組の情報と前記第２の組の情報は、名称、住所、電話番号、地図、道順、および、他のタイプの個人専用情報を含む、請求項６２に記載のシステム。
【請求項６４】
前記常駐オペレーティングコードはソフトウェアプログラムの第１のバージョンを含み、前記アップデートされたオペレーティングコードは前記ソフトウェアプログラムの第２のバージョンを含む、請求項４９に記載のシステム。
【請求項６５】
前記常駐オペレーティングコードは第１のファンクショナリティを前記複数の電子装置に伝達し、前記アップデートされたオペレーティングコードは第２のファンクショナリティを前記複数の電子装置に伝達する、請求項４９に記載のシステム。
【請求項６６】
前記第１のファンクショナリティと前記第２のファンクショナリティは同一である、請求項６５に記載のシステム。
【請求項６７】
前記第１のファンクショナリティと前記第２のファンクショナリティは互いに実質的に種類が異なっている、請求項６５に記載のシステム。
【請求項６８】
前記常駐オペレーティングコードはファームウェアの第１のバージョンを含み、前記アップデートされたオペレーティングコードはファームウェアの第２のバージョンを含む、請求項１に記載のシステム。
【請求項６９】
電子装置の第１の記憶セクション内に記憶されている常駐オペレーティングコードをアップデートされたオペレーティングコードにアップデートする方法であって、
（ｉ）前記常駐オペレーティングコードを前記アップデートされたオペレーティングコードに変換するための複数の変換操作を含むアップデートパッケージを作成することと、
（ｉｉ）前記アップデートパッケージを前記電子装置に転送することと、
（ｉｉｉ）前記常駐オペレーティングコードの一部分を第２の記憶セクションにコピーすることと、
（ｉｖ）前記常駐オペレーティングコードを前記アップデートされたオペレーティングコードに変換するために、前記アップデートパッケージの前記変換操作を使用することによって、前記第２の記憶セクション内に記憶されている前記常駐オペレーティングコードの前記一部分をアップデートすることと、
（ｖ）前記第２の記憶セクション内に記憶されている前記アップデートされたオペレーティングコードの前記一部分によって、前記第１の記憶セクション内に記憶されている前記常駐オペレーティングコードの前記一部分を置き換えることと、
（ｖｉ）前記常駐オペレーティングコードが前記アップデートされたオペレーティングコードに完全にアップデートされ終わるまで、動作（ｉｉｉ）から動作（ｖ）までを繰り返すことと、
を含む方法。
【請求項７０】
前記第２の記憶セクション内に記憶されている前記常駐オペレーティングコードの前記一部分をアップデートすることは、前記第２の記憶セクション内に記憶されている前記常駐オペレーティングコードの前記一部分を前記アップデートされたオペレーティングコードの前記一部分に変換するために、前記第１の記憶セクション内に記憶されている前記常駐オペレーティングコードの少なくとも幾らかを使用する変換操作を適用することを含む、請求項６９に記載の方法。
【請求項７１】
前記常駐オペレーティングコードの前記一部分をアップデートすることは、前記第２の記憶セクション内に記憶されている前記アップデートされたオペレーティングコードを前記常駐オペレーティングコードの前記一部分の代わりにコピーすることによって、前記第１の記憶セクション内に記憶されている前記常駐オペレーティングコードの前記一部分を置き換えることをさらに含む、請求項７０に記載の方法。
【請求項７２】
前記アップデートされたオペレーティングコードを作成することは、前記変換操作の適用によって前記アップデートされたオペレーティングコードを形成するために使用できる常駐オペレーティングコードのシーケンスを含む前記第１の記憶セクション内のロケーションを表現している１つまたは複数のアドレスを含むハッシュテーブルを生成することを含む、請求項６９に記載の方法。
【請求項７３】
前記アップデートされたオペレーティングコードは、前記ハッシュテーブル内の指定された１つまたは複数の特定のアドレスに対応する前記常駐オペレーティングコードのシーケンスを検索することと、前記検索された常駐オペレーティングコードのシーケンスに対して変換操作を適用し、それによって前記常駐オペレーティングコードのシーケンスをアップデートされたオペレーティングコードのシーケンスに変換することとによって生成される、請求項７２に記載の方法。
【請求項７４】
前記アップデートパッケージを作成することは、さらに、
前記常駐オペレーティングコードを前記アップデートされたオペレーティングコードに変換するために１つまたは複数の異なる変換操作の効率を評価することと、
前記アップデートオペレーティングコードを生成して前記アップデートパッケージのサイズを低減させるために前記常駐操作コードの使用を増加させる変換操作を選択することと、
を含む、請求項６９に記載の方法。
【請求項７５】
前記アップデートパッケージを前記電子装置に転送することは、ワイヤレス通信媒体を経由して前記アップデートパッケージを送信することを含む、請求項６９に記載の方法。
【請求項７６】
前記アップデートパッケージを前記電子装置に転送することは、インターネット接続通信媒体、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、公衆インターネット、専用インターネット、専用コンピュータネットワーク、セキュアインターネット、専用ネットワーク、公衆ネットワーク、付加価値ネットワーク、対話型テレビネットワーク、ワイヤレスデータ伝送ネットワーク、双方向ケーブルネットワーク、および、対話型キオスクネットワークから本質的になるグループから選択される通信媒体を経由して前記アップデートパッケージを送信することを含む、請求項６９に記載の方法。
【請求項７７】
第１の記憶セクション内に記憶されている前記常駐オペレーティングコードをアップデートすることは、不揮発性記憶媒体内に記憶されているオペレーティングコードをアップデートすることを含む、請求項６９に記載の方法。
【請求項７８】
前記内に記憶されているオペレーティングコードをアップデートすることは、フラッシュメモリ記憶媒体内に記憶されているオペレーティングコードをアップデートすることを含む、請求項７７に記載の方法。
【請求項７９】
前記不揮発性記憶媒体内に記憶されているオペレーティングコードをアップデートすることは、ハードドライブ、オプティカルドライブ、テープドライブ、および、ＥＰＲＯＭ装置から本質的になるグループから選択される記憶媒体内に記憶されているオペレーティングコードをアップデートすることを含む、請求項７７に記載の方法。
【請求項８０】
前記常駐オペレーティングコードの前記一部分を第２の記憶セクション内にコピーすることは、前記常駐オペレーティングコードの前記一部分を揮発性記憶媒体内にコピーすることを含む、請求項６９に記載の方法。
【請求項８１】
前記常駐オペレーティングコードの前記一部分を揮発性記憶媒体内にコピーすることは、前記常駐オペレーティングコードの前記一部分をランダムアクセスメモリ記憶媒体内にコピーすることを含む、請求項８０に記載の方法。
【請求項８２】
第１の記憶セクション内に記憶されている前記常駐オペレーティングコードをアップデートすることは、前記常駐オペレーティングコードを含む複数のバンクを含む前記第１の記憶セクションの区画の中に記憶されている前記常駐オペレーティングコードをアップデートすることを含む、請求項６９に記載の方法。
【請求項８３】
前記第２の記憶セクション内にコピーされた前記常駐オペレーティングコードの前記一部分は、前記第１の記憶セクションからの１つまたは複数のバンク内に存在している前記常駐オペレーティングコードに相当する、請求項８２に記載の方法。
【請求項８４】
前記変換操作は、前記第１の記憶セクションの１つまたは複数のバンク内に存在している前記常駐オペレーティングコードをアップデートされたオペレーティングコードに変換する、請求項８２に記載の方法。
【請求項８５】
前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、前記電子装置のためのオペレーティングコードを形成する命令および情報を含む、請求項６９に記載の方法。
【請求項８６】
前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、第１の組の情報を第２の組の情報に変換するためにアップデートされる前記電子装置内に記憶されている前記第１の組の情報を含む、請求項６９に記載の方法。
【請求項８７】
前記第１および第２の組の情報は、名称、住所、電話番号、地図、道順、および、他のタイプの情報を含む、請求項８６に記載の方法。
【請求項８８】
前記常駐オペレーティングコードはソフトウェアプログラムの第１のバージョンを含み、前記アップデートされたオペレーティングコードは前記ソフトウェアプログラムの第２のバージョンを含む、請求項６９に記載の方法。
【請求項８９】
前記常駐オペレーティングコードは、第１のファンクショナリティを前記複数の電子装置に伝達し、前記アップデートされたコードは第２のファンクショナリティを前記複数の電子装置に伝達する、請求項６９に記載の方法。
【請求項９０】
前記第１のファンクショナリティと前記第２のファンクショナリティを、同一の機能種類またはアプリケーションタイプから選択する、請求項８９に記載の方法。
【請求項９１】
前記第１のファンクショナリティと前記第２のファンクショナリティを、互いに異なっている機能種類またはアプリケーションタイプから選択する、請求項８９に記載の方法。
【請求項９２】
前記常駐オペレーティングコードはファームウェアの第１のバージョンを含み、前記アップデートされたオペレーティングコードは前記ファームウェアの第２のバージョンを含む、請求項６９に記載の方法。
【請求項９３】
さらに、前記アップデートパッケージの不揮発性コピーが前記アップデートプロセス中の電源故障または電源障害の発生時に使用可能であるように、前記変換操作を行う前に、ダウンロードされたアップデートパッケージのコピーを前記第１の記憶セクション内に形成することを含む、請求項６９に記載の方法。
【請求項９４】
さらに、アップデートされた常駐オペレーティングコードのセクションの不揮発性コピーが前記アップデートプロセス中の電源故障または電源障害の発生時に使用可能であるように、前記オリジナルのオペレーティングコードのセクションを置換する前に、前記アップデートされた常駐オペレーティングコードのセクションのコピーを前記第１の記憶セクション内に形成することを含む、請求項６９に記載の方法。
【請求項９５】
アップデート可能な電子装置であって、
オペレーティングコードが中に記憶されている不揮発性記憶セクションと、
複数の命令を含むアップデートパッケージを通信媒体を経由して受け取るようになっている揮発性記憶セクションと、
前記不揮発性記憶セクション内に記憶されている前記オペレーティングコードをアップデートするために前記アップデートパッケージの前記命令を実行するコントローラであって、逐次的に（ｉ）前記オペレーティングコードのオリジナル部分を前記不揮発性記憶セクションから前記揮発性記憶セクションの中に取り出し、（ｉｉ）取り出された前記オペレーティングコードのオリジナル部分をアップデートされたオペレーティングコード部分に変換するために、前記揮発性記憶セクション内の前記取り出されたコード部分に対して前記アップデートパッケージの命令を適用し、および、その次に（ｉｉｉ）前記アップデートされたオペレーティングコード部分によって前記オペレーティングコードのオリジナル部分を置き換えるように構成されているコントローラと、
を含むアップデート可能な電子装置。
【請求項９６】
前記不揮発性記憶セクションはフラッシュメモリ記憶媒体を含む、請求項９５に記載のアップデート可能な電子装置。
【請求項９７】
前記非揮発性記憶セクションは、ハードドライブ、オプティカルドライブ、テープドライブ、および、ＥＰＲＯＭ装置から本質的になるグループから選択される記憶媒体を含む、請求項９５に記載のアップデート可能な電子装置。
【請求項９８】
前記揮発性記憶セクションはランダムアクセス記憶媒体を含む、請求項９５に記載のアップデート可能な電子装置。
【請求項９９】
前記通信媒体はワイヤレス通信媒体を含む、請求項９５に記載のアップデート可能な電子装置。
【請求項１００】
前記通信媒体はワイヤード通信媒体を含む、請求項９５に記載のアップデート可能な電子装置。
【請求項１０１】
前記通信媒体は、インターネット接続通信媒体、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、公衆インターネット、専用インターネット、専用コンピュータネットワーク、セキュアインターネット、専用ネットワーク、公衆ネットワーク、付加価値ネットワーク、対話型テレビネットワーク、ワイヤレスデータ伝送ネットワーク、双方向ケーブルネットワーク、対話型キオスクネットワークから本質的になるグループから選択される、請求項９５に記載のアップデート可能な電子装置。
【請求項１０２】
前記不揮発性記憶セクションは、前記常駐オペレーティングコードを含む複数のバンクの形に細分化されている、請求項９５に記載のアップデート可能な電子装置。
【請求項１０３】
前記揮発性記憶セクションの中に取り出される前記常駐オペレーティングコードの前記一部分は、前記不揮発性記憶セクションからの前記１つまたは複数のバンク内に存在している前記常駐オペレーティングコードに相当する、請求項１０２に記載のアップデート可能な電子装置。
【請求項１０４】
前記命令は、前記不揮発性記憶セクションの前記１つまたは複数のバンク内に存在している前記常駐オペレーティングコードをアップデートされたオペレーティングコードに変換する、請求項１０２に記載のアップデート可能な電子装置。
【請求項１０５】
前記コントローラは、前記アップデート可能な電子装置が前記常駐オペレーティングコードまたは前記アップデートされたオペレーティングコードの破損から保護されるような誤り許容的な仕方で前記アップデートパッケージの前記命令を実行する、請求項９５に記載のアップデート可能な電子装置。
【請求項１０６】
前記アップデートパッケージの１つまたは複数のバックアップコピーが、前記アップデートパッケージが電源切断または装置故障の結果として失われることがないように、前記不揮発性記憶セクション内に維持される、請求項９５に記載のアップデート可能な電子装置。
【請求項１０７】
電源切断または装置故障の後に、前記コントローラは、前記アップデートパッケージの前記１つまたは複数のバックアップコピー内に含まれている情報を復元し、および、前記電源切断の発生以前の検出された適正に完了された操作に対応する時点においてアップデート作業を再開する、請求項１０６に記載のアップデート可能な電子装置。
【請求項１０８】
前記コントローラは、前記常駐のアップデートされたオペレーティングコードを評価してアップデートインストレーションの進捗を判定するために、誤り訂正コードすなわちＣＲＣコードを使用することによって、適正に競合している操作を検出する、請求項１０７に記載のアップデート可能な電子装置。
【請求項１０９】
前記アップデートされたオペレーティングコードの１つまたは複数のバックアップコピーは、前記アップデートされたオペレーティングコードが電源切断または装置故障の結果として失われることがないように、前記不揮発性記憶セクション内に維持される、請求項９５に記載のアップデート可能な電子装置。
【請求項１１０】
電源切断または装置故障の後に、前記コントローラは、前記アップデートされたオペレーティングコードの前記１つまたは複数のバックアップコピー内に含まれている情報を復元し、前記電源切断の発生以前の検出された適正に完了された操作に対応する時点においてアップデートを再開する、請求項１０９に記載のアップデート可能な電子装置。
【請求項１１１】
前記コントローラは、前記常駐のアップデートされたオペレーティングコードを評価してアップデートインストレーションの進捗を判定するために、誤り訂正コードすなわちＣＲＣコードを使用することによって、適正に競合している操作を検出する、請求項１１０に記載のアップデート可能な電子装置。
【請求項１１２】
前記常駐オペレーティングコードの１つまたは複数のバックアップコピーは、前記常駐オペレーティングコードが電源切断または装置故障の結果として失われることがないように、前記不揮発性記憶セクション内に維持される、請求項９５に記載のアップデート可能な電子装置。
【請求項１１３】
電源切断または装置故障の後に、前記コントローラは、前記常駐オペレーティングコードの前記１つまたは複数のバックアップコピー内に含まれている情報を復元し、前記電源切断の発生以前の検出された適正に完了された操作に対応する時点においてアップデートを再開する、請求項１１２に記載のアップデート可能な電子装置。
【請求項１１４】
前記コントローラは、前記常駐のアップデートされたオペレーティングコードを評価してアップデートインストレーションの進捗を判定するために、誤り訂正コードすなわちＣＲＣコードを使用することによって、適正に競合している操作を検出する、請求項１１３に記載のアップデート可能な電子装置。
【請求項１１５】
前記オリジナルのオペレーティングコードと前記アップデートされたオペレーティングコードは、前記電子装置のためのオペレーティングコードを形成する命令および情報を含む、請求項９５に記載のアップデート可能な電子装置。
【請求項１１６】
前記オリジナルのオペレーティングコードは、前記アップデートされたオペレーティングコードによって表現される第２の組の情報に変換するためにアップデートされる、前記電子装置内に記憶されている第１の組の情報を含む、請求項９５に記載のアップデート可能な電子装置。
【請求項１１７】
前記第１および第２の組の情報は、名称、住所、電話番号、地図、道順、および、他のタイプの個人専用情報を含む、請求項１０７に記載のアップデート可能な電子装置。
【請求項１１８】
前記オリジナルのオペレーティングコードはソフトウェアプログラムの第１のバージョンを含み、前記アップデートされたオペレーティングコードは前記ソフトウェアプログラムの第２のバージョンを含む、請求項９５に記載のアップデート可能な電子装置。
【請求項１１９】
前記オリジナルのオペレーティングコードは、第１のファンクショナリティを前記電子装置に伝達し、前記アップデートされたコードは第２のファンクショナリティを前記電子装置に伝達する、請求項９５に記載のアップデート可能な電子装置。
【請求項１２０】
前記第１のファンクショナリティと前記第２のファンクショナリティは同一である、請求項１１０に記載のアップデート可能な電子装置。
【請求項１２１】
前記第１のファンクショナリティと前記第２のファンクショナリティは互いに実質的に種類が異なっている、請求項１１０に記載のアップデート可能な電子装置。
【請求項１２２】
前記オリジナルのオペレーティングコードはファームウェムの第１のバージョンを含み、前記アップデートされたオペレーティングコードはファームウェアの第２のバージョンを含む、請求項９５に記載のアップデート可能な電子装置。
【発明の詳細な説明】
【０００１】
発明の背景
発明の分野
本発明は一般的に情報アップデートシステムに関し、さらに特に、アップデートのサイズを縮小しプラットフォームとは無関係な形でそのアップデートを配布するソフトウェアシステムおよび方法に関する。
【０００２】
関連技術の説明
ソフトウェアおよびハードウェア技術の迅速で連続的な進歩と共に、既存の装置およびソフトウェアコンポーネントの保守という問題がますます深刻なものになっている。コンピュータと装置とソフトウェアアプリケーションとがそれらの運用寿命全体にわたって完全に機能するように保たれることを確実にするためには、情報のアップデートおよびパッチのルーチンインストレーションが必要であることが認識されている。不幸にして、多くの装置とアプリケーションに関して、アップデート管理が、面倒で、時間がかかり、かつ、誤りが生じやすいプロセスである可能性がある。これらの問題は、セルラー電話およびパーソナルディジタルアシスタントのような携帯用電子装置においては、そのメモリの制約と帯域の制限とのために悪化せしめられる場合が多い。さらに、携帯用電子装置は、簡便で確実な仕方で自動アップデート動作を行う能力に欠けている場合が多い。この結果として、ハードウェアシステムとソフトウェアシステムの両方と共に使用されることが可能な改善されたアップデートプロセスが現在必要とされている。さらに、メモリの制約と帯域の制限とに起因して生じる潜在的な問題を軽減することを助けるために、アップデートパッケージのサイズを縮小するアップデート方法が必要とされている。
【０００３】
アップデート可能な電子装置およびソフトウェアがますます高度なものになっているので、週単位または月単位でアップデートが使用可能にされ好ましくは適用される頻繁な保守を必要とすることが多い。アップデートプロセス中は、そのアップデートが不適切に行われるか中断されてデータ破損やプログラムのファンクショナリティの損失やハードウェア故障を結果的に引き起こすことがある場合に、問題が生じることが多い。このことは、使用可能なアップデートがタイミング良く有効な形でインストールされることを確実にすることに関して、開発者および顧客の両方に対して重大な障害をもたらす。さらに、開発者は、既存のソフトウェアコンポーネントおよび／またはハードウェアコンポーネントの必要なアップデートおよびパッチと新たなバージョンとがユーザに提供されることを確実にするために多大な量の時間とリソースとを費やさなければならない。
【０００４】
開発者が取り組まなければならない重要問題の幾つかが、大きな顧客ベースに対してアップデートを保存し供給するのに必要とされる大量のリソースと、顧客が適正にそのアップデートを適用するのを補助することに関する技術サポートの課題と、そのアップデートがタイミング良くかつ効率的な仕方で顧客に配布される方法とを含む。スキルの高度な要件が、使用可能なアップデートを取得してインストールするために必要とされ、および、平均的な顧客の技術的スキルを超えた技術的スキルを要求することがある場合には、さらに別の問題が存在する。顧客は、その顧客がアップデートを取得することが可能である場合でさえ、そのアップデートの適正なインストレーションを確実なものにするという問題に直面せしめられる。アップデートパッケージの不適正なインストレーションはソフトウェア障害を結果的に生じさせるか、または、アップデートが適用される装置を動作不能にし、顧客に関連したアップデートの問題点を解決する上で開発者にさらに別の負担を負わせることがある。アップデート可能なコンポーネントを有する電子装置への依存性が増大するにつれて、アップデートが容易に取得されて必要または所望に応じて適正にインストールされることが可能であることを確実にするために、より迅速でより直観的なアップデート能力と、より小さいアップデートファイルサイズとが必要とされている。多くの事例では、アップデートパッケージの容易さと信頼性と可用性とが顧客の数と忠誠心とに大きく影響を与える可能性があり、および、成功を収める開発者または業者を判別する特徴である。
【０００５】
卓越したアップデートシステムの重要性は明白であるが、従来のアップデートソリューションは典型的には幾つかの欠点を有する。これらの問題点は携帯用電子装置において特に顕著であり、アップデートパッケージの生成と配給とインストレーションとに関連した幾つかの要因のために生じる。例えば、セルラー電話のような電子装置は、アップデート処理のために使用可能なメモリ空間すなわち記憶空間に関して制限されていることが多い。アップデートパッケージのサイズは、これらの装置上における減少したリソース可用性に適合するように、最小限に保たれなければならず、および、この結果として、これらの装置における組込みコードの大幅な変更すなわち改変を行う能力が制限されることがある。さらに、オペレーティングシステムの完全な置換または保守に向けられている携帯用電子装置の従来のアップデート方法は、そのアップデートを適用する専用の装置に対してその装置が有線接続によって物理的に接続されていることを必要とする。この仕方でアップデートすることは専用のハードウェアを必要とし、および、アップデートされるべき装置が製造業者または適切なサービスロケーションに戻されることを必要とする。これはユーザにとって不便であり、アップデートされるべき装置の数が多い場合には実際的ではないことがある。
【０００６】
アップデートパッケージのワイヤレス取得およびインストレーションをサポートする装置では、使用可能なアップデートパッケージを配布するために必要とされる帯域の制限のために問題が生じることが多い。さらに、ワイヤレス方式によるアップデートパッケージの取得は長時間を要し、中断またはデータ破損を被る可能性がある。アップデートパッケージがすでに取得されている場合でさえ、アップデートのインストレーションがユーザ側における高度の技術的専門知識を必要とし、そのアップデートパッケージの適正なインストレーションを面倒なものにする。この時点において、ユーザは、アップデートされるべきコードの以前のバージョンをアンインストールすることに関連した問題、または、成功する形でアップデートを適用することに関連した問題に直面せしめられる可能性がある。このことは、長時間をかけてアップデート作業を行うことをユーザに思いとどまらせ、または、場合によっては、アップデート作業全体を行うことをユーザに思いとどまらせるので、さらに別の問題をもたらす可能性がある。
【０００７】
多数のユーザに対してアップデートを提供するために公開アクセス可能なサーバに依存するアップデート管理システムに関しては、さらに別の問題が存在する。こうしたサーバはビジー状態すなわち混み合い状態になることが多く、および、アップデートが取得されることが可能な効率を低下させることが多い。アップデート要件から結果的に生じるさらに別の複雑さは、短縮された製品バージョン寿命から生じる。新たなソフトウェアのリリースが数ヶ月毎（「バグフィクス」およびバージョン内アップデートの場合には、数週毎に）に入手可能であることは珍しいことではない。このことは、アップデートサービスを維持するために必要とされる開発者リソースに対する要求を増大させ、その結果として、開発者が既存のソフトウェアの保守のために追加のリソースを費やすことになり、場合によっては、その開発者が、新たな製品能力を開発することから先行バージョンのサポートおよびアップデートに焦点を移行させる可能性もある。ビジネスの視点から見た場合には、ソフトウェアのアップデートは一般的に非収益性の生産活動と見なされており、過度の割合の開発者リソースを消費することがある。したがって、顧客がソフトウェアの最新バージョンを提供されることを確実にすると同時に既存のソフトウェアに対するサービスを行うために必要とされる時間とリソースと人員とを減少させることが、現在必要とされている。
【０００８】
アップデートをより迅速かつ直観的なものにする試みが、内部的に設計されサポートされているアップデートソリューションの開発をもたらしている。幾つかの問題点が、典型的には高コストであり知的所有権下にありかつプラットフォームに特化しているこうしたソリューションに関連している。アップデート生成のための他の方法は、アップデートを生成するかまたはソフトウェアのためのパッチを生成するように設計されている市販のソフトウェアパッケージを使用する。これらの方法は両方とも柔軟性とファイルサイズとに関して特有の問題点を有する。市販入手可能なソフトウェアアップデータ（ｓｏｆｔｗａｒｅ　ｕｐｄａｔｅｒ）は高コストであり、典型的には、不要に大きなファイルサイズを有するアップデートを生成する可能性がある。幾つかの例では、このアップデータ（ｕｐｄａｔｅｒ）によって生成される新たなバージョンまたはアップデートは、実際には、実際のパッチではなくそのソフトウェアのフルバージョンである。アップデートの大きなファイルサイズに関連した問題のために、開発者は頻繁にパッチをリリースすることに躊躇し、その結果としてより長期のソフトウェア開発サイクルに従う可能性がある。このことは、大きなアップデートファイルの生成と配布とを正当化にするのに十分なだけ大幅な変更および／または改善があるときにだけアップデートがリリースされる可能性があるので、限られた数のアップデートのせいで顧客に迷惑をかける可能性がある。
【０００９】
上述の説明から、利便性が高くかつ信頼性が高いアップデート管理システムが現在必要とされているということが理解できる。この目的のために、より迅速な取得を可能にするようにサイズが低減せしめられているアップデートを生成し配布するシステムが必要とされている。さらに、ハードウェアシステムとソフトウェアシステムの両方に対して同様に所望のアップデートをインストールするための、利便性が高くトラブルのない方法を提供する自動化されたプロセスが必要とされている。
【００１０】
発明の概要
本発明は、ソフトウェアと装置とデータとを含むディジタル情報シーケンスの効率的なアップデートに関する上述の要求を満たす。さらに、これらのディジタル情報シーケンスは、ファイルや記憶場所や組込み記憶場所を非限定的に含む様々な形で記憶および使用されてよい。本明細書で説明するシステムおよび方法は、必要に応じてアップデート情報を生成するための改善された能力を開発者に提供し、さらには、誤りが生じ難くかつ既存の技術の使用の場合に比べてより迅速に行われることが可能な単純化されたアップデートパスをユーザが進むことを可能にする。
【００１１】
本発明は、一実施態様では、第１の複数のディジタル情報シーケンスを含むアップデートされたオペレーティングコードによって、複数の分散した電子装置をアップデートするシステムを含み、この複数の電子装置の各々は、その電子装置内に記憶されている第２の複数のディジタル情報シーケンスを含む常駐オペレーティングコードを含む。このシステムは、さらに、アップデートされたオペレーティングコードを含む第１の複数のディジタル情報シーケンスのイメージを、常駐オペレーティングコードを含む第２の複数のディジタル情報シーケンスのイメージに対して比較し、アップデートされたオペレーティングコードと常駐オペレーティングコードとの間の差異を識別し、その後で、常駐オペレーティングコードの第２の複数のディジタル情報シーケンスの少なくとも一部分を使用することによって、アップデートされたオペレーティングコードを生成する仕方を指定する命令セットを含むアップデートパッケージを生成するアップデートジェネレータを含む。このシステムは、さらに、アップデートパッケージが電子装置によって受け取られてその中に記憶されるように電子装置にアップデートパッケージを配布する配布システムを含む。このシステムは、さらに、複数の電子装置の各々にそれぞれに常駐している複数のクライアントモジュールを含み、この複数のクライアントモジュールは配布システムにアクセスしてアップデートパッケージを受け取り、および、アップデートパッケージの命令セットは、常駐オペレーティングコードからの第２の複数のディジタル情報シーケンスの少なくとも一部分を使用することによって、アップデートされたオペレーティングコードを生成するように、クライアントモジュールによって実行される。
【００１２】
本発明は、別の側面では、第１のコードバージョンを第２のコードバージョンに変換する複数の変換命令を含むアップデートパッケージを使用することによって、第１のコードバージョンを含む第１の複数のデータシーケンスを含む電子装置を、第２の複数のデータシーケンスを含む第２のコードバージョンにアップデートするシステムを含む。このシステムは、さらに、第１の複数のデータシーケンスと第２の複数のデータシーケンスとの間のパターン差を識別するために第１のコードバージョンと第２のコードバージョンとの間のバージョン比較を行うアップデートジェネレータを含み、この識別されたパターン差は、この識別されたパターン差の構築に使用されることが可能な第１の複数のデータシーケンスの一部分を識別する変換命令を使用することと、その後で変換命令を使用してアップデートパッケージを形成することとによって符号化される。このシステムは、さらに、アップデートジェネレータからアップデートパッケージを受け取ってそのアップデートパッケージを電子装置に配布する配布システムを含む。このシステムは、さらに、電子装置内に常駐している第１のコードバージョンをアップデートされた第２のコードバージョンに変換するようにアップデートパッケージの変換命令を実行する、その電子装置上に常駐しているアップデートエージェントを含む。
【００１３】
本発明は、さらに別の側面において、複数のデータブロックを含むアップデートされたオペレーティングコードによって複数の分散した電子装置をアップデートするシステムを含み、この複数の分散した電子装置の各々は、複数のデータブロックとして記憶されている常駐オペレーティングコードを含む。このシステムは、さらに、常駐オペレーティングコードの複数のデータブロックをアップデートされたオペレーティングコードの複数のデータブロックと比較し、それによって、常駐オペレーティングコードの複数のデータブロックを少なくとも部分的に使用することによって、アップデートされたオペレーティングコードを生成する仕方を指示する命令セットを含むアップデートパッケージを生成する、アップデートジェネレータを含む。このシステムは、さらに、アップデートパッケージを含みかつ複数の分散した電子装置の各々によってアクセス可能である配布システムを含む。このシステムは、さらに、複数の分散した電子セットの各々にそれぞれに常駐している複数のクライアントモジュールを含み、この複数のクライアントモジュールは、アップデートパッケージを受け取ることが可能であるように配布システムにアクセスし、命令セットはクライアントモジュールに命令を提供し、その結果として、クライアントモジュールは、常駐オペレーティングコードを含む複数のデータブロックを使用することによって、アップデートオペレーティングコードを含む複数のデータブロックの少なくとも一部分を生成する。
【００１４】
本発明は、さらに別の側面において、複数のデータブロックを含むアップデートされたオペレーティングコードによって複数の分散した電子装置をアップデートするシステムを含み、複数の分散した電子装置の各々は、複数のデータブロックとして記憶されている常駐オペレーティングコードを含む。このシステムは、さらに、常駐オペレーティングコードの複数のデータブロックをアップデートされたオペレーティングコードの複数のデータブロックと比較して、それによって、アップデートオペレーティングコードと常駐オペレーティングコードとの間で異なっているアップデートデータブロックを識別し、および、アップデートジェネレータは、常駐オペレーティングコードをアップデートされたオペレーティングコードに変換する仕方と、常駐オペレーティングコードの複数のデータブロックを少なくとも部分的に使用することによってアップデートデータブロックを生成する仕方とを指示する命令セットを含むアップデートパッケージを生成する。このシステムは、さらに、アップデートパッケージを含みかつ複数の分散した電子装置の各々によってアクセス可能である配布システムを含む。このシステムは、さらに、複数の分散した電子セットの各々にそれぞれに常駐している複数のクライアントモジュールを含み、この複数のクライアントモジュールは、アップデートパッケージを受け取ることが可能であるように配布システムにアクセスし、命令セットはクライアントモジュールに命令を提供し、その結果として、クライアントモジュールは常駐オペレーティングコードをアップデートされたオペレーティングコードに変更し、および、クライアントモジュールは、アップデートデータブロックを生成するように常駐オペレーティングコードのデータブロックに対して操作を行うために、受け取られた命令セットを使用することによって、アップデートデータブロックの少なくとも一部分を生成する。
【００１５】
さらに別の実施態様では、本発明は、電子装置の第１の記憶セクションに記憶されている常駐オペレーティングコードをアップデートされたオペレーティングコードにアップデートする方法を含む。この方法は、さらに、常駐オペレーティングコードをアップデートされたオペレーティングコードに変換するための複数の変換操作を含むアップデートパッケージを開発する段階を含む。この方法は、さらに、アップデートパッケージを電子装置に転送する段階を含む。この方法は、さらに、常駐オペレーティングコードの一部分を第２の記憶セクションにコピーする段階を含む。この方法は、さらに、常駐オペレーティングコードを更新されたオペレーティングコードに変換するために、更新パッケージの変換操作を使用することによって、第２の記憶セクション内に記憶されている常駐オペレーティングコードの一部分を更新する段階を含む。この方法は、さらに、第１の記憶セクション内に記憶されている常駐オペレーティングコードの一部分を、第２の記憶セクション内に記憶されているアップデートされたオペレーティングコードの一部分によって置き換える段階を含む。この方法は、さらに、常駐オペレーティングコードがアップデートされたオペレーティングコードに完全にアップデートされ終わるまで上述のコピー段階とアップデート段階と置換段階とを繰り返す段階を含む。
【００１６】
さらに別の実施態様では、本発明は、オペレーティングコードが中に記憶されている不揮発性記憶セクションと、複数の命令を含むアップデートパッケージを通信媒体を経由して受け取るようになっている揮発性記憶セクションと、不揮発性記憶セクション内に記憶されているオペレーティングコードをアップデートするためにアップデートパッケージの命令を実行するコントローラとを含む、アップデート可能な電子装置を含む。この実施態様では、このコントローラは、逐次的に（ｉ）オペレーティングコードのオリジナル部分を不揮発性記憶セクションから揮発性記憶セクションの中に取り出し、（ｉｉ）取り出されたオペレーティングコードのオリジナル部分をアップデートされたオペレーティングコード部分に変換するように、揮発性記憶セクション内の取り出されたコード部分に対してアップデートパッケージの命令を適用し、および、その次に（ｉｉｉ）アップデートされたオペレーティングコード部分によってそのオペレーティングコードのオリジナル部分を置き換えるように構成されている。
【００１７】
本発明のこれらの側面と利点と新規の特徴とその他の側面と利点と新規の特徴とが、添付図面を参照しながら以下の詳細な説明を理解することによって明らかになるだろう。添付図面では、同種の要素が同じ参照番号を有する。
【００１８】
好ましい実施形態の詳細な説明
以下では、図面を参照し、これらの図面では全体を通じて同じ番号が同じ部品を示す。図１Ａは、アップデート配布システム１００の一実施形態を示す。このアップデート配布システム１００は、アップデートジェネレータ１０２とクライアント装置１０４とを含む。一実施形態では、アップデートジェネレータ１０２は、ソフトウェアアプリケーションの旧バージョンのような第１のコードバージョン１０６と、ソフトウェアアプリケーションの新バージョンのような第２のコードバージョン１０８とを受け取る。アップデートジェネレータ１０２は、好ましいことに第１のオリジナルのコードバージョン１０６を第２のアップデートされたコードバージョンに変換するために使用される複数の操作を表す命令セットを含むアップデートパッケージ１１０を生成する。その次に、アップデートパッケージ１１０は通信媒体を経由してクライアント装置１０４に転送される。採用可能な通信媒体は、結線で接続された媒体、取外し可能記憶媒体、ワイヤレス媒体、揮発性および不揮発性メモリベース媒体、ならびに、インターネットを含んでよい。他の通信媒体は、例えば、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、公衆インターネット、専用インターネット、専用コンピュータネットワーク、セキュアインターネット（ｓｅｃｕｒｅ　ｉｎｔｅｒｎｅｔ）、専用ネットワーク、公衆ネットワーク、付加価値ネットワーク、対話型テレビネットワーク、ワイヤレスデータ伝送ネットワーク、両方向ケーブルネットワーク、対話型キオスクネットワーク等を含んでよい。これに加えて、クライアント装置１０４は、アップデートパッケージ１１０を受け取って処理することが可能な様々なタイプの装置、例えば、コンピュータ、パーソナルディジタルアシスタント（ＰＤＡ）、有線電話、移動電話、ページャ、電子周辺装置、アプライアンス、および、アップデートパッケージを受け取るように構成されることが可能な他のこうした装置を含んでよい。
【００１９】
一側面では、命令セットが、既存の第１のコードバージョン１０６を第２のコードバージョン１０８に効率的に変換するためにクライアント装置１０４によって使用される変換プロセスを使用する。命令セットと変換プロセスの実行とについては、より詳細に後述する。
【００２０】
クライアント装置１０４がアップデートジェネレータ１０２からアップデートパッケージ１１０を安全かつ確実に得る少なくとも１つの方法が、上述の通信媒体タイプの少なくとも１つによるアップデートパッケージ１０２の形での情報の転送によって実現されることが可能である。クライアント装置１０４は、さらに、アップデートジェネレータ１０２と双方向に通信する能力を備えていてもよい。一実施形態では、クライアント装置１０４は、装置のタイプ、モデルおよび／または構成と、そのクライアント装置１０４によって現在使用されているオペレーショナルソフトウェアまたはアプリケーションのバージョンとを含む識別情報を転送する。アップデートジェネレータ１０２はクライアント装置１０４から所望の識別情報を受け取り、その次に、クライアント装置１０４によって必要とされおよび／または要求される所望のアップデートパッケージ１１０を生成する。あるいは、アップデートジェネレータ１０２は、複数のアップデートパッケージ１１０を生成して提供する能力を備えていてもよく、この複数のアップデートパッケージ１１０は、識別情報を受け取る前に、複数のオペレーショナルソフトウェアバージョンまたはアプリケーションを参照する。この実施形態では、アップデートジェネレータ１０２は、所望のアップデートパッケージ１１０ａのアーカイブされたバージョンをメモリすなわち記憶装置から取り出すことが可能である。さらに、アップデートジェネレータ１０２はバージョンマニフェスト（ｖｅｒｓｉｏｎ　ｍａｎｉｆｅｓｔ）を生成してよく、このバージョンマニフェストは、様々な個別のクライアント装置１０４に関するオペレーショナルソフトウェアバージョン情報を含むアーカイブされたアップデートパッケージ１０２のリストを含む。アップデートパッケージ１１０が生成され、妥当性検査され、使用可能であると見なされると、アップデートジェネレータ１０２はサーバとして機能し、要求されまたは必要とされる通りに所望のアップデートパッケージ１１０をクライアント装置１０４に転送することができる。オペレーショナルソフトウェアのアップデートされたバージョンが使用可能になるときに、１つまたは複数のアップデートパッケージ１１０が生成されてアーカイブされることが可能であるということが理解されるだろう。さらに、アップデートパッケージ１１０は、例えば不揮発性メモリコンポーネントまたは携帯用電子装置をアップデートするために必要とされることがあるハードウェアアップデートシステムのようなハードウェアアップデートシステムと共に使用するように用意されることが可能である。アップデート管理システムの１つの好ましい特徴が、ワイヤレスアップデート手順すなわちオーバー・ザ・エアー（ＯＴＡ）アップデート作業において使用するために容易に適合化できるということである。このアップデート方法は、ハードウェアの変更なしに、その装置のソフトウェアコンポーネントまたはファームウェアコンポーネントのアップデートを可能にする。本明細書で説明するアップデート方法は、さらに、アプリケーションとオペレーショナルファンクショナリティとオペレーティングシステムソフトウェア等とを含むクライアント装置をアップデートするためにも使用できる。さらに、このアップデート操作は、装置内に常駐している既存のコードによって誤りまたは問題を訂正し、新たな特徴またはファンクショナリティを追加し、常駐アプリケーションを変更または改変し、または、より詳細に後述する仕方で他の所望のアップデート操作を行うことが可能である。
【００２１】
一実施形態では、アップデートジェネレータ１０２は、アップデートパッケージ１１０の生成と配布の両方を行う役割をする単一の計算装置またはサーバコンポーネントを含む。アップデートジェネレータ１０２は、クライアント装置１０４のためのアップデートパッケージ１１０の命令セットを構成するために、専用ソフトウェアを実行するように備えられている。さらに、アップデートジェネレータ１０２は、第１のコードバージョン１０６を第２のコードバージョン１０８に対して比較することによってアップデートパッケージ１１０を生成する。アップデートパッケージ１１０が、第１のコードバージョン１０６を第２のコードバージョン１０８に変換する、命令セットの形に符号化された数学的演算と命令とを含むことが好ましい。アップデート管理システムの本質的特徴は、アップデートパッケージ１１０が、装置上に常駐している既存のコードまた情報を利用する形で生成されるということである。アップデートパッケージ生成のための方法は、第１のコードバージョン１０６を第２のコードバージョン１０８に変換することが可能であるときに、コードバージョン１０６、１０８の間の差を分析し、装置内の既存の情報シーケンスを使用するように特別に設計されている。この特徴は、従来の方法に比較してアップデートパッケージのサイズを著しく低減させるので重要である。一側面においては、アップデートパッケージ１１０７のファイルサイズは、第１のコードバージョン１０６と比較して９０パーセント以上も低減せしめられることが可能である。有利なことに、アップデートパッケージ１１０のサイズが比較的小さくコンパクトなので、アップデートパッケージ１１０は、クライアント装置１０４のメモリ割当てサイズと帯域との仕様を大きく変更することなしにクライアント装置１０４のメモリコンポーネント内に容易に転送され記憶されることが可能である。一側面では、アップデートジェネレータ１０２は、１つまたは複数の異なるタイプのクライアント装置１０４に対する配布のための複数のアップデートパッケージ１１０を生成してアーカイブする。その次に、各クライアント装置１０４は、サーバによって選択的に送られる所望のアップデートパッケージ１１０の転送を要求することができる。
【００２２】
図１Ｂは、アップデート配布システム１２０の別の実施形態を示す。このアップデート配布システム１２０は、アップデート配布システム１２０が、アップデートサーバアレイ１２２を含む別個の計算コンポーネントを伴う形で示されていることを除いて、図１Ａのアップデート配布システム１００に範囲とファンクショナリティとにおいて類似している。アップデート配布システム１２０は、アップデートジェネレータ１０２と、アップデートサーバアレイ１２２と、複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃとを含む。この特定の実施形態では、アップデートジェネレータ１０２は、複数のアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃを生成して、この複数のアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃをアップデートサーバアレイ１２２に転送するように示されている。さらに、その次に、アップデートサーバアレイ１２２は、複数のアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃを複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃに転送する。
【００２３】
一側面では、アップデートサーバアレイ１２２は１つまたは複数の計算装置を含み、これらの計算装置は、アップデートジェネレータ１００から転送される複数のアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃを記憶しアーカイブするように構成されることが可能である。記憶コンポーネントは、非限定的に、ハードドライブ、磁気テープ駆動装置、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、および、コンパクトディスクとフロッピーディスクと磁気テープとを含む取外し可能なＲＡＭおよび／またはＲＯＭベースの記憶媒体を含む。さらに、アップデートサーバアレイ１２２は、複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃと互いに独立してかつ双方向に通信する能力を備えていてもよく、アップデートサーバアレイ１２２は、装置のタイプとモデルと構成と、クライアント装置１０４ａ、１０４ｂ、１０４ｃで現在使用されているオペレーショナルソフトウェアまたはファームウェアのバージョンとを含む、識別情報を受け取る。さらに、クライアント装置１０４ａ、１０４ｂ、１０４ｃは、必要または所望に応じてアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃを要求することもできる。
【００２４】
一側面では、アップデートサーバアレイ１２２は、指定されたアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃの転送を求める要求と共に、個々のクライアント装置１０４ａ、１０４ｂ、１０４ｃからの識別情報を受け取る。この後で、アップデートサーバアレイ１２２は、要求されたアーカイブされているアップデートパッケージを発見し、その要求されたアップデートパッケージをクライアント装置に転送する。アップデートサーバアレイ１２２は、さらに、クライアント装置１０４からの要求なしにクライアント装置１０４に対してアップデートパッケージ１１０を自動的に転送することもできる。
【００２５】
有利なことに、アップデートサーバアレイ１２２は、アップデート配布の柔軟性と効率とを増大させるために上述の様々な通信媒体タイプの少なくとも１つを介して複数のアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃを複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃに対して転送することを調整することもできる。複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃの少なくとも１つから識別情報を受け取った後に、アップデートサーバアレイ１２２はメモリまたは記憶装置のアーカイブからアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃの所要のバージョンを取り出して、その次に所望のアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃを個々のクライアント装置１０４ａ、１０４ｂ、１０４ｃに転送する。一実施形態では、アップデートサーバアレイ１２２は、クライアント装置１０４ａ、１０４ｂ、１０４ｃからの要求なしに、自動的にアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃをクライアント装置１０４ａ、１０４ｂ、１０４ｃに転送することもできる。
【００２６】
あるいは、アップデートサーバアレイ１２２は、クライアント装置１０４ａ、１０４ｂ、１０４ｃのタイプと構成とモデルとに依存する様々な個々のクライアント装置１０４ａ、１０４ｂ、１０４ｃに属する、オペレーショナルソフトウェアのバージョン情報を含むアーカイブされたアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃのリストを含むサーバマニフェストを生成することも可能である。１つまたは複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃを認識すると、アップデートサーバアレイ１２２は、１つまたは複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃにサーバマニフェストを転送することが可能である。その次に、１つまたは複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃはそのマニフェストを評価し、要求している１つまたは複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃにアップデートサーバアレイ１２２から転送されるべきアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃに関する要求を送る。
【００２７】
別の側面では、アップデートパッケージ１１０は、上述の通信媒体の少なくとも１つを経由してアップデートジェネレータ１００からアップデートサーバアレイ１２２に送られることができ、このことが、１つまたは複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃに対するアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃの可用性の増大を促進する。一実施形態では、アップデートサーバアレイ１２２は、様々なクライアントベースの装置１０４ａ、１０４ｂ、１０４ｃのための複数のアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃを利便性が高い形で記憶することが可能なマルチプラットフォーム計算装置であり、および、各クライアント装置１０４ａ、１０４ｂ、１０４ｃとの通信を個別に確立する。アップデートサーバアレイ１２２は、１つまたは複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃによって必要とされる要求および／または所望されたアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃを判定するために、１つまたは複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃを認識することが可能である。例えば、アップデートパッケージ１１０はクライアント装置１０４に送られ、および、アップデートパッケージ１１０を復号することとアップデートおよび／または変換されるように設計および指定されているオペレーショナルソフトウェアコンポーネントを変更することとが可能なソフトウェアコンポーネントを使用することによって、クライアント装置１０４によってさらに処理されてもよい。クライアント側のアップデート処理の諸側面についてはさらに詳細に後述する。アップデートサーバアレイ１２２とアップデートジェネレータ１０２は、図１Ｂには別々の計算コンポーネントとして示されているが、アップデートサーバアレイ１２２とアップデートジェネレータ１０２の両方の役割を果たすために必要な適用範囲とファンクショナリティとを有する単一のエンティティを成してもよい。
【００２８】
別の実施形態では、アップデートサーバアレイ１２２のアップデート計算アーキテクチャは、コレクタ（ｃｏｌｌｅｃｔｏｒ）と呼ばれる追加のコンポーネントを含み、このコレクタは、アップデートジェネレータ１０２によって生成されるアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃの少なくとも１つを使用してアップデートされることが可能な他の装置のための情報およびアップデートを収集する。この特定の実施形態では、コレクタは、どのクライアント装置１０４ａ、１０４ｂ、１０４ｃがアップデート作業を要求しているかということと、アップデートが使用可能であるかどうかということとを判定するために、アップデートサーバアレイ１２２と１つまたは複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃとの両方と通信することが可能である。コレクタは、さらに、必要なアップデートを取得し、その時点で、または、その後の時点で、そのアップデートをクライアント装置１０４ａ、１０４ｂ、１０４ｃに配布することが可能である。このようにして、多数のクライアント装置１０４ａ、１０４ｂ、１０４ｃは、その後で、アップデートサーバアレイ１２２全体にわたって帯域要件を分散させるようにアップデートされることが可能である。さらに、アップデートパッケージ１１０は、サーバが多数のクライアント装置からの同時のアップデート要求によってオーバーランされないように、配布負荷をずらす（ｓｔａｇｇｅｒ）ために、互いに異なる時点において配布するようにスケジュール設定されてもよい。
【００２９】
一側面では、このアップデート配布方法は、ネットワークのトラフィックを低下させないように、１つまたは複数のサーバ上に情報をキャッシュすることを含む。この方法を使用することによって、「最新の」アップデートファイルがサーバ上に記憶されることが可能であり、および、アップデートパッケージが、サーバとアップデート記憶装置１３３またはアップデートジェネレータ１０２との間の追加の通信を必要とせずに直接的にクライアント／サーバ通信によって装置サーバからダウンロードされることが可能である。
【００３０】
図１Ｃは、アップデート配布システム１３０のさらに別の実施形態を示す。このアップデート配布システム１３０は、アップデートジェネレータ１０２と、複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃと、図１Ｂで以前に示したアップデートサーバアレイ１３２のコンポーネントバージョンとを含む。アップデートサーバアレイ１３２のコンポーネントバージョンは、さらに、管理コンポーネント１３４を有するアップデート記憶装置１３３と、少なくとも１つのアップデート装置サーバ１３６とを含む。一側面では、アップデート記憶装置１３３は、アップデートジェネレータ１０２から転送された複数のアップデートパッケージをアーカイブする。
【００３１】
様々な理由から、オペレーショナルソフトウェアシステムは、より旧いバージョンからより新しいバージョンへの周期的なアップデートを必要とする。さらに、オペレーショナルソフトウェアの多重アップデートされたバージョンが、計算技術の進歩に適応するという目的のためにクライアント装置の寿命全体にわたって必要とされるだろう。これらの要件を満たすために、アップデートジェネレータ１０２は、オペレーショナルシステムソフトウェアのより新しいバージョンが使用可能になるときにアップデートパッケージを生成し、その次に、メモリまたは記憶装置コンポーネント内に記憶してアーカイブするために、アップデート記憶装置１３３に複数のアップデートパッケージを転送する。
【００３２】
典型的なアプリケーションでは、アップデート管理システムが、セルラー電話すなわち移動電話のような携帯用電子装置のオーバー・ザ・エアでのアップデート作業に関連して使用されることも可能である。移動通信技術は、そのユーザのますます高まる欲求と期待とに答えるために急速に変化している分野である。移動電話は、さらに、一体化したオペレーショナルシステムソフトウェアを使用するマイクロコンピューティング装置（ｍｉｃｒｏ−ｃｏｍｐｕｔｉｎｇ　ｄｅｖｉｃｅ）でもある。このオペレーティングソフトウェアは、移動電話の寿命全体にわたって、ワイヤレス通信技術の変化に対する適合性を増大させるために、定期的なソフトウェアアップデートを必要とするだろう。製造エンティティの各々が独自のオペレーショナルソフトウェアシステムを有し、および、ユーザファンクショナリティが移動電話の様々な構成とモデルとの中に一体化されているので、移動通信産業におけるアップデートは、様々な異なる製造エンティティの存在のせいで面倒なものになっている。こうした状況では、アップデートジェネレータ１０２は、特定の製造業者の移動通信装置の構成およびモデルに関係するクライアント装置１０４ａ、１０４ｂ、１０４ｃに実装されているオペレーショナルソフトウェアのより新しいバージョンに関して適正なアップデートパッケージ１１０ａ、１１０ｂ、１１０ｃを生成することによって、業界の適応的な要求を満たすことが可能である。
【００３３】
クライアント側のアップデート決定
一側面において、クライアント装置１０４はアップデート記憶装置１３３と通信リンクを確立し、そのクライアント装置１０４のタイプとモデルと構成と、そのクライアント装置で現在使用されているコードバージョンとを含む識別情報を転送する。アップデート記憶装置１３３は、クライアントに対してサーバマニフェストを転送することによって応答する。上述したように、サーバマニフェストは、使用可能なアップデートパッケージを記述するバージョン情報を含む。さらに、サーバマニフェストは、アップデートパッケージを受け取ってアンパック（ｕｎｐａｃｋ）するのに十分な空間がクライアント記憶領域内で使用可能であるかどうかをクライアントが判定することが可能であるように、ファイルサイズのようなアップデートパッケージの特徴を記述してよい。クライアント装置１０４内で発見された実装コードバージョンに対して、サーバマニフェストに記述されている使用可能なコードバージョンを比較した後で、さらに、適切なアップデートパッケージ１１０を求める要求がクライアント装置１０４によって送られることが可能である。この要求の受け取り後に、アップデート記憶装置１３３は、旧いコードバージョンを要求されているより新しいコードバージョンに適正に変換するための正しい命令セットに対応する所望のアップデートパッケージ１１０を参照して探索する。もう１つの側面では、アップデート記憶装置１３３は要求発信を受け取り、アップデート管理コンポーネント１３４がその要求発信を処理し、アップデート記憶装置１３３またはアップデート装置サーバ１３６上の所望のアップデートパッケージ１１０を発見する。その特定のアップデートパッケージ１１０が発見されると直ぐに、アップデート管理コンポーネント１３４が所望のアップデートパッケージ１１０を参照し、その所望のアップデートパッケージ１１０をクライアント装置１０４に転送するためにクライアント装置１０４との通信リンクを確立するように、アップデート装置サーバ１３６に命令する。
【００３４】
サーバ側のアップデート判定
別の実施形態では、クライアント装置１０４はアップデート装置サーバ１３６との通信リンクを確立し、そのクライアント装置１０４のタイプ、モデルおよび／または構成と、そのクライアント装置１０４で現在使用されているオペレーショナルシステムソフトウェアのバージョンとを含む識別情報を転送する。アップデート装置サーバ１３６ａは識別情報を分析し、サーバマニフェストを検査し、または、アップデートパッケージ１１０の存在に関してアップデート記憶装置１３３に問い合わせる。サーバマニフェストまたはアップデート記憶装置１３３上のオペレーショナルソフトウェアの使用可能なバージョンを、クライアント装置１０４によって転送されたオペレーショナルソフトウェアの実装バージョンと比較した後に、アップデート記憶装置１３３は、アップデートパッケージ１１０をクライアント装置１０４に対して転送することを命令する。
【００３５】
一側面では、アップデートパッケージ１１０は、要求に応じて、クライアント装置１０４に対する配布のためにアップデート記憶装置１３３から１つまたは複数のアップデート装置サーバ１３６に転送される。この場合には、１つまたは複数のアップデート装置サーバ１３６は、アップデート記憶装置１３３によって要求される通りにアップデートパッケージ１１０をクライアントに転送するゲートウェイとして働く。１つまたは複数のアップデート装置サーバ１３６の使用が好ましいことに負荷の平均化を改善し、および、同じアップデートパッケージプロバイダに接続されている多数のクライアント装置１０４を有することによって強いられる帯域の制限を低減させる。
【００３６】
一側面では、クライアント装置１０４によって要求されているかまたは必要とされていると判定される特定のアップデートパッケージ１１０がアップデート記憶装置１３３内で得られない場合には、アップデート管理コンポーネント１３４がその特定のアップデートパッケージ１１０を生成するためにアップデートジェネレータ１０２に対して要求を転送することができる。アップデートパッケージ１００が生成されると、アップデートジェネレータ１０２は、記憶および要求サービスのためにアップデートパッケージ１１０をアップデート記憶装置１３３に転送する。アップデート記憶装置１３３のメモリエリアすなわち記憶領域内にアップデートパッケージ１１０を保存した後に、アップデート管理コンポーネント１３４は所望のアップデートパッケージ１１０をアップデート装置サーバ１３６に転送することができる。その次に、アップデート装置サーバ１３６はクライアント装置１０４ｂとの通信を確立して、要求されたアップデートパッケージをクライアント装置１０４に転送することができる。
【００３７】
図１Ｄは、アップデート配布システム１４０のさらに別の実施形態を示す。このアップデート配布システム１４０は、アップデートジェネレータ１０２と、複数のクライアント装置１０４ａ、１０４ｂ、１０４ｃ、１０４ｄ、１０４ｅ、１０４ｆ、１０４ｇ、１０４ｈ、１０４ｉと、図１Ｃに示されている通りのアップデートサーバアレイ１２２に適用範囲とファンクショナリティとにおいて類似しているアップデートサーバアレイ１４２のコンポーネントバージョンの別の実施形態とを含む。アップデートサーバアレイ１４２は、アップデート管理コンポーネント１３２を含むアップデート記憶装置１３３と、複数のアップデート装置サーバ１３６ａ、１３６ｂ、１３６ｃとを含む。複数のアップデート装置サーバ１３６ａ、１３６ｂ、１３６ｃは、クライアント装置１０４ａ−１０４ｉとの通信リンクを確立することが可能であり、および、バージョンまたはマニフェスト情報を送信または受信するためにクライアント装置１０４ａ−１０４ｉと双方向に通信することができる。この実施形態は、アップデート記憶装置１３３のアップデート管理コンポーネント１３４が、複数のアップデート装置サーバ１３６ａ、１３６ｂ、１３６ｃのアクティビティを通信して調整し、および、アーカイブされた複数のアップデートパッケージを複数のアップデート装置サーバ１３６ａ、１３６ｂ、１３６ｃに転送することを命令することが可能である。有利であることに、この実施形態は、インターネットまたはワイヤレスローカルエリアネットワーク（ＷＬＡＮ）のような１つまたは複数のハードワイヤードまたはワイヤレスの通信媒体を経由して多量のアップデートパッケージ１０４を配布するためのアップデート配布システム１００、１２０、１３０、１４０の柔軟性と有効性と効率とを示す。アップデート配布システム１４０のこの実施形態は、好ましいことに、複数の異なるクライアントサービスのためのアップデート要件を処理することが可能である。さらに、アップデート配布システム１４０は、情報とアップデートパッケージをクライアント装置と交換するために複数の異なる通信手段を使用することが可能である。
【００３８】
図２Ａは、クライアント装置とアップデート配布システム１４０との間の通信を詳述するアップデート問い合わせ／検索／インストレーションプロセスすなわちアップデートインストレーションプロセス２００の概観を示す。アップデートインストレーションプロセス２００は開始状態２０２で開始し、その次に状態２０４に進み、この状態２０４では、クライアント装置１０４がアップデート装置サーバ１３６との通信リンクを確立する。その次に、アップデートインストレーションプロセス２００は状態２０６に進み、この状態２０６では、クライアント装置１０４はサーバマニフェストに関してアップデート装置サーバ１３６をポーリングする。一実施形態では、サーバマニフェストはアップデート記憶装置１３３からアップデート装置サーバ１３６に転送されてよく、または、アップデート装置サーバ１３６は、参照を容易にするために実装メモリまたは記憶装置コンポーネント内にそのサーバマニフェストを保持してもよい。一側面では、ポーリングされるサーバマニフェストは、アップデートされるべきソフトウェアやファイルシステムやハードウェアの最新の使用可能バージョンを判定するために使用される情報を含む。さらに、サーバマニフェストは、使用可能なアップデートが、クライアント装置１０４内に存在する既存のファイルやソフトウェアコンポーネントやファームウェアと異なっているかどうかを判定するために使用される、アップデートパッケージのサイズおよび他の変数を記述する情報を含んでもよい。ポーリングされるサーバマニフェストは、さらに、新たなコードバージョンの特徴を識別するアップデートシグネチャ（ｕｐｄａｔｅ　ｓｉｇｎａｔｕｒｅ）を含んでもよい。
【００３９】
サーバマニフェストがクライアント装置１０４に転送されてそのクライアント装置１０４によって取得されると、アップデートインストレーションプロセスが状態２０８に進み、この状態２０８では、クライアント装置１０４がサーバマニフェスト中のアップデートシグネチャをそのクライアント装置１０４上に存在する既存のオペレーショナルソフトウェアのアップデートシグネチャと比較する。アップデートパッケージ１０４がアップデート装置サーバ１３６からダウンロードされてクライアント装置１０４上にインストールされるべきであるかどうかを状態２１０において判定するために、比較プロセスがクライアント装置１０４によって使用されることが可能である。この比較が完了した後に、アップデートインストレーションプロセス２００は状態２１０に進む。クライアント装置１０４がオペレーショナルソフトウェアのアップデートバージョンが状態２１０で求められていないか必要とされていないか要求されていないと判定する場合には、アップデートインストレーションプロセス２００は終了状態２２０で終了し、および、その次のスケジュール設定された起動またはユーザによって指示された起動まで非活動状態のままであってよい。
【００４０】
あるいは、クライアント装置１０４がオペレーショナルソフトウェアのアップデートバージョンが状態２１０で要求されていると判定する場合には、クライアント装置１０４は状態２１２でアップデート装置サーバ１３６からアップデートパッケージ１１０を要求する。状態２１２において、アップデート装置サーバ１３６がアップデートパッケージ１１０に関する要求をアップデート記憶装置１３３に転送し、アップデート記憶装置１３３では、アップデート管理コンポーネント１３４が所望のアップデートパッケージ１１０の使用可能なバージョンを求めてアップデート記憶装置１３３を探索する。さらに、所望のアップデートパッケージ１１０のアーカイブされたバージョンが存在すると判定されかつ使用可能である場合には、所望のアップデートパッケージ１１０がアップデート記憶装置１３３のアーカイバルメモリ領域または記憶領域から検索されて、必要に応じてアップデート装置サーバ１３６に転送される。その後で、アップデート装置サーバ１３６は所望のアップデートパッケージ１１０をクライアント装置１０４に転送する。状態２１４では、クライアント装置１０４はアップデートパッケージ１１０を受け取り、アップデートインストレーションプロセスは状態２１６に進み、この状態２１６では、クライアント装置１０４がアップデートパッケージ１１０を後でインストールする。インストレーション操作の諸側面についてはさらに詳細に後述する。
【００４１】
別の実施形態では、状態２１４において、アップデート管理コンポーネント１３４が、所望のアップデートパッケージ１１０のアーカイブされたバージョンが存在しないかまたは使用不可能であると判定する場合に、そのアップデート管理コンポーネント１３４は、アップデートジェネレータ１０２によって生成されるべき所望のアップデートパッケージ１１０を求める要求を送信する。アップデートインストレーションプロセス２００のこの時点では、クライアント装置は、所望のアップデートパッケージ１１０が使用可能になるのを待機することができる。クライアント装置１０４が待機している間に、アップデートジェネレータ１０２は所望のアップデートパッケージ１１０を生じさせ、そのアップデートパッケージ１１０をアップデート記憶装置１３３に転送する。アップデートパッケージ１１０が使用可能である場合には、クライアント装置１０４は、状態２１６における後続のインストレーションのために所望のアップデートパッケージ１１０を受け取る。インストレーション操作２１６についてはより詳細に後述する。
【００４２】
一側面においては、所望のアップデートパッケージ１１０を検索してインストールした後に、アップデートインストレーションプロセス２００は終了状態２１８で終了する。ファイルまたはソフトウェアコンポーネントの所望のバージョンにアップデートして開発者の仕様にしたがって他の機能を実行した後に、クライアント装置１０４は、他のファイルまたはオペレーショナルソフトウェアコンポーネントに適用されることが好ましくは可能な追加のアップデートに関する調査に進むことが可能である。こうして、アップデートインストレーションプロセス２００は、追加のアップデートの問い合わせのために必要または所望される通りに周期的に繰り返されることが可能である。アップデートシーケンスの典型的な一例では、ソフトウェアコンポーネントがバージョン１からバージョン２に適切にアップデートされ終わっている場合には、アップデートインストレーションプロセス２００はアップデート記憶装置１３３からの追加のバージョン（すなわち、バージョン３）の使用可能性を調査し、ソフトウェアコンポーネントのファイルが使用可能な最も新しいバージョンにアップデートされ終わるまで、これらのインクリメンタルなアップデートを検索してインストールすることを進める。
【００４３】
あるいは、別の実施形態では、アップデートインストレーションプロセス２００は多数の使用可能なアップデート（バージョン）の存在を認識し、および、使用可能な各々のアップデートパッケージを逐次的に適用することなしに、使用可能な最も新しいバージョンを使用してファイルまたはコンポーネントをアップデートする（すなわち、バージョン１が直接的にバージョン３にアップデートされる）ことに取りかかることが可能である。特定のファイルまたはソフトウェアコンポーネントのアップデートサイクルの完了後に、アップデートインストレーションプロセス２００は、他のファイルまたはソフトウェアコンポーネントがアップデートを必要としているかどうかを判定することができる。さらに別のアップデートが、全ファイルがアップデートされ終わるまでアップデートシグネチャ状態２０８の比較から始めて上述のように処理されてもよく、および、クライアント装置１０４はその動作を終了状態２１６で完了し、アップデートインストレーションプロセス２００の次の起動まで非活動状態のままであってよい。クライアント装置１０４は自動的にアップデートを問い合わせて検索するように構成されてもよく、または、アップデートプロセスは、ユーザによって起動される機能であってもよい。
【００４４】
上述のアップデートインストレーションプロセス２００は、本発明の範囲から逸脱することなしに、１つまたは複数のアップデート装置サーバを経由して１つまたは複数のクライアント装置に同時および／または別々に適用されることが可能であるということが理解できるだろう。さらに、上述のアップデートインストレーションプロセス２００は、図２Ａまたは図２Ｂに関連して説明した通りのステップの類似のシーケンスを使用して、アップデート配布システム１００、１２０、１３０、１４０の上述の実施形態のいずれにも適用されることが可能である。
【００４５】
一側面では、アップデートコンポーネント１０２が自動的に動作するようにスケジュール設定されている場合には、このアップデートコンポーネント１０２は、その次のスケジュール設定された動作までバックグラウンドで稼働状態のままであってもよく、または、あるいは、アップデートインストレーションプロセス２００が起動されることが好ましい時点において起動されてもよい。アップデートインストレーションプロセス２００を含むアクティビティは、さらに、開発者の選好に応じてユーザに対して可視でも透過でもよい。さらに、状態２０６におけるサーバマニフェストのポーリングと、状態２０８におけるファイルの既存バージョンとアップデート装置サーバ１３２上での使用可能な最新バージョンとの間の差の識別というプロセスの後に、クライアント装置１０４は、アップデートが使用可能であることをユーザに通知して、そのアップデートを検索する許可を待機してもよく、または、あるいは、クライアント装置は、（ユーザに対する通知を伴うかまたは伴わずに）所望のアップデートパッケージを自動的に検索するように構成されてもよい。
【００４６】
図２Ｂは、図１Ａと図１Ｄに示されている上述のアップデート配布システムと共に使用できるアップデートインストレーションプロセス２５０の別の実施形態を示す。アップデートインストレーションプロセス２５０は開始状態２５２で開始し、その次に状態２５４に進み、この状態２５４ではクライアント装置１０４はアップデート装置サーバ１３６との通信リンクを確立する。その次に、アップデートインストレーションプロセス２５０は状態２５６に進み、この状態２５６では、アップデート装置サーバ１３６がクライアント装置１０４からのアップデート情報問合せを要求する。アップデート情報問合せは、装置のタイプとモデルと構成と、クライアント装置１０４によって現在使用されているオペレーショナルソフトウェアのバージョンとのような識別情報を含む。一実施形態では、この識別情報は通信リンクの確立後にクライアント装置１０４からアップデート装置サーバ１３６に自動的に転送されることが可能である。さらに、アップデート情報問合せは、新たなコードバージョン中の特定のファイルまたはアップデートコンポーネントの特徴を識別するアップデートシグネチャも含んでよい。
【００４７】
アップデート情報問合せがクライアント装置１０４に転送されて、そのクライアント装置によって取得されると、クライアント装置１０４は、そのクライアント装置１０４に対する問合せの中の要求されたアップデート情報を転送することによって応答する。その次に、アップデートインストレーションプロセス２５０は状態２５８に進み、この状態２５８ではクライアント装置１０４がアップデート情報問合せを受け取り、および、新たなコードバージョンのアップデートシグネチャを、クライアント装置１０４によって現在使用されている既存コードバージョンのアップデートシグネチャと比較することによって、そのアップデート情報問合せを処理する。比較プロセスが、アップデートパッケージ１０４がアップデート記憶装置１３３から転送されてクライアント装置１０４上にインストールされるべきかどうかを状態２５８において判定するために、クライアント装置１０４によって使用されることが可能である。この比較が完了した後に、アップデートインストレーションプロセス２５０は状態２６０に進み、この状態２６０ではアップデートクライアント装置１０４がアップデート情報応答からアップデートパッケージ１１０の使用可能性を判定する。より新しいコードバージョンがアップデート記憶装置１３３内で使用可能ではない場合には、アップデートインストレーションプロセス２５０は終了状態２８０で終了し、および、その次のスケジュール設定された起動またはユーザによって指示された起動が生じるまで、非活動状態のままであることが可能である。
【００４８】
あるいは、状態２６０において、クライアント装置１０４が、アップデートされたコードバージョンがアップデート記憶装置１３３内で使用可能であるということをアップデート情報応答から判定する場合には、クライアント装置１０４は、さらに、状態２６２において、そのクライアント装置１０４がアップデートパッケージ１１０を記憶するために使用可能な十分なメモリを有するかどうかをアップデート情報問合せから判定することが可能である。クライアント装置１０４が、アップデートパッケージ１１０のために十分なメモリ空間すなわち記憶空間がクライアント装置１０４内で使用可能であると判定する場合には、アップデート装置サーバ１３６は状態２６４においてクライアントアップデート要求を処理する。その次に、アップデート装置サーバ１３６は、状態２６６においてアップデートパッケージ１１０をクライアント装置１０４に転送する。アップデートパッケージ１１０を受け取った後に、アップデートインストレーションプロセスは状態２６８に進み、この状態２６８では、クライアント装置１０４はアップデートパッケージ１１０をインストールする。その次に、アップデートインストレーションプロセス２５０は、別のアップデート要求が行われるまで、終了状態２８０で終了せしめられる。さらに、アップデートパッケージインストレーションプロシージャの詳細を、図１０との関連において後述する。
【００４９】
あるいは、状態２６２において、クライアント装置１０４が、アップデートパッケージ１１０を収容するのに十分なメモリ空間すなわち記憶空間がクライアント装置１０４内で使用可能でないかまたは割り当てられていないと判定する場合には、クライアント装置１０４は、状態２７０において、割当てプロシージャを行うように要求を送り、この割当てプロシージャでは追加のメモリ空間すなわち記憶空間がアップデートパッケージ１１０のダウンロード転送を可能にするように解放される。一実施形態では、アップデートパッケージ１０４のダウンロード転送のための空間を割り当てるために、クライアント装置１０４は、第１のデータ領域（すなわち、ＲＡＭ）内に記憶されている現在ファイルを第２のデータ領域（すなわち、実装されたフラッシュメモリ）に書き込むことが可能である。あるいは、クライアント装置１０４は、より大きな空間をアップデートパッケージのために使用可能にするように、第１のデータ領域内に記憶されているファイルを圧縮してもよい。さらにメモリを割り当てるために、クライアント装置１０４は、アップデートパッケージ１１０がインストールされるまで一時的に記憶するように、アップデート装置サーバ１３６にファイルを転送することも可能である。上述のメモリ割当て方式の組合せが、アップデートパッケージ１１０を受け取るのに十分な空間を生じさせるために使用されることが可能であることが理解できるだろう。さらに、他のメモリ割当て方式が本発明の範囲からの逸脱なしに使用できる。
【００５０】
クライアント装置１０４が状態２７０でメモリ空間割当てを完了すると、アップデートインストレーションプロセス２５０は状態２７２に進み、この状態２７２では、ダウンロード転送に十分なメモリ空間がクライアント装置１０４で使用可能にされる場合に、アップデートインストレーションプロセスは、後続のアップデート要求のための状態２６４と、アップデート転送および受け取り２６６と、アップデートインストレーション２６８とに進む。そうでない場合には、アップデートパッケージ１１０のダウンロード転送を可能にするのに十分な空間がクライアント装置１０４上に割り当てられていないというアップデート装置サーバ１３６による判定のために、アップデートインストレーションプロセスは終了状態２８０で終了する。一実施形態では、アップデート装置サーバ１３６は、クライアント装置１０４のメモリ空間の制限に適応するために、アップデートパッケージ１１０を区分してクライアント装置に１０４に送ることも可能である。クライアント装置１０４上の限られた量の使用可能なメモリ空間を使用してアップデートプロセスを完了するために、これらの区分された断片が逐次的に使用される。
【００５１】
一実施形態では、インストレーションプロシージャは、クライアント装置１０４によるアップデートパッケージ１１０の完全性の認証および妥当性検査を行う。その後で、アップデートパッケージ１１０はクライアント装置１０４上の不揮発性メモリまたは記憶装置に保存され、クライアント装置１０４は必要に応じて再起動される。その次に、アップデートパッケージ１１０が解凍され、アップデートのインストレーションを開始させるために命令セットが実行される。上述のインストレーションプロシージャが本発明の範囲から逸脱せずに変更または再構成されることが可能であるということを理解されたい。
【００５２】
一実施形態では、アップデートパッケージ１１０がアップデートサーバアレイ１２２、１３２、１４２に対して使用可能にされ、それに続いて、アップデートジェネレータ１０２とその関連のプロセスとの使用によって、要求を行っているクライアント装置１０４に対して使用可能にされる。図３は、アップデートパッケージ１１０を形成するために使用されるアップデート作成プロセス３００を示す。アップデート作成プロセス３００は、アップデートジェネレータ１０２に関連した構成パラメータと、より新しいコードバージョンにアップデートされることが好ましい既存のコードバージョン中に存在する情報とを使用する。アップデート作成プロセス３００は開始状態３０２で開始して状態３０４に進み、この状態３０４では、現在のコードバージョンを含む既存のファイルが開かれる。現在のコードバージョンは、アップデートされるべき電子装置内に収容されている情報の表現であるファイルまたはイメージを含む。一側面では、現在のコードバージョンは、イメージファイルの形で識別され記憶されている、電子装置内に記憶されているバイナリコードすなわち符号化情報を反映する。例えば、移動電話の場合には、現在のコードバージョンは、アップデートされるべきメモリ領域または記憶領域の内容を反映するだろう。メモリ領域または記憶領域の内容は、さらに、オペレーティングシステムコード、アプリケーションコード、ファームウェア内容、または、ファンクショナリティを伝達するためにその電子装置によって使用される他の命令セットを含んでよい。
【００５３】
アップデート管理システムおよび方法の１つの重要な特徴が、アップデートプロセスがコードインデペンデントな仕方で働くということである。アップデートは、アップデートされるべきメモリ領域または記憶領域のイメージすなわちシミュレートされた表現を使用して生成される。アップデート操作は命令レベルで機能する必要はなく、むしろ高レベル（すなわち、ファイルレベル）または（命令を含む情報が２進法、１６進法、または、他の同様の形式で表現される）より低いレベルで機能することが可能である。したがって、アップデートプロセスは、指定されたワードシーケンスまたはワードパターンを含むディジタル情報シーケンスに基づいて現在コードバージョンを認識する。一側面では、作業（ｗｏｒｋ）のサイズすなわち長さが、第２のワードシーケンスによって表現される所望のコードバージョンに対して後で比較されるビット、バイト、命令、ファイル、または、他の情報シーケンスとして柔軟に定義されることが可能であり、２つのシーケンスの間の差が識別される。したがって、アップデートプロセスは、所望のコードバージョンを得るためにどの命令が置き換えられる必要があるかを判定することといった特定の慣行には必ずしも限定されず、むしろ、既存のコードバージョンを所望のコードバージョンに変換するためにはどのワードシーケンスが変化せしめられなければならないかということに限定される。
【００５４】
現在コードバージョンのイメージを開いた後に続いて、アップデートジェネレータ１０２は、状態３０６での使用のためにそのイメージから１組のディジタル情報シーケンスをコンパイルする。アップデートパッケージ１１０を生成する際には、ディジタル情報シーケンスの組が、所望の第２のコードバージョン１０８を表現するイメージを生成するために使用されることが可能である。このディジタル情報シーケンスの組が命令セットの生成とその後で行われる既存コードバージョンの新たなコードバージョンへの変更とにおいてどのように使用されるかに関する詳細については、図５と図６を参照しながらより詳細に説明する。
【００５５】
状態３０６では、アップデートジェネレータ１０２は、ハッシュテーブルを構築するために使用されることになるディジタル情報シーケンスを求めて探索することによって、既存イメージを前処理する。このハッシュテーブルは、後続のルックアップと検索とのためにデータ構造内に格納されている第１のコードバージョン中の特定のディジタルシーケンスのアドレスを含む複数のハッシュ値を含む。ハッシュ値は既存イメージ中のディジタル情報シーケンスに対応し、このディジタル情報シーケンスはより新しいコードバージョンを構築するために使用されることが可能である。一側面では、ハッシュアレイが既存のコードバージョンから形成され、その既存のコードバージョン中のディジタル情報シーケンスのストリングを識別する。ハッシュアレイに関するより詳細な説明は、図４との関連において後述する。
【００５６】
状態３０６において既存コードバージョンからハッシュアレイ３３０を構築した後に、アップデート作成プロセス３００は状態３０８に進み、この状態３０８では、第１のコードバージョンを第２のコードバージョンに変換するのに使用される命令を記憶するために使用される新しいファイルが開かれる。この新しいファイルは、最終的には、アップデート作業が要求されるかまたは必要とされるときにクライアントに転送するためにサーバに対して使用可能にされるアップデートパッケージ１１０となる。その次に、アップデート作成プロセス３００は状態３１０に進み、この状態３１０ではアップデートパッケージ１１０が生成される。より詳細に後述するように、命令セットが、適切な仕方で実行されるときに既存コードバージョンをアップデートされたコードバージョンに効率的に変換する操作や命令やパラメータやディジタル情報シーケンスを識別する複数のシーケンス識別および変換機能を使用して形成される。この状態３１０中には、既存コードバージョンを新しいコードバージョンに変換するために、既存コードバージョンの情報構成およびシーケンスが評価され、および、命令が識別される。
【００５７】
状態３１０におけるコードバージョンの分析と命令セットの生成の完了後に、アップデート作成プロセス３００は状態３１２に進み、この状態３１２では、生成された命令セットが、アップデート命令セットの内容に対する不正なアクセスを防止する一定の機密保護を実現するために符号化されることが可能である。これに加えて、この命令セットは、さらに、結果的に生じるアップデートパッケージ１１０の全体サイズを縮小させるために、ＬＺＷ圧縮のような様々な圧縮方式を使用することによって圧縮されてもよい。その次に、この圧縮／符号化された命令セットは状態３１４においてアップデートパッケージ１１０としてあり、および、記憶されたヘッダ情報を含んでよく、このヘッダ情報は、アップデートパッケージ１１０の内容を妥当性検査して、そのアップデートバージョンを識別するために、および／または、同様の機能を果たすために使用される。アップデートパッケージ１１０は、さらに、状態３１４において、複数のアップデート装置サーバ１３６ａ、１３６ｂ、１３６ｃに転送されることが可能であり、この状態３１４では、アップデートパッケージ１１０が発行されて、ダウンロードのために複数のクライアント装置１０４ａ−１０４ｉにアクセス可能にされる。アップデートパッケージ１１０を保存／発行した後に、アップデート作成プロセス３００は終了状態３１６において終了する。
【００５８】
図４は、図３に関連付けて上述したハッシュアレイ３３０の一実施形態を示す。ハッシュアレイ３３０は、複数のディジタル情報シーケンスすなわちワード３６０−３６６の位置に対応する１つまたは複数のアドレス３５０−３５６を記憶し参照するために使用される、複数のハッシュ値３４０−３４３を含む。一側面では、このディジタル情報シーケンスすなわちワードは、既知の長さすなわちサイズを有するワードを含む。ワード３６０−３６６の各々は、さらに、１つまたは複数のビット、バイト、または、他の認識可能な情報量子を含んでよい。アップデートプロセスで使用されるワード長は必ずしも固定している必要がなく、および、その代わりに、アップデート管理システムによってまたは電子装置に情報が記憶されている仕方によって決定される通りに、柔軟に割り当てられることが可能である。
【００５９】
一側面では、ハッシュ値３４０−３４３が計算されるワード３６０−３６６の長さは、電子装置のアーキテクチャによって認識される長さであるように選択される。これらのハッシュ値３４０−３４３はハッシュアレイ３３０内に記憶され、および、アップデートされたコードバージョンで必要とされる所望のワードが現在コードイメージから得られることが可能であるかどうかを判定するために、アップデートジェネレータによって使用される。一側面では、ハッシュ値３４０−３４３の作成に使用されるワード３６０−３６６の長さは、１つまたは複数のビット、バイト、または、一般的に使用される他の情報量子を含む個別のワード長を有するように選択される。しかし、他のワード長がハッシュ値３４０−３４３の生成において容易に使用されることが可能であるということが理解されるだろう。
【００６０】
ハッシュ値３４０−３４３の決定のために既知のワード長を使用することによって、アップデートジェネレータは、新しいコードバージョンの形成においてコピーされ使用されることが可能な既存のコードバージョンの中に見いだされることが可能なワードの要約またはデータベースを作成することが可能である。ハッシュテーブルの実装と、アップデートパッケージ１１０の生成におけるハッシュテーブルの使用とについては、図６Ａ−６Ｈにおいてさらに詳細に後述する。一側面においては、ハッシュアレイ３３０のハッシュ値は、新しいコードバージョンの構築に使用可能な情報のストリングを好ましくは含むと識別されている特定のシーケンスに関する開始アドレスを参照することによって、ワードを含むワードを参照するために使用される。
【００６１】
アドレス３５０−３５６は、アップデートプロセス中に使用される既存のコードバージョンを参照する命令を形成するためにアップデートジェネレータ１０２によって参照される計算されたハッシュ値３４０−３４３としてハッシュアレイ３３０のデータ構造の中に保存される。一側面では、ハッシュアレイ３３０を形成するときに、アップデートジェネレータ１０２は、特有のシーケンス、頻繁に遭遇するシーケンス、および／または、再構築が困難なシーケンスのような独特なまたは好ましいディジタルシーケンス特徴を含む特定のワードにハッシュ値を割り当てる。一実施形態では、ハッシュアレイ３３０の基本機能は、ターゲットシーケンス（例えば、アップデートされたコードバージョンに必要なシーケンス）とソースシーケンス（例えば、既存のコードバージョンに現在発見されるシーケンス）との間の「同一な」ワードを効率的に発見することである。ハッシュアレイ３３０は、さらに、既存のコードバージョン内の「同一の」ワードが、アップデートされたコードバージョン中で「リサイクル」すなわち「再使用」されることが可能であるように、このワードに関する開始アドレスを発見するために使用される。こうして、コード内にすでに存在すると識別されているワードはアップデートパッケージ内に含まれる必要はなく、むしろ、その代わりに、１つまたは複数の命令が、アップデートされたコード内の新たなロケーションに既存のワード情報を検索および／またはコピーするために使用されることが可能である。使用される命令は、それが識別する対応シーケンスよりも通常は小さいので、この特徴はアップデートパッケージ１１０の所要サイズを著しく減少させる。ハッシュ値２４０−３４３の各々が、１つまたは複数のロケーションに同一のワードを発生させるために何回もアクセスされることが可能であり、および、所要のワードを効率的に生成するために必要に応じて使用されることが可能である。
【００６２】
ハッシュアレイ３３０の好ましい特徴の１つは、このハッシュアレイが、既存のコードバージョン中に存在する使用可能なディジタル情報シーケンスすなわちワードの「ディクショナリ」として働くということである。アップデートジェネレータは、これらのコードシーケンスすなわちワードを再構成してコピーすることによって新たなコードバージョンを生じさせるために、このコードシーケンスすなわちワードを使用する。コードをこのように「再使用する」ことによって、典型的にはコードのコピーと再構成のための命令がリテラル（ｌｉｔｅｒａｌ）なコードシーケンスすなわちワードよりも著しく小さいので、好ましいことにアップデートパッケージのサイズが縮小される。したがって、単一の命令が、多数のビットまたはバイトからなる情報と同等であるコードを生じさせることが可能だろう。
【００６３】
図４に示されているハッシュアレイ３３０では、アドレス「ａ」が、ビットシーケンス「１１００１０」に対応するワード３６０が以前のコードバージョン中に発見されることが可能であるアドレスに対応する。コードジェネレータは、ハッシュアレイ３３０内のこのインデックス３４０に好ましくはアクセスする命令を指定することができ、および、さらに、このロケーションにおけるワードからコピーされるべき情報の長さを指定することができる。例えば、アドレス「ａ」におけるワードから得られることが可能なビットシーケンスが「１」、「１１」、「１１０」、「１１００」、「１１００１」、「１１００１０」等を含む。同様に、アドレス「ｂ」のワードが、「１」、「１０」、「１０１」、「１０１０」、「１０１００」、「１０１０００」、「１０１０００１」、「１０１０００１１」等を含むビットシーケンスを生成するために使用されることが可能である。
【００６４】
新しいコードバージョンで使用されることが可能な、既存のコードバージョン中のワードすなわちシーケンスを識別することによって、好ましいことに、アップデートパッケージ１１０内に含まれなければならない情報の量が最小限にされる。上述したように、一例として示されている各々のワードに対応するシーケンスは、その代わりに、１つまたは複数のビット、バイト、ファイル、または、他の認識されるサイズおよび長さの情報を含む他の情報量子を表現することが可能である。したがって、こうした他の情報の構成が同様の仕方（すなわち、ビット単位のアドレス指定、バイト単位のアドレス指定、ファイル単位のアドレス指定等）でアドレス指定されることが可能であるということが理解できるだろう。
【００６５】
別の側面では、ビットシーケンスまたはバイトシーケンスを含むことが可能な１つまたは複数のワードが、様々なアドレスに位置している情報をリンクさせることによって形成されることが可能である。例えば、ハッシュ値３４２が、特定の作業（ｗｏｒｋ）３６２−３６４に各々のアドレスが関連付けられているリンクしたアドレス「ｄ」、「ｋ」、「ｓ」に対応する。上述した仕方に類似した仕方で、各アドレスからの各々のワードの可変部分が、さらに別のワードパターンの組合せを生じさせるために互いに連結されることが可能である。一側面では、特定のハッシュ値のアドレスが、リンクしたリストデータ構造を使用して関連付けられる。アドレスの関連付けは、ハッシュ値３４２に関して示されているような、論理的に近接して位置している情報を連結するために使用されることが可能であり、および、さらには、ハッシュ値３４３によって示されるような、別々に構成されている情報を関連付けることもできる。このハッシュ値３４３は、アドレス「ｈ」、「ｗ」に位置している情報の組合せから生じるディジタル情報シーケンスを形成するために好ましくは関連付けられているメモリエリアすなわち記憶領域の異なるセクションに位置していることがあるワード３６５、３６６のそれぞれに関するアドレス「ｈ」、「ｗ」を含む。さらに、ハッシュ値３４３は、メモリエリアすなわち記憶領域の連続した列番号すなわちバンク番号が所望の情報シーケンスを生成する形で決定されるように形成されてもよい。例えば、第１のバンク番号がハッシュ値３４３中の第１のアドレスに対応し、第２のバンク番号が第２のバンクアドレスに対応し、および、以下同様の対応関係が生じることが可能である。アドレス情報の連結が、新しいコードバージョンを形成するために使用されることが可能な多数の採用可能な情報シーケンスを発生させるように、複数のアドレスを使用することによって様々な組合せの形で適用されてもよいということが理解されるだろう。メモリすなわち記憶バンクの構成と、ハッシュ値３４０−３４３を使用することによる命令セットの形成および構成と、既存コードを使用することによる所望のディジタル情報シーケンスの結果的な生成とについての追加の詳細な説明を、さらに詳細に後述する。
【００６６】
図５は、命令セット生成プロセス４００の一実施形態を示し、この命令セット生成プロセス４００は、第１のコードバージョンを第２のコードバージョンに変換するために使用される命令セットを生じさせるためにアップデートジェネレータ１０２によって使用される。一側面では、このプロセス４００は、アップデートパッケージ１１０で使用するために命令が選択される仕方を機能的に記述する。このプロセス４００は、さらに、効率的な仕方でコード変換またはバージョンアップデートを行う複数の命令を識別する。一側面では、命令セット生成シーケンス４００は、コード変換を行うために使用されることが可能な多数の命令組合せを評価し、および、好ましくは、アップデートパッケージ１１０に含まれていなければならない情報の量を減少させる命令組合せを識別する。このことは、一方では、アップデートパッケージ１１０のサイズを縮小させ、アップデートパッケージ１１０を送るために必要とされる伝送時間を減少させる。コードに適用されることが可能な特殊化された命令と組み合わせて、可能な場合には既存のコードシーケンスを使用することによって、好ましくは、以前のコードバージョンが、アップデートパッケージ１１０内に含まれていなければならない情報の量をさらに減少させる仕方で新しいコードバージョンに変換される。
【００６７】
命令セット生成シーケンス４００は開始状態４０２で開始し、その次に状態４０４に進み、この状態４０４では、アップデートジェネレータ１０２が、既存のファイルすなわちコードバージョンの先頭に対応するポインタを初期化する。このポインタは、ディジタル情報シーケンス分析が何時完了するかを判定するためにシーケンス分析機能によって使用されることが可能な基準位置を維持する。一側面では、ディジタル情報シーケンス分析は、対応する命令タイプを分析するために各々が使用される複数の比較機能を含む。これらの命令は、既存シーケンス命令と、ランレングス命令と、ハッシュ命令と、デフォルト命令とを含んでよい。しかし、上述の命令とその対応する比較機能とが、命令セット生成シーケンスで使用されることが可能な多くの使用可能な命令の中の幾つかであり、および、他の命令が案出されて、アップデート管理システムおよび方法と共に使用されてもよいということが理解されるだろう。
【００６８】
状態４０６では、比較機能が、ポインタが示すロケーションに対応するコードに対して適用され、および、判定が、その比較機能に関係付けられた命令の各々を使用してどれだけ多くの新しいコードが生成されることが可能であるかに関して行われる。一側面では、比較機能が、特定のコードフラグメントを表現するための別個の方法を提供するために命令を使用する。幾つかの事例では、ある１つの命令が、コード構成に応じて、別の命令よりも優れた性能を示すだろう。例えば、ポインタのロケーションにおける既存のコードバージョン中に存在する特定のコードシーケンスに基づいて、既存のシーケンスが、情報の３ワードと、情報のランレングス機能５ワードと、情報のハッシュシーケンス機能８ワードとを翻訳することが可能であることがある。状態４０８では、このプロセスが、比較機能のどれがその他の比較機能に比べて最善の特徴を示すかを識別する。典型的には、最善の結果が、単一の命令または一群の命令を使用して最大のコードシーケンスを生成する比較機能として識別される。上述の例の場合には、ハッシュシーケンス機能が最長のワード表現（８ワード）を示し、ハッシュシーケンス機能に比較してより少ないコードを翻訳するその他の比較機能よりも優先的に選択されるだろう。当然のことながら、他のコードシーケンスに関しては、その他の比較機能の中の１つが、より好ましいだろうし、および、その他の比較機能よりも大きなコードセクションを翻訳する能力を有するだろう。
【００６９】
状態４０８において比較機能から「最善の結果」を選択した後に、プロセス４００は状態４１０に進み、この状態４１０では、識別された比較が効率的な結果を生じさせるか否かに関する判定が行われる。一側面では、効率が、単一の命令によって表現されることが可能なコードの量の関数として測定される。効率の閾値が、リテラルストリングを直接的にアップデートパッケージ１１０の中に組み込むことを含むデフォルト命令機能に比べて、識別された「最善の結果」が効率において少なくとも同等であるかまたは上回っていることを確実にするために使用される。識別された最善の結果をもたらす機能がデフォルト命令よりも効率的である場合には、比較機能によって符号化された情報シーケンスに関する命令コーディングがアップデートパッケージ１１０の中に組み込まれ、状態４１２において、コードが比較機能によって翻訳された後に、ポインタが情報の第１のセクションにアップデートされる。そうでなく、デフォルト命令がその「最善の結果」機能よりも効率が高いと判定される場合には、このデフォルト命令が状態４１４でアップデートパッケージ１１０の中に組み込まれ、状態４１２において同様にポインタがアップデートされる。
【００７０】
状態４１２におけるポインタのアップデートの後に、プロセス４００は、状態４１６において、ポインタがファイル終端に達しているかどうかを判定する。ポインタがファイル終端に達していない場合には、このプロセスは状態４０６に進み、この状態４０６では、シーケンス分析がその次のコードセクションに対して始まり、アップデートされたポインタ位置を基準として使用して必要に応じて反復されることが可能である。このようにして、ファイル全体が、比較機能が適切に実行されて最も効率の高い命令が選択されるので、ポインタを漸進的に増分することによって「ステップスルー（ｓｔｅｐ　ｔｈｒｏｕｇｈ）」される。ファイル終端に達すると、命令セット生成プロセス４００は状態４０８に進み、状態４０８では、このプロセスが終了し、先行ステップで判定された選択された命令を含むアップデートパッケージ１１０がパッケージ化されて、配布のための準備が整えられる。
【００７１】
上述したように、ディジタル情報シーケンス機能は、図１の第１のバージョン１０６のようなより旧いコードバージョン中の先在のディジタル情報シーケンスを、図１の第２のバージョン１０８のようなより新しいコードバージョン中のアップデートされたディジタル情報シーケンスにアップデートすなわち変更する。一実施形態では、命令セット生成シーケンス４００は、コードバージョンをアップデートするための他の方法を提供することによって、変換効率の増大のために追加の命令を使用してもよい。開示されている比較機能の各々の詳細については、図６Ａと図６Ｄとに関連付けてさらに詳細に説明する。後述の説明とその関連の図面では、異なるワード長に相当する典型的なビットシーケンスおよびバイトシーケンスが示されている。これらの例が、アップデート管理システムおよび方法と共に使用できるワード長およびワードサイズの多くの採用可能な具体例の中の幾つかを示すにすぎないということを理解されたい。
【００７２】
図６Ａは、上述の命令セット生成プロセス４００と共に使用できるランレングス符号化（ｒｕｎ　ｌｅｎｇｔｈ　ｅｎｃｏｄｉｎｇ）（ＲＬＥ）命令５００の一実施形態を示す。この図に示されているように、第１のコードバージョン１０６からのディジタル情報シーケンスを表している第１のワードシーケンス５０２と、第２のコードバージョン１０８からのディジタル情報シーケンスを表している第２のワードシーケンス５０４とがある。第２のコードバージョン１０８の特定の位置で開始する第２のワードシーケンス５０４が、値「Ｗ１」のような特定のワード５０６の連続を含むとアップデートジェネレータ１０２によって判定されるときには、所望のディジタル情報シーケンスを生成するために、ＲＬＥ命令５００が特定のワード長（Ｎ）５０８（この場合には、Ｎ＝６）に関して使用されることが可能である。このワード長は、異なる値による中断なしに逐次的に反復されるワードコンポーネントの量である。ＲＬＥ命令を使用することによって、反復されるワードパターンが、単一の命令を使用して容易に再構成されることが可能である。この命令は、好ましいことに、第２のコードバージョン内に表現される対応する数のワードに比較して、アップデートパッケージ内でより少ない空間を占める。ＲＬＥ命令５００は、さらに、第１のコードバージョン中の特定のワードシーケンスが第２のコードバージョンを形成するようにオーバーライトまたは変更されることを指定するために使用されることも可能である。こうして、例示されている実施形態に示されているように、第１のコードバージョン内のワードパターン「Ｗ１，Ｗ２，Ｗ３，Ｗ４，Ｗ５，Ｗ６」は、ワードパターン「Ｗ１，Ｗ１，Ｗ１，Ｗ１，Ｗ１，Ｗ１」を形成するために、第１のコードバージョン内でオーバーライトされることが可能である。あるいは、既存のワードパターンの一部分だけが、連続したワードパターンによって新たなコードバージョン内でオーバーライトされてもよく、または、連続したワードパターンが既存のワードパターンに連結されてもよい。さらに、１つまたは複数のワードコンポーネントが、ＲＬＥ命令５００で指定されたワード長５０８ａによって指定されてもよく、したがって、「Ｗ１」、「Ｗ１，Ｗ１」、「Ｗ１，Ｗ１，Ｗ１」、「Ｗ１，Ｗ１，Ｗ１，Ｗ１」等を含むワードパターンが、異なるワード長パラメータを有するＲＬＥ命令を使用して生成されることが可能である。
【００７３】
一側面では、第１のコードバージョン１０６からのディジタル情報シーケンスの同一の特定の位置で開始する第１のワードシーケンス５０２が、第２のコードバージョン中の同等の長さの反復するワードシーケンスによって置き換えられる。上述の別の方法、ＲＬＥ命令５００は、ファイルコード内の特定の位置で開始するワード単位の反復するディジタル情報シーケンスを識別し、単一の命令を使用して既存のディジタル情報シーケンスを置き換える。さらに、ＲＬＥ命令５００が、図５の状態４０８で説明した通りに「最善の」結果を得ると後で判定される場合には、反復するワード単位のシーケンス５０４に関するＲＬＥ命令５００は、ワードの所望の反復回数５０８のような他のパラメータと共に命令リスト内に記憶される。命令リストは、シーケンス分析によって識別される一連の命令と、アップデートパッケージ１１０を使用することによって、第１のコードバージョンを第２のコードバージョンに変換するのに必要とされる命令セット生成機能４００とを表す。
【００７４】
ＲＬＥ命令５００を使用する利点の１つは、ディジタル情報シーケンス中のワード単位のコンポーネントの連続ストリングが単一の命令によってより新しいコードバージョン中に容易に配置されることが可能であるということである。ＲＬＥ命令５００を使用することの別の利点は、この命令が、所望のディジタル情報シーケンスを生成するために使用されることになる第２のワードシーケンス５０４の連続したワード単位のストリングの反復性のせいで、実行が比較的容易であるということである。
【００７５】
図６Ｂは、第１のコードバージョン１０６からのディジタル情報シーケンスを表す第１のワードシーケンス５１２と、第２のコードバージョン１０８からのディジタル情報シーケンスを表す第２のワードシーケンス５１４とが示されている、既存シーケンス（ＥＸＳ）すなわち複製命令５１０の一実施形態を示す。第１のコードバージョン１０６からのディジタル情報シーケンスの特定の位置で始まる第１のワードシーケンス５１２が、第２のコードバージョン１０８からのディジタル情報シーケンスの同一の特定の位置で始まる第２のワードシーケンス５１４と同じであるかまたは実質的に同一である場合には、ＥＸＳ命令５１０が、その類似性を反映するために特定のワード長（Ｎ）５１８（例えば、この場合にはＮ＝４）に関して使用されることが可能である。ＲＬＥ命令５００に関して上述したように、ＥＸＳ命令５１０が、好ましくは第１のコードバージョンと第２のコードバージョンとの間の類似性の度合いを判定するために使用されるワード長パラメータ５１８を含む。
【００７６】
一側面では、ＥＸＳ命令５１０は、コードのバージョン間で不変のままである既存のワードシーケンスを識別するためにアップデートジェネレータ１０２によって使用され、したがって、アップデートプロセス中にアップデートすなわち変更される必要がない。さらに、アップデートジェネレータ１０２が、既存シーケンス命令がディジタル情報シーケンス分析において「最善の」結果を得るということを判定した場合には、ＥＸＳ命令５１０は、指定されたワード長５１８ａと共に、ディジタル情報シーケンスの反復回数のような他のパラメータと共に命令リスト内に組み込まれることが可能である。ＥＸＳ命令５１０を使用することの利点の１つは、不変のままである先在のワード単位のディジタル情報シーケンスが識別されることが可能であるということと、単一の小さな命令が、冗長なまたは不必要なコードを組み込むことなしに、類似性を反映するためにアップデートパッケージ１１０の中に組み込まれることが可能であるということである。
【００７７】
図６Ｃは、アドレスまたはハッシュ（ＨＳＨ）命令５２０からのコピーの一実施形態を示す。第１のコードバージョン１０６からのディジタル情報シーケンスを表している第１のワードシーケンス５２２と、第２のコードバージョン１０８からのディジタル情報シーケンスを表している第２のワードシーケンス５２４とが例として示されている。オペレーショナルソフトウェアコードの第１のバージョン１０６からのアドレス５２６（この場合には、アドレス「ｂ」）におけるディジタル情報シーケンスの特定の位置で始まる第１のワードシーケンス５２２が、オペレーショナルソフトウェアコードの第２のバージョン１０８からのディジタル情報シーケンスの異なる位置で始まる第２のワードシーケンス５２４と同一であるかまたは実質的に同一である場合には、ＨＳＨ命令５２０が、アップデートパッケージのディジタル情報シーケンスを反映するために、指定されたワード長（Ｎ）５２８（この場合には、Ｎ＝６）に関して使用されることが可能である。
【００７８】
一側面では、ハッシュシーケンス機能が、固定長のディジタル情報シーケンスに関するハッシュ値を計算することによってワードを発見する。その次に、ハッシュ値がハッシュテーブル値と比較される。算出されたハッシュ値の値が記憶されているハッシュテーブル値の値と一致する場合には、記憶されているハッシュテーブル値に対応するディジタル情報シーケンスに関する開始アドレスが得られる。この一致が生じた場合には、指定されたアドレスにおけるワードのより詳細な調査が、使用可能なワードの最大長さを求めるために行われる。ハッシュテーブルが、算出されたハッシュ値に一致する２つ以上の記憶されているハッシュ値を含む場合には、各々の可能性が評価されて、最長の一致すなわち最も効率が高い一致が結果として使用されることが可能である。
【００７９】
ＨＳＨ命令５２０はハッシュシーケンス機能を含み、このハッシュシーケンス機能では、アップデートジェネレータ１０２は、ハッシュテーブルデータ構造内で発見された算出ハッシュ値に対応するディジタルシーケンス一致を判定するために、ハッシュテーブル３３０内に記憶されているアドレスによって参照される既存のワードシーケンスを使用する。例えば、アップデートジェネレータ１０２が、ハッシュシーケンス機能がディジタル情報シーケンス分析の「最善の」結果を得ると判定する場合には、ＨＳＨ命令５２０が、指定されたアドレスロケーション５２６と指定されたワード長５２８と共に、ディジタル情報シーケンスの反復回数のような他のパラメータと共に命令リストに組み込まれる。ＨＳＨ命令５２０を使用することの利点の１つは、先在のワード単位のディジタル情報シーケンスが、使用可能なワードのディクショナリとしてハッシュテーブル３３０が働く既存コード中で識別されることが可能であるということである。したがって、ＨＳＨ命令５２０は、このアップデートパッケージ１１０内にコードシーケンスまたはワードを直接的に含むのではなく、新規の仕方でこのコードシーケンスまたはワードをリサイクルするアップデート生成プロセスの能力を反映する。ＨＳＨ命令５２０を使用することの別の利点は、この命令５２０が、ハッシュテーブル内で参照されるアドレスによって反映される様々なコードセクションを組み合わせることによって、コードの大きなセクションを生じさせるために使用できるということである。例えば、図６Ｃに示したように、好ましいことに、第２のコードバージョン中のワードシーケンス「Ｗ３，Ｗ４，Ｗ５，Ｗ６，Ｗ７，Ｗ８，Ｗ９，Ｗ１０」が、アドレス「ｂ」において第１のコードバージョン中で識別されることが可能である。ＨＳＨ命令５２０はこのアドレスを基準として使用し、このロケーションに存在するコードを第２のコードバージョン内の所望のロケーションにコピーする。この操作を行うための命令は、好ましいことに、そのアドレスによって参照されるリテラルストリングを組み込むことよりもサイズ的に小さい。したがって、命令「ＨＳＨ　ｂ，Ｎ」は、アドレス「ｂ」に位置しておりかつ値Ｎ（ストリング「Ｗ３，Ｗ４，Ｗ５，Ｗ６，Ｗ７，Ｗ８，Ｗ９，Ｗ１０」をコピーする例では、Ｎ＝８）によって指定された長さを有するストリングの内容全体をコピーするために使用されることが可能である。
【００８０】
図６Ｄはデフォルト（ＤＥＦ）命令５３２の一実施形態を示す。上述したように、どの他の命令も所望のディジタル情報シーケンスを効率的に表現できないということが発見される場合には、ＤＥＦ命令５３２が命令セット生成プロセス４００によって適用される。ＤＥＦ命令５３２は、オペレーショナルソフトウェアコードの第１のバージョン１０６からのディジタル情報シーケンスを、ＤＥＦ命令に関連付けられているストリングまたは他の情報シーケンスのリテラルな内容で置き換えるために使用される。言い換えると、ＤＥＦ命令５３０は、第１のコードバージョン１０６のファイルコード中の先在のディジタル情報シーケンスに一致せず、かつ、他の命令を使用して効率的に再構成されることが不可能である、ディジタル情報シーケンスのワード単位のパターンを識別する。ＤＥＦ機能５３０がディジタル情報シーケンス分析の「最善の」結果すなわち最も効率的な結果を得ると判定される場合には、パターン化されたワード単位のシーケンス５３４に関するＤＥＦ命令５３０が、インサートされるべきストリングすなわち情報シーケンスのリテラルな内容と共に命令リストの中に組み込まれる。こうして、命令「ＤＥＦ　Ｗ１５，Ｗ１６，Ｗ１７，Ｗ１８，Ｗ１９，Ｗ２０」が、「Ｗ１５，Ｗ１６，Ｗ１７，Ｗ１８，Ｗ１９，Ｗ２０」というリテラルな内容を所望のロケーションにコピーするために使用されることが可能である。ＤＥＦ命令５３０を使用することの利点の１つは、ディジタル情報シーケンス中のワード単位のコンポーネントの実在しないストリングが、アップデートパッケージ１１０に組み込まれることが好ましい単一の命令と共に、より新しいコードバージョンの中に容易にインサートされることが可能だということである。
【００８１】
図７は、再構成されたディジタル情報シーケンス５５０の一実施形態を示し、この実施形態では、再構成されたシーケンス５５０は、そのシーケンス５５０の一部分を生じさせるために使用される複数の命令を含む命令セット５５２を使用して得られることが可能である。この例示してある実施形態では、再構成されたシーケンス５５０はワード単位の命令を使用して生成される。第１の命令セット５５２を実行するプロセスは、所望のワードシーケンス５５０を生成するために命令５００、５１０、５２０、５３０を逐次的に適用することを含む。命令セットの命令の段階的実行の後に、ＲＬＥ命令５００がアップデートファイル中に第１のビットシーケンスを生成し、このビットシーケンスはランレングス符号化ビットシーケンス５０４に相当する。ＲＬＥ命令５００は、入力パラメータに基づいてビットシーケンス「Ｗ１，Ｗ１，Ｗ１，Ｗ１，Ｗ１，Ｗ１，Ｗ１」を生成する。その次の命令に進むと、ＥＸＳ命令５１０が第２のビットシーケンスを生成し、この第２のビットシーケンスは複製ビットシーケンス５１４「Ｗ１，Ｗ２，Ｗ３，Ｗ４」に対応する。ＥＸＳ命令は、指定された領域内のどんなビットもコピーまたは変更しないが、先在のワードパターンを識別してこのシーケンスをそっくりそのまま残す。後続のＨＳＨ命令５２０は第３のワードシーケンスを生成し、この第３のワードシーケンスは、指定アドレス「ｂ」からの複製されたワードシーケンス５２４「Ｗ３，Ｗ４，Ｗ５，Ｗ６，Ｗ７，Ｗ８，Ｗ９，Ｗ１０」に対応する。最後に、ＤＥＦ命令５３０が第４のワードシーケンスを生成し、この第４のワードシーケンスは、追加されたワードシーケンス５３４「Ｗ１５，Ｗ１６，Ｗ１７，Ｗ１８，Ｗ１９，Ｗ２０」に対応する。上述したように、ＤＥＦ命令は、既存のコードバージョン中に発見されないかまたは上述の比較機能を使用して効率的に構成されることが不可能なワードシーケンスの中に１つまたは複数のワードパターンを挿入するために使用されることが可能である。しかし、例示している再構成されたワード単位のシーケンス５５０は命令セット５５２の実行の一例にすぎない。命令セット５５２は、既存のコードバージョンを所望のコードバージョンに変換するために使用できる様々な組合せの形で１つまたは複数の命令５００、５１０、５２０、５３０を含んでもよい。所望のコードバージョンを表現するために命令セットを生成することの利点の１つは、アップデートパッケージ１１０が、従来の差分法から得られるリテラルなディジタル情報シーケンスだけによって構成されているアップデートパッケージに比較して相対的に小さいということである。この結果として、相対的に小さいアップデートパッケージイメージを通信媒体を経由して転送することは、従来の方法で使用されるより大きいリテラルなアップデートパッケージを転送することよりも効率が高い。
【００８２】
図８Ａは、アップデート管理システムと共に使用されるべき携帯用電子装置のためのメモリアーキテクチャまたは記憶装置アーキテクチャ１０００の一実施形態を示す。このアーキテクチャは、アップデート管理システムおよび方法を使用して好ましくはアップデートされることになっている移動電話、パーソナルディジタルアシスタント、ページャ、または、他の装置を含む多くの従来の電子装置を代表する。
【００８３】
一側面では、アーキテクチャ１０００は、不揮発性メモリエリアすなわち記憶領域１００２と揮発性メモリエリアすなわち記憶領域１００４とを含む。不揮発性領域１００２は半永久的な状態で情報を記憶するために電子装置によって使用され、この電子装置は、この領域１００２内に記憶されている情報の損失なしに電源切断またはターンオフされることが可能である。不揮発性領域１００２は、さらに、コードセクション１００６とデータセクション１００８とを含むように論理的に区分されてもよい。コードセクション１００６は、装置動作のためのファンクショナリティを提供するシステムオペレーティングソフトウェアコードまたはファームウェアコードのような情報を記憶する働きをする。データセクション１００８は、必要に応じて再書込みまたは変更されることが可能な非本質的なまたはユーザ由来の情報または他の情報を必要に応じて記憶することが好ましい。典型的な移動電話では、データセクション１００８は、電子装置の電源切断による損失なしに必要または所要に応じて検索できるように保存されている電話番号、住所、または、個人的メモを含む情報を収容することができる。
【００８４】
コードセクション１００６とデータセクション１００８の両方は、それらの中に格納されている既存のコードを変更するために、アップデートプロセス全体にわたってアクセスされ書き込まれることが可能である。データセクション１００８は、さらに、アップデートパッケージ１１０のコピーがクライアントによって受け取られるときにそのアップデートパッケージのコピーを記憶するためにアップデートプロセス中に使用されてよいメモリ空間すなわち記憶空間の領域も提供する。さらに、データセクション１００８は、アップデート操作が中断される場合に一定の度合いの誤り許容力を提供するために、アップデート中に情報を記憶することもできる。アップデートプロセスの誤り許容力の側面については、図９と図１０とに関連付けてより詳細に後述する。
【００８５】
不揮発性メモリエリアすなわち記憶領域は別々のコードセクションとデータセクションとを有するものとして示されているが、本明細書で示すアップデート方法は他のメモリ構成または記憶装置構成に容易に適合化されることが可能であるということが理解されるだろう。例えば、不揮発性記憶領域１００２は、不揮発的に情報を記憶するために使用されることが可能なディスクドライブやオプティカルドライブや他の装置インプリメンテーションのようなハードウェア記憶装置を含んでよい。さらに、不揮発性のメモリエリアの場合には、メモリ構成が、アップデート管理システムおよび方法と共に使用されるように別々のコードセクションとデータセクションとに論理的に区分されることは必要ない。上述のメモリエリアすなわち記憶領域の構成が、本発明と共に使用するように適合化されることが可能なアーキテクチャの１つの具体例だけを表しているにすぎず、および、他のメモリエリアすなわち記憶領域のアーキテクチャと構成とが当業者によって同様の仕方で容易に適合化されることが可能であるということが想定されている。
【００８６】
一側面では、電子装置のアーキテクチャが、不揮発性メモリエリアすなわち記憶領域１００２が複数の記憶バンク１０１０に区分または論理的に分割されることを指定する。各々の記憶バンク１０１０は記憶領域の別々の量またはサイズを表しており、固有のアドレス１０１２に関連付けられることが可能である。アドレス１０１２を基準として使用することによって、記憶バンク１０１０は個々に参照されることができ、その中に格納されている内容が、電子装置のオペレーティングシステムまたはファームウェアによって決定される通りに読み書きされることが可能である。あるいは、記憶バンク１０１０の内容は、その内容自体を参照することによってアドレス１０１２とは無関係にアクセスされてもよく、この場合に、バンク１０１０の内容は、不揮発性メモリエリアすなわち記憶領域１００２内での現在ロケーションを求めるための基準として使用される。記憶バンク１０１０は、事前定義された仕方で記憶バンク１０１０を逐次的に参照するバンクアドレス１０１２によって、連続的な形で構成されている。例えば、図８Ａに示してあるように、不揮発性メモリ記憶装置１００２の記憶バンク１０１０は６４キロバイト（Ｋ）の共通サイズが割り当てられている。記憶バンク１０１０は、さらに、ＢＡＮＫ　０内に記憶されている記憶セクション１００２の最初の６４Ｋと、ＢＡＮＫ　１内に記憶されている記憶セクションの第２の６４Ｋ等々によって連続的な形で構成されている。さらに、「０Ａ」のブロックアドレス１０１２は不揮発性メモリ記憶装置１００２のＢＡＮＫ　０に関連付けられており、「０Ｂ」はＢＡＮＫ　１に関連付けられており、その他も同様である。
【００８７】
記憶バンク１０１０の区分と構成が装置毎に異なっているということと、６４Ｋバンク１０１０を有する不揮発性領域１００２に関連して説明したアップデート管理のためのシステムおよび方法が他の構成にも容易に適用可能であるということが、当業者によって理解されるだろう。例えば、記憶バンクのサイズは装置毎に異なっていてもよく、または、より大きな使用可能なメモリエリアすなわち記憶領域が使用可能であってもよい。このシステムおよび方法が、様々な異なるタイプの電子装置のためのメモリ素子または記憶素子のアーキテクチャ１０００によって定義される記憶領域の様々な特徴と組合せとに容易に適合化されることが可能であると考えられている。
【００８８】
別の側面では、電子装置の揮発性メモリエリアすなわち記憶領域１００４は、単一の連続したバンクすなわち記憶セクションとして構成されている。揮発性メモリエリアすなわち記憶領域１００４内の領域は個別にアクセスされることが可能であり、および、その領域内に含まれる空間が必要または所望に応じてフレキシブルに割り当てられることが可能である。不揮発性メモリエリアすなわち記憶領域１００２と同様に、アドレス情報がメモリ１００４の特定のセクションを参照するために使用されてもよいが、しかし、バンクによって定義される不揮発性メモリの幾分か固定された構造が固守される必要はない。
【００８９】
上述のメモリエリアすなわち記憶領域のバンクが同一のバンクサイズだけで構成される必要はないということが理解されるだろう。この代わりに、各バンクが、電子装置内の他のバンクに対してサイズ的に異なっていてもよい。さらに、バンクは物理的または論理的に互いに連続している必要はなく、および、物理的ではなく論理的なアドレス指定方式を使用してアドレス指定されてもよい。一側面では、パーソナルコンピュータまたは他の計算装置のファイルまたは内容が、例えば、ファイルが中に格納されている論理的アドレス指定方式を有するハードドライブを使用するときのように、論理的な仕方でアドレス指定されてもよい。
【００９０】
本明細書で説明するメモリ構成は多くの従来の移動電話またはセルラー電話の記憶装置アーキテクチャを表しているが。本明細書に示すシステムおよび方法が適用されることが可能なメモリエリアすなわち記憶領域のアーキテクチャまたは割当てには様々な変形があるということが当業者によって理解されるだろう。他のメモリ構成が、不揮発性および揮発性メモリだけでなくハードドライブ、オプティカルメディア等のような他の記憶装置も含む、パーソナルディジタルアシスタント、コンピュータ、人工衛星、および、テレマティック装置（ｔｅｌｅｍａｔｉｃ　ｄｅｖｉｃｅ）のような他の電子装置に関して存在してもよい。さらに、メモリのアーキテクチャおよび割当て方式は装置毎に様々であってよいが、しかし、本明細書で説明するシステムおよび方法は、本発明の他の実施形態を表すこれらの別の構成と共に動作するように容易に適合化されることが可能である。
【００９１】
一実施形態では、不揮発性メモリエリアすなわち記憶領域１００２は、電源切断、中断、および、装置故障のような事象にも係わらず好ましくは情報を保全する様々なタイプまたは構成の記憶空間を含むだろう。適切な不揮発性メモリエリアすなわち記憶領域として機能するように適合化できる典型的なコンポーネントは、ハードドライブ、オプティカルドライブ、ＣＤライタ、ＤＶＤライタ、テープドライブ、フラッシュメモリ装置、および、ＥＰＲＯＭ装置を含むことが可能である。同様に、不揮発性メモリエリアすなわち記憶領域１００４は、ランダムアクセスメモリ（ＲＡＭ）または他の揮発性メモリタイプを含んでもよい。あるいは、不揮発性メモリエリアすなわち記憶領域が、揮発性メモリエリアすなわち記憶領域の代わりに使用され、同様のファンクショナリティを実現することが可能である。したがって、上述の不揮発性メモリまたは記憶装置は、本発明の範囲からの逸脱なしに揮発性メモリエリアすなわち記憶領域１００４と同じ仕方で動作するように適合化されることが可能である。
【００９２】
図８Ｂは、アップデートパッケージ１１０を処理してアップデート機能を行うために使用されるダウンロードエージェント１０２０とアップデートエージェント１０２５とを含む不揮発性領域１００２の一実施形態を示す。一般的に、ダウンロードエージェント１０２０は、アップデートパッケージ１１０を取得することに関連した機能を果たし、一方、アップデートエージェント１０２５は、アップデートプロセスの完了時に第１のオリジナルのコードバージョンが第２のアップデートされたコードバージョンに変換されるように不揮発性メモリエリアすなわち記憶領域１００２のコードセクション１００６とデータセクション１００８との両方の内容を好ましくは変更するために、アップデートパッケージ１１０内に含まれている命令を適用する働きをする。
【００９３】
アップデートエージェント１０２５は、不揮発性領域１００２のコードセクション１００６のブートセクターまたはブートセクション内に好ましくは格納されている組込み機能コンポーネントを含む。電子装置のルーチン動作中は、アップデートエージェント１０２５は非活動状態のままであってよく、その電子装置のオペレーティングシステムが、その電子装置を制御する機能呼出しとコマンド操作とを行うことを可能にする。しかし、アップデートプロセスが起動されるときには、アップデートエージェント１０２５が電子装置の制御を行い、アップデートパッケージ１１０をインストールすることに関連した特定の操作を行うことが可能である。一側面では、アップデートエージェント１０２５は、好ましくは、アップデートをインストールするために必要な機能を果たすことに最適化され専用化されているサービスセットを有する特殊化されたアプリケーションとして維持される。この仕方でアップデートエージェント１０２５を設計する場合には、アップデートエージェント１０２５のサイズが、好ましくは、そのアップデートエージェントが不揮発性領域１００２内で占有する空間の量を減少させるように低減せしめられる。
【００９４】
アップデートエージェント１０２５は、第１のオリジナルのコードバージョンを第２のアップデートされたコードバージョンに変換するのに必要な操作を行うアップデートパッケージ１１０中に含まれている命令を処理または実行する役割を果たす。アップデートエージェント１０２５は、さらに、アップデートプロセスに関連した特定の操作を行うために使用される１つまたは複数のファンクショナリティを処理することが可能である。例えば、アップデートエージェント１０２５は、アップデートパッケージ１１０の命令を既存のコードバージョンに適用するための主要なファンクショナリティを含んでもよい。さらに、アップデートエージェント１０２５は、アップデートパッケージ管理に関連したクライアント操作を行うためのファンクショナリティを含んでもよい。一側面では、アップデートエージェント１０２５は、ストリング処理またはデータ処理、メモリ管理、および、アップデートプロセスのアクティビティを調整するために使用される他の操作を行ってもよい。別の側面では、アップデートエージェント１０２５は、アップデートプロセス中に使用される１つまたは複数の装置ドライバを含む。アップデートエージェント１０２５は、さらに、アップデートプロセスを管理するために必要とされる機能論理を含んでもよく、および、アップデートパッケージ１１０の命令を実行するために必要とされる組込みオペレーティングシステムによっては提供されない機能を含んでもよい。さらに、アップデートエージェント１０２５は、アップデートパッケージ１１０を受け取るのに十分な記憶空間をデータセクション内に生じさせるようにデータセクション内のデータを圧縮するために使用される様々な操作を行うファンクショナリティを含んでもよい。最後に、アップデートエージェント１０２５は、圧縮／解凍、暗号化／暗号解読、および／または、アップデートパッケージ１１０の内容の妥当性検査のような、アップデートパッケージ１１０を準備するために使用されるファンクショナリティを含んでもよい。
【００９５】
ダウンロードエージェント１０２０は、アップデートサーバと通信することと、使用可能なアップデートパッケージ１１０を検索することとに関連した操作を行う役割を果たす。アップデートエージェント１０２５と同様に、ダウンロードエージェント１０２５は、アップデートパッケージ検索プロセスに関連した特定の操作を行うために使用される１つまたは複数のファンクショナリティを含んでもよい。例えば、ダウンロードエージェント１０２０は、使用可能なアップデートパッケージ１１０を含んでおりおよびダウンロードプロセス中に使用される必要なハンドシェーキングおよび誤り訂正ルーチンも提供する、サーバと通信するためのファンクショナリティを含んでもよい。さらに、ダウンロードエージェント１０２０は、ダウンロードプロセス中にアップデートパッケージ管理に関連したクライアント操作を行うためのファンクショナリティを含んでもよい。一側面では、ダウンロードエージェント１０２０は、ストリング処理またはデータ処理、メモリ管理、および、アップデートプロセスのアクティビティを調整するために使用される他の操作を行ってもよい。別の側面では、ダウンロードエージェント１０２０は、アップデートパッケージのダウンロードプロセス中に使用される１つまたは複数の装置ドライバを含む。ダウンロードエージェント１０２０は、さらに、ダウンロードプロセスを管理するために必要とされる基本的な機能論理を含んでもよく、および、サーバとの通信を確立して所望のアップデートパッケージ１１０を検索するために必要とされる、組込みオペレーティングシステムによっては提供されない機能を含んでもよい。さらに、ダウンロードエージェント１０２０は、アップデートパッケージ１１０を受け取るのに十分な記憶空間を生じさせるように不揮発性および揮発性メモリエリアすなわち記憶領域１００２、１００４内のデータを圧縮または再編成するために使用される様々な操作を行うためのファンクショナリティを含んでもよい。最後に、ダウンロードエージェント１０２０は、アップデートパッケージ１１０中に含まれている情報に対する不正なアクセスを防止するために、サーバとクライアント装置との間の機密保護通信の使用を可能にするためのファンクショナリティを提供してもよい。さらに別の側面では、ダウンロードエージェント１０２０は、サーバとクライアント装置との間の情報転送中に使用される１つまたは複数の暗号化方式を定義する専用の機密保護ライブラリを含むことが可能である。
【００９６】
ダウンロードエージェント１０２０またはアップデートエージェント１０２５は、さらに、アップデートパッケージ１１０を解凍および／または準備するために十分な使用可能な空間が電子装置内に存在するかどうかを判定するために使用されてもよい。追加の空間が必要とされる場合には、ダウンロードエージェント１０２０またはアップデートエージェント１０２５は、アップデートパッケージ１１０を受け取って処理するのに十分な記憶空間を生じさせるために、不揮発性メモリエリアすなわち記憶領域１００２または揮発性メモリエリアすなわち記憶領域１００４の内容を圧縮または再編成することが可能である。アップデートプロセスが完了した後に、不揮発性メモリエリアすなわち記憶領域１００２と揮発性メモリエリアすなわち記憶領域１００４との圧縮または再構成された内容が、そのオリジナルの状態に戻されて、電子装置が通常の動作を再開してこれらの領域１００２、１００２の内容にアクセスすることを可能にすることもできる。
【００９７】
アップデートエージェント１０２５とダウンロードエージェント１０２０との好ましい特徴の１つは、これらが電子装置上のメモリエリアすなわち記憶領域内の比較的少量の空間を占有するように設計されているということである。この特徴は、メモリ空間すなわち記憶空間が、設計、サイズ、および／または、電力消費という理由のような装置上の制約にために制限されている装置において特に有用である。例えば、典型的な移動電話は、約５００Ｋ−１５００Ｋのサイズを有する物理的メモリ記憶装置を含むことがある。移動電話の組込みオペレーティングシステムはこの記憶空間の大部分を占有し、追加の空間が、電話番号、住所等のようなユーザ定義可能なデータのために割り当てられなければならない。アップデートエージェント１０２５とダウンロードエージェント１０２９は、約２０Ｋ−５０Ｋの合計サイズを維持するような仕方で実装される。この比較的小さなサイズは、メモリエリアすなわち記憶領域に関する大きな制約を有する電子装置を含む大半の電子装置によって容易に受け入れられることが可能である。メモリもしくは記憶装置の制約が大きな問題をもたらさない場合には、アップデートエージェント１０２５および／またはダウンロードエージェント１０２０は、追加のファンクショナリティと特徴とを含むように設計されることが可能である。しかし、アップデートエージェント１０２５とダウンロードエージェント１０２０との全体的サイズは、典型的には、多くの従来のアップデートアプリケーションまたはアップデートモジュールよりも著しく小さい。
【００９８】
ダウンロードエージェント１０２０とアップデートエージェント１０２５とに加えて、状態テーブル１０５０が、さらに、不揮発性メモリエリアすなわち記憶領域１００８内に常駐することが可能である。状態テーブル１０５０は、好ましいことに、不揮発性メモリ空間すなわち記憶空間内に内容が保存されておりおよび装置の動作状態を判定するためにアップデートパッケージの検索および処理操作中に使用されるデータ構造である。状態テーブル１０５０が不揮発性メモリエリアすなわち記憶領域１００８のデータセクション１００８内に位置しているように示されているが、状態テーブル１０５０が記憶領域１００２の不揮発性メモリのどんな部分にも位置せしめられることが可能な他の構成が存在する。
【００９９】
一側面では、状態テーブル１０５０は、アップデートプロセスのアクティビティを調整するためにダウンロードエージェント１０２０とアップデートエージェント１０２５によって使用される１つまたは複数のフラグまたは識別子を含む。さらに、状態テーブル１０５０は、アップデートプロセスの現在状態と完了状態とを識別するために誤り許容プロセスで使用される情報を記憶することが可能である。さらに、状態テーブル１０５０中に含まれている情報は、装置が通常動作モード（アップデートプロセスがアイドル状態にある）またはアップデート処理モード（アップデートプロセスが非アイドル状態にある）にあるかどうかを判定するために装置ブートプロセス中に使用されることが可能である。この装置のモードは、アイドル状態か起動状態のどちらかであることが可能なアップデート状態変数またはフラグによって決定される。アイドル状態では、アップデート操作が待機状態にあるとは判定されず、通常の装置動作が進行しなければならない。起動状態では、１つまたは複数のアップデート操作が現時点で待機状態にあり、通常の装置動作は、アップデート操作が実行されることを可能にするために一時停止状態にされなければならない。
【０１００】
装置の起動中に、典型的にはコード実行が例えば「０ｘ００００」のような特定の起動アドレスで開始する。このアドレスは、アップデートエージェント１０２５が常駐するブートブロックまたはブートセクタを意味する。アップデートエージェント１０２５は、行われなければならないアップデート操作を識別するために、アップデート状態変数の値を求めて状態テーブルモジュール１０５０を調べるか、あるいは、どの操作も待機状態にない場合には、アップデートエージェント１０２５がプログラム実行を電子装置の常用のファームウェアまたはオペレーティングシステムに移行させる。
【０１０１】
一側面では、アップデートプロセスが中断される場合に、アップデートの現在位置または完了状態が、アップデートパッケージ情報の様々な部分を使用して判定されることが可能である。誤り許容アップデートプロセスに関してより詳細に後述するように、アップデートパッケージは、誤り訂正コード、ディジタルシグネチャ、ファイルまたはバンクのサイズ、および、コードのどの部分が適切にアップデートされ終わっているかを判定するためにアップデートエージェント１０２５によって解釈される他の情報を含んでよい。アップデートプロセスが予期せずに中断されている場合には、アップデートエージェント１０２５はこの情報を使用して、最後の適切なアップデートがどの位置まで適用され終わっているか、および、アップデートプロセスを完了させるためにアップデートをその位置から続行するかどうかを判定する。
【０１０２】
一実施形態では、アップデート管理システムは、電子装置の既存のコードバージョンに対してアップデートを行うためにバンク単位（ｂａｎｋ−ｂｙ−ｂａｎｋ）アップデートプロセスを使用する。このプロセスは、典型的には限られたアップデート能力だけしか持たない携帯用電子装置のアップデート操作タスクを管理することに特に適している。この方法を使用して、アップデート管理システムは、電子装置のアーキテクチャによって課せられるメモリ空間すなわち記憶領域の制約のせいで移動電話のような電子装置の簡便なアップデートを妨げる多くの従来のシステムの制限を克服する。例えば移動電話では、オペレーティングシステムは典型的には不揮発性メモリエリアすなわち記憶領域内に常駐し、このオペレーティングシステムは、コストおよび製造上の問題のためにより小さいサイズを一般的に有する揮発性メモリエリアすなわち記憶領域内に保持されるには大きすぎる可能性がある。この制限は、オリジナルのコードバージョンの発生可能な破損なしにアップデートが適用されることが可能な適切な「作業」領域にオペレーティングシステムの完全なイメージがコピーされることを妨げる。この結果として、移動電話を含む電子装置は、アップデートを行うことを可能にする方法に関して制限されており、および、典型的には、高い誤り許容能力を提供せず、したがって、その電子装置を動作不能にする可能性があるアップデート誤りがその電子装置に生じやすくなる。
【０１０３】
本発明は、セクション単位すなわちバンク単位の仕方でアップデートを行うための機構を提供することによってこの制限を克服する。このバンク単位アップデート方法は、ファイルまたはコードバージョンのイメージ全体が「作業」領域に記憶されることを必要とせず、むしろ、アップデート操作を区分して、指定されたコードセクションに対して逐次的にアップデート操作を適用することによって、限られた量のメモリ空間すなわち記憶空間を使用して行われる。この方法におけるセクション単位のアップデートは、有利なことに、移動電話の揮発性メモリセクション内に存在するメモリ空間すなわち記憶空間のような比較的小さい領域の使用可能なメモリ空間すなわち記憶空間と共に使用されることが可能である。さらに、バンク単位アップデート方法は誤り許容力を改善し、アップデートにおける誤りが生じるときにアップデートプロセスが再開されることを可能にする。
【０１０４】
本発明を説明する際に使用される術語「バンク」は、柔軟に定義されることが可能なメモリエリアすなわち記憶領域の一部分を意味する。バンクは特定の電子装置では静的サイズを有することがあるが、このサイズは装置毎に様々であってよい。さらに、特定の電子装置内のバンクは可変的にサイズ決定されてよく、および、電子装置のための特定のアーキテクチャによって定義される通りに１つまたは複数の論理的または物理的ブロックの内容を意味することも可能である。アップデートプロセスを静的に定義されたバンクサイズに関して説明しているが、このアップデート管理システムのシステムおよび方法は、様々な異なる電子装置構成に関するアップデートの必要性または選好に対応するために、異なるバンク構成に対応するように容易に適合化されることが可能である。
【０１０５】
図９と図１０は、装置内に存在する既存のコードバージョンを新しいすなわちアップデートされたコードバージョンに変換するためにアップデート管理システムによって好ましくは使用されるバンク単位アップデート方法を示す。コード変換は、命令セットの命令またはアップデートパッケージ１１０を処理するアップデートエージェント１０２５によって管理される。アップデートプロセス全体にわたって、高度の誤り許容力が、各バンクのデータ内容を妥当性検査するために多数のチェックポイント操作（ｃｈｅｃｋｐｏｉｎｔｉｎｇ　ｏｐｅｒａｔｉｏｎ）によって維持される。より詳細に後述するように、これらの操作は、そうでない場合にはコードバージョンを破損させて装置を動作不能にする可能性がある誤りからの回復に有用である。
【０１０６】
図９は、移動電話、ページャ、パーソナルディジタルアシスタント、または、他の電子装置のような電子装置と共に使用できるバンク単位アップデート方法１１００の概観を示す。図８Ａの説明に関連して上述したように、様々な携帯用電子装置のためのアーキテクチャは、不揮発性メモリエリアすなわち記憶領域１００２と、揮発性メモリエリアすなわち記憶領域１００４とを含む。不揮発性記憶領域は、さらに、情報またはデータを記憶するために使用される別々にアドレス指定可能なロケーションを表現する複数のブロックすなわちバンク１０１０に区分されることが可能である。アップデートされることが好ましいオペレーティングシステム、ファームウェア、または、他の情報が、さらに、不揮発性メモリエリアすなわち記憶領域１００２中に記憶され、および、複数のバンク１０１０の中の少なくとも幾つかのバンクにわたって配分される。
【０１０７】
図９を再び参照すると、バンク単位アップデートプロセス１１００は開始状態１１０５で開始し、この状態１１０５では、電子装置はアップデートを開始するための信号を検出する。一側面では、アップデート信号が、通常動作モードからアップデート処理モードへの変化を認識することを含む。上述したように、このモードの変化は、状態テーブル内に設定されているアイドル状態変数を使用して識別されることが可能である。その次に、バンク単位アップデートプロセス１１００は状態１１１０に進み、この状態１１１０では、アップデートパッケージはアップデートサーバからの伝送のための要求の後に受け取られる。この状態１１１０では、アップデートパッケージ１１０が好ましくは揮発性メモリエリアすなわち記憶領域内に受け取られて一時的に記憶される。アップデートパッケージ１１０の受け取りが完了した後に、プロセス１１００はアップデート転送状態１１１５に進み、この状態１１１５では、完全なアップデートパッケージ１１０が不揮発性メモリエリアすなわち記憶領域１００２内にコピーされる。アップデートパッケージ１１０を不揮発性領域１００２にコピーすることによって、一定レベルの誤り許容力が実現され、電子装置は、サーバコンピュータとさらに通信することなしに後続のアップデート操作を行うことができる。一側面では、アップデートパッケージ１１０の完全な受け取りと確実な記憶とを反映するために、アップデートパッケージ１１０が不揮発性メモリの中に保存され終わった後に状態テーブルがアップデートされる。
【０１０８】
アップデートプロセス１１００はメモリ割当て状態１１２０に進み、この状態１１２０では、「作業」バンクと「バックアップ」バンクとのための空間が揮発性および不揮発性メモリエリア１００２、１００４内にそれぞれに割り当てられる。作業バンクとバックアップバンクは、コードセクションのためのアップデートが完了せしめられて妥当性検査され終わるまでオリジナルコードが変更されないような仕方で既存のコードバージョンの区分コンポーネントに対して操作を行うために、アップデートプロセス１１００によって使用され、それによってオリジナルコードが予期しない処理誤りまたは電源切断によって破損せしめられないことを確実なものにする。
【０１０９】
状態１１２０中は、アップデートパッケージ１１０の命令を処理するためにアップデートエージェント１０２５にとって必要とされるアドレスをポイントする複数のポインタが初期化される。第１のポインタは、アップデートパッケージ１１０内の第１の命令のアドレスをポイントするために初期化される命令ポインタを含む。この命令は、命令ポインタによってポイントされるアドレスを参照することによって後で検索され、および、この命令は、アップデートされるべきバンク情報に適用される。
【０１１０】
さらに、作業バンクポインタが、バンクアップデートが生じることになる揮発性メモリ内の位置をポイントするために初期化される。作業バンクポインタは、作業バンクポインタによって指定されるロケーションにおいてアップデート操作を行うアップデートエージェント１０２５によって基準として使用される。さらに、電源切断の場合の誤り許容力と再ブート操作またはリセット操作とを確実なものにするために、作業バンクのコピーが維持される不揮発性メモリ内のロケーションをポイントするバックアップバンクポインタが初期化される。
【０１１１】
状態１１２０におけるポインタ初期化の完了後に、プロセス１１００は、バンク転送状態１１２５において開始する一連のバンクアップデート操作１１２３を続け、この状態１１２５では、不揮発性メモリエリアすなわち記憶領域１００２内に常駐するオリジナルのコードバージョンの１つのセクションが揮発性メモリエリア１００４内の作業バンクに転送される。オリジナルコードバージョンからコピーされたコードセクションは、情報の特定のバンクのために新しいコードバージョンを生成するように好ましくは操作される命令セットによって指定された情報バンクに対応する。その次に、プロセス１１００はアップデート命令適用状態１１３０に進み、この状態１１３０では、命令セットからの適切な命令が、バンク中に含まれる旧いコードバージョンが新しいコードバージョンに変換されるような仕方で情報の作業バンクを変更するために実行される。
【０１１２】
適切な命令が実行されて、対応するコードが揮発性作業バンク内でアップデートされ終わると、プロセスはバンクバックアップ状態１１３５に進み、状態１１３５では、その作業バンクの内容が、不揮発性メモリエリアすなわち記憶領域１００２内に位置しているバックアップバンク内にコピーされる。その次に、揮発性作業バンク内のコードが、バックアップバンク状態１１４０において、オリジナルのコードが得られたバンクに対応する適切なロケーションにコピーされる。状態１１４０においてバンクのコピーが完了すると、プロセス１１００は新たな状態１１４５に進み、この状態１１４５では、バンクポインタが、アップデートされなければならないその次の連続したバンクに増分される。
【０１１３】
命令ポインタがプロセス１１００がすでに完了している（すなわち、全バンクがアップデートされ終わっている）ということを示す場合には、プロセス１１００が終了せしめられる。この時点では、アップデート操作が完了していることを反映するために、状態テーブルもアップデートされてよく、アップデートプロセスはアイドル状態を再開する。この後で、電子装置が再起動され、新たにアップデートされたコードバージョンが電子装置によって使用される。そうではなく、ポインタが、プロセス１１００が完了していない（すなわち、１つまたは複数のバンクがアップデートされていないままである）ことを示す場合には、プロセス１１００はバンク転送状態１１２５に進み、このバンク転送状態１１２５では、その次のバンクが揮発性メモリエリアすなわち記憶領域１００４内の作業バンクにコピーされ、プロセス１１００が、新たに選択されたバンクのアップデートを完了させる。一側面では、再起動中に状態テーブルが検査され、アイドル状態が検出される場合には通常（非アップデート）動作が再開する。非アイドル状態が検出される場合には、アップデートエージェント１０２５が電子装置を制御するように指示される。
【０１１４】
図１０は、さらに、バンク単位アップデートプロセス１１００をより詳細に示し、移動電話またはパーソナルディジタルアシスタントのような携帯用電子装置内に典型的に存在する上述の不揮発性メモリエリアすなわち記憶領域１００２または揮発性メモリエリアすなわち記憶領域１００４との関連における動作を示す。以前に図８Ａに示したように、不揮発性メモリエリアは、アップデートエージェント１０２５によって別々にアドレス指定可能でありかつアクセス可能である複数のバンクに分割されている。不揮発性バンク１１２０の少なくとも幾つかは、アップデートパッケージ１１０を使用してアップデートエージェント１０２５によってアップデートされることになるメモリエリアのセクションを含む。一側面では、これらのバンクは、電子装置にファンクショナリティを伝達しかつ第１のコードバージョンから第２のコードバージョンに好ましくはアップデートされる、オペレーティングシステム、ファームウェアコード、または、アプリケーションを含む情報を含むことが可能である。
【０１１５】
状態１２１０に示されているように、典型的には、適切な使用可能なアップデートパッケージ１１０が識別されて、上述のダウンロードエージェント１０２０のファンクショナリティを使用して電子装置に転送された後に、バンク単位アップデートプロセス１１００が始まる。アップデートパッケージ１１０が受け取られて、揮発性メモリエリアすなわち記憶領域１００４のセクション１２２２内に一時的に記憶され、および、一連の妥当性検査が、パッケージ１１０が完了しておりかつ誤りがないことを確実なものにするために実行される。これらの妥当性検査は、受け取られたアップデートパッケージ１１０に関する巡回冗長検査コード（ＣＲＣ）を求めることと、このコードを、アップデートパッケージ１１０内に記憶されている予想ＣＲＣ値に対して比較することとを含んでよい。さらに、妥当性検査は、アップデートパッケージ１１０のサイズを識別することと、ダウンロードエージェント１０２０によって求められた予想サイズに対してこのアップデートパッケージ１１０のサイズの値を比較することによって行われることも可能である。
【０１１６】
さらに、アップデートパッケージ１１０は、受け取られたアップデートパッケージ１１０が既存コードバージョンに対する適用に適しているかどうかを判定するためにダウンロードエージェント１０２０によって評価されるディジタルシグネチャを含んでもよい。一側面では、このディジタルシグネチャは、転送されたデータパッケージ１１０のソースと内容を妥当性検査するために使用できる、装置の名称または識別情報、装置の製造業者、モデルまたはシリアル番号、および、他の特徴のような情報を含むことができる識別ストリングである。
【０１１７】
その次に、アップデートパッケージ１１０は、より安全確実な記憶のために、その一時的ロケーション１１２２から不揮発性メモリすなわちフラッシュメモリコンポーネント１００２のセクション１２２４に転送される。不揮発性メモリの中にアップデートパッケージ１１０を記憶することが、サーバからのアップデートパッケージ１１０の再伝送を必要とせずに電源故障、装置不通、または、リセット操作から回復するための手段を提供する。上述したように、フラッシュメモリ１００２内に含まれているイメージが完全でありかつ所望のアップデートパッケージ１１０の誤りの無いコピーであるということを確実なものにするために、１つまたは複数の妥当性検査が使用される。
【０１１８】
アップデートパッケージ１１０をフラッシュメモリ１００２内に記憶した後に、状態テーブル（図示されていない）内に記憶されているアイドル状態フラグが、電子装置がアップデートモードに進む用意が整っているということを表示するためにアップデートされる。その次に、電子装置が再起動され、状態フラグがアップデートエージェント１０２５によって解釈されて、その電子装置の通常動作を一時停止させ、アップデートエージェント１０２５がアップデートパッケージ１１０をインストールするための基本的な装置ファンクショナリティを提供するアップデートモードに入る。
【０１１９】
電子装置の再起動後に、揮発性メモリコンポーネントすなわちＲＡＭメモリ１００４の内容は典型的には失われ、その結果として、アップデートパッケージ１１０のコピーが、状態１２２０において、アップデートエージェント１０２５による使用のためにＲＡＭメモリ１００４のセクション１２２２に再びコピーされる。この状態１２２０中に、アップデートパッケージ１１０は、アップデート情報または命令を実行可能な形態で提供するために前処理されてもよい。例えば、アップデートパッケージ１１０が圧縮または暗号化されている場合には、アップデートエージェント１０２５は、アップデートパッケージ１１０のコードの実行の用意を整えるために、１つまたは複数の操作を行う。一側面では、上述の命令ポインタは、アップデートエージェント１０２５によって実行される第１の命令のアドレスに初期化されてもよい。全体的に述べると、これらの操作は、新しいコードバージョンを生成するための既存のコードバージョンの後続の逐次的アップデートのために、アップデートエージェント１０２５と命令セットとを準備する。
【０１２０】
状態１２３０に進むと、アップデートエージェント１００２のための作業環境を生成する複数のメモリ割当て操作が行われる。一側面では、作業バンク１２３２がＲＡＭメモリ１００２内に割り当てられる。作業バンク１２３２が、好ましくは、フラッシュメモリエリア１００４内のアップデートされるべきバンク１１２０と同一のサイズであるように構成され、および、命令セットによって決定される操作が行われるオペレーショナルバッファ領域すなわち作業メモリエリアとして働く。さらに、電源切断に対する誤り許容力を実現するために、および、作業バンク１２３２中のデータが破損するか妥当性検査で不合格になることがある場合にはデータのバックアップコピーとしての役割を果たすために、アップデートプロセス全体にわたって使用される不揮発性バッファすなわちバックアップ記憶装置を提供するために、バックアップバンク１２３４がフラッシュメモリ１００４内に割り当てられるかまたはポインタ加算されてもよい。
【０１２１】
状態１２４０に進むと、アップデートプロセスは、アップデートエージェントと共に、ＲＡＭメモリセクション１２２２内に記憶されているアップデートパッケージに含まれている命令を読み出して実行することを開始する。一側面では、アップデートパッケージの命令は、アップデートされるべきフラッシュメモリ１００２の第１のバンク１２４２のアドレスをポイントするポインタを初期化する。アップデートエージェント１０２５は、このバンク１２４２に含まれている情報にアクセスし、その中に含まれている情報をＲＡＭメモリ１００２の作業バンク１２３２にコピーする。上述したように、様々な妥当性検査の方法が、作業バンク１２３２の内容がそのコピー元であるフラッシュメモリバンクを正確に反映することを確実にするために採用されることも可能である。バンクコピープロシージャが失敗した場合には、その次のアップデート状態に進む前に、アップデートプロセスが繰り返されて内容が検査されてもよい。好ましいことに、作業バンク１２３２の使用は、多くの従来の方法よりも向上した度合いの誤り許容力をアップデートシステムに与えるということが理解されるだろう。一側面では、新たにアップデートされたバンク情報が検査されて不揮発的に記憶されることが可能になるまで、オリジナルの（無変更の）コードがフラッシュメモリバンク１００２内に維持される。このアップデート方法は、好ましいことに、さもなければ装置故障を生じさせる可能性があるデータ破損の可能性を低減させる。さらに、バンクアップデート操作が失敗した場合には、既存のコードの保存が、アップデートプロセス全体が開始状態から再開されることを必要とせずに、アップデートプロセスがその失敗箇所から再開することを可能にする。アップデートプロセスの誤り許容力特性の追加の詳細説明は、より詳細に後述する。
【０１２２】
状態１２５０に進むと、アップデートエージェント１０２５は、作業バンク１２３２内に記憶されている第１のバンクのコピーに含まれている情報をアップデートするために適切な命令を適用する。前述したように、この命令は、作業バンク１２３２に関するアップデートされたバンク情報を生成するのに好ましくは使用される情報シーケンスを得るために、フラッシュメモリ１００２内に含まれている他のバンク１１２０からの情報をアドレス指定してコピーすることが可能である。さらに、他の操作が、アップデートジェネレータ１０２によって判定される通りに所望の内容を反映するために作業バンク内に含まれているコードを変更するために使用されることが可能である。一側面では、第１のコードバージョンと第２のコードバージョンとの間で変化していないと判定されるバンクは、さらに別の処理を必要とせず、アップデートプロセスは状態１２４０にループして戻ってよく、この状態１２４０では、新しいバンクがコピーされ、そのアップデートプロセスが、アップデートパッケージからの対応する命令を使用して再開される。あるいは、アップデートを必要としないこうしたバンクは、アップデートの効率を改善するために、先行ステップ１２４０においてスキップされる。この場合も同様に、アップデートバンク情報が適正であることを確認するために、アップデート命令が実行され終わった後に、様々な誤り検出方法が行われることが可能である。
【０１２３】
状態１２６０に進むと、作業バンク１２３２に含まれている新たにアップデートされた情報が、フラッシュメモリ１００２内に位置しているバックアップバンク１２３４にコピーされる。さらに別の度合いの誤り許容力を実現するために、作業バンク１２３２のコピーがこの時点で作成され、この場合には、作業バンク１２３２をオリジナルの第１のバンク１２４２にコピーした後に電源切断が生じた場合には、アップデートプロセスは、障害が起きた位置を識別し、および、アップデートされた情報のコピーが不揮発性フラッシュメモリ１００２内に保持されている場合にはその位置から進行する。作業バンク１２３２をバックアップバンク１２３４内にコピーすることが完了する前に障害が生じた場合には、アップデートプロセスは、アップデートされたバンク１２３２からバックアップバンク１２３４内へのコピー操作を再び行うことを試みることが可能である。あるいは、作業バンク１２３２をバックアップバンク１２３４内にコピーすることが完了する前に再ブートすなわち再起動操作に起因した揮発性メモリの損失を結果的に引き起こす電源切断または他の深刻な障害が発生した場合には、アップデートプロセスは、第１のバンク１２４２からの情報が作業バンク１２３２にコピーされる先行ステップに「ステップバック」することが可能である。
【０１２４】
上述の説明から、アップデートプロセスが、データ破損またはアップデート誤りが生じた場合にそのアップデートプロセスがアップデートプロセス中の潜在的な恒久的なデータ損失または破損なしにそこから再開するための位置を発見することが可能であるということを確実なものにする幾つかの機構を提供するということが理解できるだろう。
【０１２５】
状態１２７０に進み、新たにアップデートされた情報のコピーがバックアップバンク１２３４内に安全に記憶され終わると、アップデートプロセスが進行して、作業バンク１２３２内に含まれている情報をフラッシュメモリ１００２内に位置しているオリジナルの第１のバンク１２４２の中にコピーして戻す。アップデートプロセスの他のステップと同様に、バンク情報は、内容が所望のコードを反映することを確実にするために妥当性検査される。
【０１２６】
状態１２８０に進み、アップデートプロセスが、その次のバンク１２４６に関して同様の仕方で繰り返され、この場合には、アップデートされるべきその次のバンク１２４６のアドレスにバンクポインタがアップデートされる。その次に、ステップ１２４０−１２７０が、その次のバンク１２４６からの情報を使用して繰り返される。このようにして、フラッシュメモリ１００２のバンク１１２０のすべてが、好ましいことに、誤り許容力を実現する形でアップデートされることが可能であり、一方、フラッシュメモリのメモリサイズよりも小さいＲＡＭメモリサイズによってもたらされるアーキテクチャ上の制限に適応することが可能である。
【０１２７】
アップデートエージェント１０２５がアップデートプロセスが完了していると判定するときには、バックアップアップデートパッケージ記憶領域１２２４とバックアップバンク１２３４とを含むフラッシュメモリ１００２内における空き領域割当て（空き領域の割当てがある場合には）が、これらの空き領域がアップデート後に他の目的のために使用できるように解放される。さらに、状態テーブル（図示していない）内に含まれている状態フラグが、どんなアップデート操作も待機状態にはないアイドル状態を反映するようにアップデートされる。その次に、電子装置がリセットまたは再ブートされ、および、状態テーブル内の状態フラグを検査した後に、電子装置は、その次のアップデートプロシージャが起動されるまで通常の動作モードに戻るだろう。一側面では、バックアップ記憶領域１２２４は、（ポインタがバックアップ記憶領域１２２４を指定するために使用される場合のように）割当て解除（ｄｅａｌｌｏｃａｔｉｏｎ）も解放も必要としない。この例では、アップデートプロセスの完了後に、他のアプリケーションまたは操作がバックアップ記憶領域１２２４の内容を単純にオーバーライトすることが可能である。さらに、揮発性メモリエリアすなわち記憶領域１００４内に含まれているデータが典型的には再ブート操作中に失われるので、揮発性メモリエリアすなわち記憶領域１００４に対して特別な操作が行われることは必ずしも必要ではない。
【０１２８】
上述したように、十分なレベルの誤り許容力を実現するために、アップデートサーバおよびプロセスは、予期しないハードウェアまたはソフトウェアの中断または障害に効率的に応答する能力を含む。図１１は、アップデートパッケージ１１０内に含まれている命令セットの適正なインストレーションを確実なものにするためにクライアント装置１０４のアップデートエージェント１０２５によって使用される誤り許容プロセスの一実施形態を示す。命令セットが、既存コードバージョンを置き換えるためにクライアント装置１０４のような計算装置により新しいコードバージョンをインストールすることが可能である、効率的な変換方法または命令シーケンスを提供する。一側面では、誤り許容プロセス１３００は、アップデートパッケージ１１０内に含まれている命令の実行中の中断を回避するために、クライアント装置１０４によって使用される既存コードバージョンを有利に保護する一連の検査または妥当性検査を含む。さらに、誤り許容プロセス１３００は、アップデート後の適正な装置の動作を保証するために、アップデートされたコード内に含まれている情報が、必要な情報を正確に反映することを確実なものにする。この誤り許容プロセスがアップデートサーバ１０２５によるアップデート命令の処理に関連しているので、誤り許容シーケンスの次の説明が、この誤り許容プロセスの顕著な特徴を明らかにする。この誤り許容プロセスが、図９と図１０に関連して詳細に説明した上述のアップデートプロセスと共に機能するということが理解されるだろう。したがって、誤り許容シーケンスはアップデートプロセスの一体的な部分として見なされてもよく、および、このプロセスの一部分は、上述のアップデートプロセスとの協調的なファンクショナリティを有することが可能である。
【０１２９】
開始状態１３０２におけるクライアント装置１０４の初期化の後に、誤り許容プロセス１３００は状態１３０４に進み、この状態１３０４では、アップデートエージェント１０２５は「非アイドル」状態の認識のために状態テーブルを検査する。この「非アイドル」状態は、クライアント装置１０４が、アップデートパッケージ１０２５の命令が新しいコードバージョンを生成するために適用されることになるアップデート処理モードにあるということを意味する。アップデート処理モードが認識されない場合には、誤り許容シーケンスは終了状態１３０６で終了し、および、装置は、さらに別のアップデート処理なしに通常動作モードで動作し続ける。そうではなく、アップデート処理モードが認識される場合には、誤り許容プロセス１３００は妥当性検査状態１３０８に進む。この妥当性検査状態１３０８では、アップデートエージェント１０２５が、不揮発性メモリ内にすでに記憶されている保存されたアップデートパッケージ１１０の妥当性検査と、作業バンクの開始アドレスおよび内容の識別と、バックアップバンクの開始アドレスおよび内容とを含む、１つまたは複数の確認操作または検査を行う。
【０１３０】
状態１３０８では、アップデートエージェント１０２５がアップデート前の妥当性検査の不合格を判定し、その次に、アップデートプロセスおよび誤り許容プロセスが状態１３１０で終了する。あるいは、アップデートエージェント１０２５が状態１３０８において状態テーブル情報を妥当性検査することが可能である場合には、誤り許容プロセス１３００は状態１３１２に進み、この状態１３１２では、アップデートエージェント１０２５が、アップデートされるべきその次のバンクを発見する。
【０１３１】
状態１３１２では、アップデートエージェントは、非圧縮のアップデートパッケージからのバンク識別情報を検査し、アップデートプロセスがどこで終了せしめられておりおよびどこから再開されなければならないかを発見する。これは、バンク識別情報からのサイズおよびＣＲＣ情報を、電子装置内の物理バンクから計算された既存のアップデートされたバンク情報と比較することによって行われる。一側面では、このプロセスは、バンクサイズおよびＣＲＣ情報を比較することによって適切な再開位置を求める。アップデートパッケージ命令セットの始点から逐次的に進行して、予想されたサイズおよびＣＲＣ情報に合致しないバンクが、アップデートされるべき第１のバンクである。さらに、例えば、アップデートされたバンク情報を不揮発性メモリ１００２の既存のバンクに中にコピーして戻すときのように、アップデートプロセスがバンクコピー機能中に中断される場合、および、サイズおよび／またはＣＲＣ情報が予想値に合致しない場合には、バックアップバンクが、最後のアップデートされたバンクを復元するために使用されることが可能である。
【０１３２】
その次にアップデートエージェント１０２５は、上述したように状態１３１４においてバンクアップデートを行う。その次に、状態１３１６において、一連のアップデート妥当性検査が、バンクアップデートが成功したかどうかを判定するために適用される。一側面では、アップデートエージェント１０２５は、バンク記述情報を検査することによってバンク妥当性検査を行ってよく、このバンク記述情報はバンク内に含まれる古い情報と新たにアップデートされた情報とに対応するバンク識別情報とＣＲＣ値とを含む。さらに、妥当性検査タスクが、新旧のファイルサイズまたはバンクサイズの値が予想値に合致するかどうかを判定するために、これらの値を評価することも可能である。さらに、アップデートエージェント１０２５は、実際のバンク記述情報をアップデートパッケージ１１０内に記憶されているバンク記述情報と比較してもよい。
【０１３３】
ＣＲＣコードが一致しない場合のように、１つまたは複数のアップデート妥当性検査が不合格だった場合には、誤り許容プロセス１３００は、状態１３１４で再びバンクアップデートを行うためにループバックする。アップデート妥当性検査が状態３１６で合格する場合には、誤り許容プロセス１３００は状態１３１８に進み、この状態１３１８では、アップデートエージェントがアップデートインストレーションが完了しているかを判定する。アップデートエージェント１０２５は、先行バンクの各々に関する適正なアップデートインストレーションを妥当性検査するために先行バンクのバンク記述情報、ＣＲＣ、または、サイズ値を再検査することによって、このタスクを行うことが可能である。さらに、アップデートエージェント１０２５は、アップデートインストレーションが完了しているかどうかを判定するために使用されるバンク位置を求めるために、カウンタまたはポインタを使用してもよい。アップデートインストレーションが完了していない場合には、誤り許容プロセス１３００は、アップデートされるべきその次のバンクを発見するために、状態１３１２にループバックする。あるいは、アップデートのインストレーションが完了している場合には、誤り許容プロセス１３００は、クライアント装置１０４を再初期化することによって終了状態１３２０において終了する。さらに、アップデート操作が完了していると判定される場合には、「非アイドル」状態が「アイドル」状態に戻され、このことが、クライアント装置１０４のリセットまたは再初期化時に、装置動作の状態をアップデート処理動作モードから通常動作モードに変化させる。
【０１３４】
有利なことに、上述の誤り許容プロセス１３００は、電源障害またはデータ破損のような予想外の障害に対してオペレーショナルソフトウェアコードまたはファームウェアコードを保護するために使用される。電源障害がインストレーションプロセスで起こるときには、アップデートエージェント１０２５が、アップデートされ終わっているバンクと、アップデートされるべきその次のバンクと、アップデートインストレーションの完了時点とを判定することが可能である。さらに、誤り許容プロセス１３００は、バンクアップデートインストレーションと変換プロセスとを、ハードウェア障害もしくはソフトウェア障害、電源障害、データ破損、および／または、ユーザの制御を超えた他の破局的な事態に対して保護する。
【０１３５】
図１２は、機密保護および妥当性検査のために使用されるシグネチャ生成および認証プロセス１４００の一実施形態を示す。一実施形態では、アップデートパッケージ１１０は、ディジタル情報シーケンスを機密保護する形で管理し、クライアントのプライバシを保護し、かつ、データ破損の可能性を低減させる仕方で、アップデート装置サーバ１０２から通信媒体を経由して転送される。状態１４０２におけるシグネチャ生成および認証プロセス１４００の実行は状態１４０６に進み、状態１４０６ではディジタルシグネチャすなわち識別ストリングが電子装置に関して指定される。ディジタルシグネチャは、転送データのソースを妥当性検査するために、および、当該の電子装置と共に使用するようにデータが設計されていることを確認するために使用される情報を含む。一実施形態では、ディジタルシグネチャは、アップデートパッケージ１１０のソースを認証するために使用される、製造業者によって指定された情報ストリングを含む。さらに、状態１４０８に示されているように、シグネチャすなわちハッシュ値が公知のＭＤ５アルゴリズムを使用して生成されてもよい。ＭＤアルゴリズムは、アップデートパッケージを電子装置に転送した後の後続の妥当性検査のために、例えばアップデートパッケージ１１０と共に含まれていることが好ましい装置アップデート情報からソースファイルのハッシュ値を生成する。
【０１３６】
一側面では、ＭＤ５アルゴリズムによって決定されるハッシュ値は、装置アップデート情報のディジタルフィンガープリント（ｄｉｇｉｔａｌ　ｆｉｎｇｅｒｐｒｉｎｔ）を形成するために使用される。人間の指紋と同様に、ハッシュ値は固有であり、（互いに情報差を含む）２組の装置アップデート情報が同一のディジタルシグネチャを有することはないだろう。この固有性が、ハッシュ値がオリジナルの情報すなわち命令セットのフィンガープリントの役割を果たすことを可能にし、および、データの完全性と比較互換性検査とを維持するという目的のためにＭＤ５技術を使用することを可能にする。例えば、通信媒体を経由してアップデートパッケージをダウンロードすなわち受信するときには、ＭＤ５技術は、データファイルの完全性を検査するために、算出されたＭＤ５シグネチャすなわちハッシュ値をアップデートパッケージ内に含まれているＭＤ５シグネチャと比較することによって、ダウンロードされたアップデートパッケージが適正な無変更のデータファイルであることを実質的に保証するために使用されることが可能である。こうして、アップデートパッケージ１１０の情報またはデータは、アップデートパッケージ１１０の形で転送された情報の完全性を確実なものにするためのＭＤ５技術または同様のディジタル画像シグネチャ技術の使用を含むことが可能である。
【０１３７】
その次に、状態１４１０において、ＭＤ５ハッシュ値とディジタルシグネチャとが暗号化されて、アップデートパッケージ１１０内に含まれる。一側面では、暗号化プロセスが、より高度のデータ機密保護を実現するために使用される。暗号化されたハッシュ値とディジタルシグネチャとの読み出しまたはアクセスを行うために、電子装置は、符号化されたデータの暗号解読すなわち解読を可能にするキーすなわちパスワードにアクセスできなければならない。非対称暗号化方法（例えば、公開かぎ暗号化）と対称暗号化方法とが、アップデートパッケージ１１０を暗号化するために使用されてよい。一実施形態では、ＲＳＡ暗号化または公開かぎ暗号化方法が、配布の前にハッシュ値とディジタルシグネチャとを暗号化するために使用される。
【０１３８】
状態１４１０における暗号化の後に、アップデートパッケージはクライアント装置に対する配布の準備が整っており、および、アップデートパッケージ１１０の受け取り時に、クライアント装置が状態１４１２における認証プロセスに進む。クライアント装置１０４がアップデートパッケージを受け取ると、そのパッケージの暗号化された部分が、ディジタルシグネチャとハッシュ値とを別々のコンポーネントに分解するために解読される。この時点で、プロセス１４００は状態１４１４に進み、この状態１４１４ではアップデートエージェント１０２５はＭＤ５ハッシュ値およびディジタルシグネチャ情報を認証する。一側面では、転送されたＭＤ５ハッシュ値が、算出されたＭＤ５ハッシュ値に対して比較される。これら２つの値が同一である場合には、アップデートパッケージとその内容とが正当であり、アップデートプロセスが継続してよい。そうではなく、認証に失敗すると、アップデートパッケージは不正であるとして廃棄されるだろう。同様に、ディジタルシグネチャが、電子装置内に前もって保存されている予想ディジタルシグネチャと合致する場合には、受け取られたアップデートパッケージ１１０が正当であると判定される。受け取られたアップデートパッケージ１１０が状態１４１８において認証されると、シグネチャ生成および認証プロセス１４００は終了状態１４２０において終了せしめられ、アップデートパッケージ１１０はアップデートエージェント１０２５によって処理されることが可能である。
【０１３９】
上述の暗号化方式は、アップデートパッケージ１１０内に含まれておりかつ通信媒体を経由して転送されるディジタル情報のプライバシを維持する上で有用である。機密保護とプライバシ保護は、ワイヤレスネットワークとインターネットを含むあらゆるタイプの通信媒体を使用する個人にとって重大な関心事である。したがって、シグネチャ生成および認証プロセス１４００は、アップデートプロシージャにおける機密保護を確実なものにする有用な方法であり、および、無変更のままでありかつ書き変えられていないパッケージの形で実際のアップデート情報を受け取ることの信頼性を増大させる。認証を受けた後に、クライアント装置は、アップデートパッケージ１１０をインストールすることに進んでよく、このアップデートパッケージはファームウェアまたはオペレーショナルソフトウェアのより旧いコードバージョンをそのファームウェアまたはオペレーショナルソフトウェアのより新しいコードバージョンに変換する。
【０１４０】
本発明の好ましい特徴の１つが、本発明が電子装置のハードウェアの変更を必要とせずに様々な異なるメモリおよび記憶装置アーキテクチャに適合化されることが可能であるということである。したがって、このアップデートシステムは、既存の電子装置の中に組み込まれることが可能であり、および、従来技術の解決策に比較してより効率的でかつより単純なアップデートパスを実現するように未来の装置の設計に適合化されることが可能である。さらに、アップデートパッケージを配布するための様々な方法が、このアップデート管理システムおよび方法を使用して実現されることが可能である。本発明が、アップデートされるべき電子装置に対してアップデートパッケージを配布するために様々な異なるタイプの通信媒体と共に使用できるということが想定されている。ワイヤレスネットワークとワイヤードネットワークの両方とインターネット接続ネットワークとを使用して、アップデートパッケージが電子装置に配布されることが可能であり、その電子装置が利便性が高い仕方で頻繁にアップデートされることを可能にする。これらの通信媒体を経由した柔軟性の高い配布が、さらに、ユーザの対話と面倒とを最小限に留めながら多数の電子装置にアップデートが配布されることを可能にする。
【０１４１】
一側面では、このアップデート管理システムおよび方法は、アップデートパッケージを適用する電子装置のファンクショナリティを大幅に変更するために使用されることが可能である。例えば、電子装置内に記憶されている常駐のオペレーティングコードまたはアプリケーションが、好ましくは変更されている第１の装置ファンクショナリティを、第２の装置ファンクショナリティを伝達するアップデートされたコードまたは新しいアプリケーションに伝達してもよい。この例では、第１の装置ファンクショナリティと第２の装置ファンクショナリティとが、ゲーム、アドレスブック、計算器、パーソナルリマインダ（ｐｅｒｓｏｎａｌ　ｒｅｍｉｎｄｅｒ）、または、他のデータ／情報／アプリケーションのようなソフトウェアアプリケーションを表すことが可能である。オペレーティングコードのアップデート後には、装置ファンクショナリティが、第１の装置ファンクショナリティを第２の装置ファンクショナリティに変換するために大幅に変更されてもよい。例えば、第１の装置ファンクショナリティがゲームである場合には、アップデートパッケージは、そのゲームを表現しているディジタル情報シーケンスを計算器のような別の装置ファンクショナリティに変換するために使用されてもよい。さらに、第１の装置ファンクショナリティは、以前のバージョンから、第２の装置ファンクショナリティによって反映される類似のファンクショナリティを有するより新しいバージョンにアップデートされることが可能である。例えば、第１の装置ファンクショナリティが９関数計算器アプリケーションである場合には、このアプリケーションは、適切なアップデートパッケージを適用することによって２６関数計算器アプリケーションにアップデートされることが可能である。
【０１４２】
このアップデート管理システムおよび方法が、好ましいことに、ソフトウェアアプリケーションまたは装置ドライバのコードを１つのバージョンから別のバージョンにアップデートするための柔軟な手段を提供するためにパーソナルコンピュータで使用されるソフトウェアアプリケーションおよび装置ドライバのようなソフトウェアアプリケーションまたは装置ドライバと共に使用されることが可能であるということが理解できるだろう。一側面では、アップデートプロセス中に使用されるディジタル情報シーケンスを表現する上述の「ワード」が、ソフトウェアアプリケーションまたは装置ドライバに関連付けられているファイルを表してもよい。アップデート中には、ソフトウェアアプリケーションまたは装置ドライバの１つまたは複数のファイルがアップデートされることが可能であり、それによって、パーソナルコンピュータ上に存在するコードを保守するための単純化された方法を提供する。
【０１４３】
さらに、上述の例に示されているように、ソフトウェアアプリケーションまたは装置ドライバは、１つのバージョンからその次のバージョンへと一貫性のあるファンクショナリティを維持するようにアップデートされることが可能であり、または、ファンクショナリティが必要または所望に応じて完全に変更されることが可能である。例えば、アップデートされるべきソフトウェアアプリケーションがワードプロセッサを含む場合には、このアプリケーションは、増加した特徴とオプションを提供すると共に、バグを取り除き、追加の能力を実現するために、以前のバージョンから新しいバージョンにアップデートされることが可能である。あるいは、このアプリケーションは、アップデートパッケージを適用することによって、例えばスプレッドシートプログラムまたはデータベースプログラムのような完全に異なるアプリケーションにアップデートされることが可能である。このような仕方でのアップデートが、同一のアプリケーションのバージョン間の変化だけに限定されるのでなく、その代わりに比較的小さいアップデートパッケージを使用して完全に異なるアプリケーションとファンクショナリティとを提供することが可能である、ソフトウェアアプリケーションのファンクショナリティを変更するための柔軟性の高い手段を提供するということが理解されるだろう。
【０１４４】
このアップデートシステムおよび方法の使用から生じる別の特徴が、ソフトウェアのインストレーションと保守と管理とが著しく容易化されるということである。従来のシステムの制約は、誤りの影響を受けやすくかつ時間を浪費する一連のステップの形でユーザがソフトウェアアプリケーションを手作業でインストールおよびアンインストールしなければならないことから生じる。しかし、このアップデート管理システムは、比較的簡単なアップデートパッケージ適用プロセスによってソフトウェアアプリケーションをインストールし、取り除き、アップデートし、および、別のものに変化させるために使用できる自動化されたインストレーションプロセスを提供することによって、この制約を克服する。こうして、システム管理の新しくかつより強力な方法が実現されることが可能であり、１つまたは複数のシステムの自動化された管理を、（例えばＣＤーＲＯＭディスクまたは取外し可能記憶媒体のような記憶媒体上に含まれているアップデートパッケージの適用によって）ローカルで、または、（ワイヤードまたはワイヤレスの通信媒体を介したアップデートパッケージの適用によって）リモートで行うことを可能にする。この仕方でのシステム管理は、従来の方法よりも向上した機密保護と誤り許容力と柔軟性とを実現し、および、誤りの影響を受けにくく、かつ、より迅速である。
【０１４５】
本発明の上述の実施形態が、上述の実施形態に適用される通りの本発明の基本的な新規の特徴を示し、説明し、指摘してきたが、例示されている装置、システム、および／または、方法の詳細部分の形における様々な省略と置換と変化が、本発明の範囲から逸脱することなしに、当業者によって行われることが可能であるということが理解されなければならない。したがって、本発明の範囲は上述の説明に限定されてはならず、添付されている特許請求項によって定義されなければならない。
【図面の簡単な説明】
【図１Ａ】
図１Ａは、アップデート管理および配布システムの一実施形態を示すブロック図である。
【図１Ｂ】
図１Ｂは、アップデートサーバアレイ（ｕｐｄａｔｅ　ｓｅｒｖｅｒ　ａｒｒａｙ）を含むアップデート管理および配布システムの別の実施形態を示すブロック図である。
【図１Ｃ】
図１Ｃは、アップデート記憶装置（ｕｐｄａｔｅ　ｓｔｏｒｅ）とアップデート装置サーバ（ｕｐｄａｔｅ　ｄｅｖｉｃｅ　ｓｅｒｖｅｒ）とを有するアップデートサーバアレイを含むアップデート管理および配布システムの別の実施形態を示すブロック図である。
【図１Ｄ】
図１Ｄは、アップデート記憶装置と複数のアップデート装置サーバとを有するアップデートサーバアレイを含むアップデート配布システムの別の実施形態を示すブロック図である。
【図２Ａ】
図２Ａは、アップデートインストレーションプロセスの一実施形態を示す流れ図である。
【図２Ｂ】
図２Ｂは、アップデートインストレーションプロセスの別の実施形態を示す流れ図である。
【図３】
図３は、アップデート生成プロセスの一実施形態を示す流れ図である。
【図４】
図４は、ハッシュアレイの一実施形態を示す。
【図５】
図５は、命令セット生成プロセスの一実施形態を示す流れ図である。
【図６Ａ】
図６Ａは、ランレングス符号化命令の一実施形態を示す。
【図６Ｂ】
図６Ｂは、既存シーケンス命令の一実施形態を示す。
【図６Ｃ】
図６Ｃは、ハッシュ命令の一実施形態を示す。
【図６Ｄ】
図６Ｄは、デフォルト命令の一実施形態を示す。
【図７】
図７は、再構成されたディジタル情報シーケンスの一実施形態を示す。
【図８Ａ】
図８Ａは、典型的なメモリすなわち記憶アーキテクチャの一実施形態を示す。
【図８Ｂ】
図８Ｂは、不揮発性メモリエリアすなわち記憶領域の一実施形態を示す。
【図９】
図９は、バンク単位アップデート方法（ｂａｎｋ−ｂｙ−ｂａｎｋ　ｕｐｄａｔｅ　ｍｅｔｈｏｄ）の一実施形態を示す流れ図である。
【図１０】
図１０は、バンク単位アップデートプロセスを使用するアップデートパッケージの適用の一実施形態を示す。
【図１１】
図１１は、誤り許容プロセス（ｆａｕｌｔ　ｔｏｌｅｒａｎｃｅ　ｐｒｏｃｅｓｓ）の一実施形態を示す流れ図である。
【図１２】
図１２は、シグネチャ生成および認証プロセスの一実施形態を示す流れ図である。
【図１Ａ】
2004514214.tif 000003
【図１Ｂ】
2004514214.tif 000004
【図１Ｃ】
2004514214.tif 000005
【図１Ｄ】
2004514214.tif 000006
【図２Ａ】
2004514214.tif 000007
【図２Ｂ】
2004514214.tif 000008
【図３】
2004514214.tif 000009
【図４】
2004514214.tif 000010
【図５】
2004514214.tif 000011
【図６Ａ】
2004514214.tif 000012
【図６Ｂ】
2004514214.tif 000013
【図６Ｃ】
2004514214.tif 000014
【図６Ｄ】
2004514214.tif 000015
【図７】
2004514214.tif 000016
【図８Ａ】
2004514214.tif 000017
【図８Ｂ】
2004514214.tif 000018
【図９】
2004514214.tif 000019
【図１０】
2004514214.tif 000020
【図１１】
2004514214.tif 000021
【図１２】
2004514214.tif 000022
【国際公開パンフレット】
2004514214.tif 000023
2004514214.tif 000024
2004514214.tif 000025
2004514214.tif 000026
2004514214.tif 000027
2004514214.tif 000028
2004514214.tif 000029
2004514214.tif 000030
2004514214.tif 000031
2004514214.tif 000032
2004514214.tif 000033
2004514214.tif 000034
2004514214.tif 000035
2004514214.tif 000036
2004514214.tif 000037
2004514214.tif 000038
2004514214.tif 000039
2004514214.tif 000040
2004514214.tif 000041
2004514214.tif 000042
2004514214.tif 000043
2004514214.tif 000044
2004514214.tif 000045
2004514214.tif 000046
2004514214.tif 000047
2004514214.tif 000048
2004514214.tif 000049
2004514214.tif 000050
2004514214.tif 000051
2004514214.tif 000052
2004514214.tif 000053
2004514214.tif 000054
2004514214.tif 000055
2004514214.tif 000056
2004514214.tif 000057
2004514214.tif 000058
2004514214.tif 000059
2004514214.tif 000060
2004514214.tif 000061
2004514214.tif 000062
2004514214.tif 000063
2004514214.tif 000064
2004514214.tif 000065
2004514214.tif 000066
2004514214.tif 000067
2004514214.tif 000068
2004514214.tif 000069
2004514214.tif 000070
2004514214.tif 000071
2004514214.tif 000072
2004514214.tif 000073
2004514214.tif 000074
2004514214.tif 000075
2004514214.tif 000076
2004514214.tif 000077
2004514214.tif 000078
2004514214.tif 000079
2004514214.tif 000080
2004514214.tif 000081
2004514214.tif 000082
2004514214.tif 000083
2004514214.tif 000084
2004514214.tif 000085
2004514214.tif 000086
2004514214.tif 000087
2004514214.tif 000088
2004514214.tif 000089
2004514214.tif 000090
2004514214.tif 000091
2004514214.tif 000092
2004514214.tif 000093
2004514214.tif 000094
2004514214.tif 000095
2004514214.tif 000096
2004514214.tif 000097
2004514214.tif 000098
2004514214.tif 000099
2004514214.tif 000100
2004514214.tif 000101
2004514214.tif 000102
2004514214.tif 000103
2004514214.tif 000104
2004514214.tif 000105
2004514214.tif 000106
2004514214.tif 000107
2004514214.tif 000108
2004514214.tif 000109
2004514214.tif 000110
2004514214.tif 000111
2004514214.tif 000112
2004514214.tif 000113
2004514214.tif 000114
2004514214.tif 000115
【国際調査報告】
2004514214.tif 000116