JP2006506747A - 電子ファイル更新中におけるデバイス・メモリ管理 - Google Patents

電子ファイル更新中におけるデバイス・メモリ管理 Download PDF

Info

Publication number
JP2006506747A
JP2006506747A JP2004553945A JP2004553945A JP2006506747A JP 2006506747 A JP2006506747 A JP 2006506747A JP 2004553945 A JP2004553945 A JP 2004553945A JP 2004553945 A JP2004553945 A JP 2004553945A JP 2006506747 A JP2006506747 A JP 2006506747A
Authority
JP
Japan
Prior art keywords
memory
component
electronic file
file
size
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.)
Granted
Application number
JP2004553945A
Other languages
English (en)
Other versions
JP2006506747A5 (ja
JP4409438B2 (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 JP2006506747A publication Critical patent/JP2006506747A/ja
Publication of JP2006506747A5 publication Critical patent/JP2006506747A5/ja
Application granted granted Critical
Publication of JP4409438B2 publication Critical patent/JP4409438B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

メモリ管理を実行する際、ホスト・デバイスのアップグレード・クライアント(130)は、第1および第2メモリ・エリアの順次探索を実行することによって、新ソフトウェア・コンポーネントを収容できる十分な大きさのメモリ・ブロックを特定し予約する。新ソフトウェア・コンポーネントは、元のソフトウェア・ファイル(110)のコンポーネントの更新バージョンである。新コンポーネントのサイズが、第1および第2メモリ・エリアで使用可能なブロックのサイズを超過する場合、アップグレード・クライアント(130)は、未使用メモリ・ブロックを排除するように第1メモリ・エリアを書き換え、第1および第2メモリ・エリアを再分配し、新コンポーネントを第2メモリ・エリアに書き込み、ベクトル・テーブルを更新する。ホスト・デバイスのソフトウェア・コンポーネントにアクセスするには、アップグレード・クライアントは、ホスト・デバイス(104)の主プログラムから、対応するソフトウェア・ファイルの識別情報を含む関数コールを受け取り、ベクトル・テーブルから対応するソフトウェア・ファイルの開始アドレスを読み取り、対応するソフトウェア・ファイルに対するコールを発生する。

Description

開示する実施形態は、電子ファイル更新中におけるメモリ管理に関する。
関連出願
本願は、以下の米国特許出願に関連がある。2002年5月13日に出願された出願番号第10/146,545号、2002年9月30日に出願された特許出願第10/261,153号、2002年11月12日に出願された特許出願第10/292,245号、2002年11月18日に出願された出願番号10/298,393号、2002年11月18日に出願された出願番号10/298,863号、2002年11月18日に出願された出願番号10/298,862号、および2002年11月18日に出願された出願番号第10/298,896号。これらの全ては、現在係属中である。
ホスト・デバイスのある機能を実現するために中央演算装置(CPU)上で実行するソフトウェアは、時間と共に変化していくことが多い。この変化は、ソフトウェア・バグを訂正する必要性から生じたり、発展する技術に適合するためであったり、あるいはホスト・デバイスに新たな特徴を追加するためであると考えられる。特に、移動ワイヤレス・デバイス上に常駐する埋め込みソフトウェア・コンポーネントは、多数のソフトウェア・バグを含み、訂正しなければならないことが多い。
ソフトウェアは、人が読むことができる情報相互交換用アメリカ標準コード(ASCII)の平文ファイルまたは二進コードの形態の1つ以上のファイルを含む。ソフトウェア・ファイルは、更に小さな単位に分割することができ、多くの場合これらをモジュールまたはコンポーネントと呼ぶ。UNIX(登録商標)プラットフォームまたはパーソナル・コンピュータ(PC)は、多数のソフトウェア・コンポーネントを含み、これらソフトウェア・コンポーネントの各々は、対応するオペレーティング・システム(OS)が対応するファイル・システムを通じて独立して管理および更新が行われる。UNIX(登録商標)プラットフォームまたはPC上に常駐するソフトウェア・ファイルまたはソフトウェア・コンポーネントを更新する際に用いられる情報は、インターネットを通じて転送したり、あるいはフロッピ・ディスク、コンパクト・ディスク・リード・オンリ・メモリ(CD−ROM)、またはコンパクト・フラッシュ・カードのような二次的な記憶媒体からロードすることができる。
対照的に、移動ワイヤレス・デバイスでは、リアル・タイム・オペレーティング・システムOS(RTOS)が使われるのが通例であり、この場合全てのソフトウェア・コンポーネントは単一の大きなファイルとしてリンクされている。更に、これらの移動ワイヤレス・デバイスには、ファイル・システムの対応は設けられていないのが通例である。加えて、単一の大きなファイルは、無線、赤外線、またはシリアル・リンクのような低速通信リンクを用いて、デバイス内に予めロードする、即ち、埋め込む必要がある。
低速通信リンクを通じて移動ワイヤレス・デバイスの大きなファイルを更新する場合の障害には、更新したファイルをデバイスに配信するのに伴う時間が含まれる。差分ファイルを、更新/改訂の目標となるファイルが常駐するデバイスに転送する場合、この時間は、差分ファイルを転送するための通信時間、ならびに受信側装置が差分ファイルを処理し、目標のファイルを更新/改訂するために用いられる時間の双方を含む。これを、ここでは、ホスト・デバイス処理時間と呼ぶ。関連出願に記載されているように、更新したソフトウェア・ファイルまたはソフトウェア・コンポーネントを転送するためにデルタ・ファイルを用いると、通信時間が大幅に短縮するが、ホスト・デバイスの処理時間の短縮は、少なくとも部分的に、ホスト・デバイスのアーキテクチャによって決まる。
ホスト・デバイスは、プロセッサを用いた多数のデバイスのいずれでも可能であり、セルラ電話機およびその他の移動通信デバイス、パーソナル・ディジタル・アシスタント(PDA)、ならびにパーソナル・コンピュータを含む。一例としてセルラ電話機を用いると、典型的なセルラ電話機のアーキテクチャは、ここではフラッシュROMまたはフラッシュ・メモリと呼ばれる、フラッシュ・リード・オンリ・メモリ(ROM)と、RTOSとを含む。フラッシュ・メモリおよびRTOSの双方は、ホスト・デバイスの処理時間を短縮するという目標に対して障害を招く潜在性がある。
ホスト・デバイスの処理時間を短縮する際にフラッシュ・メモリに関して発生する問題は、フラッシュ・メモリに対して書き込みを行うやり方に関係する。フラッシュ・メモリは、ブロック、セクタ、セグメントと呼ばれることが多い単位で割り当てられ、その各々は多数のバイトを含む。典型的なフラッシュ・メモリへの書き込み(または書き換え)は、ユニット全体の消去および書き込み(または書き換え)を必要とし、単一ビットまたはバイトの書き込み(または書き換え)はできないことを意味する。したがって、フラッシュ・メモリ内に格納されている1バイトの更新または改訂には、当該バイトが格納されている単位全体の消去および書き換えが必要となる。このため、フラッシュ・メモリに格納されているファイルを更新または改訂するために必要となる時間は、単一のバイトを書き込む(または書き換えを行う)ことができる他の種類のストレージ即ちメモリに格納されているファイルを更新または改訂するために必要な時間よりも長いのが通例である。
ホスト・デバイスの処理時間を短縮する際にRTOSに関して発生する問題は、ホスト・デバイス・ソフトウェアを編成し管理するやり方に関係する。典型的なセルラ電話機のRTOSは、実行時における関数コールに対するファイル管理および動的アドレス解明(dynamic address resolution)をサポートしていない。したがって、セルラ電話機に埋め込まれている全てのソフトウェア・コンポーネントまたはプログラムは、単一の大きなホスト・プログラムにリンクされており、ホスト・プログラム内にある機能は、ホスト・プログラムのいずれの部分からでも、予めコンパイルされている当該機能の開始アドレスを介して直接コールされる。このため、機能管理のためにファイル管理および動的アドレス解明をサポートする典型的なコンピュータOSとは対照的に、典型的なセルラ電話機のRTOSは、多数のソフトウェア・コンポーネントを別個のファイルとして管理することや、実行時コール元アドレス解明によって、ソフトウェア・コンポーネントの1つから他のソフトウェア・コンポーネントへの関数コールをサポートすることができない。その結果、RTOSを含むシステムのホストは、単一の大きなプログラムを管理し、プログラムの機能に直接アクセスするために静的アドレッシングを用いている。
この典型的なデバイス・アーキテクチャは、ソフトウェア・コンポーネントを更新および改訂する際に、問題を生ずる可能性がある。何故なら、改訂または更新の結果ホスト・プログラム・サイズが変化した場合、ホスト・システムにおいて更新/改訂したソフトウェア・コンポーネントに続くソフトウェア・コンポーネントのアドレスも変化する結果となる。このソフトウェア・コンポーネントの開始アドレスの変化の結果、ホスト・プログラムにおいて対応するコール元アドレス、およびソフトウェア・コンポーネント内にある命令/データ・アドレスを更新する必要性が生ずる。これは、処理時間に関して費用が嵩む可能性がある。このように、埋め込みソフトウェアの更新/改訂に伴うホスト・デバイスの処理時間は、大部分が、フラッシュ・メモリへの非効率的なデータの書き換え、およびソース・コード・レベルでの埋め込みソフトウェアの小さな変化が、二進コード・レベルでの埋め込みソフトウェアに対する大きな変化となり得るという事実によるものである。
図面においては、同じ参照番号は、同一のまたは実質的に同様のエレメントあるいはアクトを識別するものとする。いずれの特定のエレメントまたはアクトの論述であっても容易に識別するために、参照番号の内最上位の1つまたは複数の桁は、当該エレメントが最初に紹介された図番を示す(例えば、エレメント30は、図1において最初に紹介され、これについて論ぜられた)。
以下で特に記載しない限り、図に示す種々のブロックおよび構造の構成および動作は、従来の設計通りとする。その結果、このようなブロックは、ここでは更に詳細に説明する必要はなくなる。何故なら、これらは、当業者には理解されるはずであるからである。そのような更なる詳細は、簡潔性のため、そして本発明の詳細な説明を曖昧にしないようにするために、省略する。図に必要なあらゆる変更は、ここに示す詳細な説明に基づけば、当業者には容易に行うことができよう。
これより、メモリ管理システムおよび方法について詳細に説明する。メモリ管理を実行する際、ホスト・デバイスのアップグレード・クライアントは、第1おおび第2メモリ・エリアの順次探索を実行することによって、新たなソフトウェア・コンポーネントを収容できる十分な大きさのメモリ・ブロックを特定し予約する。新たなソフトウェア・コンポーネントは、元のソフトウェア・ファイルの更新またはアップグレード・バージョンである。新たなコンポーネントのサイズが、元の電子ファイルの対応するコンポーネントのサイズと同等以下の場合、アップデータ・クライアントは、第1メモリ・エリアの元のメモリ・ブロックを割り当て、この中に、受け取ったコンポーネントを書き込む。元のメモリ・ブロックは、元の電子ファイルの対応するコンポーネントを含む。
新たなコンポーネントのサイズが、元の電子ファイルの対応するコンポーネントのサイズを超過した場合、アップグレード・クライアントは、第1メモリ・エリアの未使用部分を探索して、受け取ったコンポーネントを格納できる十分な大きさのメモリ・ブロックを求める。第1メモリ・エリア内で突き止められた場合、アップグレード・クライアントは、しかるべきサイズのメモリ・ブロックを予約し、それ以外の場合、アップグレード・クライアントは第2メモリ・エリアを探索する。第2メモリ・エリア内で突き止められた場合、アップグレード・クライアントは、しかるべきサイズのメモリ・ブロックを予約する。
しかしながら、新たなコンポーネントのサイズが、第1および第2メモリ・エリアの使用可能なブロックのサイズを超過した場合、アップグレード・クライアントは、第1メモリ・エリアを書き換え、未使用メモリ・ブロックを排除する。第1メモリ・エリアの書き換えに続いて、アップグレード・クライアントは、順次第2メモリ・エリアのソフトウェア・コンポーネントを、第1メモリ・エリアのコンポーネント・サイズおよび使用可能なブロックが許される、第1メモリ・エリアの未使用部分に書き込むことによって、第1および第2メモリ・エリアを再分配する。続いて、アップグレード・クライアントは、第1メモリ・エリアの残りの未使用部分を、第2メモリ・エリアの一部として指定し直す。再分配に続いて、アップグレード・クライアントは、新たなコンポーネントを第2メモリ・エリアに書き込み、ベクトル・テーブルを更新する。
ホスト・デバイスのソフトウェア・コンポーネントへのアクセスに関して、アップグレード・クライアントは、ホスト・デバイスの主プログラムから関数コールを受け取る。ここで、関数コールは、対応するソフトウェア・ファイルの識別情報を含む。アップグレード・クライアントは、識別情報を用いてベクトル・テーブルにアクセスし、ベクトル・テーブルから対応するソフトウェア・ファイルの開始アドレスを読み出す。識別情報と共にベクトル・テーブルからの開始アドレスを用いて、アップグレード・クライアントは、対応するソフトウェア・ファイルに対するコールを発生する。
図1は、一実施形態の下において、バイト・レベル・ファイル差別化および更新(FDU)アルゴリズムを用いて電子ファイルを更新するシステムのブロック図である。このアルゴリズムを、ここではFDUアルゴリズムと呼ぶ。FDUアルゴリズムは、差別化コンポーネントと更新コンポーネントを含む。差別化コンポーネントは、ここではファイル差別化アルゴリズムと呼び関連出願において詳細に記載されているが、電子ファイルの元のバージョンおよび新バージョンから、第1コンピュータ・システムにおいて差分ファイルを生成する。更新コンポーネントは、ここではファイル更新アルゴリズムと呼び関連出願において詳細に記載されているが、差分ファイルおよび元のファイルの常駐コピー(hosted copy)を用いて、第2コンピュータ・システム上に新ファイルのコピーを生成する。以下の説明では、本発明の実施形態を完全に理解するため、そしてその説明を可能にするために、多数の具体的な詳細を紹介する。しかしながら、本発明は、これら具体的な詳細の1つ以上が無くても、または他のコンポーネント、システム等を用いても実施できることを、当業者は認めよう。その他の場合には、周知の構造または動作については、本発明の態様を曖昧にするのを防ぐために、図示も詳細な説明も行わない。
図1を参照すると、第1コンピュータ・システム102および第2コンピュータ・システム104は、通信経路106を通じて通信する。これらのコンピュータ102および104は、一緒に動作する計算デバイスのあらゆる集合体を含む。これは、当技術分野では周知である。通信経路106は、コンピュータ・システム102および104間でファイルを伝達または転送するためのあらゆる媒体を含む。したがって、この経路106は、ワイヤレス接続、ワイヤード接続、ハイブリッド・ワイヤレス/ワイヤード接続を含む。また、通信経路106は、ローカル・エリア・ネットワーク(LAN)、市内区域ネットワーク(MAN:metropolitan area network)、ワイド・エリア・ネットワーク(WAN)、企業固有のネットワーク、オフィス間またはバックエンド・ネットワーク、およびインターネットを含むネットワークに対する結合部即ち接続部も含む。更に、通信経路106は、フロッピ・ディスク、ハード・ディスク・ドライブ、およびCD−ROMディスクのような、着脱可能な固定媒体、ならびに電話線、バス、および電子メール・メッセージを含む。
第1通信システム102は、元の、即ち、古いバージョン110および新バージョン112の電子ファイルを受信する。新ファイル112は、一般には、元のファイル110の更新または改訂バージョンであるが、そのように限定される訳ではない。電子ファイル110および112に含まれるソフトウェア・ファイルには、ダイナミック・リンク・ライブラリ・ファイル、共有オブジェクト・ファイル、埋め込みソフトウェア・コンポーネント(EBSC)、ファームウェア・ファイル、実行可能ファイル、16進データ・ファイルを含むデータ・ファイル、システム・コンフィギュレーション・ファイル、および個人使用データを含むファイルが含まれるが、これらに限定される訳ではない。いずれの形式のファイルでもバイト・ストリームと見なすことができるので、以後文脈によってはファイルのことを、バイト・ストリームと記載することもあり得る。
ファイル差別化アルゴリズム114は、新ファイル112を受信し、それを元のファイル110と比較し、比較したファイル間におけるバイト・レベルの差を計算する。これについては以下で説明する。また、ファイル差別化アルゴリズム114は、元のファイル110および新ファイル112の前処理も行い、ファイルの差を計算するのに先だって、ファイル・サイズを縮小することもできる。ファイル差別化アルゴリズム114は、比較の間に、差ファイル116を生成する。ここでは、これをデルタ・ファイルと呼ぶ。
デルタ・ファイル116の内容は、新ファイルおよび元のファイル間のバイト・レベルの相違を効率的に表す。デルタ・ファイル116は、実際の置換データおよび/または関連するファイルの新即ち現バージョンとそのファイルの以前のバージョンとの間の差を表す挿入動作と共に、メタデータを含む。これについては以下で説明する。ファイル差別化アルゴリズム114は、最少数のバイトおよび以下で説明する既定のフォーマットまたはプロトコルを用いて、デルタ・ファイル116の中に、元のファイル110と新ファイル112との間のあらゆる相違を提示することによって、空間的に最適化したデルタ・ファイルを供給する。
デルタ・ファイル116は、通信経路106を通じて、別のコンピュータ・システムに転送または送信される。転送の前に、当技術分野では公知の圧縮技法を用いて、デルタ・ファイル116を圧縮することもできるが、そのように限定される訳ではない。受信側のコンピュータ・システム上に常駐(host)するファイル更新アルゴリズム118は、デルタ・ファイル116を、常駐する元のファイル110と共に用いて、新ファイル112のコピーを生成即ち作成する。この新ファイル112のコピーは、次に、改訂または更新の対象である、クライアント・デバイス上に常駐する元のファイル110を更新する際に用いられる。この更新プロセスの完了時に、第2コンピュータ・システム上に現在格納されている新ファイルは、第1コンピュータ・システムにおいて受信した新ファイルと同一となる。
元のファイルと新ファイルとの間の相違は、通例では、新ファイル自体よりも小さいので、新たなバイト・ストリーム全体の代わりに、差分を送信し格納すれば、格納および送信において大幅な節約となる。これは、通例では遅くしかも費用がかかる可能性が高い接続部、例えば、ワイヤレスまたはセルラ接続部を通じて更新するプログラムを常駐させる移動電子デバイスにとっては、特に重要である。
図2は、一実施形態のソフトウェア・アップグレード・システム200のブロック図である。このシステムを、ここではアップグレード・システムと呼ぶ。アップグレード・システム200は、一実施形態のデルタ・ファイルおよびファイル更新アルゴリズムを用いて、クライアント・デバイスのためにソフトウェア保守およびアプリケーション管理をサポートする。クライアント・デバイスには、移動電子デバイス、移動通信デバイス、セルラ電話機、パーソナル・ディジタル・アシスタント、コンピュータ、およびプロセッサを用いたデバイスが含まれる。このサポートは、通信業者(carrier)およびデバイス製造業者に、ワイヤレス・インフラストラクチャを通じて効率的に電子ファイル・コンポーネントやアプリケーションを流通することを可能にすることによって、ファームウェアから埋め込みアプリケーションまでの範囲に及ぶあらゆるデバイス・ソフトウェアに対して提供されている。
アップグレード・システム200は、サービス・プロバイダのワイヤレス・インフラストラクチャの種々の機構を用いて、新たなおよび改訂したソフトウェアのファイルの供給をサポートすることによって、デバイスのリコールを防止する。これらのシステムは、新たなおよび改訂したソフトウェアをソフトウェア流通業者から受け取り、ファイル差別化アルゴリズムを用いて新たなソフトウェアからデルタ・ファイルを生成することによって機能する。デルタ・ファイルは、サービス・プロバイダのインフラストラクチャを通じて、クライアント・デバイスに転送される。受信側即ちクライアント・デバイスのアップグレード・クライアントは、ファイル更新アルゴリズムを含み、デルタ・ファイルを用いて、クライアント・デバイス上に常駐し目標とされているソフトウェアを更新する。
アップグレード・システム200は、デバイスのソフトウェアおよびハードウェア間の異なるライフ・サイクルを可能にする。したがって、このアップグレード・システムは、Java(登録商標)Connected Limited Device Configuration(CLDC:接続限定デバイス・コンフィギュレーション)ライブラリ、ムービング・ピクチャ・エキスパーツ・グループ−1(MPEG−1)レイヤIII(MP3)ドライバ、通信ソフトウェア、およびブラウザ・アプリケーションが、ホスト・デバイスのハードウェアよりも速く発展し、その結果、移動デバイスの製造業者が新世代のデバイスを配給するよりも頻繁に更新されるという事実に鑑み、最新のデバイス機能をサポートする。アップグレード・システム200については、以下で更に詳細に説明する。
図2を参照すると、アップグレード・システム200は、デバイス212とのワイヤレス接続部を介して、クライアント・デバイス104上の埋め込みソフトウェア・コンポーネントを維持することによって、ワイヤレス通信業者が連続的に最新のデータ・サービスを全てのユーザに提供できるようにしている。アップグレード・システム200は、ソフトウェア・コンポーネント分配部(SCD)202、サービス・プロバイダ・アップグレード・コンポーネント203〜205、およびクライアント・デバイス122上にホストされているアップグレード・クライアント130を含むが、これらに限定される訳ではない。サービス・プロバイダ・アップグレード・コンポーネントは、ソフトウェア・コンポーネント証明サーバ203およびアップグレード・マネージャ205との間に結合されているアップグレード・サーバ204を含む。
一実施形態のソフトウェア・コンポーネント分配部202は、ウェブに基づいたユーザ・インターフェースを設け、これによってソフトウェア供給業者は、改良したMP3ドライバ、アップグレードしたJava(登録商標)2プラットフォーム、Micro Edition (J2METM) Mobile Information Device Profile(MIDP:移動情報デバイス特性)、または特徴付加アドレス・ブック・アプリケーションのような新たな埋め込みデバイス・ソフトウェア・コンポーネントをパッケージ化し、公表する。ソフトウェア・コンポーネント分配部202の機能には、デバイス情報を登録すること、およびデバイス情報をソフトウェア・コンポーネント証明サーバに提出することが含まれる。また、ソフトウェア・コンポーネント分配部202は、新EBSCおよび元のEBSCを受信し、ファイル差別化アルゴリズムを用いてこれらからファイル差を生成し、埋め込みソフトウェアを登録およびパッケージ化し、埋め込みソフトウェア・パッケージをソフトウェア・コンポーネント証明サーバに提出する。新たなソフトウェアは、公表に続いて、ワイヤード、ワイヤレス、あるいは混成ワイヤード/ワイヤレス・ネットワーク結合部または接続部220を通じて、サービス・プロバイダ・アップグレード・コンポーネント203〜205に供給されるが、そのように限定される訳ではない。
一実施形態のソフトウェア・コンポーネント分配部202は、クライアント・デバイス製造業者の処理システム上に常駐している。代替実施形態では、ソフトウェア・コンポーネント分配部202は、アプリケーションまたはシステム・ソフトウェア供給業者の処理システム上に常駐している。別の代替実施形態では、ソフトウェア・コンポーネント分配部202は、通信サービス・プロバイダの処理システム上、例えば、アップグレード・コンポーネント203〜205上に常駐している。
サービス・プロバイダ・アップグレード・コンポーネント203〜205は、ソフトウェア・コンポーネント分配部202、クライアント・デバイス104、既存のゲートウェイ210や通信インフラストラクチャ212、請求書発行サーバ214、ロギング・サーバ(logging server)216、および認証サーバ218を含むサービス・プロバイダのインフラストラクチャ201〜128の既存のコンポーネント間で結合されている。ソフトウェア・コンポーネント証明サーバ203は、クライアント・デバイスの製造業者へのインターフェースを設け、したがって、デバイス製造業者からの埋め込みソフトウェア・パッケージに関する新たなデバイス情報を受信する。また、ソフトウェア・コンポーネント証明サーバ203は、ソフトウェア・コンポーネント分配部からソフトウェア・コンポーネント提出要求を受け、新たなソフトウェア・パッケージの承認/拒絶を、提出したアップグレード・サーバに通知し、提出され承認されたソフトウェア・パッケージに対してディスク管理を行い、承認されたソフトウェア・パッケージを再パッケージ化(repackage)しアップグレード・サーバに分配する。更に、ソフトウェア・コンポーネント証明サーバ203は、潜在的に可能性がある侵入やデータ改竄に対して、ソフトウェア・コンポーネント提出プロセスの間に通信業者級のセキュリティ制御を行う。
アップグレード・マネージャ205は、ソフトウェア・コンポーネント証明サーバ203およびアップグレード・サーバ204間でインターフェースとして機能し、ウェブに基づくユーザ・インターフェースを設け、これによってワイヤレス・キャリア・システム管理運営者は、埋め込みデバイスのソフトウェア・コンポーネントのアップグレードを検証し承認する。また、アップグレード・マネージャ205は、最適なデバイス管理のためにソフトウェアおよびデータのパッケージングを行い、遠隔変更通知(remote change notification)のスケジューリングを行い、更新ポリシ・モニタ・システムを制御する。更に、アップグレード・マネージャ205は、既存のインフラストラクチャのシステム、即ち、バック・エンド・システム(請求書発行、ユーザ・データベース認証、ウェブ・ポータル)との統合を行うことによって、認証、アクセス制御、ならびにそれらの既存の請求書発行サーバ214およびロギング・サーバ216への統合を判定するワークフローを備えている。
アップグレード・サーバ204は、認証、接続、移動クライアント・デバイス122との通信を含む機能を備えており、埋め込みソフトウェア・コンポーネントのアップグレードを行う。クライアント・デバイス104との通信は、クライアント・デバイス122とのワイヤレス結合部212、ワイヤード結合部、混成ワイヤード/ワイヤレス結合部、および対応するサービス・プロバイダに適したその他のネットワーク結合部を介して行うことができる。加えて、アップグレード・サーバ204は、サービス・プロバイダの既存の請求書発行、データ収集、およびロギング・サービスにも対応する。
アップグレード・サーバ204およびクライアント・デバイス104間の通信の一例として、アップグレード・ファイルがアップグレード・サーバ204からクライアント・デバイス122に転送できるようになったときに、サーバ204はユーザ通知を送って、クライアント・デバイスのユーザに、更新に利用できるソフトウェア・コンポーネントがあることを通知する。ユーザ通知は、ショート・メッセージ・サービス(SMS)プッシュ・プロトコル、ハイパーテキスト・トランスファ・プロトコル(HTTP)、またはワイヤレス・アプリケーション・プロトコル(WAP)によるテキスト・メッセージの形態を取ることができるが、そのように限定されるのではない。ハンドセット・ユーザからの確認を受信すると、アップグレード・サーバ204は、元のハンドセット・データ通信プロトコルを用いて、アップグレード・ファイルを要求元のハンドセットに送る。
ハンドセットからの確認の受信に応答して、アップグレード・サーバ204は、ユーザおよび/または要求元デバイスを認証および許可し、要求元デバイスの欠くことができない機能および制限を検証する。認証に続いて、アップグレード・サーバ204は、クライアント・デバイス・コンフィギュレーション・データのマネージャとして、要求元デバイス104の埋め込みソフトウェア・コンポーネントの現バージョンを特定し、該当するデルタ・ファイルを特定し要求元デバイス104に転送し、アップグレード・トランザクションのステータスを記録し、結果をアップグレード・マネージャ205に報告する。アップグレード・サーバ204の一実施形態は、自動故障復元機構を含む。加えて、アップグレード・サーバ204は、無線によってソフトウェア・アップグレード・サービスの活性化/不活性化を行い、遠隔ユーザにソフトウェアの変更を通知する。
図1を参照すると、アップグレード・クライアント130は、クライアント・デバイス104のデバイス・メモリ300に埋め込まれているが、そのように限定される訳ではない。アップグレード・クライアント130は、ホスト・デバイス104のコンフィギュレーション・データを格納し維持し、ファイル更新アルゴリズム118を用いて、埋め込みデバイス・ソフトウェア・コンポーネントの維持および更新を担う。アップグレード・クライアント130は、単純なユーザ・インターフェースをサポートし、移動デバイスのソフトウェアに組み込まれる。実行時に、アップグレード・クライアント130は、自動的にあらゆる埋め込みソフトウェア・コンポーネントの起こりそうにない変化(remote change)を検出し、ユーザに埋め込みソフトウェア・コンポーネントのアップグレードを通知し、通信業者および/またはユーザの制御に基づいて、個々のサービス・プロバイダに対してしかるべくソフトウェア・コンポーネントをアップグレードする。また、アップグレード・クライアントは、自動障害復元機構も含む。
クライアント・デバイスは、更新手順に関与する前に、多数のデバイス・パラメータのステータスを判断する。これを行うのは、更新手順にデバイスが適格性があるか予め調べるため、またはクライアント・デバイスの状態が、更新手順を一旦開始したなら完了できるようになっていることを検証するためである。クライアント・デバイスの事前適格性検査は、クライアント・デバイスがクレードルまたは充電モードにあるか否か、クライアント・デバイスがシリアル・ケーブルに接続されているか否か、バッテリ充電の状態が更新プロセスを実行するのに十分か、受信信号強度指示(RSSI)または信号強度がデータ転送のために十分か、そして目標のEBSCが現在使用中かについての判断を含む。
一実施形態のアップグレード・システム200は、デルタ・ファイルによって、種々の形式のソフトウェア・ファイルまたはコンポーネントの更新をサポートする。更新をサポートするファイル形式には、実行可能ファイル、バイト・ストリーム・ファイル、およびデータ・ファイルが含まれるが、このように限定されるのではない。実行可能ファイル、または画像ファイルは、クライアント・デバイス内において用いられて、タスク、例えば、オペレーティング・システム(OS)、ハードウェア・デバイス・ドライバ、およびK仮想機械(KVM)ファイルを実行するソフトウェア・ファイルが含まれる。バイト・ストリーム・ファイルには、他の実行可能ファイルが用いるファイル、例えば、アイコン・ファイル、ロゴ・ファイル、およびMP3ファイルが含まれる。データ・ファイルには、個人使用データを収容したファイル、ならびにハンドセット基準ファイル、例えば、較正コンフィギュレーション・ファイル、プロトコル独立マルチキャスト(PIM)ファイル、およびシステム・コンフィギュレーション・ファイルが含まれる。
図3は、一実施形態の下における、デバイス・メモリ300のブロック図である。一実施形態のデバイス・メモリ300はフラッシュROMであるが、デバイス・メモリ300の代替実施形態では、多くの形式のメモリおよび/またはメモリ形式の組み合わせを用いることもできる。デバイス・メモリ300は、埋め込みソフトウェア・エリア302、アップグレード・クライアント・デバイス・パラメータのエリア306、およびデバイス・メモリ管理エリア308を含む。アップグレード・クライアント130は、ファイル更新アルゴリズム118と共に、一実施形態の埋め込みソフトウェア・エリア302に格納されている。デバイス・メモリ管理エリア308は、デバイス・メモリ管理(DMM)ライブラリ310、ベクトル・テーブル312、およびガベージ・テーブル314を常駐させている。これらについては、以下で詳しく説明する。
データ・ファイル、または代わりに新EBSCの受信時に、アップグレード・クライアント130は、埋め込みソフトウェア、埋め込みソフトウェア・コンポーネント(EBSC)、およびEBSCグループを含むファイルの改訂および更新を制御する。アップグレード・クライアントは、更新するファイル形式、およびこれらの更新をサポートするためにクライアント・デバイスの製造業者によって割り当てられたリソースに応じて、EBSCを更新する多数の方法を用いる。これらの更新方法には、上記の関連する出願に記載された以下のものが含まれるが、それらに限定される訳ではない。即ち、オペレーティング・システム(OS)、通信プロトコル、およびその他のクリティカル・ソフトウェア・コンポーネントの、予約したRAMを用いての更新、予約ROMやRAMがない場合の通信プロトコルの更新、および非クリティカルEBSCの単一線更新(single-line update)である。
一実施形態の更新方法は、非クリティカル・コンポーネントの更新およびクリティカル・コンポーネントの更新を含む。これらの分類は、更新の目標としたクライアント・デバイスのソフトウェア・コンポーネントの使用に基づいており、以下で更に説明する。
非クリティカル・コンポーネントは、更新プロセス中の障害に続いて無線で容易に復元される、埋め込みソフトウェア・コンポーネント(EBSC)を含む。非クリティカル・コンポーネントの例には、ブラウザおよびKVMファイルが含まれるが、そのように限定される訳ではない。図4は、一実施形態の下における非クリティカル・コンポーネントの更新のフロー図400である。デルタ・ファイルを用いて更新するとき、クライアント・デバイスは、ブロック402において、ネットワーク接続部を介してアップグレード・サーバからデルタ・ファイルを受信する。デルタ・ファイルは、クライアント・デバイスに受信されると、404において、デバイス・メモリ、例えば、RAMおよび/またはROMストレージの指定エリアに書き込まれる。次に、クライアント・デバイスのアップグレード・クライアントは、ブロック406において、デルタ・ファイルを用いて、元のファイルまたはEBSCから新ファイルまたはEBSCのコピーを生成する。ブロック408において、新ファイルのコピーは、予約したRAMまたはROMに書き込まれる。ブロック410において、新ファイルのコピーを、予約メモリから、元のファイルまたはEBSCを収容するメモリ位置に順次書き込む。
クリティカル・コンポーネントは、更新手順で用いられるソフトウェア・コンポーネント、またはデバイスの動作に対して重要なEBSCを含む。更に、クリティカル・コンポーネントは、更新プロセス中の障害に続いて無線で容易に復元されないEBSCも含む。クリティカル・コンポーネントの例には、オペレーティング・システムのファイル、プロトコル・スタック、アップグレード・クライアント・ファイル、通信ライブラリ、およびディスプレイまたはLCDドライバ・ファイルが含まれるが、そのように限定される訳ではない。更新手順は、これら2つの分類間で多少異なる。
図5は、一実施形態の下におけるクリティカル・コンポーネントの更新のフロー図500である。デルタ・ファイルを用いて更新を行うとき、クライアント・デバイスは、ブロック502において、ネットワーク接続部を介してアップグレード・サーバからデルタ・ファイルを受信する。前述のように、デルタ・ファイルは、実行可能ファイル、バイト・ストリーム・ファイル、およびデータ・ファイルのファイルまたはEBSCアップグレードを含むことができる。一実施形態のワイヤレス・ネットワークは、セルラ・サービス・プロバイダのそれであるが、そのように限定される訳ではない。
デルタ・ファイルの受信時、一般に、更新の目標とされた元のファイルまたはEBSCを、ブロック504において、クライアント・デバイスのフラッシュROMから更新プロセス中の使用に指定されたメモリ・エリア、例えば、RAMおよび/またはROMストレージに適宜コピーする。クライアント・デバイスは、この指定したメモリ・エリアを、更新ソフトウェア・コンポーネントを格納する際に用いるために割り当てる。また、ブロック506において、デルタ・ファイルも、更新プロセス中の使用に指定されたメモリ・エリアに書き込まれる。
次に、ブロック508において、クライアント・デバイスのアップグレード・クライアントは、元のファイルの常駐ホストを、デルタ・ファイルと共に用いて、新ファイルのコピーを生成する。ブロック510において、新ファイルのコピーを、クライアント・デバイスの、予め指定したメモリ・エリア、例えば、クライアント・デバイスの予約メモリ内に書き込む。このプロセスを必要に応じて繰り返す。
生成に続いて、ブロック512において、新ファイルのコピーを、予約メモリから、元のファイルを収容している元のメモリ位置に書き込む。新ファイルのサイズが元のファイルのサイズ以下である場合、新ファイルを元のファイルのメモリ位置に書き込むことによって、元のファイルを置き換える。
前述のように、ファイルの改訂には、新EBSCおよび更新したEBSCをホスト・デバイスのメモリ位置に書き込むことを伴う。多くの場合、新EBSCは、正確に同じサイズではなく、それと置き換える元のEBSCと正確に同じ開始アドレスを有していない。一実施形態のアップグレード・クライアントは、デバイス・メモリ管理選択肢を与える。選択肢には、EBSCサイズや開始アドレスには関係なく、新EBSCの書き込みに対処するためのアップグレード可能なEBSCの静的アドレッシングおよび動的アドレッシングを含む。
アップグレード可能なEBSCの静的アドレッシングは、一般に、開始アドレスは不変のままにしつつ、予約メモリ・エリアを用いて、更新の間にEBSCまたはEBSCグループのサイズを変更することができる。したがって、EBSCまたはEBSCグループの開始アドレスの変更を必要とする場合静的アドレッシングを用いる場合、埋め込みソフトウェア(EEBS)ファイル全体を書き換えるが、この実施形態はそのように限定される訳ではない。
アップグレード可能EBSCの動的アドレッシングは、一層進んだメモリ管理を可能にしつつ、一般に各更新中EBSCおよびEBSCグループの開始アドレスおよびサイズ双方の更新をサポートする。一実施形態のアップグレード・クライアントは、1組のアプリケーション・プログラムまたはプログラミング・インターフェース(API)および少なくとも1つのデータ・テーブルの間での相互作用を用いて、動的アドレッシングをサポートする。つまり、動的アドレッシングは、メモリ利用およびデバイス・メモリ・マップの設計の効率を高めつつ、更新障害の確率を低くして、更新処理の高速化をサポートする。静的および動的アドレッシングについては、以下で更に詳しく説明する。
一実施形態の静的アドレッシングは、2つの選択肢があり、1つはアップグレード可能なEBSC毎に予約メモリの割り当てを含み、もう1つはEBSCの特定のグループに対する予約メモリの割り当てを含む。予約メモリの割り当ては、ソフトウェア更新に対処するためのEBSCまたはEBSCグループ毎のメモリ割り当てを変更する。したがって、ソフトウェアの今後の成長に対処するために、追加のROMを予約するが、追加のメモリはROMに限られる訳ではない。
図6は、一実施形態の下におけるアップグレード可能EBSC毎に予約メモリの割り当てを用いた静的アドレッシングのフロー図600である。動作において、アップグレード・クライアントは、ブロック602において、新EBSCを受信する。新EBSCは、ソフトウェア・コンポーネント分配部から受信することができ、あるいは元のEBSCおよびデルタ・ファイルからアップグレード・クライアントによって生成することもできる。ブロック604において、アップグレード・クライアントは、新EBSCのサイズを決定する。ブロック606において、アップグレード・クライアントは、新EBSCのサイズが、それと置き換えることになっている対応するEBSCのサイズを超過しているか否か判定を行う。新EBSCのサイズが元のEBSCのサイズを超過しない場合、アップグレード・クライアントは、ブロック608において、元のEBSCを格納しているメモリ・ブロックを予約し、続いてこれに新EBSCを書き込む。新EBSCサイズが元のEBSCのサイズを超過する場合、アップグレード・クライアントは、ブロック610において、メモリ・ブロックおよび元のEBSCを格納している関連の予約メモリ・エリアに新EBSCを最終的に書き込む。新EBSCの書き込みに続いて、動作は、ブロック612における追加の新EBSCの受信に戻る。
図7は、図6の実施形態の下において、静的アドレッシング・メモリ管理をサポートするように構成された、ホスト・デバイス・メモリ702のブロック図である。比較のために、静的アドレッシングをサポートするように構成されていないホスト・デバイス・メモリ704の部分が示されている。静的アドレッシングをサポートするメモリ702は、各々のアップグレード可能なEBSCに対し予約メモリ・エリアを含んでいる。この例では、アップグレード可能なEBSCを、デバイスの製造時点で特定する。次いで、各アップグレード可能なEBSCに対応する予約メモリ・エリアを設ける。予約メモリ・エリアは、対応するEBSCと同じ位置にあるように示されているが、これらはデバイス・メモリ内のどこに配置しても、または分散してもよい。予約メモリ量を最少に抑えるという観点からは、予約メモリ・エリアは非更新可能EBSCには設けられないが、実施形態はそのように限定される訳ではない。
この例を続けると、更新可能EBSCは、EBSC1、EBSC2、およびEBSC5として特定され、予約メモリ・エリア1、2、および5がこれらの更新可能EBSC毎に設けられている。各予約メモリ・エリア1、2、および5は、デバイスの製造業者によって決定されたサイズである。今後の更新可能EBSCに対するアップグレードおよび改訂では、更新/改訂によって、更新したEBSCのサイズが元のEBSCのサイズを超過した場合に、対応する更新メモリ・エリアを用いる。これは、前述の通りである。
図8は、一実施形態の下において、アップグレード可能なEBSCのグループへの予約メモリの割り当てを用いた、静的アドレッシングのフロー図800である。この場合も、新EBSCをソフトウェア・コンポーネント分配部から受信するか、あるいは元のEBSCおよびデルタ・ファイルからアップグレード・クライアントが生成してもよい。ブロック804において、アップグレード・クライアントは、新EBSCのサイズを判定する。ブロック806において、アップグレード・クライアントは、新EBSCのサイズが、それと置き換えることになる対応するEBSCのサイズを超過したか否か判定を行う。新EBSCのサイズが元のEBSCのそれを超過していない場合、アップグレード・クライアントは、ブロック808において、対応する元のEBSCを含むEBSCグループを格納するメモリ・ブロックを予約し、これに新EBSCを書き込む。新EBSCのサイズが元のEBSCのそれを超過する場合、アップグレード・クライアントは、ブロック810において、メモリ・ブロック、および元のEBSCを格納する関連の予約メモリ・エリアを予約し、最終的に新EBSCを書き込む。新EBSCの書き込みに続いて、動作は、ブロック812において、追加の新EBSCを受信するために戻る。
図9は、図8の実施形態の下において、静的アドレッシング・メモリ管理をサポートするように構成されたホスト・デバイス・メモリ902の一部のブロック図である。比較のために、静的アドレッシングをサポートするように構成されていないホスト・デバイス・メモリ904の部分が示されている。静的アドレッシングをサポートするホスト・メモリ902は、グレードアップ可能なEBSCの予め指定されたグループのために予約メモリ・エリアを含む。この代替案では、アップグレード可能なEBSCは、デバイスの製造時点で特定する。この例では、EBSC1、2、4、5、および8がアップグレード可能である。
デバイス製造業者は、多数のファクタのうちの少なくとも1つを使用してアップグレード可能なEBSCをグループ化する。例えば、類似のアップグレード頻度のEBSCが1つのグループを形成するようにできる。また、アップグレードまたは改訂を受ける類似の確率をもつEBSCが、1つのグループを形成するようにもできる。さらに、関係するあるいは相互に作用する機能をもつEBSCが1つのグループを形成するようにできる。以下のグループ分けは、本例のために行った。すなわち、EBSC1,4,5はEBSCグループ1を構成し、EBSC3,7はEBSCグループ2を構成し、EBSC6,9はEBSCグループ3を構成し、EBSC2,8はEBSCグループ4を構成する。
グループ化に続いて、デバイスの製造業者は、各アップグレード可能EBSCグループに対応する予約メモリ・エリアを設ける。予約メモリ・エリアは、対応するEBSCグループと同じ位置にあるものとして示されているが、これらはデバイス・メモリ内のどこに位置してもよい。非アップグレード可能EBSCの1つ以上のグループに置かれているが、予約メモリの量を極力抑える目的のために、予約エリアは設けられていない。しかし、実施形態はそのように限定される訳ではない。
この例では、アップグレード可能EBSCグループは、EBSCグループ1、およびEBSCグループ4として識別され、予約メモリ・エリアG1およびG4がこれらアップグレード可能EBSCグループの各々に、それぞれ、設けられている。各予約メモリ・エリアG1およびG4は、デバイス製造業者が決定したサイズとなっている。アップグレード可能EBSCグループの今後のアップグレードおよび改訂の際、アップグレード/改訂によってアップグレードされたEBSCグループのサイズが元のEBSCグループのサイズを超過した場合、対応する予約メモリを用いる。
前述のEBSCまたはEBSCグループの再書き込みの結果、再書き込みしたEBSCまたはEBSCグループを含むファイル内にあるサブルーチンの開始アドレスが変化する可能性がある。サブルーチンの開始アドレスが変化すると、常に、ホスト・デバイスの他のサブルーチンが再書き込みしたサブルーチンにアクセスする際に用いる、対応のコール・アドレスも変化する。したがって、一実施形態では、アップグレード・クライアントは、再書き込みしたあらゆるEBSCまたはEBSCグループに対応するコール・アドレスのアップグレードもサポートする。このコール・アドレスのアップグレードは、再書き込みしたEBSCまたはEBSCグループにおけるサブルーチンに対応するコール・アドレスを含む、ホスト・デバイス・メモリ内の任意のブロックの再書き込みを含む。これらのコール・アドレスの変化は通例数バイトを伴うに過ぎないので、コール・アドレスを含むブロックのみをアップグレードすることは、コール・アドレスを収容するEBSCを更新することよりも効率的であることがわかるが、実施形態はそのように限定される訳ではない。
図10は、一実施形態の下において、静的アドレッシングをサポートするクライアント・デバイスROMマップ1000のブロック図である。ROMは、以下のエリア、ブート・コード・エリア1002、埋め込みソフトウェア・エリア1004、EBSCワーキング・メモリ・エリア1006、アップグレード・クライアント・デバイス・パラメータ・エリア1008、および指定されていない目的のための少なくとも1つの予約エリア1010を含むが、そのように限定される訳ではない。
ブート・コード・エリア1002は、デバイス・ブーティング・シーケンス・コードを格納する。埋め込みソフトウェア・エリア1004は、クライアント・デバイスの埋め込みソフトウェアを格納する。埋め込みソフトウェアは、例えば、ブラウザのソフトウェア、K仮想機械(KVM)、通信ライブラリ、リアル・タイムOS、グラフィック・ドライバ、およびアップグレード・クライアントを含むが、実施形態はそのように限定される訳ではない。前述のように、ソフトウェアの更新に対処するために、各アップグレード可能EBSCまたはEBSCグループに対するメモリ割り当てを変更する。したがって、ソフトウェアの今後の成長に対処するために予約された追加のROMがある。この追加の予約ROMは、対応するEBSCまたはEBSCグループの初期バージョンのサイズの約5%から20%であるが、そのように限定される訳ではない。
EBSCワーキング・メモリ・エリア1006は、アップグレード・クライアントがこれらを生成した後で、新バージョンが、現在元のバージョンのEBSCまたはEBSCグループが占有している埋め込みソフトウェア・エリア1004のメモリ位置に書き込まれる前に、一時的に新バージョンのEBSCまたはEBSCグループを格納する。ワーク・エリア1006の推定サイズは、このメモリ・エリアを用いる全てのEBSCまたはEBSCグループの内少なくとも最大のもののサイズであり、クリティカルおよび非クリティカル・コンポーネントを含む。
アップグレード・クライアント・デバイス・パラメータ・エリア1008は、アップグレード・クライアントに特定のクライアント・デバイス・コンフィギュレーション・データおよびパラメータを格納する。このエリア1008の推定サイズは、クライアント・デバイス上に常駐するデバイス・コンフィギュレーションに関連するアップグレード可能EBSCの数に対応するが、そのように限定される訳ではない。
図11は、一実施形態の下において、静的アドレッシングを用いた埋め込みソフトウェアの開発および展開(deployment)プロセス1100のブロック図である。この図は、例えば、ソフトウェア・コンポーネント分配部1102によるEBSCの開発から、静的アドレッシングに基づくデバイス・メモリ管理を備えた一実施形態のアップグレード・クライアントを用いたデバイスROMの初期化までのプロセスを図示する。
ソフトウェア・コンポーネント分配部のコンポーネントは、新EBSCのソース・コードを受信し(1102)、新EBSCソース・コードをコンパイルする(1103)。コンパイル(1103)によって、得られたEBSCオブジェクト・コードを、リンク1106および1116に結合し、新EBSCの登録の一部として、新EBSCオブジェクト・コードから新たな16進ファイル(テキスト)または二進ファイル1118を生成する。新たな16進ファイルは、新EBSCに対応する。
静的アドレッシングをサポートするにあたり、ソフトウェア・コンポーネント分配部またはサービス・プロバイダは、元のマップ・ファイルを変更し、アップグレード可能EBSC毎に追加のメモリを挿入する。一実施形態において、リンカ1106は、変更マップ・ファイル1104を生成する。EBSCグループ化を用いる場合、元のマップ・ファイルを変更して、EBSCをグループ化し、アップグレード可能EBSCグループ毎に追加のメモリを挿入する。このマップ・ファイル1104の変更は、リンカ1106を用いてリンク・ファイルを編集し、空ファイルまたはグループを対応するオブジェクト・ファイルと共に挿入することを含む。
ベクトル生成ツール1105が、変更マップ・ファイル1104からベクトル・テーブル・ファイル1108を生成する。ベクトル・テーブル・ファイル1108は、クライアント・デバイス1112におけるアップグレード・クライアント・デバイス・パラメータ用予約ROMエリア1110にダウンロードされる。図1を参照すると、アップグレード・クライアント130は、ベクトル・テーブル1108を維持しており、これは、一般に、埋め込みソフトウェア(EEBS)全体を書き換えるのでなければ、不変のままでいる。また、リンカ1116も変更マップ・ファイル1104を用いて、新たな16進または二進ファイル1118を生成する。更に、リンカ1116は、16進ファイル/マップ・ファイル・パスの対の連携リストを指定または生成する。16進ファイル1118は、クライアント・デバイス1112の埋め込みソフトウェア・エリア1120にダウンロードされるが、代替実施形態では、クライアント・デバイス・メモリの他のエリアにダウンロードしてもよい。
前述の静的アドレッシングは、ホスト・デバイスの処理時間を短縮し、クリティカル・ソフトウェア・コンポーネントの更新を可能にするが、全てのアップグレードおよび改訂に対処する訳ではない。加えて、静的アドレッシングを用いると、いずれのEBSCの再書き込みによって対応する予約メモリ・エリアのサイズを超過した場合には、デバイス・メモリ全体の書き換えが必要となる。したがって、動的アドレッシングを静的アドレッシングの代わりに用いる実施形態もある。
動的アドレッシングでは、新ファイル・バージョンのサイズが元のファイル・バージョンのそれを超過しても、電子ファイルの更新および改訂が可能である。動的アドレッシングをサポートする際、一実施形態のアップグレード・クライアントは、ファイル更新プロセス、および主プログラムが更新EBSCを含む機能をコールする関数コール・プロセスの双方において、デバイス・メモリを効果的に管理する。
動的アドレッシングを用いてメモリ管理を実行する際、アップグレード・クライアントは、新たなソフトウェア・コンポーネントを収容できる程に十分大きなメモリ・ブロックを識別し予約する。その際、少なくとも1つの第1および第2メモリ・エリアを含むホスト・デバイスのメモリ・エリアの順次探索を行う。新たなコンポーネントのサイズが、探索したメモリ・エリアの使用可能なブロックのサイズを超過する場合、以下に述べるように、アップグレード・クライアントは第1メモリ・エリアを書き換えて、使用されていないメモリ・ブロックをなくし、第1および第2メモリ・エリアを再分配し、新たなコンポーネントを第2メモリ・エリアに書き込み、ベクトル・テーブルを更新する。
図12は、一実施形態の下において動的アドレッシングを用いてEBSCまたはEBSCグループをアップグレードするためのフロー図1200である。アップグレード・クライアントは、ブロック1202において、新EBSCバージョンを受信する。新EBSCバージョンは、元のEBSCバージョンおよび対応するデルタ・ファイルから生成するか、あるいはソフトウェア・コンポーネント分配部から受信する。ステップ1204において、クライアント・デバイス内で、新EBSCバージョンの格納に対処するメモリ・エリアを特定し予約する。ブロック1206において、アップグレード・クライアントのコンポーネントは、新EBSCバージョンを予約したメモリ・エリアに書き込む。ブロック1208において、ベクトル・テーブルに更新を行い、新EBSCバージョンによって生じた、ベクトル・テーブルの情報に対するあらゆる必要な変更を行う。また、ブロック1210において、ガベージ・テーブルにも変更を行い、新EBSCバージョンの書き込みによって生じた、未使用メモリ・エリアにおけるあらゆる変化を反映させる。
動的アドレッシングを用いてホスト・デバイスにおいてソフトウェア・コンポーネントにアクセスするために、アップグレード・クライアントは、対応するソフトウェア・ファイルの識別情報を含む関数コールを、ホスト・デバイスの主プログラムから受信し、ベクトル・テーブルから対応するソフトウェア・ファイルの開始アドレスを読み出し、対応するソフトウェア・ファイルにコールを生成する。こうして、第1EBSCが第2EBSCをコールすると、アップグレード・クライアントは関数コール・シーケンスを変更し、静的アドレスを用いて直接第2EBSCをコールする代わりに、第1EBSCが静的アドレスを用いて更新クライアントのAPIをコールするようにする。コールされたAPIは、対応する静的アドレスおよび実行時ベクトル・テーブルの引数を用いて、受け取ったコールを、第2EBSCへのコールに変換する。
図13は、一実施形態の下において、動的アドレッシングを用いた関数コールのフロー図1300である。ホスト・デバイスの主プログラムは、ホスト・デバイス・メモリに格納されているEBSCを用いて、ユーザが要求する機能をサポートする。ユーザが機能を要求したとき、ホスト・デバイスの主プログラムのEBSCは、静的アドレスを用いてアップグレード・クライアントのコンポーネントを直接コールすることによって、特定の機能に伴うEBSCをコールする。コールに応答して、アップグレード・クライアントは、ブロック1302において、機能またはEBSCの識別と当該機能に対する引数とを含む情報を、主プログラムから受け取る。ブロック1304において、アップグレード・クライアントは、EBSCの対応する開始アドレスと共に、主プログラムに得られるEBSC毎のエントリを含むベクトル・テーブルにアクセスする。ブロック1306において、アップグレード・クライアントは、ベクトル・テーブルから、開始アドレスおよび付随する引数を読み出す。ブロック1308において、主プログラムから受け取った、コールしたEBSCの情報と共に開始アドレス情報を用いて、アップグレード・クライアントは実際の関数に対するコール、および対応するEBSCを、受け取った全引数と共に生成する。
図14は、一実施形態の下において、動的アドレッシングをサポートするクライアント・デバイスROMマップ1400のブロック図である。ROMは、以下のエリア、ブート・コード・エリア1402、埋め込みソフトウェア・エリア1404、EBSC更新エリア1406、アップグレード・クライアント・デバイス・パラメータ・エリア1408、デバイス・メモリ管理エリア1410、および未指定の目的のために予約してある少なくとも1つのエリア1412を含むが、そのように限定される訳ではない。これらのメモリ・エリアの各々について以下で説明するが、代替実施形態では、当業者には認められる多くの異なるエリア・コンフィギュレーションを用いることができる。
ブート・コード・エリア1402は、デバイス・ブーティング・シーケンス・コードを格納する。埋め込みソフトウェア・エリア1404は、クライアント・デバイスの埋め込みソフトウェアを格納する。埋め込みソフトウェアには、例えば、ブラウザのソフトウェア、KVM、通信ライブラリ、リアル・タイムOS、グラフィクス・ドライバ、およびアップグレード・クライアントが含まれるが、そのように限定される訳ではない。
EBSC更新エリア1406は、新バージョンの埋め込みソフトウェア・コンポーネントを格納する。このエリア1406の推定サイズは、デバイス間で変動する。しかしながら、一般に、EBSC更新エリア1406は、埋め込みソフトウェア・エリア1404のサイズの約10%から20%である。
アップグレード・クライアント・デバイス・パラメータ・エリア1408は、アップグレード・クライアントに特定のクライアント・デバイス・コンフィギュレーション・データおよびパラメータを格納する。アップグレード・クライアント・デバイス・パラメータ・エリア1408の推定サイズは、クライアント・デバイス上に常駐するデバイス・コンフィギュレーションに関係するアップグレード可能なEBSCの数に対応する。
デバイス・メモリ管理エリア1410は、メモリ・パラメータ、ベクトル・テーブル、およびガベージ・エントリ・テーブルを格納するが、そのように限定される訳ではない。このエリア1410の推定サイズは、クライアント・デバイス上に常駐するデバイス・メモリ管理に関係するアップグレード可能なEBSCの数に対応する。
デバイス・メモリ管理エリア1410のメモリ・パラメータは、デバイス・メモリ管理のROM番号、開始アドレス、および予約ROMエリアのサイズ、ならびにデバイス・メモリ管理1410のために予約したROMエリアにおける開始アドレスおよび次に使用可能なメモリのサイズを含む。また、メモリ・パラメータは、ベクトル・テーブルおよびガベージ・エントリ・テーブルのサイズ、ならびにガベージ・エントリ・テーブルにおける有効エントリ数も含む。ベクトル・テーブルは、アップグレード可能EBSCのEBSC識別、ROM番号、開始、アドレス、およびサイズを含む。ガベージ・エントリ・テーブルは、全てのガベージ・エントリのROM番号、開始アドレス、およびサイズを含む。
図15は、図3および図14の実施形態の下における、アップグレード・クライアント130、埋め込みソフトウェア・エリア302、DMMライブラリ310、ベクトル・テーブル312、およびガベージ・テーブル314を含むメモリのコンポーネント間の相互作用の一例を示すメモリ・デバイス300のブロック図である。DMMライブラリ310は、3つのAPI502〜1506を含む。これらのAPI1502〜1506は、デバイス・メモリの管理のために予約したROMエリア、EBSCのために予約したメモリ、およびEBSC更新のために予約したエリアを操作する際に用いられる。これらのAPIは、関数アドレス変換用API1502、EBSCの新バージョンの予約のためのAPI1504、およびガベージ・コレクション用API1506を含み、その各々について以下に説明する。
関数アドレス変換API1502は、図13を参照して先に説明したように、特定のホスト・デバイス機能に関連するEBSCに対するホスト・デバイスの主プログラム1510からのコールを発生する。ホスト・デバイスの主プログラム1510は、関数アドレス変換API1502を直接コールすることによって、特定の機能に関連するEBSCをコールする。API1502の直接コールは、EBSCの直接コールの代わりに行われる。コールの時点において、関数アドレス変換API1502は主プログラム1510から情報を受け取る。この情報は、機能識別情報、および機能に対する引数を含む。
コールに応答して、関数アドレス変換API1502は、ベクトル・テーブル312にアクセスする。ベクトル・テーブル312は、主プログラム1510に使用可能な関数毎のエントリを、デバイス・メモリ302における当該関数の対応する開始アドレスと共に含む。関数アドレス変換API1502は、主プログラム1510が要求する関数の開始アドレスをベクトル・テーブル312から読み取り、この開始アドレス情報を、主プログラム1510から受け取ったコール先EBSCの情報と共に用いて、受け取った引数と共に実際の関数に対するコールを発生する。
一実施形態のアップグレード・クライアント130は、ここでは予約API1504と呼ぶ、EBSC1504の新バージョンの予約のためにAPIを用いて、新バージョンのEBSCまたはEBSCグループを収容するために、メモリ内のエリアを突き止めて予約する。図15を参照すると、予約API1504は、アップグレード・クライアント130によってコールされると、新EBSCバージョンの識別情報、即ち、この新バージョンのファイル・サイズを含む情報を受け取る。新EBSCバージョンのファイル・サイズは、新EBSCバージョンを格納するためにデバイスROM302内に予約するエリアのサイズである。予約API1504は、メモリ302内の該当するエリアを突き止め、メモリ・エリアの予約に成功したときに、要求された予約エリアの開始アドレスを返す。図16は、一実施形態の下において、予約API1504を用いてEBSCの新バージョンを収容するためのメモリ・エリアを予約するためのフロー図1600である。
要求されたサイズのメモリ・ブロックを割り当てる際、予約API1504は、1組のルールを以下のように適用するが、代替実施形態では、異なるルールを適用して同等の結果を得ることもできる。図17は、一実施形態の下において、予約API1504のルールを用いてEBSCの新バージョンを収容するためのメモリ・ブロックを突き止めるためのフロー図1700である。ブロック1702において、新EBSCのサイズに関する情報を受けると、予約API1504は、新EBSCのサイズが元のEBSCのそれを超過するか否か、ブロック1704において判定を行う。新EBSCのサイズが対応する元のEBSCのサイズ以下であれば、ブロック1706において、予約API1504は、対応する元のEBSCが現在占有しているメモリ・ブロックを、新EBSCを受けるために割り当てる。そうでなければ、予約API1504は、要求されたサイズを有するメモリ・ブロックを、予約されているメモリ・エリア内にある使用可能なメモリから突き止めようとする。
探索を続ける際、予約API1504は、ブロック1708において、クライアント・デバイスの予約されているメモリ・エリアを探索し、要求されたサイズを有するメモリ・ブロックを求める。適切なサイズのブロックが予約メモリ・エリア内で見つかった場合、ブロック1710において、予約API1504はそのメモリ・ブロックを、新EBSCを受け取るために割り当てる。予約メモリ・エリア内に適切なサイズのメモリ・ブロックが得られない場合、ブロック1712において、予約API1504はガベージ・テーブル314にアクセスする。ブロック1714において、予約API1504は、ガベージ・テーブル314内のエントリに対応する未使用エリア間で、要求されたサイズのメモリ・ブロックを突き止める試みの中で、ガベージ・テーブル314の情報を用いて、主メモリ・プログラムの未使用メモリ・エリアを探索する。一実施形態の未使用エリアを、ここではガベージ・エリアと呼び、主プログラムの未使用エリアを含むが、実施形態はそのように限定されている訳ではない。適切なサイズのメモリ・ブロックが未使用メモリ・エリア内で見つかった場合、ブロック1716において、予約API1504はそのブロックを、新EBSCを受け取るために割り当てる。
一実施形態の予約API1504は、適切なサイズのメモリ・ブロックを突き止めることができない場合、ブロック1718において、ガベージ・コレクションとここでは呼ばれているプロセスを開始する。また、予約API1504は、ガベージ・テーブル214のエントリ全てが塞がっているときにも、ガベージ・コレクションを開始する。一実施形態では、ガベージ・コレクション用API1506、ここではガベージ・コレクション1506と呼び、予約API1504によってコールされるが、そのように限定される訳ではない。ガベージ・コレクション用APIは、一般に引数を受け取らず、EBSCおよびEBSC更新のために予約したエリアにおける全てのガベージを消去するが、そのように限定される訳ではない。
前述のように、予約API1504は、要求された予約サイズに十分なメモリを見つけることができない場合、またはガベージ・エントリ・テーブルが満杯になったときに、ガベージ・コレクションを開始する。図18は、一実施形態の下におけるガベージ・コレクションのフロー図1800である。ガベージ・コレクションを開始する際、予約API1504はガベージ・コレクションAPI1506をコールする。コールされると、ブロック1802において、ガベージ・コレクションAPI1506はガベージ・テーブル・エントリを読み取り、ブロック1804において、デバイス・メモリの埋め込みソフトウェア・エリアを書き直させ、メモリのEBSCを順次メモリの上に向かってパックしていく。代替実施形態では、EBSCを主メモリの下に向かってパックしてもよいが、実施形態はそのように限定されている訳ではない。このパッキング処理により、埋め込みソフトウェア・エリアにおける未使用エリアを除去する。
このパッキング処理に続いて、ガベージ・コレクションAPI1506は、ブロック1806において、予約メモリ・エリアに格納されている各EBSCのサイズを評価し、そのサイズを、その書き換え以後における埋め込みソフトウェア・エリアの主プログラムに残っているあらゆる未使用メモリ・ブロックと比較する。この評価は、埋め込みソフトウェア・エリアの書き換えの後に残っている未使用メモリの量が、予約メモリ・エリアのいずれのEBSCでも収容可能であり、可能であれば、EBSCを予約メモリ・エリアから、デバイス・メモリの埋め込みソフトウェア・エリアに移動させることができるか否か判定を行う。予約メモリ・エリアのEBSCは順次評価されるが、実施形態はそのように限定される訳ではない。ブロック1808において、EBSCは、予約メモリ・エリアからEBSCのサイズが許す埋め込みソフトウェア・エリアに書き直される。一実施形態において、EBSCが書き直されると、これらは順次、パックされたEBSCに続いて埋め込みソフトウェア・エリアに格納される。
予約メモリ・エリアに格納されたEBSCの評価は、全てのEBSCを埋め込みソフトウェア・エリアに移動し終えるまで、または埋め込みソフトウェア・エリア内に、予約メモリ・エリアのEBSCを収容できる程大きな埋め込みソフトウェア・エリアが残っていないと判定されるまで継続する。埋め込みソフトウェア・エリア内に収容することができないEBSCはいずれも、予約メモリ・エリア内に残るが、実施形態はそのように限定される訳ではない。
パッキングおよび移動処理が完了すると、ブロック1810において、ガベージ・コレクションAPI1506は、ホスト・デバイスの主メモリの未使用メモリ・ブロックを予約メモリ・エリアとして指定し直すことにより、ホスト・デバイス・メモリを再分配する。更に、ステップ1812において、予約メモリ・エリア・ポインタをリセットして、予約メモリ・エリア内で使用可能なメモリの開始アドレスを維持する。加えて、ブロック1814において、ガベージ・テーブルを書き換え、未使用メモリ・エリアのステータスを反映させる。また、アップグレード・クライアント130は、同じEBSCの元のバージョンが占有するメモリ・エリア以外のいずれかのメモリ・エリアへのEBSCの新バージョンの書き込みの後に、ベクトル・テーブル312を更新する。
更新およびガベージ・コレクション処理の一例を、図15、図17、図19、および図20を参照しながら、以下に続ける。図19は、一実施形態の下において、予約APIのアップグレード処理の前1902および後1904におけるホスト・メモリ・デバイスの一例のブロック図である。図20は、一実施形態の下において、アップグレードおよびガベージ・コレクション処理の後におけるホスト・デバイス・メモリ2004のブロック図である。
この例は、予約APIによるEBSC8の新バージョンに関する情報の受信から始まる。新バージョンのEBSC8のファイル・サイズを受け取ると、この新バージョンのサイズは元のEBSCのサイズ以下か否か判定を行う。この例では、EBSC8の元のバージョンは400バイトを収容し、一方EBSC8の新バージョンは380バイトを収容する。したがって、予約APIは、現在EBSC8の元のバージョンが占有しているエリア1920を、EBSC8の新バージョンを受け取るために割り当てる。
本例は、予約APIによるEBSC5の新バージョンについての情報の受信に続く。EBSC5の新バージョンのファイル・サイズを受け取ると、この新バージョンのサイズが元のEBSCのサイズ以下か否か判定を行う。この例では、EBSC5の元のバージョンは300バイトを収容し、一方EBSC5の新バージョンは360バイトを収容する。新バージョンのサイズの方が元のバージョンのそれよりも大きいので、予約APIは、予約メモリ・エリア1910内で使用可能なメモリから、要求された合図を有するメモリ・ブロックを突き止めようとする。この例では、予約メモリ・エリア1910においてメモリが使用可能であるので、予約APIは、EBSC5の新バージョンを受け取るために、予約メモリ1910内のエリア1922を割り当てる。更に、予約APIは、EBSC5の元のバージョンが現在占有しているエリアを、未使用エリア1924として割り当てる。
次に、予約APIはEBSC7の新バージョンに関する情報を受け取る。EBSC7の元のバージョンは550バイトを収容し、一方EBSC7の新バージョンは560バイトを収容する。新バージョンのサイズが元のバージョンのそれよりも大きいので、予約APIは予約メモリ・エリア1910内の使用可能なメモリから、要求されたサイズを有するメモリ・ブロックを突き止めようとする。この例では、予約メモリ・エリア1910内でメモリが使用可能であるので、予約APIは、EBSC7の新バージョンを受け取るために、予約メモリ1910内で次に使用可能なエリア1926を割り当てる。更に、予約APIは、EBSC7の元のバージョンが現在占有しているエリアを、未使用エリア1928として割り当てる。
本例が継続すると、予約APIがEBSC2の新バージョンに関する情報を受け取る。EBSC2の元のバージョンは330バイトを収容し、EBSC2の新バージョンは360バイトを収容する。予約APIは、予約メモリ・エリア1910内では適切なサイズのエリアが得られないと判断し、ガベージ・テーブル314にアクセスする。ガベージ・テーブル314は、ガベージ・テーブル314内のエントリを用いて識別されるガベージ・エリア間で、要求されたサイズのメモリ・ブロックを突き止める試みにおいて用いられる。この例では、該当するサイズの未使用エリア1930が特定され、予約APIは、EBSC2の新バージョンを受け取るために、未使用エリア1930を割り当てる。
前述のように、予約APIは、要求された予約サイズに十分なメモリを見つけることができない場合、またはガベージ・エントリ・テーブルが満杯のときに、ガベージ・コレクションを開始する。この例では、EBSC2の新バージョンのための予約メモリ・エリア内での割り当てに続いて受け取った次の新EBSCバージョンで、ガベージ・コレクションが開始されたと仮定する。一実施形態のガベージ・コレクションは、EBSCをホスト・デバイス・メモリにおいて上に向けてパックし、新たなホスト・デバイス・メモリ・コンフィギュレーション1904を得る。この中では、EBSCの順序は、EBSC1、EBSC4、EBSC2、EBSC3、EBSC6、EBSC5、およびEBSC7となる。代替実施形態のガベージ・コレクション・ルーチンは、EBSCをホスト・デバイス・メモリにおいて下に向けてパックする。
図21は、一実施形態の下において、動的アドレッシングを用いた埋め込みソフトウェアの開発および展開プロセスのブロック図2100である。この図は、ソフトウェア・コンポーネント分配部2102によるEBSCの開発から、動的アドレッシングに基づくデバイス・メモリ管理を行う一実施形態のアップグレード・クライアントを用いたデバイスROMの初期化までのプロセスを示す。
ソフトウェア・コンポーネント分配部2102のコンポーネントは、新EBSCのソース・コードを受信し、新EBSCソース・コードをコンパイルする(2103)。コンパイル(2103)によって、得られたEBSCオブジェクト・コードをリンカ2106および2116と結合し、新EBSCの登録の一部として、新EBSCオブジェクト・コードから新たな16進ファイル(テキスト)または二進ファイル2118を生成する。新たな16進ファイルは、新EBSCに対応する。
動的アドレッシングをサポートするに当たり、ソフトウェア・コンポーネント分配部2102は、コンパイラ2103およびリンカ2106を用いて、マップ・ファイル2104を生成する。このマップ・ファイル2104は、ベクトル生成ツール2105が、EBSCの対応する初期ベクトル・テーブル2108を生成するために用いる。次いで、ベクトル・テーブル2108は、リンカ2116に供給され、リンカ2116は、初期ベクトル・テーブル2108を用いて、16進(テキスト)または二進ファイル2118を生成する。16進(テキスト)または二進ファイル2118は、クライアント・デバイス2112の埋め込みソフトウェア・エリア2120にダウンロードされるが、代替実施形態では、16進ファイル2118をクライアント・デバイス2112の他のメモリ・エリアに書き込んでもよい。アップグレード・クライアントのDMMライブラリのコンポーネントは、ベクトル・テーブル2208を維持し、こうして、EBSCの動的アドレッシングをサポートする。DMMライブラリは、アップグレード・クライアントのデバイス・パラメータ2110のために予約したエリアに格納されているベクトル・テーブル2108と重複する。
前述の電子ファイル更新中におけるデバイス・メモリ管理のためのシステムおよび関連する方法は、電子ファイルの更新システムを含み、このシステムは、デルタ・ファイルを生成する、ファイル差別化および更新システムの第1コンポーネントを含む第1デバイスと、第1デバイスから第1デルタ・ファイルを少なくとも1つの結合部を介して受け取る第2デバイスであって、ファイル差別化および更新システムの第2コンポーネントを含む第2デバイスとを備えている。
第2デバイスは、ファイル差別化および更新システムの第2コンポーネントを含み、元の電子ファイルの更新バージョンである新電子ファイルの少なくとも1つの新たなコンポーネントをデルタ・ファイルから読み出し、第1および第2メモリ・エリアの順次探索を行うことにより、新コンポーネントを収容するのに十分大きいメモリ・ブロックを識別し、予約し、未使用メモリ・ブロックを排除するために第1メモリ・エリアを書き換え、新コンポーネントのサイズが第1および第2メモリ・エリアの使用可能なメモリ・ブロックのサイズを超過するとき、第1および第2メモリ・エリアを再分配し、新コンポーネントを予約したメモリ・ブロックに書き込み、新コンポーネントを、元の電子ファイルの対応するコンポーネントを含む元のメモリ・ブロック以外のメモリ・ブロックに書き込んだときに、ベクトル・テーブルを更新することによって第2デバイスの電子ファイルを更新するように構成されている。
また、第2デバイスは、ファイル差別化および更新システムの第2コンポーネントも含み、デバイスの主プログラムからの、対応する電子ファイルの識別情報を含む関数コールを受け、ベクトル・テーブルから対応する電子ファイルの開始アドレスを読み取り、開始アドレスおよび識別情報を用いて、対応する電子ファイルに対するコールを生成することによってデバイスの電子ファイルにアクセスするように構成されている。
一実施形態のシステムの第2デバイスは、更に、電子ファイルを更新する際に用いるための第1および第2アプリケーション・プログラミング・インターフェース(API)を含む。
一実施形態のシステムの第2デバイスは、更に、電子ファイルにアクセスする際に用いるための第3アプリケーション・プログラミング・インターフェース(API)を含む。
一実施形態のシステムの第1デバイスは、第2デバイス上に常駐するソフトウェアの少なくとも1つのプロバイダによってアクセス可能な、プロセッサに基づくデバイスを含む。
一実施形態のシステムの第2デバイスは、パーソナル・コンピュータ、携帯用計算機、セルラ電話機、携帯用通信デバイス、およびパーソナル・ディジタル・アシスタントの中から選択した、少なくとも1つのプロセッサに基づくデバイスを含む。
一実施形態のシステムの結合部は、ワイヤレス結合部、ワイヤード結合部、混合ワイヤレス/ワイヤード結合部、およびローカル・エリア・ネットワーク(LAN)、都市区域ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、企業固有のネットワーク、バックエンド・ネットワーク、インターネットを含む少なくとも1つのネットワークとの結合部、ならびにフロッピ・ディスク、ハード・ディスク・ドライブ、およびCD−ROMディスクを含む着脱可能固定媒体、更に電話回線、バス、および電子メール・メッセージの内少なくとも1つである。
一実施形態の元のファイルおよび新ファイルは、ダイナミック・リンク・ライブラリ・ファイル、共有オブジェクト・ファイル、埋め込みソフトウェア・コンポーネント(EBSC)、ファームウェア・ファイル、実行可能ファイル、16進データ・ファイルを含むデータ・ファイル、システム・コンフィギュレーション・ファイル、および個人的使用データを含むファイルを含むソフトウェア・ファイルを含む。
前述の電子ファイルの更新中におけるデバイス・メモリ管理のためのシステムおよび関連する方法は、ホスト・デバイスにおけるデバイス・メモリ管理方法を含み、この方法は、新電子ファイルの少なくとも1つの受信コンポーネントの識別情報を受信するステップであって、新電子ファイルが元の電子ファイルの更新バージョンであり、識別情報が受信したコンポーネントのサイズを含む、ステップと、第1および第2メモリ・エリアの順次探索を行うことによって、受信したコンポーネントを収容することができる十分大きなメモリ・ブロックを識別し予約するステップであって、未使用メモリ・ブロックを排除するように第1メモリ・エリアを書き換え、サイズが第1および第2メモリ・エリアの使用可能メモリ・ブロックのサイズを超過する場合、第1および第2メモリ・エリアを再分配する、ステップと、予約したメモリ・ブロックのアドレスを与えるステップと、受信したコンポーネントを予約メモリ・ブロックに書き込むことによって、元の電子ファイルを更新するステップとを含む。
ホスト・デバイスにおけるデバイス・メモリ管理方法は、更に、受信したコンポーネントを、元の電子ファイルの対応するコンポーネントを含む第1メモリ・エリア内の元のメモリ・ブロック以外のメモリ・ブロックに書き込む場合、第1テーブルを更新するステップを含み、第1テーブルは、ホスト・デバイスの電子ファイルのコンポーネントのコンポーネント情報を含み、このコンポーネント情報は、コンポーネント識別、リード・オンリ・メモリ(ROM)番号、開始アドレス、およびサイズを含む。
一実施形態の方法では、識別および予約するステップは、元の電子ファイルの対応するコンポーネントのサイズよりもサイズが小さい場合、第1メモリ・エリアの元のメモリ・ブロックを予約することを含み、元のメモリ・ブロックは、元の電子ファイルの対応するコンポーネントを含む。
一実施形態の方法では、識別および予約するステップは、サイズが元の電子ファイルの対応するコンポーネントのサイズを超過する場合、第2メモリ・エリアと第1メモリ・エリアの未使用部分との少なくとも一方を探索して、受信したコンポーネントを格納できる十分大きなメモリ・ブロックを求めることを含む。
一実施形態の方法では、第1メモリ・エリアの書き換えおよび第2メモリ・エリアの再分配のステップは、更に、第1エリアの未使用メモリ・ブロックに対応する少なくとも1つのエントリを含む第2テーブルを読み取り、第1メモリ・エリアのコンポーネントを順次パックし、未使用メモリ・ブロックを統合するために、第1メモリ・エリアのコンポーネントを書き換え、第2メモリ・エリアの各コンポーネントのサイズを順次評価し、第2メモリ・エリアのコンポーネントを、第2メモリ・エリアのコンポーネントのサイズおよび統合した未使用メモリ・ブロックのサイズが許す、第1メモリ・エリアに再書き込みし、順次評価および再書き込みに続いて、統合した未使用メモリ・ブロックの残りのブロックを識別し、統合した未使用メモリ・ブロックの残りのブロックを、第2メモリ・エリアの一部として指定することによって、第2メモリ・エリアを再分配し、再分配した第2メモリ・エリアの使用可能なメモリの開始アドレスを維持するために、第2メモリ・エリアのポインタを設定することを含む。
一実施形態の方法では、第2テーブルのエントリは、リード・オンリ・メモリ(ROM)番号、開始アドレス、およびサイズを含む未使用メモリ・ブロックの情報を含む。
前述のホスト・デバイスにおけるデバイス・メモリ管理方法は、更に、ホスト・デバイスの主プログラムからの関数コールを受け、この関数コールが対応する電子ファイルの識別情報を含み、対応する電子ファイルの開始アドレスをベクトル・テーブルから読み出し、開始アドレスおよび識別情報を用いて、対応する電子ファイルに対するコールを発生することによって、ホスト・デバイスの電子ファイルによって与えられる機能にアクセスするステップを含む。
前述の電子ファイルの更新中におけるデバイス・メモリ管理のためのシステムおよび関連する方法は、ファイル更新中におけるデバイス・メモリ管理方法を含み、この方法は、受信コンポーネントの識別情報を用いて、新たな電子ファイルの少なくとも1つの受信コンポーネントのサイズを判定するステップであって、新たな電子ファイルが、元の電子ファイルの更新バージョンである、ステップと、サイズが元の電子ファイルの対応するコンポーネントのサイズ以下である場合、受信コンポーネントを書き込む第1メモリ・エリアの元のメモリ・ブロックを割り当て、元のメモリ・ブロックが元の電子ファイルの対応するコンポーネントを含む、ステップと、サイズが元の電子ファイルの対応するコンポーネントのサイズを超過する場合、第2メモリ・エリアと第1メモリ・エリアの未使用部分とを探索して、受信コンポーネントを格納できる十分に大きなメモリ・ブロックを求めるステップと、サイズが第1および第2メモリ・エリアの使用可能なメモリ・ブロックのサイズを超過する場合、未使用部分を除去するように第1メモリ・エリアを書き換え、第1および第2メモリ・エリアを再分配し、受信コンポーネントを書き込む、第2メモリ・エリアのメモリ・ブロックを割り当てるステップとを含む。
一実施形態の方法では、第1メモリ・エリアの書き換えは、更に、第1メモリ・エリアの未使用部分に対応する少なくとも1つのエントリを含むテーブルを読み込み、第1メモリ・エリアのコンポーネントを順次パックし、未使用メモリ・ブロックを統合するために、第1メモリ・エリアのコンポーネントを書き直すことを含む。
一実施形態の方法では、第1および第2メモリ・エリアを再分配するステップは、更に、第2メモリ・エリアの各コンポーネントのサイズを順次評価し、第2メモリ・エリアのコンポーネントのサイズおよび書き換えた第2メモリ・エリアの統合した未使用メモリ・ブロックのサイズが許すとき、第2メモリ・エリアのコンポーネントを書き換えた第1メモリ・エリアに書き込み、順次評価および書き込みに続いて、統合した未使用メモリ・ブロックの残りのブロックを特定し、統合した未使用メモリ・ブロックの残りのブロックを第2メモリ・エリアの一部として指定することにより、第1および第2メモリ・エリアを再分配し、再分配した第2メモリ・エリアの使用可能なメモリの開始アドレスを維持するために、第2メモリ・エリアのポインタを設定し、テーブルを評価することを含む。
前述の電子ファイルの更新中におけるデバイス・メモリ管理のためのシステムおよび関連する方法は、電子デバイスのメモリを管理する方法を含み、この方法は、元の電子ファイルの更新バージョンであある新電子ファイルの少なくとも1つの新コンポーネントを受信し、第1および第2メモリ・エリアの順次探索を行うことによって、受信したコンポーネントを収容することができる十分大きなメモリ・ブロックを識別し予約し、未使用メモリ・ブロックを排除するように第1メモリ・エリアを書き換え、サイズが第1および第2メモリ・エリアの使用可能メモリ・ブロックのサイズを超過する場合、第1および第2メモリ・エリアを再分配し、新コンポーネントを予約したメモリ・ブロックに書き込み、新コンポーネントを、元の電子ファイルの対応するコンポーネントを含む元のメモリ・ブロック以外のメモリ・ブロックに書き込んだときに、ベクトル・テーブルを更新することによって、デバイスの電子ファイルを更新するステップを含む。
前述の電子デバイスのメモリ管理方法は、更に、デバイスの主プログラムからの関数コールを受け、関数コールは対応する電子ファイルの識別情報を含み、ベクトル・テーブルから対応する電子ファイルの開始アドレスを読み取り、開始アドレスおよび識別情報を用いて、対応する電子ファイルに対するコールを生成することによって、デバイスの電子ファイルにアクセスするステップを備えている。
一実施形態の方法では、識別情報は、関数識別、および関数に対する引数を含む。
前述の電子ファイルの更新中におけるデバイス・メモリ管理のためのシステムおよび関連する方法は、新電子ファイルの少なくとも1つの新コンポーネントを受信する手段であって、新電子ファイルは、元の電子ファイルの更新バージョンである、手段と、第1および第2メモリ・エリアの順次探索を行うことによって、受信したコンポーネントを収容することができる十分大きなメモリ・ブロックを識別し予約する手段であって、未使用メモリ・ブロックを排除するように第1メモリ・エリアを書き換え、サイズが第1および第2メモリ・エリアの使用可能メモリ・ブロックのサイズを超過する場合、第1および第2メモリ・エリアを再分配する、手段と、新コンポーネントを予約したメモリ・ブロックに書き込むことによって、元の電子ファイルを更新する手段と、新コンポーネントを、元の電子ファイルの対応するコンポーネントを含む元のメモリ・ブロック以外のメモリ・ブロックに書き込む場合、ベクトル・テーブルを更新する手段とを備えている装置を含む。
一実施形態の装置は、パーソナル・コンピュータ、携帯用計算機、セルラ電話機、携帯用通信デバイス、およびパーソナル・ディジタル・アシスタントの中から選択した、少なくとも1つのプロセッサに基づくデバイスを含む、装置。
一実施形態の装置は、第1アプリケーション・プログラミング・インターフェース(API)を、メモリ・ブロックを識別し予約する手段として含む。
一実施形態の装置は、更に、デバイスの主プログラムから関数コールを受け取る手段であって、関数コールは、対応する電子ファイルの識別情報を含む、手段と、ベクトル・テーブルから対応する電子ファイルの開始アドレスを読み取る手段と、開始アドレスおよび識別情報を用いて、対応する電子ファイルに対するコールを発生する手段とを備えている。
一実施形態の装置は、第2アプリケーション・プログラミング・インターフェース(API)を、関数コールを受け取る手段として含む。
前述の電子ファイルの更新中におけるデバイス・メモリ管理のためのシステムおよび関連する方法は、実行可能な命令を含むコンピュータ読み取り可能媒体を含み、処理システムにおいて実行すると、新電子ファイルの少なくとも1つの受信コンポーネントの識別情報を受信し、新電子ファイルは、元の電子ファイルの更新バージョンであり、識別情報は受信したコンポーネントのサイズを含み、第1および第2メモリ・エリアの順次探索を行うことによって、受信したコンポーネントを収容することができる十分大きなメモリ・ブロックを識別し予約し、未使用メモリ・ブロックを排除するように第1メモリ・エリアを書き換え、サイズが第1および第2メモリ・エリアの使用可能メモリ・ブロックのサイズを超過する場合、第1および第2メモリ・エリアを再分配し、予約したメモリ・ブロックのアドレスを与え、受信したコンポーネントを予約メモリ・ブロックに書き込むことによって、元の電子ファイルを更新することによって電子ファイルおよびファイル・コンポーネントを更新する。
前述の電子ファイルの更新中におけるデバイス・メモリ管理のためのシステムおよび関連する方法は、実行可能な命令を含む電磁媒体を含み、処理システムにおいて実行すると、新電子ファイルの少なくとも1つの受信コンポーネントの識別情報を受信し、新電子ファイルは元の電子ファイルの更新バージョンであり、識別情報は受信したコンポーネントのサイズを含み、第1および第2メモリ・エリアの順次探索を行うことによって、受信したコンポーネントを収容することができる十分大きなメモリ・ブロックを識別し予約し、未使用メモリ・ブロックを排除するように第1メモリ・エリアを書き換え、サイズが第1および第2メモリ・エリアの使用可能メモリ・ブロックのサイズを超過する場合、第1および第2メモリ・エリアを再分配し、予約したメモリ・ブロックのアドレスを与え、受信したコンポーネントを予約メモリ・ブロックに書き込むことによって、元の電子ファイルを更新する、ことによって電子ファイルおよびファイル・コンポーネントを更新する。
前述の電子ファイルの更新中におけるデバイス・メモリ管理のためのシステムおよび関連する方法は、電子ファイルの更新システムを含み、このシステムは、デルタ・ファイルを生成する、ファイル差別化および更新システムの第1コンポーネントを含む第1デバイスと、第1デバイスから第1デルタ・ファイルを少なくとも1つの結合部を介して受け取る第2デバイスとを備えている。一実施形態の第2デバイスは、デルタ・ファイルを通じて新電子ファイルの少なくとも1つのコンポーネントを受信し、新電子ファイルは、元の電子ファイルの更新バージョンであり、受信したコンポーネントのサイズを判定し、サイズが元の電子ファイルの対応するコンポーネントのサイズ以下である場合、受信したコンポーネントを、元の電子ファイルの対応するコンポーネントを含む元のメモリ・エリアに書き込み、サイズが元の電子ファイルの対応するコンポーネントのサイズを超過する場合、受信したコンポーネントを、元のメモリ・エリアと関連付けられた予約メモリ・エリアに書き込むことにより第2デバイスの電子ファイルを更新するように構成されているファイル差別化および更新システムの第2コンポーネントを含む。
前述の電子ファイルの更新中におけるデバイス・メモリ管理のためのシステムおよび関連する方法は、電子ファイルの更新方法を含み、この方法は、新電子ファイルの少なくとも1つのコンポーネントを受信するステップであって、新電子ファイルは、元の電子ファイルの更新バージョンである、ステップと、受信したコンポーネントのサイズを判定するステップと、サイズが元の電子ファイルの対応するコンポーネントのサイズ以下である場合、受信したコンポーネントを、元の電子ファイルの対応するコンポーネントを含む元のメモリ・エリアに書き込むステップと、サイズが元の電子ファイルの対応するコンポーネントのサイズを超過する場合、受信したコンポーネントを、元のメモリ・エリアと関連付けられた予約メモリ・エリアに書き込むステップとを含む。一実施形態の方法では、少なくとも1つの成分は、コンポーネントのグループを含む。
前述の電子ファイルの更新中におけるデバイス・メモリ管理のためのシステムおよび関連する方法は、新電子ファイルの少なくとも1つのコンポーネントを受信する手段であって、新電子ファイルは、元の電子ファイルの更新バージョンである、手段と、受信したコンポーネントのサイズを判定する手段と、サイズが元の電子ファイルの対応するコンポーネントのサイズ以下である場合、受信したコンポーネントを、元の電子ファイルの対応するコンポーネントを含む元のメモリ・エリアに書き込む手段と、サイズが元の電子ファイルの対応するコンポーネントのサイズを超過する場合、受信したコンポーネントを、元のメモリ・エリアと関連付けられた予約メモリ・エリアに書き込む手段とを備えている装置を含む。
本発明の態様は、フィールド・プログラマブル・ゲート・アレイ(FPGA)、プログラマブル・アレイ・ロジック(PAL)デバイス、電気的プログラム可能ロジックおよびメモリ・デバイスのようなプログラマブル・ロジック・デバイス(PDL)、標準的なセルに基づくデバイス、ならびに特定用途集積回路(ASIC)を含む種々の回路のいずれにもプログラムされる機能として実現することができる。更に、本発明の態様は、ソフトウェアに基づく回路エミュレーション、ディスクリート・ロジック(連続および組み合わせ)、カスタム・デバイス、ファジイ(ニューラル)デバイス、量子デバイス、および上述のデバイスの種類のいずれのハイブリッドを有するマイクロプロセッサにおいても具体化することができる。勿論、基盤となるデバイス技術は、種々のコンポーネントの種類、例えば、相補金属酸化物半導体(CMOS)のような金属酸化物半導体電界効果トランジスタ(MOSFET)技術、エミッタ結合ロジック(ECL)のようなバイポーラ技術、ポリマ技術(例えば、シリコン共役ポリマおよび金属共役ポリマ−金属構造)、混合アナログおよびディジタルなどにおいて提供することができる。
文脈上特に必要であることが明らかでない限り、明細書および特許請求の範囲を通じて、「備える」、「備えている」等の言葉は、排他的または網羅的意味ではなく、包含的意味で解釈するものとする。即ち、「含むが、限定されない」という意味である。単数または複数を用いる単語も、それぞれ、複数および単数を含むものとする。加えて、「ここでは」、「以下で」という単語、および同様な意義の単語は、本願において用いられる場合、本願全体を指すのであり、本願のいずれの特定部分を指すのではないとする。
本発明の例示した実施例についてのこれまでの説明は、それで全てであることも、開示した正確な形態に本発明を限定することも意図していない。本発明の具体的な実施形態および例を例示の目的のためにここで記載したが、種々の等価な変更も本発明の範囲内で可能であることは、当業者は認めよう。ここに提示した本発明の教示は、他の処理システムや通信システムにも適用することができ、前述のFファイル更新のみに適用できるのではない。
前述した種々の実施形態のエレメントおよび作用を組み合わせれば、更に別の実施形態も得ることができる。これらおよびその他の変更は、前述の詳細な説明に鑑みれば、容易に行うことができる。
先の引例は全て、ここで引用したことにより、本願にも含まれるものとする。必要であれば、本発明の態様を変更して前述の種々の特許および出願のシステム、機能および概念を採用すれば、本発明の更に別の実施形態を得ることができる。
一般に、特許請求の範囲においては、用いられる用語は、明細書に開示される具体的な実施形態および特許請求の範囲に本発明を限定するように解釈するのではなく、特許請求の範囲の下で動作してファイル差別化および更新方法を実施するあらゆる処理システムを含むように解釈するのが当然である。したがって、本発明は、本開示に限定されるのではなく、むしろ発明の範囲は特許請求の範囲によって全体的に決定されるものとする。
本発明のある種の態様をある請求項の形式で提示するが、本願の発明者は、本発明の種々の態様をいかなる数の請求項形式でも想定している。例えば、本発明の一態様のみを、コンピュータ読み取り可能媒体に具体化するものとして明記するが、他の態様も同様にコンピュータ読み取り可能媒体に具体化することができる。したがって、本発明は、本願を出願した後でも、更に別の請求項を追加し、本発明の別の態様に対する、このような更に別の請求項を追求する権利を保有するものとする。
図1は、一実施形態の下における、バイト・レベルのファイル差別化および更新(FDU)アルゴリズムを用いて、電子ファイルを更新するシステムのブロック図である。 図2は、一実施形態の下における、ソフトウェア更新システムのブロック図である。 図3は、一実施形態の下における、デバイス・メモリのブロック図である。 図4は、一実施形態の下における、非クリティカル・コンポーネント更新のフロー図である。 図5は、一実施形態の下におけるクリティカル・コンポーネントの更新のフロー図である。 図6は、一実施形態の下において、更新可能なEBSC毎に予約メモリ割り当てを用いた静的アドレッシングのフロー図である。 図7は、図6の実施形態の下において、静的アドレッシング・メモリ管理をサポートするように構成したホスト・デバイス・メモリの一部のブロック図である。 図8は、一実施形態の下において、更新可能なEBSCのグループ単位での予約メモリ割り当てを用いた静的アドレッシングのフロー図である。 図9は、図8の実施形態の下において、静的アドレッシング・メモリ管理をサポートするように構成したホスト・デバイス・メモリの一部のブロック図である。 図10は、一実施形態の下において、静的アドレッシングをサポートするクライアント・デバイスROMマップのブロック図である。 図11は、一実施形態の下において、静的アドレッシングを用いた埋め込みソフトウェアの開発および展開プロセスのブロック図である。 図12は、一実施形態の下において、動的アドレッシングを用いてEBSCまたはEBSCグループを更新するためのフロー図である。 図13は、一実施形態の下において、動的アドレッシングを用いた関数コールのフロー図である。 図14は、一実施形態の下において、動的アドレッシングをサポートするクライアント・デバイスのROMメモリ・マップのブロック図である。 図15は、図3および図14の実施形態の下において、アップグレード・クライアント、埋め込みソフトウェア・エリア、DMMライブラリ、ベクトル・テーブル、およびガベージ・テーブルを含むメモリのコンポーネント間の相互作用の一例を示すホスト・デバイス・メモリのブロック図である。 図16は、一実施形態の下において、予約APIを用いてEBSCの新バージョンを収容するためにメモリ・エリアを予約するためのフロー図である。 図17は、一実施形態の下において、予約APIのルールを用いて、EBSCの新バージョンを収容するためにメモリ・エリアを突き止めるためのフロー図である。 図18は、一実施形態の下における、埋め込みソフトウェア・エリア(ガベージ・コレクション)の未使用エリアの収集のためのソフトウェアである。 図19は、一実施形態の下における、予約APIの更新処理の前後でのホスト・デバイス・メモリの一例のブロック図である。 図20は、一実施形態の下において、アップグレードおよびガベージ・コレクション処理の後におけるホスト・デバイスのブロック図である。 図21は、一実施形態の下において、動的アドレッシングを用いた埋め込みソフトウェアの開発および展開プロセスのブロック図である。

Claims (30)

  1. 電子ファイルの更新システムであって、
    デルタ・ファイルを生成する、ファイル差別化および更新システムの第1コンポーネントを含む第1デバイスと、
    前記第1デバイスから前記第1デルタ・ファイルを少なくとも1つの結合部を介して受け取る第2デバイスであって、前記ファイル差別化および更新システムの第2コンポーネントを含む第2デバイスと、
    を備えており、前記システムは、
    前記デルタ・ファイルから新電子ファイルの少なくとも1つの新コンポーネントを読み出し、前記新電子ファイルが、元の電子ファイルの更新バージョンであり、
    第1および第2メモリ・エリアの順次探索を行うことにより、前記新コンポーネントを収容するのに十分大きいメモリ・ブロックを識別し予約し、未使用メモリ・ブロックを排除するために前記第1メモリ・エリアを書き換え、前記新コンポーネントのサイズが前記第1および第2メモリ・エリアの使用可能なメモリ・ブロックのサイズを超過するとき、前記第1および第2メモリ・エリアを再分配し、
    前記新コンポーネントを予約したメモリ・ブロックに書き込み、
    前記新コンポーネントを、前記元の電子ファイルの対応するコンポーネントを含む元のメモリ・ブロック以外のメモリ・ブロックに書き込んだときに、ベクトル・テーブルを更新する、
    ことによって前記第2デバイスの電子ファイルを更新するように構成されており、
    更に、前記システムは、
    前記デバイスの主プログラムからの関数コールを受け、前記関数コールは対応する電子ファイルの識別情報を含み、
    前記ベクトル・テーブルから前記対応する電子ファイルの開始アドレスを読み取り、
    前記開始アドレスおよび前記識別情報を用いて、前記対応する電子ファイルに対するコールを生成することによって、
    前記デバイスの電子ファイルにアクセスするように構成されている、システム。
  2. 請求項1記載のシステムにおいて、前記第2デバイスは、更に、電子ファイルを更新する際に用いるための第1および第2アプリケーション・プログラミング・インターフェース(API)を含む、システム。
  3. 請求項1記載のシステムにおいて、前記第2デバイスは、更に、電子ファイルにアクセスする際に用いるための第3アプリケーション・プログラミング・インターフェース(API)を含む、システム。
  4. 請求項1記載のシステムにおいて、前記第1デバイスは、前記第2デバイス上に常駐するソフトウェアの少なくとも1つのプロバイダによってアクセス可能な、プロセッサに基づくデバイスを含む、システム。
  5. 請求項1記載のシステムにおいて、前記第2デバイスは、パーソナル・コンピュータ、携帯用計算機、セルラ電話機、携帯用通信デバイス、およびパーソナル・ディジタル・アシスタントの中から選択した、少なくとも1つのプロセッサに基づくデバイスを含む、システム。
  6. 請求項1記載のシステムにおいて、前記少なくとも1つの結合部は、ワイヤレス結合部、ワイヤード結合部、混合ワイヤレス/ワイヤード結合部、およびローカル・エリア・ネットワーク(LAN)、都市区域ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、企業固有のネットワーク、バックエンド・ネットワーク、インターネットを含む少なくとも1つのネットワークとの結合部、ならびにフロッピ・ディスク、ハード・ディスク・ドライブ、およびCD−ROMディスクを含む着脱可能固定媒体、更に電話回線、バス、および電子メール・メッセージの中から選択する、システム。
  7. 請求項1記載のシステムにおいて、前記元のファイルおよび新ファイルは、ダイナミック・リンク・ライブラリ・ファイル、共有オブジェクト・ファイル、埋め込みソフトウェア・コンポーネント(EBSC)、ファームウェア・ファイル、実行可能ファイル、16進データ・ファイルを含むデータ・ファイル、システム・コンフィギュレーション・ファイル、および個人的使用データを含むファイルを含むソフトウェア・ファイルを含む、システム。
  8. ホスト・デバイスにおけるデバイス・メモリ管理方法であって、
    新電子ファイルの少なくとも1つの受信コンポーネントの識別情報を受信するステップであって、前記新電子ファイルは、元の電子ファイルの更新バージョンであり、前記識別情報は前記受信したコンポーネントのサイズを含む、ステップと、
    第1および第2メモリ・エリアの順次探索を行うことによって、前記受信したコンポーネントを収容することができる十分大きなメモリ・ブロックを識別し予約するステップであって、未使用メモリ・ブロックを排除するように前記第1メモリ・エリアを書き換え、前記サイズが前記第1および第2メモリ・エリアの使用可能メモリ・ブロックのサイズを超過する場合、前記第1および第2メモリ・エリアを再分配する、ステップと、
    前記予約したメモリ・ブロックのアドレスを与えるステップと、
    前記受信したコンポーネントを前記予約メモリ・ブロックに書き込むことによって、前記元の電子ファイルを更新するステップと、
    を備えた方法。
  9. 請求項8記載の方法であって、前記受信したコンポーネントを、前記元の電子ファイルの対応するコンポーネントを含む前記第1メモリ・エリア内の元のメモリ・ブロック以外のメモリ・ブロックに書き込む場合、第1テーブルを更新するステップを含み、前記第1テーブルは、前記ホスト・デバイスの電子ファイルのコンポーネントのコンポーネント情報を含み、該コンポーネント情報は、コンポーネント識別、リード・オンリ・メモリ(ROM)番号、開始アドレス、およびサイズを含む、方法。
  10. 請求項8記載の方法において、識別および予約するステップは、前記元の電子ファイルの対応するコンポーネントのサイズよりも前記サイズが小さい場合、前記第1メモリ・エリアの元のメモリ・ブロックを予約することを含み、前記元のメモリ・ブロックは、前記元の電子ファイルの対応するコンポーネントを含む、方法。
  11. 請求項10記載の方法において、識別および予約するステップは、前記サイズが前記元の電子ファイルの対応するコンポーネントのサイズを超過する場合、前記第2メモリ・エリアと前記第1メモリ・エリアの未使用部分との少なくとも一方を探索して、前記受信したコンポーネントを格納できる十分大きなメモリ・ブロックを求めることを含む、方法。
  12. 請求項8記載の方法において、前記第1メモリ・エリアの書き換えおよび前記第2メモリ・エリアの再分配のステップは、更に、
    前記第1エリアの未使用メモリ・ブロックに対応する少なくとも1つのエントリを含む第2テーブルを読み取り、
    前記第1メモリ・エリアのコンポーネントを順次パックし、前記未使用メモリ・ブロックを統合するために、前記第1メモリ・エリアのコンポーネントを書き換え、
    前記第2メモリ・エリアの各コンポーネントのサイズを順次評価し、前記第2メモリ・エリアのコンポーネントを、前記第2メモリ・エリアの前記コンポーネントのサイズおよび前記統合した未使用メモリ・ブロックのサイズが許す、前記第1メモリ・エリアに再書き込みし、
    前記順次評価および再書き込みに続いて、前記統合した未使用メモリ・ブロックの残りのブロックを識別し、
    前記統合した未使用メモリ・ブロックの残りのブロックを、前記第2メモリ・エリアの一部として指定することによって、前記第2メモリ・エリアを再分配し、
    前記再分配した第2メモリ・エリアの使用可能なメモリの開始アドレスを維持するために、前記第2メモリ・エリアのポインタを設定することを含む、方法。
  13. 請求項12記載の方法において、前記第2テーブルのエントリは、リード・オンリ・メモリ(ROM)番号、開始アドレス、およびサイズを含む前記未使用メモリ・ブロックの情報を含む、方法。
  14. 請求項8記載の方法であって、更に、
    前記ホスト・デバイスの主プログラムからの関数コールを受け、該関数コールが対応する電子ファイルの識別情報を含み、
    前記対応する電子ファイルの開始アドレスをベクトル・テーブルから読み出し、
    前記開始アドレスおよび前記識別情報を用いて、前記対応する電子ファイルに対するコールを発生することによって、
    前記ホスト・デバイスの電子ファイルによって与えられる機能にアクセスするステップを含む、方法。
  15. ファイル更新中におけるデバイス・メモリ管理方法であって、
    受信コンポーネントの識別情報を用いて、新たな電子ファイルの少なくとも1つの受信コンポーネントのサイズを判定するステップであって、前記新たな電子ファイルが、元の電子ファイルの更新バージョンである、ステップと、
    前記サイズが前記元の電子ファイルの対応するコンポーネントのサイズ以下である場合、前記受信コンポーネントを書き込む、第1メモリ・エリアの元のメモリ・ブロックを割り当て、前記元のメモリ・ブロックが前記元の電子ファイルの対応するコンポーネントを含む、ステップと、
    前記サイズが前記元の電子ファイルの対応するコンポーネントのサイズを超過する場合、第2メモリ・エリアと前記第1メモリ・エリアの未使用部分とを探索して、前記受信コンポーネントを格納できる十分に大きなメモリ・ブロックを求めるステップと、
    前記サイズが前記第1および第2メモリ・エリアの使用可能なメモリ・ブロックのサイズを超過する場合、未使用部分を除去するように前記第1メモリ・エリアを書き換え、前記第1および第2メモリ・エリアを再分配し、前記受信コンポーネントを書き込む、前記第2メモリ・エリアのメモリ・ブロックを割り当てるステップと、
    を備えた方法。
  16. 請求項15記載の方法において、前記第1メモリ・エリアの書き換えは、更に、
    前記第1メモリ・エリアの未使用部分に対応する少なくとも1つのエントリを含むテーブルを読み込み、
    前記第1メモリ・エリアのコンポーネントを順次パックし、前記未使用メモリ・ブロックを統合するために、前記第1メモリ・エリアのコンポーネントを書き直すことを含む、方法。
  17. 請求項15記載の方法において、前記第1および第2メモリ・エリアを再分配するステップは、更に、
    前記第2メモリ・エリアの各コンポーネントのサイズを順次評価し、前記第2メモリ・エリアの前記コンポーネントのサイズおよび前記書き換えた第2メモリ・エリアの統合した未使用メモリ・ブロックのサイズが許すとき、前記第2メモリ・エリアのコンポーネントを前記書き換えた第1メモリ・エリアに書き込み、
    前記順次評価および書き込みに続いて、前記統合した未使用メモリ・ブロックの残りのブロックを特定し、
    前記統合した未使用メモリ・ブロックの残りのブロックを前記第2メモリ・エリアの一部として指定することにより、前記第1および第2メモリ・エリアを再分配し、
    前記再分配した第2メモリ・エリアの使用可能なメモリの開始アドレスを維持するために、前記第2メモリ・エリアのポインタを設定し、
    前記テーブルを評価すること、
    を含む、方法。
  18. 電子デバイスのメモリを管理する方法であって、
    新電子ファイルの少なくとも1つの新コンポーネントを受信し、該新電子ファイルは、元の電子ファイルの更新バージョンであり、
    第1および第2メモリ・エリアの順次探索を行うことによって、前記受信したコンポーネントを収容することができる十分大きなメモリ・ブロックを識別し予約し、未使用メモリ・ブロックを排除するように前記第1メモリ・エリアを書き換え、前記サイズが前記第1および第2メモリ・エリアの使用可能メモリ・ブロックのサイズを超過する場合、前記第1および第2メモリ・エリアを再分配し、
    前記新コンポーネントを予約したメモリ・ブロックに書き込み、
    前記新コンポーネントを、前記元の電子ファイルの対応するコンポーネントを含む元のメモリ・ブロック以外のメモリ・ブロックに書き込んだときに、ベクトル・テーブルを更新することによって、
    前記デバイスの電子ファイルを更新するステップと、
    前記デバイスの主プログラムからの関数コールを受け、前記関数コールは対応する電子ファイルの識別情報を含み、
    前記ベクトル・テーブルから前記対応する電子ファイルの開始アドレスを読み取り、
    前記開始アドレスおよび前記識別情報を用いて、前記対応する電子ファイルに対するコールを生成することによって、
    前記デバイスの電子ファイルにアクセスするステップと、
    を備えた方法。
  19. 請求項18記載の方法において、前記識別情報は、関数識別、および該関数に対する引数を含む、方法。
  20. 新電子ファイルの少なくとも1つの新コンポーネントを受信する手段であって、該新電子ファイルは、元の電子ファイルの更新バージョンである、手段と、
    第1および第2メモリ・エリアの順次探索を行うことによって、前記受信したコンポーネントを収容することができる十分大きなメモリ・ブロックを識別し予約する手段であって、未使用メモリ・ブロックを排除するように前記第1メモリ・エリアを書き換え、前記サイズが前記第1および第2メモリ・エリアの使用可能メモリ・ブロックのサイズを超過する場合、前記第1および第2メモリ・エリアを再分配する、手段と、
    前記新コンポーネントを前記予約したメモリ・ブロックに書き込むことによって、前記元の電子ファイルを更新する手段と、
    前記新コンポーネントを、前記元の電子ファイルの対応するコンポーネントを含む元のメモリ・ブロック以外のメモリ・ブロックに書き込む場合、ベクトル・テーブルを更新する手段と、
    を備えている装置。
  21. 請求項20記載の装置において、該装置は、パーソナル・コンピュータ、携帯用計算機、セルラ電話機、携帯用通信デバイス、およびパーソナル・ディジタル・アシスタントの中から選択した、少なくとも1つのプロセッサに基づくデバイスを含む、装置。
  22. 請求項20記載の装置において、前記メモリ・ブロックを識別し予約する手段は、第1アプリケーション・プログラミング・インターフェース(API)である、装置。
  23. 請求項20記載の装置であって、更に、
    前記デバイスの主プログラムから関数コールを受け取る手段であって、該関数コールは、対応する電子ファイルの識別情報を含む、手段と、
    前記ベクトル・テーブルから前記対応する電子ファイルの開始アドレスを読み取る手段と、
    前記開始アドレスおよび前記識別情報を用いて、前記対応する電子ファイルに対するコールを発生する手段と、
    を含む、装置。
  24. 請求項23記載の装置において、関数コールを受け取る前記手段は、第2アプリケーション・プログラミング・インターフェース(API)である、装置。
  25. 実行可能な命令を含むコンピュータ読み取り可能媒体であって、処理システムにおいて実行すると、
    新電子ファイルの少なくとも1つの受信コンポーネントの識別情報を受信し、前記新電子ファイルは、元の電子ファイルの更新バージョンであり、前記識別情報は前記受信したコンポーネントのサイズを含み、
    第1および第2メモリ・エリアの順次探索を行うことによって、前記受信したコンポーネントを収容することができる十分大きなメモリ・ブロックを識別し予約し、未使用メモリ・ブロックを排除するように前記第1メモリ・エリアを書き換え、前記サイズが前記第1および第2メモリ・エリアの使用可能メモリ・ブロックのサイズを超過する場合、前記第1および第2メモリ・エリアを再分配し、
    前記予約したメモリ・ブロックのアドレスを与え、
    前記受信したコンポーネントを前記予約メモリ・ブロックに書き込むことによって、前記元の電子ファイルを更新する、
    ことによって電子ファイルおよびファイル・コンポーネントを更新する、コンピュータ読み取り可能媒体。
  26. 実行可能な命令を含む電磁媒体であって、処理システムにおいて実行すると、
    新電子ファイルの少なくとも1つの受信コンポーネントの識別情報を受信し、前記新電子ファイルは、元の電子ファイルの更新バージョンであり、前記識別情報は前記受信したコンポーネントのサイズを含み、
    第1および第2メモリ・エリアの順次探索を行うことによって、前記受信したコンポーネントを収容することができる十分大きなメモリ・ブロックを識別し予約し、未使用メモリ・ブロックを排除するように前記第1メモリ・エリアを書き換え、前記サイズが前記第1および第2メモリ・エリアの使用可能メモリ・ブロックのサイズを超過する場合、前記第1および第2メモリ・エリアを再分配し、
    前記予約したメモリ・ブロックのアドレスを与え、
    前記受信したコンポーネントを前記予約メモリ・ブロックに書き込むことによって、前記元の電子ファイルを更新する、
    ことによって電子ファイルおよびファイル・コンポーネントを更新する、電磁媒体。
  27. 電子ファイルの更新システムであって、
    デルタ・ファイルを生成する、ファイル差別化および更新システムの第1コンポーネントを含む第1デバイスと、
    前記第1デバイスから前記第1デルタ・ファイルを少なくとも1つの結合部を介して受け取る第2デバイスであって、前記ファイル差別化および更新システムの第2コンポーネントを含む第2デバイスと、
    を備えており、
    前記デルタ・ファイルを通じて新電子ファイルの少なくとも1つのコンポーネントを受信し、前記新電子ファイルは、元の電子ファイルの更新バージョンであり、
    前記受信したコンポーネントのサイズを判定し、
    前記サイズが前記元の電子ファイルの対応するコンポーネントのサイズ以下である場合、前記受信したコンポーネントを、前記元の電子ファイルの対応するコンポーネントを含む元のメモリ・エリアに書き込み、
    前記サイズが前記元の電子ファイルの対応するコンポーネントのサイズを超過する場合、前記受信したコンポーネントを、前記元のメモリ・エリアと関連付けられた予約メモリ・エリアに書き込む、
    ことにより前記第2デバイスの電子ファイルを更新するように構成されている、システム。
  28. 電子ファイルの更新方法であって、
    新電子ファイルの少なくとも1つのコンポーネントを受信するステップであって、前記新電子ファイルは、元の電子ファイルの更新バージョンである、ステップと、
    前記受信したコンポーネントのサイズを判定するステップと、
    前記サイズが前記元の電子ファイルの対応するコンポーネントのサイズ以下である場合、前記受信したコンポーネントを、前記元の電子ファイルの対応するコンポーネントを含む元のメモリ・エリアに書き込むステップと、
    前記サイズが前記元の電子ファイルの対応するコンポーネントのサイズを超過する場合、前記受信したコンポーネントを、前記元のメモリ・エリアと関連付けられた予約メモリ・エリアに書き込むステップと、
    を備えた方法。
  29. 請求項28記載の方法において、前記少なくとも1つの成分は、コンポーネントのグループを含む、方法。
  30. 新電子ファイルの少なくとも1つのコンポーネントを受信する手段であって、前記新電子ファイルは、元の電子ファイルの更新バージョンである、手段と、
    前記受信したコンポーネントのサイズを判定する手段と、
    前記サイズが前記元の電子ファイルの対応するコンポーネントのサイズ以下である場合、前記受信したコンポーネントを、前記元の電子ファイルの対応するコンポーネントを含む元のメモリ・エリアに書き込む手段と、
    前記サイズが前記元の電子ファイルの対応するコンポーネントのサイズを超過する場合、前記受信したコンポーネントを、前記元のメモリ・エリアと関連付けられた予約メモリ・エリアに書き込む手段と、
    を備えている、装置。
JP2004553945A 2002-11-18 2003-11-18 電子ファイル更新中におけるデバイス・メモリ管理 Expired - Fee Related JP4409438B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/298,458 US7007049B2 (en) 2002-11-18 2002-11-18 Device memory management during electronic file updating
PCT/US2003/037001 WO2004046910A1 (en) 2002-11-18 2003-11-18 Device memory management during electronic file updating

Publications (3)

Publication Number Publication Date
JP2006506747A true JP2006506747A (ja) 2006-02-23
JP2006506747A5 JP2006506747A5 (ja) 2009-10-22
JP4409438B2 JP4409438B2 (ja) 2010-02-03

Family

ID=32297458

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004553945A Expired - Fee Related JP4409438B2 (ja) 2002-11-18 2003-11-18 電子ファイル更新中におけるデバイス・メモリ管理

Country Status (7)

Country Link
US (2) US7007049B2 (ja)
EP (1) EP1570340A4 (ja)
JP (1) JP4409438B2 (ja)
KR (1) KR20050086687A (ja)
CN (1) CN1781075B (ja)
AU (1) AU2003295668A1 (ja)
WO (1) WO2004046910A1 (ja)

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN1650256B (zh) * 2002-04-01 2010-04-28 株式会社Ntt都科摩 通信终端的软件更新方法、通信终端以及软件更新系统
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US6836657B2 (en) * 2002-11-12 2004-12-28 Innopath Software, Inc. Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade
US7003534B2 (en) * 2002-11-18 2006-02-21 Innopath Software, Inc. Generating difference files using module information of embedded software components
US7844734B2 (en) * 2002-11-18 2010-11-30 Innopath Software, Inc. Dynamic addressing (DA) using a centralized DA manager
US20040098421A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Scheduling updates of electronic files
US7320010B2 (en) * 2002-11-18 2008-01-15 Innopath Software, Inc. Controlling updates of electronic files
US20040098361A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Managing electronic file updates on client devices
US7099884B2 (en) * 2002-12-06 2006-08-29 Innopath Software System and method for data compression and decompression
US7206910B2 (en) * 2002-12-17 2007-04-17 Oracle International Corporation Delta object replication system and method for clustered system
US7257873B2 (en) * 2003-01-31 2007-08-21 Laivins Kenneth T Method for manufacturing hand guards
US7320009B1 (en) * 2003-03-28 2008-01-15 Novell, Inc. Methods and systems for file replication utilizing differences between versions of files
JP4100241B2 (ja) * 2003-04-24 2008-06-11 ソニー株式会社 情報処理装置、情報処理方法、プログラム、記憶媒体
US7349929B2 (en) * 2003-04-25 2008-03-25 Sap Ag Accessing data based on user identity
US7757261B2 (en) * 2003-06-20 2010-07-13 N2 Broadband, Inc. Systems and methods for providing flexible provisioning architectures for a host in a cable system
US20040261092A1 (en) * 2003-06-20 2004-12-23 N2 Broadband, Inc. Systems and methods for selling a consumer electronics host device and enhanced services associated with a cable system
US7627868B2 (en) * 2003-06-20 2009-12-01 N2 Broadband, Inc. Systems and methods for distributing software for a host device in a cable system
US7089270B2 (en) * 2003-06-20 2006-08-08 Innopath Software Processing software images for use in generating difference files
US7958505B2 (en) * 2003-06-20 2011-06-07 Ericsson Television, Inc Systems and methods for distributing software for a host device in a cable system
US7194756B2 (en) * 2003-06-20 2007-03-20 N2 Broadband, Inc. Systems and methods for provisioning a host device for enhanced services in a cable system
GB2403303B (en) * 2003-06-23 2005-08-17 Matsushita Electric Ind Co Ltd Embedded device with software registry
US20050010576A1 (en) * 2003-07-09 2005-01-13 Liwei Ren File differencing and updating engines
US7031972B2 (en) 2003-07-21 2006-04-18 Innopath Software, Inc. Algorithms for block-level code alignment of software binary files
US20050020308A1 (en) * 2003-07-23 2005-01-27 David Lai Dynamically binding Subscriber Identity Modules (SIMs)/User Identity Modules (UIMs) with portable communication devices
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
KR100871778B1 (ko) * 2003-10-23 2008-12-05 이노패스 소프트웨어, 아이엔시. 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치
EP1530139A1 (en) * 2003-11-05 2005-05-11 Sap Ag Method and computer system for workflow management
US20050132357A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
US7614051B2 (en) * 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7568195B2 (en) * 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
JP4408692B2 (ja) * 2003-12-19 2010-02-03 富士通株式会社 通信装置管理プログラム
US8838754B1 (en) * 2004-01-26 2014-09-16 Qualcomm Incorporated Mobile device with a management forest in a device management network
US7694291B2 (en) * 2004-04-06 2010-04-06 Hewlett-Packard Development Company, L.P. Build optimizer tool for efficient management of software builds for mobile devices
US7739679B2 (en) * 2004-04-06 2010-06-15 Hewlett-Packard Development Company, L.P. Object ordering tool for facilitating generation of firmware update friendly binary image
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
US7689982B1 (en) * 2004-05-07 2010-03-30 Hewlett-Packard Development Company, L.P. Transparent linker profiler tool with profile database
JP4176043B2 (ja) * 2004-05-18 2008-11-05 三洋電機株式会社 データ記録方法およびデータ記録装置
WO2005124530A2 (en) 2004-06-21 2005-12-29 Kabushiki Kaisha Toshiba Method for controlling memory card and method for controlling nonvolatile semiconductor memory
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7516451B2 (en) 2004-08-31 2009-04-07 Innopath Software, Inc. Maintaining mobile device electronic files including using difference files when upgrading
WO2006052946A2 (en) * 2004-11-08 2006-05-18 Innopath Software, Inc. Static file system differencing and updating
KR100653179B1 (ko) * 2004-12-17 2006-12-04 한국전자통신연구원 플랫폼 동적 업그레이드 기능을 가지는 무선통신단말기 및그 방법
US7200390B1 (en) * 2004-12-30 2007-04-03 Cellco Partnership Device software update transport and download
US7483929B2 (en) * 2005-02-08 2009-01-27 Pro Softnet Corporation Systems and methods for storing, backing up and recovering computer data files
US8561049B2 (en) * 2005-08-23 2013-10-15 Red Bend Ltd. Method and system for updating content stored in a storage device
US20070078907A1 (en) * 2005-10-05 2007-04-05 Ming-Tsung Chiang Method for updating function of handheld apparatus through plug-and play (PnP) storage device
US8056072B2 (en) * 2005-10-31 2011-11-08 Microsoft Corporation Rebootless display driver upgrades
US8554748B1 (en) * 2005-11-30 2013-10-08 Netapp, Inc. Method and apparatus for differential file based update for embedded systems
KR100750169B1 (ko) * 2006-03-08 2007-08-21 삼성전자주식회사 델타 파일 생성 방법 및 이를 이용한 소프트웨어 업데이트방법
US8055096B2 (en) * 2006-05-10 2011-11-08 Research In Motion Limited Method and system for incremental patching of binary files
EP2025095A2 (en) 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Device management in a network
KR101426710B1 (ko) * 2006-07-14 2014-09-23 삼성전자주식회사 휴대단말기의 버전정보 갱신 장치 및 방법
US7788259B2 (en) * 2006-07-21 2010-08-31 Microsoft Corporation Locating, viewing and interacting with information sources
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
WO2008025017A2 (en) 2006-08-24 2008-02-28 Chumby Industries, Inc. Configurable personal audiovisual device for use in networked application-sharing system
KR101273914B1 (ko) * 2006-10-31 2013-06-12 에스케이플래닛 주식회사 플랫폼 라이브러리 다이나믹 링킹기능이구비된 단말장비 및 그 제어방법
US7769976B2 (en) * 2006-12-12 2010-08-03 International Business Machines Corporation Identifying code that wastes virtual memory
US7958331B2 (en) * 2006-12-13 2011-06-07 Seagate Technology Llc Storage device with opportunistic address space
US20080154986A1 (en) * 2006-12-22 2008-06-26 Storage Technology Corporation System and Method for Compression of Data Objects in a Data Storage System
KR100860753B1 (ko) * 2007-01-03 2008-09-29 삼성전자주식회사 펌웨어 업그레이드를 위한 장치 및 방법
US9449047B2 (en) 2007-06-19 2016-09-20 Sybase, Inc. Dynamic modification of schemas in streaming databases
FR2918191B1 (fr) * 2007-06-28 2010-02-26 Wavecom Procede de programmation in situ d'au moins un moyen de stockage non volatile d'un dispositif de communication sans fil, equipement de programmation et paquet a telecharger correspondants.
EP2015561A1 (fr) * 2007-07-10 2009-01-14 Nagracard S.A. Procédé d'envoi d'un code exécutable à un dispositif de réception et procédé d'exécution de ce code
TWI344288B (en) * 2007-07-23 2011-06-21 Arcadyan Technology Corp Embedded system with web-based user interface, firmware structure thereof, and method for providing information thereof
US8745012B2 (en) * 2007-08-10 2014-06-03 Sybase, Inc. Log-structured store for streaming data
US8255899B2 (en) * 2007-10-24 2012-08-28 Oracle International Corporation Techniques for upgrade dependency management
JP2009271848A (ja) * 2008-05-09 2009-11-19 Fujitsu Microelectronics Ltd ファイルシステム及びデータ管理方法
US20110161931A1 (en) * 2009-12-31 2011-06-30 International Business Machines Corporation Automated stream-based change flows within a software configuration management system
CN102129375B (zh) * 2010-01-12 2014-07-02 中国移动通信集团公司 一种移动终端系统升级的方法和设备
US9176744B2 (en) * 2011-05-20 2015-11-03 Citrix Systems, Inc. Quickly provisioning a virtual machine by identifying a path to a differential file during pre-boot
CN102231671B (zh) * 2011-06-01 2014-12-31 上海聚力传媒技术有限公司 用于对待升级对象进行升级的方法、装置、设备和系统
US9026718B2 (en) * 2012-06-11 2015-05-05 Samsung Electronics Co., Ltd. Method and apparatus for fault tolerant FOTA update with single backup block write
US8813061B2 (en) * 2012-10-17 2014-08-19 Movimento Group Module updating device
US9128798B2 (en) 2012-10-17 2015-09-08 Movimento Group Module updating device
US8949556B2 (en) 2012-12-10 2015-02-03 International Business Machines Corporation Cloud management of device memory based on geographical location
US20150215374A1 (en) * 2013-03-13 2015-07-30 Google Inc. Delivering an update for a web application
GB2516435A (en) * 2013-04-05 2015-01-28 Continental Automotive Systems Embedded memory management scheme for real-time applications
CN105378709A (zh) 2013-04-18 2016-03-02 鲁斯兰·阿尔伯特维奇·施格布特蒂诺夫 由移动计算设备进行文件管理的系统和方法
CN103336703B (zh) * 2013-07-08 2018-09-18 惠州Tcl移动通信有限公司 生成升级包的方法、服务器、软件升级方法、移动终端
US9639548B2 (en) * 2013-10-28 2017-05-02 Pivotal Software, Inc. Selecting files for compaction
US9639544B1 (en) * 2013-10-28 2017-05-02 Pivotal Software, Inc. Table data persistence
US10163179B2 (en) 2015-03-27 2018-12-25 Intel Corporation Method and apparatus for intelligent cloud-based graphics updates
CN104935469A (zh) * 2015-06-30 2015-09-23 浪潮(北京)电子信息产业有限公司 一种日志信息分布式存储方法及系统
CN106708548A (zh) * 2015-11-13 2017-05-24 阿里巴巴集团控股有限公司 程序升级方法和终端设备
CN105278998A (zh) * 2015-11-17 2016-01-27 北京联合众为科技发展有限公司 一种单片机固件升级方法
JP6609199B2 (ja) * 2016-03-01 2019-11-20 ルネサスエレクトロニクス株式会社 組込み機器
US10309792B2 (en) 2016-06-14 2019-06-04 nuTonomy Inc. Route planning for an autonomous vehicle
US11092446B2 (en) 2016-06-14 2021-08-17 Motional Ad Llc Route planning for an autonomous vehicle
US10126136B2 (en) 2016-06-14 2018-11-13 nuTonomy Inc. Route planning for an autonomous vehicle
US10829116B2 (en) 2016-07-01 2020-11-10 nuTonomy Inc. Affecting functions of a vehicle based on function-related information about its environment
CN106250188B (zh) * 2016-07-29 2019-08-23 捷开通讯(深圳)有限公司 一种系统固件映像文件的生成方法及系统
US10857994B2 (en) 2016-10-20 2020-12-08 Motional Ad Llc Identifying a stopping place for an autonomous vehicle
US10473470B2 (en) 2016-10-20 2019-11-12 nuTonomy Inc. Identifying a stopping place for an autonomous vehicle
US10331129B2 (en) 2016-10-20 2019-06-25 nuTonomy Inc. Identifying a stopping place for an autonomous vehicle
US10681513B2 (en) 2016-10-20 2020-06-09 nuTonomy Inc. Identifying a stopping place for an autonomous vehicle
CN111373367A (zh) * 2017-09-07 2020-07-03 惠普发展公司,有限责任合伙企业 操作系统更新
CN110083381B (zh) * 2018-01-26 2023-04-28 启碁科技股份有限公司 增量升级的方法及装置
CN111124465B (zh) * 2019-11-28 2023-06-20 武汉虹信技术服务有限责任公司 一种跨网络c/s程序远程升级方法及系统
CN111045714B (zh) * 2019-12-19 2022-03-01 歌尔股份有限公司 一种固件更新方法、装置、耳机及计算机可读存储介质
KR102337703B1 (ko) * 2020-02-11 2021-12-13 한국조선해양 주식회사 용접기용 네트워크 카드를 포함한 디지털 용접기
CN111885412B (zh) * 2020-07-06 2022-08-09 深圳市宝泽科技有限公司 Hdmi信号传屏方法及无线传屏器
KR102448453B1 (ko) * 2020-11-11 2022-09-28 주식회사 엘지유플러스 전자 디바이스 및 펌웨어 업데이트 방법
US11693643B2 (en) * 2021-08-05 2023-07-04 Accenture Global Solutions Limited Network-based solution module deployment platform
CN113867818B (zh) * 2021-09-28 2024-04-16 潍柴动力股份有限公司 一种ini文件的生成方法、装置、计算机设备及介质
CN115878140A (zh) * 2021-09-29 2023-03-31 华为技术有限公司 应用升级方法、装置、网卡和设备

Family Cites Families (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4875159A (en) 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
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
US5444764A (en) * 1993-07-01 1995-08-22 Motorola, Inc. Method of providing a subscription lock to a radiotelephone system
US5806078A (en) 1994-06-09 1998-09-08 Softool Corporation Version management system
US5742905A (en) * 1994-09-19 1998-04-21 Bell Communications Research, Inc. Personal communications internetworking
US5634052A (en) * 1994-10-24 1997-05-27 International Business Machines Corporation System for reducing storage requirements and transmission loads in a backup subsystem in client-server environment by transmitting only delta files from client to server
US5574906A (en) 1994-10-24 1996-11-12 International Business Machines Corporation System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing
US5729735A (en) * 1995-02-08 1998-03-17 Meyering; Samuel C. Remote database file synchronizer
US5778426A (en) * 1995-10-23 1998-07-07 Symbios, Inc. Methods and structure to maintain a two level cache in a RAID controller and thereby selecting a preferred posting method
US5729743A (en) * 1995-11-17 1998-03-17 Deltatech Research, Inc. Computer apparatus and method for merging system deltas
US5864757A (en) * 1995-12-12 1999-01-26 Bellsouth Corporation Methods and apparatus for locking communications devices
US5758062A (en) * 1996-04-30 1998-05-26 Oracle Corporation Method and apparatus for regression testing of application logic
US5832520A (en) * 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
US6308061B1 (en) 1996-08-07 2001-10-23 Telxon Corporation Wireless software upgrades with version control
US5850565A (en) 1996-08-26 1998-12-15 Novell, Inc. Data compression method and apparatus
US6374250B2 (en) * 1997-02-03 2002-04-16 International Business Machines Corporation System and method for differential compression of data from a plurality of binary sources
AU8397298A (en) 1997-07-15 1999-02-10 Pocket Soft, Inc. System for finding differences between two computer files and updating the computer files
EP1008048B1 (en) 1997-08-29 2001-10-31 Hewlett-Packard Company Data backup and recovery systems
US6157924A (en) * 1997-11-07 2000-12-05 Bell & Howell Mail Processing Systems Company Systems, methods, and computer program products for delivering information in a preferred medium
US6041333A (en) * 1997-11-14 2000-03-21 Microsoft Corporation Method and apparatus for automatically updating a data file from a network
US6018747A (en) 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US6076148A (en) * 1997-12-26 2000-06-13 Emc Corporation Mass storage subsystem and backup arrangement for digital data processing system which permits information to be backed up while host computer(s) continue(s) operating in connection with information stored on mass storage subsystem
US6035423A (en) 1997-12-31 2000-03-07 Network Associates, Inc. Method and system for providing automated updating and upgrading of antivirus applications using a computer network
US6078967A (en) * 1998-02-25 2000-06-20 Hewlett-Packard Company System for upgrading functionality of a peripheral device utilizing a removable ROM having relocatable object code
US6052531A (en) 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US20010049263A1 (en) 1998-03-26 2001-12-06 Xiang Zhang Automatic station/system configuration monitoring and error tracking system and software upgrade tool kit
US6088694A (en) * 1998-03-31 2000-07-11 International Business Machines Corporation Continuous availability and efficient backup for externally referenced objects
US6226728B1 (en) * 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
US6216175B1 (en) * 1998-06-08 2001-04-10 Microsoft Corporation Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations
US6233589B1 (en) 1998-07-31 2001-05-15 Novell, Inc. Method and system for reflecting differences between two files
EP0981099A3 (en) 1998-08-17 2004-04-21 Connected Place Limited A method of and an apparatus for merging a sequence of delta files
US6167258A (en) * 1998-10-09 2000-12-26 Cleveland Medical Devices Inc. Programmable wireless data acquisition system
US6226784B1 (en) * 1998-10-14 2001-05-01 Mci Communications Corporation Reliable and repeatable process for specifying developing distributing and monitoring a software system in a dynamic environment
US6145012A (en) * 1998-10-14 2000-11-07 Veritas Software Corporation Apparatus and method for efficiently updating files in computer networks
US6163811A (en) * 1998-10-21 2000-12-19 Wildseed, Limited Token based source file compression/decompression and its application
US6457175B1 (en) * 1998-11-09 2002-09-24 Tut Systems, Inc. Method and apparatus for installing a software upgrade within a memory resource associated with a computer system
US6327671B1 (en) * 1998-11-18 2001-12-04 International Business Machines Corporation Delta compressed asynchronous remote copy
US6349311B1 (en) 1999-02-01 2002-02-19 Symantec Corporation Storage of reverse delta updates
US6594822B1 (en) 1999-02-19 2003-07-15 Nortel Networks Limited Method and apparatus for creating a software patch by comparing object files
US6401239B1 (en) 1999-03-22 2002-06-04 B.I.S. Advanced Software Systems Ltd. System and method for quick downloading of electronic files
US6466999B1 (en) * 1999-03-31 2002-10-15 Microsoft Corporation Preprocessing a reference data stream for patch generation and compression
US6654746B1 (en) * 1999-05-03 2003-11-25 Symantec Corporation Methods and apparatuses for single-connection file synchronization workgroup file update
US6574657B1 (en) 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
IL129947A (en) 1999-05-13 2003-06-24 Tadiran Telecom Business Syste Method and apparatus for downloading software into an embedded system
AU2001229332A1 (en) * 2000-01-10 2001-07-24 Connected Corporation Administration of a differential backup system in a client-server environment
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6694336B1 (en) * 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
JP2003525495A (ja) 2000-03-01 2003-08-26 コンピュータ アソシエイツ シンク,インコーポレイテッド コンピュータ・ファイルのアーカイブを更新する方法及びシステム
US6651190B1 (en) 2000-03-14 2003-11-18 A. Worley Independent remote computer maintenance device
US6662163B1 (en) * 2000-03-30 2003-12-09 Voxware, Inc. System and method for programming portable devices from a remote computer system
US6775423B2 (en) 2000-05-03 2004-08-10 Microsoft Corporation Systems and methods for incrementally updating an image in flash memory
US6898564B1 (en) * 2000-05-23 2005-05-24 Microsoft Corporation Load simulation tool for server resource capacity planning
US6535894B1 (en) 2000-06-01 2003-03-18 Sun Microsystems, Inc. Apparatus and method for incremental updating of archive files
AU2001272970A1 (en) 2000-06-22 2002-01-02 Synchrologic, Inc. A system and method for file transmission using file differentiation
US6795834B2 (en) * 2000-06-26 2004-09-21 Fujitsu Limited Apparatus, method, and storage medium for file management
US6669564B1 (en) * 2000-06-27 2003-12-30 Electronic Arts Inc. Episodic delivery of content
GB2369213B (en) * 2000-07-04 2005-02-23 Honda Motor Co Ltd Electronic file management system
US6470329B1 (en) 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US20020120697A1 (en) * 2000-08-14 2002-08-29 Curtis Generous Multi-channel messaging system and method
KR100602394B1 (ko) 2000-08-15 2006-07-20 시게이트 테크놀로지 엘엘씨 동작 코드용 듀얼 모드 데이터 압축 방법
US6754816B1 (en) * 2000-10-26 2004-06-22 Dell Products L.P. Scalable environmental data calculation method customized by system configuration
US7058941B1 (en) * 2000-11-14 2006-06-06 Microsoft Corporation Minimum delta generator for program binaries
KR100520058B1 (ko) * 2000-12-13 2005-10-11 삼성전자주식회사 디바이스드라이버 업그레이드 시스템 및 디바이스드라이버업그레이드 방법
US6954765B2 (en) * 2000-12-30 2005-10-11 Intel Corporation Updating a file in a fragmented file system
US20020099726A1 (en) * 2001-01-23 2002-07-25 International Business Machines Corporation Method and system for distribution of file updates
US6928456B2 (en) * 2001-03-06 2005-08-09 Intel Corporation Method of tracking objects for application modifications
US20020129107A1 (en) * 2001-03-12 2002-09-12 Loughran Stephen A. Method and apparatus for automatic content handling
US6442660B1 (en) 2001-03-21 2002-08-27 Sharp Laboratories Of America, Inc. Dynamic system relocation based on availability of system memory
US6912591B2 (en) 2001-05-02 2005-06-28 Science Application International Corporation System and method for patch enabled data transmissions
EP1445888A4 (en) * 2001-10-12 2010-07-07 Panasonic Corp CONTENT PROCESSING APPARATUS AND CONTENT PROTECTION PROGRAM
US7483970B2 (en) 2001-12-12 2009-01-27 Symantec Corporation Method and apparatus for managing components in an IT system
US7600021B2 (en) * 2002-04-03 2009-10-06 Microsoft Corporation Delta replication of source files and packages across networked resources
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US20040031027A1 (en) * 2002-08-08 2004-02-12 Hiltgen Daniel K. System for updating diverse file versions
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US6836657B2 (en) * 2002-11-12 2004-12-28 Innopath Software, Inc. Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade
US7320010B2 (en) * 2002-11-18 2008-01-15 Innopath Software, Inc. Controlling updates of electronic files
US20040098421A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Scheduling updates of electronic files
US20040098361A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Managing electronic file updates on client devices
US7003534B2 (en) * 2002-11-18 2006-02-21 Innopath Software, Inc. Generating difference files using module information of embedded software components
US7099884B2 (en) * 2002-12-06 2006-08-29 Innopath Software System and method for data compression and decompression
US20040193643A1 (en) 2003-03-27 2004-09-30 O'brien John C. Method and system for tracking contracts
US20050010870A1 (en) * 2003-07-09 2005-01-13 Jinsheng Gu Post-processing algorithm for byte-level file differencing
US20050010576A1 (en) * 2003-07-09 2005-01-13 Liwei Ren File differencing and updating engines
US7379884B2 (en) * 2003-09-11 2008-05-27 International Business Machines Corporation Power on demand tiered response time pricing

Also Published As

Publication number Publication date
CN1781075A (zh) 2006-05-31
US7007049B2 (en) 2006-02-28
WO2004046910A1 (en) 2004-06-03
US7779055B2 (en) 2010-08-17
EP1570340A1 (en) 2005-09-07
US20040098427A1 (en) 2004-05-20
AU2003295668A1 (en) 2004-06-15
US20050257023A1 (en) 2005-11-17
CN1781075B (zh) 2010-09-01
JP4409438B2 (ja) 2010-02-03
KR20050086687A (ko) 2005-08-30
EP1570340A4 (en) 2008-03-12

Similar Documents

Publication Publication Date Title
JP4409438B2 (ja) 電子ファイル更新中におけるデバイス・メモリ管理
US7096311B2 (en) Updating electronic files using byte-level file differencing and updating algorithms
US7313577B2 (en) Generating difference files using module information of embedded software components
KR100871778B1 (ko) 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치
US9092293B2 (en) Method and system for selecting a program for download
US7844734B2 (en) Dynamic addressing (DA) using a centralized DA manager
EP1669866A2 (en) Management method for managing software module and information processor
KR20050089072A (ko) 모바일 장치들 상의 라이브러리들을 공유하기 위한 방법 및장치
KR101856486B1 (ko) 컴퓨팅 디바이스에서 수행되는 오픈 시스템과 메인프레임 시스템 사이의 양방향 호출 방법
US9392051B2 (en) Application distribution supplying a dedicated application to a terminal from an application deposited by the developer
KR101432989B1 (ko) 분리 실행 기반의 컨텐츠용 코드 블록 제공 시스템, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체
CN107797818A (zh) 应用程序升级方法及装置
CN106569880A (zh) 一种Android应用间动态共享资源的方法及系统
CN101411165B (zh) 利用代理服务器控制嵌入式设备与外部的通信的方法和设备
CN101382898B (zh) Pre-os应用程序升级和许可控制
WO2005074621A2 (en) Dynamic addressing (da) using a centralized da manager
CN112379867B (zh) 一种基于模块化开发的嵌入式操作系统、方法及存储介质
CN116661844A (zh) 配置文件处理方法、应用程序更新方法、装置、服务器
KR20180116743A (ko) 컴퓨팅 디바이스에서 수행되는 오픈 시스템과 메인프레임 시스템 사이의 양방향 호출 방법
CN112445651A (zh) 一种文件复制方法、装置、设备及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060523

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20060811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090306

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090605

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090612

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090703

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090710

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090805

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090812

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20090907

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091013

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091111

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131120

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees