JP2007511816A - 集中daマネージャを用いた動的アドレシング(da) - Google Patents

集中daマネージャを用いた動的アドレシング(da) Download PDF

Info

Publication number
JP2007511816A
JP2007511816A JP2006536880A JP2006536880A JP2007511816A JP 2007511816 A JP2007511816 A JP 2007511816A JP 2006536880 A JP2006536880 A JP 2006536880A JP 2006536880 A JP2006536880 A JP 2006536880A JP 2007511816 A JP2007511816 A JP 2007511816A
Authority
JP
Japan
Prior art keywords
component
manager
components
upgrade
file
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
JP2006536880A
Other languages
English (en)
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 JP2007511816A publication Critical patent/JP2007511816A/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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Abstract

集中DAマネージャを用いて、関数コール、グローバル変数、および定数変数参照を、ソフトウェア・コードのコンポーネント間で管理する、ダイナミック・アドレシング(DA)を提供する。DAマネージャは、コンポーネントをリンクする過程の間に生成され、コードと共に、クライアント・デバイスのメモリにロードされる。1つのコンポーネントから別のコンポーネントへの参照を、各コンポーネントのアドレスと共に、DAマネージャに格納する。DAマネージャは、ソフトウェアの実行中、集中ルータ・リンク・コンポーネントとして作用するので、1つのコンポーネントから別のコンポーネントへの参照は、コンポーネント間で直接ではなく、DAマネージャを介して導かれる。したがって、メモリにおけるコンポーネントの位置変更が生ずるファイル・アップグレードの間、コンポーネントに対する変更がDAマネージャによって記録され、これによってコード内にあるコンポーネントに対する参照の完全性を維持する。

Description

