JP2007524171A - フラッシュメモリのプログラミング - Google Patents

フラッシュメモリのプログラミング Download PDF

Info

Publication number
JP2007524171A
JP2007524171A JP2007500074A JP2007500074A JP2007524171A JP 2007524171 A JP2007524171 A JP 2007524171A JP 2007500074 A JP2007500074 A JP 2007500074A JP 2007500074 A JP2007500074 A JP 2007500074A JP 2007524171 A JP2007524171 A JP 2007524171A
Authority
JP
Japan
Prior art keywords
updated
program code
object module
module
modules
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
JP2007500074A
Other languages
English (en)
Other versions
JP4903686B2 (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 JP2007524171A publication Critical patent/JP2007524171A/ja
Application granted granted Critical
Publication of JP4903686B2 publication Critical patent/JP4903686B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1293Printer information exchange with computer
    • G06F3/1294Status or feedback related to information exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators

Abstract

複数の記憶セクターを含む記憶装置内に格納されたプログラムコードを更新する方法を開示する。本方法は、更新された入力コードを、記憶装置の第1の組の記憶セクターを占める現在のプログラムコードバージョンを格納した記憶装置に格納される、更新されたプログラムコードバージョンに変換する工程を含み、ここで、更新されたプログラムコードバージョンは該記憶装置内に格納されると、第2の組の記憶セクターを占める。この変換工程は、現在のプログラムコードバージョンの表現を受信することと、現在のプログラムコードバージョンにより占められた第1の組の記憶セクターの対応する記憶セクターとは異なる、更新されたコードバージョンにより占められた第2の組の記憶セクターの記憶セクターの数を減少させるように適合された少なくとも一つの最適化工程を実行することと、をさらに含む。

Description

本発明は、複数の記憶セクターを含む記憶装置内に格納されたプログラムコードの更新に関する。
多くのモデム電子装置(例えば、組込み型の装置)は、フラッシュメモリ上に格納されたソフトウェアにより制御される。フラッシュメモリは、複数の再書込みを許容するので、電子装置では人気のある記憶装置である。しかしながら、その書込み操作は、一度には、セクター全体(いわゆるページ)に限定される。現在のフラッシュメモリの典型的なページサイズは64kバイトである。
電子装置のフラッシュメモリ内に格納されたソフトウェアが、例えば、ソフトウェアに新しい特徴を追加するために、および/またはソフトウェアの現行版におけるエラーを修正するために更新されると、フラッシュメモリの記憶セクターの一部またはすべては、再書き込み、すなわち「再フラッシュ」される。一般的に、ソフトウェア更新をインストールするために必要とされる時間を最小化するためには、ソフトウェア更新中に再書き込みされるフラッシュのページ数を最小化することが望ましい。
特に、更新時間が重要関心事であるアプリケーションは、移動端末の無線による(OTA:over−the−air)更新である。このようなアプリケーションにおいては、更新されるイメージ全体ではなく現在のイメージに対する変更のみを移動端末に配布することが知られている。この変更は一般的にはデルタファイルと呼ばれる。このようなシステムでは、移動端末上で実行中の更新エージェントは、受信された変更を現在のイメージに適用し、これにより現在のイメージは更新バージョンに変換される。更新処理中、端末は機能しないということは、このような更新システムの特有の問題である。従って、記憶装置を再フラッシュするために必要とされる時間と、従ってシステムのダウンタイムを低減することが望ましい。
しかしながら、上述のフラッシュメモリの制限のため、単一バイトの変更ですら、全ページの完全な書き換えを必要とするので、ソフトウェアのソースコードの小さな更新ですらフラッシュのページの大部分を更新させることがある。
米国公開特許出願第2003/0142556号明細書では、フラッシュのセクターの変更または調整の必要性を可能な限り軽度に保つために、揮発性の情報または揮発性のソフトウエアコンポーネントが少なくともフラッシュメモリ装置のそれぞれのフラッシュメモリアドレス空間の端の近傍に格納される、フラッシュメモリのプログラミング方法を開示している。
しかしながら、上記従来技術の方法は、それぞれの情報コンポーネントを変更する可能性予測に関する情報を必要とする。従って、上記従来技術は、複数の記憶セクターを有する記憶装置においてプログラムコードを更新する際に必要とされる再書き込みの回数を、それぞれのソフトウエアコンポーネントにおける将来の変更の可能性予測に関する情報を必要とすること無く低減するという課題に対処していない。
上記および他の課題は、複数の記憶セクターを含む記憶装置内に格納されたプログラムコードを更新する方法であって、本方法は、
−更新された入力コードを、記憶装置の第1の組の記憶セクターを占める現在のプログラムコードバージョンを格納した該記憶装置に格納される、更新されたプログラムコードバージョンに変換する工程であって、更新されたプログラムコードバージョンは該記憶装置内に格納されると、第2の組の記憶セクターを占める、工程を含み、
上記変換工程は、
−現在のプログラムコードバージョンの表現(representation)を受信することと、
−現在のプログラムコードバージョンにより占められた第1の組の記憶セクターの対応する記憶セクターとは異なる、更新されたコードバージョンにより占められた第2の組の記憶セクターの記憶セクターの数を減少させるように適合された少なくとも一つの最適化工程を実行することと、をさらに含む、方法により解決される。
特に、現在のプログラムコードバージョンの表現を受信することと、現在のプログラムコードバージョンにより占められた第1の組の記憶セクターの対応する記憶セクターとは異なる、更新されたコードバージョンにより占められた第2の組の記憶セクターの記憶セクターの数を減少させるように適合された少なくとも一つの最適化工程を実行することにより、必要とされる再書き込み回数を低減する。
記憶装置内に格納された現在のプログラムコードバージョンは、通常、ソフトウェア更新を生成する処理には知られているので、上記最適化は、更新処理に対し容易に入手可能な情報に基づいている。特に、本処理は、現在インストールされているバージョンと今回の更新に関する情報に基づいているが、将来の更新の可能性に関する情報は一切必要としない。
好ましい実施態様では、現在のプログラムコードバージョンの表現は、第1の組の記憶セクターの現在のイメージ、および/または第1の組の記憶セクターの現在のイメージのマップファイル記述(map file description)を含む。従って、この表現は、記憶装置内のプログラムコード・コンポーネントのレイアウトに関する情報を含み、これにより、最適化処理は、両方のバージョン間の差分を低減するように、更新されるコンポーネントのレイアウトを適合することができる。
通常、コード生成システムは、ソースコードをコンパイルし、多数のオブジェクトコード・モジュールを生成するコンパイラーと、実行可能コードを生成するリンカーとを含む。リンカーは、ソフトウェア開発プロジェクトを構成する一組のオブジェクトコード・モジュール間の依存性を解決する。リンカーのタスクは、通常、記憶装置内のオブジェクトモジュールをレイアウトすること、すなわち対応するアドレス空間内の相異なるオブジェクトモジュールに相対アドレスを割り当てることを含む。従って、リンカーステージでは、メモリ空間内のコードのレイアウトに関する必要情報は入手可能である。オブジェクトモジュールは、通常、ハードウェア、および/またはプラットフォーム特有の、低レベルファイル形式のオブジェクトファィルとして表現される。オブジェクトファィルはコンパイラーにより生成され、リンカーへの入力となる。オブジェクトモジュールは、通常、再配置可能であり、未解決の参照を含む。
ここで、用語「記憶装置におけるコードのレイアウト」は、様々なオブジェクトモジュールのそれぞれの開始または基準アドレス、すなわち、プログラムコードにより占められたアドレス空間のそれぞれの相対アドレスを含む。
この結果、本発明の好ましい実施態様では、最適化処理はリンカーステージで実行される。従って、入力コードは多数のオブジェクトモジュールを含み、その変換工程は多数のオブジェクトモジュールをリンクすることを含む。好ましくは、最適化処理は、記憶装置内のオブジェクトモジュールのレイアウトを決定することを含む。
別の好ましい実施態様では、入力コードは少なくとも一つのソースコードモジュールを含み、その変換工程は、
−少なくとも一つのソースコードモジュールをコンパイルし、結果として多数のオブジェクトモジュールを生成することと、
−多数のオブジェクトモジュールをリンクすることと、を含み、
少なくとも一つの最適化工程を実行する工程は、
−リンク工程の間にフィードバックデータを生成することと、
−フィードバックデータに基づいてソースコードモジュールの少なくとも一つのサブセットを再コンパイルし、結果として多数の修正されたオブジェクトモジュールを生成することと、
−多数の修正されたオブジェクトモジュールに基づいてリンク工程を実行することと、を含む。
従って、この実施態様によれば、リンカーは、コンパイラーに、ソースコードの少なくとも一部を再コンパイルさせるコンパイラーステージへのフィードバックを生成する。このことは、リンカーが、結果として生じる一組のオブジェクトモジュールを制御し、これによってリンカーによるオブジェクトコード・モジュールを再配置する自由度が増すという利点を有する。
さらに、別の好ましい実施態様では、上記変換工程は、少なくとも一つの最適化パラメーターによって最適化処理を制御することをさらに含む。従って、最適化処理を制御するためのメカニズムが提供される。いくつかの実施態様では、最適化パラメーターは、最適化処理に対する一つまたは複数の制限を決定する。例えば、1つまたは複数の最適化パラメーターは、最適化処理により付加されることが許容されるパディングスペースの最大サイズのような、最適化処理によってもたらされるサイズの最大許容増加を決定してもよい。あるいは、またはさらに、少なくとも一つの最適化パラメーターは、最適化処理により導入されるリレー(relay)の最大許容数を決定するパラメーターを含んでもよい。
最適化処理について、必要な再書き込み回数の観点からの利点と、メモリサイズ、実行時間等の観点からのコストとの間のトレードオフを容易に制御できるということは、本発明の利点である。
従って、好ましい実施態様では、記憶装置内のオブジェクトモジュールのレイアウトを決定する工程は、
−対応する第1の現在のオブジェクトモジュールとは異なるサイズを有する第1の更新されたオブジェクトモジュールと、対応する第2の現在のオブジェクトモジュールに等しい第2の更新されたオブジェクトモジュールとを検知する工程であって、第2の更新されたオブジェクトモジュールは第1の更新されたオブジェクトモジュールの基準アドレスより大きな基準アドレスを有する、工程と、
−検知された第1の更新されたオブジェクトモジュールを、所定のパディングサイズの記憶コンテンツでパディングし、結果としてパディングされた第1の更新されたオブジェクトモジュールを生成する工程であって、該パディングサイズは第2の更新されたオブジェクトモジュールの基準アドレスを、対応する第2の現在のオブジェクトモジュールの基準アドレスに等しくさせるように選択された、工程と、を含む。
別の好ましい実施態様では、記憶装置内のオブジェクトモジュールのレイアウトを決定する工程は、
−対応する第1の現在のオブジェクトモジュールより大きい第1の更新されたオブジェクトモジュールを検知することと、
−第1の更新されたオブジェクトモジュールの所定の部分を異なる記憶セクターに移動し、結果として、縮小された第1の更新されたオブジェクトモジュールと第1の更新されたオブジェクトモジュールの移動された部分とを生成することと、
−縮小された第1の更新された記憶セクター内の、第1の更新されたオブジェクトモジュールの移動された部分にリレーを挿入することと、を含む。
さらに、別の好ましい実施態様では、上記方法は、現在のプログラムコードバージョンと更新されたプログラムコードバージョン間の差分を表現するデルタファイルを生成する工程を含む。従って、結果として生じるデルタファイルは、現在バージョンと更新バージョン間の差分、すなわち、当該装置が、装置内に格納された現在バージョンとデルタファイルとから更新バージョンを生成するために必要とされる情報を含む。当該装置にアップロードする必要のあるファイルのサイズは低減され、それによって、ソフトウェア更新を実行するのに必要な時間をさらに低減するということは、この実施態様の利点である。
さらに好ましい実施態様は、従属請求項において開示される。
上記方法および以下の特徴は、ソフトウェアで実施され得、そして、データ処理システム上、またはコンピュータ実行可能命令のようなプログラムコード手段の実行によりもたらされる他の処理手段上で実行され得るということに留意されたい。ここで、以下では、用語「処理手段」は、上記機能を実行するように好適に適合された任意の回路、および/または装置を含む。特に、用語「処理手段」は、汎用または専用のプログラム可能なマイクロプロセッサ、デジタル信号プロセサ(DSP)、特定用途向けIC(ASIC)、プログラム可能論理アレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、専用電子回路等、またはその組み合わせを含む。
例えば、プログラムコード手段は、記憶媒体から、またはコンピュータネットワークを介した別のコンピュータから、RAMなどの記憶装置内にロードすることができる。あるいは、説明した特徴は、ソフトウェアの代わりにハードワイヤード回路により、またはソフトウェアと組み合わせて実施してもよい。
本発明は、上記方法を含む様々な方法で実施することができ、さらに以下の、それぞれが、最初に述べた方法に関連して説明した一つまたは複数の利益と利点をもたらし、それぞれが、最初に述べた方法に関連して説明した好ましい実施態様に対応する一つまたは複数の好ましい実施態様を有する、データ処理システムや製品手段(product means)とにおいて、実施することができる。
特に、本発明は、複数の記憶セクターを含む記憶装置内に格納されたプログラムコードを更新するためのデータ処理システムに関し、このデータ処理システムは、上記および以下の方法の工程を実行するように適切にプログラムされる。
本発明は、データ処理システム上で実行されると、該データ処理システムに上記および以下の方法を実行させるように適合されたプログラムコード手段を含むコンピュータプログラム製品にさらに関する。上記コンピュータプログラム製品は、プログラムコード手段を格納したコンピュータ読取り可能媒体として、具現化することができる。
本説明の目的のため、用語「電子装置」は、プログラムコードを格納するためのフラッシュメモリなどの記憶装置を含む任意の装置を含む。このような装置の例としては、携帯用無線通信装置と、他のハンドヘルド型または携帯用装置が挙げられる。用語「携帯用無線通信装置」は、携帯電話、ページャー、通信機(communicator)、すなわち、電子式オーガナイザ、高度自動機能電話(smart phone)、携帯情報端末(PDA)、ハンドヘルドコンピュータなどの装置をすべて含む。
本発明の上記および他の側面は、添付図面を参照して以下に説明される実施形態から明らかとなる。
図1に、移動端末などの電子装置内のソフトウェアを更新するためのシステムの実施形態のブロック図を概略的に示す。本システムは、移動端末101(例えば、移動電話等)、ソフトウェア更新システム102、および通信インタフェース103を含む。
ソフトウェア更新システム102は、通信ネットワークにアクセスするサーバーコンピュータを含んでよい。いくつかの実施形態では、サーバーコンピュータの機能は、複数のコンピュータ(例えばローカルエリアネットワーク、広域ネットワーク、インターネット等のコンピュータネットワークを介して接続されるコンピュータ)間に分散され得る。ソフトウェア更新システム102は、ソフトウェア更新システムが通信インタフェース103を介してデータを伝達できるようにするインタフェース回路104を含む。例えば、インタフェース回路は、シリアルポート、パラレルポート、短距離の無線通信インタフェース(例えば、赤外線ポート、ブルートゥーストランシーバ等)を含んでよい。インタフェース回路の別の例としては、ネットワークカード、DSLモデム、ゲートウエイコンピュータ等が挙げられる。
ソフトウェア更新システムは、演算処理装置105、例えば、ここに説明されるような更新プログラムコードの生成を含む更新処理を制御し実行するように適切にプログラムされたサーバーコンピュータのCPUをさらに含む。本演算処理装置は、更新対象ソフトウェアの少なくとも一つの基本バージョンと更新バージョンのメモリイメージを格納したバージョン・データベース106をさらに含む。いくつかの実施形態では、バージョン・データベースは、追加情報、例えば、様々なグループの顧客に対する様々なモデルの移動端末用の、複数の基本バージョンおよび/または複数の更新バージョン、等をさらに含んでよい。
通信インタフェース103は、ソフトウェア更新システム102と移動端末101間のデータの伝達のための任意の適切な有線または無線通信インタフェースでよい。例えば、移動電話通信ネットワーク(例えば、GSMネットワーク、UMTSネットワーク、GPRSネットワーク等)を介して通信するように適合された移動電話の場合、ソフトウェア更新に関連する、ソフトウェア更新システムと移動端末との間の通信は、移動電話通信ネットワークを介して実行することができ、これにより移動端末において通信インタフェースを追加する必要が無くなる。移動端末とソフトウェア更新システムとの間の通信は、2つ以上の通信ネットワークを伴ってよいことがさらに理解される。例えば、移動式電話は、基地局と移動電話通信ネットワークとを介してゲートウエイシステムと通信を行ってもよく、今度は、このゲートウエイシステムが、インターネットを介しソフトウェア更新システムとの通信を提供する。
従って、移動端末101上でソフトウェア(例えば、移動端末のファームウェアまたはオペレーティングシステム)を更新するために、移動端末はソフトウェア更新システム102に接続する。あるいは、ソフトウェア更新システムは、更新ソフトウェアバージョンが利用可能になった場合に、移動端末に接続してもよい。ソフトウェア更新システムに接続されると、移動端末は、現在のソフトウェアバージョンに関する情報をソフトウェア更新システムに送信する。その通信は、適切な更新プロトコル(例えば、TCI/IPプロトコル上に構築されたプロトコル)を介して実行される。移動端末から受信された情報に基づき、ソフトウェア更新システムは、移動端末に対し、更新命令を含む個別の更新メッセージを生成する。いくつかの実施形態では、更新命令は、書き換え対象の記憶セクターのイメージを含む。デルタファイルを使用する差分式の更新システムでは、更新命令は、移動端末が、移動端末内に既に格納された既存のバージョンからおよび更新命令内に含まれる追加の情報から、更新ソフトウェアバージョンを生成することができるように生成される。
一実施態様では、この更新処理は、移動端末上で実行中の更新エージェントにより起動される。更新エージェントは、デルタファイルの受信と検証を制御する。次に、更新エージェントは、移動端末をネットワークから切断し、パッチモードで再ブートさせる。パッチモードでは、デルタファイル内の変更は、新しいメモリイメージが完成するまで、インクリメンタルに適用される。
デルタファイルの生成は、概略的には、以下の操作により例示され得る。
filenew−filebase→Δfile
次に、同様に、新バージョンの実際の生成は、以下の操作に従って移動端末により実行され得る。
filebase+Δfile→filenew
移動端末上でデルタファイルを生成すること(上記記号式において「−」として表される)と、新バージョンを生成すること(上記記号式において「+」操作として表される)の上記操作は、多少複雑な操作を含み得るということを理解されたい。
デルタファイルは、当該の場所で適用することができる。すなわち、変更は、移動端末により既存のイメージ上で行なわれるので付加的な記憶領域をほとんど必要としない。さらに、デルタファイルだけをロードすればよく、そして、通常、デルタファイルは、新バージョンよりかなり小さいので、ロード所要時間は上記方法により低減される。
コード生成処理の実施形態については、以下に、より詳細に説明する。
図2に、移動端末などの電子装置のブロック図を概略的に示す。移動端末101は、通信ブロック210、演算処理装置211、および記憶装置212を含む。
通信ブロック210は、移動電話通信ネットワークを介したデータの無線ベースの通信を可能にする回路、および/または装置を含む。従って、本説明の目的のためには、通信ブロック210は、データ信号を送信し受信するための受信機回路と送信機回路を含む。通信ブロックは、無線通信の技術分野では周知の適切な技術による、信号を適切に処理するための回路(例えば、変調、符号化、増幅等)をさらに含んでよい。
移動端末は、演算処理装置211、例えば適切にプログラムされたマイクロプロセッサをさらに含む。演算処理装置は、対応する更新命令を受信すると、移動端末内に格納されたソフトウェアのバージョンを判断し、格納されたソフトウェアのチェックサムを計算し、そしてソフトウェアの更新バージョンを生成するように適合されている。
記憶装置212は、所定バージョンのソフトウェア、および/または他のデータをその上に格納した。例えば、記憶装置212は、ロードされ演算処理装置210により実行されると移動端末の基本機能を実施する移動端末のファームウェアを含んでよい。ファームウェアは、アプリケーションソフトの実行を可能にするオペレーティングシステムをさらに含んでよい。従って、記憶装置212は、追加の機能を提供するアプリケーションソフトをさらに格納していてもよい。記憶装置212は、適切なアドレス空間を使用することによりアドレス指定され、これにより演算処理装置が記憶装置の選択された部分にアクセスできるようになる。いくつかの実施形態では、記憶装置212は、論理的または物理的に複数の記憶セクターに分割され得る。例えば、記憶装置212は、データを所定サイズのセクター単位で書き込めるようにしたフラッシュメモリを含んでよい。
以下では、記憶装置212は、P1、P2、P3、・・・、PNで表される所定のサイズの多数のセクターに分割されていると仮定する。しかしながら、その代わりに、記憶装置の他の任意のアドレシングを使用してもよいことを理解されたい。ここに説明した更新処理は、例えば、移動式電話のフラッシュメモリの全イメージが更新される場合は全記憶装置212に適用され、あるいは、例えば、一つまたは複数のソフトウエアアプリケーションが更新される場合は記憶装置の所定の部分のみに適用され得ることを、さらに理解されたい。
図3に、ソフトウェア更新処理の実施形態のブロック図を示す。リンカーモジュール302は多数のオブジェクトファィル301を受信する。オブジェクトファィル301のそれぞれはコンパイラー(図示せず)によりコンパイルされるが、オブジェクトファィルの一部またはすべてが、お互いに別々にコンパイルされてもよい。リンカーモジュール302は、オブジェクトモジュールを実行可能な絶対ファイル305に合成する。リンカーモジュール302により実行されるタスクの一つは、単一の実行可能プログラム305を作成するために、別々にコンパイルされたオブジェクトモジュール間の相互参照と、最終アドレスの割り当てとを解決することである。従って、リンカーからの出力305は、フラッシュメモリに直接にロードすることができるファイルである。出力305は、また、ビルドファイルと呼ばれる。
さらにリンカーモジュール302は、前のビルドファイル303に関する情報を、例えば現在のビルドが格納されるフラッシュメモリ内の対応するアドレス空間のイメージの形式で受信する。別の実施形態では、リンカー302は、また、現在のビルドのメモリレイアウトのテキストファイル表現(いわゆるマップファイル)を生成してもよい。例えば、マップファイルは、機能一覧、それらに割り当てられたアドレス、その入力パラメーター等を含んでよい。このような実施形態では、前のビルドに関する情報303は、前のビルドの対応するマップファイルを含んでよい。さらに別の実施形態では、リンカーモジュールはマップファイルと前のビルドのメモリイメージの両方を受信する。
リンカーモジュール302は、新しいイメージが前のビルド303のメモリイメージに可能な限り類似するように、新しいビルド305のメモリイメージを生成するように適合される。従って、リンカーは、メモリイメージ間の差分を減少するために、多数の最適化工程を実行するように適合される。このような最適化工程の例としては、次のものが挙げられる。
−モジュールを、前のビルドにおけるそれらの場所に対して動かし回す必要性を無くすために、モジュール間に追加のパディングスペースを導入すること。これについては、図4に関連して例示する。
−オブジェクトモジュールを、それらの間の参照を有する2つ以上のサブモジュールに分割すること、すなわち、図5に関連して例示されるように、いわゆる中継を導入すること。
−上記の組み合わせ。
リンカーモジュール302は、最適化工程を制御するための一つまたは複数の最適化パラメーター304をさらに受信する。例えば、最適化パラメーターは、リンカーがどの最適化工程を実行すべきかを、決定してもよい。さらに、最適化パラメーターは、1つまたは複数の最適化工程に対し、多くの制限または境界条件を決定してもよい。従って、リンカーは、最適化パラメーターにより決定された多くの制限または境界条件の範囲内で、新しいビルドと前のビルドとの間の差分を低減するように(好ましくは最小化するように)構成してもよい。
最適化パラメーターの例としては、次のものが挙げられる。
−リンカーが導入することを許可された、許容パディングスペース上での最大限界。
−リンカーが導入することを許可された中継の最大数。
いくつかの実施形態では、一つまたは複数の上記最適化パラメーターは、所定のデフォルト値に前もって設定してもよいことを理解されたい。図4に、そのレイアウトがパディングスペースの導入によって最適化されるソフトウェア更新の前後のフラッシュメモリのメモリレイアウトを概略的に例示する。
図4aに、フラッシュメモリのアドレス空間の一部の構成を例示する。アドレス空間401は、P1、P2、P3、P4、P5、P6、P7、P8で表される多数のページに分割される。ページは所定のサイズSを有し、典型的な従来のフラッシュメモリでは、ページサイズは64kバイトである。
図4bに、アドレス空間401に格納された、概して参照数字402により参照されるプログラムコードバージョンV1のメモリレイアウトの例を図示する。この例におけるプログラムコードバージョンは、A、B、C、D、Eで指定された5つのオブジェクトモジュールを含む。オブジェクトモジュールは相異なるサイズを有しており、アドレス空間401では連続して配列される。このレイアウトは、モノリス(monolith)とも呼ばれる。
図4cに、概して403として指定される、プログラムコードの更新バージョンV2を例示する。この例では、バージョンV1とバージョンV2間のただ一つの変更は、モジュールA’によるモジュールAの置き換えであると仮定し、ここでは、モジュールA’は、A’に必要とされる付加メモリ空間405によって図示されるように前のモジュールAより大きいと仮定する。残りのモジュールB、C、D、Eは不変、すなわち、バージョンV1の対応する部分と同一であると仮定する。しかしながら、図4cにおいて参照数字406により図示されるように、最新バージョンV2を連続して配置すると、メモリページP1〜P7の全コンテンツを書き換える必要がある。
モジュールAのコンテンツはA’に変更されたので、ページP1、P2、P3を書き換える必要があり、そしてモジュールB、C、D、Eの場所がバージョンV1とV2間で変更されたので、残りのページを書き換える必要がある。
図4dに、概して404で指定される、更新プログラムバージョンV2の最適化されたメモリレイアウトを図示する。図4dの例では、リンカーはモジュールBをモノリスの端に移動した。さらに、リンカーは、モジュールA’とCの間に未使用メモリ407のパディングスペースを挿入した。パディングスペース407のサイズは、バージョンV2のモジュールCの先頭アドレスを前バージョンV1と同一にできるように決定される。その結果、モジュールC、D、Eのメモリイメージは、それらがモジュールBのエンティティを参照しない、すなわち参照は全く変更されないと仮定すると、不変である。従って、メモリを、最適化された更新バージョンV2で更新して前バージョンV1を置き換えると(フラッシュメモリの当該ページを再フラッシュすることにより)、参照数字408により図示されるように、ページP1、P2、P3、P7、P8のみを再書き込みする必要がある。残りのページ、すなわちページP4、P5、P6は、再書き込みする必要はない。
A’がAより小さい状況では、レイアウトは、モジュールBの基準アドレスが不変であることを保証する(すなわち、Bを移動することなく)、適切なパディングスペースを単に追加することにより最適化され得ることを理解されたい。
パディングスペースを追加することによる上記メモリレイアウトの最適化は、追加パディングスペースサイズに対応するメモリイメージサイズの増加を犠牲にして必要な再書き込み回数を減少させるということを、さらに理解されたい。上述のように、このトレードオフは、リンカーにより挿入を許可されたパディングスペースの最大サイズを決定する最適化パラメーターにより制御することができる。
モジュールC、D、Eの一つまたは複数がモジュールBの機能への参照を含む場合、上記例におけるメモリモジュールBの再配置は、これらモジュールC、D、Eの一つまたは複数における変更を引き起こし得ることはさらに注意を要する。このような参照は、モジュールBの再アドレシングにより影響を受けるであろう。不変のモジュール内の他の機能がいずれも参照しないモジュールは、自由に移動できるが、一方、そうでないと、不変のモジュールにより参照されるモジュールの移動は、必要とされる再書き込み回数の観点からのコストを増加させる。従って、モジュールを移動するかどうか、および、どのモジュールを移動するか、を決定するために、リンカーは、オブジェクトモジュールの移動の全体の効果対コスト比を決定するように構成されることが好ましい。
従って、一実施態様では、メモリ内のオブジェクトモジュールのレイアウトの決定は、
−対応する第1の現在のオブジェクトモジュールとは異なるサイズを有する第1の更新されたオブジェクトモジュールと、対応する第2の現在のオブジェクトモジュールに等しい第2の更新されたオブジェクトモジュールとを検知する工程であって、第2の更新されたオブジェクトモジュールは第1の更新されたオブジェクトモジュールの基準アドレスより大きな基準アドレスを有する、検知工程と、
−検知された第1の更新されたオブジェクトモジュールを、所定のパディングサイズの記憶コンテンツでパディングし、結果としてパディングされた第1の更新されたオブジェクトモジュールを生成する工程であって、パディングサイズは第2の更新されたオブジェクトモジュールの基準アドレスを、対応する第2の現在のオブジェクトモジュールの基準アドレスに等しくさせるように選択された、工程とを含む。
図5に、レイアウトが、中継の導入によって最適化されるソフトウェア更新の前後のフラッシュメモリの記憶装置レイアウトを概略的に例示する。
図5aに、フラッシュメモリのアドレス空間の一部の構成を図示する。アドレス空間501は、P1、P2、P3、P4、P5、P6、P7、P8で表される多数のページに分割される。ページは所定のサイズSを有する。
図5bに、アドレス空間501に格納された、概して参照数字502により参照されるプログラムコードバージョンV1のメモリレイアウトの例を図示する。前の例のように、このプログラムコードバージョンは、A、B、C、D、Eで指定された5つのオブジェクトモジュールを含む。オブジェクトモジュールは、相異なるサイズを有しており、アドレス空間501では連続して配列される。
図5cに、概して503で指定されるプログラムコードの更新バージョンV2を例示する。再び、バージョンV1とバージョンV2間のただ一つの変更は、モジュールAがモジュールA’により置き換えられたと仮定し、ここでは、モジュールA’は、A’に必要とされる付加メモリ空間505によって図示されるように前のモジュールAより大きいと仮定する。残りのモジュールB、C、D、Eは不変、すなわちバージョンV1の対応する部分と同一であると仮定する。しかしながら、図5cにおいて参照数字506により図示されるように、更新バージョンV2を連続して配置すると、メモリページP1〜P7の全コンテンツを書き換える必要がある。モジュールAのコンテンツはA’に変更したので、ページP1、P2、P3を書き換える必要があり、そしてモジュールB、C、D、Eの場所がバージョンV1とV2間で変更されたので、残りのページを書き換える必要がある。
図5dに、概して504で指定される更新されたプログラムバージョンV2の最適化されたメモリレイアウトを図示する。図5の例では、オブジェクトモジュールA’の一部はA’内からのみ参照される、すなわち他のモジュールのいかなるものからも参照されないと仮定する。A’のこの部分はA’で表わされる。A’で表わされるA’の残りの部分は、他のモジュールの一つまたは複数から参照される。従って、図5dに図示されるように、リンカーモジュールは、モジュールA’をA’とA’に分割し、モジュールA’をモノリスの最後に移動し、それに応じてA’における内部参照をA’に変更することができる(すなわち、中継を導入することにより)。さらに、リンカーは、モジュールBの先頭アドレスが前バージョンV1と比較して変わらないようにパディングスペース507を挿入する。その結果、モジュールB、C、D、Eのメモリイメージは不変である。従って、参照数字508により図示されるように、前バージョンV1を置き換えるために最適化された更新バージョンV2をアップロードする際に、ページP1、P2、P7、P8のみを再書き込みする必要がある。残りのページ、すなわちページP3、P4、P5、P6は、再書き込みする必要はない。
従って、この実施形態では、メモリ内のオブジェクトモジュールのレイアウトの決定は、
−対応する第1の現在のオブジェクトモジュールより大きい第1の更新されたオブジェクトモジュールを検知することと、
−第1の更新されたオブジェクトモジュールの所定の部分を異なる記憶セクターに移動し、その結果として、縮小された第1の更新されたオブジェクトモジュールと第1の更新されたオブジェクトモジュールの移動された部分とを生成することと、
−縮小された第1の更新された記憶セクター内の第1の更新されたオブジェクトモジュールの移動された部分に中継を挿入することと、を含む。
上記中継によるメモリレイアウトの最適化は、中継による実行時間の不利益を犠牲にして、必要な再書き込み回数を減少していることを理解されたい。上述のように、このトレードオフは、リンカーにより挿入を許可される中継の最大数を決定する最適化パラメーターにより制御することができる。
図5の例では、中継の導入がパディングスペースの挿入と組み合わせられていることに留意されたい。
他の実施形態では、モジュールを2つの分離されたモジュールに分割することは、リンカー自身ではなくコンパイラーにより実行されることがさらに理解される。リンカーがコンパイラーにフィードバック信号を送信するこのような実施形態は、次のように説明される。
図6に、ソフトウェア更新処理の別の実施形態のブロック図を示す。この実施形態は、図3に関連して説明した実施形態に類似しており、ここでは同様の参照番号は同様のコンポーネントを指す。図6の実施形態において、リンカー302は、対応する一組のソースファイル607からオブジェクトファィル301を生成したコンパイラー606へのフィードバック信号608をさらに生成する。フィードバック信号は、コンパイラーに、一つまたは複数のソースファイルを再コンパイルさせ、結果として、リンカーにより最適化されたメモリレイアウトの生成に対してより好適な修正オブジェクトファィルを生成する。例えば、図5に図示された状況では、リンカー302は、A’の代わりにオブジェクトモジュールA’とA’を生成することをコンパイラー606に要求してもよい。一実施態様では、フィードバック信号608は、サブモジュールのそれぞれの中にどの機能を含むべきかについての情報を含むことすら可能である。
こうして、上記において、フラッシュメモリのプログラムコードを更新する際に必要とされる再書込み回数を減少するように構成されたリンカーが開示された。
本発明は、いくつかの個別要素を含むハードウェアによって、そして適切にプログラムされたコンピュータによって実施することができる。いくつかの手段を列挙する本装置の特許請求範囲において、これら手段のいくつかは、ここに説明されたような、ハードウェア(例えば、適切にプログラムされたマイクロプロセッサ、コンピュータ)の1つおよび同様なアイテム、および/または一つまたは複数の通信インタフェースにより具現化することができる。特定の手段が、相互に異なる従属請求項において記載された、あるいは種々の実施形態において説明されたという単なる事実は、これらの手段の組み合わせを、有利に使用することができないということを示すものではない。
本明細書に用いられた際、用語「含む/含むこと」は、記載された特徴、完全体、工程、または構成要素の存在を明示するために採用するが、一つまたは複数の他の特徴、完全体、工程、構成要素、またはそのグループの存在または追加を排除するものではないということを強調しなければならない。
移動端末内のソフトウェアを更新するためのシステムの実施形態のブロック図を概略的に示す。 本発明の実施形態による移動端末のブロック図を概略的に示す。 ソフトウェア更新処理の実施形態のブロック図を示す。 レイアウトがパディングスペースの導入によって最適化されるソフトウェア更新の前後のフラッシュメモリのメモリレイアウトを概略的に例示する。 レイアウトが中継の導入によって最適化されるソフトウェア更新の前後のフラッシュメモリのメモリレイアウトを概略的に例示する。 ソフトウェア更新処理の別の実施形態のブロック図を示す。

Claims (16)

  1. 複数の記憶セクターを含む記憶装置内に格納されたプログラムコードを更新する方法であって、この方法は、
    −更新された入力コードを、記憶装置の第1の組の記憶セクターを占める現在のプログラムコードバージョンを格納した記憶装置に格納される、更新されたプログラムコードバージョンに変換する工程であって、更新されたプログラムコードバージョンは記憶装置内に格納されると、第2の組の記憶セクターを占める、工程を含み、
    変換工程は、
    −現在のプログラムコードバージョンの表現を受信することと、
    −現在のプログラムコードバージョンにより占められた第1の組の記憶セクターの対応する記憶セクターとは異なる、更新されたコードバージョンにより占められた第2の組の記憶セクターの記憶セクターの数を減少させるように適合された、少なくとも一つの最適化工程を実行することと、をさらに含む、
    ことを特徴とする方法。
  2. 現在のプログラムコードバージョンの表現は、第1の組の記憶セクターの現在のイメージと、第1の組の記憶セクターの現在のイメージのマップファイル記述の少なくとも一つを含む、請求項1に記載の方法。
  3. 入力コードは多数のオブジェクトモジュールを含み、変換工程は多数のオブジェクトモジュールをリンクすることを含む、請求項1または2に記載の方法。
  4. 入力コードは少なくとも一つのソースコードモジュールを含み、
    変換工程は、
    −ソースコードモジュールの少なくとも一つをコンパイルし、結果として多数のオブジェクトモジュールを生成することと、
    −多数のオブジェクトモジュールをリンクすることと、を含み、
    少なくとも一つの最適化工程を実行する工程は、
    −リンク工程の間にフィードバックデータを生成することと、
    −フィードバックデータに基づいてソースコードモジュールの少なくとも一つのサブセットを再コンパイルし、結果として多数の修正されたオブジェクトモジュールを生成することと、
    −多数の修正されたオブジェクトモジュールに基づいてリンク工程を実行することと、を含む、
    請求項1または2に記載の方法。
  5. 最適化工程は、記憶装置内の前記オブジェクトモジュールのレイアウトを決定することを含む、請求項3または4に記載の方法。
  6. 記憶装置内の前記オブジェクトモジュールのレイアウトを決定する工程は、
    −対応する第1の現在のオブジェクトモジュールとは異なるサイズを有する第1の更新されたオブジェクトモジュールと、対応する第2の現在のオブジェクトモジュールに等しい第2の更新されたオブジェクトモジュールとを検知する工程であって、第2の更新されたオブジェクトモジュールは第1の更新されたオブジェクトモジュールの基準アドレスより大きな基準アドレスを有する、検知工程と、
    −検知された第1の更新されたオブジェクトモジュールを、所定のパディングサイズの記憶コンテンツでパディングし、結果としてパディングされた第1の更新されたオブジェクトモジュールを生成する工程であって、パディングサイズは、第2の更新されたオブジェクトモジュールの基準アドレスを、対応する第2の現在のオブジェクトモジュールの基準アドレスに等しくさせるように選択された、工程とを含む、
    請求項5に記載の方法。
  7. 記憶装置内の前記オブジェクトモジュールのレイアウトを決定する工程は、
    −対応する第1の現在のオブジェクトモジュールより大きい第1の更新されたオブジェクトモジュールを検知することと、
    −第1の更新されたオブジェクトモジュールの所定の部分を異なる記憶セクターに移動し、結果として、縮小された第1の更新されたオブジェクトモジュールと第1の更新されたオブジェクトモジュールの移動された部分とを生成することと、
    −縮小された第1の更新された記憶セクター内の第1の更新されたオブジェクトモジュールの移動された部分にリレーを挿入することと、を含む、
    請求項5または6に記載の方法。
  8. 変換工程は、少なくとも一つの最適化パラメーターにより最適化工程を制御することを含む、請求項1〜7のいずれか一項に記載の方法。
  9. 少なくとも一つの最適化パラメーターは、最適化工程によりもたらされるサイズの最大許容増加を決定するパラメーターを含む、請求項8に記載の方法。
  10. 少なくとも一つの最適化パラメーターは、最適化工程により導入されるリレーの最大許容数を決定するパラメーターを含む、請求項8または9に記載の方法。
  11. 現在のプログラムコードバージョンと更新されたプログラムコードバージョン間の差分を表現するデルタファイルを生成する工程をさらに含む、請求項1〜10のいずれか一項に記載の方法。
  12. 記憶装置はフラッシュメモリである、請求項1〜11のいずれか一項に記載の方法。
  13. 複数の記憶セクターを含む記憶装置内に格納されたプログラムコードを更新するためのデータ処理システムであって、請求項1〜12のいずれか一項に記載の方法の工程を実行するように適切にプログラムされたデータ処理システム。
  14. データ処理システム上で実行されると、データ処理システムに請求項1〜12のいずれか一項に記載の方法を実行させるように適合されたプログラムコード手段を含む、コンピュータプログラム製品。
  15. コンピュータプログラム製品はリンカーモジュールを含む、請求項14に記載のコンピュータプログラム製品。
  16. 携帯用無線通信装置の再プログラムのための、請求項1〜12のいずれか一項に記載の方法の使用。
JP2007500074A 2004-02-27 2005-01-07 フラッシュメモリのプログラミング Expired - Fee Related JP4903686B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US54884104P 2004-02-27 2004-02-27
US60/548,841 2004-02-27
EP04388033A EP1569102B1 (en) 2004-02-27 2004-05-11 Flash memory programming
EP04388033.5 2004-05-11
US57327504P 2004-05-20 2004-05-20
US60/573,275 2004-05-20
PCT/EP2005/000190 WO2005085996A1 (en) 2004-02-27 2005-01-07 Flash memory programming

Publications (2)

Publication Number Publication Date
JP2007524171A true JP2007524171A (ja) 2007-08-23
JP4903686B2 JP4903686B2 (ja) 2012-03-28

Family

ID=34749073

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007500074A Expired - Fee Related JP4903686B2 (ja) 2004-02-27 2005-01-07 フラッシュメモリのプログラミング

Country Status (9)

Country Link
US (1) US8255892B2 (ja)
EP (1) EP1569102B1 (ja)
JP (1) JP4903686B2 (ja)
KR (1) KR101088192B1 (ja)
CN (1) CN100449486C (ja)
AT (1) ATE466334T1 (ja)
DE (1) DE602004026822D1 (ja)
HK (1) HK1106036A1 (ja)
WO (1) WO2005085996A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012247908A (ja) * 2011-05-26 2012-12-13 Nec Corp メモリ配置管理装置、メモリ配置管理方法、メモリ配置管理プログラム、およびプログラム作成システム
JP2013218388A (ja) * 2012-04-05 2013-10-24 Sharp Corp プログラム更新装置、方法、プログラム、及び記憶媒体
JP2013546250A (ja) * 2010-10-28 2013-12-26 トムソン ライセンシング 情報ストレージのための不揮発性メモリ再配分のための方法
WO2017158663A1 (ja) * 2016-03-15 2017-09-21 パナソニックIpマネジメント株式会社 データ生成装置、組込端末、ファームウェア更新システム及びデータ生成方法

Families Citing this family (42)

* 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
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7873956B2 (en) * 2003-09-25 2011-01-18 Pantech & Curitel Communications, Inc. Communication terminal and communication network for partially updating software, software update method, and software creation device and method therefor
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
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
JP4505265B2 (ja) * 2004-06-09 2010-07-21 シスメックス株式会社 試料分析装置および試料分析装置に用いる外部記憶媒体
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7716661B2 (en) * 2005-03-16 2010-05-11 Microsoft Corporation Embedded device update service
TWI345175B (en) * 2005-06-08 2011-07-11 Winbond Electronics Corp Method for updating firmware of memory card
DE102005059319A1 (de) * 2005-12-09 2007-06-14 Robert Bosch Gmbh Verfahren zum Betreiben einer Einrichtung
JP2007164242A (ja) * 2005-12-09 2007-06-28 Nec Electronics Corp プログラム書換データ生成装置、プログラム及びプログラム書換データ生成方法
US7660558B2 (en) 2005-12-31 2010-02-09 Adobe Systems Incorporated Interrupting and resuming a media player
US7603113B2 (en) 2005-12-31 2009-10-13 Adobe Systems Incorporated Using local codecs
US20070157194A1 (en) * 2005-12-31 2007-07-05 Govind Balakrishnan Post-deployment user interface update in a mobile device
US20070156841A1 (en) * 2005-12-31 2007-07-05 Govind Balakrishnan Platform independent user interface for a mobile device
US8209676B2 (en) 2006-06-08 2012-06-26 Hewlett-Packard Development Company, L.P. Device management in a network
WO2008014454A2 (en) 2006-07-27 2008-01-31 Hewlett-Packard Development Company, L.P. User experience and dependency management in a mobile device
KR20080025957A (ko) * 2006-09-19 2008-03-24 삼성전자주식회사 휴대용 단말기에서 소프트웨어를 업그레이드하기 위한 장치및 방법
US20080117991A1 (en) * 2006-11-21 2008-05-22 Samsung Electronics Co., Ltd. Partitioning Compression-Based Firmware Over the Air
US20080119178A1 (en) * 2006-11-21 2008-05-22 Samsung Electronics Co., Ltd. Allocating Compression-Based Firmware Over the Air
US20130167024A1 (en) 2006-12-05 2013-06-27 Adobe Systems Incorporated Embedded document within an application
US7681009B2 (en) * 2006-12-28 2010-03-16 Motorola, Inc. Dynamically updateable and moveable memory zones
US7743339B1 (en) 2007-02-01 2010-06-22 Adobe Systems Incorporated Rendering text in a brew device
US8589779B2 (en) 2007-03-08 2013-11-19 Adobe Systems Incorporated Event-sensitive content for mobile devices
US8806439B1 (en) * 2007-04-30 2014-08-12 AT & T Intellectual Property II, LP System and method for program stack security
EP2012230A1 (en) * 2007-07-05 2009-01-07 Samsung Electronics Co., Ltd. Partitioning compression-based firmware over the air
ES2371995T3 (es) 2007-12-13 2012-01-12 Telefonaktiebolaget Lm Ericsson (Publ) Actualización del firmware de un dispositivo electrónico.
US8312447B2 (en) * 2008-09-25 2012-11-13 Microsoft Corporation Managing updates using compiler and linker information
CN101686340A (zh) * 2008-09-26 2010-03-31 深圳市朗科科技股份有限公司 扩展图像通信设备功能的方法及系统
US9069966B2 (en) 2011-10-11 2015-06-30 International Business Machines Corporation Code updates in processing systems
US20140058532A1 (en) * 2012-08-23 2014-02-27 GM Global Technology Operations LLC Method for partial flashing of ecus
US9268552B1 (en) * 2013-06-18 2016-02-23 Ayla Networks, Inc. Patching improvement for executables in memory constrained devices
US10275154B2 (en) 2014-11-05 2019-04-30 Oracle International Corporation Building memory layouts in software programs
US10353793B2 (en) 2014-11-05 2019-07-16 Oracle International Corporation Identifying improvements to memory usage of software programs
US9552192B2 (en) * 2014-11-05 2017-01-24 Oracle International Corporation Context-based generation of memory layouts in software programs
US11329683B1 (en) * 2015-06-05 2022-05-10 Life365, Inc. Device configured for functional diagnosis and updates
US10162547B1 (en) * 2015-09-16 2018-12-25 Marvell International Ltd. Memory expansion in a linking process
US9946533B2 (en) 2015-09-30 2018-04-17 Apple Inc. Software updating
CN109496301A (zh) * 2017-05-19 2019-03-19 深圳配天智能技术研究院有限公司 嵌入式系统中管理文件的方法、嵌入式设备及其存储介质
KR20210079601A (ko) * 2019-12-20 2021-06-30 주식회사 실리콘웍스 펌웨어를 업데이트하는 터치 시스템 및 방법
FR3139216A1 (fr) * 2022-08-29 2024-03-01 Stmicroelectronics (Rousset) Sas Procédé de génération d’un fichier de mise à jour et dispositif serveur correspondant, procédé de mise à jour et dispositif client correspondant, méthode de mise à jour et système correspondant.

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH033036A (ja) * 1989-05-31 1991-01-09 Nec Corp ロードモジュール修正方法
JP2000293366A (ja) * 1999-04-06 2000-10-20 Mitsubishi Electric Corp セットトップボックス用モジュールのアップデート方法
JP2001344109A (ja) * 2000-05-31 2001-12-14 Sony Corp プログラム生成方法及びプログラム生成装置、並びに、記憶媒体
WO2003009136A1 (en) * 2001-07-16 2003-01-30 Yuqing Ren Embedded software update system
JP2003108397A (ja) * 2001-09-27 2003-04-11 Nec Eng Ltd ファームウェア書き換え方法
JP2004514214A (ja) * 2000-11-17 2004-05-13 ビットフォン コーポレイション 情報をアップデートおよび配布するシステムおよび方法
WO2004095457A2 (en) * 2003-04-11 2004-11-04 Bitfone Coproration Initialization and update of software and/or firmware in electronic devices

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE59108978D1 (de) 1990-08-28 1998-06-10 Landis & Gyr Tech Innovat Verfahren zum Aendern einer in einem Computer eines Gerätes abgespeicherten Maschinensprachenfassung eines ersten Programms in eine Maschinensprachenfassung eines durch mindestens eine Aenderung vom ersten Programm abgeleiteten zweiten Programms
US5699275A (en) * 1995-04-12 1997-12-16 Highwaymaster Communications, Inc. System and method for remote patching of operating code located in a mobile unit
US6077315A (en) * 1995-04-17 2000-06-20 Ricoh Company Ltd. Compiling system and method for partially reconfigurable computing
US5920723A (en) * 1997-02-05 1999-07-06 Hewlett-Packard Company Compiler with inter-modular procedure optimization
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US6401182B1 (en) * 1999-02-10 2002-06-04 International Business Machines Corporation Method and apparatus for memory management
US20010047512A1 (en) * 2000-03-23 2001-11-29 Leland Szewerenko Method and system for linking multiple processors having shared memory
US6560703B1 (en) * 2000-04-18 2003-05-06 International Business Machines Corporation Redundant updatable self-booting firmware
CA2357382A1 (en) * 2001-09-17 2003-03-17 Soma Networks, Inc. Software update method, apparatus and system
EP1331643B1 (en) * 2002-01-29 2009-12-16 Agere Systems Inc. Differential flash memory programming technique
JP3801545B2 (ja) * 2002-08-02 2006-07-26 松下電器産業株式会社 コンパイラ用プログラム、コンパイラ装置及びコンパイル方法
US7275242B2 (en) * 2002-10-04 2007-09-25 Hewlett-Packard Development Company, L.P. System and method for optimizing a program
JP4063076B2 (ja) * 2002-12-27 2008-03-19 ソニー株式会社 光記録方法及び光記録装置
US7089270B2 (en) * 2003-06-20 2006-08-08 Innopath Software Processing software images for use in generating difference files

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH033036A (ja) * 1989-05-31 1991-01-09 Nec Corp ロードモジュール修正方法
JP2000293366A (ja) * 1999-04-06 2000-10-20 Mitsubishi Electric Corp セットトップボックス用モジュールのアップデート方法
JP2001344109A (ja) * 2000-05-31 2001-12-14 Sony Corp プログラム生成方法及びプログラム生成装置、並びに、記憶媒体
JP2004514214A (ja) * 2000-11-17 2004-05-13 ビットフォン コーポレイション 情報をアップデートおよび配布するシステムおよび方法
WO2003009136A1 (en) * 2001-07-16 2003-01-30 Yuqing Ren Embedded software update system
JP2003108397A (ja) * 2001-09-27 2003-04-11 Nec Eng Ltd ファームウェア書き換え方法
WO2004095457A2 (en) * 2003-04-11 2004-11-04 Bitfone Coproration Initialization and update of software and/or firmware in electronic devices

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013546250A (ja) * 2010-10-28 2013-12-26 トムソン ライセンシング 情報ストレージのための不揮発性メモリ再配分のための方法
JP2012247908A (ja) * 2011-05-26 2012-12-13 Nec Corp メモリ配置管理装置、メモリ配置管理方法、メモリ配置管理プログラム、およびプログラム作成システム
JP2013218388A (ja) * 2012-04-05 2013-10-24 Sharp Corp プログラム更新装置、方法、プログラム、及び記憶媒体
WO2017158663A1 (ja) * 2016-03-15 2017-09-21 パナソニックIpマネジメント株式会社 データ生成装置、組込端末、ファームウェア更新システム及びデータ生成方法

Also Published As

Publication number Publication date
KR20060127161A (ko) 2006-12-11
EP1569102A1 (en) 2005-08-31
JP4903686B2 (ja) 2012-03-28
ATE466334T1 (de) 2010-05-15
WO2005085996A1 (en) 2005-09-15
KR101088192B1 (ko) 2011-11-30
HK1106036A1 (en) 2008-02-29
CN1954291A (zh) 2007-04-25
US20070220504A1 (en) 2007-09-20
US8255892B2 (en) 2012-08-28
CN100449486C (zh) 2009-01-07
DE602004026822D1 (de) 2010-06-10
EP1569102B1 (en) 2010-04-28

Similar Documents

Publication Publication Date Title
JP4903686B2 (ja) フラッシュメモリのプログラミング
TWI439931B (zh) 用於增加三角差動效能之目的碼之產生
US8296535B2 (en) Generating incremental program updates
EP1956482B1 (en) Generating delta updates for a processing device
CN104991793A (zh) 一种用于应用程序分包的方法、装置以及系统
KR101213275B1 (ko) 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법
CN107506219A (zh) 一种基于Android系统的通用版本升级方法
EP1755039B1 (en) Feedback linker for increased delta performance
JP2007511816A (ja) 集中daマネージャを用いた動的アドレシング(da)
KR20210041972A (ko) 차량 ecu 소프트웨어 업데이트 장치
CN107092472A (zh) 一种动态发布方法及设备
CN108958795B (zh) 一种嵌入式系统中BootLoader代码重利用方法和开发板
CN113032248A (zh) 安卓系统的应用调试方法、装置、存储介质及电子设备
CN112905217B (zh) 嵌入式程序的程序更新方法、终端、系统及存储介质
KR100745256B1 (ko) 임베디드 시스템에서의 코드 오버레이 방법
CN116166611A (zh) 一种基于amd平台动态适配主板的方法、系统及终端
EP1793311A2 (en) System and method for a patch minimization tool
CN114816569A (zh) 动态加载方法及装置
CN116954674A (zh) eMMC固件升级方法、固件升级设备和存储装置
CN116166304A (zh) 一种基于分散加载的mcu固件高效增量升级方法
CN117527779A (zh) 发布升级包的方法、服务器、终端和存储介质
CN113419756A (zh) 一种文件升级方法、装置及电子设备
JP2005234703A (ja) 電子機器開発支援装置、電子機器開発支援方法及び電子機器開発支援プログラム
KR20040060366A (ko) 무선통신매체의 os 업그레이드 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110502

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110801

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110902

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111202

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: 20111222

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: 20120105

R150 Certificate of patent or registration of utility model

Ref document number: 4903686

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150113

Year of fee payment: 3

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

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

LAPS Cancellation because of no payment of annual fees