JP2004514214A - 情報をアップデートおよび配布するシステムおよび方法 - Google Patents

情報をアップデートおよび配布するシステムおよび方法 Download PDF

Info

Publication number
JP2004514214A
JP2004514214A JP2002543291A JP2002543291A JP2004514214A JP 2004514214 A JP2004514214 A JP 2004514214A JP 2002543291 A JP2002543291 A JP 2002543291A JP 2002543291 A JP2002543291 A JP 2002543291A JP 2004514214 A JP2004514214 A JP 2004514214A
Authority
JP
Japan
Prior art keywords
update
operating code
code
updated
resident
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2002543291A
Other languages
English (en)
Other versions
JP2004514214A5 (ja
Inventor
オニール,パトリック ジェイ.
Original Assignee
ビットフォン コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ビットフォン コーポレイション filed Critical ビットフォン コーポレイション
Publication of JP2004514214A publication Critical patent/JP2004514214A/ja
Publication of JP2004514214A5 publication Critical patent/JP2004514214A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本発明は、ソフトウェア(110a)と装置(104a)とデータ(110c)とによって構成されている、ディジタル情報シーケンスをアップデートするための効率的な装置とシステムと方法とを開示する。さらに、このディジタル情報シーケンスは、ファイル、記憶場所、および/または、組込み記憶場所を非限定的に含む様々な形式で記憶され使用されることが可能である。したがって、開示される本発明は、様々なタイプのディジタル情報シーケンスをアップデートすることと、多数のファイルで構成されているソフトウェアをアップデートすることとに適している。さらに、本明細書で開示される装置とシステムと方法は、必要に応じてアップデート情報を生成する改善された能力を当業の開発者に提供し、さらには、誤りの影響を受けずかつ従来の技術の使用する場合よりも迅速に行われることが可能である、単純化されたアップデートパスをユーザが進むことを可能にする。

Description

【0001】
発明の背景
発明の分野
本発明は一般的に情報アップデートシステムに関し、さらに特に、アップデートのサイズを縮小しプラットフォームとは無関係な形でそのアップデートを配布するソフトウェアシステムおよび方法に関する。
【0002】
関連技術の説明
ソフトウェアおよびハードウェア技術の迅速で連続的な進歩と共に、既存の装置およびソフトウェアコンポーネントの保守という問題がますます深刻なものになっている。コンピュータと装置とソフトウェアアプリケーションとがそれらの運用寿命全体にわたって完全に機能するように保たれることを確実にするためには、情報のアップデートおよびパッチのルーチンインストレーションが必要であることが認識されている。不幸にして、多くの装置とアプリケーションに関して、アップデート管理が、面倒で、時間がかかり、かつ、誤りが生じやすいプロセスである可能性がある。これらの問題は、セルラー電話およびパーソナルディジタルアシスタントのような携帯用電子装置においては、そのメモリの制約と帯域の制限とのために悪化せしめられる場合が多い。さらに、携帯用電子装置は、簡便で確実な仕方で自動アップデート動作を行う能力に欠けている場合が多い。この結果として、ハードウェアシステムとソフトウェアシステムの両方と共に使用されることが可能な改善されたアップデートプロセスが現在必要とされている。さらに、メモリの制約と帯域の制限とに起因して生じる潜在的な問題を軽減することを助けるために、アップデートパッケージのサイズを縮小するアップデート方法が必要とされている。
【0003】
アップデート可能な電子装置およびソフトウェアがますます高度なものになっているので、週単位または月単位でアップデートが使用可能にされ好ましくは適用される頻繁な保守を必要とすることが多い。アップデートプロセス中は、そのアップデートが不適切に行われるか中断されてデータ破損やプログラムのファンクショナリティの損失やハードウェア故障を結果的に引き起こすことがある場合に、問題が生じることが多い。このことは、使用可能なアップデートがタイミング良く有効な形でインストールされることを確実にすることに関して、開発者および顧客の両方に対して重大な障害をもたらす。さらに、開発者は、既存のソフトウェアコンポーネントおよび/またはハードウェアコンポーネントの必要なアップデートおよびパッチと新たなバージョンとがユーザに提供されることを確実にするために多大な量の時間とリソースとを費やさなければならない。
【0004】
開発者が取り組まなければならない重要問題の幾つかが、大きな顧客ベースに対してアップデートを保存し供給するのに必要とされる大量のリソースと、顧客が適正にそのアップデートを適用するのを補助することに関する技術サポートの課題と、そのアップデートがタイミング良くかつ効率的な仕方で顧客に配布される方法とを含む。スキルの高度な要件が、使用可能なアップデートを取得してインストールするために必要とされ、および、平均的な顧客の技術的スキルを超えた技術的スキルを要求することがある場合には、さらに別の問題が存在する。顧客は、その顧客がアップデートを取得することが可能である場合でさえ、そのアップデートの適正なインストレーションを確実なものにするという問題に直面せしめられる。アップデートパッケージの不適正なインストレーションはソフトウェア障害を結果的に生じさせるか、または、アップデートが適用される装置を動作不能にし、顧客に関連したアップデートの問題点を解決する上で開発者にさらに別の負担を負わせることがある。アップデート可能なコンポーネントを有する電子装置への依存性が増大するにつれて、アップデートが容易に取得されて必要または所望に応じて適正にインストールされることが可能であることを確実にするために、より迅速でより直観的なアップデート能力と、より小さいアップデートファイルサイズとが必要とされている。多くの事例では、アップデートパッケージの容易さと信頼性と可用性とが顧客の数と忠誠心とに大きく影響を与える可能性があり、および、成功を収める開発者または業者を判別する特徴である。
【0005】
卓越したアップデートシステムの重要性は明白であるが、従来のアップデートソリューションは典型的には幾つかの欠点を有する。これらの問題点は携帯用電子装置において特に顕著であり、アップデートパッケージの生成と配給とインストレーションとに関連した幾つかの要因のために生じる。例えば、セルラー電話のような電子装置は、アップデート処理のために使用可能なメモリ空間すなわち記憶空間に関して制限されていることが多い。アップデートパッケージのサイズは、これらの装置上における減少したリソース可用性に適合するように、最小限に保たれなければならず、および、この結果として、これらの装置における組込みコードの大幅な変更すなわち改変を行う能力が制限されることがある。さらに、オペレーティングシステムの完全な置換または保守に向けられている携帯用電子装置の従来のアップデート方法は、そのアップデートを適用する専用の装置に対してその装置が有線接続によって物理的に接続されていることを必要とする。この仕方でアップデートすることは専用のハードウェアを必要とし、および、アップデートされるべき装置が製造業者または適切なサービスロケーションに戻されることを必要とする。これはユーザにとって不便であり、アップデートされるべき装置の数が多い場合には実際的ではないことがある。
【0006】
アップデートパッケージのワイヤレス取得およびインストレーションをサポートする装置では、使用可能なアップデートパッケージを配布するために必要とされる帯域の制限のために問題が生じることが多い。さらに、ワイヤレス方式によるアップデートパッケージの取得は長時間を要し、中断またはデータ破損を被る可能性がある。アップデートパッケージがすでに取得されている場合でさえ、アップデートのインストレーションがユーザ側における高度の技術的専門知識を必要とし、そのアップデートパッケージの適正なインストレーションを面倒なものにする。この時点において、ユーザは、アップデートされるべきコードの以前のバージョンをアンインストールすることに関連した問題、または、成功する形でアップデートを適用することに関連した問題に直面せしめられる可能性がある。このことは、長時間をかけてアップデート作業を行うことをユーザに思いとどまらせ、または、場合によっては、アップデート作業全体を行うことをユーザに思いとどまらせるので、さらに別の問題をもたらす可能性がある。
【0007】
多数のユーザに対してアップデートを提供するために公開アクセス可能なサーバに依存するアップデート管理システムに関しては、さらに別の問題が存在する。こうしたサーバはビジー状態すなわち混み合い状態になることが多く、および、アップデートが取得されることが可能な効率を低下させることが多い。アップデート要件から結果的に生じるさらに別の複雑さは、短縮された製品バージョン寿命から生じる。新たなソフトウェアのリリースが数ヶ月毎(「バグフィクス」およびバージョン内アップデートの場合には、数週毎に)に入手可能であることは珍しいことではない。このことは、アップデートサービスを維持するために必要とされる開発者リソースに対する要求を増大させ、その結果として、開発者が既存のソフトウェアの保守のために追加のリソースを費やすことになり、場合によっては、その開発者が、新たな製品能力を開発することから先行バージョンのサポートおよびアップデートに焦点を移行させる可能性もある。ビジネスの視点から見た場合には、ソフトウェアのアップデートは一般的に非収益性の生産活動と見なされており、過度の割合の開発者リソースを消費することがある。したがって、顧客がソフトウェアの最新バージョンを提供されることを確実にすると同時に既存のソフトウェアに対するサービスを行うために必要とされる時間とリソースと人員とを減少させることが、現在必要とされている。
【0008】
アップデートをより迅速かつ直観的なものにする試みが、内部的に設計されサポートされているアップデートソリューションの開発をもたらしている。幾つかの問題点が、典型的には高コストであり知的所有権下にありかつプラットフォームに特化しているこうしたソリューションに関連している。アップデート生成のための他の方法は、アップデートを生成するかまたはソフトウェアのためのパッチを生成するように設計されている市販のソフトウェアパッケージを使用する。これらの方法は両方とも柔軟性とファイルサイズとに関して特有の問題点を有する。市販入手可能なソフトウェアアップデータ(software updater)は高コストであり、典型的には、不要に大きなファイルサイズを有するアップデートを生成する可能性がある。幾つかの例では、このアップデータ(updater)によって生成される新たなバージョンまたはアップデートは、実際には、実際のパッチではなくそのソフトウェアのフルバージョンである。アップデートの大きなファイルサイズに関連した問題のために、開発者は頻繁にパッチをリリースすることに躊躇し、その結果としてより長期のソフトウェア開発サイクルに従う可能性がある。このことは、大きなアップデートファイルの生成と配布とを正当化にするのに十分なだけ大幅な変更および/または改善があるときにだけアップデートがリリースされる可能性があるので、限られた数のアップデートのせいで顧客に迷惑をかける可能性がある。
【0009】
上述の説明から、利便性が高くかつ信頼性が高いアップデート管理システムが現在必要とされているということが理解できる。この目的のために、より迅速な取得を可能にするようにサイズが低減せしめられているアップデートを生成し配布するシステムが必要とされている。さらに、ハードウェアシステムとソフトウェアシステムの両方に対して同様に所望のアップデートをインストールするための、利便性が高くトラブルのない方法を提供する自動化されたプロセスが必要とされている。
【0010】
発明の概要
本発明は、ソフトウェアと装置とデータとを含むディジタル情報シーケンスの効率的なアップデートに関する上述の要求を満たす。さらに、これらのディジタル情報シーケンスは、ファイルや記憶場所や組込み記憶場所を非限定的に含む様々な形で記憶および使用されてよい。本明細書で説明するシステムおよび方法は、必要に応じてアップデート情報を生成するための改善された能力を開発者に提供し、さらには、誤りが生じ難くかつ既存の技術の使用の場合に比べてより迅速に行われることが可能な単純化されたアップデートパスをユーザが進むことを可能にする。
【0011】
本発明は、一実施態様では、第1の複数のディジタル情報シーケンスを含むアップデートされたオペレーティングコードによって、複数の分散した電子装置をアップデートするシステムを含み、この複数の電子装置の各々は、その電子装置内に記憶されている第2の複数のディジタル情報シーケンスを含む常駐オペレーティングコードを含む。このシステムは、さらに、アップデートされたオペレーティングコードを含む第1の複数のディジタル情報シーケンスのイメージを、常駐オペレーティングコードを含む第2の複数のディジタル情報シーケンスのイメージに対して比較し、アップデートされたオペレーティングコードと常駐オペレーティングコードとの間の差異を識別し、その後で、常駐オペレーティングコードの第2の複数のディジタル情報シーケンスの少なくとも一部分を使用することによって、アップデートされたオペレーティングコードを生成する仕方を指定する命令セットを含むアップデートパッケージを生成するアップデートジェネレータを含む。このシステムは、さらに、アップデートパッケージが電子装置によって受け取られてその中に記憶されるように電子装置にアップデートパッケージを配布する配布システムを含む。このシステムは、さらに、複数の電子装置の各々にそれぞれに常駐している複数のクライアントモジュールを含み、この複数のクライアントモジュールは配布システムにアクセスしてアップデートパッケージを受け取り、および、アップデートパッケージの命令セットは、常駐オペレーティングコードからの第2の複数のディジタル情報シーケンスの少なくとも一部分を使用することによって、アップデートされたオペレーティングコードを生成するように、クライアントモジュールによって実行される。
【0012】
本発明は、別の側面では、第1のコードバージョンを第2のコードバージョンに変換する複数の変換命令を含むアップデートパッケージを使用することによって、第1のコードバージョンを含む第1の複数のデータシーケンスを含む電子装置を、第2の複数のデータシーケンスを含む第2のコードバージョンにアップデートするシステムを含む。このシステムは、さらに、第1の複数のデータシーケンスと第2の複数のデータシーケンスとの間のパターン差を識別するために第1のコードバージョンと第2のコードバージョンとの間のバージョン比較を行うアップデートジェネレータを含み、この識別されたパターン差は、この識別されたパターン差の構築に使用されることが可能な第1の複数のデータシーケンスの一部分を識別する変換命令を使用することと、その後で変換命令を使用してアップデートパッケージを形成することとによって符号化される。このシステムは、さらに、アップデートジェネレータからアップデートパッケージを受け取ってそのアップデートパッケージを電子装置に配布する配布システムを含む。このシステムは、さらに、電子装置内に常駐している第1のコードバージョンをアップデートされた第2のコードバージョンに変換するようにアップデートパッケージの変換命令を実行する、その電子装置上に常駐しているアップデートエージェントを含む。
【0013】
本発明は、さらに別の側面において、複数のデータブロックを含むアップデートされたオペレーティングコードによって複数の分散した電子装置をアップデートするシステムを含み、この複数の分散した電子装置の各々は、複数のデータブロックとして記憶されている常駐オペレーティングコードを含む。このシステムは、さらに、常駐オペレーティングコードの複数のデータブロックをアップデートされたオペレーティングコードの複数のデータブロックと比較し、それによって、常駐オペレーティングコードの複数のデータブロックを少なくとも部分的に使用することによって、アップデートされたオペレーティングコードを生成する仕方を指示する命令セットを含むアップデートパッケージを生成する、アップデートジェネレータを含む。このシステムは、さらに、アップデートパッケージを含みかつ複数の分散した電子装置の各々によってアクセス可能である配布システムを含む。このシステムは、さらに、複数の分散した電子セットの各々にそれぞれに常駐している複数のクライアントモジュールを含み、この複数のクライアントモジュールは、アップデートパッケージを受け取ることが可能であるように配布システムにアクセスし、命令セットはクライアントモジュールに命令を提供し、その結果として、クライアントモジュールは、常駐オペレーティングコードを含む複数のデータブロックを使用することによって、アップデートオペレーティングコードを含む複数のデータブロックの少なくとも一部分を生成する。
【0014】
本発明は、さらに別の側面において、複数のデータブロックを含むアップデートされたオペレーティングコードによって複数の分散した電子装置をアップデートするシステムを含み、複数の分散した電子装置の各々は、複数のデータブロックとして記憶されている常駐オペレーティングコードを含む。このシステムは、さらに、常駐オペレーティングコードの複数のデータブロックをアップデートされたオペレーティングコードの複数のデータブロックと比較して、それによって、アップデートオペレーティングコードと常駐オペレーティングコードとの間で異なっているアップデートデータブロックを識別し、および、アップデートジェネレータは、常駐オペレーティングコードをアップデートされたオペレーティングコードに変換する仕方と、常駐オペレーティングコードの複数のデータブロックを少なくとも部分的に使用することによってアップデートデータブロックを生成する仕方とを指示する命令セットを含むアップデートパッケージを生成する。このシステムは、さらに、アップデートパッケージを含みかつ複数の分散した電子装置の各々によってアクセス可能である配布システムを含む。このシステムは、さらに、複数の分散した電子セットの各々にそれぞれに常駐している複数のクライアントモジュールを含み、この複数のクライアントモジュールは、アップデートパッケージを受け取ることが可能であるように配布システムにアクセスし、命令セットはクライアントモジュールに命令を提供し、その結果として、クライアントモジュールは常駐オペレーティングコードをアップデートされたオペレーティングコードに変更し、および、クライアントモジュールは、アップデートデータブロックを生成するように常駐オペレーティングコードのデータブロックに対して操作を行うために、受け取られた命令セットを使用することによって、アップデートデータブロックの少なくとも一部分を生成する。
【0015】
さらに別の実施態様では、本発明は、電子装置の第1の記憶セクションに記憶されている常駐オペレーティングコードをアップデートされたオペレーティングコードにアップデートする方法を含む。この方法は、さらに、常駐オペレーティングコードをアップデートされたオペレーティングコードに変換するための複数の変換操作を含むアップデートパッケージを開発する段階を含む。この方法は、さらに、アップデートパッケージを電子装置に転送する段階を含む。この方法は、さらに、常駐オペレーティングコードの一部分を第2の記憶セクションにコピーする段階を含む。この方法は、さらに、常駐オペレーティングコードを更新されたオペレーティングコードに変換するために、更新パッケージの変換操作を使用することによって、第2の記憶セクション内に記憶されている常駐オペレーティングコードの一部分を更新する段階を含む。この方法は、さらに、第1の記憶セクション内に記憶されている常駐オペレーティングコードの一部分を、第2の記憶セクション内に記憶されているアップデートされたオペレーティングコードの一部分によって置き換える段階を含む。この方法は、さらに、常駐オペレーティングコードがアップデートされたオペレーティングコードに完全にアップデートされ終わるまで上述のコピー段階とアップデート段階と置換段階とを繰り返す段階を含む。
【0016】
さらに別の実施態様では、本発明は、オペレーティングコードが中に記憶されている不揮発性記憶セクションと、複数の命令を含むアップデートパッケージを通信媒体を経由して受け取るようになっている揮発性記憶セクションと、不揮発性記憶セクション内に記憶されているオペレーティングコードをアップデートするためにアップデートパッケージの命令を実行するコントローラとを含む、アップデート可能な電子装置を含む。この実施態様では、このコントローラは、逐次的に(i)オペレーティングコードのオリジナル部分を不揮発性記憶セクションから揮発性記憶セクションの中に取り出し、(ii)取り出されたオペレーティングコードのオリジナル部分をアップデートされたオペレーティングコード部分に変換するように、揮発性記憶セクション内の取り出されたコード部分に対してアップデートパッケージの命令を適用し、および、その次に(iii)アップデートされたオペレーティングコード部分によってそのオペレーティングコードのオリジナル部分を置き換えるように構成されている。
【0017】
本発明のこれらの側面と利点と新規の特徴とその他の側面と利点と新規の特徴とが、添付図面を参照しながら以下の詳細な説明を理解することによって明らかになるだろう。添付図面では、同種の要素が同じ参照番号を有する。
【0018】
好ましい実施形態の詳細な説明
以下では、図面を参照し、これらの図面では全体を通じて同じ番号が同じ部品を示す。図1Aは、アップデート配布システム100の一実施形態を示す。このアップデート配布システム100は、アップデートジェネレータ102とクライアント装置104とを含む。一実施形態では、アップデートジェネレータ102は、ソフトウェアアプリケーションの旧バージョンのような第1のコードバージョン106と、ソフトウェアアプリケーションの新バージョンのような第2のコードバージョン108とを受け取る。アップデートジェネレータ102は、好ましいことに第1のオリジナルのコードバージョン106を第2のアップデートされたコードバージョンに変換するために使用される複数の操作を表す命令セットを含むアップデートパッケージ110を生成する。その次に、アップデートパッケージ110は通信媒体を経由してクライアント装置104に転送される。採用可能な通信媒体は、結線で接続された媒体、取外し可能記憶媒体、ワイヤレス媒体、揮発性および不揮発性メモリベース媒体、ならびに、インターネットを含んでよい。他の通信媒体は、例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、公衆インターネット、専用インターネット、専用コンピュータネットワーク、セキュアインターネット(secure internet)、専用ネットワーク、公衆ネットワーク、付加価値ネットワーク、対話型テレビネットワーク、ワイヤレスデータ伝送ネットワーク、両方向ケーブルネットワーク、対話型キオスクネットワーク等を含んでよい。これに加えて、クライアント装置104は、アップデートパッケージ110を受け取って処理することが可能な様々なタイプの装置、例えば、コンピュータ、パーソナルディジタルアシスタント(PDA)、有線電話、移動電話、ページャ、電子周辺装置、アプライアンス、および、アップデートパッケージを受け取るように構成されることが可能な他のこうした装置を含んでよい。
【0019】
一側面では、命令セットが、既存の第1のコードバージョン106を第2のコードバージョン108に効率的に変換するためにクライアント装置104によって使用される変換プロセスを使用する。命令セットと変換プロセスの実行とについては、より詳細に後述する。
【0020】
クライアント装置104がアップデートジェネレータ102からアップデートパッケージ110を安全かつ確実に得る少なくとも1つの方法が、上述の通信媒体タイプの少なくとも1つによるアップデートパッケージ102の形での情報の転送によって実現されることが可能である。クライアント装置104は、さらに、アップデートジェネレータ102と双方向に通信する能力を備えていてもよい。一実施形態では、クライアント装置104は、装置のタイプ、モデルおよび/または構成と、そのクライアント装置104によって現在使用されているオペレーショナルソフトウェアまたはアプリケーションのバージョンとを含む識別情報を転送する。アップデートジェネレータ102はクライアント装置104から所望の識別情報を受け取り、その次に、クライアント装置104によって必要とされおよび/または要求される所望のアップデートパッケージ110を生成する。あるいは、アップデートジェネレータ102は、複数のアップデートパッケージ110を生成して提供する能力を備えていてもよく、この複数のアップデートパッケージ110は、識別情報を受け取る前に、複数のオペレーショナルソフトウェアバージョンまたはアプリケーションを参照する。この実施形態では、アップデートジェネレータ102は、所望のアップデートパッケージ110aのアーカイブされたバージョンをメモリすなわち記憶装置から取り出すことが可能である。さらに、アップデートジェネレータ102はバージョンマニフェスト(version manifest)を生成してよく、このバージョンマニフェストは、様々な個別のクライアント装置104に関するオペレーショナルソフトウェアバージョン情報を含むアーカイブされたアップデートパッケージ102のリストを含む。アップデートパッケージ110が生成され、妥当性検査され、使用可能であると見なされると、アップデートジェネレータ102はサーバとして機能し、要求されまたは必要とされる通りに所望のアップデートパッケージ110をクライアント装置104に転送することができる。オペレーショナルソフトウェアのアップデートされたバージョンが使用可能になるときに、1つまたは複数のアップデートパッケージ110が生成されてアーカイブされることが可能であるということが理解されるだろう。さらに、アップデートパッケージ110は、例えば不揮発性メモリコンポーネントまたは携帯用電子装置をアップデートするために必要とされることがあるハードウェアアップデートシステムのようなハードウェアアップデートシステムと共に使用するように用意されることが可能である。アップデート管理システムの1つの好ましい特徴が、ワイヤレスアップデート手順すなわちオーバー・ザ・エアー(OTA)アップデート作業において使用するために容易に適合化できるということである。このアップデート方法は、ハードウェアの変更なしに、その装置のソフトウェアコンポーネントまたはファームウェアコンポーネントのアップデートを可能にする。本明細書で説明するアップデート方法は、さらに、アプリケーションとオペレーショナルファンクショナリティとオペレーティングシステムソフトウェア等とを含むクライアント装置をアップデートするためにも使用できる。さらに、このアップデート操作は、装置内に常駐している既存のコードによって誤りまたは問題を訂正し、新たな特徴またはファンクショナリティを追加し、常駐アプリケーションを変更または改変し、または、より詳細に後述する仕方で他の所望のアップデート操作を行うことが可能である。
【0021】
一実施形態では、アップデートジェネレータ102は、アップデートパッケージ110の生成と配布の両方を行う役割をする単一の計算装置またはサーバコンポーネントを含む。アップデートジェネレータ102は、クライアント装置104のためのアップデートパッケージ110の命令セットを構成するために、専用ソフトウェアを実行するように備えられている。さらに、アップデートジェネレータ102は、第1のコードバージョン106を第2のコードバージョン108に対して比較することによってアップデートパッケージ110を生成する。アップデートパッケージ110が、第1のコードバージョン106を第2のコードバージョン108に変換する、命令セットの形に符号化された数学的演算と命令とを含むことが好ましい。アップデート管理システムの本質的特徴は、アップデートパッケージ110が、装置上に常駐している既存のコードまた情報を利用する形で生成されるということである。アップデートパッケージ生成のための方法は、第1のコードバージョン106を第2のコードバージョン108に変換することが可能であるときに、コードバージョン106、108の間の差を分析し、装置内の既存の情報シーケンスを使用するように特別に設計されている。この特徴は、従来の方法に比較してアップデートパッケージのサイズを著しく低減させるので重要である。一側面においては、アップデートパッケージ1107のファイルサイズは、第1のコードバージョン106と比較して90パーセント以上も低減せしめられることが可能である。有利なことに、アップデートパッケージ110のサイズが比較的小さくコンパクトなので、アップデートパッケージ110は、クライアント装置104のメモリ割当てサイズと帯域との仕様を大きく変更することなしにクライアント装置104のメモリコンポーネント内に容易に転送され記憶されることが可能である。一側面では、アップデートジェネレータ102は、1つまたは複数の異なるタイプのクライアント装置104に対する配布のための複数のアップデートパッケージ110を生成してアーカイブする。その次に、各クライアント装置104は、サーバによって選択的に送られる所望のアップデートパッケージ110の転送を要求することができる。
【0022】
図1Bは、アップデート配布システム120の別の実施形態を示す。このアップデート配布システム120は、アップデート配布システム120が、アップデートサーバアレイ122を含む別個の計算コンポーネントを伴う形で示されていることを除いて、図1Aのアップデート配布システム100に範囲とファンクショナリティとにおいて類似している。アップデート配布システム120は、アップデートジェネレータ102と、アップデートサーバアレイ122と、複数のクライアント装置104a、104b、104cとを含む。この特定の実施形態では、アップデートジェネレータ102は、複数のアップデートパッケージ110a、110b、110cを生成して、この複数のアップデートパッケージ110a、110b、110cをアップデートサーバアレイ122に転送するように示されている。さらに、その次に、アップデートサーバアレイ122は、複数のアップデートパッケージ110a、110b、110cを複数のクライアント装置104a、104b、104cに転送する。
【0023】
一側面では、アップデートサーバアレイ122は1つまたは複数の計算装置を含み、これらの計算装置は、アップデートジェネレータ100から転送される複数のアップデートパッケージ110a、110b、110cを記憶しアーカイブするように構成されることが可能である。記憶コンポーネントは、非限定的に、ハードドライブ、磁気テープ駆動装置、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、および、コンパクトディスクとフロッピーディスクと磁気テープとを含む取外し可能なRAMおよび/またはROMベースの記憶媒体を含む。さらに、アップデートサーバアレイ122は、複数のクライアント装置104a、104b、104cと互いに独立してかつ双方向に通信する能力を備えていてもよく、アップデートサーバアレイ122は、装置のタイプとモデルと構成と、クライアント装置104a、104b、104cで現在使用されているオペレーショナルソフトウェアまたはファームウェアのバージョンとを含む、識別情報を受け取る。さらに、クライアント装置104a、104b、104cは、必要または所望に応じてアップデートパッケージ110a、110b、110cを要求することもできる。
【0024】
一側面では、アップデートサーバアレイ122は、指定されたアップデートパッケージ110a、110b、110cの転送を求める要求と共に、個々のクライアント装置104a、104b、104cからの識別情報を受け取る。この後で、アップデートサーバアレイ122は、要求されたアーカイブされているアップデートパッケージを発見し、その要求されたアップデートパッケージをクライアント装置に転送する。アップデートサーバアレイ122は、さらに、クライアント装置104からの要求なしにクライアント装置104に対してアップデートパッケージ110を自動的に転送することもできる。
【0025】
有利なことに、アップデートサーバアレイ122は、アップデート配布の柔軟性と効率とを増大させるために上述の様々な通信媒体タイプの少なくとも1つを介して複数のアップデートパッケージ110a、110b、110cを複数のクライアント装置104a、104b、104cに対して転送することを調整することもできる。複数のクライアント装置104a、104b、104cの少なくとも1つから識別情報を受け取った後に、アップデートサーバアレイ122はメモリまたは記憶装置のアーカイブからアップデートパッケージ110a、110b、110cの所要のバージョンを取り出して、その次に所望のアップデートパッケージ110a、110b、110cを個々のクライアント装置104a、104b、104cに転送する。一実施形態では、アップデートサーバアレイ122は、クライアント装置104a、104b、104cからの要求なしに、自動的にアップデートパッケージ110a、110b、110cをクライアント装置104a、104b、104cに転送することもできる。
【0026】
あるいは、アップデートサーバアレイ122は、クライアント装置104a、104b、104cのタイプと構成とモデルとに依存する様々な個々のクライアント装置104a、104b、104cに属する、オペレーショナルソフトウェアのバージョン情報を含むアーカイブされたアップデートパッケージ110a、110b、110cのリストを含むサーバマニフェストを生成することも可能である。1つまたは複数のクライアント装置104a、104b、104cを認識すると、アップデートサーバアレイ122は、1つまたは複数のクライアント装置104a、104b、104cにサーバマニフェストを転送することが可能である。その次に、1つまたは複数のクライアント装置104a、104b、104cはそのマニフェストを評価し、要求している1つまたは複数のクライアント装置104a、104b、104cにアップデートサーバアレイ122から転送されるべきアップデートパッケージ110a、110b、110cに関する要求を送る。
【0027】
別の側面では、アップデートパッケージ110は、上述の通信媒体の少なくとも1つを経由してアップデートジェネレータ100からアップデートサーバアレイ122に送られることができ、このことが、1つまたは複数のクライアント装置104a、104b、104cに対するアップデートパッケージ110a、110b、110cの可用性の増大を促進する。一実施形態では、アップデートサーバアレイ122は、様々なクライアントベースの装置104a、104b、104cのための複数のアップデートパッケージ110a、110b、110cを利便性が高い形で記憶することが可能なマルチプラットフォーム計算装置であり、および、各クライアント装置104a、104b、104cとの通信を個別に確立する。アップデートサーバアレイ122は、1つまたは複数のクライアント装置104a、104b、104cによって必要とされる要求および/または所望されたアップデートパッケージ110a、110b、110cを判定するために、1つまたは複数のクライアント装置104a、104b、104cを認識することが可能である。例えば、アップデートパッケージ110はクライアント装置104に送られ、および、アップデートパッケージ110を復号することとアップデートおよび/または変換されるように設計および指定されているオペレーショナルソフトウェアコンポーネントを変更することとが可能なソフトウェアコンポーネントを使用することによって、クライアント装置104によってさらに処理されてもよい。クライアント側のアップデート処理の諸側面についてはさらに詳細に後述する。アップデートサーバアレイ122とアップデートジェネレータ102は、図1Bには別々の計算コンポーネントとして示されているが、アップデートサーバアレイ122とアップデートジェネレータ102の両方の役割を果たすために必要な適用範囲とファンクショナリティとを有する単一のエンティティを成してもよい。
【0028】
別の実施形態では、アップデートサーバアレイ122のアップデート計算アーキテクチャは、コレクタ(collector)と呼ばれる追加のコンポーネントを含み、このコレクタは、アップデートジェネレータ102によって生成されるアップデートパッケージ110a、110b、110cの少なくとも1つを使用してアップデートされることが可能な他の装置のための情報およびアップデートを収集する。この特定の実施形態では、コレクタは、どのクライアント装置104a、104b、104cがアップデート作業を要求しているかということと、アップデートが使用可能であるかどうかということとを判定するために、アップデートサーバアレイ122と1つまたは複数のクライアント装置104a、104b、104cとの両方と通信することが可能である。コレクタは、さらに、必要なアップデートを取得し、その時点で、または、その後の時点で、そのアップデートをクライアント装置104a、104b、104cに配布することが可能である。このようにして、多数のクライアント装置104a、104b、104cは、その後で、アップデートサーバアレイ122全体にわたって帯域要件を分散させるようにアップデートされることが可能である。さらに、アップデートパッケージ110は、サーバが多数のクライアント装置からの同時のアップデート要求によってオーバーランされないように、配布負荷をずらす(stagger)ために、互いに異なる時点において配布するようにスケジュール設定されてもよい。
【0029】
一側面では、このアップデート配布方法は、ネットワークのトラフィックを低下させないように、1つまたは複数のサーバ上に情報をキャッシュすることを含む。この方法を使用することによって、「最新の」アップデートファイルがサーバ上に記憶されることが可能であり、および、アップデートパッケージが、サーバとアップデート記憶装置133またはアップデートジェネレータ102との間の追加の通信を必要とせずに直接的にクライアント/サーバ通信によって装置サーバからダウンロードされることが可能である。
【0030】
図1Cは、アップデート配布システム130のさらに別の実施形態を示す。このアップデート配布システム130は、アップデートジェネレータ102と、複数のクライアント装置104a、104b、104cと、図1Bで以前に示したアップデートサーバアレイ132のコンポーネントバージョンとを含む。アップデートサーバアレイ132のコンポーネントバージョンは、さらに、管理コンポーネント134を有するアップデート記憶装置133と、少なくとも1つのアップデート装置サーバ136とを含む。一側面では、アップデート記憶装置133は、アップデートジェネレータ102から転送された複数のアップデートパッケージをアーカイブする。
【0031】
様々な理由から、オペレーショナルソフトウェアシステムは、より旧いバージョンからより新しいバージョンへの周期的なアップデートを必要とする。さらに、オペレーショナルソフトウェアの多重アップデートされたバージョンが、計算技術の進歩に適応するという目的のためにクライアント装置の寿命全体にわたって必要とされるだろう。これらの要件を満たすために、アップデートジェネレータ102は、オペレーショナルシステムソフトウェアのより新しいバージョンが使用可能になるときにアップデートパッケージを生成し、その次に、メモリまたは記憶装置コンポーネント内に記憶してアーカイブするために、アップデート記憶装置133に複数のアップデートパッケージを転送する。
【0032】
典型的なアプリケーションでは、アップデート管理システムが、セルラー電話すなわち移動電話のような携帯用電子装置のオーバー・ザ・エアでのアップデート作業に関連して使用されることも可能である。移動通信技術は、そのユーザのますます高まる欲求と期待とに答えるために急速に変化している分野である。移動電話は、さらに、一体化したオペレーショナルシステムソフトウェアを使用するマイクロコンピューティング装置(micro−computing device)でもある。このオペレーティングソフトウェアは、移動電話の寿命全体にわたって、ワイヤレス通信技術の変化に対する適合性を増大させるために、定期的なソフトウェアアップデートを必要とするだろう。製造エンティティの各々が独自のオペレーショナルソフトウェアシステムを有し、および、ユーザファンクショナリティが移動電話の様々な構成とモデルとの中に一体化されているので、移動通信産業におけるアップデートは、様々な異なる製造エンティティの存在のせいで面倒なものになっている。こうした状況では、アップデートジェネレータ102は、特定の製造業者の移動通信装置の構成およびモデルに関係するクライアント装置104a、104b、104cに実装されているオペレーショナルソフトウェアのより新しいバージョンに関して適正なアップデートパッケージ110a、110b、110cを生成することによって、業界の適応的な要求を満たすことが可能である。
【0033】
クライアント側のアップデート決定
一側面において、クライアント装置104はアップデート記憶装置133と通信リンクを確立し、そのクライアント装置104のタイプとモデルと構成と、そのクライアント装置で現在使用されているコードバージョンとを含む識別情報を転送する。アップデート記憶装置133は、クライアントに対してサーバマニフェストを転送することによって応答する。上述したように、サーバマニフェストは、使用可能なアップデートパッケージを記述するバージョン情報を含む。さらに、サーバマニフェストは、アップデートパッケージを受け取ってアンパック(unpack)するのに十分な空間がクライアント記憶領域内で使用可能であるかどうかをクライアントが判定することが可能であるように、ファイルサイズのようなアップデートパッケージの特徴を記述してよい。クライアント装置104内で発見された実装コードバージョンに対して、サーバマニフェストに記述されている使用可能なコードバージョンを比較した後で、さらに、適切なアップデートパッケージ110を求める要求がクライアント装置104によって送られることが可能である。この要求の受け取り後に、アップデート記憶装置133は、旧いコードバージョンを要求されているより新しいコードバージョンに適正に変換するための正しい命令セットに対応する所望のアップデートパッケージ110を参照して探索する。もう1つの側面では、アップデート記憶装置133は要求発信を受け取り、アップデート管理コンポーネント134がその要求発信を処理し、アップデート記憶装置133またはアップデート装置サーバ136上の所望のアップデートパッケージ110を発見する。その特定のアップデートパッケージ110が発見されると直ぐに、アップデート管理コンポーネント134が所望のアップデートパッケージ110を参照し、その所望のアップデートパッケージ110をクライアント装置104に転送するためにクライアント装置104との通信リンクを確立するように、アップデート装置サーバ136に命令する。
【0034】
サーバ側のアップデート判定
別の実施形態では、クライアント装置104はアップデート装置サーバ136との通信リンクを確立し、そのクライアント装置104のタイプ、モデルおよび/または構成と、そのクライアント装置104で現在使用されているオペレーショナルシステムソフトウェアのバージョンとを含む識別情報を転送する。アップデート装置サーバ136aは識別情報を分析し、サーバマニフェストを検査し、または、アップデートパッケージ110の存在に関してアップデート記憶装置133に問い合わせる。サーバマニフェストまたはアップデート記憶装置133上のオペレーショナルソフトウェアの使用可能なバージョンを、クライアント装置104によって転送されたオペレーショナルソフトウェアの実装バージョンと比較した後に、アップデート記憶装置133は、アップデートパッケージ110をクライアント装置104に対して転送することを命令する。
【0035】
一側面では、アップデートパッケージ110は、要求に応じて、クライアント装置104に対する配布のためにアップデート記憶装置133から1つまたは複数のアップデート装置サーバ136に転送される。この場合には、1つまたは複数のアップデート装置サーバ136は、アップデート記憶装置133によって要求される通りにアップデートパッケージ110をクライアントに転送するゲートウェイとして働く。1つまたは複数のアップデート装置サーバ136の使用が好ましいことに負荷の平均化を改善し、および、同じアップデートパッケージプロバイダに接続されている多数のクライアント装置104を有することによって強いられる帯域の制限を低減させる。
【0036】
一側面では、クライアント装置104によって要求されているかまたは必要とされていると判定される特定のアップデートパッケージ110がアップデート記憶装置133内で得られない場合には、アップデート管理コンポーネント134がその特定のアップデートパッケージ110を生成するためにアップデートジェネレータ102に対して要求を転送することができる。アップデートパッケージ100が生成されると、アップデートジェネレータ102は、記憶および要求サービスのためにアップデートパッケージ110をアップデート記憶装置133に転送する。アップデート記憶装置133のメモリエリアすなわち記憶領域内にアップデートパッケージ110を保存した後に、アップデート管理コンポーネント134は所望のアップデートパッケージ110をアップデート装置サーバ136に転送することができる。その次に、アップデート装置サーバ136はクライアント装置104bとの通信を確立して、要求されたアップデートパッケージをクライアント装置104に転送することができる。
【0037】
図1Dは、アップデート配布システム140のさらに別の実施形態を示す。このアップデート配布システム140は、アップデートジェネレータ102と、複数のクライアント装置104a、104b、104c、104d、104e、104f、104g、104h、104iと、図1Cに示されている通りのアップデートサーバアレイ122に適用範囲とファンクショナリティとにおいて類似しているアップデートサーバアレイ142のコンポーネントバージョンの別の実施形態とを含む。アップデートサーバアレイ142は、アップデート管理コンポーネント132を含むアップデート記憶装置133と、複数のアップデート装置サーバ136a、136b、136cとを含む。複数のアップデート装置サーバ136a、136b、136cは、クライアント装置104a−104iとの通信リンクを確立することが可能であり、および、バージョンまたはマニフェスト情報を送信または受信するためにクライアント装置104a−104iと双方向に通信することができる。この実施形態は、アップデート記憶装置133のアップデート管理コンポーネント134が、複数のアップデート装置サーバ136a、136b、136cのアクティビティを通信して調整し、および、アーカイブされた複数のアップデートパッケージを複数のアップデート装置サーバ136a、136b、136cに転送することを命令することが可能である。有利であることに、この実施形態は、インターネットまたはワイヤレスローカルエリアネットワーク(WLAN)のような1つまたは複数のハードワイヤードまたはワイヤレスの通信媒体を経由して多量のアップデートパッケージ104を配布するためのアップデート配布システム100、120、130、140の柔軟性と有効性と効率とを示す。アップデート配布システム140のこの実施形態は、好ましいことに、複数の異なるクライアントサービスのためのアップデート要件を処理することが可能である。さらに、アップデート配布システム140は、情報とアップデートパッケージをクライアント装置と交換するために複数の異なる通信手段を使用することが可能である。
【0038】
図2Aは、クライアント装置とアップデート配布システム140との間の通信を詳述するアップデート問い合わせ/検索/インストレーションプロセスすなわちアップデートインストレーションプロセス200の概観を示す。アップデートインストレーションプロセス200は開始状態202で開始し、その次に状態204に進み、この状態204では、クライアント装置104がアップデート装置サーバ136との通信リンクを確立する。その次に、アップデートインストレーションプロセス200は状態206に進み、この状態206では、クライアント装置104はサーバマニフェストに関してアップデート装置サーバ136をポーリングする。一実施形態では、サーバマニフェストはアップデート記憶装置133からアップデート装置サーバ136に転送されてよく、または、アップデート装置サーバ136は、参照を容易にするために実装メモリまたは記憶装置コンポーネント内にそのサーバマニフェストを保持してもよい。一側面では、ポーリングされるサーバマニフェストは、アップデートされるべきソフトウェアやファイルシステムやハードウェアの最新の使用可能バージョンを判定するために使用される情報を含む。さらに、サーバマニフェストは、使用可能なアップデートが、クライアント装置104内に存在する既存のファイルやソフトウェアコンポーネントやファームウェアと異なっているかどうかを判定するために使用される、アップデートパッケージのサイズおよび他の変数を記述する情報を含んでもよい。ポーリングされるサーバマニフェストは、さらに、新たなコードバージョンの特徴を識別するアップデートシグネチャ(update signature)を含んでもよい。
【0039】
サーバマニフェストがクライアント装置104に転送されてそのクライアント装置104によって取得されると、アップデートインストレーションプロセスが状態208に進み、この状態208では、クライアント装置104がサーバマニフェスト中のアップデートシグネチャをそのクライアント装置104上に存在する既存のオペレーショナルソフトウェアのアップデートシグネチャと比較する。アップデートパッケージ104がアップデート装置サーバ136からダウンロードされてクライアント装置104上にインストールされるべきであるかどうかを状態210において判定するために、比較プロセスがクライアント装置104によって使用されることが可能である。この比較が完了した後に、アップデートインストレーションプロセス200は状態210に進む。クライアント装置104がオペレーショナルソフトウェアのアップデートバージョンが状態210で求められていないか必要とされていないか要求されていないと判定する場合には、アップデートインストレーションプロセス200は終了状態220で終了し、および、その次のスケジュール設定された起動またはユーザによって指示された起動まで非活動状態のままであってよい。
【0040】
あるいは、クライアント装置104がオペレーショナルソフトウェアのアップデートバージョンが状態210で要求されていると判定する場合には、クライアント装置104は状態212でアップデート装置サーバ136からアップデートパッケージ110を要求する。状態212において、アップデート装置サーバ136がアップデートパッケージ110に関する要求をアップデート記憶装置133に転送し、アップデート記憶装置133では、アップデート管理コンポーネント134が所望のアップデートパッケージ110の使用可能なバージョンを求めてアップデート記憶装置133を探索する。さらに、所望のアップデートパッケージ110のアーカイブされたバージョンが存在すると判定されかつ使用可能である場合には、所望のアップデートパッケージ110がアップデート記憶装置133のアーカイバルメモリ領域または記憶領域から検索されて、必要に応じてアップデート装置サーバ136に転送される。その後で、アップデート装置サーバ136は所望のアップデートパッケージ110をクライアント装置104に転送する。状態214では、クライアント装置104はアップデートパッケージ110を受け取り、アップデートインストレーションプロセスは状態216に進み、この状態216では、クライアント装置104がアップデートパッケージ110を後でインストールする。インストレーション操作の諸側面についてはさらに詳細に後述する。
【0041】
別の実施形態では、状態214において、アップデート管理コンポーネント134が、所望のアップデートパッケージ110のアーカイブされたバージョンが存在しないかまたは使用不可能であると判定する場合に、そのアップデート管理コンポーネント134は、アップデートジェネレータ102によって生成されるべき所望のアップデートパッケージ110を求める要求を送信する。アップデートインストレーションプロセス200のこの時点では、クライアント装置は、所望のアップデートパッケージ110が使用可能になるのを待機することができる。クライアント装置104が待機している間に、アップデートジェネレータ102は所望のアップデートパッケージ110を生じさせ、そのアップデートパッケージ110をアップデート記憶装置133に転送する。アップデートパッケージ110が使用可能である場合には、クライアント装置104は、状態216における後続のインストレーションのために所望のアップデートパッケージ110を受け取る。インストレーション操作216についてはより詳細に後述する。
【0042】
一側面においては、所望のアップデートパッケージ110を検索してインストールした後に、アップデートインストレーションプロセス200は終了状態218で終了する。ファイルまたはソフトウェアコンポーネントの所望のバージョンにアップデートして開発者の仕様にしたがって他の機能を実行した後に、クライアント装置104は、他のファイルまたはオペレーショナルソフトウェアコンポーネントに適用されることが好ましくは可能な追加のアップデートに関する調査に進むことが可能である。こうして、アップデートインストレーションプロセス200は、追加のアップデートの問い合わせのために必要または所望される通りに周期的に繰り返されることが可能である。アップデートシーケンスの典型的な一例では、ソフトウェアコンポーネントがバージョン1からバージョン2に適切にアップデートされ終わっている場合には、アップデートインストレーションプロセス200はアップデート記憶装置133からの追加のバージョン(すなわち、バージョン3)の使用可能性を調査し、ソフトウェアコンポーネントのファイルが使用可能な最も新しいバージョンにアップデートされ終わるまで、これらのインクリメンタルなアップデートを検索してインストールすることを進める。
【0043】
あるいは、別の実施形態では、アップデートインストレーションプロセス200は多数の使用可能なアップデート(バージョン)の存在を認識し、および、使用可能な各々のアップデートパッケージを逐次的に適用することなしに、使用可能な最も新しいバージョンを使用してファイルまたはコンポーネントをアップデートする(すなわち、バージョン1が直接的にバージョン3にアップデートされる)ことに取りかかることが可能である。特定のファイルまたはソフトウェアコンポーネントのアップデートサイクルの完了後に、アップデートインストレーションプロセス200は、他のファイルまたはソフトウェアコンポーネントがアップデートを必要としているかどうかを判定することができる。さらに別のアップデートが、全ファイルがアップデートされ終わるまでアップデートシグネチャ状態208の比較から始めて上述のように処理されてもよく、および、クライアント装置104はその動作を終了状態216で完了し、アップデートインストレーションプロセス200の次の起動まで非活動状態のままであってよい。クライアント装置104は自動的にアップデートを問い合わせて検索するように構成されてもよく、または、アップデートプロセスは、ユーザによって起動される機能であってもよい。
【0044】
上述のアップデートインストレーションプロセス200は、本発明の範囲から逸脱することなしに、1つまたは複数のアップデート装置サーバを経由して1つまたは複数のクライアント装置に同時および/または別々に適用されることが可能であるということが理解できるだろう。さらに、上述のアップデートインストレーションプロセス200は、図2Aまたは図2Bに関連して説明した通りのステップの類似のシーケンスを使用して、アップデート配布システム100、120、130、140の上述の実施形態のいずれにも適用されることが可能である。
【0045】
一側面では、アップデートコンポーネント102が自動的に動作するようにスケジュール設定されている場合には、このアップデートコンポーネント102は、その次のスケジュール設定された動作までバックグラウンドで稼働状態のままであってもよく、または、あるいは、アップデートインストレーションプロセス200が起動されることが好ましい時点において起動されてもよい。アップデートインストレーションプロセス200を含むアクティビティは、さらに、開発者の選好に応じてユーザに対して可視でも透過でもよい。さらに、状態206におけるサーバマニフェストのポーリングと、状態208におけるファイルの既存バージョンとアップデート装置サーバ132上での使用可能な最新バージョンとの間の差の識別というプロセスの後に、クライアント装置104は、アップデートが使用可能であることをユーザに通知して、そのアップデートを検索する許可を待機してもよく、または、あるいは、クライアント装置は、(ユーザに対する通知を伴うかまたは伴わずに)所望のアップデートパッケージを自動的に検索するように構成されてもよい。
【0046】
図2Bは、図1Aと図1Dに示されている上述のアップデート配布システムと共に使用できるアップデートインストレーションプロセス250の別の実施形態を示す。アップデートインストレーションプロセス250は開始状態252で開始し、その次に状態254に進み、この状態254ではクライアント装置104はアップデート装置サーバ136との通信リンクを確立する。その次に、アップデートインストレーションプロセス250は状態256に進み、この状態256では、アップデート装置サーバ136がクライアント装置104からのアップデート情報問合せを要求する。アップデート情報問合せは、装置のタイプとモデルと構成と、クライアント装置104によって現在使用されているオペレーショナルソフトウェアのバージョンとのような識別情報を含む。一実施形態では、この識別情報は通信リンクの確立後にクライアント装置104からアップデート装置サーバ136に自動的に転送されることが可能である。さらに、アップデート情報問合せは、新たなコードバージョン中の特定のファイルまたはアップデートコンポーネントの特徴を識別するアップデートシグネチャも含んでよい。
【0047】
アップデート情報問合せがクライアント装置104に転送されて、そのクライアント装置によって取得されると、クライアント装置104は、そのクライアント装置104に対する問合せの中の要求されたアップデート情報を転送することによって応答する。その次に、アップデートインストレーションプロセス250は状態258に進み、この状態258ではクライアント装置104がアップデート情報問合せを受け取り、および、新たなコードバージョンのアップデートシグネチャを、クライアント装置104によって現在使用されている既存コードバージョンのアップデートシグネチャと比較することによって、そのアップデート情報問合せを処理する。比較プロセスが、アップデートパッケージ104がアップデート記憶装置133から転送されてクライアント装置104上にインストールされるべきかどうかを状態258において判定するために、クライアント装置104によって使用されることが可能である。この比較が完了した後に、アップデートインストレーションプロセス250は状態260に進み、この状態260ではアップデートクライアント装置104がアップデート情報応答からアップデートパッケージ110の使用可能性を判定する。より新しいコードバージョンがアップデート記憶装置133内で使用可能ではない場合には、アップデートインストレーションプロセス250は終了状態280で終了し、および、その次のスケジュール設定された起動またはユーザによって指示された起動が生じるまで、非活動状態のままであることが可能である。
【0048】
あるいは、状態260において、クライアント装置104が、アップデートされたコードバージョンがアップデート記憶装置133内で使用可能であるということをアップデート情報応答から判定する場合には、クライアント装置104は、さらに、状態262において、そのクライアント装置104がアップデートパッケージ110を記憶するために使用可能な十分なメモリを有するかどうかをアップデート情報問合せから判定することが可能である。クライアント装置104が、アップデートパッケージ110のために十分なメモリ空間すなわち記憶空間がクライアント装置104内で使用可能であると判定する場合には、アップデート装置サーバ136は状態264においてクライアントアップデート要求を処理する。その次に、アップデート装置サーバ136は、状態266においてアップデートパッケージ110をクライアント装置104に転送する。アップデートパッケージ110を受け取った後に、アップデートインストレーションプロセスは状態268に進み、この状態268では、クライアント装置104はアップデートパッケージ110をインストールする。その次に、アップデートインストレーションプロセス250は、別のアップデート要求が行われるまで、終了状態280で終了せしめられる。さらに、アップデートパッケージインストレーションプロシージャの詳細を、図10との関連において後述する。
【0049】
あるいは、状態262において、クライアント装置104が、アップデートパッケージ110を収容するのに十分なメモリ空間すなわち記憶空間がクライアント装置104内で使用可能でないかまたは割り当てられていないと判定する場合には、クライアント装置104は、状態270において、割当てプロシージャを行うように要求を送り、この割当てプロシージャでは追加のメモリ空間すなわち記憶空間がアップデートパッケージ110のダウンロード転送を可能にするように解放される。一実施形態では、アップデートパッケージ104のダウンロード転送のための空間を割り当てるために、クライアント装置104は、第1のデータ領域(すなわち、RAM)内に記憶されている現在ファイルを第2のデータ領域(すなわち、実装されたフラッシュメモリ)に書き込むことが可能である。あるいは、クライアント装置104は、より大きな空間をアップデートパッケージのために使用可能にするように、第1のデータ領域内に記憶されているファイルを圧縮してもよい。さらにメモリを割り当てるために、クライアント装置104は、アップデートパッケージ110がインストールされるまで一時的に記憶するように、アップデート装置サーバ136にファイルを転送することも可能である。上述のメモリ割当て方式の組合せが、アップデートパッケージ110を受け取るのに十分な空間を生じさせるために使用されることが可能であることが理解できるだろう。さらに、他のメモリ割当て方式が本発明の範囲からの逸脱なしに使用できる。
【0050】
クライアント装置104が状態270でメモリ空間割当てを完了すると、アップデートインストレーションプロセス250は状態272に進み、この状態272では、ダウンロード転送に十分なメモリ空間がクライアント装置104で使用可能にされる場合に、アップデートインストレーションプロセスは、後続のアップデート要求のための状態264と、アップデート転送および受け取り266と、アップデートインストレーション268とに進む。そうでない場合には、アップデートパッケージ110のダウンロード転送を可能にするのに十分な空間がクライアント装置104上に割り当てられていないというアップデート装置サーバ136による判定のために、アップデートインストレーションプロセスは終了状態280で終了する。一実施形態では、アップデート装置サーバ136は、クライアント装置104のメモリ空間の制限に適応するために、アップデートパッケージ110を区分してクライアント装置に104に送ることも可能である。クライアント装置104上の限られた量の使用可能なメモリ空間を使用してアップデートプロセスを完了するために、これらの区分された断片が逐次的に使用される。
【0051】
一実施形態では、インストレーションプロシージャは、クライアント装置104によるアップデートパッケージ110の完全性の認証および妥当性検査を行う。その後で、アップデートパッケージ110はクライアント装置104上の不揮発性メモリまたは記憶装置に保存され、クライアント装置104は必要に応じて再起動される。その次に、アップデートパッケージ110が解凍され、アップデートのインストレーションを開始させるために命令セットが実行される。上述のインストレーションプロシージャが本発明の範囲から逸脱せずに変更または再構成されることが可能であるということを理解されたい。
【0052】
一実施形態では、アップデートパッケージ110がアップデートサーバアレイ122、132、142に対して使用可能にされ、それに続いて、アップデートジェネレータ102とその関連のプロセスとの使用によって、要求を行っているクライアント装置104に対して使用可能にされる。図3は、アップデートパッケージ110を形成するために使用されるアップデート作成プロセス300を示す。アップデート作成プロセス300は、アップデートジェネレータ102に関連した構成パラメータと、より新しいコードバージョンにアップデートされることが好ましい既存のコードバージョン中に存在する情報とを使用する。アップデート作成プロセス300は開始状態302で開始して状態304に進み、この状態304では、現在のコードバージョンを含む既存のファイルが開かれる。現在のコードバージョンは、アップデートされるべき電子装置内に収容されている情報の表現であるファイルまたはイメージを含む。一側面では、現在のコードバージョンは、イメージファイルの形で識別され記憶されている、電子装置内に記憶されているバイナリコードすなわち符号化情報を反映する。例えば、移動電話の場合には、現在のコードバージョンは、アップデートされるべきメモリ領域または記憶領域の内容を反映するだろう。メモリ領域または記憶領域の内容は、さらに、オペレーティングシステムコード、アプリケーションコード、ファームウェア内容、または、ファンクショナリティを伝達するためにその電子装置によって使用される他の命令セットを含んでよい。
【0053】
アップデート管理システムおよび方法の1つの重要な特徴が、アップデートプロセスがコードインデペンデントな仕方で働くということである。アップデートは、アップデートされるべきメモリ領域または記憶領域のイメージすなわちシミュレートされた表現を使用して生成される。アップデート操作は命令レベルで機能する必要はなく、むしろ高レベル(すなわち、ファイルレベル)または(命令を含む情報が2進法、16進法、または、他の同様の形式で表現される)より低いレベルで機能することが可能である。したがって、アップデートプロセスは、指定されたワードシーケンスまたはワードパターンを含むディジタル情報シーケンスに基づいて現在コードバージョンを認識する。一側面では、作業(work)のサイズすなわち長さが、第2のワードシーケンスによって表現される所望のコードバージョンに対して後で比較されるビット、バイト、命令、ファイル、または、他の情報シーケンスとして柔軟に定義されることが可能であり、2つのシーケンスの間の差が識別される。したがって、アップデートプロセスは、所望のコードバージョンを得るためにどの命令が置き換えられる必要があるかを判定することといった特定の慣行には必ずしも限定されず、むしろ、既存のコードバージョンを所望のコードバージョンに変換するためにはどのワードシーケンスが変化せしめられなければならないかということに限定される。
【0054】
現在コードバージョンのイメージを開いた後に続いて、アップデートジェネレータ102は、状態306での使用のためにそのイメージから1組のディジタル情報シーケンスをコンパイルする。アップデートパッケージ110を生成する際には、ディジタル情報シーケンスの組が、所望の第2のコードバージョン108を表現するイメージを生成するために使用されることが可能である。このディジタル情報シーケンスの組が命令セットの生成とその後で行われる既存コードバージョンの新たなコードバージョンへの変更とにおいてどのように使用されるかに関する詳細については、図5と図6を参照しながらより詳細に説明する。
【0055】
状態306では、アップデートジェネレータ102は、ハッシュテーブルを構築するために使用されることになるディジタル情報シーケンスを求めて探索することによって、既存イメージを前処理する。このハッシュテーブルは、後続のルックアップと検索とのためにデータ構造内に格納されている第1のコードバージョン中の特定のディジタルシーケンスのアドレスを含む複数のハッシュ値を含む。ハッシュ値は既存イメージ中のディジタル情報シーケンスに対応し、このディジタル情報シーケンスはより新しいコードバージョンを構築するために使用されることが可能である。一側面では、ハッシュアレイが既存のコードバージョンから形成され、その既存のコードバージョン中のディジタル情報シーケンスのストリングを識別する。ハッシュアレイに関するより詳細な説明は、図4との関連において後述する。
【0056】
状態306において既存コードバージョンからハッシュアレイ330を構築した後に、アップデート作成プロセス300は状態308に進み、この状態308では、第1のコードバージョンを第2のコードバージョンに変換するのに使用される命令を記憶するために使用される新しいファイルが開かれる。この新しいファイルは、最終的には、アップデート作業が要求されるかまたは必要とされるときにクライアントに転送するためにサーバに対して使用可能にされるアップデートパッケージ110となる。その次に、アップデート作成プロセス300は状態310に進み、この状態310ではアップデートパッケージ110が生成される。より詳細に後述するように、命令セットが、適切な仕方で実行されるときに既存コードバージョンをアップデートされたコードバージョンに効率的に変換する操作や命令やパラメータやディジタル情報シーケンスを識別する複数のシーケンス識別および変換機能を使用して形成される。この状態310中には、既存コードバージョンを新しいコードバージョンに変換するために、既存コードバージョンの情報構成およびシーケンスが評価され、および、命令が識別される。
【0057】
状態310におけるコードバージョンの分析と命令セットの生成の完了後に、アップデート作成プロセス300は状態312に進み、この状態312では、生成された命令セットが、アップデート命令セットの内容に対する不正なアクセスを防止する一定の機密保護を実現するために符号化されることが可能である。これに加えて、この命令セットは、さらに、結果的に生じるアップデートパッケージ110の全体サイズを縮小させるために、LZW圧縮のような様々な圧縮方式を使用することによって圧縮されてもよい。その次に、この圧縮/符号化された命令セットは状態314においてアップデートパッケージ110としてあり、および、記憶されたヘッダ情報を含んでよく、このヘッダ情報は、アップデートパッケージ110の内容を妥当性検査して、そのアップデートバージョンを識別するために、および/または、同様の機能を果たすために使用される。アップデートパッケージ110は、さらに、状態314において、複数のアップデート装置サーバ136a、136b、136cに転送されることが可能であり、この状態314では、アップデートパッケージ110が発行されて、ダウンロードのために複数のクライアント装置104a−104iにアクセス可能にされる。アップデートパッケージ110を保存/発行した後に、アップデート作成プロセス300は終了状態316において終了する。
【0058】
図4は、図3に関連付けて上述したハッシュアレイ330の一実施形態を示す。ハッシュアレイ330は、複数のディジタル情報シーケンスすなわちワード360−366の位置に対応する1つまたは複数のアドレス350−356を記憶し参照するために使用される、複数のハッシュ値340−343を含む。一側面では、このディジタル情報シーケンスすなわちワードは、既知の長さすなわちサイズを有するワードを含む。ワード360−366の各々は、さらに、1つまたは複数のビット、バイト、または、他の認識可能な情報量子を含んでよい。アップデートプロセスで使用されるワード長は必ずしも固定している必要がなく、および、その代わりに、アップデート管理システムによってまたは電子装置に情報が記憶されている仕方によって決定される通りに、柔軟に割り当てられることが可能である。
【0059】
一側面では、ハッシュ値340−343が計算されるワード360−366の長さは、電子装置のアーキテクチャによって認識される長さであるように選択される。これらのハッシュ値340−343はハッシュアレイ330内に記憶され、および、アップデートされたコードバージョンで必要とされる所望のワードが現在コードイメージから得られることが可能であるかどうかを判定するために、アップデートジェネレータによって使用される。一側面では、ハッシュ値340−343の作成に使用されるワード360−366の長さは、1つまたは複数のビット、バイト、または、一般的に使用される他の情報量子を含む個別のワード長を有するように選択される。しかし、他のワード長がハッシュ値340−343の生成において容易に使用されることが可能であるということが理解されるだろう。
【0060】
ハッシュ値340−343の決定のために既知のワード長を使用することによって、アップデートジェネレータは、新しいコードバージョンの形成においてコピーされ使用されることが可能な既存のコードバージョンの中に見いだされることが可能なワードの要約またはデータベースを作成することが可能である。ハッシュテーブルの実装と、アップデートパッケージ110の生成におけるハッシュテーブルの使用とについては、図6A−6Hにおいてさらに詳細に後述する。一側面においては、ハッシュアレイ330のハッシュ値は、新しいコードバージョンの構築に使用可能な情報のストリングを好ましくは含むと識別されている特定のシーケンスに関する開始アドレスを参照することによって、ワードを含むワードを参照するために使用される。
【0061】
アドレス350−356は、アップデートプロセス中に使用される既存のコードバージョンを参照する命令を形成するためにアップデートジェネレータ102によって参照される計算されたハッシュ値340−343としてハッシュアレイ330のデータ構造の中に保存される。一側面では、ハッシュアレイ330を形成するときに、アップデートジェネレータ102は、特有のシーケンス、頻繁に遭遇するシーケンス、および/または、再構築が困難なシーケンスのような独特なまたは好ましいディジタルシーケンス特徴を含む特定のワードにハッシュ値を割り当てる。一実施形態では、ハッシュアレイ330の基本機能は、ターゲットシーケンス(例えば、アップデートされたコードバージョンに必要なシーケンス)とソースシーケンス(例えば、既存のコードバージョンに現在発見されるシーケンス)との間の「同一な」ワードを効率的に発見することである。ハッシュアレイ330は、さらに、既存のコードバージョン内の「同一の」ワードが、アップデートされたコードバージョン中で「リサイクル」すなわち「再使用」されることが可能であるように、このワードに関する開始アドレスを発見するために使用される。こうして、コード内にすでに存在すると識別されているワードはアップデートパッケージ内に含まれる必要はなく、むしろ、その代わりに、1つまたは複数の命令が、アップデートされたコード内の新たなロケーションに既存のワード情報を検索および/またはコピーするために使用されることが可能である。使用される命令は、それが識別する対応シーケンスよりも通常は小さいので、この特徴はアップデートパッケージ110の所要サイズを著しく減少させる。ハッシュ値240−343の各々が、1つまたは複数のロケーションに同一のワードを発生させるために何回もアクセスされることが可能であり、および、所要のワードを効率的に生成するために必要に応じて使用されることが可能である。
【0062】
ハッシュアレイ330の好ましい特徴の1つは、このハッシュアレイが、既存のコードバージョン中に存在する使用可能なディジタル情報シーケンスすなわちワードの「ディクショナリ」として働くということである。アップデートジェネレータは、これらのコードシーケンスすなわちワードを再構成してコピーすることによって新たなコードバージョンを生じさせるために、このコードシーケンスすなわちワードを使用する。コードをこのように「再使用する」ことによって、典型的にはコードのコピーと再構成のための命令がリテラル(literal)なコードシーケンスすなわちワードよりも著しく小さいので、好ましいことにアップデートパッケージのサイズが縮小される。したがって、単一の命令が、多数のビットまたはバイトからなる情報と同等であるコードを生じさせることが可能だろう。
【0063】
図4に示されているハッシュアレイ330では、アドレス「a」が、ビットシーケンス「110010」に対応するワード360が以前のコードバージョン中に発見されることが可能であるアドレスに対応する。コードジェネレータは、ハッシュアレイ330内のこのインデックス340に好ましくはアクセスする命令を指定することができ、および、さらに、このロケーションにおけるワードからコピーされるべき情報の長さを指定することができる。例えば、アドレス「a」におけるワードから得られることが可能なビットシーケンスが「1」、「11」、「110」、「1100」、「11001」、「110010」等を含む。同様に、アドレス「b」のワードが、「1」、「10」、「101」、「1010」、「10100」、「101000」、「1010001」、「10100011」等を含むビットシーケンスを生成するために使用されることが可能である。
【0064】
新しいコードバージョンで使用されることが可能な、既存のコードバージョン中のワードすなわちシーケンスを識別することによって、好ましいことに、アップデートパッケージ110内に含まれなければならない情報の量が最小限にされる。上述したように、一例として示されている各々のワードに対応するシーケンスは、その代わりに、1つまたは複数のビット、バイト、ファイル、または、他の認識されるサイズおよび長さの情報を含む他の情報量子を表現することが可能である。したがって、こうした他の情報の構成が同様の仕方(すなわち、ビット単位のアドレス指定、バイト単位のアドレス指定、ファイル単位のアドレス指定等)でアドレス指定されることが可能であるということが理解できるだろう。
【0065】
別の側面では、ビットシーケンスまたはバイトシーケンスを含むことが可能な1つまたは複数のワードが、様々なアドレスに位置している情報をリンクさせることによって形成されることが可能である。例えば、ハッシュ値342が、特定の作業(work)362−364に各々のアドレスが関連付けられているリンクしたアドレス「d」、「k」、「s」に対応する。上述した仕方に類似した仕方で、各アドレスからの各々のワードの可変部分が、さらに別のワードパターンの組合せを生じさせるために互いに連結されることが可能である。一側面では、特定のハッシュ値のアドレスが、リンクしたリストデータ構造を使用して関連付けられる。アドレスの関連付けは、ハッシュ値342に関して示されているような、論理的に近接して位置している情報を連結するために使用されることが可能であり、および、さらには、ハッシュ値343によって示されるような、別々に構成されている情報を関連付けることもできる。このハッシュ値343は、アドレス「h」、「w」に位置している情報の組合せから生じるディジタル情報シーケンスを形成するために好ましくは関連付けられているメモリエリアすなわち記憶領域の異なるセクションに位置していることがあるワード365、366のそれぞれに関するアドレス「h」、「w」を含む。さらに、ハッシュ値343は、メモリエリアすなわち記憶領域の連続した列番号すなわちバンク番号が所望の情報シーケンスを生成する形で決定されるように形成されてもよい。例えば、第1のバンク番号がハッシュ値343中の第1のアドレスに対応し、第2のバンク番号が第2のバンクアドレスに対応し、および、以下同様の対応関係が生じることが可能である。アドレス情報の連結が、新しいコードバージョンを形成するために使用されることが可能な多数の採用可能な情報シーケンスを発生させるように、複数のアドレスを使用することによって様々な組合せの形で適用されてもよいということが理解されるだろう。メモリすなわち記憶バンクの構成と、ハッシュ値340−343を使用することによる命令セットの形成および構成と、既存コードを使用することによる所望のディジタル情報シーケンスの結果的な生成とについての追加の詳細な説明を、さらに詳細に後述する。
【0066】
図5は、命令セット生成プロセス400の一実施形態を示し、この命令セット生成プロセス400は、第1のコードバージョンを第2のコードバージョンに変換するために使用される命令セットを生じさせるためにアップデートジェネレータ102によって使用される。一側面では、このプロセス400は、アップデートパッケージ110で使用するために命令が選択される仕方を機能的に記述する。このプロセス400は、さらに、効率的な仕方でコード変換またはバージョンアップデートを行う複数の命令を識別する。一側面では、命令セット生成シーケンス400は、コード変換を行うために使用されることが可能な多数の命令組合せを評価し、および、好ましくは、アップデートパッケージ110に含まれていなければならない情報の量を減少させる命令組合せを識別する。このことは、一方では、アップデートパッケージ110のサイズを縮小させ、アップデートパッケージ110を送るために必要とされる伝送時間を減少させる。コードに適用されることが可能な特殊化された命令と組み合わせて、可能な場合には既存のコードシーケンスを使用することによって、好ましくは、以前のコードバージョンが、アップデートパッケージ110内に含まれていなければならない情報の量をさらに減少させる仕方で新しいコードバージョンに変換される。
【0067】
命令セット生成シーケンス400は開始状態402で開始し、その次に状態404に進み、この状態404では、アップデートジェネレータ102が、既存のファイルすなわちコードバージョンの先頭に対応するポインタを初期化する。このポインタは、ディジタル情報シーケンス分析が何時完了するかを判定するためにシーケンス分析機能によって使用されることが可能な基準位置を維持する。一側面では、ディジタル情報シーケンス分析は、対応する命令タイプを分析するために各々が使用される複数の比較機能を含む。これらの命令は、既存シーケンス命令と、ランレングス命令と、ハッシュ命令と、デフォルト命令とを含んでよい。しかし、上述の命令とその対応する比較機能とが、命令セット生成シーケンスで使用されることが可能な多くの使用可能な命令の中の幾つかであり、および、他の命令が案出されて、アップデート管理システムおよび方法と共に使用されてもよいということが理解されるだろう。
【0068】
状態406では、比較機能が、ポインタが示すロケーションに対応するコードに対して適用され、および、判定が、その比較機能に関係付けられた命令の各々を使用してどれだけ多くの新しいコードが生成されることが可能であるかに関して行われる。一側面では、比較機能が、特定のコードフラグメントを表現するための別個の方法を提供するために命令を使用する。幾つかの事例では、ある1つの命令が、コード構成に応じて、別の命令よりも優れた性能を示すだろう。例えば、ポインタのロケーションにおける既存のコードバージョン中に存在する特定のコードシーケンスに基づいて、既存のシーケンスが、情報の3ワードと、情報のランレングス機能5ワードと、情報のハッシュシーケンス機能8ワードとを翻訳することが可能であることがある。状態408では、このプロセスが、比較機能のどれがその他の比較機能に比べて最善の特徴を示すかを識別する。典型的には、最善の結果が、単一の命令または一群の命令を使用して最大のコードシーケンスを生成する比較機能として識別される。上述の例の場合には、ハッシュシーケンス機能が最長のワード表現(8ワード)を示し、ハッシュシーケンス機能に比較してより少ないコードを翻訳するその他の比較機能よりも優先的に選択されるだろう。当然のことながら、他のコードシーケンスに関しては、その他の比較機能の中の1つが、より好ましいだろうし、および、その他の比較機能よりも大きなコードセクションを翻訳する能力を有するだろう。
【0069】
状態408において比較機能から「最善の結果」を選択した後に、プロセス400は状態410に進み、この状態410では、識別された比較が効率的な結果を生じさせるか否かに関する判定が行われる。一側面では、効率が、単一の命令によって表現されることが可能なコードの量の関数として測定される。効率の閾値が、リテラルストリングを直接的にアップデートパッケージ110の中に組み込むことを含むデフォルト命令機能に比べて、識別された「最善の結果」が効率において少なくとも同等であるかまたは上回っていることを確実にするために使用される。識別された最善の結果をもたらす機能がデフォルト命令よりも効率的である場合には、比較機能によって符号化された情報シーケンスに関する命令コーディングがアップデートパッケージ110の中に組み込まれ、状態412において、コードが比較機能によって翻訳された後に、ポインタが情報の第1のセクションにアップデートされる。そうでなく、デフォルト命令がその「最善の結果」機能よりも効率が高いと判定される場合には、このデフォルト命令が状態414でアップデートパッケージ110の中に組み込まれ、状態412において同様にポインタがアップデートされる。
【0070】
状態412におけるポインタのアップデートの後に、プロセス400は、状態416において、ポインタがファイル終端に達しているかどうかを判定する。ポインタがファイル終端に達していない場合には、このプロセスは状態406に進み、この状態406では、シーケンス分析がその次のコードセクションに対して始まり、アップデートされたポインタ位置を基準として使用して必要に応じて反復されることが可能である。このようにして、ファイル全体が、比較機能が適切に実行されて最も効率の高い命令が選択されるので、ポインタを漸進的に増分することによって「ステップスルー(step through)」される。ファイル終端に達すると、命令セット生成プロセス400は状態408に進み、状態408では、このプロセスが終了し、先行ステップで判定された選択された命令を含むアップデートパッケージ110がパッケージ化されて、配布のための準備が整えられる。
【0071】
上述したように、ディジタル情報シーケンス機能は、図1の第1のバージョン106のようなより旧いコードバージョン中の先在のディジタル情報シーケンスを、図1の第2のバージョン108のようなより新しいコードバージョン中のアップデートされたディジタル情報シーケンスにアップデートすなわち変更する。一実施形態では、命令セット生成シーケンス400は、コードバージョンをアップデートするための他の方法を提供することによって、変換効率の増大のために追加の命令を使用してもよい。開示されている比較機能の各々の詳細については、図6Aと図6Dとに関連付けてさらに詳細に説明する。後述の説明とその関連の図面では、異なるワード長に相当する典型的なビットシーケンスおよびバイトシーケンスが示されている。これらの例が、アップデート管理システムおよび方法と共に使用できるワード長およびワードサイズの多くの採用可能な具体例の中の幾つかを示すにすぎないということを理解されたい。
【0072】
図6Aは、上述の命令セット生成プロセス400と共に使用できるランレングス符号化(run length encoding)(RLE)命令500の一実施形態を示す。この図に示されているように、第1のコードバージョン106からのディジタル情報シーケンスを表している第1のワードシーケンス502と、第2のコードバージョン108からのディジタル情報シーケンスを表している第2のワードシーケンス504とがある。第2のコードバージョン108の特定の位置で開始する第2のワードシーケンス504が、値「W1」のような特定のワード506の連続を含むとアップデートジェネレータ102によって判定されるときには、所望のディジタル情報シーケンスを生成するために、RLE命令500が特定のワード長(N)508(この場合には、N=6)に関して使用されることが可能である。このワード長は、異なる値による中断なしに逐次的に反復されるワードコンポーネントの量である。RLE命令を使用することによって、反復されるワードパターンが、単一の命令を使用して容易に再構成されることが可能である。この命令は、好ましいことに、第2のコードバージョン内に表現される対応する数のワードに比較して、アップデートパッケージ内でより少ない空間を占める。RLE命令500は、さらに、第1のコードバージョン中の特定のワードシーケンスが第2のコードバージョンを形成するようにオーバーライトまたは変更されることを指定するために使用されることも可能である。こうして、例示されている実施形態に示されているように、第1のコードバージョン内のワードパターン「W1,W2,W3,W4,W5,W6」は、ワードパターン「W1,W1,W1,W1,W1,W1」を形成するために、第1のコードバージョン内でオーバーライトされることが可能である。あるいは、既存のワードパターンの一部分だけが、連続したワードパターンによって新たなコードバージョン内でオーバーライトされてもよく、または、連続したワードパターンが既存のワードパターンに連結されてもよい。さらに、1つまたは複数のワードコンポーネントが、RLE命令500で指定されたワード長508aによって指定されてもよく、したがって、「W1」、「W1,W1」、「W1,W1,W1」、「W1,W1,W1,W1」等を含むワードパターンが、異なるワード長パラメータを有するRLE命令を使用して生成されることが可能である。
【0073】
一側面では、第1のコードバージョン106からのディジタル情報シーケンスの同一の特定の位置で開始する第1のワードシーケンス502が、第2のコードバージョン中の同等の長さの反復するワードシーケンスによって置き換えられる。上述の別の方法、RLE命令500は、ファイルコード内の特定の位置で開始するワード単位の反復するディジタル情報シーケンスを識別し、単一の命令を使用して既存のディジタル情報シーケンスを置き換える。さらに、RLE命令500が、図5の状態408で説明した通りに「最善の」結果を得ると後で判定される場合には、反復するワード単位のシーケンス504に関するRLE命令500は、ワードの所望の反復回数508のような他のパラメータと共に命令リスト内に記憶される。命令リストは、シーケンス分析によって識別される一連の命令と、アップデートパッケージ110を使用することによって、第1のコードバージョンを第2のコードバージョンに変換するのに必要とされる命令セット生成機能400とを表す。
【0074】
RLE命令500を使用する利点の1つは、ディジタル情報シーケンス中のワード単位のコンポーネントの連続ストリングが単一の命令によってより新しいコードバージョン中に容易に配置されることが可能であるということである。RLE命令500を使用することの別の利点は、この命令が、所望のディジタル情報シーケンスを生成するために使用されることになる第2のワードシーケンス504の連続したワード単位のストリングの反復性のせいで、実行が比較的容易であるということである。
【0075】
図6Bは、第1のコードバージョン106からのディジタル情報シーケンスを表す第1のワードシーケンス512と、第2のコードバージョン108からのディジタル情報シーケンスを表す第2のワードシーケンス514とが示されている、既存シーケンス(EXS)すなわち複製命令510の一実施形態を示す。第1のコードバージョン106からのディジタル情報シーケンスの特定の位置で始まる第1のワードシーケンス512が、第2のコードバージョン108からのディジタル情報シーケンスの同一の特定の位置で始まる第2のワードシーケンス514と同じであるかまたは実質的に同一である場合には、EXS命令510が、その類似性を反映するために特定のワード長(N)518(例えば、この場合にはN=4)に関して使用されることが可能である。RLE命令500に関して上述したように、EXS命令510が、好ましくは第1のコードバージョンと第2のコードバージョンとの間の類似性の度合いを判定するために使用されるワード長パラメータ518を含む。
【0076】
一側面では、EXS命令510は、コードのバージョン間で不変のままである既存のワードシーケンスを識別するためにアップデートジェネレータ102によって使用され、したがって、アップデートプロセス中にアップデートすなわち変更される必要がない。さらに、アップデートジェネレータ102が、既存シーケンス命令がディジタル情報シーケンス分析において「最善の」結果を得るということを判定した場合には、EXS命令510は、指定されたワード長518aと共に、ディジタル情報シーケンスの反復回数のような他のパラメータと共に命令リスト内に組み込まれることが可能である。EXS命令510を使用することの利点の1つは、不変のままである先在のワード単位のディジタル情報シーケンスが識別されることが可能であるということと、単一の小さな命令が、冗長なまたは不必要なコードを組み込むことなしに、類似性を反映するためにアップデートパッケージ110の中に組み込まれることが可能であるということである。
【0077】
図6Cは、アドレスまたはハッシュ(HSH)命令520からのコピーの一実施形態を示す。第1のコードバージョン106からのディジタル情報シーケンスを表している第1のワードシーケンス522と、第2のコードバージョン108からのディジタル情報シーケンスを表している第2のワードシーケンス524とが例として示されている。オペレーショナルソフトウェアコードの第1のバージョン106からのアドレス526(この場合には、アドレス「b」)におけるディジタル情報シーケンスの特定の位置で始まる第1のワードシーケンス522が、オペレーショナルソフトウェアコードの第2のバージョン108からのディジタル情報シーケンスの異なる位置で始まる第2のワードシーケンス524と同一であるかまたは実質的に同一である場合には、HSH命令520が、アップデートパッケージのディジタル情報シーケンスを反映するために、指定されたワード長(N)528(この場合には、N=6)に関して使用されることが可能である。
【0078】
一側面では、ハッシュシーケンス機能が、固定長のディジタル情報シーケンスに関するハッシュ値を計算することによってワードを発見する。その次に、ハッシュ値がハッシュテーブル値と比較される。算出されたハッシュ値の値が記憶されているハッシュテーブル値の値と一致する場合には、記憶されているハッシュテーブル値に対応するディジタル情報シーケンスに関する開始アドレスが得られる。この一致が生じた場合には、指定されたアドレスにおけるワードのより詳細な調査が、使用可能なワードの最大長さを求めるために行われる。ハッシュテーブルが、算出されたハッシュ値に一致する2つ以上の記憶されているハッシュ値を含む場合には、各々の可能性が評価されて、最長の一致すなわち最も効率が高い一致が結果として使用されることが可能である。
【0079】
HSH命令520はハッシュシーケンス機能を含み、このハッシュシーケンス機能では、アップデートジェネレータ102は、ハッシュテーブルデータ構造内で発見された算出ハッシュ値に対応するディジタルシーケンス一致を判定するために、ハッシュテーブル330内に記憶されているアドレスによって参照される既存のワードシーケンスを使用する。例えば、アップデートジェネレータ102が、ハッシュシーケンス機能がディジタル情報シーケンス分析の「最善の」結果を得ると判定する場合には、HSH命令520が、指定されたアドレスロケーション526と指定されたワード長528と共に、ディジタル情報シーケンスの反復回数のような他のパラメータと共に命令リストに組み込まれる。HSH命令520を使用することの利点の1つは、先在のワード単位のディジタル情報シーケンスが、使用可能なワードのディクショナリとしてハッシュテーブル330が働く既存コード中で識別されることが可能であるということである。したがって、HSH命令520は、このアップデートパッケージ110内にコードシーケンスまたはワードを直接的に含むのではなく、新規の仕方でこのコードシーケンスまたはワードをリサイクルするアップデート生成プロセスの能力を反映する。HSH命令520を使用することの別の利点は、この命令520が、ハッシュテーブル内で参照されるアドレスによって反映される様々なコードセクションを組み合わせることによって、コードの大きなセクションを生じさせるために使用できるということである。例えば、図6Cに示したように、好ましいことに、第2のコードバージョン中のワードシーケンス「W3,W4,W5,W6,W7,W8,W9,W10」が、アドレス「b」において第1のコードバージョン中で識別されることが可能である。HSH命令520はこのアドレスを基準として使用し、このロケーションに存在するコードを第2のコードバージョン内の所望のロケーションにコピーする。この操作を行うための命令は、好ましいことに、そのアドレスによって参照されるリテラルストリングを組み込むことよりもサイズ的に小さい。したがって、命令「HSH b,N」は、アドレス「b」に位置しておりかつ値N(ストリング「W3,W4,W5,W6,W7,W8,W9,W10」をコピーする例では、N=8)によって指定された長さを有するストリングの内容全体をコピーするために使用されることが可能である。
【0080】
図6Dはデフォルト(DEF)命令532の一実施形態を示す。上述したように、どの他の命令も所望のディジタル情報シーケンスを効率的に表現できないということが発見される場合には、DEF命令532が命令セット生成プロセス400によって適用される。DEF命令532は、オペレーショナルソフトウェアコードの第1のバージョン106からのディジタル情報シーケンスを、DEF命令に関連付けられているストリングまたは他の情報シーケンスのリテラルな内容で置き換えるために使用される。言い換えると、DEF命令530は、第1のコードバージョン106のファイルコード中の先在のディジタル情報シーケンスに一致せず、かつ、他の命令を使用して効率的に再構成されることが不可能である、ディジタル情報シーケンスのワード単位のパターンを識別する。DEF機能530がディジタル情報シーケンス分析の「最善の」結果すなわち最も効率的な結果を得ると判定される場合には、パターン化されたワード単位のシーケンス534に関するDEF命令530が、インサートされるべきストリングすなわち情報シーケンスのリテラルな内容と共に命令リストの中に組み込まれる。こうして、命令「DEF W15,W16,W17,W18,W19,W20」が、「W15,W16,W17,W18,W19,W20」というリテラルな内容を所望のロケーションにコピーするために使用されることが可能である。DEF命令530を使用することの利点の1つは、ディジタル情報シーケンス中のワード単位のコンポーネントの実在しないストリングが、アップデートパッケージ110に組み込まれることが好ましい単一の命令と共に、より新しいコードバージョンの中に容易にインサートされることが可能だということである。
【0081】
図7は、再構成されたディジタル情報シーケンス550の一実施形態を示し、この実施形態では、再構成されたシーケンス550は、そのシーケンス550の一部分を生じさせるために使用される複数の命令を含む命令セット552を使用して得られることが可能である。この例示してある実施形態では、再構成されたシーケンス550はワード単位の命令を使用して生成される。第1の命令セット552を実行するプロセスは、所望のワードシーケンス550を生成するために命令500、510、520、530を逐次的に適用することを含む。命令セットの命令の段階的実行の後に、RLE命令500がアップデートファイル中に第1のビットシーケンスを生成し、このビットシーケンスはランレングス符号化ビットシーケンス504に相当する。RLE命令500は、入力パラメータに基づいてビットシーケンス「W1,W1,W1,W1,W1,W1,W1」を生成する。その次の命令に進むと、EXS命令510が第2のビットシーケンスを生成し、この第2のビットシーケンスは複製ビットシーケンス514「W1,W2,W3,W4」に対応する。EXS命令は、指定された領域内のどんなビットもコピーまたは変更しないが、先在のワードパターンを識別してこのシーケンスをそっくりそのまま残す。後続のHSH命令520は第3のワードシーケンスを生成し、この第3のワードシーケンスは、指定アドレス「b」からの複製されたワードシーケンス524「W3,W4,W5,W6,W7,W8,W9,W10」に対応する。最後に、DEF命令530が第4のワードシーケンスを生成し、この第4のワードシーケンスは、追加されたワードシーケンス534「W15,W16,W17,W18,W19,W20」に対応する。上述したように、DEF命令は、既存のコードバージョン中に発見されないかまたは上述の比較機能を使用して効率的に構成されることが不可能なワードシーケンスの中に1つまたは複数のワードパターンを挿入するために使用されることが可能である。しかし、例示している再構成されたワード単位のシーケンス550は命令セット552の実行の一例にすぎない。命令セット552は、既存のコードバージョンを所望のコードバージョンに変換するために使用できる様々な組合せの形で1つまたは複数の命令500、510、520、530を含んでもよい。所望のコードバージョンを表現するために命令セットを生成することの利点の1つは、アップデートパッケージ110が、従来の差分法から得られるリテラルなディジタル情報シーケンスだけによって構成されているアップデートパッケージに比較して相対的に小さいということである。この結果として、相対的に小さいアップデートパッケージイメージを通信媒体を経由して転送することは、従来の方法で使用されるより大きいリテラルなアップデートパッケージを転送することよりも効率が高い。
【0082】
図8Aは、アップデート管理システムと共に使用されるべき携帯用電子装置のためのメモリアーキテクチャまたは記憶装置アーキテクチャ1000の一実施形態を示す。このアーキテクチャは、アップデート管理システムおよび方法を使用して好ましくはアップデートされることになっている移動電話、パーソナルディジタルアシスタント、ページャ、または、他の装置を含む多くの従来の電子装置を代表する。
【0083】
一側面では、アーキテクチャ1000は、不揮発性メモリエリアすなわち記憶領域1002と揮発性メモリエリアすなわち記憶領域1004とを含む。不揮発性領域1002は半永久的な状態で情報を記憶するために電子装置によって使用され、この電子装置は、この領域1002内に記憶されている情報の損失なしに電源切断またはターンオフされることが可能である。不揮発性領域1002は、さらに、コードセクション1006とデータセクション1008とを含むように論理的に区分されてもよい。コードセクション1006は、装置動作のためのファンクショナリティを提供するシステムオペレーティングソフトウェアコードまたはファームウェアコードのような情報を記憶する働きをする。データセクション1008は、必要に応じて再書込みまたは変更されることが可能な非本質的なまたはユーザ由来の情報または他の情報を必要に応じて記憶することが好ましい。典型的な移動電話では、データセクション1008は、電子装置の電源切断による損失なしに必要または所要に応じて検索できるように保存されている電話番号、住所、または、個人的メモを含む情報を収容することができる。
【0084】
コードセクション1006とデータセクション1008の両方は、それらの中に格納されている既存のコードを変更するために、アップデートプロセス全体にわたってアクセスされ書き込まれることが可能である。データセクション1008は、さらに、アップデートパッケージ110のコピーがクライアントによって受け取られるときにそのアップデートパッケージのコピーを記憶するためにアップデートプロセス中に使用されてよいメモリ空間すなわち記憶空間の領域も提供する。さらに、データセクション1008は、アップデート操作が中断される場合に一定の度合いの誤り許容力を提供するために、アップデート中に情報を記憶することもできる。アップデートプロセスの誤り許容力の側面については、図9と図10とに関連付けてより詳細に後述する。
【0085】
不揮発性メモリエリアすなわち記憶領域は別々のコードセクションとデータセクションとを有するものとして示されているが、本明細書で示すアップデート方法は他のメモリ構成または記憶装置構成に容易に適合化されることが可能であるということが理解されるだろう。例えば、不揮発性記憶領域1002は、不揮発的に情報を記憶するために使用されることが可能なディスクドライブやオプティカルドライブや他の装置インプリメンテーションのようなハードウェア記憶装置を含んでよい。さらに、不揮発性のメモリエリアの場合には、メモリ構成が、アップデート管理システムおよび方法と共に使用されるように別々のコードセクションとデータセクションとに論理的に区分されることは必要ない。上述のメモリエリアすなわち記憶領域の構成が、本発明と共に使用するように適合化されることが可能なアーキテクチャの1つの具体例だけを表しているにすぎず、および、他のメモリエリアすなわち記憶領域のアーキテクチャと構成とが当業者によって同様の仕方で容易に適合化されることが可能であるということが想定されている。
【0086】
一側面では、電子装置のアーキテクチャが、不揮発性メモリエリアすなわち記憶領域1002が複数の記憶バンク1010に区分または論理的に分割されることを指定する。各々の記憶バンク1010は記憶領域の別々の量またはサイズを表しており、固有のアドレス1012に関連付けられることが可能である。アドレス1012を基準として使用することによって、記憶バンク1010は個々に参照されることができ、その中に格納されている内容が、電子装置のオペレーティングシステムまたはファームウェアによって決定される通りに読み書きされることが可能である。あるいは、記憶バンク1010の内容は、その内容自体を参照することによってアドレス1012とは無関係にアクセスされてもよく、この場合に、バンク1010の内容は、不揮発性メモリエリアすなわち記憶領域1002内での現在ロケーションを求めるための基準として使用される。記憶バンク1010は、事前定義された仕方で記憶バンク1010を逐次的に参照するバンクアドレス1012によって、連続的な形で構成されている。例えば、図8Aに示してあるように、不揮発性メモリ記憶装置1002の記憶バンク1010は64キロバイト(K)の共通サイズが割り当てられている。記憶バンク1010は、さらに、BANK 0内に記憶されている記憶セクション1002の最初の64Kと、BANK 1内に記憶されている記憶セクションの第2の64K等々によって連続的な形で構成されている。さらに、「0A」のブロックアドレス1012は不揮発性メモリ記憶装置1002のBANK 0に関連付けられており、「0B」はBANK 1に関連付けられており、その他も同様である。
【0087】
記憶バンク1010の区分と構成が装置毎に異なっているということと、64Kバンク1010を有する不揮発性領域1002に関連して説明したアップデート管理のためのシステムおよび方法が他の構成にも容易に適用可能であるということが、当業者によって理解されるだろう。例えば、記憶バンクのサイズは装置毎に異なっていてもよく、または、より大きな使用可能なメモリエリアすなわち記憶領域が使用可能であってもよい。このシステムおよび方法が、様々な異なるタイプの電子装置のためのメモリ素子または記憶素子のアーキテクチャ1000によって定義される記憶領域の様々な特徴と組合せとに容易に適合化されることが可能であると考えられている。
【0088】
別の側面では、電子装置の揮発性メモリエリアすなわち記憶領域1004は、単一の連続したバンクすなわち記憶セクションとして構成されている。揮発性メモリエリアすなわち記憶領域1004内の領域は個別にアクセスされることが可能であり、および、その領域内に含まれる空間が必要または所望に応じてフレキシブルに割り当てられることが可能である。不揮発性メモリエリアすなわち記憶領域1002と同様に、アドレス情報がメモリ1004の特定のセクションを参照するために使用されてもよいが、しかし、バンクによって定義される不揮発性メモリの幾分か固定された構造が固守される必要はない。
【0089】
上述のメモリエリアすなわち記憶領域のバンクが同一のバンクサイズだけで構成される必要はないということが理解されるだろう。この代わりに、各バンクが、電子装置内の他のバンクに対してサイズ的に異なっていてもよい。さらに、バンクは物理的または論理的に互いに連続している必要はなく、および、物理的ではなく論理的なアドレス指定方式を使用してアドレス指定されてもよい。一側面では、パーソナルコンピュータまたは他の計算装置のファイルまたは内容が、例えば、ファイルが中に格納されている論理的アドレス指定方式を有するハードドライブを使用するときのように、論理的な仕方でアドレス指定されてもよい。
【0090】
本明細書で説明するメモリ構成は多くの従来の移動電話またはセルラー電話の記憶装置アーキテクチャを表しているが。本明細書に示すシステムおよび方法が適用されることが可能なメモリエリアすなわち記憶領域のアーキテクチャまたは割当てには様々な変形があるということが当業者によって理解されるだろう。他のメモリ構成が、不揮発性および揮発性メモリだけでなくハードドライブ、オプティカルメディア等のような他の記憶装置も含む、パーソナルディジタルアシスタント、コンピュータ、人工衛星、および、テレマティック装置(telematic device)のような他の電子装置に関して存在してもよい。さらに、メモリのアーキテクチャおよび割当て方式は装置毎に様々であってよいが、しかし、本明細書で説明するシステムおよび方法は、本発明の他の実施形態を表すこれらの別の構成と共に動作するように容易に適合化されることが可能である。
【0091】
一実施形態では、不揮発性メモリエリアすなわち記憶領域1002は、電源切断、中断、および、装置故障のような事象にも係わらず好ましくは情報を保全する様々なタイプまたは構成の記憶空間を含むだろう。適切な不揮発性メモリエリアすなわち記憶領域として機能するように適合化できる典型的なコンポーネントは、ハードドライブ、オプティカルドライブ、CDライタ、DVDライタ、テープドライブ、フラッシュメモリ装置、および、EPROM装置を含むことが可能である。同様に、不揮発性メモリエリアすなわち記憶領域1004は、ランダムアクセスメモリ(RAM)または他の揮発性メモリタイプを含んでもよい。あるいは、不揮発性メモリエリアすなわち記憶領域が、揮発性メモリエリアすなわち記憶領域の代わりに使用され、同様のファンクショナリティを実現することが可能である。したがって、上述の不揮発性メモリまたは記憶装置は、本発明の範囲からの逸脱なしに揮発性メモリエリアすなわち記憶領域1004と同じ仕方で動作するように適合化されることが可能である。
【0092】
図8Bは、アップデートパッケージ110を処理してアップデート機能を行うために使用されるダウンロードエージェント1020とアップデートエージェント1025とを含む不揮発性領域1002の一実施形態を示す。一般的に、ダウンロードエージェント1020は、アップデートパッケージ110を取得することに関連した機能を果たし、一方、アップデートエージェント1025は、アップデートプロセスの完了時に第1のオリジナルのコードバージョンが第2のアップデートされたコードバージョンに変換されるように不揮発性メモリエリアすなわち記憶領域1002のコードセクション1006とデータセクション1008との両方の内容を好ましくは変更するために、アップデートパッケージ110内に含まれている命令を適用する働きをする。
【0093】
アップデートエージェント1025は、不揮発性領域1002のコードセクション1006のブートセクターまたはブートセクション内に好ましくは格納されている組込み機能コンポーネントを含む。電子装置のルーチン動作中は、アップデートエージェント1025は非活動状態のままであってよく、その電子装置のオペレーティングシステムが、その電子装置を制御する機能呼出しとコマンド操作とを行うことを可能にする。しかし、アップデートプロセスが起動されるときには、アップデートエージェント1025が電子装置の制御を行い、アップデートパッケージ110をインストールすることに関連した特定の操作を行うことが可能である。一側面では、アップデートエージェント1025は、好ましくは、アップデートをインストールするために必要な機能を果たすことに最適化され専用化されているサービスセットを有する特殊化されたアプリケーションとして維持される。この仕方でアップデートエージェント1025を設計する場合には、アップデートエージェント1025のサイズが、好ましくは、そのアップデートエージェントが不揮発性領域1002内で占有する空間の量を減少させるように低減せしめられる。
【0094】
アップデートエージェント1025は、第1のオリジナルのコードバージョンを第2のアップデートされたコードバージョンに変換するのに必要な操作を行うアップデートパッケージ110中に含まれている命令を処理または実行する役割を果たす。アップデートエージェント1025は、さらに、アップデートプロセスに関連した特定の操作を行うために使用される1つまたは複数のファンクショナリティを処理することが可能である。例えば、アップデートエージェント1025は、アップデートパッケージ110の命令を既存のコードバージョンに適用するための主要なファンクショナリティを含んでもよい。さらに、アップデートエージェント1025は、アップデートパッケージ管理に関連したクライアント操作を行うためのファンクショナリティを含んでもよい。一側面では、アップデートエージェント1025は、ストリング処理またはデータ処理、メモリ管理、および、アップデートプロセスのアクティビティを調整するために使用される他の操作を行ってもよい。別の側面では、アップデートエージェント1025は、アップデートプロセス中に使用される1つまたは複数の装置ドライバを含む。アップデートエージェント1025は、さらに、アップデートプロセスを管理するために必要とされる機能論理を含んでもよく、および、アップデートパッケージ110の命令を実行するために必要とされる組込みオペレーティングシステムによっては提供されない機能を含んでもよい。さらに、アップデートエージェント1025は、アップデートパッケージ110を受け取るのに十分な記憶空間をデータセクション内に生じさせるようにデータセクション内のデータを圧縮するために使用される様々な操作を行うファンクショナリティを含んでもよい。最後に、アップデートエージェント1025は、圧縮/解凍、暗号化/暗号解読、および/または、アップデートパッケージ110の内容の妥当性検査のような、アップデートパッケージ110を準備するために使用されるファンクショナリティを含んでもよい。
【0095】
ダウンロードエージェント1020は、アップデートサーバと通信することと、使用可能なアップデートパッケージ110を検索することとに関連した操作を行う役割を果たす。アップデートエージェント1025と同様に、ダウンロードエージェント1025は、アップデートパッケージ検索プロセスに関連した特定の操作を行うために使用される1つまたは複数のファンクショナリティを含んでもよい。例えば、ダウンロードエージェント1020は、使用可能なアップデートパッケージ110を含んでおりおよびダウンロードプロセス中に使用される必要なハンドシェーキングおよび誤り訂正ルーチンも提供する、サーバと通信するためのファンクショナリティを含んでもよい。さらに、ダウンロードエージェント1020は、ダウンロードプロセス中にアップデートパッケージ管理に関連したクライアント操作を行うためのファンクショナリティを含んでもよい。一側面では、ダウンロードエージェント1020は、ストリング処理またはデータ処理、メモリ管理、および、アップデートプロセスのアクティビティを調整するために使用される他の操作を行ってもよい。別の側面では、ダウンロードエージェント1020は、アップデートパッケージのダウンロードプロセス中に使用される1つまたは複数の装置ドライバを含む。ダウンロードエージェント1020は、さらに、ダウンロードプロセスを管理するために必要とされる基本的な機能論理を含んでもよく、および、サーバとの通信を確立して所望のアップデートパッケージ110を検索するために必要とされる、組込みオペレーティングシステムによっては提供されない機能を含んでもよい。さらに、ダウンロードエージェント1020は、アップデートパッケージ110を受け取るのに十分な記憶空間を生じさせるように不揮発性および揮発性メモリエリアすなわち記憶領域1002、1004内のデータを圧縮または再編成するために使用される様々な操作を行うためのファンクショナリティを含んでもよい。最後に、ダウンロードエージェント1020は、アップデートパッケージ110中に含まれている情報に対する不正なアクセスを防止するために、サーバとクライアント装置との間の機密保護通信の使用を可能にするためのファンクショナリティを提供してもよい。さらに別の側面では、ダウンロードエージェント1020は、サーバとクライアント装置との間の情報転送中に使用される1つまたは複数の暗号化方式を定義する専用の機密保護ライブラリを含むことが可能である。
【0096】
ダウンロードエージェント1020またはアップデートエージェント1025は、さらに、アップデートパッケージ110を解凍および/または準備するために十分な使用可能な空間が電子装置内に存在するかどうかを判定するために使用されてもよい。追加の空間が必要とされる場合には、ダウンロードエージェント1020またはアップデートエージェント1025は、アップデートパッケージ110を受け取って処理するのに十分な記憶空間を生じさせるために、不揮発性メモリエリアすなわち記憶領域1002または揮発性メモリエリアすなわち記憶領域1004の内容を圧縮または再編成することが可能である。アップデートプロセスが完了した後に、不揮発性メモリエリアすなわち記憶領域1002と揮発性メモリエリアすなわち記憶領域1004との圧縮または再構成された内容が、そのオリジナルの状態に戻されて、電子装置が通常の動作を再開してこれらの領域1002、1002の内容にアクセスすることを可能にすることもできる。
【0097】
アップデートエージェント1025とダウンロードエージェント1020との好ましい特徴の1つは、これらが電子装置上のメモリエリアすなわち記憶領域内の比較的少量の空間を占有するように設計されているということである。この特徴は、メモリ空間すなわち記憶空間が、設計、サイズ、および/または、電力消費という理由のような装置上の制約にために制限されている装置において特に有用である。例えば、典型的な移動電話は、約500K−1500Kのサイズを有する物理的メモリ記憶装置を含むことがある。移動電話の組込みオペレーティングシステムはこの記憶空間の大部分を占有し、追加の空間が、電話番号、住所等のようなユーザ定義可能なデータのために割り当てられなければならない。アップデートエージェント1025とダウンロードエージェント1029は、約20K−50Kの合計サイズを維持するような仕方で実装される。この比較的小さなサイズは、メモリエリアすなわち記憶領域に関する大きな制約を有する電子装置を含む大半の電子装置によって容易に受け入れられることが可能である。メモリもしくは記憶装置の制約が大きな問題をもたらさない場合には、アップデートエージェント1025および/またはダウンロードエージェント1020は、追加のファンクショナリティと特徴とを含むように設計されることが可能である。しかし、アップデートエージェント1025とダウンロードエージェント1020との全体的サイズは、典型的には、多くの従来のアップデートアプリケーションまたはアップデートモジュールよりも著しく小さい。
【0098】
ダウンロードエージェント1020とアップデートエージェント1025とに加えて、状態テーブル1050が、さらに、不揮発性メモリエリアすなわち記憶領域1008内に常駐することが可能である。状態テーブル1050は、好ましいことに、不揮発性メモリ空間すなわち記憶空間内に内容が保存されておりおよび装置の動作状態を判定するためにアップデートパッケージの検索および処理操作中に使用されるデータ構造である。状態テーブル1050が不揮発性メモリエリアすなわち記憶領域1008のデータセクション1008内に位置しているように示されているが、状態テーブル1050が記憶領域1002の不揮発性メモリのどんな部分にも位置せしめられることが可能な他の構成が存在する。
【0099】
一側面では、状態テーブル1050は、アップデートプロセスのアクティビティを調整するためにダウンロードエージェント1020とアップデートエージェント1025によって使用される1つまたは複数のフラグまたは識別子を含む。さらに、状態テーブル1050は、アップデートプロセスの現在状態と完了状態とを識別するために誤り許容プロセスで使用される情報を記憶することが可能である。さらに、状態テーブル1050中に含まれている情報は、装置が通常動作モード(アップデートプロセスがアイドル状態にある)またはアップデート処理モード(アップデートプロセスが非アイドル状態にある)にあるかどうかを判定するために装置ブートプロセス中に使用されることが可能である。この装置のモードは、アイドル状態か起動状態のどちらかであることが可能なアップデート状態変数またはフラグによって決定される。アイドル状態では、アップデート操作が待機状態にあるとは判定されず、通常の装置動作が進行しなければならない。起動状態では、1つまたは複数のアップデート操作が現時点で待機状態にあり、通常の装置動作は、アップデート操作が実行されることを可能にするために一時停止状態にされなければならない。
【0100】
装置の起動中に、典型的にはコード実行が例えば「0x0000」のような特定の起動アドレスで開始する。このアドレスは、アップデートエージェント1025が常駐するブートブロックまたはブートセクタを意味する。アップデートエージェント1025は、行われなければならないアップデート操作を識別するために、アップデート状態変数の値を求めて状態テーブルモジュール1050を調べるか、あるいは、どの操作も待機状態にない場合には、アップデートエージェント1025がプログラム実行を電子装置の常用のファームウェアまたはオペレーティングシステムに移行させる。
【0101】
一側面では、アップデートプロセスが中断される場合に、アップデートの現在位置または完了状態が、アップデートパッケージ情報の様々な部分を使用して判定されることが可能である。誤り許容アップデートプロセスに関してより詳細に後述するように、アップデートパッケージは、誤り訂正コード、ディジタルシグネチャ、ファイルまたはバンクのサイズ、および、コードのどの部分が適切にアップデートされ終わっているかを判定するためにアップデートエージェント1025によって解釈される他の情報を含んでよい。アップデートプロセスが予期せずに中断されている場合には、アップデートエージェント1025はこの情報を使用して、最後の適切なアップデートがどの位置まで適用され終わっているか、および、アップデートプロセスを完了させるためにアップデートをその位置から続行するかどうかを判定する。
【0102】
一実施形態では、アップデート管理システムは、電子装置の既存のコードバージョンに対してアップデートを行うためにバンク単位(bank−by−bank)アップデートプロセスを使用する。このプロセスは、典型的には限られたアップデート能力だけしか持たない携帯用電子装置のアップデート操作タスクを管理することに特に適している。この方法を使用して、アップデート管理システムは、電子装置のアーキテクチャによって課せられるメモリ空間すなわち記憶領域の制約のせいで移動電話のような電子装置の簡便なアップデートを妨げる多くの従来のシステムの制限を克服する。例えば移動電話では、オペレーティングシステムは典型的には不揮発性メモリエリアすなわち記憶領域内に常駐し、このオペレーティングシステムは、コストおよび製造上の問題のためにより小さいサイズを一般的に有する揮発性メモリエリアすなわち記憶領域内に保持されるには大きすぎる可能性がある。この制限は、オリジナルのコードバージョンの発生可能な破損なしにアップデートが適用されることが可能な適切な「作業」領域にオペレーティングシステムの完全なイメージがコピーされることを妨げる。この結果として、移動電話を含む電子装置は、アップデートを行うことを可能にする方法に関して制限されており、および、典型的には、高い誤り許容能力を提供せず、したがって、その電子装置を動作不能にする可能性があるアップデート誤りがその電子装置に生じやすくなる。
【0103】
本発明は、セクション単位すなわちバンク単位の仕方でアップデートを行うための機構を提供することによってこの制限を克服する。このバンク単位アップデート方法は、ファイルまたはコードバージョンのイメージ全体が「作業」領域に記憶されることを必要とせず、むしろ、アップデート操作を区分して、指定されたコードセクションに対して逐次的にアップデート操作を適用することによって、限られた量のメモリ空間すなわち記憶空間を使用して行われる。この方法におけるセクション単位のアップデートは、有利なことに、移動電話の揮発性メモリセクション内に存在するメモリ空間すなわち記憶空間のような比較的小さい領域の使用可能なメモリ空間すなわち記憶空間と共に使用されることが可能である。さらに、バンク単位アップデート方法は誤り許容力を改善し、アップデートにおける誤りが生じるときにアップデートプロセスが再開されることを可能にする。
【0104】
本発明を説明する際に使用される術語「バンク」は、柔軟に定義されることが可能なメモリエリアすなわち記憶領域の一部分を意味する。バンクは特定の電子装置では静的サイズを有することがあるが、このサイズは装置毎に様々であってよい。さらに、特定の電子装置内のバンクは可変的にサイズ決定されてよく、および、電子装置のための特定のアーキテクチャによって定義される通りに1つまたは複数の論理的または物理的ブロックの内容を意味することも可能である。アップデートプロセスを静的に定義されたバンクサイズに関して説明しているが、このアップデート管理システムのシステムおよび方法は、様々な異なる電子装置構成に関するアップデートの必要性または選好に対応するために、異なるバンク構成に対応するように容易に適合化されることが可能である。
【0105】
図9と図10は、装置内に存在する既存のコードバージョンを新しいすなわちアップデートされたコードバージョンに変換するためにアップデート管理システムによって好ましくは使用されるバンク単位アップデート方法を示す。コード変換は、命令セットの命令またはアップデートパッケージ110を処理するアップデートエージェント1025によって管理される。アップデートプロセス全体にわたって、高度の誤り許容力が、各バンクのデータ内容を妥当性検査するために多数のチェックポイント操作(checkpointing operation)によって維持される。より詳細に後述するように、これらの操作は、そうでない場合にはコードバージョンを破損させて装置を動作不能にする可能性がある誤りからの回復に有用である。
【0106】
図9は、移動電話、ページャ、パーソナルディジタルアシスタント、または、他の電子装置のような電子装置と共に使用できるバンク単位アップデート方法1100の概観を示す。図8Aの説明に関連して上述したように、様々な携帯用電子装置のためのアーキテクチャは、不揮発性メモリエリアすなわち記憶領域1002と、揮発性メモリエリアすなわち記憶領域1004とを含む。不揮発性記憶領域は、さらに、情報またはデータを記憶するために使用される別々にアドレス指定可能なロケーションを表現する複数のブロックすなわちバンク1010に区分されることが可能である。アップデートされることが好ましいオペレーティングシステム、ファームウェア、または、他の情報が、さらに、不揮発性メモリエリアすなわち記憶領域1002中に記憶され、および、複数のバンク1010の中の少なくとも幾つかのバンクにわたって配分される。
【0107】
図9を再び参照すると、バンク単位アップデートプロセス1100は開始状態1105で開始し、この状態1105では、電子装置はアップデートを開始するための信号を検出する。一側面では、アップデート信号が、通常動作モードからアップデート処理モードへの変化を認識することを含む。上述したように、このモードの変化は、状態テーブル内に設定されているアイドル状態変数を使用して識別されることが可能である。その次に、バンク単位アップデートプロセス1100は状態1110に進み、この状態1110では、アップデートパッケージはアップデートサーバからの伝送のための要求の後に受け取られる。この状態1110では、アップデートパッケージ110が好ましくは揮発性メモリエリアすなわち記憶領域内に受け取られて一時的に記憶される。アップデートパッケージ110の受け取りが完了した後に、プロセス1100はアップデート転送状態1115に進み、この状態1115では、完全なアップデートパッケージ110が不揮発性メモリエリアすなわち記憶領域1002内にコピーされる。アップデートパッケージ110を不揮発性領域1002にコピーすることによって、一定レベルの誤り許容力が実現され、電子装置は、サーバコンピュータとさらに通信することなしに後続のアップデート操作を行うことができる。一側面では、アップデートパッケージ110の完全な受け取りと確実な記憶とを反映するために、アップデートパッケージ110が不揮発性メモリの中に保存され終わった後に状態テーブルがアップデートされる。
【0108】
アップデートプロセス1100はメモリ割当て状態1120に進み、この状態1120では、「作業」バンクと「バックアップ」バンクとのための空間が揮発性および不揮発性メモリエリア1002、1004内にそれぞれに割り当てられる。作業バンクとバックアップバンクは、コードセクションのためのアップデートが完了せしめられて妥当性検査され終わるまでオリジナルコードが変更されないような仕方で既存のコードバージョンの区分コンポーネントに対して操作を行うために、アップデートプロセス1100によって使用され、それによってオリジナルコードが予期しない処理誤りまたは電源切断によって破損せしめられないことを確実なものにする。
【0109】
状態1120中は、アップデートパッケージ110の命令を処理するためにアップデートエージェント1025にとって必要とされるアドレスをポイントする複数のポインタが初期化される。第1のポインタは、アップデートパッケージ110内の第1の命令のアドレスをポイントするために初期化される命令ポインタを含む。この命令は、命令ポインタによってポイントされるアドレスを参照することによって後で検索され、および、この命令は、アップデートされるべきバンク情報に適用される。
【0110】
さらに、作業バンクポインタが、バンクアップデートが生じることになる揮発性メモリ内の位置をポイントするために初期化される。作業バンクポインタは、作業バンクポインタによって指定されるロケーションにおいてアップデート操作を行うアップデートエージェント1025によって基準として使用される。さらに、電源切断の場合の誤り許容力と再ブート操作またはリセット操作とを確実なものにするために、作業バンクのコピーが維持される不揮発性メモリ内のロケーションをポイントするバックアップバンクポインタが初期化される。
【0111】
状態1120におけるポインタ初期化の完了後に、プロセス1100は、バンク転送状態1125において開始する一連のバンクアップデート操作1123を続け、この状態1125では、不揮発性メモリエリアすなわち記憶領域1002内に常駐するオリジナルのコードバージョンの1つのセクションが揮発性メモリエリア1004内の作業バンクに転送される。オリジナルコードバージョンからコピーされたコードセクションは、情報の特定のバンクのために新しいコードバージョンを生成するように好ましくは操作される命令セットによって指定された情報バンクに対応する。その次に、プロセス1100はアップデート命令適用状態1130に進み、この状態1130では、命令セットからの適切な命令が、バンク中に含まれる旧いコードバージョンが新しいコードバージョンに変換されるような仕方で情報の作業バンクを変更するために実行される。
【0112】
適切な命令が実行されて、対応するコードが揮発性作業バンク内でアップデートされ終わると、プロセスはバンクバックアップ状態1135に進み、状態1135では、その作業バンクの内容が、不揮発性メモリエリアすなわち記憶領域1002内に位置しているバックアップバンク内にコピーされる。その次に、揮発性作業バンク内のコードが、バックアップバンク状態1140において、オリジナルのコードが得られたバンクに対応する適切なロケーションにコピーされる。状態1140においてバンクのコピーが完了すると、プロセス1100は新たな状態1145に進み、この状態1145では、バンクポインタが、アップデートされなければならないその次の連続したバンクに増分される。
【0113】
命令ポインタがプロセス1100がすでに完了している(すなわち、全バンクがアップデートされ終わっている)ということを示す場合には、プロセス1100が終了せしめられる。この時点では、アップデート操作が完了していることを反映するために、状態テーブルもアップデートされてよく、アップデートプロセスはアイドル状態を再開する。この後で、電子装置が再起動され、新たにアップデートされたコードバージョンが電子装置によって使用される。そうではなく、ポインタが、プロセス1100が完了していない(すなわち、1つまたは複数のバンクがアップデートされていないままである)ことを示す場合には、プロセス1100はバンク転送状態1125に進み、このバンク転送状態1125では、その次のバンクが揮発性メモリエリアすなわち記憶領域1004内の作業バンクにコピーされ、プロセス1100が、新たに選択されたバンクのアップデートを完了させる。一側面では、再起動中に状態テーブルが検査され、アイドル状態が検出される場合には通常(非アップデート)動作が再開する。非アイドル状態が検出される場合には、アップデートエージェント1025が電子装置を制御するように指示される。
【0114】
図10は、さらに、バンク単位アップデートプロセス1100をより詳細に示し、移動電話またはパーソナルディジタルアシスタントのような携帯用電子装置内に典型的に存在する上述の不揮発性メモリエリアすなわち記憶領域1002または揮発性メモリエリアすなわち記憶領域1004との関連における動作を示す。以前に図8Aに示したように、不揮発性メモリエリアは、アップデートエージェント1025によって別々にアドレス指定可能でありかつアクセス可能である複数のバンクに分割されている。不揮発性バンク1120の少なくとも幾つかは、アップデートパッケージ110を使用してアップデートエージェント1025によってアップデートされることになるメモリエリアのセクションを含む。一側面では、これらのバンクは、電子装置にファンクショナリティを伝達しかつ第1のコードバージョンから第2のコードバージョンに好ましくはアップデートされる、オペレーティングシステム、ファームウェアコード、または、アプリケーションを含む情報を含むことが可能である。
【0115】
状態1210に示されているように、典型的には、適切な使用可能なアップデートパッケージ110が識別されて、上述のダウンロードエージェント1020のファンクショナリティを使用して電子装置に転送された後に、バンク単位アップデートプロセス1100が始まる。アップデートパッケージ110が受け取られて、揮発性メモリエリアすなわち記憶領域1004のセクション1222内に一時的に記憶され、および、一連の妥当性検査が、パッケージ110が完了しておりかつ誤りがないことを確実なものにするために実行される。これらの妥当性検査は、受け取られたアップデートパッケージ110に関する巡回冗長検査コード(CRC)を求めることと、このコードを、アップデートパッケージ110内に記憶されている予想CRC値に対して比較することとを含んでよい。さらに、妥当性検査は、アップデートパッケージ110のサイズを識別することと、ダウンロードエージェント1020によって求められた予想サイズに対してこのアップデートパッケージ110のサイズの値を比較することによって行われることも可能である。
【0116】
さらに、アップデートパッケージ110は、受け取られたアップデートパッケージ110が既存コードバージョンに対する適用に適しているかどうかを判定するためにダウンロードエージェント1020によって評価されるディジタルシグネチャを含んでもよい。一側面では、このディジタルシグネチャは、転送されたデータパッケージ110のソースと内容を妥当性検査するために使用できる、装置の名称または識別情報、装置の製造業者、モデルまたはシリアル番号、および、他の特徴のような情報を含むことができる識別ストリングである。
【0117】
その次に、アップデートパッケージ110は、より安全確実な記憶のために、その一時的ロケーション1122から不揮発性メモリすなわちフラッシュメモリコンポーネント1002のセクション1224に転送される。不揮発性メモリの中にアップデートパッケージ110を記憶することが、サーバからのアップデートパッケージ110の再伝送を必要とせずに電源故障、装置不通、または、リセット操作から回復するための手段を提供する。上述したように、フラッシュメモリ1002内に含まれているイメージが完全でありかつ所望のアップデートパッケージ110の誤りの無いコピーであるということを確実なものにするために、1つまたは複数の妥当性検査が使用される。
【0118】
アップデートパッケージ110をフラッシュメモリ1002内に記憶した後に、状態テーブル(図示されていない)内に記憶されているアイドル状態フラグが、電子装置がアップデートモードに進む用意が整っているということを表示するためにアップデートされる。その次に、電子装置が再起動され、状態フラグがアップデートエージェント1025によって解釈されて、その電子装置の通常動作を一時停止させ、アップデートエージェント1025がアップデートパッケージ110をインストールするための基本的な装置ファンクショナリティを提供するアップデートモードに入る。
【0119】
電子装置の再起動後に、揮発性メモリコンポーネントすなわちRAMメモリ1004の内容は典型的には失われ、その結果として、アップデートパッケージ110のコピーが、状態1220において、アップデートエージェント1025による使用のためにRAMメモリ1004のセクション1222に再びコピーされる。この状態1220中に、アップデートパッケージ110は、アップデート情報または命令を実行可能な形態で提供するために前処理されてもよい。例えば、アップデートパッケージ110が圧縮または暗号化されている場合には、アップデートエージェント1025は、アップデートパッケージ110のコードの実行の用意を整えるために、1つまたは複数の操作を行う。一側面では、上述の命令ポインタは、アップデートエージェント1025によって実行される第1の命令のアドレスに初期化されてもよい。全体的に述べると、これらの操作は、新しいコードバージョンを生成するための既存のコードバージョンの後続の逐次的アップデートのために、アップデートエージェント1025と命令セットとを準備する。
【0120】
状態1230に進むと、アップデートエージェント1002のための作業環境を生成する複数のメモリ割当て操作が行われる。一側面では、作業バンク1232がRAMメモリ1002内に割り当てられる。作業バンク1232が、好ましくは、フラッシュメモリエリア1004内のアップデートされるべきバンク1120と同一のサイズであるように構成され、および、命令セットによって決定される操作が行われるオペレーショナルバッファ領域すなわち作業メモリエリアとして働く。さらに、電源切断に対する誤り許容力を実現するために、および、作業バンク1232中のデータが破損するか妥当性検査で不合格になることがある場合にはデータのバックアップコピーとしての役割を果たすために、アップデートプロセス全体にわたって使用される不揮発性バッファすなわちバックアップ記憶装置を提供するために、バックアップバンク1234がフラッシュメモリ1004内に割り当てられるかまたはポインタ加算されてもよい。
【0121】
状態1240に進むと、アップデートプロセスは、アップデートエージェントと共に、RAMメモリセクション1222内に記憶されているアップデートパッケージに含まれている命令を読み出して実行することを開始する。一側面では、アップデートパッケージの命令は、アップデートされるべきフラッシュメモリ1002の第1のバンク1242のアドレスをポイントするポインタを初期化する。アップデートエージェント1025は、このバンク1242に含まれている情報にアクセスし、その中に含まれている情報をRAMメモリ1002の作業バンク1232にコピーする。上述したように、様々な妥当性検査の方法が、作業バンク1232の内容がそのコピー元であるフラッシュメモリバンクを正確に反映することを確実にするために採用されることも可能である。バンクコピープロシージャが失敗した場合には、その次のアップデート状態に進む前に、アップデートプロセスが繰り返されて内容が検査されてもよい。好ましいことに、作業バンク1232の使用は、多くの従来の方法よりも向上した度合いの誤り許容力をアップデートシステムに与えるということが理解されるだろう。一側面では、新たにアップデートされたバンク情報が検査されて不揮発的に記憶されることが可能になるまで、オリジナルの(無変更の)コードがフラッシュメモリバンク1002内に維持される。このアップデート方法は、好ましいことに、さもなければ装置故障を生じさせる可能性があるデータ破損の可能性を低減させる。さらに、バンクアップデート操作が失敗した場合には、既存のコードの保存が、アップデートプロセス全体が開始状態から再開されることを必要とせずに、アップデートプロセスがその失敗箇所から再開することを可能にする。アップデートプロセスの誤り許容力特性の追加の詳細説明は、より詳細に後述する。
【0122】
状態1250に進むと、アップデートエージェント1025は、作業バンク1232内に記憶されている第1のバンクのコピーに含まれている情報をアップデートするために適切な命令を適用する。前述したように、この命令は、作業バンク1232に関するアップデートされたバンク情報を生成するのに好ましくは使用される情報シーケンスを得るために、フラッシュメモリ1002内に含まれている他のバンク1120からの情報をアドレス指定してコピーすることが可能である。さらに、他の操作が、アップデートジェネレータ102によって判定される通りに所望の内容を反映するために作業バンク内に含まれているコードを変更するために使用されることが可能である。一側面では、第1のコードバージョンと第2のコードバージョンとの間で変化していないと判定されるバンクは、さらに別の処理を必要とせず、アップデートプロセスは状態1240にループして戻ってよく、この状態1240では、新しいバンクがコピーされ、そのアップデートプロセスが、アップデートパッケージからの対応する命令を使用して再開される。あるいは、アップデートを必要としないこうしたバンクは、アップデートの効率を改善するために、先行ステップ1240においてスキップされる。この場合も同様に、アップデートバンク情報が適正であることを確認するために、アップデート命令が実行され終わった後に、様々な誤り検出方法が行われることが可能である。
【0123】
状態1260に進むと、作業バンク1232に含まれている新たにアップデートされた情報が、フラッシュメモリ1002内に位置しているバックアップバンク1234にコピーされる。さらに別の度合いの誤り許容力を実現するために、作業バンク1232のコピーがこの時点で作成され、この場合には、作業バンク1232をオリジナルの第1のバンク1242にコピーした後に電源切断が生じた場合には、アップデートプロセスは、障害が起きた位置を識別し、および、アップデートされた情報のコピーが不揮発性フラッシュメモリ1002内に保持されている場合にはその位置から進行する。作業バンク1232をバックアップバンク1234内にコピーすることが完了する前に障害が生じた場合には、アップデートプロセスは、アップデートされたバンク1232からバックアップバンク1234内へのコピー操作を再び行うことを試みることが可能である。あるいは、作業バンク1232をバックアップバンク1234内にコピーすることが完了する前に再ブートすなわち再起動操作に起因した揮発性メモリの損失を結果的に引き起こす電源切断または他の深刻な障害が発生した場合には、アップデートプロセスは、第1のバンク1242からの情報が作業バンク1232にコピーされる先行ステップに「ステップバック」することが可能である。
【0124】
上述の説明から、アップデートプロセスが、データ破損またはアップデート誤りが生じた場合にそのアップデートプロセスがアップデートプロセス中の潜在的な恒久的なデータ損失または破損なしにそこから再開するための位置を発見することが可能であるということを確実なものにする幾つかの機構を提供するということが理解できるだろう。
【0125】
状態1270に進み、新たにアップデートされた情報のコピーがバックアップバンク1234内に安全に記憶され終わると、アップデートプロセスが進行して、作業バンク1232内に含まれている情報をフラッシュメモリ1002内に位置しているオリジナルの第1のバンク1242の中にコピーして戻す。アップデートプロセスの他のステップと同様に、バンク情報は、内容が所望のコードを反映することを確実にするために妥当性検査される。
【0126】
状態1280に進み、アップデートプロセスが、その次のバンク1246に関して同様の仕方で繰り返され、この場合には、アップデートされるべきその次のバンク1246のアドレスにバンクポインタがアップデートされる。その次に、ステップ1240−1270が、その次のバンク1246からの情報を使用して繰り返される。このようにして、フラッシュメモリ1002のバンク1120のすべてが、好ましいことに、誤り許容力を実現する形でアップデートされることが可能であり、一方、フラッシュメモリのメモリサイズよりも小さいRAMメモリサイズによってもたらされるアーキテクチャ上の制限に適応することが可能である。
【0127】
アップデートエージェント1025がアップデートプロセスが完了していると判定するときには、バックアップアップデートパッケージ記憶領域1224とバックアップバンク1234とを含むフラッシュメモリ1002内における空き領域割当て(空き領域の割当てがある場合には)が、これらの空き領域がアップデート後に他の目的のために使用できるように解放される。さらに、状態テーブル(図示していない)内に含まれている状態フラグが、どんなアップデート操作も待機状態にはないアイドル状態を反映するようにアップデートされる。その次に、電子装置がリセットまたは再ブートされ、および、状態テーブル内の状態フラグを検査した後に、電子装置は、その次のアップデートプロシージャが起動されるまで通常の動作モードに戻るだろう。一側面では、バックアップ記憶領域1224は、(ポインタがバックアップ記憶領域1224を指定するために使用される場合のように)割当て解除(deallocation)も解放も必要としない。この例では、アップデートプロセスの完了後に、他のアプリケーションまたは操作がバックアップ記憶領域1224の内容を単純にオーバーライトすることが可能である。さらに、揮発性メモリエリアすなわち記憶領域1004内に含まれているデータが典型的には再ブート操作中に失われるので、揮発性メモリエリアすなわち記憶領域1004に対して特別な操作が行われることは必ずしも必要ではない。
【0128】
上述したように、十分なレベルの誤り許容力を実現するために、アップデートサーバおよびプロセスは、予期しないハードウェアまたはソフトウェアの中断または障害に効率的に応答する能力を含む。図11は、アップデートパッケージ110内に含まれている命令セットの適正なインストレーションを確実なものにするためにクライアント装置104のアップデートエージェント1025によって使用される誤り許容プロセスの一実施形態を示す。命令セットが、既存コードバージョンを置き換えるためにクライアント装置104のような計算装置により新しいコードバージョンをインストールすることが可能である、効率的な変換方法または命令シーケンスを提供する。一側面では、誤り許容プロセス1300は、アップデートパッケージ110内に含まれている命令の実行中の中断を回避するために、クライアント装置104によって使用される既存コードバージョンを有利に保護する一連の検査または妥当性検査を含む。さらに、誤り許容プロセス1300は、アップデート後の適正な装置の動作を保証するために、アップデートされたコード内に含まれている情報が、必要な情報を正確に反映することを確実なものにする。この誤り許容プロセスがアップデートサーバ1025によるアップデート命令の処理に関連しているので、誤り許容シーケンスの次の説明が、この誤り許容プロセスの顕著な特徴を明らかにする。この誤り許容プロセスが、図9と図10に関連して詳細に説明した上述のアップデートプロセスと共に機能するということが理解されるだろう。したがって、誤り許容シーケンスはアップデートプロセスの一体的な部分として見なされてもよく、および、このプロセスの一部分は、上述のアップデートプロセスとの協調的なファンクショナリティを有することが可能である。
【0129】
開始状態1302におけるクライアント装置104の初期化の後に、誤り許容プロセス1300は状態1304に進み、この状態1304では、アップデートエージェント1025は「非アイドル」状態の認識のために状態テーブルを検査する。この「非アイドル」状態は、クライアント装置104が、アップデートパッケージ1025の命令が新しいコードバージョンを生成するために適用されることになるアップデート処理モードにあるということを意味する。アップデート処理モードが認識されない場合には、誤り許容シーケンスは終了状態1306で終了し、および、装置は、さらに別のアップデート処理なしに通常動作モードで動作し続ける。そうではなく、アップデート処理モードが認識される場合には、誤り許容プロセス1300は妥当性検査状態1308に進む。この妥当性検査状態1308では、アップデートエージェント1025が、不揮発性メモリ内にすでに記憶されている保存されたアップデートパッケージ110の妥当性検査と、作業バンクの開始アドレスおよび内容の識別と、バックアップバンクの開始アドレスおよび内容とを含む、1つまたは複数の確認操作または検査を行う。
【0130】
状態1308では、アップデートエージェント1025がアップデート前の妥当性検査の不合格を判定し、その次に、アップデートプロセスおよび誤り許容プロセスが状態1310で終了する。あるいは、アップデートエージェント1025が状態1308において状態テーブル情報を妥当性検査することが可能である場合には、誤り許容プロセス1300は状態1312に進み、この状態1312では、アップデートエージェント1025が、アップデートされるべきその次のバンクを発見する。
【0131】
状態1312では、アップデートエージェントは、非圧縮のアップデートパッケージからのバンク識別情報を検査し、アップデートプロセスがどこで終了せしめられておりおよびどこから再開されなければならないかを発見する。これは、バンク識別情報からのサイズおよびCRC情報を、電子装置内の物理バンクから計算された既存のアップデートされたバンク情報と比較することによって行われる。一側面では、このプロセスは、バンクサイズおよびCRC情報を比較することによって適切な再開位置を求める。アップデートパッケージ命令セットの始点から逐次的に進行して、予想されたサイズおよびCRC情報に合致しないバンクが、アップデートされるべき第1のバンクである。さらに、例えば、アップデートされたバンク情報を不揮発性メモリ1002の既存のバンクに中にコピーして戻すときのように、アップデートプロセスがバンクコピー機能中に中断される場合、および、サイズおよび/またはCRC情報が予想値に合致しない場合には、バックアップバンクが、最後のアップデートされたバンクを復元するために使用されることが可能である。
【0132】
その次にアップデートエージェント1025は、上述したように状態1314においてバンクアップデートを行う。その次に、状態1316において、一連のアップデート妥当性検査が、バンクアップデートが成功したかどうかを判定するために適用される。一側面では、アップデートエージェント1025は、バンク記述情報を検査することによってバンク妥当性検査を行ってよく、このバンク記述情報はバンク内に含まれる古い情報と新たにアップデートされた情報とに対応するバンク識別情報とCRC値とを含む。さらに、妥当性検査タスクが、新旧のファイルサイズまたはバンクサイズの値が予想値に合致するかどうかを判定するために、これらの値を評価することも可能である。さらに、アップデートエージェント1025は、実際のバンク記述情報をアップデートパッケージ110内に記憶されているバンク記述情報と比較してもよい。
【0133】
CRCコードが一致しない場合のように、1つまたは複数のアップデート妥当性検査が不合格だった場合には、誤り許容プロセス1300は、状態1314で再びバンクアップデートを行うためにループバックする。アップデート妥当性検査が状態316で合格する場合には、誤り許容プロセス1300は状態1318に進み、この状態1318では、アップデートエージェントがアップデートインストレーションが完了しているかを判定する。アップデートエージェント1025は、先行バンクの各々に関する適正なアップデートインストレーションを妥当性検査するために先行バンクのバンク記述情報、CRC、または、サイズ値を再検査することによって、このタスクを行うことが可能である。さらに、アップデートエージェント1025は、アップデートインストレーションが完了しているかどうかを判定するために使用されるバンク位置を求めるために、カウンタまたはポインタを使用してもよい。アップデートインストレーションが完了していない場合には、誤り許容プロセス1300は、アップデートされるべきその次のバンクを発見するために、状態1312にループバックする。あるいは、アップデートのインストレーションが完了している場合には、誤り許容プロセス1300は、クライアント装置104を再初期化することによって終了状態1320において終了する。さらに、アップデート操作が完了していると判定される場合には、「非アイドル」状態が「アイドル」状態に戻され、このことが、クライアント装置104のリセットまたは再初期化時に、装置動作の状態をアップデート処理動作モードから通常動作モードに変化させる。
【0134】
有利なことに、上述の誤り許容プロセス1300は、電源障害またはデータ破損のような予想外の障害に対してオペレーショナルソフトウェアコードまたはファームウェアコードを保護するために使用される。電源障害がインストレーションプロセスで起こるときには、アップデートエージェント1025が、アップデートされ終わっているバンクと、アップデートされるべきその次のバンクと、アップデートインストレーションの完了時点とを判定することが可能である。さらに、誤り許容プロセス1300は、バンクアップデートインストレーションと変換プロセスとを、ハードウェア障害もしくはソフトウェア障害、電源障害、データ破損、および/または、ユーザの制御を超えた他の破局的な事態に対して保護する。
【0135】
図12は、機密保護および妥当性検査のために使用されるシグネチャ生成および認証プロセス1400の一実施形態を示す。一実施形態では、アップデートパッケージ110は、ディジタル情報シーケンスを機密保護する形で管理し、クライアントのプライバシを保護し、かつ、データ破損の可能性を低減させる仕方で、アップデート装置サーバ102から通信媒体を経由して転送される。状態1402におけるシグネチャ生成および認証プロセス1400の実行は状態1406に進み、状態1406ではディジタルシグネチャすなわち識別ストリングが電子装置に関して指定される。ディジタルシグネチャは、転送データのソースを妥当性検査するために、および、当該の電子装置と共に使用するようにデータが設計されていることを確認するために使用される情報を含む。一実施形態では、ディジタルシグネチャは、アップデートパッケージ110のソースを認証するために使用される、製造業者によって指定された情報ストリングを含む。さらに、状態1408に示されているように、シグネチャすなわちハッシュ値が公知のMD5アルゴリズムを使用して生成されてもよい。MDアルゴリズムは、アップデートパッケージを電子装置に転送した後の後続の妥当性検査のために、例えばアップデートパッケージ110と共に含まれていることが好ましい装置アップデート情報からソースファイルのハッシュ値を生成する。
【0136】
一側面では、MD5アルゴリズムによって決定されるハッシュ値は、装置アップデート情報のディジタルフィンガープリント(digital fingerprint)を形成するために使用される。人間の指紋と同様に、ハッシュ値は固有であり、(互いに情報差を含む)2組の装置アップデート情報が同一のディジタルシグネチャを有することはないだろう。この固有性が、ハッシュ値がオリジナルの情報すなわち命令セットのフィンガープリントの役割を果たすことを可能にし、および、データの完全性と比較互換性検査とを維持するという目的のためにMD5技術を使用することを可能にする。例えば、通信媒体を経由してアップデートパッケージをダウンロードすなわち受信するときには、MD5技術は、データファイルの完全性を検査するために、算出されたMD5シグネチャすなわちハッシュ値をアップデートパッケージ内に含まれているMD5シグネチャと比較することによって、ダウンロードされたアップデートパッケージが適正な無変更のデータファイルであることを実質的に保証するために使用されることが可能である。こうして、アップデートパッケージ110の情報またはデータは、アップデートパッケージ110の形で転送された情報の完全性を確実なものにするためのMD5技術または同様のディジタル画像シグネチャ技術の使用を含むことが可能である。
【0137】
その次に、状態1410において、MD5ハッシュ値とディジタルシグネチャとが暗号化されて、アップデートパッケージ110内に含まれる。一側面では、暗号化プロセスが、より高度のデータ機密保護を実現するために使用される。暗号化されたハッシュ値とディジタルシグネチャとの読み出しまたはアクセスを行うために、電子装置は、符号化されたデータの暗号解読すなわち解読を可能にするキーすなわちパスワードにアクセスできなければならない。非対称暗号化方法(例えば、公開かぎ暗号化)と対称暗号化方法とが、アップデートパッケージ110を暗号化するために使用されてよい。一実施形態では、RSA暗号化または公開かぎ暗号化方法が、配布の前にハッシュ値とディジタルシグネチャとを暗号化するために使用される。
【0138】
状態1410における暗号化の後に、アップデートパッケージはクライアント装置に対する配布の準備が整っており、および、アップデートパッケージ110の受け取り時に、クライアント装置が状態1412における認証プロセスに進む。クライアント装置104がアップデートパッケージを受け取ると、そのパッケージの暗号化された部分が、ディジタルシグネチャとハッシュ値とを別々のコンポーネントに分解するために解読される。この時点で、プロセス1400は状態1414に進み、この状態1414ではアップデートエージェント1025はMD5ハッシュ値およびディジタルシグネチャ情報を認証する。一側面では、転送されたMD5ハッシュ値が、算出されたMD5ハッシュ値に対して比較される。これら2つの値が同一である場合には、アップデートパッケージとその内容とが正当であり、アップデートプロセスが継続してよい。そうではなく、認証に失敗すると、アップデートパッケージは不正であるとして廃棄されるだろう。同様に、ディジタルシグネチャが、電子装置内に前もって保存されている予想ディジタルシグネチャと合致する場合には、受け取られたアップデートパッケージ110が正当であると判定される。受け取られたアップデートパッケージ110が状態1418において認証されると、シグネチャ生成および認証プロセス1400は終了状態1420において終了せしめられ、アップデートパッケージ110はアップデートエージェント1025によって処理されることが可能である。
【0139】
上述の暗号化方式は、アップデートパッケージ110内に含まれておりかつ通信媒体を経由して転送されるディジタル情報のプライバシを維持する上で有用である。機密保護とプライバシ保護は、ワイヤレスネットワークとインターネットを含むあらゆるタイプの通信媒体を使用する個人にとって重大な関心事である。したがって、シグネチャ生成および認証プロセス1400は、アップデートプロシージャにおける機密保護を確実なものにする有用な方法であり、および、無変更のままでありかつ書き変えられていないパッケージの形で実際のアップデート情報を受け取ることの信頼性を増大させる。認証を受けた後に、クライアント装置は、アップデートパッケージ110をインストールすることに進んでよく、このアップデートパッケージはファームウェアまたはオペレーショナルソフトウェアのより旧いコードバージョンをそのファームウェアまたはオペレーショナルソフトウェアのより新しいコードバージョンに変換する。
【0140】
本発明の好ましい特徴の1つが、本発明が電子装置のハードウェアの変更を必要とせずに様々な異なるメモリおよび記憶装置アーキテクチャに適合化されることが可能であるということである。したがって、このアップデートシステムは、既存の電子装置の中に組み込まれることが可能であり、および、従来技術の解決策に比較してより効率的でかつより単純なアップデートパスを実現するように未来の装置の設計に適合化されることが可能である。さらに、アップデートパッケージを配布するための様々な方法が、このアップデート管理システムおよび方法を使用して実現されることが可能である。本発明が、アップデートされるべき電子装置に対してアップデートパッケージを配布するために様々な異なるタイプの通信媒体と共に使用できるということが想定されている。ワイヤレスネットワークとワイヤードネットワークの両方とインターネット接続ネットワークとを使用して、アップデートパッケージが電子装置に配布されることが可能であり、その電子装置が利便性が高い仕方で頻繁にアップデートされることを可能にする。これらの通信媒体を経由した柔軟性の高い配布が、さらに、ユーザの対話と面倒とを最小限に留めながら多数の電子装置にアップデートが配布されることを可能にする。
【0141】
一側面では、このアップデート管理システムおよび方法は、アップデートパッケージを適用する電子装置のファンクショナリティを大幅に変更するために使用されることが可能である。例えば、電子装置内に記憶されている常駐のオペレーティングコードまたはアプリケーションが、好ましくは変更されている第1の装置ファンクショナリティを、第2の装置ファンクショナリティを伝達するアップデートされたコードまたは新しいアプリケーションに伝達してもよい。この例では、第1の装置ファンクショナリティと第2の装置ファンクショナリティとが、ゲーム、アドレスブック、計算器、パーソナルリマインダ(personal reminder)、または、他のデータ/情報/アプリケーションのようなソフトウェアアプリケーションを表すことが可能である。オペレーティングコードのアップデート後には、装置ファンクショナリティが、第1の装置ファンクショナリティを第2の装置ファンクショナリティに変換するために大幅に変更されてもよい。例えば、第1の装置ファンクショナリティがゲームである場合には、アップデートパッケージは、そのゲームを表現しているディジタル情報シーケンスを計算器のような別の装置ファンクショナリティに変換するために使用されてもよい。さらに、第1の装置ファンクショナリティは、以前のバージョンから、第2の装置ファンクショナリティによって反映される類似のファンクショナリティを有するより新しいバージョンにアップデートされることが可能である。例えば、第1の装置ファンクショナリティが9関数計算器アプリケーションである場合には、このアプリケーションは、適切なアップデートパッケージを適用することによって26関数計算器アプリケーションにアップデートされることが可能である。
【0142】
このアップデート管理システムおよび方法が、好ましいことに、ソフトウェアアプリケーションまたは装置ドライバのコードを1つのバージョンから別のバージョンにアップデートするための柔軟な手段を提供するためにパーソナルコンピュータで使用されるソフトウェアアプリケーションおよび装置ドライバのようなソフトウェアアプリケーションまたは装置ドライバと共に使用されることが可能であるということが理解できるだろう。一側面では、アップデートプロセス中に使用されるディジタル情報シーケンスを表現する上述の「ワード」が、ソフトウェアアプリケーションまたは装置ドライバに関連付けられているファイルを表してもよい。アップデート中には、ソフトウェアアプリケーションまたは装置ドライバの1つまたは複数のファイルがアップデートされることが可能であり、それによって、パーソナルコンピュータ上に存在するコードを保守するための単純化された方法を提供する。
【0143】
さらに、上述の例に示されているように、ソフトウェアアプリケーションまたは装置ドライバは、1つのバージョンからその次のバージョンへと一貫性のあるファンクショナリティを維持するようにアップデートされることが可能であり、または、ファンクショナリティが必要または所望に応じて完全に変更されることが可能である。例えば、アップデートされるべきソフトウェアアプリケーションがワードプロセッサを含む場合には、このアプリケーションは、増加した特徴とオプションを提供すると共に、バグを取り除き、追加の能力を実現するために、以前のバージョンから新しいバージョンにアップデートされることが可能である。あるいは、このアプリケーションは、アップデートパッケージを適用することによって、例えばスプレッドシートプログラムまたはデータベースプログラムのような完全に異なるアプリケーションにアップデートされることが可能である。このような仕方でのアップデートが、同一のアプリケーションのバージョン間の変化だけに限定されるのでなく、その代わりに比較的小さいアップデートパッケージを使用して完全に異なるアプリケーションとファンクショナリティとを提供することが可能である、ソフトウェアアプリケーションのファンクショナリティを変更するための柔軟性の高い手段を提供するということが理解されるだろう。
【0144】
このアップデートシステムおよび方法の使用から生じる別の特徴が、ソフトウェアのインストレーションと保守と管理とが著しく容易化されるということである。従来のシステムの制約は、誤りの影響を受けやすくかつ時間を浪費する一連のステップの形でユーザがソフトウェアアプリケーションを手作業でインストールおよびアンインストールしなければならないことから生じる。しかし、このアップデート管理システムは、比較的簡単なアップデートパッケージ適用プロセスによってソフトウェアアプリケーションをインストールし、取り除き、アップデートし、および、別のものに変化させるために使用できる自動化されたインストレーションプロセスを提供することによって、この制約を克服する。こうして、システム管理の新しくかつより強力な方法が実現されることが可能であり、1つまたは複数のシステムの自動化された管理を、(例えばCDーROMディスクまたは取外し可能記憶媒体のような記憶媒体上に含まれているアップデートパッケージの適用によって)ローカルで、または、(ワイヤードまたはワイヤレスの通信媒体を介したアップデートパッケージの適用によって)リモートで行うことを可能にする。この仕方でのシステム管理は、従来の方法よりも向上した機密保護と誤り許容力と柔軟性とを実現し、および、誤りの影響を受けにくく、かつ、より迅速である。
【0145】
本発明の上述の実施形態が、上述の実施形態に適用される通りの本発明の基本的な新規の特徴を示し、説明し、指摘してきたが、例示されている装置、システム、および/または、方法の詳細部分の形における様々な省略と置換と変化が、本発明の範囲から逸脱することなしに、当業者によって行われることが可能であるということが理解されなければならない。したがって、本発明の範囲は上述の説明に限定されてはならず、添付されている特許請求項によって定義されなければならない。
【図面の簡単な説明】
【図1A】
図1Aは、アップデート管理および配布システムの一実施形態を示すブロック図である。
【図1B】
図1Bは、アップデートサーバアレイ(update server array)を含むアップデート管理および配布システムの別の実施形態を示すブロック図である。
【図1C】
図1Cは、アップデート記憶装置(update store)とアップデート装置サーバ(update device server)とを有するアップデートサーバアレイを含むアップデート管理および配布システムの別の実施形態を示すブロック図である。
【図1D】
図1Dは、アップデート記憶装置と複数のアップデート装置サーバとを有するアップデートサーバアレイを含むアップデート配布システムの別の実施形態を示すブロック図である。
【図2A】
図2Aは、アップデートインストレーションプロセスの一実施形態を示す流れ図である。
【図2B】
図2Bは、アップデートインストレーションプロセスの別の実施形態を示す流れ図である。
【図3】
図3は、アップデート生成プロセスの一実施形態を示す流れ図である。
【図4】
図4は、ハッシュアレイの一実施形態を示す。
【図5】
図5は、命令セット生成プロセスの一実施形態を示す流れ図である。
【図6A】
図6Aは、ランレングス符号化命令の一実施形態を示す。
【図6B】
図6Bは、既存シーケンス命令の一実施形態を示す。
【図6C】
図6Cは、ハッシュ命令の一実施形態を示す。
【図6D】
図6Dは、デフォルト命令の一実施形態を示す。
【図7】
図7は、再構成されたディジタル情報シーケンスの一実施形態を示す。
【図8A】
図8Aは、典型的なメモリすなわち記憶アーキテクチャの一実施形態を示す。
【図8B】
図8Bは、不揮発性メモリエリアすなわち記憶領域の一実施形態を示す。
【図9】
図9は、バンク単位アップデート方法(bank−by−bank update method)の一実施形態を示す流れ図である。
【図10】
図10は、バンク単位アップデートプロセスを使用するアップデートパッケージの適用の一実施形態を示す。
【図11】
図11は、誤り許容プロセス(fault tolerance process)の一実施形態を示す流れ図である。
【図12】
図12は、シグネチャ生成および認証プロセスの一実施形態を示す流れ図である。

Claims (122)

  1. 第1の複数のディジタル情報シーケンスを含むアップデートされたオペレーティングコードによって複数の分散した電子装置をアップデートし、および、前記複数の電子装置の各々は、前記電子装置内に記憶されている第2の複数のディジタル情報シーケンスを含む常駐オペレーティングコードを含むシステムであって、
    前記アップデートされたオペレーティングコードを含む前記第1の複数のディジタル情報シーケンスのイメージを、前記常駐オペレーティングコードを含む前記第2の複数のディジタル情報シーケンスのイメージに対して比較し、前記アップデートされたオペレーティングコードと前記常駐オペレーティングコードとの間の差異を識別し、その後で、前記常駐オペレーティングコードの前記第2の複数のディジタル情報シーケンスの少なくとも一部分を使用することによって、前記アップデートされたオペレーティングコードを生成する仕方を指示する命令セットを含むアップデートパッケージを生成するアップデートジェネレータと、
    前記アップデートパッケージが前記電子装置によって受け取られてその中に記憶されるように前記電子装置に前記アップデートパッケージを配布する配布システムと、
    前記複数の電子装置の各々にそれぞれ常駐している複数のクライアントモジュールであって、この複数のクライアントモジュールは前記配布システムにアクセスして前記アップデートパッケージを受け取り、および、前記アップデートパッケージの前記命令セットは、前記常駐オペレーティングコードからの前記第2の複数のディジタル情報シーケンスの少なくとも一部分を使用することによって前記アップデートされたオペレーティングコードを生成するように、この複数のクライアントモジュールによって実行される複数のクライアントモジュールと、
    を含むシステム。
  2. 前記アップデートされたオペレーティングコードの前記イメージと前記常駐オペレーティングコードの前記イメージは、各々のそれぞれのコードが、前記第1および第2の複数のディジタル情報シーケンスの構成および位置に関する情報が前記アップデートジェネレータによって認識されるように前記電子装置内に記憶されていて、各々のそれぞれのコードの実質的に正確な表現を含む、請求項1に記載のシステム。
  3. 前記アップデートジェネレータは、前記命令セットを生成するために前記第2の複数のディジタル情報シーケンスの構成および位置に関する情報を使用し、前記常駐オペレーティングコードの前記イメージに対する前記命令セットの適用が、前記常駐オペレーティングコードの前記イメージを前記アップデートされたオペレーティングコードの前記イメージに変換することを結果的に生じさせる、請求項2に記載のシステム。
  4. 前記アップデートされたオペレーティングコードと前記常駐オペレーティングコードとの間の前記識別された差異は、前記それぞれのコードイメージを互いに直接比較することと、前記アップデートされたオペレーティングコードと前記常駐オペレーティングコードとの間の別々のサイズの情報パターンを識別することとによって、コードインデペンデントな仕方で評価される、請求項1に記載のシステム。
  5. 前記別々のサイズの情報パターンは、少なくとも1バイトの長さの情報パターンを含む、請求項4に記載のシステム。
  6. 前記別々のサイズの情報パターンは、少なくとも1ビットの長さの情報パターンを含む、請求項4に記載のシステム。
  7. 前記命令セットは、前記常駐オペレーティングコードの前記ディジタル情報シーケンスを再使用することと、前記常駐オペレーティングコードの前記ディジタル情報シーケンスを前記アップデートされたオペレーティングコードの前記ディジタル情報シーケンスに変換することとによって、前記第1の複数のディジタル情報シーケンスの少なくとも一部分を生成するために、前記常駐オペレーティングコードの前記第2の複数のディジタル情報シーケンスにアクセスしてこれらのディジタル情報シーケンスを使用する複数の操作を含む、請求項1に記載のシステム。
  8. 前記命令セットの使用は、前記アップデートパッケージで使用される前記命令セットのサイズが、前記常駐オペレーティングコードを前記アップデートされたオペレーティングコードに変換するために使用される対応するビットパターンのサイズよりも小さいように、前記電子装置内に存在する前記常駐オペレーティングコードを好ましくは再使用する操作を指定することによって、前記常駐オペレーティングコードを前記アップデートされたオペレーティングコードに変換するために必要とされる前記アップデートパッケージのサイズを低減させる、請求項1に記載のシステム。
  9. 前記ディジタル情報シーケンスはビット単位の情報パターンを含む、請求項1に記載のシステム。
  10. 前記アップデートパッケージは、前記配布システムと前記電子装置との間の通信リングを通信媒体を経由して確立することによって配布される、請求項1に記載のシステム。
  11. 前記通信媒体はワイヤレスネットワークを含む、請求項10に記載のシステム。
  12. 前記通信媒体はワイヤードネットワークを含む、請求項10に記載のシステム。
  13. 前記通信媒体はインターネット接続通信媒体を含む、請求項10に記載のシステム。
  14. 前記複数の分散した電子装置は、移動電話、セルラー電話、パーソナルディジタルアシスタント、ページャ、人工衛星、ラップトップコンピュータ、ノートブックコンピュータ、および、テレマテック装置から本質的になるグループから選択されるワイヤレス装置を含む、請求項1に記載のシステム。
  15. 前記複数の分散した電子装置は、パーソナルコンピュータ、サーバコンピュータ、デスクトップコンピュータ、および、テレマテック装置から本質的になるグループから選択される電子装置を含む、請求項1に記載のシステム。
  16. 前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、前記電子装置のためのオペレーティングシステムを形成する命令および情報を含む請求項1に記載のシステム。
  17. 前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、第1の組の個人専用情報を第2の組の個人専用情報に変換するためにアップデートされる、前記電子装置内に記憶されている前記第1の組の個人専用情報を含む、請求項1に記載のシステム。
  18. 前記第1の組の個人専用情報と前記第2の組の個人専用情報は、名称、住所、電話番号、地図、道順、および、他のタイプの個人専用情報を含む、請求項17に記載のシステム。
  19. 前記常駐オペレーティングコードはソフトウェアプログラムの第1のバージョンを含み、および、前記アップデートされたオペレーティングコードは前記ソフトウェアプログラムの第2のバージョンを含む、請求項1に記載のシステム。
  20. 第1のコードバージョンを含む第1の複数のデータシーケンスを含む電子装置を、前記第1のコードバージョンを第2のコードバージョンに変換する複数の変換命令を含むアップデートパッケージを使用することによって、第2の複数のデータシーケンスを含む前記第2のコードバージョンにアップデートするシステムであって、
    前記第1の複数のデータシーケンスと前記第2の複数のデータシーケンスとの間のパターン差を識別するために前記第1のコードバージョンと前記第2のコードバージョンとの間のバージョン比較を行うアップデートジェネレータであって、前記識別されたパターン差は、前記識別されたパターン差の構築に使用されることが可能な前記第1の複数のデータシーケンスの一部分を識別する変換命令を使用することと、その後で前記変換命令を使用して前記アップデートパッケージを形成することとによって符号化されるアップデートジェネレータと、
    前記アップデートジェネレータから前記アップデートパッケージを受け取って前記アップデートパッケージを前記電子装置に配布する配布システムと、
    前記アップデートパッケージの前記変換命令を実行し、それによって前記電子装置内に常駐している前記第1のコードバージョンをアップデートされた前記第2のコードバージョンに変換する、前記電子装置上に常駐しているアップデートエージェントと、
    を含むシステム。
  21. 前記アップデートパッケージの前記変換命令は、前記第1のコードバージョンを前記第2のコードバージョンに変換するために前記識別されたパターン差を解消するように1つまたは複数の比較機能を適用する効率を評価することによって選択される、請求項20に記載のシステム。
  22. 前記比較機能の効率は、前記変換命令が適用される前記パターン差のサイズに比較した、結果的に生じた前記変換命令のサイズに基づいている、請求項21に記載のシステム。
  23. 最も高い効率を有する前記変換命令が、前記アップデートパッケージ中への組込みのために前記アップデートジェネレータによって選択される、請求項22に記載のシステム。
  24. 前記第1のコードバージョンと前記第2のコードバージョンは、前記電子装置のためのオペレーティングシステムを形成する命令および情報を含む、請求項20に記載のシステム。
  25. 前記第1のコードバージョンは、前記第2のコードバージョンに表現されている第2の組の情報に変換するためにアップデートされる、前記電子装置内に記憶されている第1の組の情報を含む、請求項20に記載のシステム。
  26. 前記第1の組の情報と前記第2の組の情報は、名称、住所、電話番号、地図、道順、および、他のタイプの個人専用情報を含む、請求項25に記載のシステム。
  27. 前記第1のコードバージョンはソフトウェアプログラムであり、および、前記第2の組のコードバージョンは前記ソフトウェアプログラムのアップデートされたバージョンを含む、請求項20に記載のシステム。
  28. 複数のデータブロックを含むアップデートされたオペレーティングコードによって複数の分散した電子装置をアップデートし、および、前記複数の分散した電子装置の各々は複数のデータブロックとして記憶されている常駐オペレーティングコードを含むシステムであって、
    前記常駐オペレーティングコードの前記複数のデータブロックを前記アップデートされたオペレーティングコードの複数のデータブロックと比較し、それによって、前記常駐オペレーティングコードの前記複数のデータブロックを少なくとも部分的に使用することによって、前記アップデートされたオペレーティングコードを生成する仕方を指示する命令セットを含むアップデートパッケージを生成するアップデートジェネレータと、
    前記アップデートパッケージを含みかつ前記複数の分散した電子装置の各々によってアクセス可能である配布システムと、
    前記複数の分散した電子セットの各々にそれぞれに常駐しており、および、前記アップデートパッケージを受け取ることが可能であるように前記配布システムにアクセスする複数のクライアントモジュールであって、前記命令セットは、このクライアントモジュールが前記常駐オペレーティングコードを含む複数のデータブロックを使用することによって、前記アップデートオペレーティングコードを含む複数のデータブロックの少なくとも一部分を生成するようにこのクライアントモジュールに命令を提供する、複数のクライアントモジュールと、
    を含むシステム。
  29. 前記アップデートジェネレータは、前記常駐オペレーティングコードの前記複数のデータブロックと前記アップデートされたオペレーティングコードの前記複数のデータブロックとを比較し、前記オペレーティングコードの相互間のシーケンス差を識別する、請求項28に記載のシステム。
  30. 前記アップデートジェネレータは、前記アップデートパッケージ中に前記シーケンス差を直接含むことに比較して前記アップデートパッケージのサイズを低減させるために、前記常駐オペレーティングコードを含む前記データブロックの一部分を使用することによって、前記オペレーティングコードの相互間のシーケンス差を効率的に変換するための前記命令セットを形成する、請求項29に記載のシステム。
  31. 前記シーケンス差はビット単位の差を含む、請求項30に記載のシステム。
  32. 前記シーケンス差はバイト単位の差を含む、請求項30に記載のシステム。
  33. 前記配布システムと前記複数の分散した電子装置は通信媒体を経由して情報を交換する、請求項28に記載のシステム。
  34. 前記配布システムと前記複数の分散した電子装置とによって交換される情報の少なくとも一部分は前記アップデートパッケージを含む、請求項33に記載のシステム。
  35. 前記通信媒体はワイヤレスネットワークを含む、請求項33に記載のシステム。
  36. 前記通信媒体はワイヤードネットワークを含む、請求項33に記載のシステム。
  37. 前記通信媒体はインターネット接続通信媒体を含む、請求項33に記載のシステム。
  38. 前記複数の分散した電子装置は、移動電話、セルラー電話、パーソナルディジタルアシスタント、ページャ、人工衛星、ラップトップコンピュータ、ノートブックコンピュータ、および、テレマテック装置から本質的になるグループから選択されるワイヤレス装置を含む、請求項28に記載のシステム。
  39. 前記複数の分散した電子装置は、パーソナルコンピュータ、サーバコンピュータ、デスクトップコンピュータ、および、テレマテック装置から本質的になるグループから選択される電子装置を含む、請求項28に記載のシステム。
  40. 前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、前記電子装置のためのオペレーティングシステムを形成する命令および情報を含む、請求項28に記載のシステム。
  41. 前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、第1の組の個人専用情報を第2の組の個人専用情報に変換するためにアップデートされる、前記電子装置内に記憶されている前記第1の組の個人専用情報を含む、請求項28に記載のシステム。
  42. 前記第1の組の個人専用情報と前記第2の組の個人専用情報は、名称、住所、電話番号、地図、道順、および、他のタイプの個人専用情報を含む、請求項41に記載のシステム。
  43. 前記常駐オペレーティングコードはソフトウェアプログラムの第1のバージョンを含み、および、前記アップデートされたオペレーティングコードは前記ソフトウェアプログラムの第2のバージョンを含む、請求項28に記載のシステム。
  44. 前記常駐オペレーティングコードは第1のファンクショナリティを前記電子装置に伝達し、前記アップデートされたオペレーティングコードは第2のファンクショナリティを前記電子装置に伝達する、請求項28に記載のシステム。
  45. 前記第1のファンクショナリティと前記第2のファンクショナリティは同一の機能種類またはアプリケーションタイプである、請求項44に記載のシステム。
  46. 前記第1のファンクショナリティと前記第2のファンクショナリティは互いに異なる機能種類またはアプリケーションタイプである、請求項44に記載のシステム。
  47. 前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは前記オペレーティングコードの互いに異なるバーションを含む、請求項44に記載のシステム。
  48. 前記常駐オペレーティングコードはファームウェアの第1のバージョンを含み、前記アップデートされたオペレーティングコードはファームウェアの第2のバージョンを含む、請求項28に記載のシステム。
  49. 複数のデータブロックを含むアップデートされたオペレーティングコードによって複数の分散した電子装置をアップデートし、および、前記複数の分散した電子装置は、複数のデータブロックとして記憶されている常駐オペレーティングコードを含むシステムであって、
    前記常駐オペレーティングコードの前記複数のデータブロックを、前記アップデートされたオペレーティングコードの前記複数のデータブロックと比較し、それによって、前記アップデートされたオペレーティングコードと前記常駐オペレーティングコードとの間で異なっているアップデートデータブロックを識別し、および、前記常駐オペレーティングコードの前記複数のデータブロックを少なくとも部分的に使用することによって、前記常駐オペレーティングコードを前記前記アップデートされたオペレーティングコードに変換する仕方と、前記アップデートデータブロックを生成する仕方とを指示する命令セットを含むアップデートパッケージを生成するアップデートジェネレータと、
    前記アップデートパッケージを含みかつ前記複数の分散した電子装置の各々によってアクセス可能である配布システムと、
    前記複数の分散した電子セットの各々にそれぞれに常駐しており、および、前記アップデートパッケージを受け取ることが可能であるように前記配布システムにアクセスする複数のクライアントモジュールであって、前記命令セットは、前記常駐オペレーティングコードを前記アップデートされたオペレーティングコードに変更するようにこのクライアントモジュールに命令を与え、および、このクライアントモジュールは、前記アップデートデータブロックを生成するために、前記常駐オペレーティングコードの前記データブロックに対して操作を行うように前記受け取られた命令セットを使用することによって、前記アップデートデータブロックの少なくとも一部分を生成する複数のクライアントモジュールと、
    を含むシステム。
  50. 前記第1のコードバージョンと前記第2のコードバージョンとの間の識別されたパターン差は、別々に識別可能なワードサイズを有する、請求項49に記載のシステム。
  51. 前記パターン差の前記ワードサイズは少なくとも1ビットを含む、請求項50に記載のシステム。
  52. 前記パターン差の前記ワードサイズは少なくとも1バイトを含む、請求項50に記載のシステム。
  53. 前記アップデートジェネレータは、前記第2のコードバージョンに変換される前記第1のコードバージョンの少なくとも一部分を使用することによって、前記第1のコードバージョンと前記第2のコードバージョンとの間の前記パターン差を変換する仕方を定義する変換命令を形成する、請求項50に記載のシステム。
  54. 前記配布システムと前記複数の分散した電子装置は通信媒体を経由して情報を交換する、請求項49に記載のシステム。
  55. 前記配布システムと前記複数の分散した電子装置とによって交換される情報の少なくとも一部分は前記アップデートパッケージを含む、請求項54に記載のシステム。
  56. 前記通信媒体はワイヤレスネットワークを含む、請求項54に記載のシステム。
  57. 前記通信媒体はワイヤードネットワークを含む、請求項54に記載のシステム。
  58. 前記通信媒体は、インターネット接続通信媒体、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、公衆インターネット、専用インターネット、専用コンピュータネットワーク、セキュアインターネット、専用ネットワーク、公衆ネットワーク、付加価値ネットワーク、対話型テレビネットワーク、ワイヤレスデータ伝送ネットワーク、双方向ケーブルネットワーク、対話型キオスクネットワークから本質的になるグループから選択される、請求項54に記載のシステム。
  59. 前記電子装置は、移動電話、セルラー電話、パーソナルディジタルアシスタント、ページャ、人工衛星、ラップトップコンピュータ、ノートブックコンピュータ、および、テレマテック装置から本質的になるグループから選択されるワイヤレス装置を含む、請求項49に記載のシステム。
  60. 前記電子装置は、パーソナルコンピュータ、デスクトップコンピュータ、サーバコンピュータ、および、テレマテック装置から本質的になるグループから選択される装置を含む、請求項49に記載のシステム。
  61. 前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、前記電子装置のためのオペレーティングシステムを形成する命令および情報を含む、請求項49に記載のシステム。
  62. 前記常駐オペレーティングコードは、前記アップデートされたオペレーティングコードによって表現される第2の組の情報に変換するためにアップデートされる、前記電子装置内に記憶されている第1の組の情報を含む、請求項49に記載のシステム。
  63. 前記第1の組の情報と前記第2の組の情報は、名称、住所、電話番号、地図、道順、および、他のタイプの個人専用情報を含む、請求項62に記載のシステム。
  64. 前記常駐オペレーティングコードはソフトウェアプログラムの第1のバージョンを含み、前記アップデートされたオペレーティングコードは前記ソフトウェアプログラムの第2のバージョンを含む、請求項49に記載のシステム。
  65. 前記常駐オペレーティングコードは第1のファンクショナリティを前記複数の電子装置に伝達し、前記アップデートされたオペレーティングコードは第2のファンクショナリティを前記複数の電子装置に伝達する、請求項49に記載のシステム。
  66. 前記第1のファンクショナリティと前記第2のファンクショナリティは同一である、請求項65に記載のシステム。
  67. 前記第1のファンクショナリティと前記第2のファンクショナリティは互いに実質的に種類が異なっている、請求項65に記載のシステム。
  68. 前記常駐オペレーティングコードはファームウェアの第1のバージョンを含み、前記アップデートされたオペレーティングコードはファームウェアの第2のバージョンを含む、請求項1に記載のシステム。
  69. 電子装置の第1の記憶セクション内に記憶されている常駐オペレーティングコードをアップデートされたオペレーティングコードにアップデートする方法であって、
    (i)前記常駐オペレーティングコードを前記アップデートされたオペレーティングコードに変換するための複数の変換操作を含むアップデートパッケージを作成することと、
    (ii)前記アップデートパッケージを前記電子装置に転送することと、
    (iii)前記常駐オペレーティングコードの一部分を第2の記憶セクションにコピーすることと、
    (iv)前記常駐オペレーティングコードを前記アップデートされたオペレーティングコードに変換するために、前記アップデートパッケージの前記変換操作を使用することによって、前記第2の記憶セクション内に記憶されている前記常駐オペレーティングコードの前記一部分をアップデートすることと、
    (v)前記第2の記憶セクション内に記憶されている前記アップデートされたオペレーティングコードの前記一部分によって、前記第1の記憶セクション内に記憶されている前記常駐オペレーティングコードの前記一部分を置き換えることと、
    (vi)前記常駐オペレーティングコードが前記アップデートされたオペレーティングコードに完全にアップデートされ終わるまで、動作(iii)から動作(v)までを繰り返すことと、
    を含む方法。
  70. 前記第2の記憶セクション内に記憶されている前記常駐オペレーティングコードの前記一部分をアップデートすることは、前記第2の記憶セクション内に記憶されている前記常駐オペレーティングコードの前記一部分を前記アップデートされたオペレーティングコードの前記一部分に変換するために、前記第1の記憶セクション内に記憶されている前記常駐オペレーティングコードの少なくとも幾らかを使用する変換操作を適用することを含む、請求項69に記載の方法。
  71. 前記常駐オペレーティングコードの前記一部分をアップデートすることは、前記第2の記憶セクション内に記憶されている前記アップデートされたオペレーティングコードを前記常駐オペレーティングコードの前記一部分の代わりにコピーすることによって、前記第1の記憶セクション内に記憶されている前記常駐オペレーティングコードの前記一部分を置き換えることをさらに含む、請求項70に記載の方法。
  72. 前記アップデートされたオペレーティングコードを作成することは、前記変換操作の適用によって前記アップデートされたオペレーティングコードを形成するために使用できる常駐オペレーティングコードのシーケンスを含む前記第1の記憶セクション内のロケーションを表現している1つまたは複数のアドレスを含むハッシュテーブルを生成することを含む、請求項69に記載の方法。
  73. 前記アップデートされたオペレーティングコードは、前記ハッシュテーブル内の指定された1つまたは複数の特定のアドレスに対応する前記常駐オペレーティングコードのシーケンスを検索することと、前記検索された常駐オペレーティングコードのシーケンスに対して変換操作を適用し、それによって前記常駐オペレーティングコードのシーケンスをアップデートされたオペレーティングコードのシーケンスに変換することとによって生成される、請求項72に記載の方法。
  74. 前記アップデートパッケージを作成することは、さらに、
    前記常駐オペレーティングコードを前記アップデートされたオペレーティングコードに変換するために1つまたは複数の異なる変換操作の効率を評価することと、
    前記アップデートオペレーティングコードを生成して前記アップデートパッケージのサイズを低減させるために前記常駐操作コードの使用を増加させる変換操作を選択することと、
    を含む、請求項69に記載の方法。
  75. 前記アップデートパッケージを前記電子装置に転送することは、ワイヤレス通信媒体を経由して前記アップデートパッケージを送信することを含む、請求項69に記載の方法。
  76. 前記アップデートパッケージを前記電子装置に転送することは、インターネット接続通信媒体、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、公衆インターネット、専用インターネット、専用コンピュータネットワーク、セキュアインターネット、専用ネットワーク、公衆ネットワーク、付加価値ネットワーク、対話型テレビネットワーク、ワイヤレスデータ伝送ネットワーク、双方向ケーブルネットワーク、および、対話型キオスクネットワークから本質的になるグループから選択される通信媒体を経由して前記アップデートパッケージを送信することを含む、請求項69に記載の方法。
  77. 第1の記憶セクション内に記憶されている前記常駐オペレーティングコードをアップデートすることは、不揮発性記憶媒体内に記憶されているオペレーティングコードをアップデートすることを含む、請求項69に記載の方法。
  78. 前記内に記憶されているオペレーティングコードをアップデートすることは、フラッシュメモリ記憶媒体内に記憶されているオペレーティングコードをアップデートすることを含む、請求項77に記載の方法。
  79. 前記不揮発性記憶媒体内に記憶されているオペレーティングコードをアップデートすることは、ハードドライブ、オプティカルドライブ、テープドライブ、および、EPROM装置から本質的になるグループから選択される記憶媒体内に記憶されているオペレーティングコードをアップデートすることを含む、請求項77に記載の方法。
  80. 前記常駐オペレーティングコードの前記一部分を第2の記憶セクション内にコピーすることは、前記常駐オペレーティングコードの前記一部分を揮発性記憶媒体内にコピーすることを含む、請求項69に記載の方法。
  81. 前記常駐オペレーティングコードの前記一部分を揮発性記憶媒体内にコピーすることは、前記常駐オペレーティングコードの前記一部分をランダムアクセスメモリ記憶媒体内にコピーすることを含む、請求項80に記載の方法。
  82. 第1の記憶セクション内に記憶されている前記常駐オペレーティングコードをアップデートすることは、前記常駐オペレーティングコードを含む複数のバンクを含む前記第1の記憶セクションの区画の中に記憶されている前記常駐オペレーティングコードをアップデートすることを含む、請求項69に記載の方法。
  83. 前記第2の記憶セクション内にコピーされた前記常駐オペレーティングコードの前記一部分は、前記第1の記憶セクションからの1つまたは複数のバンク内に存在している前記常駐オペレーティングコードに相当する、請求項82に記載の方法。
  84. 前記変換操作は、前記第1の記憶セクションの1つまたは複数のバンク内に存在している前記常駐オペレーティングコードをアップデートされたオペレーティングコードに変換する、請求項82に記載の方法。
  85. 前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、前記電子装置のためのオペレーティングコードを形成する命令および情報を含む、請求項69に記載の方法。
  86. 前記常駐オペレーティングコードと前記アップデートされたオペレーティングコードは、第1の組の情報を第2の組の情報に変換するためにアップデートされる前記電子装置内に記憶されている前記第1の組の情報を含む、請求項69に記載の方法。
  87. 前記第1および第2の組の情報は、名称、住所、電話番号、地図、道順、および、他のタイプの情報を含む、請求項86に記載の方法。
  88. 前記常駐オペレーティングコードはソフトウェアプログラムの第1のバージョンを含み、前記アップデートされたオペレーティングコードは前記ソフトウェアプログラムの第2のバージョンを含む、請求項69に記載の方法。
  89. 前記常駐オペレーティングコードは、第1のファンクショナリティを前記複数の電子装置に伝達し、前記アップデートされたコードは第2のファンクショナリティを前記複数の電子装置に伝達する、請求項69に記載の方法。
  90. 前記第1のファンクショナリティと前記第2のファンクショナリティを、同一の機能種類またはアプリケーションタイプから選択する、請求項89に記載の方法。
  91. 前記第1のファンクショナリティと前記第2のファンクショナリティを、互いに異なっている機能種類またはアプリケーションタイプから選択する、請求項89に記載の方法。
  92. 前記常駐オペレーティングコードはファームウェアの第1のバージョンを含み、前記アップデートされたオペレーティングコードは前記ファームウェアの第2のバージョンを含む、請求項69に記載の方法。
  93. さらに、前記アップデートパッケージの不揮発性コピーが前記アップデートプロセス中の電源故障または電源障害の発生時に使用可能であるように、前記変換操作を行う前に、ダウンロードされたアップデートパッケージのコピーを前記第1の記憶セクション内に形成することを含む、請求項69に記載の方法。
  94. さらに、アップデートされた常駐オペレーティングコードのセクションの不揮発性コピーが前記アップデートプロセス中の電源故障または電源障害の発生時に使用可能であるように、前記オリジナルのオペレーティングコードのセクションを置換する前に、前記アップデートされた常駐オペレーティングコードのセクションのコピーを前記第1の記憶セクション内に形成することを含む、請求項69に記載の方法。
  95. アップデート可能な電子装置であって、
    オペレーティングコードが中に記憶されている不揮発性記憶セクションと、
    複数の命令を含むアップデートパッケージを通信媒体を経由して受け取るようになっている揮発性記憶セクションと、
    前記不揮発性記憶セクション内に記憶されている前記オペレーティングコードをアップデートするために前記アップデートパッケージの前記命令を実行するコントローラであって、逐次的に(i)前記オペレーティングコードのオリジナル部分を前記不揮発性記憶セクションから前記揮発性記憶セクションの中に取り出し、(ii)取り出された前記オペレーティングコードのオリジナル部分をアップデートされたオペレーティングコード部分に変換するために、前記揮発性記憶セクション内の前記取り出されたコード部分に対して前記アップデートパッケージの命令を適用し、および、その次に(iii)前記アップデートされたオペレーティングコード部分によって前記オペレーティングコードのオリジナル部分を置き換えるように構成されているコントローラと、
    を含むアップデート可能な電子装置。
  96. 前記不揮発性記憶セクションはフラッシュメモリ記憶媒体を含む、請求項95に記載のアップデート可能な電子装置。
  97. 前記非揮発性記憶セクションは、ハードドライブ、オプティカルドライブ、テープドライブ、および、EPROM装置から本質的になるグループから選択される記憶媒体を含む、請求項95に記載のアップデート可能な電子装置。
  98. 前記揮発性記憶セクションはランダムアクセス記憶媒体を含む、請求項95に記載のアップデート可能な電子装置。
  99. 前記通信媒体はワイヤレス通信媒体を含む、請求項95に記載のアップデート可能な電子装置。
  100. 前記通信媒体はワイヤード通信媒体を含む、請求項95に記載のアップデート可能な電子装置。
  101. 前記通信媒体は、インターネット接続通信媒体、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、公衆インターネット、専用インターネット、専用コンピュータネットワーク、セキュアインターネット、専用ネットワーク、公衆ネットワーク、付加価値ネットワーク、対話型テレビネットワーク、ワイヤレスデータ伝送ネットワーク、双方向ケーブルネットワーク、対話型キオスクネットワークから本質的になるグループから選択される、請求項95に記載のアップデート可能な電子装置。
  102. 前記不揮発性記憶セクションは、前記常駐オペレーティングコードを含む複数のバンクの形に細分化されている、請求項95に記載のアップデート可能な電子装置。
  103. 前記揮発性記憶セクションの中に取り出される前記常駐オペレーティングコードの前記一部分は、前記不揮発性記憶セクションからの前記1つまたは複数のバンク内に存在している前記常駐オペレーティングコードに相当する、請求項102に記載のアップデート可能な電子装置。
  104. 前記命令は、前記不揮発性記憶セクションの前記1つまたは複数のバンク内に存在している前記常駐オペレーティングコードをアップデートされたオペレーティングコードに変換する、請求項102に記載のアップデート可能な電子装置。
  105. 前記コントローラは、前記アップデート可能な電子装置が前記常駐オペレーティングコードまたは前記アップデートされたオペレーティングコードの破損から保護されるような誤り許容的な仕方で前記アップデートパッケージの前記命令を実行する、請求項95に記載のアップデート可能な電子装置。
  106. 前記アップデートパッケージの1つまたは複数のバックアップコピーが、前記アップデートパッケージが電源切断または装置故障の結果として失われることがないように、前記不揮発性記憶セクション内に維持される、請求項95に記載のアップデート可能な電子装置。
  107. 電源切断または装置故障の後に、前記コントローラは、前記アップデートパッケージの前記1つまたは複数のバックアップコピー内に含まれている情報を復元し、および、前記電源切断の発生以前の検出された適正に完了された操作に対応する時点においてアップデート作業を再開する、請求項106に記載のアップデート可能な電子装置。
  108. 前記コントローラは、前記常駐のアップデートされたオペレーティングコードを評価してアップデートインストレーションの進捗を判定するために、誤り訂正コードすなわちCRCコードを使用することによって、適正に競合している操作を検出する、請求項107に記載のアップデート可能な電子装置。
  109. 前記アップデートされたオペレーティングコードの1つまたは複数のバックアップコピーは、前記アップデートされたオペレーティングコードが電源切断または装置故障の結果として失われることがないように、前記不揮発性記憶セクション内に維持される、請求項95に記載のアップデート可能な電子装置。
  110. 電源切断または装置故障の後に、前記コントローラは、前記アップデートされたオペレーティングコードの前記1つまたは複数のバックアップコピー内に含まれている情報を復元し、前記電源切断の発生以前の検出された適正に完了された操作に対応する時点においてアップデートを再開する、請求項109に記載のアップデート可能な電子装置。
  111. 前記コントローラは、前記常駐のアップデートされたオペレーティングコードを評価してアップデートインストレーションの進捗を判定するために、誤り訂正コードすなわちCRCコードを使用することによって、適正に競合している操作を検出する、請求項110に記載のアップデート可能な電子装置。
  112. 前記常駐オペレーティングコードの1つまたは複数のバックアップコピーは、前記常駐オペレーティングコードが電源切断または装置故障の結果として失われることがないように、前記不揮発性記憶セクション内に維持される、請求項95に記載のアップデート可能な電子装置。
  113. 電源切断または装置故障の後に、前記コントローラは、前記常駐オペレーティングコードの前記1つまたは複数のバックアップコピー内に含まれている情報を復元し、前記電源切断の発生以前の検出された適正に完了された操作に対応する時点においてアップデートを再開する、請求項112に記載のアップデート可能な電子装置。
  114. 前記コントローラは、前記常駐のアップデートされたオペレーティングコードを評価してアップデートインストレーションの進捗を判定するために、誤り訂正コードすなわちCRCコードを使用することによって、適正に競合している操作を検出する、請求項113に記載のアップデート可能な電子装置。
  115. 前記オリジナルのオペレーティングコードと前記アップデートされたオペレーティングコードは、前記電子装置のためのオペレーティングコードを形成する命令および情報を含む、請求項95に記載のアップデート可能な電子装置。
  116. 前記オリジナルのオペレーティングコードは、前記アップデートされたオペレーティングコードによって表現される第2の組の情報に変換するためにアップデートされる、前記電子装置内に記憶されている第1の組の情報を含む、請求項95に記載のアップデート可能な電子装置。
  117. 前記第1および第2の組の情報は、名称、住所、電話番号、地図、道順、および、他のタイプの個人専用情報を含む、請求項107に記載のアップデート可能な電子装置。
  118. 前記オリジナルのオペレーティングコードはソフトウェアプログラムの第1のバージョンを含み、前記アップデートされたオペレーティングコードは前記ソフトウェアプログラムの第2のバージョンを含む、請求項95に記載のアップデート可能な電子装置。
  119. 前記オリジナルのオペレーティングコードは、第1のファンクショナリティを前記電子装置に伝達し、前記アップデートされたコードは第2のファンクショナリティを前記電子装置に伝達する、請求項95に記載のアップデート可能な電子装置。
  120. 前記第1のファンクショナリティと前記第2のファンクショナリティは同一である、請求項110に記載のアップデート可能な電子装置。
  121. 前記第1のファンクショナリティと前記第2のファンクショナリティは互いに実質的に種類が異なっている、請求項110に記載のアップデート可能な電子装置。
  122. 前記オリジナルのオペレーティングコードはファームウェムの第1のバージョンを含み、前記アップデートされたオペレーティングコードはファームウェアの第2のバージョンを含む、請求項95に記載のアップデート可能な電子装置。
JP2002543291A 2000-11-17 2001-11-19 情報をアップデートおよび配布するシステムおよび方法 Pending JP2004514214A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US24960600P 2000-11-17 2000-11-17
PCT/US2001/044034 WO2002041147A1 (en) 2000-11-17 2001-11-19 System and method for updating and distributing information

Publications (2)

Publication Number Publication Date
JP2004514214A true JP2004514214A (ja) 2004-05-13
JP2004514214A5 JP2004514214A5 (ja) 2005-02-24

Family

ID=22944217

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002543291A Pending JP2004514214A (ja) 2000-11-17 2001-11-19 情報をアップデートおよび配布するシステムおよび方法

Country Status (7)

Country Link
US (2) US7752616B2 (ja)
EP (1) EP1337917A4 (ja)
JP (1) JP2004514214A (ja)
KR (1) KR100506785B1 (ja)
AU (1) AU2002232426A1 (ja)
CA (1) CA2414281C (ja)
WO (1) WO2002041147A1 (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007087133A (ja) * 2005-09-22 2007-04-05 Seiko Epson Corp ファームウェアの更新技術
JP2007524171A (ja) * 2004-02-27 2007-08-23 テレフオンアクチーボラゲット エル エム エリクソン(パブル) フラッシュメモリのプログラミング
JP2008500606A (ja) * 2004-04-22 2008-01-10 オープンティブイ・インコーポレーテッド 分散コンピューティング・システム内のデータを管理するための方法
JP4891902B2 (ja) * 2005-06-01 2012-03-07 パナソニック株式会社 電子機器、更新サーバ装置、鍵更新装置
US8341422B2 (en) 2003-09-18 2012-12-25 Apple Inc. Method and apparatus for incremental code signing
US8364965B2 (en) 2006-03-15 2013-01-29 Apple Inc. Optimized integrity verification procedures
JP2013517565A (ja) * 2010-01-12 2013-05-16 グーグル インコーポレイテッド オペレーティングシステム自動更新手順
JP2013534377A (ja) * 2010-08-27 2013-09-02 ▲華▼▲為▼終端有限公司 無線でのファームウェア配信技術に基づいてファームウェアを処理する方法、装置及びシステム
JP2015534338A (ja) * 2012-09-17 2015-11-26 ゼットティーイー コーポレーション 組み立て型多重モードネットワーク管理パッチパッケージインストール方法及び装置
US9672350B2 (en) 2008-03-04 2017-06-06 Apple Inc. System and method of authorizing execution of software code based on at least one installed profile
US9948617B2 (en) 2004-11-12 2018-04-17 Apple Inc. Secure software updates
JP2019535060A (ja) * 2016-09-14 2019-12-05 ユー−ブロックス、アクチエンゲゼルシャフトu−blox AG ソフトウェアアップデートシステム、ファームウェアオーバーザエアーアップデートシステム、及び、クライアントデバイスをアップデートする方法
JP2022506633A (ja) * 2018-11-09 2022-01-17 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 無線アップグレード方法および関連装置
JP7494190B2 (ja) 2019-01-30 2024-06-03 バルブ コーポレーション ファイルを更新するための技術

Families Citing this family (113)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1327191B1 (en) 2000-09-22 2013-10-23 Lumension Security, Inc. Non-invasive automatic offsite patch fingerprinting and updating system and method
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US7065347B1 (en) 2001-06-27 2006-06-20 Peoplenet Communications Corporation System and method for over the air programming
JP4083505B2 (ja) 2001-08-27 2008-04-30 株式会社リコー 画像形成装置,プログラム更新方法および記録媒体
CA2369228A1 (en) * 2002-01-24 2003-07-24 Alcatel Canada Inc. System and method for managing configurable elements of devices in a network element and a network
US9134989B2 (en) 2002-01-31 2015-09-15 Qualcomm Incorporated System and method for updating dataset versions resident on a wireless device
US7340736B2 (en) * 2002-08-22 2008-03-04 Hewlett-Packard Development Company, L.P. Electronic device with an update agent that employs preprocessing techniques for update
US20040068724A1 (en) * 2002-08-30 2004-04-08 Gardner Richard Wayne Server processing for updating dataset versions resident on a wireless device
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
US6886141B1 (en) * 2002-10-07 2005-04-26 Qlogic Corporation Method and system for reducing congestion in computer networks
JP2004152279A (ja) * 2002-10-08 2004-05-27 Matsushita Electric Ind Co Ltd プログラム更新方法および端末装置
US7984435B2 (en) * 2002-11-13 2011-07-19 Hewlett-Packard Development Company, L.P. Update system employing reference software to reduce number of update packages
WO2004049314A2 (en) * 2002-11-21 2004-06-10 Bitfone Corporation Update network with support for lifecycle management of update packages and mobile handsets
US9092286B2 (en) * 2002-12-20 2015-07-28 Qualcomm Incorporated System to automatically process components on a device
EP1584016A4 (en) * 2003-01-13 2009-03-11 Hewlett Packard Development Co MOBILE COMBINER HAVING THE CAPACITY TO UPDATE ITS UPDATE AGENT
US7644406B2 (en) * 2003-01-21 2010-01-05 Hewlett-Packard Development Company, L.P. Update system capable of updating software across multiple FLASH chips
US6941453B2 (en) * 2003-02-11 2005-09-06 Bitfone Corporation System and method for determining if a device needs to be updated and locating and invoking an update agent to update the firmware or software in the device
US7644404B2 (en) 2003-06-04 2010-01-05 Hewlett-Packard Development Company, L.P. Network having customizable generators and electronic device having customizable updating software
US7343443B1 (en) 2003-07-08 2008-03-11 Hewlett-Packard Development Company, L.P. Updated package generation based on analysis of bank dependency
US20050010913A1 (en) * 2003-07-11 2005-01-13 Chih-Wei Chen Computer code upgrading method and system
US7424706B2 (en) * 2003-07-16 2008-09-09 Microsoft Corporation Automatic detection and patching of vulnerable files
US7684401B2 (en) 2003-07-21 2010-03-23 Qlogic, Corporation Method and system for using extended fabric features with fibre channel switch elements
US7792115B2 (en) 2003-07-21 2010-09-07 Qlogic, Corporation Method and system for routing and filtering network data packets in fibre channel systems
US7406092B2 (en) * 2003-07-21 2008-07-29 Qlogic, Corporation Programmable pseudo virtual lanes for fibre channel systems
US7646767B2 (en) 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7894348B2 (en) 2003-07-21 2011-02-22 Qlogic, Corporation Method and system for congestion control in a fibre channel switch
US7420982B2 (en) * 2003-07-21 2008-09-02 Qlogic, Corporation Method and system for keeping a fibre channel arbitrated loop open during frame gaps
US7861211B2 (en) 2003-07-29 2010-12-28 Hewlett-Packard Development Company, L.P. Mobile handset with update agent implemented in hardware
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7694293B2 (en) 2003-09-26 2010-04-06 Hewlett-Packard Development Company, L.P. Update package catalog for update package transfer between generator and content server in a network
FR2860310B1 (fr) * 2003-09-30 2005-12-09 Peugeot Citroen Automobiles Sa Procede de telechargement de donnees pour des calculateurs et dispositif de mise en oeuvre d'un tel procede.
US8626146B2 (en) 2003-10-29 2014-01-07 Qualcomm Incorporated Method, software and apparatus for performing actions on a wireless device using action lists and versioning
WO2005050477A1 (en) * 2003-11-18 2005-06-02 Nokia Corporation Method, subject terminal device, target terminal device, data content server, system and computer programs for maintaining and updating data contents
US20050124332A1 (en) 2003-12-08 2005-06-09 Clark David R. Mobile device programming system and method
US20050132351A1 (en) * 2003-12-12 2005-06-16 Randall Roderick K. Updating electronic device software employing rollback
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US9323515B1 (en) 2004-01-16 2016-04-26 Qualcomm Incorporated Network with broker for device management
US7599970B2 (en) 2004-03-15 2009-10-06 Red Bend Ltd. Method and apparatus for updating a stored version of content stored in a storage device
WO2005088448A1 (en) * 2004-03-15 2005-09-22 Red Bend Ltd. Method and apparatus for reliable in-place update
US7555531B2 (en) 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
EP1756711A1 (en) * 2004-05-31 2007-02-28 STMicroelectronics Pvl. Ltd. A method for remotely upgrading the firmware of a target device using wireless technology
US7657886B1 (en) * 2004-06-03 2010-02-02 Hewlett-Packard Development Company, L.P. Mobile device with a MMU for faster firmware updates in a wireless network
JP2006048529A (ja) * 2004-08-06 2006-02-16 Toshiba Corp ダウンロード方法、ダウンロードシステム、クライアント装置及びサーバ装置
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7613787B2 (en) 2004-09-24 2009-11-03 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
US8295299B2 (en) 2004-10-01 2012-10-23 Qlogic, Corporation High speed fibre channel switch element
US7411958B2 (en) * 2004-10-01 2008-08-12 Qlogic, Corporation Method and system for transferring data directly between storage devices in a storage area network
KR20060065078A (ko) * 2004-12-09 2006-06-14 삼성전자주식회사 시스템의 펌웨어 업-데이트 방법 및 장치
US8347285B2 (en) * 2004-12-16 2013-01-01 Intel Corporation Embedded agent for self-healing software
US7849462B2 (en) 2005-01-07 2010-12-07 Microsoft Corporation Image server
US8073926B2 (en) 2005-01-07 2011-12-06 Microsoft Corporation Virtual machine image server
EP1712992A1 (en) 2005-04-11 2006-10-18 Sony Ericsson Mobile Communications AB Updating of data instructions
EP1891496A4 (en) 2005-04-15 2011-11-30 Kt Freetel Co Ltd METHOD FOR DISTRIBUTING CONTENTS
WO2006110005A1 (en) 2005-04-15 2006-10-19 Ktfreetel Co., Ltd. Method for providing contents for mobile comunication terminal
KR100680296B1 (ko) * 2005-04-15 2007-02-07 주식회사 케이티프리텔 무선 네트워크를 통한 대용량 컨텐츠 이어받기 서비스 제공방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체
US8230414B1 (en) * 2005-06-16 2012-07-24 Infinera Corporation Software distribution and cache management across client machines on a network
CN1794721A (zh) * 2005-07-27 2006-06-28 华为技术有限公司 一种在指定时间下载媒体对象的方法及装置
US9332424B2 (en) 2005-08-05 2016-05-03 Qualcomm Incorporated Centrally managed solution for all device management activities
US20080148250A1 (en) * 2005-10-28 2008-06-19 Giovanni Motta Update package generation employing matching technique with controlled number of mismatches
DE602005025385D1 (de) * 2005-12-20 2011-01-27 Ericsson Telefon Ab L M Erstellung inkrementeller Programmaktualisierungen
CN105138354B (zh) * 2006-03-01 2019-12-13 安讯士有限公司 用于对多个装置进行升级的方法及系统
WO2007146710A2 (en) 2006-06-08 2007-12-21 Hewlett-Packard Development Company, L.P. Device management in a network
US7861224B2 (en) 2006-06-22 2010-12-28 Microsoft Corporation Delta compression using multiple pointers
US8707297B2 (en) * 2006-07-26 2014-04-22 Dell Products L.P. Apparatus and methods for updating firmware
EP2047420A4 (en) 2006-07-27 2009-11-18 Hewlett Packard Development Co USER EXPERIENCE AND DEPENDENCE MANAGEMENT IN A MOBILE DEVICE
DE102006040395A1 (de) * 2006-08-29 2007-03-15 Siemens Ag Verfahren zur Erzeugung eines größenoptimierten Delta-Files
US20130047145A1 (en) * 2006-08-29 2013-02-21 Quan-Jie Cui Match analysis for encoding optimized update packages
KR100782080B1 (ko) * 2006-09-07 2007-12-04 삼성전자주식회사 이동 통신 단말기 및 시스템의 펌웨어 갱신 방법
US8539474B2 (en) * 2006-09-28 2013-09-17 International Business Machines Corporation Method and system for management of interim software fixes
US9331928B2 (en) 2006-10-16 2016-05-03 Qualcomm Incorporated Diagnostic agent in device that retrieves key performance indicators
KR20080037450A (ko) * 2006-10-26 2008-04-30 웹싱크 주식회사 소프트웨어 실행모듈의 업데이트 시스템 및 방법
US8117609B2 (en) * 2006-12-20 2012-02-14 Omx Technology Ab System and method for optimizing changes of data sets
US8375458B2 (en) 2007-01-05 2013-02-12 Apple Inc. System and method for authenticating code executing on computer system
JP4940967B2 (ja) * 2007-01-30 2012-05-30 富士通株式会社 ストレージシステム、ストレージ装置、ファームウェアの活性交換方法、ファームウェアの活性交換プログラム
BRPI0812543A2 (pt) 2007-06-19 2015-09-29 Qualcomm Inc métodos e aparelho para sincronização de conjunto de dados em um ambiente sem fio
CN101370266B (zh) * 2007-08-19 2013-03-20 华为技术有限公司 切换方法、终端重新附着方法
JP4983521B2 (ja) * 2007-10-04 2012-07-25 富士通株式会社 ソフトウェア更新検証装置、方法及びプログラム
US7802129B2 (en) 2007-10-17 2010-09-21 Hewlett-Packard Development Company, L.P. Mobile handset employing efficient backup and recovery of blocks during update
KR101425224B1 (ko) * 2007-11-19 2014-07-31 삼성전자주식회사 펌웨어 업그레이드를 위해 펌웨어를 복호화하는 장치 및방법
AU2009200584A1 (en) * 2008-02-14 2009-09-03 Aristocrat Technologies Australia Pty Limited A software management system and method
KR101494343B1 (ko) 2008-02-22 2015-02-23 삼성전자주식회사 인터넷 공유기의 펌웨어 업그레이드 장치 및 그 제어방법
US8176009B2 (en) * 2008-08-04 2012-05-08 Red Bend Ltd. Performing a pre-update on a non volatile memory
US9104521B2 (en) * 2009-03-16 2015-08-11 Tyco Electronics Subsea Communications Llc System and method for remote device application upgrades
CN101841594B (zh) * 2009-03-17 2013-05-29 深圳富泰宏精密工业有限公司 便携式电子设备及其固件下载程序下载方法
US8429640B2 (en) 2009-06-05 2013-04-23 Dell Products L.P. System and method for modifying firmware
US9069966B2 (en) 2011-10-11 2015-06-30 International Business Machines Corporation Code updates in processing systems
DE102011084569B4 (de) * 2011-10-14 2019-02-21 Continental Automotive Gmbh Verfahren zum Betreiben eines informationstechnischen Systems und informationstechnisches System
US8789034B1 (en) * 2011-12-31 2014-07-22 Parallels IP Holdings GmbH Method for updating operating system without memory reset
US9015702B2 (en) * 2012-01-13 2015-04-21 Vasanth Bhat Determining compatibility of an application with different versions of an operating system
CN102722386B (zh) * 2012-05-28 2015-09-30 华为终端有限公司 生成无线固件升级包的方法和装置
DE102012214793A1 (de) * 2012-08-21 2014-02-27 BSH Bosch und Siemens Hausgeräte GmbH Kommunikationsmodul mit einem untermodul
US9817656B2 (en) 2012-08-24 2017-11-14 Ca, Inc. Hot rollback of updated agent
US9798557B2 (en) 2012-08-24 2017-10-24 Ca, Inc. Injection of updated classes for a java agent
US8938730B2 (en) * 2012-12-17 2015-01-20 Itron, Inc. Utilizing a multi-system set configuration to update a utility node system set
US8924950B2 (en) * 2012-12-17 2014-12-30 Itron, Inc. Utility node software/firmware update through a multi-type package
JP6040767B2 (ja) * 2012-12-28 2016-12-07 富士通株式会社 配信システム、配信方法、及びプログラム
US9495544B2 (en) 2013-06-27 2016-11-15 Visa International Service Association Secure data transmission and verification with untrusted computing devices
US9489190B1 (en) * 2013-09-18 2016-11-08 Amazon Technologies, Inc. Message processing engine
JP6237543B2 (ja) * 2014-09-01 2017-11-29 株式会社デンソー 車載装置
US9886264B2 (en) * 2014-12-09 2018-02-06 Xiaomi Inc. Method and device for upgrading firmware
EP3437011B1 (en) 2016-07-28 2020-12-16 Hewlett-Packard Development Company, L.P. Code package variants
KR20180073128A (ko) * 2016-12-22 2018-07-02 항저우 순왕 테크놀로지 컴퍼니 리미티드 데이터 블록 비교에 의한 데이터 업데이트 방법
US10761834B2 (en) * 2017-09-21 2020-09-01 Western Digital Technologies, Inc. SSD firmware download dual boot
US10416990B2 (en) * 2018-02-05 2019-09-17 Infosys Limited System and method for seamlessly patching shared libraries in server environment
KR102116814B1 (ko) 2018-06-22 2020-05-29 주식회사 티맥스 소프트 어플리케이션 무중단 배포 시 응용 프로그램 버전 정합성을 위한 방법 및 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램
KR102116813B1 (ko) 2018-06-22 2020-05-29 주식회사 티맥스 소프트 분산 환경 시스템에서의 어플리케이션 무중단 배포 시 불필요한 리소스 인식 및 해제 방안
US11086616B2 (en) 2018-09-25 2021-08-10 Vmware, Inc. Near zero downtime application upgrade
KR102132901B1 (ko) * 2018-10-23 2020-07-10 주식회사 시옷 펌웨어 패키징 및 언패키징 방법
JP2022142263A (ja) * 2021-03-16 2022-09-30 富士フイルムビジネスイノベーション株式会社 情報処理装置及び情報処理プログラム
KR102586649B1 (ko) * 2021-08-03 2023-10-11 시큐리티플랫폼 주식회사 분산형 파일 시스템을 이용한 펌웨어 관리 시스템 및 펌웨어 관리 방법

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4807182A (en) * 1986-03-12 1989-02-21 Advanced Software, Inc. Apparatus and method for comparing data groups
CA1341310C (en) * 1988-07-15 2001-10-23 Robert Filepp Interactive computer network and method of operation
US5479654A (en) * 1990-04-26 1995-12-26 Squibb Data Systems, Inc. Apparatus and method for reconstructing a file from a difference signature and an original file
CA2049690C (en) * 1990-08-23 1999-12-28 Masato Maebayashi Firmware modification system wherein older version can be retrieved
US5481713A (en) * 1993-05-06 1996-01-02 Apple Computer, Inc. Method and apparatus for patching code residing on a read only memory device
AU1519395A (en) * 1993-12-29 1995-07-17 Novalink Technologies, Inc. Data communication device
JPH08156329A (ja) 1994-12-12 1996-06-18 Fuji Xerox Co Ltd 画像形成装置
TW313643B (ja) * 1994-12-14 1997-08-21 At & T Corp
US5742829A (en) * 1995-03-10 1998-04-21 Microsoft Corporation Automatic software installation on heterogeneous networked client computer systems
US5699275A (en) * 1995-04-12 1997-12-16 Highwaymaster Communications, Inc. System and method for remote patching of operating code located in a mobile unit
US5838981A (en) * 1995-10-05 1998-11-17 Ricoh Company, Ltd. Data communication apparatus with a program renewal function
US5960445A (en) * 1996-04-24 1999-09-28 Sony Corporation Information processor, method of updating a program and information processing system
US5848064A (en) * 1996-08-07 1998-12-08 Telxon Corporation Wireless software upgrades with version control
US6112024A (en) * 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model
US6009274A (en) * 1996-12-13 1999-12-28 3Com Corporation Method and apparatus for automatically updating software components on end systems over a network
AU8047998A (en) * 1997-06-06 1998-12-21 Telefonaktiebolaget Lm Ericsson (Publ) Delta file software loading in cellular telecommunications systems
EP1005674A4 (en) * 1997-07-15 2002-03-13 Pocket Soft Inc SYSTEM FOR DETECTING DIFFERENCES BETWEEN TWO COMPUTER FILES AND UPDATING OF COMPUTER FILES
US6064814A (en) * 1997-11-13 2000-05-16 Allen-Bradley Company, Llc Automatically updated cross reference system having increased flexibility
US5974454A (en) * 1997-11-14 1999-10-26 Microsoft Corporation Method and system for installing and updating program module components
US6018747A (en) * 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US7080371B1 (en) * 1998-03-03 2006-07-18 Siebel Systems, Inc. Method, system, apparatus and program product for distribution and instantiation of software upgrades
US6105063A (en) * 1998-05-05 2000-08-15 International Business Machines Corp. Client-server system for maintaining application preferences in a hierarchical data structure according to user and user group or terminal and terminal group contexts
US6564369B1 (en) * 1998-08-20 2003-05-13 Pearson Technical Software, Inc. Conflict checking using configuration images
US6145012A (en) * 1998-10-14 2000-11-07 Veritas Software Corporation Apparatus and method for efficiently updating files in computer networks
JP2001051851A (ja) * 1999-08-17 2001-02-23 Nec Corp 携帯電子機器のプログラム変更システム及び方法
JP2001067232A (ja) * 1999-08-31 2001-03-16 Hitachi Ltd ソフトウエアの配信システムおよびソフトウエアの受信端末装置
US6832373B2 (en) * 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
US6976251B2 (en) * 2001-05-30 2005-12-13 International Business Machines Corporation Intelligent update agent
US7254386B2 (en) * 2001-08-10 2007-08-07 Kyocera Wireless Corp. System and method for improved security in handset reprovisioning and reprogramming
US7146609B2 (en) * 2002-05-17 2006-12-05 Sun Microsystems, Inc. Method, system and article of manufacture for a firmware image
JP2004164036A (ja) * 2002-11-08 2004-06-10 Hewlett Packard Co <Hp> 文書の共通性評価方法
US6941453B2 (en) * 2003-02-11 2005-09-06 Bitfone Corporation System and method for determining if a device needs to be updated and locating and invoking an update agent to update the firmware or software in the device
WO2005004160A2 (de) * 2003-06-24 2005-01-13 Robert Bosch Gmbh Verfahren zur durchführung eines software-updates eines elektronischen steuergerätes durch eine flash-programmierung über eine serielle schnittstelle und ein entsprechender zustandsautomat
US7426520B2 (en) * 2003-09-10 2008-09-16 Exeros, Inc. Method and apparatus for semantic discovery and mapping between data sources

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341422B2 (en) 2003-09-18 2012-12-25 Apple Inc. Method and apparatus for incremental code signing
US8880897B2 (en) 2003-09-18 2014-11-04 Apple Inc. Method and apparatus for incremental code signing
JP4903686B2 (ja) * 2004-02-27 2012-03-28 テレフオンアクチーボラゲット エル エム エリクソン(パブル) フラッシュメモリのプログラミング
JP2007524171A (ja) * 2004-02-27 2007-08-23 テレフオンアクチーボラゲット エル エム エリクソン(パブル) フラッシュメモリのプログラミング
JP2008500606A (ja) * 2004-04-22 2008-01-10 オープンティブイ・インコーポレーテッド 分散コンピューティング・システム内のデータを管理するための方法
JP4719215B2 (ja) * 2004-04-22 2011-07-06 オープンティブイ・インコーポレーテッド インタラクティブ・アプリケーションに使用されるモジュールの管理
US9948617B2 (en) 2004-11-12 2018-04-17 Apple Inc. Secure software updates
JP4891902B2 (ja) * 2005-06-01 2012-03-07 パナソニック株式会社 電子機器、更新サーバ装置、鍵更新装置
US11178121B2 (en) 2005-07-26 2021-11-16 Apple Inc. Secure software updates
US10432593B2 (en) 2005-07-26 2019-10-01 Apple Inc. Secure software updates
JP2007087133A (ja) * 2005-09-22 2007-04-05 Seiko Epson Corp ファームウェアの更新技術
US8364965B2 (en) 2006-03-15 2013-01-29 Apple Inc. Optimized integrity verification procedures
US8886947B2 (en) 2006-03-15 2014-11-11 Apple Inc. Optimized integrity verification procedures
US9672350B2 (en) 2008-03-04 2017-06-06 Apple Inc. System and method of authorizing execution of software code based on at least one installed profile
JP2013517565A (ja) * 2010-01-12 2013-05-16 グーグル インコーポレイテッド オペレーティングシステム自動更新手順
US8910139B2 (en) 2010-08-27 2014-12-09 Huawei Device Co., Ltd. Method for processing firmware based on firmware over the air technology, apparatus, and system
JP2013534377A (ja) * 2010-08-27 2013-09-02 ▲華▼▲為▼終端有限公司 無線でのファームウェア配信技術に基づいてファームウェアを処理する方法、装置及びシステム
JP2015534338A (ja) * 2012-09-17 2015-11-26 ゼットティーイー コーポレーション 組み立て型多重モードネットワーク管理パッチパッケージインストール方法及び装置
JP2019535060A (ja) * 2016-09-14 2019-12-05 ユー−ブロックス、アクチエンゲゼルシャフトu−blox AG ソフトウェアアップデートシステム、ファームウェアオーバーザエアーアップデートシステム、及び、クライアントデバイスをアップデートする方法
JP2022506633A (ja) * 2018-11-09 2022-01-17 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 無線アップグレード方法および関連装置
US11947673B2 (en) 2018-11-09 2024-04-02 Huawei Technologies Co., Ltd. Over-the-air upgrade method and related apparatus
JP7494190B2 (ja) 2019-01-30 2024-06-03 バルブ コーポレーション ファイルを更新するための技術
US12003580B2 (en) 2019-01-30 2024-06-04 Valve Corporation Techniques for updating files

Also Published As

Publication number Publication date
US20060107260A1 (en) 2006-05-18
US20050268296A1 (en) 2005-12-01
AU2002232426A1 (en) 2002-05-27
US7797695B2 (en) 2010-09-14
CA2414281C (en) 2009-06-02
EP1337917A1 (en) 2003-08-27
KR100506785B1 (ko) 2005-08-08
CA2414281A1 (en) 2002-05-23
EP1337917A4 (en) 2009-04-08
US7752616B2 (en) 2010-07-06
WO2002041147A1 (en) 2002-05-23
KR20030071750A (ko) 2003-09-06

Similar Documents

Publication Publication Date Title
KR100506785B1 (ko) 정보의 업데이트 및 배포 시스템 및 방법
US6832373B2 (en) System and method for updating and distributing information
US7805719B2 (en) System and method for updating and distributing information
CN100456240C (zh) 以故障保险方式向非易失存储器应用自定义软件映象更新
US8245217B2 (en) Management of software and operating system updates required for the process of creating a virtual machine facsimile of an existing physical or virtual machine
US7257257B2 (en) Method and apparatus for differential, bandwidth-efficient and storage-efficient backups
US10122792B2 (en) Read-only storage device having network interface, a system including the device and a method of distributing files over a network
US7082549B2 (en) Method for fault tolerant updating of an electronic device
US7814474B2 (en) Updatable mobile handset based on Linux with compression and decompression techniques
US6742025B2 (en) System and method for server managed modification of operating system data stored within a network device
US8233893B2 (en) Mobile handset update package generator that employs nodes technique
US7890689B2 (en) Virtual appliance management
US7546492B2 (en) Remotely repairing files by hierarchical and segmented cyclic redundancy checks
JP2005502971A (ja) ソフトウェアをアップデートする方法、装置、および、システム
US7143405B2 (en) Methods and arrangements for managing devices
WO2022241918A1 (zh) 一种物联网设备远程升级方法及装置
EP1584005B1 (en) Mobile handset with a fault tolerant update agent
US20020091720A1 (en) Methods and arrangements for providing improved software version control in managed devices
US7904422B2 (en) System for deploying data from deployment-source device to deployment-destination device
US20040243727A1 (en) Computer storage device having network interface

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051108

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060207

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060214

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060508

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060606