開示する実施形態は、電子ファイルをアップグレードおよび維持する間におけるメモリ管理に関する。
関連出願
本願は、2003年10月23日に出願された米国特許出願第60/513,764号の優先権を主張する。また、本願は、2002年11月18日に出願された、米国特許出願第10/298,458号の一部継続出願でもあり、双方とも現在係属中である。
本願は、2002年5月13日に出願された米国特許出願第10/146,545号、2002年9月30日に出願された第10/261,153号、2002年11月12日に出願された第10/292,245号、2002年11月18日に出願された第10/298,393号、2003年7月9日に出願された第10/616,615号に関連がある。これらの全ては現在係属中である。
ソフトウェアは、殆どの電子デバイス上でホストされ実行し、人が読むことができる情報相互交換用米国規格コード(「ASCII」)平文テキスト・ファイルまたは二進コードの形式の1つ以上のファイルを含む。ホストされたソフトウェアは、プロセッサ即ち中央演算装置(「CPU」)上で実行し、ホスト・デバイス内において機能性を設けるが、時と共に変わっていくことが多い。ソフトウェアの変更は、ソフトウェア・ファイルにおけるバグ、即ち、誤りを訂正する必要性、発展する技術に合わせる必要性、または新たな特徴および機能を追加する必要性等、様々な必要性の結果生じる可能性がある。即ち、移動処理デバイス、例えば、移動ワイヤレス・デバイス上にホストされている埋め込みソフトウェア・コンポーネントは、多数のソフトウェア・バグを含むことが多く、訂正が必要である。
デバイスのソフトウェア即ちプログラムは、多くの場合モジュールまたはコンポーネントと呼ばれている小さい単位に分割されたソフトウェア・ファイルを含む。移動ワイヤレス・デバイスでは、リアル・タイム・オペレーティング・システム(「RTOS」)が用いられるのが通例であり、デバイスにホストされているソフトウェア・モジュールまたはコンポーネントは、単一の大型ファイルとしてリンクされている。この大型のソフトウェア・ファイルは、デバイスにロードされ、または埋め込まれ、通例ワイヤレス・デバイスのリード・オンリ・メモリ(「ROM」)またはフラッシュROMに格納する。
ワイヤレス・デバイスにホストされているソフトウェア・ファイルは、無線リンクのように、ワイヤレス通信リンクまたはオーバーディエア(「OTA」:overthe-air)リンクを用いて、誤りを訂正したり、または新たな機能を追加するために更新することができる。帯域幅、メモリ、およびワイヤレス・デバイスに関係するその他の制約のために、デバイスを販売によって放出した後に、ホストされているソフトウェアを更新するには、特殊な企業固有のアプリケーションが必要となる。これら企業固有のアプリケーションの一例には、カリフォルニア州AlvisoのInnopath Software,Inc.から入手可能なDeltaUpdateTMおよびDeltaRewriteTMと呼ばれる、アップグレードまたは更新のアプリケーションが含まれる。これらのアップグレード・アプリケーションは、関連出願の主題でもある。
ワイヤレス・デバイス用プログラムをデバイス・メモリに格納するには、通例、スタティック・アドレシングと呼ばれる方法を用いる。プログラムを書き込んだ後、これをコンピュータ読み取り可能コードにコンパイルし、その間にコードの異なるモジュールまたはコンポーネントをリンクする。その結果、画像またはメモリ画像と呼ばれるものが得られる。ここで、画像とは、ホスト・デバイスのROMに格納されている、機械語の実行可能命令セットである。これらのプログラムは、通例、命令の連続ストリームに編成されており、その一部は、ホスト・デバイスROMの他の部分にある命令への参照を有する。この連続的な相互接続アーキテクチャのため、ホスト・デバイスROM内にある特定のマシン・コードの場所は大抵固定であり、そのため「スタティック・アドレシング」という用語が生まれた。
OTAリンクを通じて受信したファイルを用いて、ホスト・デバイスのコードの一部分をアップグレードする場合、変更が小規模であっても、コードにおける参照を並び替えて(re-sequence)調節するためには、ホスト・デバイスROMの大部分を書き換える必要がある。このため、典型的な更新プロセスは、厄介で、誤りが生じやすく、時間がかかる。その結果、セルラ電話機やその他の移動通信デバイスのようなワイヤレス・デバイス、パーソナル・ディジタル・アシスタント(「PDA」)、およびパーソナル・コンピュータ上にホストされているソフトウェア・アプリケーションをアップグレードする際に用いるダイナミック・アドレシングが求められている。
図面においては、同じ参照番号は、同一または実質的に同様の要素または作用を識別する。いずれの個々の要素または作用の論述をも容易に識別するために、参照番号における最上位桁は、当該要素が最初に紹介される図番を示すこととする(例えば、要素26は、図1において始めて紹介され、図1に関して論じられるものとする)。
ここでは、ワイヤレス・ハンドセットまたは同様のクライアント・デバイス上にホストされているソフトウェアの更新に用いるダイナミック・アドレシングについて記載する。一実施形態のDAは、デバイス・メモリ内に格納されているコードを、関連するコンポーネントのグループに編成することを含む。この関連コンポーネントのことを、ここでは、埋め込みソフトウェア・コンポーネント「EBSC」)とも呼ぶ。あるコンポーネントから別のコンポーネントへのいずれの参照も特定して、集中および分離プログラムに、各コンポーネントの位置即ちアドレスと共に、格納する。このプログラムを、ここでは、「DAマネージャ」または「集中DAマネージャ」と呼ぶ。DAマネージャは、EBSCをリンクするプロセス中に生成され、クライアント・デバイス・プログラムと共に、クライアント・デバイス・メモリにロードされる。
動作において、DAマネージャは、全体的に、集中ルータまたはスイッチボードとして機能し、クライアント・デバイスの各EBSCのシンボル位置を把握し、クライアント・デバイス・プログラムの実行中に、必要に応じてEBSCをリンクする。あるEBSCから別のEBSCへのいずれの参照も、これらEBSC間で直接行われる代わりに、DAマネージャを介して導かれる。したがって、ファイル・アップグレードの最中にコンポーネントを修正し、アップグレードの結果、クライアント・デバイス・メモリにおいてEBSCの局所的な変化が生じた場合、この変化をDAマネージャが記録するので、クライアント・デバイス・プログラム内にあるEBSCへの参照即ち連結(linkage)の完全性を維持する。
その結果、DAマネージャは、クライアント・デバイス・メモリにおいてマシン・コードを編成する効率的で論理的な方法を設ける。一実施形態のDAマネージャは、マシン・コードの1つ以上の部分(EBSC)に対する追加、削除および修正を可能としつつ、クライアント・デバイス・メモリに格納されているコードの残り部分に波及したり影響を及ぼすことはない。対照的に、スタティック・アドレシングを用い、メモリに格納されているプログラムを変更し、この変更が新たな数行のコードの追加を含む場合、変更したコード以降にある全てのコードを、メモリ・レイアウトにおいてずらしていくことになる。このようにコードをずらすには、変更したコード内にあるあらゆる参照または連結に対しても変更が必要となる。このため、小規模なプログラムの変更が、クライアント・デバイス・メモリに格納されているマシン・コードの多くにおいて、対応する変更や補うための変更が生ずる可能性がある。
DAは、スタティック・アドレシングに伴う問題を回避する。何故なら、EBSCアドレスに対する変更は、DAマネージャにおいて一度だけ行えばよく、クライアント・デバイス・プログラムの全てにわたって行う必要はないからである。再アドレシングは一層効率的であるので、特定のブロックに割り当てられるクライアント・デバイス・メモリのエリアを縮小することもでき、クライアント・デバイスの利用可能なメモリの利用度が高まることになる。更に、アドレス変更の書き換えをDAマネージャのみに限定することによって、デバッグ、修正、およびその他のクライアント・デバイス・ソフトウェアのアップグレードは、遥かに短い時間で遂行される。この結果、効率が向上し、コストや失われる収益が大幅に低減する。また、典型的なスタティック・アドレシングで可能なソフトウェア・ダウンロードおよび更新よりも遥かに大きく複雑にすることができる。
以下の説明では、DAおよびDAマネージャの実施形態の完全な理解が得られ、実施可能な説明が得られるように、多数の具体的な詳細を導入する。しかしながら、DAおよびDAマネージャは、これら具体的な詳細の1つ以上がなくても、または他のコンポーネント、システム等を用いても実施可能であることを、当業者は認めよう。他方では、DAおよびDAマネージャの特徴面を曖昧にするのを避けるために、周知の構造や動作については図示も、詳細な説明も行わないこととする。
図1は、一実施形態の下における、DAマネージャを備えたクライアント・デバイスを含むシステム100のブロック図である。一実施形態のシステム100は、ファイル・アップグレード・システム100であるが、そのように限定されるのではない。概略的に、ファイル・アップグレード・システム100は、第1コンピュータ・システム102、即ち、ホスト・システムと、クライアント・デバイスまたはコンピュータ122を含む、1つ以上の第2コンピュータ・システムとを含む。ホスト・システム102およびクライアント・デバイス122は、各々、プログラム制御の下で動作する少なくとも1つのプロセッサ104および124をそれぞれ含むが、そのように限定されるのではない。ホスト・システム102およびクライアント・デバイス122は、通信路199を通じて通信する。これらのコンピュータ・システム102および122は、当技術分野では周知のように、共に動作する計算機のいずれの集合体でも含む。また、コンピュータ・システム102および122は、更に大きなコンピュータ・システム内にあるコンポーネントを含むこともできる。
ホスト・システム102のプロセッサ104は、プログラム制御の下で、データベース106およびファイル差別化アルゴリズム114の間を結合する。あるいは、ホスト・システム102の種々の他のコンポーネントが、プロセッサ104、データベース106、およびファイル差別化アルゴリズム114間を結合し、プログラム制御の下でファイル更新機能を備えることができる。1つのプロセッサ104、1つのデータベース106、および1つのファイル差別化アルゴリズム114を示すが、種々の代替実施形態では、当業者には想起される種々の構成に結合されたこれらのコンポーネントの各々が、いずれの数および/または形式でも含まれる。更に、プロセッサ104、データベース106、およびファイル差別化アルゴリズム114は、別個のブロックとして示されているが、これらのブロックの一部または全部をモノリシックに単一のチップに集積すること、多数のチップまたはホスト・システムのコンポーネント間で分散すること、および/またはアルゴリズムの何らかの組み合わせで備えることも可能である。ファイル差別化アルゴリズム114は、ソフトウェア・アルゴリズム(複数のソフトウェア・アルゴリズム)、ファームウェア、ハードウェア、ならびにソフトウェア、ファームウェア、およびハードウェアのいずれの組み合わせでも実現することができる。この中で全体的に用いている「プロセッサ」という用語は、1つ以上のCPU、ディジタル信号プロセッサ(「DSP」)、特定用途集積回路「ASIC」)等のような、いずれの論理処理ユニットをも意味するものとする。
同様に、一実施形態のクライアント・デバイス122は、プログラム制御の下で、デバイス・メモリ130間に結合されたプロセッサ124を含む。デバイス・メモリ130は、RTOS132(ここでは「主プログラム132」とも呼ぶ)、1つ以上の画像300、デバイス・メモリ・マネージャ(「DMM」)クライアント500(「DMMクライアント」)、およびアップグレード・クライアント126を含む。画像300は、ここではソフトウェア画像または二進画像とも呼ぶが、実行可能ファイルであり、1つ以上の埋め込みソフトウェア・コンポーネント(「EBSC」)EBSC1〜EBSCN、予約メモリ・エリア320、および集中DAマネージャ310を含む。ここでは、集中DAマネージャ310を「DAマネージャ310」とも呼ぶこととする。二進画像は、一般に、異なるコンポーネントによるリンク時間動作(link time operation)によって構成することができる。EBSCのようなソフトウェア・コンポーネントは、独立して構築された二進画像であり、その機能は、故意に、互いに特別にグループ化されている。DAマネージャ310は画像300のコンポーネントとして示されているが、DAマネージャは、DMMクライアント500、アップグレード・クライアント126のコンポーネント、および/またはクライアント・デバイス122のその他のいずれのコンポーネントとすることができる。
あるいは、クライアント・デバイス122の種々のその他のコンポーネントが、プロセッサ124とデバイス・メモリ130との間に結合し、プログラム制御の下でファイル更新機能を備えることもできる。1つのプロセッサ124および1つのデバイス・メモリ130を示すが、種々の代替実施形態では、当業者によって想起される種々の構成に結合されたこれらのコンポーネントの各々は、いずれの数および/または形式でも含まれる。更に、プロセッサ124およびデバイス・メモリ130は別個のブロックとして示すが、これらのブロックの一部または全部は、モノリシックに単一チップ上に集積すること、多数のチップまたはホスト・システムのコンポーネント間で分散すること、および/またはアルゴリズムの何らかの組み合わせで備えることも可能である。デバイス・メモリ130のアルゴリズムまたはアプリケーションは、ソフトウェア・アルゴリズム(複数のソフトウェア・アルゴリズム)、ファームウェア、ハードウェア、ならびにソフトウェア、ファームウェア、およびハードウェアのいずれの組み合わせでも実現することができる。デバイス・メモリは、ROMおよびランダム・アクセス・メモリ(「RAM」)を含むがこれらには限定されない、いずれの数および/または組み合わせ、あるいはメモリ形式でも含むことができる。
通信経路199は、コンピュータ・システム102および122間でファイルを伝達または転送するためのいずれの媒体でも含む。したがって、この経路199は、ワイヤレス接続、有線接続、および混合ワイヤレス/有線接続を含む。また、通信経路199は、ローカル・エリア・ネットワーク(「LAN」)、都市エリア・ネットワーク(「MAN」)、ワイド・エリア・ネットワーク(WAN)、特定企業のネットワーク、オフィス間またはバックエンド(backend)ネットワーク、およびインターネットを含むネットワークへの結合部または接続部も含む。更に、通信経路199は、フロッピ・ディスク、ハード・ディスク・ドライブ、およびCD−ROMのような、着脱可能な固定媒体、ならびにフラッシュ・メモリ、ユニバーサル・シリアル・バス(「USB」)接続、RS−232接続、電話回線、バス、および電子メール・メッセージを含む。
ホスト・システム102およびクライアント・デバイス122は、各々、電子ファイルの元バージョン110を含む。ここでは、これを元ファイル110または旧ファイルと呼ぶ。ホスト・システム102は、元ファイル110をデータベース106またはその他のメモリ・エリア、あるいはメモリ・エリアまたはデバイスの組み合わせに格納するが、そのように限定されるのではない。クライアント・デバイス122は、動作において使用するために、元ファイルをデバイス。メモリ130に格納する。
例えば、追加の機能性を提供するため、またはソフトウェア・バグを解決するために、ソフトウェア・プロバイダが元ファイル110をアップグレードするようなときに、電子ファイルの新バージョン112を生成する。電子ファイルの新バージョン112を、ここでは新ファイル112と呼ぶ。新ファイル112は、一般には、元ファイル110の更新または改訂バージョンであるが、そのように限定されるのではない。ソフトウェア・プロバイダは新ファイル112をホスト・システム102に転送する。
電子ファイル110および112は、ソフトウェア・ファイルを含み、ダイナミック・リンク・ライブラリ・ファイル、共有オブジェクト・ファイル、EBSC、ファームウェア・ファイル、実行可能ファイル、16進データ・ファイルを含むデータ・ファイル、システム・コンフィギュレーション・ファイル、および個人使用データを含むファイルを含むが、これらに限定されるのではない。いずれの種類のファイルでもバイト・ストリームと見なすことができるので、以後ファイルをバイト・ストリームと記述できることにする。
少なくとも1つのプロセッサ104を含むホスト・システム102のコンポーネントは、クライアント・デバイス122上にホストされている元ファイルをアップグレードする際に用いるアップグレード情報を生成するために、新ファイル112を受信し処理する。一実施形態では、プロセッサ104は、アップグレードの情報をクライアント・デバイス122に転送する際に用いるために、アップグレード・ファイル118を生成する。アップグレード・ファイル118は、新ファイル112と元ファイル110との間の差を符号化した差異ファイルを含むことができ、あるいは、代わりに、新ファイル112のあらゆる数および/または組み合わせのコンポーネントまたはモジュールを含むことができる。ホスト・システム102は、アップグレード情報を、通信路199を通じたアップグレード・ファイル118の転送によって、クライアント・デバイス122に供給する。
アップグレード・ファイル118が差異ファイルを含む実施形態では、プロセッサ104およびファイル差別化アルゴリズム114を含むホスト・システム102のコンポーネントが、新ファイル112と対応する元ファイル110との間の比較を処理することによって、新ファイル112と元ファイル110との間の差を計算する。ファイル差別化アルゴリズム114は、比較の間に差異ファイルを生成し、差異ファイルの情報をアップグレード・ファイル118に書き込む。
アップグレード・ファイル118は、通信路119を通じてクライアント・デバイス122に転送または送信する。転送の前に、当技術分野では公知の多数の圧縮技法のいずれかを用いて、アップグレード・ファイル118を圧縮してもよいが、そのように限定されるのではない。
プロセッサ124およびアップグレード・クライアント126を含むクライアント・デバイス122のコンポーネントは、アップグレード・ファイル118を受信し、アップグレード・ファイル118を用いて、クライアント・デバイス122に関する元ファイルのアップグレードを制御する。クライアント・デバイス122のアプグレード・クライアント126は、関連出願に記載されているように、ダウンロード・サブクライアント(「SC」)(「ダウンロードSC」)、アップグレードSC、および自己アップグレードSC(図示せず)の少なくとも1つを含むが、そのように限定されるのではない。ダウンロードSCは、ホスト・システム102から転送されてくるアップグレード・ファイル118をダウンロード即ち受信するように機能する。アップグレードSCは、ホスト・システム102から転送され受信したファイルの情報を用いて、クライアント・デバイス122のソフトウェアに対してアップグレードを行う。自己アップグレードSCは、アップグレード・クライアント126のソフトウェアをアップグレードするように機能する。一実施形態の自己アップグレードSCは、ダウンロードSCまたはアップグレードSCのいずれとも異なる物理的メモリ・ブロックまたはエリアに格納されているが、そのように限定されるのではない。アップグレード・クライアント126のソフトウェアは、ダウンロードSC、アップグレードSC、および自己アップグレードSCのソフトウェアを含むが、これらに限定されるのではない。
一実施形態では、アップグレード・クライアント126は、アップグレード・ファイル118の情報を、ホストされている元ファイル110と共に処理して、クライアント・デバイス122において新ファイルのコピーを生成する。この新ファイルのコピーは、後に、アップグレード・クライアント126が、クライアント・デバイス122上にホストされている、目標の元ファイルをアップグレードするために用いられる。関連出願に記載されているように、一実施形態のアップグレード・クライアント126は、更新するファイルの種類、およびこれらの更新に対応するためにクライアント・デバイスの製造業者が割り当てたリソースに応じて、多数の方法を用いてEBSCを更新する。この更新プロセスが完了すると、この時点でクライアント・デバイス122に格納されている元ファイルは、ホスト・システム102において受信した新ファイル112と同一となっている。
当業者は、アップグレード・システム100に関連する機能、およびアップグレード・システム100を参照してここで説明したその他の機能および方法は、ホスト・システム102のコンポーネント、クライアント・デバイス122のコンポーネントによって実行することができ、あるいはホスト・システム102およびクライアント・デバイス122のコンポーネントのいずれの組み合わせの間で分散することもできることを認めよう。ホスト・システム102およびクライアント・デバイス122のコンポーネントは、DSP集積回路によって、および/または従来のプログラム・ロジック・アレイまたは回路要素を介して、ASICとして実現することができる。ここに記載する実施形態は、ハードウェア、ファームウェア、および1つ以上のプロセッサ上で実行するソフトウェアのいずれの組み合わせを用いても実現することができ、この場合、ソフトウェアは、半導体チップ、コンピュータ読み取り可能ディスクに格納されたマイクロコードのような、いずれの適したコンピュータ読み取り可能媒体上にも格納することができ、あるいはサーバからダウンロードし、クライアントの内部に格納することができる。
図2は、一実施形態のファイル・アップグレード・システム100のコンポーネントを含む、サービス・プロバイダ・インフラストラクチャ200の一例のブロック図である。この実施形態では、サービス・プロバイダ・インフラストラクチャは、セルラ電話ネットワークまたはインフラストラクチャに関連して説明するが、代替実施形態では、そのように限定されることはない。サービス・プロバイダ・インフラストラクチャ200は、ソフトウェア・コンポーネント分配部(SCD)202、サービス・プロバイダ・アップグレード・コンポーネント203〜205、およびクライアント・デバイス122上にホストされているアップグレード・クライアント126を含むが、これらに限定されるのではない。サービス・プロバイダ・アップグレード・コンポーネント203〜205は、ソフトウェア・コンポーネント証明サーバ203およびアップグレード・マネージャ205との間に結合されているアップグレード・サーバ204を含む。
図1を更に参照すると、サービス・プロバイダ・インフラストラクチャ200の一実施形態のSCD202は、ホスト・システム102のコンポーネントまたは機能を含む。代替実施形態では、サービス・プロバイダ・アップグレード・コンポーネント203〜205は、ホスト・システム102のコンポーネントまたは機能の上位装置として動作する。他の代替実施形態では、ホスト・システム102のコンポーネントまたは機能は、SCD202のコンポーネントおよびサービス・プロバイダ・アップグレード・コンポーネント203〜205間で分散されている。
一実施形態のサービス・プロバイダ・インフラストラクチャ200は、移動電子デバイス、移動通信デバイス、セルラ電話機、パーソナル・ディジタル・アシスタント、コンピュータ、およびその他のプロセッサを用いたデバイスを含むクライアント・デバイス122上の多数のタイプのソフトウェア・ファイルまたはコンポーネント・アップグレードに、サービス・プロバイダのワイヤレス・インフラストラクチャのアップグレード・システム・コンポーネントおよび種々の機構によって対応する。これらのシステムは、新たなソフトウェアおよび改訂されたソフトウェアをソフトウェア流通業者から受け取り、新たなソフトウェアからアップグレード・ファイルを生成し、サービス・プロバイダ・インフラストラクチャを通じてアップグレード・ファイルをクライアント・デバイス122に転送することによって機能する。クライアント・デバイス122のアップグレード・クライアント126は、アップグレード・ファイルを用いて、クライアント・デバイス122上にホストする目標のソフトウェアを更新する。
一実施形態のSCD202は、ユーザ・インターフェースを設け、これによってソフトエア・プロバイダは、新たな埋め込みデバイス・ソフトウェア・コンポーネントを包装し、公表する。SCD202の機能には、デバイス情報を登録すること、およびデバイス情報をソフトウェア・コンポーネント証明サーバに提出することが含まれる。また、SCD202は、新たなEBSCおよび元のEBSCを受信し、新たなEBSCおよび元のEBSCを用いてファイル差を計算または生成し、埋め込みソフトウェアを登録および包装し、埋め込みソフトウェア・パッケージをソフトウェア・コンポーネント証明サーバ203に提出する。新たなソフトウェアまたは改訂したソフトウェアは、公表に続いて、ワイヤード・ワイヤレス、あるいは混成ワイヤード/ワイヤレス・ネットワーク結合部または接続部220を通じて、サービス・プロバイダ・アップグレード・コンポーネント203〜205に供給されるが、そのように限定されるのではない。
一実施形態のSCD202は、クライアント・デバイス製造業者の処理システム上にホストされている。代替実施形態では、SCD202は、アプリケーションまたはシステム・ソフトウェア・プロバイダの処理システム上にホストしている。別の代替実施形態では、SCD202は、サービス・キャリアまたはプロバイダの処理システム上にホストされており、例えば、アップグレード・コンポーネント203〜205上にホストされているか、またはそれらの間に分散されている。
サービス・プロバイダ・アップグレード・コンポーネント203〜205は、ソフトウェア・コンポーネント分配部202、クライアント・デバイス122、既存のゲートウェイ210や通信インフラストラクチャ212を含むサービス・プロバイダのインフラストラクチャ201〜128の既存のコンポーネント、請求書発行サーバ214、ロギング・サーバ216、および認証サーバ218間で結合されている。
ソフトウェア・コンポーネント証明サーバ203は、クライアント・デバイスの製造業者へのインターフェースを設け、したがって、デバイス製造業者からの埋め込みソフトウェア・パッケージに関する新たなデバイス情報を受信する。また、ソフトウェア・コンポーネント証明サーバ203は、承認されたソフトウェア・パッケージを再包装(repackage)しアップグレード・サーバに分配する。
アップグレード・マネージャ205は、ソフトウェア・コンポーネント証明サーバ203およびアップグレード・サーバ204の間でインターフェースとして機能しつつ、最適なデバイス管理のためにソフトウェアおよびデータのパッケージングを行い、遠隔変更通知(remote change notification)のスケジューリングを行い、更新ポリシ・モニタ・システムを制御する。更に、アップグレード・マネージャ205は、既存のインフラストラクチャのシステムとの統合を行う。
アップグレード・サーバ204は、認証、接続、移動クライアント・デバイス122との通信を含む機能を備えており、埋め込みソフトウェア・コンポーネントのアップグレードを行う。クライアント・デバイス122との通信は、クライアント・デバイス122との結合部212を介して行うことができる。この結合部212は、ワイヤレス結合部、ワイヤード結合部、混成ワイヤード/ワイヤレス結合部、および対応するサービス・プロバイダに適したその他のネットワーク結合形式を含む。加えて、アップグレード・サーバ204は、サービス・プロバイダの既存の請求書発行、データ収集、およびロギング・サービスにも対応する。
アップグレード・サーバ204およびクライアント・デバイス122間の通信の一例として、アップグレード・ファイルがアップグレード・サーバ204からクライアント・デバイス122に転送できるようになったときに、サーバ204はユーザ通知を送って、クライアント・デバイスのユーザに、更新に利用できるソフトウェア・コンポーネントがあることを通知する。ユーザ通知は、ショート・メッセージ・サービス(「SMS」)プッシュ・プロトコル、ハイパーテキスト・トランスファ・プロトコル(「HTTP」)、またはワイヤレス・アプリケーション・プロトコル(「WAP」)によるテキスト・メッセージの形態を取ることができるが、そのように限定されるのではない。ハンドセット・ユーザからの確認を受信すると、アップグレード・サーバ204は、元のハンドセット・データ通信プロトコルを用いて、アップグレード・ファイルを要求元のデバイスに送る。
そのデバイスからの確認の受信に応答して、アップグレード・サーバ204は、ユーザおよび/または要求元デバイスを認証および許可し、要求元デバイスの欠くことができない機能および制限を検証する。認証に続いて、アップグレード・サーバ204は、クライアント・デバイス・コンフィギュレーション・データのマネージャとして、要求元デバイス104の埋め込みソフトウェア・コンポーネントの現バージョンを特定し、該当するデルタ・ファイルを特定し要求元デバイス104に転送し、アップグレード・トランザクションのステータスを記録し、結果をアップグレード・マネージャ205に報告する。加えて、アップグレード・サーバ204は、オーバーディエアによってソフトウェア・アップグレード・サービスの活性化/不活性化を行い、遠隔ユーザにソフトエアの変更を通知する。
図1を参照すると、アップグレード・クライアント126は、クライアント・デバイス122に埋め込まれているが、そのように限定されるのではない。アップグレード・クライアント126は、クライアント・デバイス122のコンフィギュレーション・データを格納および維持し、埋め込みデバイス・ソフトウェア・コンポーネントの保守およびアップグレードを行う。アプグレード・クライアント126は、単純なユーザ・インターフェースに対応し、移動デバイス・ソフトウェア内に組み込まれる。実行時に、アップグレード・クライアント126は、いずれの埋め込みソフトウェア・コンポーネントの遠隔変更をも自動的に検出し、ユーザに埋め込みソフトウェア・コンポーネントのアップグレードを通知し、通信事業者(carrier)および/またはユーザ制御に基づいて、個々のサービス・プロバイダに対してしかるべく、ソフトウェア・コンポーネントをアップグレードする。
一実施形態のアップグレード・システム100およびサービス・プロバイダ・インフラストラクチャ200は、多数の形式のソフトウェア・ファイルまたはコンポーネント更新に対応し、実行可能ファイル、バイト・ストリーム・ファイル、およびデータ・ファイルに対する更新を含むが、そのように限定されるのではない。実行可能ファイル、または画像ファイルは、クライアント・デバイスにおいて用いられ、タスク、例えば、オペレーティング・システム(「OS」)を実行するソフトウェア・ファイル、ハードウェア・デバイス・ドライバ、およびK仮想機械(「KVM」)ファイルを含む。バイト・ストリーム・ファイルは、その他の実行可能ファイル、例えば、アイコン・ファイル、ロゴ・ファイル、およびMP3ファイルによって用いられるファイルを含む。データ・ファイルは、個人使用データ、およびハンドセット参照データを含むファイル、例えば、較正コンフィギュレーション・ファイル、プロトコル独立マルチキャスト(「PIM」)ファイル、およびシステム・コンフィギュレーション・ファイルを含む。
一実施形態のアップグレード・クライアント126は、関連出願に記載されているように、アップグレードするファイル・タイプ、およびアップグレードに対応するためにクライアント・デバイスの製造業者が割り当てるリソースに応じて、EBSCをアップグレードするために多数の方法を用いる。一実施形態のこれら更新方法は、非クリティカル・コンポーネントの更新、クリティカル・コンポーネントの更新、およびクライアント・コンポーネントの更新を含み、これらのカテゴリは、更新の目標であるソフトウェア・コンポーネントによって設けられる機能に基づく。
一般に、ソフトウェアのアップグレードは、前述のように、プログラムの新バージョンを旧バージョンと比較し、マシン・コードの変更または差異のみを分離する技法を使用することによってホスト・クライアント・デバイスのROMを書き直すのに要する時間を削減する。クライアント・デバイスのアップグレード・クライアントは、アップグレード・ファイル内において受信した、これら差異の情報を用いて、デバイスROMをアップグレードする。その際、ROM全体を書き換えるのではなく、差異のみ、即ち変更したEBSCまたは画像の部分を書き換える。
差異ファイルを含むアップグレード・ファイルの使用に加えて、DAおよびDAマネージャを用いたファイルのアップグレードの間に、クライアント・デバイスのプログラムをアップグレードするために必要なアップグレード・ファイルのサイズおよび時間の削減を達成することができる。一実施形態のDAは、デバイスROM内に格納されているコードを、関連EBSCのグループに編成することを含む。あるコンポーネントから別のコンポーネントへのいずれの参照でも、識別して、各コンポーネントの位置即ちアドレスと共に、DAマネージャに格納する。DAマネージャは、EBSCをリンクするプロセスの間に生成され、クライアント・デバイス・プログラムと共に、クライアント・デバイス・メモリにロードする。したがって、DAおよびDAマネージャは、画像のEBSCを孤立させ、独立して構築することを可能にする。
DAマネージャは、コンポーネント関数コール、グローバル変数参照、および一定変数参照(constant variable reference)を管理し、集中ルータまたはスイッチボードとして機能し、クライアント・デバイスの各EBSCのシンボル位置を把握し、クライアント・デバイス・プログラムの実行中に、必要に応じてEBSCをリンクする。あるEBSCから別のEBSCへのいずれの参照も、これらEBSC間で直接行われる代わりに、DAマネージャを介して導かれる。したがって、ファイル・アップグレードの最中にコンポーネントを修正し、アップグレードの結果、ROM内においてEBSCの局所的な変化が生じた場合、この変化をDAマネージャが記録するので、クライアント・デバイス・プログラム内にあるEBSCへの参照即ち連結(linkage)の完全性を維持する。
ここに記載するDAマネージャは、例えば、ARMプロセッサ・コア、即ち、Arm Developer Suite(ADS)バージョン1.2ソフトウェア・パッケージをホストするプロセッサと共に実行するが、代替実施形態は種々の他のプロセッサ上/と共に実行することができる。一実施形態のDAおよびDAマネージャは、多数の埋め込みシステム・プラットフォームと互換性があり、ここに記載する埋め込みシステムだけと互換性があるのではない。
一実施形態のDAおよびDAマネージャの説明において多数の用語を用い、これらの用語の説明を一例として以下に行うが、実施形態はこれらの説明に限定されるのではない。DAおよびDAマネージャについて説明する際、「画像」とは、プロセッサ上にロードする実行可能ファイルであり、代わりに「二進画像」または「ソフトウェア画像」とも呼ぶ。「セクション」とは、ソフトウェア・コードのブロックまたは画像のデータである。「領域」とは、1つから3つの出力セクションの隣接する連続体であり(画像のリード・オンリ・メモリ・アドレス(「RO」)、リード/ライト・メモリ・アドレス(「RW」)、およびゼロ初期化メモリ・アドレス(「ZI」))、領域は、一般に、ROM、RAMのような物理的メモリ・デバイス、および/または周辺機器にマップする。「ロード・ビュー」(load view)とは、メモリにロードされているがまだ実行を開始していない画像のセクションおよび領域のアドレスである。「実行ビュー」(execution view)とは、メモリにロードされ実行中の画像のセクションおよび領域のアドレスである。「散乱ロード」(scatter loading)は、単一の大きなブロックを用いるのではなく、個々にコードおよびデータ・セクションのアドレスおよびグループ化を割り当てることを含む。「RO−CODE」は、リード・オンリ・コード・アドレスを意味する。[RO−DATA」は、リード・オンリ・データ・アドレスを意味する。「RW−DATA」は、リード/ライト・データ・アドレスを意味する。「ZI−DATA」は、初期値を有さない変数を保持するために用いられるゼロ初期化リード/ライト・メモリを意味する。「symdefファイル」とは、グローバル・シンボルおよび関連する最終実行時アドレスを含むシンボル定義ファイルである。
一実施形態のDAは、二進画像のDAマネージャにおける固定位置に共通コンポーネントを挿入することにより機能コール依存性を解消するように機能するので、コードの変更により機能コール宛先アドレスが変化したとき、コール側機能は、DAマネージャの共通コンポーネントをコールし続け、DAマネージャはそのコールを画像内のしかるべきコンポーネントに誘導する。DAマネージャの共通コンポーネントの情報は、したがって、いずれの関数コール宛先アドレスの変更に応じて変化し、共通コンポーネントへの機能コールを、新しい宛先アドレスに誘導する。
ここに示す、コンポーネントに基づくメモリ管理の一例として、図3は、一実施形態の下におけるDAマネージャ310と画像300のEBSC、EBSC1/EBSC2/EBSC3との間の相互作用を示すDAのブロック図である。前述のように、一実施形態の画像は、ソフトウェア・コンポーネント(EBSC)および少なくとも1つのDAマネージャを含む。画像は、リンク・コンポーネント(linked component)を含み、EBSCのようなコンポーネントは、独立して構築された画像を含み、その機能は故意に、特別に一緒にグループ化されている。画像を異なるコンポーネントに分割するので、以下で説明するように、1つのコンポーネントから他のコンポーネントへの関数コール、グローバル変数参照、および一定変数参照がある。
一実施形態のDAは、関数コールおよびグローバル参照を画像のコンポーネント間で識別し、個々のコンポーネント間の依存性を断ち切り、ソフトウェア・アップグレードまたは変更を画像に対して行うとき、DAマネージャおよび修正されたコンポーネントのみをアップグレードするようにしている。DAマネージャは、続いて、関数コールおよびグローバル参照を管理し誘導し直すことにより、画像の実行中コンポーネント間のアクティビティを制御または管理する。
DAマネージャの一動作例として、図3を参照すると、動作をEBSC1の関数2に誘導するEBSC2におけるコール350が、DAマネージャ310のコンポーネント370をコールする。一方、DAマネージャ310のコールされたコンポーネント370は、動作352をEBSC1の関数2に誘導する。DAマネージャの別の動作例として、動作をEBSC3の関数1に誘導するEBSC1におけるコール360は、DAマネージャ310のコンポーネント380をコールする。一方、DAマネージャ310のコールされたコンポーネント380は、動作362をEBSC3の関数1に誘導する。
この例について続けると、クライアント・デバイスのソフトウェア・アップグレードが、画像300のEBSC1に対する変更を必要とし、その結果メモリにおいてEBSC1の位置が変更する場合、例えば、このアップグレードによって、EBSC1に関連するリンクを有するEBSC1へのアップグレード、およびDAマネージャ310のコンポーネント370へのアップグレードのみが行われる。その結果、DAマネージャ310は画像300のEBSC間の参照または連結の完全性を維持するように機能するので、DAマネージャ310は、EBSC1のような特定のEBSCへのアップグレードのため、画像300の全てのEBSCをアップグレードまたは書き換えるあらゆる必要性を軽減する。
画像300のEBSC間のリンクを管理する際、一実施形態のDAマネージャは、多数の技法を用いて、異なる種類のグローバル参照を管理する。即ち、DAマネージャは、関数コールおよびグローバル変数を含むグローバル参照を管理するが、そのように限定されるのではない。
コンポーネントの関数コールは、一般に、相対的なオフセット・ジャンプ/分岐命令または絶対アドレス・ジャンプ/分岐命令のフォーマットとなっており、画像の1つ以上のその他のコンポーネント内に宛先オフセット/アドレスが位置する。二進コードは、リード・オンリ・コード・アドレスを含むRO−CODE/テキストセクションに位置する。実行ビュー・アドレスおよびコンポーネント境界に基づいて、関数コールは、コンポーネント間関数コール、またはコンポーネント内関数コールのいずれかに分類され処理される。これについて、以下に説明する。
コンポーネント間関数コールに関して、そしてジャンプ/分岐命令の特色の結果、一実施形態のDAマネージャは、ここではベクトル・テーブル(VT)と呼ぶ、集中ジャンプ・テーブルを含み、コンポーネント間関数コールを管理し、それに伴う誘導のし直しを扱う。実行中、あるコンポーネントから他のコンポーネント内に位置する関数に対して関数コールが行われると、以下に説明するように、VT内のエントリをコールすることになる。次いで、VTはこのコールを、コールされたコンポーネント/関数に対応する、メモリ・デバイス内のしかるべき位置に誘導し直す。一例として、コンポーネント間関数コールに対して、VTエントリのサンプルARMモード・コードが続くが、本実施形態はこのサンプル・コードに限定されるのではない。
Figure 2007511816
コンポーネント間関数コールとは対照的に、コンポーネント内関数コール(コンポーネント内部のローカル関数への関数コール)は、コンポーネントに対するアップグレードの影響を受けない。コンポーネント内関数コールが影響を受けないのは、アップグレードの結果、コンポーネント全体がアップグレードされるので、コンポーネントのアップグレードは、コンポーネント内関数コールに対してしかるべきアップグレードを含むからである。したがって、コンポーネント内関数コールはVTを検索しない。更に、コンポーネント内関数コールのコール・シーケンスを実行する際にVTを用いないが、本実施形態はそのように限定されるのではない。
グローバル変数および一実施形態のDAおよびDAマネージャを用いた、関連する参照に移ると、グローバル変数には、3つのサブタイプがあり、グローバル定数変数、グローバルRW変数、およびグローバルZI変数を含む。グローバル定数変数は、画像コードのRO−DATA/.constセクションにあり、これらを「変数」と呼ぶが、デバイスROMから参照することができ、実行時における修正はできない。グローバルRW変数は、RAM変数であり、実行時に修正することができ、システムの初期化の間にそれらの初期値に設定される。グローバルZI変数も、RAM変数であり、実行時に修正することができ、そしてRW変数とは対照的に、システムの初期化の間にゼロ(0)の値にクリアされる。
一実施形態のDAおよびDAマネージャは、ここでは「グローバル参照」と呼ぶ、コンポーネント間およびコンポーネント内グローバル参照の1つまたはその組み合わせを用いて、コンポーネントのグローバル変数への参照を管理する。コンポーネント間グローバル変数参照に関して、グローバル変数参照は、前述の関数コールとは異なる。何故なら、これは、ジャンプ/分岐命令の代わりに、直接アドレスの内容をロードするからである。
一実施形態のDAは、DAマネージャの集中位置特定(centralized location)を用いてコンポーネント間グローバル参照を管理する。集中DA管理位置特定を用いて、あらゆるコンポーネント間グローバル定数変数、グローバルRW変数、およびグローバルZI変数を新たな種類のセクションに割り当てることができる。一例として、グローバル定数変数を、「globalConst」セクションと呼ばれる新たなセクションに割り当てることができ、グローバルRW変数を、「globalRW」セクションと呼ばれる新たなセクションに割り当てることができ、グローバルZI変数を、「globalZI」セクションと呼ばれる新たなセクションに割り当てることができる。これらの新たなセクション/変数は、次に、リンク時に、ロード・ビューおよび実行ビュー双方に対して、集中セクションに分散ロード(scatter load)される。アップグレードの間不変のコンポーネントの変数のアドレスを維持するのは有用であるので、集中位置特定は、変数の位置を管理し検証し易くし、これによってDAマネージャのプロセス構築を簡略化する。
代替実施形態のDAおよびDAマネージャは、アクセス関数を用いて、コンポーネント間グローバル参照を管理する。アクセス関数は、ソース・コード・レベルで生成するラップ関数(wrap function)であり、グローバル変数の参照を関数コールに変換するので、これらの参照を処理するためにVTを用いることが可能となる。アクセス関数を用いるのに適した状況は、ソース・コードが利用できない場合、ソース・コードの変更が非常に望ましくない場合、およびコンポーネント間変数参照の数が非常に限られているため、別個のセクションが不要な場合を含む。
ファイルfoo.cにおけるアクセス関数の一例は、次の通りである。
Figure 2007511816
そして、ファイルfoo.cまたはその他のファイルにおけるアクセス関数の一例は、次の通りである。
Figure 2007511816
一例として、アクセス関数では、VTエントリのサンプルARMモード・コードが続くが、本実施形態はこのサンプル・コードに限定されるのではない。
Figure 2007511816
アクセス関数を用いる場合、前述のアクセス関数の1つを用いるために、「interCompGlobalVarA」への参照を変更する。
コンポーネント間変数とは対照的に、コンポーネント内変数、またはコンポーネント内部のローカル関数は、コンポーネントへのアップグレードによる影響を受けない。何故なら、コンポーネントのアップグレードは、コンポーネント内変数に対するしかるべきアップグレードを含むからである。したがって、コンポーネント内変数は、globalConst変数/セクション、globalRW変数/セクション、およびglobalZI変数/セクションを検索しない。更に、コンポーネント内部関数コールの一連の参照を行う際、globalConst変数/セクション、GlobalRW変数/セクション、およびglobalZI変数/セクションを用いないが、本実施形態はそのように限定されるのではない。
一実施形態のDAマネージャは、DAマネージャを含む画像を生成する際に用いる画像構築プロセスを含む。一例として、図4Aおよび図4Bは、一実施形態の下において、DAマネージャを含む画像を構築する際のフロー図400を示す。DA画像構築手順は、非常に信頼性が高く、誤りがない二進画像を生成し、この手順は概略的に、予備コンパイル段階、リンカ後段階、およびコード生成段階に分割することができるが、そのように限定されるのではない。画像構築の予備コンパイル段階は、DAプロセスのために本来の構築環境を用意する。リンカ後段階は、DAマネージャを含む画像を信頼性高く生成できるまで、多数回実行することができる。コード生成段階は、画像のDAマネージャ・コンポーネントのアセンブリ・コードを生成する。
一実施形態の構築プロセスが用いるリソースは、断面基準(Cross Section References)情報を備えた画像メモリ・マップ・ファイル、本来のコンポーネント認識分散ロード・ファイル、本来のコール・グラフ・ファイル、および第三者ライブラリ・オブジェクト・ファイルを備えた製造業者オブジェクト・ファイルを含む。代替実施形態は、追加のリソースおよび/または他の種類のリソースやその組み合わせを用いることができる。DAマネージャを含む画像を構築するためには、ソース・コード・ファイルが利用できる必要はないが、ソース・コード・ファイルは、二進画像の動作、および実行時リソース要求に役立つことができる。
DAマネージャを含む画像を構築する際のフロー図400を参照する。クライアント・デバイスのコンポーネントは、構築プロセスを開始すると、ブロック402において、VTのロード・ビューおよび実行ビュー、ならびにグローバル参照を含む、DAマネージャをホストするデバイス・メモリ内の位置を指定する。クライアント・デバイスのコンポーネントは、ブロック404において、本来の画像マップ・ファイル、本来のコンポーネント認識分散ロード・ファイル、コール・グラフ・ファイル、および本来のソース・コード・ファイル(任意)の内少なくとも1つの情報を用いて、コンポーネント間関数コールおよびコンポーネント間グローバル変数参照を特定する。ブロック406において、特定したコンポーネント間関数コールおよびコンポーネント間グローバル変数参照の内少なくとも1つの情報を用いて、DAマネージャのエントリが大き過ぎるために、デバイス・メモリの指定位置に納まらないか否か判定を行う。DAマネージャは、一般に、クライアント・デバイス・メモリにおいて1ブロックのメモリを占有する、独立したコンポーネント即ちEBSCであるが、そのように限定されるのではない。
ブロック406において、DAマネージャのエントリが大き過ぎて、デバイス・メモリの指定位置に納まらない場合、コンポーネント間参照を削減するために、コンポーネントの再配置を行う。コンポーネントの再配置は、ブロック450において、全てのコンポーネント間グローバル定数変数(RO_DATA)を新たなGlobalConstセクションに再グループ化するまたは再割り当てすることを含むが、そのように限定されるのではない。ブロック452において、元のソース・コード・ファイルが利用できるか否か判定を行う。元のソース・コード・ファイルが利用できる場合、ブロック454において、全てのコンポーネント間グローバルRW変数(RW−DATA)およびグローバルZI変数(ZI−DATA)を、元のソース・コードにおいて、外部参照「extern」に変更即ち再定義する。ブロック456において、コンポーネント間グローバルRW変数(RW−DATA)およびグローバルZI変数(ZI−DATA)の集中宣言を有する新たなソース・コード・ファイル(globalInter.c)を生成する。集中宣言は、グローバルRW変数を新たなglobalRWセクションに割り当てること、およびグローバルZI変数を新たなglobalZIセクションに割り当てることを含むが、そのように限定されるのではない。また、ブロック458において、分散ロード・ファイルも変更し、再グループ化したコンポーネント間グローバル定数変数(globalConst)を、globalRWおよびglobalZIセクションと共に含むようにし、Makeファイルを修正する。新たなソース・コード・ファイル(globalInter.c)の生成に続いて、ブロック470において、新たなソース・コード・ファイルを再コンパイルし、オブジェクト・ファイルを再リンクする。次いで、動作はブロック402に戻り、VTのロード・ビューおよび実行ビュー、ならびにグローバル参照を含む、DAマネージャをホストするための位置をデバイス・メモリ内において指定する。
元のソース・コード・ファイルがブロック454、456、および458の動作のために利用できないとブロック452において判定した場合、ブロック460において、コンポーネント間参照を削減するためのコンポーネントの再配置(ブロック450)に続いて、アクセス関数を生成する。前述のように、アクセス関数は、グローバル変数の参照を、関数コールに変換する。アクセス関数の生成に続いて、ブロック470において、ソース・コード・ファイルを再コンパイルし、オブジェクト・ファイルを再リンクする。次いで、動作はブロック402に戻り、VTのロード・ビューおよび実行ビュー、ならびにグローバル参照を含む、DAマネージャをホストするための位置をデバイス・メモリ内において指定する。ブロック450〜470の動作は、DAマネージャ・エントリのサイズがデバイス・メモリにおいて指定された位置に納まるまで(ブロック406)、クライアント・デバイスのコンポーネントによって繰り返される。
DAマネージャのエントリが、デバイス・メモリ内に指定された位置に納まったとブロック406において判定されたようなとき、動作は続いてブロック408において、各コンポーネントのコンポーネント間関数コールに対してVTソース・コードを生成する。また、ブロック410において、クライアント・デバイスは、コンポーネント毎に、新たなまたは修正した分散ロード・ファイルを生成する。更に、ブロック412において、クライアント・デバイスは、コンポーネント毎に、シンボル定義ファイルsymdefを生成する。ここで、各symdefファイルは、VTテーブル・エントリ・アドレスを用いて、対応するコンポーネントに対して外部参照を定義する。symdefファイルは、VTにおいて用いられないコンポーネントには不要である。ブロック408、410、および412の動作は、元の画像マップ・ファイルおよび修正した分散ロード・ファイルの少なくとも一方の情報を用いるが、そのように限定されるのではない。
続いて、クライアント・デバイスの動作は、ブロック414において、画像のコンポーネントをコンパイル/アセンブルし再リンクし、コンポーネント毎に画像およびメモリ・マップを生成する。一実施形態の再リンク動作は、DAマネージャ・コンポーネントへのリンクを含まないが、そのように限定されるのではない。また、ブロック416において、クライアント・デバイスは、最終シンボル位置を含む、DAマネージャ・コンポーネントのsymdefファイルを生成する。ブロック418において、クライアント・デバイスは、次に、VTオブジェクト・ファイルを各コンポーネントのローカル・シンボルと共にコンパイルし、再リンクして、VTコンポーネント画像を生成する。また、ブロック420において、クライアント・デバイスは、DAマネージャ・コンポーネントをコンパイルおよびリンクして、DAマネージャ画像を生成する。ブロック422において、DAマネージャ画像を含む画像をクライアント・デバイス・メモリにロードする。
クライアント・デバイスを製造した後に、クライアント・デバイスの特定のまたは予め指定したコンポーネントへのアップグレードを含むソフトウェア・アップグレードを実行する場合、一実施形態のクライアント・デバイスは、前述のDAを用いる。アップグレードしたコンポーネントの1つ以上がコンポーネント間参照を含む場合、ソフトウェア・アップグレードの間、前述の構築プロセスを用いて、DAマネージャを変更即ちアップグレードする。
画像の新バージョンを生成したクライアント・デバイスのソフトウェア・アップグレードの間、前述の構築プロセスは、アップグレードしたコンポーネントの画像を生成する。修正されないコンポーネントは、それらの以前のバージョンと同一のはずであるが、コンポーネント間関数コールに対応するDAマネージャのエントリを検証しなければならない。コードの変更により対応する元のコンポーネントに納まらなくなった、新たなコンポーネント間関数コールおよびグローバル変数は、画像の最終バージョンが占有するロットの端部に追加するが、そのように限定されるのではない。更に、DAマネージャの既存のシンボル全ては、特に指定されていない限り、その元のアドレスを保持している。
DAマネージャの構築に続いて、DAマネージャは、集中ルータまたはスイッチボードとして機能し、必要に応じて、クライアント・デバイス・プログラムの実行中に、各EBSCおよびリンクEBSCのシンボル位置を把握する。1つのEBSCから別のEBSCへのいずれの参照も、直接EBSC間で行う代わりに、DAマネージャを介して導かれる。ファイル・アップグレードの間にコンポーネントを修正し、アップグレードの結果ROMにおいてEBSCの位置が変化した場合、この変化をDAマネージャが記録し、こうしてデバイス・プログラム内にあるEBSCに対する参照または連結の完全性を維持する。
前述のように、ファイルの改訂は、新たなそして更新したEBSCをホスト・デバイスのメモリ位置に書き込むことを伴う。多くの場合、新たなEBSCは、それと交換する元のEBSCとは正確に同じサイズではく、正確に同じ開始アドレスも有さない。一実施形態のアップグレード・クライアントは、デバイス・メモリ管理の選択肢を備えており、EBSCサイズまたは開始アドレスには関係なく、新たなEBSCの書き込みに対処するアップグレード可能なEBSCのDAを含む。
デバイス・メモリのコンポーネントのアップグレードの間にDAを用いるデバイス・メモリの一例として、図5は、デバイス・メモリ130のブロック図であり、図1および図3の実施形態の下における、ソフトウェア画像300のコンポーネントを含むメモリ130のコンポーネント(埋め込みソフトウェア・エリアにおける)、アップグレード・クライアント126、およびDMMクライアント500間における相互作用の一例を示す。一実施形態のデバイス・メモリ130はフラッシュROMであるが、デバイス・メモリ130のこの実施形態または代替実施形態では、多くの形式のメモリおよび/またはメモリ形式の組み合わせを使用することができる。
一実施形態のDMMクライアント500は、DMMライブラリ510、VT512、およびガベージ・コレクション514を含むが、そのように限定されるのではない。VT512は、DMMクライアント500の一コンポーネントとして示されているが、VT512は、DAマネージャ310と同じ位置に配置してもよく、あるいは画像300またはDMMクライアント500の別のセクションでもよい。DMMライブラリ510は、関数アドレス変換アプリケーション・プログラマ・インターフェース(「API」)520、予約API522、およびガベージ・コレクションAPI524の内1つ以上を含む。DMMライブラリ510は、関数アドレス変換API520、予約API522、およびガベージ・コレクションAPI524の内1つ以上との何らかの組み合わせで、1つ以上の追加のAPIを含んでもよい。
ソフトウェア・アップグレードの間、DAは、より進んだメモリ管理を可能にしつつ、全体的に各更新の間EBSCおよびEBSCグループの開始アドレスおよびサイズ双方の変更に対応する。一実施形態のアップグレード・クライアントは、DMMクライアント500のAPIおよび少なくとも1つのデータ・テーブル間の相互作用を用いて、ダイナミック・アドレシングに対応する。したがって、DAは、ROM利用およびデバイス・メモリ・マップ設計の効率を高めつつ、更新処理の高速化、および更新失敗の確率低下に対応する。
DAを用いてメモリ管理を行う際、アプグレード・クライアントは、少なくとも1つの第1および第2メモリ・エリアを含むホスト・デバイス・メモリ・エリアの連続探索を行うことにより、新たなソフトウェア・コンポーネントを収容できるだけの十分に大きいメモリ・ブロックを特定し予約する。新たなコンポーネント・サイズが、探索したメモリ・エリアの利用可能なブロックのそれを超過する場合、アップグレード・クライアントは、未使用のメモリ・ブロックを排除するように第1メモリ・エリアを書き換え、第1および第2メモリ・エリアを割り当てし直し、新たなコンポーネントを第2メモリ・エリアに書き込み、ベクトル・テーブルを更新する。これについては、以下で説明する。
図6は、一実施形態の下において、ダイナミック・アドレシングを用いてEBSCまたはEBSCグループをアップグレードする際のフロー図600である。アップグレード・クライアントは、ブロック602において、新EBSCバージョンを受信する。新EBSCバージョンは、元のEBSCバージョンおよび対応するアップグレード・ファイルから生成するか、あるいはソフトウェア・コンポーネント流通業者から受信する。ブロック604において、新EBSCバージョンの格納に対処するために、クライアント・デバイス内でメモリ・エリアを特定し予約する。ブロック606において、アップグレード・クライアントのコンポーネントは、新EBSCバージョンを予約したメモリ・エリアに書き込む。ブロック608において、新EBSCバージョンに起因するあらゆる必要な変更をVTの情報に行うために、VTに対して更新を行う。また、ブロック610において、新EBSCバージョンの書き込みに起因する、未使用メモリ・エリアのあらゆる変化を反映するために、ガベージ・テーブルに更新を行う。
DAを用いてクライアント・デバイスにおいてソフトウェア・コンポーネントにアクセスするために、アップグレード・クライアントは、対応するソフトウェア・コンポーネントの識別情報を含む関数コールを、クライアント・デバイスの主プログラムから受け取り、VTから対応するソフトウェア・コンポーネントのスタート・アドレスを読み取り、対応するソフトウェア・コンポーネントに対するコールを生成する。したがって、第1EBSCが第2EBSCをコールすると、アップグレード・クライアントは関数コール・シーケンスを変更し、スタティック・アドレスを用いて直接第2EBSCをコールする代わりに、第1EBSCがスタティック・アドレスを用いてアップグレード・クライアントのAPIをコールするようにする。コールされたAPIは、ランタイムVTの対応するスタティック・アドレスおよび引数を用いて、受け取ったコールを第2EBSCのコールに変換する。
図7は、一実施形態の下における、DAを用いた関数コールのフロー図700である。ホスト・デバイスの主プログラムは、デバイス・メモリ内に格納されているEBSCを用いて、ユーザが要求する機能に対応する。ユーザによって機能が要求された場合、クライアント・デバイスの主プログラムのEBSCは、スタティック・アドレスを用いて、アップグレード・クライアントのコンポーネントを直接コールすることによって、特定の機能と関連付けられたEBSCをコールする。ブロック702において、コールに応答して、アップグレード・クライアントは、主プログラムから、関数またはEBSC識別、およびこの機能に対する引数を含む情報を受ける。ブロック704において、アップグレード・クライアントはVTにアクセスする。VTは、主プログラムに利用可能なEBSC毎のエントリを、当該EBSCの対応する開始アドレスと共に含む。アップグレード・クライアントは、ブロック706において、開始アドレスと、関連する引数をVTから読み出す。開始アドレス情報を、主プログラムから受け取った、コールされEBSCの情報と共に用いて、アップグレード・クライアントは、ブロック708において、実際の関数に対するコール、および対応するEBSCを、受信した全ての引数と共に生成する。
図5およびメモリ130のコンポーネント間の相互作用に戻り、関数アドレス変換API520は、図7を参照して先に説明したように、特定のホスト・デバイス関数に伴うEBSCに対して、クライアント・デバイスの主プログラム132からコールを生成する。クライアント・デバイスの主プログラム132は、直接関数アドレス変換API520をコールすることによって、特定の関数に伴うEBSCをコールする。API520の直接コールは、EBSCの直接コールの代わりに行われる。コールの時点において、関数アドレス変換API520は、主プログラム132から、関数識別情報およびこの関数に対する引数を含む情報を受け取る。
コールに応答して、関数アドレス変換API520は、VT312にアクセスする。VT512は、主プログラム132に利用可能な関数毎のエントリを、デバイス・メモリ130における当該関数の対応する開始アドレスと共に含む。関数アドレス変換API520は、主プログラム132が要求する関数の開始アドレスをVT512から読み取り、この開始アドレス情報を、主プログラム132から受け取った、コールされたEBSCの情報と共に用いて、実際の関数に対するコールを、受け取った全ての引数と共に生成する。
一実施形態のアップグレード・クライアント126は、ここでは予約API522と呼ぶ、EBSC522の新バージョンの予約のためにAPIを用いて、EBSCまたはEBSCグループの新バージョンを収容するために、メモリ内のエリアを特定し予約する。図5を参照すると、予約API522は、アップグレード・クライアント126によってコールされると、新EBSCバージョンに対する識別情報、この新バージョンのファイル・サイズを含む情報を受け取る。新EBSCバージョンのファイル・サイズは、新EBSCバージョンを格納するためにデバイス・メモリ130に予約すべきエリアのサイズである。予約API522は、メモリ130内にしかるべきエリアを特定し、メモリ・エリアの予約に成功すると、要求した予約エリアの開始アドレスを戻す。図8は、一実施形態の下において、予約API522を用いて、EBSCの新バージョンを収容するためのメモリ・エリアを予約する際のフロー図である。
要求されたサイズのメモリ・ブロックを割り当てる際、予約API522は、1組のルールを以下のように適用するが、代替実施形態では、異なるルールを適用して同等の結果を得ることもできる。図9は、一実施形態の下において、予約APIのルールを用いてEBSCの新バージョンを収容するためのメモリ・ブロックを突き止める際のフロー図900である。ブロック902において、新たなEBSCのサイズに関する情報を受けると、予約APIは、新たなEBSCのサイズが元のEBSCのそれを超過するか否か、ブロック904において判定を行う。新たなEBSCのサイズが対応する元のEBSCのサイズ以下であれば、ブロック906において、予約APIは、対応する元のEBSCが現在占有しているメモリ・ブロックを、新たなEBSCを受けるために割り当てる。そうでなければ、予約APIは、要求されたサイズを有するメモリ・ブロックを、予約されているメモリ・エリア内にある使用可能なメモリから突き止めようとする。
探索を続ける際、予約APIは、ブロック908において、クライアント・デバイスの予約されているメモリ・エリアを探索し、要求されたサイズを有するメモリ・ブロックを求める。適切なサイズのブロックが予約メモリ・エリア内で見つかった場合、ブロック910において、予約APIはそのメモリ・ブロックを、新たなEBSCを受け取るために割り当てる。予約メモリ・エリア内に適切なサイズのメモリ・ブロックが得られない場合、ブロック912において、予約APIはガベージ・テーブルにアクセスする。ブロック914において、予約APIは、ガベージ・テーブル内のエントリに対応する未使用エリア間で、要求されたサイズのメモリ・ブロックを突き止める試みの中で、ガベージ・テーブルの情報を用いて、主メモリ・プログラムの未使用メモリ・エリアを探索する。一実施形態の未使用エリアを、ここではガベージ・エリアと呼び、主プログラムの未使用エリアを含むが、実施形態はそのように限定されているのではない。適切なサイズのメモリ・ブロックが未使用メモリ・エリア内で見つかった場合、ブロック916において、予約APIはそのブロックを、新たなEBSCを受け取るために割り当てる。
一実施形態の予約APIは、適切なサイズのメモリ・ブロックを突き止めることができない場合、ブロック918において、ガベージ・コレクションとここでは呼ばれているプロセスを開始する。また、予約APIは、ガベージ・テーブルのエントリ全てが塞がっているときにも、ガベージ・コレクションを開始する。図5を参照すると、ガベージ・コレクション用API524は、ここではガベージ・コレクションAPI524と呼ぶが、予約API522によってコールされるが、そのように限定されるのではない。ガベージ・コレクション用API524は、一般に引数を受け取らず、EBSCおよびEBSC更新のために予約したエリアにおける全てのガベージを消去するが、そのように限定されるのではない。
前述のように、予約API522は、要求された予約サイズに十分なメモリを見つけることができない場合、またはガベージ・エントリ・テーブルが満杯になったときに、ガベージ・コレクションを開始する。図10は、一実施形態の下におけるガベージ・コレクションのフロー図1000である。ガベージ・コレクションを開始する際、予約APIはガベージ・コレクションAPIをコールする。コールされると、ブロック1002において、ガベージ・コレクションAPIはガベージ・テーブル・エントリを読み取り、ブロック1004において、デバイス・メモリの埋め込みソフトウェア・エリアを書き直させ、メモリのEBSCを順次メモリの上に向かってパックしていく。代替実施形態では、EBSCを主メモリの下に向かってパックしてもよいが、実施形態はそのように限定されているのではない。このパッキング処理により、埋め込みソフトウェア・エリアにおける未使用エリアを除去する。
このパッキング処理に続いて、ガベージ・コレクションAPIは、ブロック1006において、予約メモリ・エリアに格納されている各EBSCのサイズを評価し、そのサイズを、その書き直し以後における埋め込みソフトウェア・エリアの主プログラムに残っているあらゆる未使用メモリ・ブロックと比較する。この評価は、埋め込みソフトウェア・エリアの書き換えの後に残っている未使用メモリの量が、予約メモリ・エリアのいずれのEBSCでも収容可能であり、可能であれば、EBSCを予約メモリ・エリアから、デバイス・メモリの埋め込みソフトウェア・エリアに移動させることができるか否か判定を行う。予約メモリ・エリアのEBSCは順次評価されるが、実施形態はそのように限定されるのではない。ブロック1008において、EBSCは、予約メモリ・エリアからEBSCのサイズが許す埋め込みソフトウェア・エリアに書き直される。一実施形態において、EBSCが書き直されると、これらは順次、パックされたEBSCに続いて埋め込みソフトウェア・エリアに格納される。
予約メモリ・エリアに格納されたEBSCの評価は、全てのEBSCを埋め込みソフトウェア・エリアに移動し終えるまで、または埋め込みソフトウェア・エリア内に、予約メモリ・エリアのEBSCを収容できる程大きな埋め込みソフトウェア・エリアが残っていないと判定されるまで継続する。埋め込みソフトウェア・エリア内に収容することができないEBSCはいずれも、予約メモリ・エリア内に残るが、実施形態はそのように限定されるのではない。
パッキングおよび移動処理が完了すると、ブロック1010において、ガベージ・コレクションAPIは、ホスト・デバイスの主メモリの未使用メモリ・ブロックを予約メモリ・エリアとして指定し直すことにより、ホスト・デバイス・メモリを再分配する。更に、ステップ1012において、予約メモリ・エリア・ポインタをリセットして、予約メモリ・エリア内で使用可能なメモリの開始アドレスを維持する。加えて、ブロック1014において、ガベージ・テーブルを書き直し、未使用メモリ・エリアのステータスを反映させる。また、アップグレード・クライアントは、同じEBSCの元のバージョンが占有するメモリ・エリア以外のいずれかのメモリ・エリアへのEBSCの新たなバージョンの書き込みの後に、ベクトル・テーブルを更新する。
図11は、一実施形態の下において、動的アドレシングを用いた埋め込みソフトウェアの開発および展開プロセスのブロック図1100である。この図1100は、ソフトウェア・コンポーネント分配部1102によるEBSCの開発から、DAに基づくデバイス・メモリ管理を行う一実施形態のアップグレード・クライアントを用いたデバイスROMの初期化までのプロセスを示す。
ソフトウェア・コンポーネント分配部1102のコンポーネントは、新EBSCのソース・コードを受信し、前述のように、ソース・コードをクライアント・デバイスに配信する。クライアント・デバイスは、新EBSCソース・コードをコンパイルする(1103)。ソース・コードのコンパイル(1103)に続いて、得られたEBSCオブジェクト・コードは、第1リンカ1106に転送し、第1リンカ1106は、新EBSCの登録の一部として、新EBSCに対応するマップ・ファイル1104を生成する。
ベクトル生成ツール1105は、マップ・ファイル1104の情報を用いて、EBSCに対応する初期VT1108を生成し、VT1108を第2リンカ1116に転送する。第2リンカ1116は、VT1108をマップ・ファイル1104の情報と共に、更に第1リンカ1106からの元の画像マップ・ファイルの情報を用いて、16進(テキスト)または二進ファイル1118を生成する。
16進(テキスト)または二進ファイル1118は、クライアント・デバイス122の埋め込みソフトウェア・エリア1120内にダウンロードされるが、代替実施形態では、16進ファイル1118をクライアント・デバイス122の他のメモリ・エリアに書き込むこともできる。クライアント・デバイス122のDMMクライアントのコンポーネントは、後続のクライアント・デバイス・ソフトウェアのソフトウェア・アップグレードの間、ベクトル・テーブル1108を保持し、したがってEBSCのダイナミック・アドレシングに対応する。
図4Aおよび図4Bを参照すると、フロー図の動作が、少なくとも1つのプロセッサの制御の下で行われるが、そのように限定されるのではない。これらのフロー図に示されているブロックの各々は、当技術分野では周知の種類であり、それ自体が含むことができる一連の動作は、ここでは説明する必要はない。当業者は、これらのフロー図、およびこの中で行った詳細な説明に基づいて、ソース・コード、マイクロコード、プログラム・ロジック・アレイを作成することができ、あるいはそれ以外でもブロック機能を実現することができる。これらのフロー図にしたがって動作するアルゴリズムまたはルーチンは、関連するプロセッサの一部をなす不揮発性メモリ内、関連するメモリ・エリア内、ディスクのような着脱可能媒体内に格納するか、あるいはハードワイヤ状とするか、電子的消去可能プログラム可能ROM(「EEPROM」)半導体チップのようなチップ内またはこれらのコンポーネントのいずれかの組み合わせに予めプログラムするが、そのように限定されるのではない。
前述の集中DAマネージャのコンポーネントは、共に動作する計算コンポーネントおよびデバイスのあらゆる集合体を含む。DAマネージャのコンポーネントは、更に大きなコンピュータ・システムまたはネットワーク内にあるコンポーネントまたはサブシステムとすることもできる。また、DAマネージャのコンポーネントは、あらゆる数のコンポーネント(図示せず)、例えば、他のバス、コントローラ、メモリ・デバイス、データ入出力(I/O)デバイスの間でも、いずれの数の組み合わせでも結合することができる。DAマネージャ・コンポーネントの機能は、あらゆる数/組み合わせの他のプロセッサ系のコンポーネントの間で分散することもできる。前述のメモリ・システムは、例えば、当技術分野では公知の種々のメモリ・システムを含む。
ここに記載するDAおよびDAマネージャは、ダイナミック・アドレシング・マネージャと、プロセッサに結合されている複数のソフトウェア・コンポーネントとを備えている携帯通信デバイスを含み、ダイナミック・アドレシング・マネージャが1つ以上のリンクを含む、各リンクが、コンポーネントにおいて識別された各参照と、この識別された参照に対応するソフトウェア・コンポーネントの別の1つとの間にプログラム・リンクを形成し、ダイナミック・アドレシング・マネージャが、コードの実行中リンクを用いて複数のソフトウェア・コンポーネントをリンクする。
一実施形態の各リンクは、ダイナミック・アドレシング・マネージャにおいて固定アドレスを有する。
一実施形態の参照は、関数コールおよび変数参照の内少なくとも一方を含む。
一実施形態の変数参照は、グローバル変数参照および定数変数参照の内少なくとも一方を含む。
一実施形態のダイナミック・アドレシング・マネージャは、関数コールおよび変数参照の少なくとも一方についての集中ジャンプ・テーブルである、ベクトル・テーブルを備えている。
一実施形態の複数のソフトウェア・コンポーネントをリンクする場合、第1コンポーネントからベクトル・テーブルのエントリに参照を誘導すること、およびエントリの情報を用いて、参照を第2コンポーネントに誘導し直すことの少なくとも一方から成る。
一実施形態のダイナミック・アドレシング・マネージャは、少なくとも1つの集中セクションを備えている。一実施形態の変数参照を集中セクションに割り当てる。一実施形態の複数のソフトウェア・コンポーネントをリンクする場合、変数参照への参照を、変数参照に対応する集中セクションのアドレスに誘導することを含む。
一実施形態のデバイスは、更に、アップグレード・クライアントを備えており、アップグレード・クライアントは、複数のソフトウェア・コンポーネントをアップグレードし、アップグレードは、ワイヤレス結合を介してアップグレード・ファイルを受信すること、アップグレード・ファイルの内容に対して適切に、複数のソフトウェア・コンポーネントの少なくとも1つをアップグレードすること、ダイナミック・アドレシング・マネージャのリンクの情報をアップグレードすることにより、複数のソフトウェア・コンポーネント間でリンクをアップグレードすることの内少なくとも1つを含む。
一実施形態のデバイスは、更に、1つ以上のメモリ・エリアを含むメモリを備えており、ダイナミック・アドレシング・マネージャをメモリに格納してある。一実施形態のメモリは、ランダム・アクセス・メモリおよびリード・オンリ・メモリの内少なくとも一方を含む。
一実施形態のクライアント・デバイスは、セルラ電話機、携帯計算デバイス、およびパーソナル・ディジタル・アシスタントの内少なくとも1つである。
ここに記載するDAおよびDAマネージャは、クライアント・デバイスのデバイス・メモリに格納されているコードを、複数のコンポーネントに編成するステップと、複数のコンポーネントの各々に含まれている1つ以上の参照を識別するステップであって、各参照がコードの1つ以上の他のコンポーネントに対する参照である、ステップと、1つ以上のリンクを含むマネージャ・コンポーネントを生成するステップであって、各リンクが、1つのコンポーネントにおいて識別された各参照と、識別された参照に対応する他のコンポーネントとの間のプログラム・リンクを形成する、ステップと、コードの実行中に、マネージャ・コンポーネントのリンクを用いて、複数のコンポーネントをリンクするステップとの内少なくとも1つを備えている方法を含む。
一実施形態の各リンクは、マネージャ・コンポーネントにおいて固定アドレスを有する。
一実施形態の参照は、関数コール、グローバル変数参照、および定数変数参照の内少なくとも1つを含む。
一実施形態の参照は、相対オフセット・ジャンプ/分岐命令、および絶対オフセット・ジャンプ/分岐命令の少なくとも一方を含む。
一実施形態の参照は、グローバル定数変数、グローバル・リード/ライト・データ・アドレス、およびグローバル・ゼロ初期化データ・アドレスの内少なくとも1つを含む。
一実施形態のマネージャ・コンポーネントを生成するステップは、更に、関数コールおよびグローバル変数の少なくとも一方に対する集中ジャンプ・テーブルである、ベクトル・テーブルを生成するステップを含む。一実施形態の複数のコンポーネントをリンクするステップは、更に、第1コンポーネントからベクトル・テーブルのエントリに参照を誘導するステップと、エントリの情報を用いて、参照を第2コンポーネントに誘導し直すステップとの少なくとも1つを含む。一実施形態の参照は、関数コールおよび変数の少なくとも一方を含む。
一実施形態のマネージャ・コンポーネントを生成するステップは、更に、マネージャ・コンポーネントの少なくとも1つの集中セクションを生成するステップと、グローバル定数変数を生成した集中セクションに割り当てるステップとの少なくとも1つを含む。一実施形態の複数のコンポーネントをリンクするステップは、更に、グローバル定数変数への参照を、グローバル定数変数に対応する集中セクションのアドレスに誘導するステップを含む。一実施形態のマネージャ・コンポーネントを生成するステップは、更に、グローバル・リード/ライト・データ・アドレスを生成した集中セクションに割り当てるステップを含んでもよい。一実施形態の複数のコンポーネントをリンクするステップは、更に、グローバル・リード/ライト・データ・アドレスへの参照を、グローバル・リード/ライト・データ・アドレスに対応する集中セクションのアドレスに誘導するステップを含んでもよい。また、一実施形態のマネージャ・コンポーネントを生成するステップは、更に、グローバル・ゼロ初期化データ・アドレスを生成した集中セクションに割り当てるステップを含んでもよい。また、一実施形態の複数のコンポーネントをリンクするステップは、更に、グローバル・ゼロ初期化データ・アドレスへの参照を、このグローバル・ゼロ初期化データ・アドレスに対応する集中セクションのアドレスに誘導するステップを含んでもよい。
一実施形態の方法は、更に、クライアント・デバイスの1つ以上のメモリ・エリアに、マネージャ・コンポーネントを格納するステップを含む。一実施形態のメモリ・エリアは、ランダム・アクセス・メモリおよびリード・オンリ・メモリの少なくとも1つにおけるエリアを含む。
一実施形態の方法は、更に、コードをアプグレードするステップを含み、このアップグレードは、ワイヤレス結合を介して、アップグレード・ファイルを受信するステップと、アップグレード・ファイルの内容に対して適切なように、複数のコンポーネントの少なくとも1つをアップグレードするステップと、マネージャ・コンポーネントをアップグレードすることにより、アップグレードしたコードの複数のコンポーネント間でリンクをアップグレードするステップとの内少なくとも1つを含む。
一実施形態のクライアント・デバイスは、セルラ電話機、携帯計算デバイス、およびパーソナル・ディジタル・アシスタントの内少なくとも1つである。
ここに記載するDAおよびDAマネージャは、アップグレード・ファイルを生成する第1アップグレード・コンポーネントを含む第1デバイスであって、アップグレード・ファイルが、電子ファイルにおけるエラーを修復するための情報と、電子ファイルに機能性を追加するための情報の内少なくとも一方を含む、第1デバイスと、第2アップグレード・コンポーネントと、ダイナミック・アドレシング・マネージャと、複数のソフトウェア・コンポーネントとを備えている移動通信デバイスの内少なくとも一方を備えているシステムを含み、ダイナミック・アドレシング・マネージャが1つ以上のリンクを含み、各リンクが、1つのコンポーネントにおいて識別される各参照と、識別された参照に対応するソフトウェア・コンポーネントの別の1つとの間にプログラム・リンクを形成し、ダイナミック・アドレシング・マネージャが、コードの実行中、リンクを用いて、複数のソフトウェア・コンポーネントをリンクする。
一実施形態のシステムは、更に、ワイヤレス結合を備えており、第2アップグレード・コンポーネントは、ワイヤレス結合を介して、アップグレード・ファイルを受信し、第2アップグレード・コンポーネントは、アップグレード・ファイルの情報を用いて、複数のソフトウェア・コンポーネントを自動的にアップグレードする。一実施形態のアップグレードは、アップグレード・ファイルの内容に対して適切に、複数のソフトウェア・コンポーネントの少なくとも1つをアップグレードすることと、ダイナミック・アドレシング・マネージャのリンクの情報をアップグレードすることにより、複数のソフトウェア・コンポーネント間でリンクをアップグレードすることとから成る。
一実施形態のシステムは、ダイナミック・アドレシング・マネージャにおいて固定アドレスを有するリンクを含む。
一実施形態のシステムの参照は、関数コールおよび変数参照の少なくとも1つを含む。
一実施形態のシステムのダイナミック・アドレシング・マネージャは、関数コールおよび変数参照の少なくとも一方に対する集中ジャンプ・テーブルであり、ベクトル・テーブルを備えている。
一実施形態のシステムのダイナミック・アドレシング・マネージャは、少なくとも1つの集中セクションを備えており、少なくとも1つの変数参照を集中セクションに割り当てる。
一実施形態のシステムの第1デバイスは、第2デバイス上にホストされているソフトウェア・コンポーネントの少なくとも1つのプロバイダによってアクセス可能な、プロセッサに基づくデバイスである。
一実施形態のシステムの移動通信デバイスは、セルラ電話機、携帯計算デバイス、およびパーソナル・ディジタル・アシスタントの内少なくとも1つを含む。
一実施形態の複数のソフトウェア・コンポーネントは、ダイナミック・リンク・ライブラリ・ファイル、共有オブジェクト・ファイル、埋め込みソフトウェア・コンポーネント(EBSC)、ファームウェア・ファイル、実行可能ファイル、16進データ・ファイルを含むデータ・ファイル、システム・コンフィギュレーション・ファイル、および個人使用データを含むファイルを含む、ソフトウェア・ファイルから成る。
ここに記載するDAおよびDAマネージャは、移動通信デバイスを含み、クライアント・デバイスのデバイス・メモリに格納されているコードを、複数のコンポーネントに編成する手段と、複数のコンポーネントの各々に含まれている1つ以上の参照を識別する手段であって、各参照がコードの1つ以上の他のコンポーネントに対する参照である、手段と、1つ以上のリンクを含むマネージャ・コンポーネントを生成する手段であって、各リンクが、1つのコンポーネントにおいて識別された各参照と、識別された参照に対応する他のコンポーネントとの間のプログラム・リンクを形成する、手段と、コードの実行中に、マネージャ・コンポーネントのリンクを用いて、複数のコンポーネントをリンクする手段との内少なくとも1つを備えている。
一実施形態のデバイスのマネージャ・コンポーネントを生成する手段は、更に、関数コールおよびグローバル変数の少なくとも一方に対する集中ジャンプ・テーブルである、ベクトル・テーブルを生成する手段を備えている。一実施形態のデバイスの複数のコンポーネントをリンクする手段は、更に、第1コンポーネントからベクトル・テーブルのエントリに参照を誘導する手段と、エントリの情報を用いて、参照を第2コンポーネントに誘導し直す手段との内少なくとも1つを備えている。
一実施形態のデバイスのマネージャ・コンポーネントを生成する手段は、更に、マネージャ・コンポーネントの少なくとも1つの集中セクションを生成する手段と、生成した集中セクションに対して変数参照を割り当てる手段との内少なくとも1つを備えている。一実施形態のデバイスの複数のコンポーネントをリンクする手段は、更に、変数参照への参照を、変数参照に対応する集中セクションのアドレスに誘導する手段を備えてもよい。
一実施形態のデバイスは、更に、コードをアップグレードする手段を備えており、ワイヤレス結合を介してアップグレード・ファイルを受信する手段と、アップグレード・ファイルの内容に適切なように、複数のコンポーネントの少なくとも1つをアップグレードする手段と、マネージャ・コンポーネントをアップグレードすることによって、複数のアップグレードしたコードのコンポーネント間におけるリンクをアップグレードする手段の内少なくとも1つを含む。
ここに記載するDAおよびDAマネージャは、実行可能命令を含む機械読み取り可能媒体を含み、処理システムにおいて実行すると、クライアント・デバイスのデバイス・メモリに格納されているコードを、複数のコンポーネントに編成し、複数のコンポーネントの各々に含まれている1つ以上の参照を識別し、各参照がコードの1つ以上の他のコンポーネントに対する参照であり、1つ以上のリンクを含むマネージャ・コンポーネントを生成し、各リンクが、1つのコンポーネントにおいて識別された各参照と、この識別された参照に対応する他のコンポーネントとの間のプログラム・リンクを形成し、および/または、コードの実行中に、マネージャ・コンポーネントのリンクを用いて、複数のコンポーネントをリンクすることによって、携帯デバイスにおけるソフトウェア・コンポーネントをリンクする。
一実施形態の媒体は、更に、ワイヤレス結合を介してアップグレード・ファイルを受信し、アップグレード・ファイルの内容に適切なように、複数のコンポーネントの少なくとも1つをアップグレードし、および/または、マネージャ・コンポーネントをアップグレードすることによって、複数のアップグレードしたコードのコンポーネント間におけるリンクをアップグレードすることによって、コードをアップグレードすることを含む。
ここに記載する集中DAマネージャの態様は、フィールド・プログラマブル・ゲート・アレイ(「FPGA」)、プログラマブル・アレイ・ロジック(「PAL」)デバイス、電気的プログラム可能ロジックおよびメモリ・デバイスのようなプログラマブル・ロジック・デバイス(「PLD」)、標準的なセルに基づくデバイス、ならびに特定用途集積回路(「ASIC」)を含む種々の回路のいずれにもプログラムされる機能性として実現することができる。DAマネージャの態様を実施するためのその他の可能性には、メモリを有するマイクロコントローラ(EEPROMのような)、埋め込みマイクロプロセッサ、ファームウェア、ソフトウェア等を含む。更に、本発明の態様は、ソフトウェアに基づく回路エミュレーション、ディスクリート・ロジック(連続および組み合わせ)、カスタム・デバイス、ファジイ(ニューラル)ロジック、量子デバイス、および上述のデバイスの種類のいずれのハイブリッドを有するマイクロプロセッサにおいても具体化することができる。勿論、基盤となるデバイス技術は、種々のコンポーネントの種類、例えば、相補金属酸化物半導体(CMOS)のような金属酸化物半導体電界効果トランジスタ(MOSFET)技術、エミッタ結合ロジック(ECL)のようなバイポーラ技術、ポリマ技術(例えば、シリコン共役ポリマおよび金属共役ポリマ−金属構造)、混合アナログおよびディジタルなどにおいて提供することができる。
尚、ここに開示した種々の機能は、その挙動、レジスタ転送、論理コンポーネント、および/またはその他の特性に関して、ハードウェア、ファームウェア、および/またはデータとして、および/または種々の機械読み取り可能またはコンピュータ読み取り可能媒体内に具体化された命令のあらゆる数の組み合わせを用いても記述可能であることを注記しておく。このようなフォーマット化したデータおよび/または命令を具体化することができるコンピュータ読み取り可能媒体は、限定ではなく、種々の形態の不揮発性記憶媒体(例えば、光学、磁気、または半導体記憶媒体)、ならびにワイヤレス、光学、または有線シグナリング媒体あるいはそのいずれの組み合わせを通じてでもこのようなフォーマット化データおよび/または命令を転送するために用いることができる搬送波を含む。搬送波によるこのようなフォーマット化データおよび/または命令の転送の例には、限定ではなく、1つ以上のデータ転送プロトコル(例えば、HTTP、FTP、SMTP等)によるインターネットおよび/またはその他のコンピュータ・ネットワークを通じた転送(アップロード、ダウンロード、電子メール等)が含まれる。
文脈上特に必要であることが明らかでない限り、明細書および特許請求の範囲を通じて、「備える」、「備えている」等の言葉は、排他的または網羅的意味ではなく、包含的意味で解釈するものとする。即ち、「含むが、限定されない」という意味である。単数または複数を用いる単語も、それぞれ、複数および単数を含むものとする。加えて、「ここでは」、「以下で」「先に」、「以下に」という単語、および同様な意義の単語は、本願において用いられる場合、本願全体を指すのであり、本願のいずれの特定部分を指すのではないこととする。「または」という単語が、2つ以上の項目のリストについて用いられる場合、この単語は、リスト内にある項目のいずれか、リストにある項目の全て、およびリストにある項目のあらゆる組み合わせという、この単語の解釈全てを包含することとする。
DAマネージャの例示した実施形態についての以上の説明は、それで全てであることも、DAマネージャを正確に開示した形態に限定することも意図していない。ここでは例示の目的のために、DAマネージャの具体的な実施形態およびその例について記載したが、当業者には認められるように、DAマネージャの範囲内で種々の同等な変更が可能である。ここに示したDAマネージャの教示は、前述のメモリ・システムや方法だけでなく、その他の処理システムや方法にも適用可能である。
前述の種々の実施形態の要素や作用は、組み合わせると更に別の実施形態を設けることができる。以上の詳細な説明に鑑みれば、これらおよびその他の変更をDAマネージャに行うことができる。
一般に、以下の特許請求の範囲では、用いられる用語がDAマネージャを、明細書および特許請求の範囲に開示されている特定の実施形態に限定すると解釈してはならず、特許請求の範囲の下で動作する処理システム全てを含むように解釈してしかるべきである。したがって、DAマネージャは、開示に限定されるのではなく、代わりに、DAマネージャの範囲は、特許請求の範囲によってその全体が決定されるものとする。
DAマネージャの数種類の態様を、請求項の形態で提示するが、本発明者は、DAマネージャの種々の態様を、いずれの数の請求項の形態でも想定している。例えば、DAマネージャの一態様のみが、機械読み取り可能媒体に具体化したものとして明記されているが、他の態様も同様に機械読み取り可能媒体に具体化することもできる。したがって、本発明者は、本願を出願した後でも、更に別の請求項を追加し、DAマネージャの別の態様に対する、このような更に別の請求項を追求する権利を保有するものとする。
図1は、一実施形態の下における、ダイナミック・アドレシング(「DA」)マネージャを有するクライアント・デバイスを含むシステムのブロック図である。 図2は、一実施形態の下における、サービス・プロバイダ・インフラストラクチャ例のブロック図である。 図3は、一実施形態の下における、DAマネージャと画像のソフトウェア・コンポーネントとの間の相互作用を示す、DAのブロック図である。 図4Aは、一実施形態の下における、DAマネージャを含む画像を構築する際のフロー図を示す。 図4Bは、一実施形態の下における、DAマネージャを含む画像を構築する際のフロー図を示す。 図5は、図1および図3の実施形態の下における、ソフトウェア画像のコンポーネントを含むメモリのコンポーネント、アップグレード・クライアント、およびDMMクライアント間の相互作用の一例を示す、デバイス・メモリのブロック図である。 図6は、一実施形態の下において、DAを用いてEBSCまたはEBSCグループをアップグレードする際のフロー図である。 図7は、一実施形態の下における、DAを用いた関数コールのフロー図である。 図8は、一実施形態の下において、新たなバージョンのEBSCを収容するためのメモリ・エリアを予約する際のフロー図である。 図9は、一実施形態において、新たなバージョンのEBSCを収容するためのメモリ・ブロックの位置を特定する際のフロー図である。 図10は、一実施形態の下における、ガベージ・コレクションのフロー図である。 図11は、一実施形態の下における、DAを用いての埋め込みソフトウェア開発および展開プロセスのブロック図である。

Claims (49)

  1. ダイナミック・アドレシング・マネージャと、プロセッサに結合された複数のソフトウェア・コンポーネントとを備えている携帯通信デバイスであって、前記ダイナミック・アドレシング・マネージャが1つ以上のリンクを含み、各リンクが、コンポーネントにおいて識別された各参照と、該識別された参照に対応するソフトウェア・コンポーネントの別の1つとの間にプログラム・リンクを形成し、前記ダイナミック・アドレシング・マネージャが、前記コードの実行中前記リンクを用いて前記複数のソフトウェア・コンポーネントをリンクする、携帯通信デバイス。
  2. 請求項1記載のデバイスにおいて、各リンクは、前記ダイナミック・アドレシング・マネージャにおいて固定アドレスを有する、デバイス。
  3. 請求項1記載のデバイスにおいて、前記参照は、関数コールおよび変数参照の内少なくとも一方を含む、デバイス。
  4. 請求項1記載のデバイスにおいて、前記変数参照は、グローバル変数参照および定数変数参照の内少なくとも一方を含む、デバイス。
  5. 請求項1記載のデバイスにおいて、前記ダイナミック・アドレシング・マネージャは、関数コールおよび変数参照の少なくとも一方についての集中ジャンプ・テーブルである、ベクトル・テーブルを備えている、デバイス。
  6. 請求項5記載のデバイスにおいて、前記複数のソフトウェア・コンポーネントをリンクする場合、
    第1コンポーネントから前記ベクトル・テーブルのエントリに参照を誘導し、
    前記エントリの情報を用いて、前記参照を第2コンポーネントに誘導し直す、
    デバイス。
  7. 請求項1記載のデバイスにおいて、前記ダイナミック・アドレシング・マネージャは、少なくとも1つの集中セクションを備えている、デバイス。
  8. 請求項7記載のデバイスにおいて、少なくとも1つの変数参照を前記集中セクションに割り当てる、デバイス。
  9. 請求項8記載のデバイスにおいて、前記複数のソフトウェア・コンポーネントをリンクする場合、前記変数参照への参照を、前記変数参照に対応する前記集中セクションのアドレスに誘導することを含む、デバイス。
  10. 請求項1記載のデバイスであって、更に、アップグレード・クライアントを備えており、該アップグレード・クライアントは、前記複数のソフトウェア・コンポーネントをアップグレードし、アップグレードは、
    ワイヤレス結合を介してアップグレード・ファイルを受信し、
    前記アップグレード・ファイルの内容に対して適切に、前記複数のソフトウェア・コンポーネントの少なくとも1つをアップグレードし、
    前記ダイナミック・アドレシング・マネージャのリンクの情報をアップグレードすることにより、前記複数のソフトウェア・コンポーネント間で前記リンクをアップグレードする、
    ことを含む、デバイス。
  11. 請求項1記載のデバイスであって、更に、1つ以上のメモリ・エリアを含むメモリを備えており、前記ダイナミック・アドレシング・マネージャを前記メモリに格納してある、デバイス。
  12. 請求項11記載のデバイスにおいて、前記メモリは、ランダム・アクセス・メモリおよびリード・オンリ・メモリの内少なくとも一方を含む、デバイス。
  13. 請求項1記載のデバイスにおいて、前記クライアント・デバイスは、セルラ電話機、携帯計算デバイス、およびパーソナル・ディジタル・アシスタントの内少なくとも1つである、デバイス。
  14. クライアント・デバイスのデバイス・メモリに格納されているコードを、複数のコンポーネントに編成するステップと、
    前記複数のコンポーネントの各々に含まれている1つ以上の参照を識別するステップであって、各参照が前記コードの1つ以上の他のコンポーネントに対する参照である、ステップと、
    1つ以上のリンクを含むマネージャ・コンポーネントを生成するステップであって、各リンクが、1つのコンポーネントにおいて識別された各参照と、該識別された参照に対応する他のコンポーネントとの間のプログラム・リンクを形成する、ステップと、
    前記コードの実行中に、前記マネージャ・コンポーネントのリンクを用いて、前記複数のコンポーネントをリンクするステップと、
    を備えている方法。
  15. 請求項14記載の方法において、各リンクが、前記マネージャ・コンポーネントにおいて固定アドレスを有する、方法。
  16. 請求項14記載の方法において、前記参照が、関数コール、グローバル変数参照、および定数変数参照の内少なくとも1つを含む、方法。
  17. 請求項14記載の方法において、前記参照は、相対オフセット・ジャンプ/分岐命令、および絶対オフセット・ジャンプ/分岐命令の少なくとも一方を含む、方法。
  18. 請求項14記載の方法において、前記参照は、グローバル定数変数、グローバル・リード/ライト・データ・アドレス、およびグローバル・ゼロ初期化データ・アドレスの内少なくとも1つを含む、方法。
  19. 請求項14記載の方法において、前記マネージャ・コンポーネントを生成するステップは、更に、関数コールおよびグローバル変数の少なくとも一方に対する集中ジャンプ・テーブルである、ベクトル・テーブルを生成するステップを含む、方法。
  20. 請求項19記載の方法において、前記複数のコンポーネントをリンクするステップは、更に、
    第1コンポーネントから前記ベクトル・テーブルのエントリに参照を誘導するステップと、
    前記エントリの情報を用いて、前記参照を第2コンポーネントに誘導し直すステップと、
    を含む、方法。
  21. 請求項19記載の方法において、前記参照は、関数コールおよび変数の少なくとも一方を含む、方法。
  22. 請求項14記載の方法において、前記マネージャ・コンポーネントを生成するステップは、更に、
    前記マネージャ・コンポーネントの少なくとも1つの集中セクションを生成するステップと、
    グローバル定数変数を前記生成した集中セクションに割り当てるステップと、
    を含む、方法。
  23. 請求項22記載の方法において、前記複数のコンポーネントをリンクするステップは、更に、前記グローバル定数変数への参照を、該グローバル定数変数に対応する前記集中セクションのアドレスに誘導するステップを含む、方法。
  24. 請求項22記載の方法において、前記マネージャ・コンポーネントを生成するステップは、更に、グローバル・リード/ライト・データ・アドレスを前記生成した集中セクションに割り当てるステップを含む、方法。
  25. 請求項24記載の方法において、前記複数のコンポーネントをリンクするステップは、更に、前記グローバル・リード/ライト・データ・アドレスへの参照を、該グローバル・リード/ライト・データ・アドレスに対応する前記集中セクションのアドレスに誘導するステップを含む、方法。
  26. 請求項22記載の方法において、前記マネージャ・コンポーネントを生成するステップは、更に、グローバル・ゼロ初期化データ・アドレスを前記生成した集中セクションに割り当てるステップを含む、方法。
  27. 請求項26記載の方法において、前記複数のコンポーネントをリンクするステップは、更に、前記グローバル・ゼロ初期化データ・アドレスへの参照を、該グローバル・ゼロ初期化データ・アドレスに対応する前記集中セクションのアドレスに誘導するステップを含む、方法。
  28. 請求項14記載の方法であって、更に、前記クライアント・デバイスの1つ以上のメモリ・エリアに、前記マネージャ・コンポーネントを格納するステップを含む、方法。
  29. 請求項28記載の方法において、前記メモリ・エリアは、ランダム・アクセス・メモリおよびリード・オンリ・メモリの少なくとも1つにおけるエリアを含む、方法。
  30. 請求項14記載の方法であって、更に、前記コードをアプグレードするステップを含み、該アップグレードは、
    ワイヤレス結合を介して、アップグレード・ファイルを受信するステップと、
    前記アップグレード・ファイルの内容に対して適切に、前記複数のコンポーネントの少なくとも1つをアップグレードするステップと、
    前記マネージャ・コンポーネントをアップグレードすることにより、アップグレードしたコードの前記複数のコンポーネント間で前記リンクをアップグレードするステップを、
    を含む、方法。
  31. 請求項14記載の方法において、前記クライアント・デバイスは、セルラ電話機、携帯計算デバイス、およびパーソナル・ディジタル・アシスタントの内少なくとも1つである、方法。
  32. アップグレード・ファイルを生成する第1アップグレード・コンポーネントを含む第1デバイスであって、前記アップグレード・ファイルが、電子ファイルにおけるエラーを修復するための情報と、前記電子ファイルに機能性を追加するための情報の内少なくとも一方を含む、第1デバイスと、
    第2アップグレード・コンポーネントと、ダイナミック・アドレシング・マネージャと、複数のソフトウェア・コンポーネントとを備えている移動通信デバイスであって、前記ダイナミック・アドレシング・マネージャが1つ以上のリンクを含み、各リンクが、1つのコンポーネントにおいて識別される各参照と、該識別された参照に対応する前記ソフトウェア・コンポーネントの別の1つとの間にプログラム・リンクを形成し、前記ダイナミック・アドレシング・マネージャが、前記コードの実行中、前記リンクを用いて、前記複数のソフトウェア・コンポーネントをリンクする、移動通信デバイスと、
    を備えている、システム。
  33. 請求項32記載のシステムであって、更に、ワイヤレス結合を備えており、前記第2アップグレード・コンポーネントは、前記ワイヤレス結合を介して、前記アップグレード・ファイルを受信し、前記第2アップグレード・コンポーネントは、前記アップグレード・ファイルの情報を用いて、前記複数のソフトウェア・コンポーネントを自動的にアップグレードする、システム。
  34. 請求項33記載のシステムにおいて、前記アップグレードは、前記アップグレード・ファイルの内容に対して適切に、前記複数のソフトウェア・コンポーネントの少なくとも1つをアップグレードすることと、前記ダイナミック・アドレシング・マネージャのリンクの情報をアップグレードすることにより、前記複数のソフトウェア・コンポーネント間で前記リンクをアップグレードするとから成る、システム。
  35. 請求項32記載のシステムにおいて、各リンクが、前記ダイナミック・アドレシング・マネージャにおいて固定アドレスを有する、システム。
  36. 請求項32記載のシステムにおいて、前記参照は、関数コールおよび変数参照の少なくとも1つを含む、システム。
  37. 請求項32記載のシステムにおいて、前記ダイナミック・アドレシング・マネージャは、関数コールおよび変数参照の少なくとも一方に対する集中ジャンプ・テーブルであり、ベクトル・テーブルを備えている、システム。
  38. 請求項32記載のシステムにおいて、前記ダイナミック・アドレシング・マネージャは、少なくとも1つの集中セクションを備えており、少なくとも1つの変数参照を前記集中セクションに割り当てる、システム。
  39. 請求項32記載のシステムにおいて、前記第1デバイスは、前記第2デバイス上にホストされているソフトウェア・コンポーネントの少なくとも1つのプロバイダによってアクセス可能な、プロセッサに基づくデバイスである、システム。
  40. 請求項32記載のシステムにおいて、前記移動通信デバイスは、セルラ電話機、携帯計算デバイス、およびパーソナル・ディジタル・アシスタントの内少なくとも1つを含む、システム。
  41. 請求項32記載のシステムにおいて、前記複数のソフトウェア・コンポーネントは、ダイナミック・リンク・ライブラリ・ファイル、共有オブジェクト・ファイル、埋め込みソフトウェア・コンポーネント(EBSC)、ファームウェア・ファイル、実行可能ファイル、16進データ・ファイルを含むデータ・ファイル、システム・コンフィギュレーション・ファイル、および個人使用データを含むファイルを含む、ソフトウェア・ファイルから成る、システム。
  42. 移動通信デバイスであって、
    クライアント・デバイスのデバイス・メモリに格納されているコードを、複数のコンポーネントに編成する手段と、
    前記複数のコンポーネントの各々に含まれている1つ以上の参照を識別する手段であって、各参照が前記コードの1つ以上の他のコンポーネントに対する参照である、手段と、
    1つ以上のリンクを含むマネージャ・コンポーネントを生成する手段であって、各リンクが、1つのコンポーネントにおいて識別された各参照と、該識別された参照に対応する他のコンポーネントとの間のプログラム・リンクを形成する、手段と、
    前記コードの実行中に、前記マネージャ・コンポーネントのリンクを用いて、前記複数のコンポーネントをリンクする手段と、
    を備えている移動通信デバイス。
  43. 請求項42記載のデバイスにおいて、前記マネージャ・コンポーネントを生成する手段は、更に、関数コールおよびグローバル変数の少なくとも一方に対する集中ジャンプ・テーブルである、ベクトル・テーブルを生成する手段を備えている、デバイス。
  44. 請求項43記載のデバイスにおいて、前記複数のコンポーネントをリンクする前記手段は、更に、
    第1コンポーネントから前記ベクトル・テーブルのエントリに参照を誘導する手段と、
    前記エントリの情報を用いて、前記参照を第2コンポーネントに誘導し直す手段と、
    を備えている、デバイス。
  45. 請求項42記載のデバイスにおいて、前記マネージャ・コンポーネントを生成する前記手段は、更に、
    前記マネージャ・コンポーネントの少なくとも1つの集中セクションを生成する手段と、
    前記生成した集中セクションに対して変数参照を割り当てる手段と、
    を備えている、デバイス。
  46. 請求項45記載のデバイスにおいて、前記複数のコンポーネントをリンクする手段は、更に、前記変数参照への参照を、該変数参照に対応する前記集中セクションのアドレスに誘導する手段を備えている、デバイス。
  47. 請求項42記載のデバイスであって、更に、前記コードをアップグレードする手段を備えており、
    ワイヤレス結合を介してアップグレード・ファイルを受信する手段と、
    前記アップグレード・ファイルの内容に適切なように、前記複数のコンポーネントの少なくとも1つをアップグレードする手段と、
    前記マネージャ・コンポーネントをアップグレードすることによって、前記複数のアップグレードしたコードのコンポーネント間におけるリンクをアップグレードする手段と、
    を含む、デバイス。
  48. 実行可能命令を含む機械読み取り可能媒体であって、処理システムにおいて実行すると、
    クライアント・デバイスのデバイス・メモリに格納されているコードを、複数のコンポーネントに編成し、
    前記複数のコンポーネントの各々に含まれている1つ以上の参照を識別し、各参照が前記コードの1つ以上の他のコンポーネントに対する参照であり、
    1つ以上のリンクを含むマネージャ・コンポーネントを生成し、各リンクが、1つのコンポーネントにおいて識別された各参照と、該識別された参照に対応する他のコンポーネントとの間のプログラム・リンクを形成し、
    前記コードの実行中に、前記マネージャ・コンポーネントのリンクを用いて、前記複数のコンポーネントをリンクする、
    ことによって、携帯デバイスにおけるソフトウェア・コンポーネントをリンクする、機械読み取り可能媒体。
  49. 請求項48記載の媒体であって、更に、
    ワイヤレス結合を介してアップグレード・ファイルを受信し、
    前記アップグレード・ファイルの内容に適切なように、前記複数のコンポーネントの少なくとも1つをアップグレードし、
    前記マネージャ・コンポーネントをアップグレードすることによって、前記複数のアップグレードしたコードのコンポーネント間におけるリンクをアップグレードする、
    ことによって、前記コードをアップグレードすることを含む、媒体。
JP2006536880A 2003-10-23 2004-10-22 集中daマネージャを用いた動的アドレシング(da) Pending JP2007511816A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US51376403P 2003-10-23 2003-10-23
PCT/US2004/035276 WO2005040988A2 (en) 2003-10-23 2004-10-22 Dynamic addressing (da) using a centralized da manager

Publications (1)

Publication Number Publication Date
JP2007511816A true JP2007511816A (ja) 2007-05-10

Family

ID=34520133

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006536880A Pending JP2007511816A (ja) 2003-10-23 2004-10-22 集中daマネージャを用いた動的アドレシング(da)

Country Status (6)

Country Link
US (1) US20050204351A1 (ja)
EP (1) EP1676195A4 (ja)
JP (1) JP2007511816A (ja)
KR (1) KR100871778B1 (ja)
CN (1) CN1973262B (ja)
WO (1) WO2005040988A2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2408658B (en) * 2003-11-25 2006-07-05 Surfkitchen Inc Communications system
US8347285B2 (en) * 2004-12-16 2013-01-01 Intel Corporation Embedded agent for self-healing software
US7200390B1 (en) * 2004-12-30 2007-04-03 Cellco Partnership Device software update transport and download
US20060184937A1 (en) * 2005-02-11 2006-08-17 Timothy Abels System and method for centralized software management in virtual machines
KR100747901B1 (ko) * 2005-07-18 2007-08-08 주식회사 팬택앤큐리텔 이동통신단말기의 실행 파일 압축 방법
US7735075B2 (en) 2005-12-01 2010-06-08 Samsung Electronics Co., Ltd. System and method for a pseudo dynamic link library (DLL) linker for a monolithic image in a wireless device
EP1806655A3 (en) * 2005-12-01 2009-02-25 Samsung Electronics Co., Ltd. System and method for providing monolithic image for use in a wireless device
KR101273914B1 (ko) * 2006-10-31 2013-06-12 에스케이플래닛 주식회사 플랫폼 라이브러리 다이나믹 링킹기능이구비된 단말장비 및 그 제어방법
US8572598B1 (en) * 2007-04-18 2013-10-29 Nvidia Corporation Method and system for upgrading software in a computing device
US9417851B2 (en) * 2009-05-13 2016-08-16 Adobe Systems Incorporated Location-based application development for runtime environments
US8429395B2 (en) 2009-06-12 2013-04-23 Microsoft Corporation Controlling access to software component state
US9160812B2 (en) * 2009-10-22 2015-10-13 Cellco Partnership Systems and methods for delivering an application over a mobile communications network
CN101916194B (zh) * 2010-06-01 2013-06-12 浙江大学 一种无线传感网节点程序的部署方法
JP5772127B2 (ja) * 2011-03-25 2015-09-02 富士通株式会社 仮想マシン管理方法、情報処理装置および仮想マシン管理プログラム
US8726258B2 (en) * 2011-04-14 2014-05-13 Phoenix Technologies Ltd. Supporting multiple hardware components in UEFI
US9116685B2 (en) * 2011-07-19 2015-08-25 Qualcomm Incorporated Table call instruction for frequently called functions
EP2847672B1 (en) * 2013-01-25 2019-05-01 Google LLC Systems, methods, and computer program products for managing data re-installation
KR101907418B1 (ko) 2014-07-01 2018-10-12 한국전자통신연구원 동적 모듈, 이를 구비한 동적 업그레이드 장치 및 방법
DE102014117797A1 (de) * 2014-10-10 2016-04-14 Ebm-Papst Mulfingen Gmbh & Co. Kg Dynamisch adressierbares Master-Slave-System sowie Verfahren zum dynamischen Adressieren von Slave-Einheiten
CN105068831A (zh) * 2015-07-30 2015-11-18 深圳市创凯电子有限公司 程序升级方法及装置
US20190369997A1 (en) * 2017-02-28 2019-12-05 Mitsubishi Electric Corporation Simulation device, simulation method, and computer readable medium
US11256522B2 (en) * 2019-11-22 2022-02-22 Advanced Micro Devices, Inc. Loader and runtime operations for heterogeneous code objects

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03210631A (ja) * 1990-01-16 1991-09-13 Nec Corp モジュール間結合方式
JPH0573292A (ja) * 1991-09-12 1993-03-26 Nec Software Ltd 読込み専用記憶装置のプログラム更新方式およびプログラム実行方式
JP2001094498A (ja) * 1999-09-17 2001-04-06 Seiko Epson Corp 無線通信機器

Family Cites Families (94)

* 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
DE59005294D1 (de) * 1989-11-29 1994-05-11 Siemens Ag Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems.
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
US6249818B1 (en) 1993-06-30 2001-06-19 Compaq Computer Corporation Network transport driver interfacing
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
US5835743A (en) * 1994-06-30 1998-11-10 Sun Microsystems, Inc. Application binary interface and method of interfacing binary application program to digital computer
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
US5805899A (en) * 1995-07-06 1998-09-08 Sun Microsystems, Inc. Method and apparatus for internal versioning of objects using a mapfile
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
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
US5859565A (en) * 1997-03-10 1999-01-12 Reiffin; Martin Cathode-follower high-fidelity power amplifier
US5938766A (en) * 1997-03-21 1999-08-17 Apple Computer, Inc. System for extending functionality of a digital ROM using RAM/ROM jump tables and patch manager for updating the tables
US6314565B1 (en) * 1997-05-19 2001-11-06 Intervu, Inc. System and method for automated identification, retrieval, and installation of multimedia software components
AU8397298A (en) * 1997-07-15 1999-02-10 Pocket Soft, Inc. System for finding differences between two computer files and updating the computer files
DE69802294T2 (de) * 1997-08-29 2002-05-16 Hewlett Packard Co Systemen zur datensicherung und -rückgewinnung
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
US6259958B1 (en) * 1997-12-19 2001-07-10 Honeywell International Inc. Call mechanism for static and dynamic linked functions within an object-oriented controller using heterogeneous development tool sets
US6029000A (en) * 1997-12-22 2000-02-22 Texas Instruments Incorporated Mobile communication system with cross compiler and cross linker
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
US6199202B1 (en) * 1998-01-06 2001-03-06 Hewlett-Packard Company Method and apparatus for the inter-operation of differing architectural and run time conventions
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
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
US6212632B1 (en) * 1998-07-31 2001-04-03 Flashpoint Technology, Inc. Method and system for efficiently reducing the RAM footprint of software executing on an embedded computer system
GB2343768A (en) * 1998-08-17 2000-05-17 Connected Place Limited 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
GB2349485B (en) * 1999-04-23 2003-12-10 Ibm Application management
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
CA2397127C (en) * 2000-01-10 2007-03-27 Connected Corporation Administration of a differential backup system in a client-server environment
US6694336B1 (en) * 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6671757B1 (en) * 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
CN1209708C (zh) * 2000-03-01 2005-07-06 电脑联合想象公司 用于更新计算机文件的备份文件的方法和系统
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
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
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
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
CN1446404A (zh) * 2000-08-15 2003-10-01 西加特技术有限责任公司 操作码的双模数据压缩
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
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
JP4060271B2 (ja) * 2001-10-12 2008-03-12 松下電器産業株式会社 コンテンツ処理装置およびコンテンツ保護プログラム
US20030074487A1 (en) * 2001-10-17 2003-04-17 Tankut Akgul Dynamic operating system
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
JP4214712B2 (ja) * 2002-05-16 2009-01-28 株式会社日立製作所 データベースのページ確保処理方法
US6976252B2 (en) * 2002-05-17 2005-12-13 Hewlett-Packard Development Company, L.P. Systems and methods for driver installation
US20040031027A1 (en) * 2002-08-08 2004-02-12 Hiltgen Daniel K. System for updating diverse file versions
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
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US7003534B2 (en) * 2002-11-18 2006-02-21 Innopath Software, Inc. Generating difference files using module information of embedded software components
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
US7007049B2 (en) * 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
US7844734B2 (en) * 2002-11-18 2010-11-30 Innopath Software, Inc. Dynamic addressing (DA) using a centralized DA manager
US7320010B2 (en) * 2002-11-18 2008-01-15 Innopath Software, Inc. Controlling updates of electronic files
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03210631A (ja) * 1990-01-16 1991-09-13 Nec Corp モジュール間結合方式
JPH0573292A (ja) * 1991-09-12 1993-03-26 Nec Software Ltd 読込み専用記憶装置のプログラム更新方式およびプログラム実行方式
JP2001094498A (ja) * 1999-09-17 2001-04-06 Seiko Epson Corp 無線通信機器

Also Published As

Publication number Publication date
EP1676195A2 (en) 2006-07-05
US20050204351A1 (en) 2005-09-15
KR100871778B1 (ko) 2008-12-05
EP1676195A4 (en) 2007-08-29
KR20060085698A (ko) 2006-07-27
WO2005040988A2 (en) 2005-05-06
CN1973262B (zh) 2012-08-22
WO2005040988A3 (en) 2006-09-14
CN1973262A (zh) 2007-05-30

Similar Documents

Publication Publication Date Title
US7007049B2 (en) Device memory management during electronic file updating
JP2007511816A (ja) 集中daマネージャを用いた動的アドレシング(da)
US7844734B2 (en) Dynamic addressing (DA) using a centralized DA manager
TWI439931B (zh) 用於增加三角差動效能之目的碼之產生
US7096311B2 (en) Updating electronic files using byte-level file differencing and updating algorithms
KR101213275B1 (ko) 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법
US8869143B2 (en) Method and system for selecting a program for download
KR100883699B1 (ko) 무선 장치 동작 환경에서 비검증된 프로그램들의 실행
US6665671B2 (en) System and method for optimization of shared data
CN106569880A (zh) 一种Android应用间动态共享资源的方法及系统
KR20050079625A (ko) 객체 지향 프로그래밍 언어 및 툴에서의 버전닝 지원 방법
CN110806891B (zh) 嵌入式设备软件版本的生成方法及装置
US20050055678A1 (en) Method and apparatus for managing software in computer system using virtual machine
CN112416418A (zh) 应用组件的生成方法、装置、计算机设备和可读存储介质
WO2005074621A2 (en) Dynamic addressing (da) using a centralized da manager
US11922158B2 (en) Unified local patch repository
US20220261238A1 (en) Method and system for deploying third-party application to microcontroller by means of edge assistance
CN113961232A (zh) 提供集成开发环境的终端、方法和平台服务器
CN117075960B (zh) 程序重构方法、应用跨平台迁移方法、装置与计算设备
KR20070081868A (ko) 이동통신시스템에서 효율적으로 소프트웨어를 업데이트하는방법
JP7081805B2 (ja) 情報処理装置、ロードモジュール生成方法及びプログラム、並びに、動的プログラム更新システム及び方法
JP2004192604A (ja) 組込みソフトウェア開発装置及び組込みソフトウェア開発方法
CN113672238A (zh) 基于实时操作系统模块化管理的运行方法、装置及设备
CN115904421A (zh) 固件空中升级方法、装置和植于处理器的软件架构
CN114185556A (zh) 一种智能合约部署方法、装置、设备以及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110218

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110517

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110818

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110818

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110914

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111003