JP2004536405A - 組み込みソフトウェア更新システム - Google Patents

組み込みソフトウェア更新システム Download PDF

Info

Publication number
JP2004536405A
JP2004536405A JP2003514412A JP2003514412A JP2004536405A JP 2004536405 A JP2004536405 A JP 2004536405A JP 2003514412 A JP2003514412 A JP 2003514412A JP 2003514412 A JP2003514412 A JP 2003514412A JP 2004536405 A JP2004536405 A JP 2004536405A
Authority
JP
Japan
Prior art keywords
patch
software
embedded software
embedded
section
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
JP2003514412A
Other languages
English (en)
Other versions
JP2004536405A5 (ja
Inventor
ユキング レン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of JP2004536405A publication Critical patent/JP2004536405A/ja
Publication of JP2004536405A5 publication Critical patent/JP2004536405A5/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Abstract

本発明は組み込みソフトウェア更新システムのシステムと方法、詳しくは、メーカーや販売店がソフトウェアバグやハードウェアの問題によって高コストの製品を回収することを回避することに関する。本発明は、遠隔操作によってソフトウェアのエラーを訂正しハードウェアの問題が製品に与える影響を抑制するエラー訂正システムと、ソフトウェアパッチを使用してデジタル機器内のソフトウェアモジュールを更新するソフトウェア更新システムとを提供する。本発明のソフトウェアシステムにより製造メーカーはソフトウェアパッチを使用中のデジタル機器に送信しソフトウェアのエラーの修正を行いハードウェアの問題による影響を抑制する。ソフトウェアパッチはデジタル機器のNVM又はEEPROM内のデータエリアが必要とするパラメーターを更新することができ、サービス提供者や製造メーカーがサービス項目の内容や製品の機能を修正する際に非常に役に立つ。

Description

【技術分野】
【0001】
出願関連事項
本特許出願は、2001年7月16日に出願された出願番号60/305,704「組み込みソフトウェアパッチシステム(Embedded Software Patch System)」、及び2002年2月8日に出願された出願番号60/354,915「組み込みソフトウェアパッチシステム」の優先権を主張するものである。先の出願は、恰も完全にここに述べられるかのように、本特許の出願範囲は、上述した2件の出願を参照し、その内容が本出願に組み入れられている。
【0002】
本発明の技術分野
本発明は、組み込みソフトウェアオペレーティングシステムを備えたデジタル電子機器に関し、詳しくは、デジタル機器の販売前又は販売後に、ソフトウェアパッチを使用して当該製品中の組み込みソフトウェアの更新、訂正、修正、アップグレードを行うシステム及び方法に関する。
【背景技術】
【0003】
背景技術
デジタル科学技術の発展と革新は、人々の生活、仕事、娯楽を大いに変化させた。日増しにコンパクト化するコンピュータ、携帯電話機、携帯情報端末機(PDA)、ポケットベル、PCMCIA無線モデムカード、その他の一般標準又はI/Oコネクタを用いた無線モデムカードは、科学技術が人々にとって不可欠となってきていることの最良の例である。このようなデジタル科学技術は、人々の仕事をより効率的及び生産的にするとともに、家族との関係を維持し、より多くの情報と娯楽とを得るのに役立っている。
【0004】
携帯電話機、PDA、セットトップボックス(set-top boxes)等のデジタル機器の技術は、大規模な組み込みソフトウェアシステムに基づいている。このようなデジタル機器の組み込みソフトウェアシステムは、いずれも、通常何万行ものソースコードを有する。このような組み込みソフトウェアにソフトウェアバグが存在することは避けられず、やがてこのようなエラーによってデジタル機器の機能不全が生じる。バグによっては致命的で、メーカーは、製品の回収を余儀なくされる。製品の回収による経済的な損失のため、メーカーによっては、一部特定のマーケットへの進出を避けるか、製品の品質及び信頼性が改善されるまで待機する決定をする。勿論、メーカーが決定を下す際には、このような方法で生じるメーカーの業界関係のトラブル、消費者の信頼喪失も、重要な考察すべき要素である。
【0005】
デジタル機器の研究と製造の絶え間ない改善にもかかわらず、プロセス内での欠陥は、避けられない。また、デジタル機器が発展し複雑化するにつれて、ソフトウェア、ハードウェア、材料、生産上の機能不全や欠陥が生じやすい。メーカーは、多くの予防措置を利用でき、製品販売前に、欠陥を減らしたり検査したりすることができる。しかしながら、一旦このような製品が市場に流入してから、これらのデジタル機器を修理しようとすれば、製品回収のトラブルとなる可能性がある。少量の製品に欠陥が生じた場合には、販売店は、消費者に修理や交換のサービスを提供できるが、このような不便が稀であったり、又は販売店が修理期間内に自主的に代用製品を提供したりする場合にのみ、消費者は、このような不便に耐えることができる。
【0006】
製品に多くの欠陥が現れ、多くの製品に波及した場合には、販売店は、消費者に修理や交換のサービスを提供する可能性がある。しかしながら、このような膨大な数量に対しては、販売店は、こうした欠陥製品を修理、交換するのに十分な資金がない可能性がある。販売店は、修理期間内に代用製品を提供することができるが、予め十分な代用品の在庫があってはじめて消費者の臨時使用に提供することができる。このような臨時使用方法では、販売店は通常の方法で製品を販売して利益を得ることができないため、関連の在庫収入の喪失を引き起こす可能性がある。
【0007】
この他、仮にデジタル機器が市場に投入されたとしても、場合によっては、メーカーによる当該製品の改善、強化、アップグレードの必要があるため、当該製品の組み込みソフトウェアの変更が必要となる可能性がある。重大な変更として、メーカーは、新バージョンの製品の発行を決定する可能性がある。こうした決定は、多大なコストがかかるが、必要なことである。小規模の変更については、メーカーは、早めに新バージョンを発行するか、又は多くの小規模の変更が重なってから再発行するかの選択に直面する。製品の発行が早すぎたり、不適当な時期に発行したりすると、会社の資金を無駄にすることになるが、変更が比較的多くなってから再発行すれば、消費者のクレームを受ける危険性がある。
【0008】
そのため、このような組み込みソフトウェアシステムを備えるデジタル製品の回収を低減することは望ましい。
【0009】
また、このような組み込みソフトウェアシステムを備えるデジタル製品の中間的な販売を低減することも望ましい。
【0010】
さらに、修理、修繕、更新、アップグレード、強化の方法により、このようなデジタル機器の販売回数を低減することも望ましい。
【発明の開示】
【0011】
本発明の概要
本発明は、組み込みソフトウェア更新システムのシステムと方法に関するものであり、詳しくは、メーカーや販売店がソフトウェアバグ(bugs)やハードウェアの問題によって高コストの製品を回収することを回避することに関するものである。本発明は、遠隔操作(remotely)によってソフトウェアのエラーを訂正し、ハードウェアの問題が製品に与える影響を最小限に抑制するエラー訂正システム(error correction system)と、ソフトウェアパッチ(software patches)を使用してデジタル機器内のソフトウェアモジュールを更新するソフトウェア更新システムとを提供する。本発明におけるソフトウェアシステムにより、製造メーカーは、ソフトウェアパッチを使用中のデジタル機器に送信し、ソフトウェアのエラーの修正を行い、ハードウェアの問題による影響を最小限に抑制する。また、当該ソフトウェアパッチは、デジタル機器の不揮発性メモリー(Non Volatile Memory;NVM)又はEEPROM(電気的消去再書き込み可能ROM、Electrically Erasable Programmable Read-Only Memory)内のデータエリアが必要とするパラメーターを更新することができ、サービス提供者や製造メーカーが、サービス項目の内容や製品の機能を修正する際に非常に役に立つ。
【0012】
本発明のソフトウェア更新システムは、従来のソフトウェアアップグレード/更新システムにはない長所がある。本発明のソフトウェア更新システムは、比較的小さなメモリースペースにより、バグを修復したり、キーモジュールを更新するためのソフトウェアパッチを保存したりする。この長所は、小さく且つ携帯可能なデジタル機器にとってさらに顕著となり、従来のソフトウェアアップグレード/更新システムのように、膨大なメモリースペースを要してアプリケーションデータを収容し、新バージョンのソフトウェアのアップグレードを行うことがない。
【0013】
本発明のソフトウェア更新システムにおける各パッチの大きさは、一般的に小さいため、限りあるネットワーク資源を利用してパッチデータの送信を行う。これに対して、従来のソフトウェアアップグレード/更新システムは、大量のアプリケーションソフトウェアのデータを送信して新バージョンのソフトウェアの更新を行うのに、広いチャンネル幅や大量のネット資源を要する。
【0014】
デジタル科学技術の日々の進歩により、新しい標準、規格、サービス項目のアップグレードの必要性も日毎さらに頻繁となってきている。この種のアップグレードは、通常新しい先進機能を支援するために新しいデジタルハードウェアを必要とする。本発明のソフトウェアパッチシステムのもう1つの目的は、簡単且つ経済的な方法でソフトウェアのアップグレードを行い、これによってハードウェアの変更回数を最小限に抑制することである。さらに、本発明のソフトウェア更新システムは、例えばJava(登録商標)バーチャルマシンやBREW(登録商標)(Binary Runtime Environment for Wireless)のようなアプリケーションプログラムのダウンロードを支援するオペレーティングシステム内に潜在した問題を修復することができる。
【0015】
また、本発明は、デジタル機器内の組み込みソフトウェアを複数のセクションに分割し、必要なセクションに対してのみ更新を行う。本発明において採用する方法は、ネットワーク通信に必要となる資源を最良に利用するため、全てのシステムを更新する従来のアプローチと比較して優れている。
【0016】
CPU、MCU、DSPのハードウェア設計を行う場合には、本発明に基づいてソフトウェアセクションを実行する前にソフトウェア更新情報が存在するか否かを検査するメカニズムを加えると、CPU/MCU/DSPは、組み込みソフトウェアを実行する際に、自動的にソフトウェア更新情報を検査し、更新コードの存在するアドレスにジャンプするように設計することができる。
【発明を実施するための最良の形態】
【0017】
望ましい具体例についての詳細な記述
1.本発明は、デジタル機器内の組み込みソフトウェア(embedded software)更新システムの方法とシステムに関するものである。以下の詳細な説明における多くの特定の詳細は、本発明を十分に理解できるようにとのものである。しかしながら、本分野の一般技術水準を有する者にとっては、明らかにこのような特定の詳細説明は要することなく本発明を実施することができる。また、従来の構造と技術内容に関しては、本発明の内容について不必要に不明瞭とするのを避けるため、以下では詳細に説明しない。以下の内容で使用している数字の見出しは、各テーマや参照上都合がよいように設けたにすぎない。なお、ここでいう「組み込みソフトウェア」とは、デジタル機器を運用するために、C/C++/Java(登録商標)/Assemblerやその他のソフトウェアプログラム言語、若しくはあらゆるCPU/マイクロプロセッサやDSP(Digital Signal Processor)を使用した実行可能マシンコードによって記述されたソフトウェアである。
【0018】
2. システム構造
まず、システム構造の観点から、本発明のソフトウェア更新システムについて説明する。図1は、従来のマイクロプロセッサシステムの概略図である。従来のデジタル機器におけるマイクロプロセッサシステムは、CPU(Central Processing Unit)100と、RAM(Random Access Memory)110と、フラッシュ(FLASH)/ROMメモリー115と、いくつかの周辺装置120とを備える。フラッシュ/ROMメモリー115内のソフトウェアプログラムは、実行される際には、CPU100によって読み取られる。フラッシュは、電力持続型不揮発性メモリー(nonvolatile memory)であり、上書きや再書き込み(reprogrammed)が可能であるが、ブロック(blocks)を単位とする必要がある。ROMは、「読み出し専用メモリー(Read Only Memory)」を指す。
【0019】
図1に示すマイクロプロセッサシステムと同様に、図2に示すように、従来のデジタル機器内のDSPシステムは、DSPコア230と、RAM240と、フラッシュ/ROMメモリー245と、いくつかの周辺装置250とを備える。フラッシュ/ROMメモリー245内のソフトウェアプログラムは、実行される際には、DSPコア230によって読み取られる。
【0020】
デジタル携帯電話機のような典型的なデジタル機器は、通常マイクロプロセッサシステムを備え、また、DSPシステムを備えるかもしれない。本発明のソフトウェア更新システムは、デジタル機器のマイクロプロセッサシステム及び/又はDSPシステム内の組み込みソフトウェア内に常駐するように形成される。本発明の1つの実施例に関するソフトウェア更新システムは、デジタル機器内に実装される場合には、パッチ受信用のソフトウェアモジュール302と、パッチ書き込み用のソフトウェアモジュール304と、パッチデータベース310と、パッチ訂正処理器(patch correction handler)320とを備えるように形成される。図3は、デジタル機器内のソフトウェア更新システム構造例の概略図である。
【0021】
図3に示すように、パッチ受信モジュール302は、ソフトウェアパッチを受信する。パッチ受信モジュールは、有線接続又は無線接続によるデータ受信機能と、データ検出機能及び/又はデータセキュリティチェック機能とを採用している。パッチ受信モジュール302は、正確にパッチを受信した後、このパッチデータをパッチ書き込み(patch programming)モジュール304に供給する。パッチ書き込みモジュール304は、パッチデータをパッチデータベース310に書き込む。パッチ書き込みモジュールは、データをフラッシュ、NVM、EEPROMメモリー、及び/又はその他のメモリーに書き込むことができるプログラムを有する。パッチデータベース310は、パッチデータを保存するフラッシュメモリー内のメモリーエリア及び/又は他のタイプのメモリーである。パッチ訂正処理器320は、元のエラーのあるプログラムではなく、パッチプログラムを使用するようにする。パッチ訂正処理器は、ソフトウェア実行の際に、元のエラーのあるソフトウェアコードエリアからパッチプログラムエリアにジャンプ(jump)する機能を有する。
【0022】
3. ソフトウェア更新技術
3.1 ソフトウェアの複数のソフトウェアセクション化
本発明の1つの実施例に関連したソフトウェア更新システムの長所を利用するため、組み込みソフトウェアをデジタル機器に実装する前に、まず組み込みソフトウェア内に複数の位置を決定し、以後ソフトウェア更新の開始地点とする。このような位置は、アドレスの小から大の順に基づいて配列され、L1,L2,・・・,Lnを用いて表される。nは、このような位置の総数を表す。
【0023】
2つの連続位置間の組み込みソフトウェアの部分(例えばL1とL2との間)を組み込みソフトウェアのソフトウェアセクション(例えばS1)と定義する。このようにして、組み込みソフトウェアは、効果的に複数のソフトウェアセクションに分割され、アドレスの小から大の順に基づいてS1,S2,・・・,Snと配列される。nは、ソフトウェアセクションの総数を表す。注意点は、最後のセクションSnはLnから始まってこの組み込みソフトウェアの終了地点まで続くことである。
【0024】
他のソフトウェアと同様に、組み込みソフトウェアは、度々更新や修正が必要である。例えば、ソフトウェアセクションS2内のプログラムコードを更新する必要がある場合には、位置L2からソフトウェアセクションS2内の組み込みソフトウェアの代わりに対応するソフトウェアパッチを直接実行することによって更新する。こうして、S2内のプログラムコードの代わりにこのソフトウェアパッチが実行時に使用される。状況によっては、更新される必要のあるプログラムコードがS2に存在する場合でも、その他の位置(例えばL1)から更新し始めた方が便利である。すなわち、状況によっては、ソフトウェアパッチまでの組み込みソフトウェアの実行は、目的のセクションより早く始めるのが望ましい。
【0025】
ソフトウェアセクションのサイズは、必ずしも一定ではなく、各セクションの異なった要求に基づいて異なり、あるセクションから他のセクションまで可変となり得る。位置L1,L2,・・・,Lnを決定し、組み込みソフトウェアセクションをS1,S2,・・・,Snに分割する方式は、ソフトウェア機能(software functions)の限界、プログラムの行数、CPU/DSPの命令のタイプ、ソフトウェアの設計方式、ハードウェアの設計方式、ソフトウェア修正の要求、エラー訂正の要求等、本発明の分野に熟練する者の認識する方式に基づくであろう。
【0026】
各位置L1,L2,・・・,Lnにおいて、更新処理ルーチンが設置され、ソフトウェアの更新を処理する。図4は、ソフトウェアセクション分割と更新処理ルーチンの配置とを示す概略図である。組み込みソフトウェア400を調整するために、当該ソフトウェア400の全てのセクション401,402,403の開始地点に更新処理ルーチン404,405,406が設置される。
【0027】
更新処理ルーチンは、ソフトウェア更新処理を担当するソフトウェアルーチンである。ソフトウェアセクション(例えばS2)内にあるプログラムコードを更新するソフトウェアパッチが存在する場合には、位置L2における更新処理ルーチンによってCPU/DSPの実行がソフトウェアパッチの開始アドレスに移され、そのセクションのパッチプログラムが実行される。このプロセスは、詳細は図6にて説明するが、パッチの開始アドレスにジャンプする前に、パッチコントロールルーチン(Patch-Control-Routine)の使用に関与する。セクションS2を更新するパッチが存在しない場合には、位置L2における更新処理ルーチンは、CPU/DSPに現存するS2のプログラムの実行を命令する。すなわち、この更新処理ルーチンは、システムの正常実行に影響しないように設計される。
【0028】
更新処理ルーチンの内容は、場所によって異なるか、全て同じ設計内容である。
【0029】
3.2 ソフトウェアセクションに基づいたソフトウェア更新
図5は、ソフトウェアセクションに基づいたソフトウェア更新の設計例を示すものである。ソフトウェアセクションK510を更新するソフトウェアパッチが存在する場合には、セクションK内の更新処理ルーチン505は、ソフトウェアの実行時にCPU/DSPの実行アドレスをパッチプログラム507の開始アドレス502にジャンプ506してソフトウェアセクションKを更新する。このようにして、セクションK内の元のプログラムに代わってパッチプログラム507が実行される。このパッチプログラム507を実行後、CPU/DSPのIP(Instruction Pointer)は、予め決定された元のソフトウェア内の位置にジャンプ508するように指示される。この位置は、通常ソフトウェアセクション510内で更新される必要のあるプログラムコードのすぐ後ろである。このようにして、セクション510内の全てのバグは、パッチプログラム507の実行によって回避(bypassed)される。
【0030】
図6は、ソフトウェアセクションに基づいたソフトウェア更新の設計例と実施例を示すものである。ソフトウェアセクションK610を更新するソフトウェアパッチが存在する場合には、ソフトウェアセクションK内の更新処理ルーチン605は、CPU/DSPに対してパッチコントロールルーチン609へジャンプ606するように命令する。パッチコントロールルーチン609は、一般のパッチプログラム実行をコントロールすることができるソフトウェアルーチンであり、例えばパッチプログラム実行の準備工程及び/又は「パッチコントロールテーブル(Patch-Control-Table)(以下に説明する)」内のパッチ現状態及びシステムパラメーターに基づいて、パッチプログラム607の開始アドレス602を決定する。このパッチコントロールルーチン609は、CPU/DSPに対してセクションK610のパッチプログラム607の開始アドレスへジャンプ611するように命令する。このようにして、パッチプログラム607は、セクションK610内の元のプログラムに取って代わり実行される。このパッチプログラムを実行後、CPU/DSPのIPは、元のプログラム内の予め決定された位置にジャンプ608するように命令される。この位置は、通常更新される必要のあるプログラムコードのすぐ後ろである。
【0031】
上述したパッチコントロールテーブルは、パッチの受信、メモリーへの書き込み、パッチ信号操作(patch signaling process)をコントロールする情報のリストである。この情報のリストは、デジタル機器に既に書き込まれたパッチの識別コード、及び/又はこれらのパッチによって更新されたセクションの識別コードからなる。また、新しいパッチを保存するためのパッチプログラムエリア内のバイト数のようなパッチデータベースの情報も含む。また、その他、パッチの受信やパッチの書き込み、パッチの信号操作をコントロールする情報も有する。このパッチコントロールテーブルは、パッチコントロールルーチン内かデジタル機器のメモリー600内のその他の場所に保存される。
【0032】
パッチコントロールルーチン609のような中間工程を使用すると長所があることは、本分野の熟練者が認めるところとなっている。すなわち、ソフトウェアのパッチは、図5に示すパッチプログラム507の開始アドレス502に直接ジャンプするのではなく、この中間のパッチコントロールルーチンを介してCPU/DSPのIPに対して、図6に示すパッチプログラム607の開始アドレス602にジャンプするように命令する。既に更新用のパッチがあるセクションに対して新しいパッチが必要な場合には、既存のパッチに対応するセクション識別コード(section identifier)をパッチコントロールルーチン609が担当するパッチコントロールテーブルから削除(例えば0に設定)するが、新しいパッチが元のセクション識別コードと新しい異なったパッチ識別コード(Patch Identifier)及び/又はパッチ開始アドレスとともになって、パッチコントロールテーブル中に書き込まれる。このようにして、パッチコントロールルーチン609は、パッチコントロールテーブルの内容から対応した新しいパッチプログラムの開始アドレスを決定し、CPU/DSPのIPに対して、この新しいパッチプログラムにジャンプするように命令する。
【0033】
パッチプログラムコードを保存するメモリーエリアは、組み込みソフトウェアプログラムコードの外部に設置することができるし、また、ソフトウェアプログラムコードの内部にも設置することができる。例えば、フラッシュメモリー内のメモリーエリアは、ソフトウェアプログラム内で16進数"0xFF"のバイトによって充填されるデータエリア、若しくはデータバッファー(data buffer)として確保され、このメモリーエリアは、組み込みソフトウェアコードエリア内に設置され、これらの16進数"0xFF"をパッチプログラムコードに変更若しくは上書きすることにより、パッチプログラムコードを保存することができる。
【0034】
3.3 更新処理ルーチンの設計
以下、更新処理ルーチンの設計及び実装に関連する方法について説明する。
【0035】
3.3.1 パッチ検査ルーチン( Patch-Checking-Routine )を使用した更新処理ルーチンの設計
パッチフラグ(patch flag)又はパッチ検査ルーチンを使用することは、更新処理ルーチンの設計及び実装例である。このような方法により、各ソフトウェアセクションは、対応するパッチフラグ及び/又はパッチ検査ルーチンを有し、このセクションを更新するためにパッチがパッチエリアに存在するか否かを示す。
【0036】
パッチエリアにセクションに対応するパッチが書き込まれていない場合には、更新処理ルーチンが以下のようなプログラム作成言語を用いて表示される。これは、直接C/C++/Java(登録商標)/Assemblerやその他のソフトウェアプログラム言語、若しくはCPU/マイクロプロセッサ及びDSPの実行可能マシンコードに訳すことができる。
【0037】
【数1】
【0038】
上述したように、以上のプログラムにおいてパッチ検査ルーチンが使用される。このパッチ検査ルーチンは、パッチエリアにこの組み込みソフトウェアのセクションを更新するパッチが存在するか否かを検査する。また、パッチフラグ又は一部のシステムパラメーターを検査するか、ソフトウェア機能を利用してこのセクションを更新するパッチの存在を検査する。
【0039】
パッチ訂正ルーチン(Patch-Correction-Routine)は、CPU/マクロプロセッサ又はDSPに対して、元のセクションコードではなく、パッチプログラムコードを使用するように命令するソフトウェアルーチンである。例えばパッチプログラムへジャンプする前に、一部のパラメーターを保存したり一部のパラメーターや機能を設定したりする等の準備を行う必要がある場合には、パッチ訂正ルーチンは、前置き操作(pre-process)を実行する。また、パッチ訂正ルーチンは、CPU/マクロプロセッサ又はDSPのIPに対して、図5に示すパッチプログラムの開始アドレスの方向や、図6に示すパッチコントロールルーチンの方向命令を有する。パッチコントロールルーチンを使用する長所に関しては、既に3.2節において説明した。
【0040】
3.3.2 Jump/Branch命令を使用した更新処理ルーチンの設計
もう1つの更新処理ルーチンの設計及び実装例は、JUMP(若しくはARM(登録商標)語法中のBRANCH)コマンド、又は類似したCPU/DSP命令を使用する。注意すべきことは、コンピュータのプログラム設計では周知の概念であるJUMPは、本出願において一般用語として使用され、CPU/DSPの実行を1つの位置からもう1つの位置へと導くことを意味するということである。
【0041】
パッチエリアにソフトウェアセクションを更新するための対応するパッチが存在しない場合には、更新処理ルーチンは、直接C/C++/Java(登録商標)/Assembler、及び他のプログラム言語に訳されるか、又はCPU/マイクロプロセッサとDSPの実行可能マシンコードに訳されて表示されるプログラム作成言語を用いて以下のように表示される。
【0042】
【数2】
【0043】
パッチエリアにソフトウェアセクションを更新するための対応するパッチが存在しない場合には、更新処理ルーチンの第1の命令は、このセクションのソースコードの開始アドレスであるLabel_Oまでジャンプすることである。
【0044】
パッチエリアにソフトウェアセクションを更新するための対応するパッチが存在する場合には、更新処理ルーチンの第1の命令が変更され、CPU/DSPのIPをLabel_OではなくLabel_Pへジャンプするように指示する。この更新処理ルーチンは、直接C/C++/Java(登録商標)/Assembler、及び他のプログラム言語に直接訳されるか、又はCPU/マイクロプロセッサとDSPの実行可能マシンコードに訳されるプログラム作成言語を使用して以下のように表示される。
【0045】
【数3】
【0046】
この状況下で、CPU/マイクロプロセッサ又はDSPのIPは、パッチ訂正ルーチンの方向に命令される。パッチ訂正ルーチンの設計方法については、既に3.3.1節において説明した。注意すべきことは、フラッシュメモリー内の内容は、"1"から"0"への変更のみで、"0"から"1"への変更は許可されていない。よって、ジャンプのオフセット(offset)の初期値は、16進数"0xFFF"に設定されており、パッチの書き込みを実行する際にオフセットを減らすことができる。
【0047】
3.3.3 Direct Jump/Branch命令を使用した更新処理ルーチンの設計
以下、もう1つの本発明の実施例に関連した更新処理ルーチンの設計及び実装例について説明する。パッチエリアにソフトウェアセクションを更新するための対応するパッチが存在しない場合には、更新処理ルーチンは、直接C/C++/Java(登録商標)/Assembler、及び他のプログラム言語に訳されるか、又はCPU/マイクロプロセッサ及びDSPの実行可能マシンコードに訳されるプログラム作成言語を用いて以下のように表示される。
【0048】
【数4】
【0049】
パッチエリアにソフトウェアセクションを更新するための対応するパッチが存在しない場合には、更新処理ルーチンの唯一の命令である第1の命令は、そのセクションのソースコードの開始アドレスであるLabel_Oにジャンプすることである。
【0050】
パッチエリアにソフトウェアセクションを更新するための対応するパッチが存在する場合には、更新処理ルーチンの唯一の第1の命令は変更され、CPU/DSPの実行は、パッチ訂正ルーチンの開始アドレス又はパッチプログラムの開始アドレスへと導かれる。この更新処理ルーチンは、直接C/C++/Java(登録商標)/Assembler、及び他のプログラム言語に訳されるか、又はCPU/マイクロプロセッサ及びDSPの実行可能マシンコードに訳されるプログラム作成言語を用いて以下のように表示される。
【0051】
【数5】
【0052】
パッチ訂正ルーチンの設計方法については、既に3.3.1節において説明した。
【0053】
以下、特に32ビットの命令セットを使用するARMモードに対して、ARM(登録商標)(Advanced RISC Machines) CPUアセンブリーコードを使用する例について説明する。
【0054】
【数6】
【0055】
この例において、ARM CPUのBranch命令"B"は、更新処理ルーチンとして使用される。ARM CPUのBranch命令"B"は、次の行までジャンプするため、そのオフセット値は、"0xFFFFFF"となる。フラッシュメモリーのプログラミング(programming)の際、フラッシュメモリー内の1つのビット値は、"1"から"0"に変更され、このオフセット値"0xFFFFFF"は、容易に他の24ビット値に変更される。
【0056】
このセクションを更新するパッチが受信されたら、パッチプログラムがパッチプログラムエリアに書き込まれる。この"B"命令のオフセット値も、元々Label_Oに対応した"0xFFFFFF"からパッチプログラムの開始アドレスに対応するオフセット値に変更される。
【0057】
【数7】
【0058】
3.4 パッチ操作エリアに基づいたソフトウェア更新
本節では、ソフトウェアプログラム内のパッチ操作に関するパッチ操作エリア(Patch-Operation-Area)を設置又は確保する技術を紹介する。パッチ操作エリアは、パッチ機能を操作するメモリーエリア又はデータエリアブロック(block of data)である。例えば、パッチ操作エリアは、上述した更新処理ルーチンを保存するメモリーエリア、CPU/DSPのIPをパッチプログラム開始アドレスにジャンプさせるJUMPコマンドを保存するメモリーエリア、パッチコントロールルーチンを保存するメモリーエリア、パッチプログラムを保存するメモリーエリアである。
【0059】
3.1節と同様に、まず、小から大の順にL1,L2,・・・,Lnの1組のアドレスの位置を決定する。このようにして、この組み込みソフトウェアは、効果的にS1,S2,・・・,Snのような複数のソフトウェアセクションに分割される。パッチ操作エリアは、L1,L2,・・・,Lnの全ての位置、若しくは小部分か大部分の位置に設置又は確保される。また、一部のパッチ操作エリアも、組み込みソフトウェアの最末端又は組み込み式ソフトウェアコードの範囲外のメモリーエリアに挿入若しくは確保される。
【0060】
1つの実施方式は、元の組み込みソフトウェア内にメモリーを直接確保し、このようなメモリーエリアを組み込みソフトウェア更新用のパッチ操作エリアとして使用する。このような状況下において、上述した「設置」という言葉は、組み込みソフトウェアのある命令を使用してメモリーエリアを「確保」するという意味がより近い。
【0061】
パッチ操作エリアが定義され、これが更新処理ルーチンとされる際に、前節に示すように、組み込みソフトウェアの各ソフトウェアセクション内に設置される。
【0062】
以下、パッチ操作エリアをアセンブリーコードプログラム内に設置/確保する方法について一例を挙げて説明する。アセンブリーコードプログラムでは、通常アセンブリーコードの命令内のあるデータエリアに宣言し、このようなデータエリアを利用してある固定パラメーター又はブロックデータを収容することができる。この特徴に基づいて、ソフトウェアプログラム内の特定のデータエリアに宣言し、データエリアをソフトウェアパッチ操作に専用に利用することができる。デジタル機器において、ソフトウェアプログラムを保存するのにフラッシュメモリーが使用されている場合には、特定のデータエリアも16進数"0xFF"で満たされていることが宣言される。このようにして、以後、パッチプロセスは、容易にこれらの16進数"0xFF"を、パッチ訂正ルーチン、パッチコントロールツーチンのプログラムコード、ソフトウェアセクションを更新したりエラーを修復したりするプログラムコードのようなパッチプログラムコードに変更することができる。これは、従来のフラッシュメモリーの内容が"1"から0"にのみ変更可能で、"0"から"1"には変更できないという事実に基づく。また、パッチ操作エリア内のパッチ操作専用の特定のプログラムコードを定義することができる。
【0063】
CPUがパッチプログラムエリアにセクションを更新するパッチが存在するソフトウェアセクションを実行する際には、CPUの命令IPが図5のパッチプログラム開始アドレス502及び図6のパッチ開始アドレス602のようなパッチプログラム開始アドレスに導かれる。しかしながら、アセンブリーコードのjump/branch命令は、通常最大のジャンプ範囲がある。例えば、1つのARM CPUがTHUMBモードにある場合には、アセンブリーコード"B"の最大branch範囲は、僅か±2048バイトである。CPUのIPがjump/branchアセンブリーコードによってパッチ開始アドレスに移動されない場合には、複数のjump/branchコードが長距離ジャンプを行う。例えば、ARM CPUがTHUMBモードにある場合には、±2048バイトよりも長いjump/branchには、branchアセンブリーコード"B"及びLong Branch with Linkアセンブリーコード"BL"を使用することができる。これら複数のjump/branchに対してパッチ操作エリアを確保する必要がある。以下、jump/branchに対するパッチ操作エリアを設置する際に、メモリー空間を節約する技術について説明する。
【0064】
まず、全てのソフトウェアセクションにjump/branchコマンドを挿入する。例えば、ARM CPUがTHUMBモードにある場合には、最大jump/branch範囲が±2048バイトであるjump/branchアセンブリーコード"B"を挿入する。このjump/branchコマンドのオフセットを設定して、次のコマンドにジャンプするようにする。このようにして、CPUの操作の結果は、このjump/branchコマンドのないソースコードと同様である。この方法については、既に3.3.3節において説明した。
【0065】
パッチ操作エリアは、パッチコントロールブロックエリアを備える。パッチコントロールブロックの機能は、パッチコントロールルーチンと同様で、第2のjump/branchコマンドを有する。フラッシュメモリーを使用する場合には、パッチコントロールブロックは、16進数"0xFF"によって満たされていると宣言される。このようにして、パッチプロセスのフラッシュプログラミングは、このような16進数"0xFF"を第2のjump/branchコードのようなプログラムコードに容易に変更することができる。複数のソフトウェアセクションは、1つのパッチコントロールブロックをシェアする。
【0066】
図7は、パッチコントロールブロックのパッチプログラムエリアへのジャンプの実施例である。短距離のジャンプ706により、このプログラムの実行がソフトウェアセクション710からパッチコントロールルーチンとして動作するパッチコントロールブロック709に移る。第2のジャンプ711によってプログラムの実行をパッチプログラム707のパッチ開始アドレス702まで移す。パッチプログラム707を実行して、ソフトウェアセクション710の最末端にジャンプして戻る。
【0067】
以下のプログラム作成言語によるプログラムの例は、4つのソフトウェアセクション(セクションA、セクションB、セクションC、セクションD)のシェアするパッチコントロールブロックを示す。この例において、セクションAのパッチ操作エリアは、更新処理ルーチン"Jump to Label_O_A"として定義され、セクションBのパッチ操作エリアは、更新処理ルーチン"Jump to Label_O_B"として定義され、セクションCのパッチ操作エリアは、パッチコントロールブロック及び更新処理ルーチン"Jump to Label_O_C"として使用される16進数"0xFF"で満たされたNバイトのデータブロックエリアとして定義され、セクションDのパッチ操作エリアは、更新処理ルーチン"Jump to Label_O_D"として定義される。
【0068】
【数8】
【0069】
ソフトウェアパッチを受信すると、パッチプロセスがフラッシュプログラミングプロセスを起動し、対応するソフトウェアセクション内のjump/branchコマンドのオフセットを変更し、また、対応するパッチコントロールブロック内でバイトを"0xFF"から第2のjump/branchコマンドに変更するか、3.3.1節で述べたパッチ訂正ルーチンとして作用するDSP/CPU命令コードに変更する。例えば、ソフトウェアセクションAを更新するためにパッチを受信する場合には、パッチコントロールブロック内の最初の数バイトは、セクションAのパッチ訂正ルーチンの命令に変更される。ソフトウェアセクションDを更新するためにパッチを受信する場合には、パッチコントロールブロック内の次に続く数バイトは、セクションDのパッチ訂正ルーチンの命令に変更される。このようなパッチ訂正ルーチンは、CPU/DSPのIPをパッチプログラムの開始アドレスへと導く。
【0070】
【数9】
【0071】
以下、パッチコントロールブロックのサイズを小さくする技術を紹介する。フラッシュメモリーのスペースを節約すること、メモリーの使用スペースを制限することが重要な情況下では、できるだけフラッシュメモリーの使用を控えることが必要となる。パッチ操作時のフラッシュメモリーの使用を控える1つの方法として、パッチコントロールブロックのサイズを小さくする方法がある。上述した実施例において、パッチコントロールブロックは、セクションA、セクションB、セクションC、セクションDの4つのソフトウェアセクションによってシェアされている。しかしながら、この4つのセクションが同時に対応するパッチを有する確率が非常に低い場合には、パッチコントロールブロックのサイズは、3つ又は2つのみのソフトウェアセクションを扱うのに必要なスペースのみを有するように設計される。
【0072】
3.5 パッチ操作ルーチン設置の際のソフトウェアコンパイル
元の組み込みソフトウェア内に更新処理ルーチン又はパッチ操作エリアを設置後、ソフトウェアコンパイルを行う際に、一部複雑な状況が出現する可能性がある。
【0073】
以下、ソフトウェアコンパイル時にプログラム言語配列(program word alignment)の問題を回避する技術を紹介する。上述したように、各ソフトウェアセクションには、更新処理ルーチンが設置されており、パッチエリアにセクションを更新するパッチがあるか否かを検査する。また、アセンブリーコード間のメモリースペースの複数のブロックを、第2のjump/branchコマンドを含むようにパッチ操作エリアに使われるパラメーターデータエリアとして宣言することにより、プログラムコードでパッチコントロールブロックを配置することができる。しかしながら、コード挿入は、ソフトウェアコンパイル時に複雑な状況を引き起こす可能性がある。例えば、ソフトウェアコンパイル中、CPUがプログラム言語の並列を要求する可能性がある。また、例えば、ARM CPUがTHUMBモードにある場合に、アセンブリーコードLDRは、4バイトで割り切れるオフセットアドレス(offset address)を必要とする可能性がある。よって、jump/branchコマンド及びパッチコントロールブロックを挿入してパッチ操作を行う際に、挿入したバイトを調整してLDRのオフセットアドレスが4バイトで割り切れるようにする必要がある。すなわち、パッチ操作のために挿入されたバイトを調整することにより、ソフトウェアコンパイル時に言語配列をする必要がなくなる。
【0074】
以下、ソフトウェアコンパイル時にオフセットが許容範囲を超過することを防止する技術を紹介する。例えば、ARM CPUがTHUMBモードにある際に、アセンブリーコードLDRを用いて、オフセット2048バイト未満のデータをLDRコードからロードする。パッチ操作のためにLDRとオフセットアドレスとの間に挿入されたコードがロードされる必要のあるデータを有する場合には、LDRコードのオフセット値が2048バイト以上となる可能性があり、よってコンパイルの問題が生じる。この種の問題を防止する技術は、このようなロードされる必要のあるデータをアセンブリーコード(例えばLDRコード)に比較的近い位置に移動することにより、オフセット値を2048バイト未満にすることである。すなわち、このようなあるアセンブリーコード(例えばLDRコード)を用いてロードされる必要のあるデータをこのようなアセンブリーコード(例えばLDRコード)に比較的近い位置へ移動させるかコピーすることにより、ソフトウェアコンパイル時にアセンブリーコードがオフセット値の範囲を超過する問題を防止することができる。
【0075】
同様に、パッチプロセスに関連したバイトを組み込みソフトウェアに設置してから、元のプログラムコード(例えばARMアセンブリーコードのBコマンド)のオフセットが範囲を超過する。すなわち、Bコマンドがジャンプしようとする目標位置が遠すぎる可能性がある。Bと目標位置との間に、もう1つのjump/branchコマンドを挿入すると、ソフトウェアコンパイル時の目標位置が範囲を超過する問題を防止することができる。すなわち、長距離のジャンプは、2回に分割するということである。
【0076】
3.6 新しいパッチによるパッチプログラムの更新
デジタル機器が受信したパッチをプログラムの書き込みに成功すると、新しいパッチがソフトウェアセクション内の元のプログラムコードに取って代わって使用される。しかしながら、既に書き込まれたパッチプログラムには、依然として問題を起こしたり、パッチプログラムを一定期間後に再び更新する必要が出てきたりする可能性がある。以下に、パッチプログラムの更新技術について説明、紹介する。
【0077】
デジタル機器内に書き込まれたパッチを更新するため、新しいパッチプログラムを作成してこれを更新する。この機能を支援するため、パッチプログラムを設計する際に、後の新しいパッチのパッチ操作のためのコードスペースを確保するか、上述したソフトウェアセクションの更新方式と類似した更新処理ルーチンをパッチプログラム内に挿入するべきである。よって、CPU/DSPが更新を行う新しいパッチを有する元のパッチのソフトウェアセクションを実行すると、CPU/DSPのIPは、更新処理ルーチンによって元のパッチプログラムではなく新しいパッチプログラムを使用するように指示される。
【0078】
ソフトウェアプログラムのソフトウェアセクションを更新するパッチの設計に関する本出願の示す全ての技術は、他の既存のパッチを更新するためのパッチを設計するのに応用することができる。
【0079】
3.7 コンパイラ最適化処理( compiler optimization process )による影響の防止
組み込みソフトウェアは、C/C++/Java(登録商標)/Assemblerやその他の言語を用いて記述される。ソフトウェアプログラムがアセンブリーコードではなく、C/C++/Java(登録商標)、又はその他のプログラム言語で記述されている場合には、当該プログラムは、ソフトウェアコンパイルツールを使用してアセンブリーコードに変換することができる。ソフトウェアコンパイルツールは、ソフトウェアプログラムにおいて最適化処理を行い、C/C++/Java(登録商標)、若しくはその他のプログラム言語で記述されたプログラムをオブジェクトコード又はアセンブリーコードに変換するコンパイルプロセスにおいて、元のプログラムを変更/最適化することがある。最適化処理によって一部のプログラムコードが消失することがある。よって、C/C++/Java(登録商標)によって更新処理ルーチンを直接プログラムに設置する場合には、更新処理ルーチンは、コンパイラの最適化プロセスにおいて変更又は消去されることがある。しかしながら、一般的にコンパイル後アセンブリーコードをオブジェクトコードに変換する段階において、コードの最適化は行われない。また、ソフトウェアリンクツール(software linker tools)を使用してオブジェクトコードを最後の実行可能マシンコードにリンクする段階においても、コード最適化の作業は行われない。
【0080】
C/C++/Java(登録商標)及び他のプログラム言語を用いて記述されるソフトウェアプログラムは、以下の2種類の方式でコンパイルすることができる。
【0081】
コンパイル方法1:ソフトウェアコンパイルツールを使用してC/C++/Java(登録商標)プログラム言語によって記述されたプログラムコードをオブジェクトコードに変換する(最適化プロセスを併用することもある)。その後、ソフトウェアリンクツール(software linker tools)によってオブジェクトコードをリンクして実行可能マシンコードを生成する。
【0082】
コンパイル方法2:ソフトウェアコンパイルツールを使用してC/C++/Java(登録商標)プログラム言語によって記述されたプログラムコードをアセンブリーコードに変換する(最適化プロセスを併用することもある)。その後、ソフトウェアアセンブリーツール(software assembler tools)によってアセンブリーコードをオブジェクトコードに変換する。最後にソフトウェアリンクツールによってオブジェクトコードをリンクして実行可能マシンコードを生成する。
【0083】
通常、コンパイル方法1によって生成される最後の実行可能マシンコードとコンパイル方法2によって生成される最後の実行可能マシンコードは、同様である。ソフトウェアプログラムが直接アセンブリーコードで記述されている場合には、ソフトウェアアセンブリーツールを利用して当該プログラムをオブジェクトコードに変換することができる。その後、ソフトウェアリンクツールによってオブジェクトコードをリンクして実行可能マシンコードを生成する。
【0084】
ここで、コンパイル方法2を利用して更新処理ルーチンとパッチ操作エリアをソフトウェアプログラムに設置する技術について説明する。コンパイル方法2において、ソフトウェアコンパイルツールを利用してC/C++/Java(登録商標)プログラム言語で記述されたプログラムコードをアセンブリーコードに変換した(最適化プロセスを併用することもある)後、更新処理ルーチン、パッチコントロールルーチン、及びパッチ操作エリアは、アセンブリーコード中に挿入される。アセンブリーコードをオブジェクトコードに変換し、オブジェクトコードをリンクして実行可能マシンコードを生成するコンパイルプロセスにおけるソフトウェアコードの変更及び最適化が行われないため、パッチルーチン及びパッチプログラムスペースは、影響を受けない。
【0085】
もう1つの方法は、C/C++/Java(登録商標)プログラム言語で記述されたプログラムコードをオブジェクトコードに変換した後、更新処理ルーチン、パッチコントロールルーチン、又はパッチ操作エリアをオブジェクトコードに挿入する方法である。その後、ソフトウェアリンクツールを使用してオブジェクトコードをリンクし実行可能マシンコードを生成する。
【0086】
3.8 ソフトウェアツールによるパッチ操作ルーチンの設置
本発明は、さらにデジタル機器(例えば携帯電話機)の組み込みソフトウェア内に上述した更新処理ルーチン及びパッチ操作エリアを設置又は挿入する方法を提供する。デジタル機器は、生産ライン上で製造が完成するため、市場投入される前に、予め組み込みソフトウェアに書き込みされ、操作可能の状態にしておく必要がある。デジタル機器に組み込みソフトウェアがプログラムされる前に、更新処理ルーチン及び/又はパッチ操作エリアは、デジタル機器の組み込みソフトウェア内に設置されることが望ましい。
【0087】
効果的にデジタル機器の組み込みソフトウェア内に更新処理ルーチン及びパッチ操作エリアを設置するために、本発明は、さらに自動設置を行う設置ツールを提供する。
【0088】
設置ツールの実際的応用は、設置プロセスを組み込みソフトウェアのコンパイルプロセスと統合することである。例えば、ソースコードのコンパイルを行う前に、設置ツールが自動的に起動して設置作業を終える。このようにして、ソフトウェア開発者は、本来の仕事であるコードの開発作業のみを考慮すればよく、設置処理について関与又は懸念する必要がない。
【0089】
例えば、設置プロセスの応用は、C/C++/Java(登録商標)コードではなく、アセンブリーコード上で実行することができる。このような状況下、C/C++/Java(登録商標)コードは、まず、対応するアセンブリーコードにコンパイルされ、その後設置プロセスが、生成したアセンブリーコードに作用し、更新処理ルーチンとパッチ操作エリアとを挿入する。その後、アセンブリーコードがさらにオブジェクトコードにコンパイルされる。このようにして、C/C++/Java(登録商標)コードのコンパイルにおけるいかなる最適化処理も更新処理ルーチン及びパッチ操作エリアに影響しない。
【0090】
関連分野の技術の熟練者は、本発明の内容に基づいて、容易に自己の設置ツールを研究開発できるであろうが、以下に2つの設置ソフトウェアツールの例を紹介する。
【0091】
[実施例A]
C/C++/Java(登録商標)/Assemblerやその他のプログラム言語、又はCPU/マイクロプロセッサ及びDSPの実行可能マシンコードによって記述されたソフトウェアコードのN行(若しくはバイト)(所定の数字)に対して、設置ツールは、更新処理ルーチン及び/又はパッチ操作エリアのブロックをソフトウェアコードに挿入する。また、設置ツールは、必要時に、対応するセクション識別コードに基づいて、更新処理ルーチン内のパラメーターとラベル(labels)とを変更することができる。設置処理は、直接組み込みソフトウェアのソースコードを含む元のファイル内で行われる。
【0092】
[実施例B]
ある応用においては、デジタル機器内の組み込みソフトウェアには、組み込みソフトウェアのソースコードを有するファイルが複数存在する。各ファイルに対して、設置ツールは、元のファイルと同じソフトウェアコードを有するもう1つのファイル(すなわち、当該ファイルのコピー)を生成する。更新処理ルーチン及び/又はパッチ操作エリアを元のファイルではなく、コピーファイルに挿入する。すなわち、生成されたファイル内における、C/C++/Java(登録商標)/Assemblerやその他のプログラム言語、又はCPU/マイクロプロセッサ及びDSPの実行可能マシンコードによって記述されたソフトウェアコードの全てのN行(若しくはバイト)(予め決められた数字)に対して、設置ツールは、更新処理ルーチン及び/又はパッチ操作エリアのブロックをソフトウェアコードに挿入する。また、設置ツールは、必要時に、対応するセクション識別コードに基づいて、更新処理ルーチン内のパラメーターとラベル(labels)とを変更することができる。
【0093】
4. パッチの送受信
4.1 パッチデータの送信
まず、パッチサーバー(patch server)からデジタル機器へのソフトウェアパッチの送信方法について説明する。図8は、特定の通信層(layer)を使用してパッチを送信する実施例を示す。実際の応用によっては、システムの設計方式と需要の違いに基づき、パッチデータ送信のコントロールするため3層のうちの1層又は2層のみを有する。その他の応用としては、回路データ(circuit data)送信やパケットデータ(packet data)送信のような、データ送信チャンネル(data transmission channels)又は送信パス(transmission path)を利用する。また、さらにその他の応用として、音や映像の送信チャンネルを使用したり、パッチデータをこれらのチャンネルや送信パスに保存したりして、パッチデータをデジタル機器に送信する。
【0094】
この分野の技術の熟練者にとって、パッチサーバーとは、無線接続や有線接続のような既存の通信設備やチャンネルを介すことを理想として複数のデジタル機器へソフトウェアパッチデータを分配若しくは送信できるシステムであろう。パッチサーバーは、動作時に各レベルで自動化される。図3に示すように、送信時、デジタル機器は、パッチ受信モジュール302を介してパッチデータを受信する。
【0095】
パッチデータ送信プロセス中又は送信後、デジタル機器は、確認のため信号(又はメッセージ)をパッチサーバーに送信する。もう1つの例として、デジタル機器は、信号(又はメッセージ)をパッチサーバーではなくパッチ回答メッセージ収集器(Patch-Reply-Message-Collector)に送信する。その後、このパッチ回答メッセージ収集器は、対応する信号とデータとをパッチサーバーに送信する。このパッチ回答メッセージ収集器は、デジタル機器からの回答メッセージを収集する受信器であり、パッチサーバーと異なる位置に設置される。
【0096】
TIA/EIA−95及びCDMA2000標準に基づくCDMA技術を使用したデジタル携帯電話機に対して、パッチデータの送信にデータ・バースト・メッセージ(Data Burst Messages)が使用される。データ・バースト・メッセージの使用例は、TIA/EIA−637標準に基づくSMSメッセージの使用である。以下、SMSメッセージを使用してパッチデータを送信する実施例について説明するが、データ送信分野の熟練者は、その他の信号やメッセージを使用して独自の送信方法を設計することができる。SMSメッセージ送信の通信層(TIA/EIA−637)は、SMSメッセージをパッチ送信の低層としたエラー検出(error detection)のプロセスを既に有しているため、デジタル機器は、ほぼエラーなしのパッチデータパケットを受信できる。
【0097】
図8に示すように、本発明に基づいて実施するパッチ送信のリンク層(Link Layer)820の実施例について説明する。リンク層820の役割は、送信エラーを検出し、間違ったデータを再送信することにより、確実にパッチ信号メッセージ800及びパッチデータ810を送信することである。エラー検出は、CRC(Cyclic Redundancy Codes)、チェックサム(checksum)等、容易にこの分野の技術に熟練した者に実行される技術に基づいている。リンク層820もセキュリティーチェック(security check)機能を有する。例えば、パッチデータを送信する前に、パッチサーバーは、暗号化アルゴリズム(encryption algorithm)を使用してパッチデータに対して暗号化を行った後、当該パッチデータをデジタル機器に送信する。デジタル機器がパッチを受信する際には、デジタル機器は、このパッチデータに対して暗号化アルゴリズムを施して受信したパッチデータとの関連性を検査する。
【0098】
SMSメッセージを使用する実施例において、SMSメッセージの運ぶパッチデータパケット(patch data packet)が受信されると、このSMSメッセージは、暗号解読モジュールに送信され、CRC検査及びメッセージ暗号解読プロセスが行われ、このパッチデータパケットの正確性を検査する。
【0099】
デジタル機器がパッチデータを正確に受信できない場合には、パッチサーバーは、パッチデータをこのデジタル機器に再送信すべきである。例えば、パッチデータの再送信(retransmission)は、時間を基礎にしたメカニズムに基づいており、パッチサーバーは、パッチデータ送信を支援するタイマーを有する。パッチサーバーがパッチをデジタル機器に送信するとタイマーが起動する。パッチサーバーがタイマー終了時までにデジタル機器から送信される対応の回答メッセージ(例えばパッチステータス報告)を受信していない場合には、パッチサーバーは、パッチデータパケットをデジタル機器に再送信する。パッチサーバーが予め決められた回数パッチデータを再送信した後、デジタル機器から送信される回答メッセージが受信されないような特殊な状況下では、サーバーは、一時再送信の作業を停止する。この分野の技術の熟練者は、本発明を理解してその他のタイマー方式を利用してパッチデータの送信と再送信とを行うことができる。
【0100】
上述したSMSメッセージを使用する実施例におけるパッチステータス報告(Patch Status Report)というパッチ信号メッセージとは、デジタル機器からパッチサーバーに送信されるメッセージであり、当該デジタル機器の現在のパッチのステータス情報を有する。デジタル機器がエラーのないパッチデータを受信すると、デジタル機器は、以下の状況下で逆方向(reverse)のSMSメッセージを利用してパッチステータス報告をパッチサーバーに送信する。
(a)受信したパッチデータが書き込み(programmed)に成功したことをデジタル機器が確認したこと、又は
(b)デジタル機器がパッチの書き込みに成功したこと
【0101】
4.2 パッチデータの構成
図9に示すように、パッチデータ940の構成についてさらに説明する。パッチデータ940を複数のパッチデータパケットに分割し、1つのパッチデータパケットが1つのリレー層(relay layer)820のメッセージ(message)によって運ばれるのが望ましい。
【0102】
SMSメッセージを使用する実施例において、1つのパッチデータパケットは、1つのSMSメッセージによって運ばれる。一般的なSMSメッセージとパッチSMSメッセージとを区別するために、パッチサーバーは、パッチ送信前にパッチSMSメッセージ中のユーザーデータ(User Data)の始めの"k"字("k"は予め決められた数であり、0から始まる全ての正数)をK文字のマジックワード(K-character Magic-word)にセットする。当該マジックワードに続いてパッチデータパケットがSMSメッセージ内に挿入される。
【0103】
図9は、パッチデータとパッチデータパケットとの間の関係を示す。パッチデータパケット950は、パケットオーバーヘッドフィールド(packet overhead field)945とペイロードデータフィールド(payload data field)947に大別される。パケットオーバーヘッドフィールド945の設計例には、以下のデータが含まれる。
(a)パッチ識別コード
(b)現在(current)のパケットナンバー
(c)最後のパケットナンバー
【0104】
この分野の熟練者は、本発明の内容に関連して、その他の方式を用いてパケットオーバーヘッドの他の設計方法を容易に実行することができる。
【0105】
パッチデータパケット950内のペイロード(payload)データ947,955,965は、全部若しくは一部のパッチデータ940を有する。
【0106】
パッチデータパケット950は、パッチサーバーによって送信される前に、予め暗号化アルゴリズムによって暗号化される。パッチサーバーは、静的及び/又は動的キー(keys)を利用して、ソフトウェアパッチデータの暗号化を行う。前者は、ディレクトリーナンバー(directory number)、ESN及びTMSI臨時識別コードのようなCPU識別コード、MAC層、その他電子通信サービス関連のパラメーターであり、後者は、位置、時間、ユーザーファイルデータを基礎とした変更可能なキーである。
【0107】
4.3 パッチデータの処理( Patch Data Processing
パッチデータパケット950を含むメッセージを受信後、デジタル機器は、このメッセージにパッチデータパケットが本当に含まれているか否かを検査する。また、デジタル機器は、この受信したメッセージに対して、エラー検出及び/又はデータの暗号解読を行う。必要なパッチデータパケットの受信に成功したら、このデジタル機器は、パケット内のペイロードデータ947,955,965から対応するパッチデータを作成する。
【0108】
SMSメッセージを使用する実施例において、デジタル機器が1つのSMSメッセージを受信する場合には、デジタル機器は、メッセージ内の始めのk文字がマジックワードと一致しているかを検査する。一致していない場合には、このSMSメッセージは、パッチデータパケットではなく、一般のSMSメッセージとして扱われる。
【0109】
一致している場合には、デジタル機器は、このメッセージデータに対して暗号解読を行い、このメッセージデータの正確性を検査する。暗号解読プロセスがこのメッセージデータが正確であるものと判断した場合には、このメッセージデータは、パッチデータパケットとして扱われ、このデータを一時緩衝エリアに保存する。一致していない場合には、このSMSメッセージは、一般のSMSメッセージとして扱われる。
【0110】
パッチデータ識別コード情報(すなわち、パッチデータパケット内の現有パッチナンバー及び最後のパッチナンバー)に基づいて必要なパッチデータパケットを全て受信した後、このデジタル機器は、これらのパケットから対応するパッチデータを作成する。
【0111】
パッチデータ940は、以下のパラメーター項目を有する。例えば、
(a)受信したパッチデータがデジタル機器用であるかどうかを確認する。例えば、
・ESN(Electronically Serial Number)
・MIN(Mobile Identification Number)又はIMSI(International Mobile Station Identity)
・製造識別コード(Manufacture Identifier)
・製品モデルナンバー(Product model number)
・ソフトウェアバージョンナンバー(Software version number)
・CPU識別コード(CPU Identifier)
・MAC(Medium Access Control)層アドレス
・その他デジタル機器を識別するパラメーター
・その他ユーザーを識別するパラメーター
【0112】
(b)パッチデータ書き込み(patch programming)に必要な項目は、例えば以下の通りである。
・一部のパッチデータは、フラッシュメモリーに書き込まれ、及び/又は一部のパッチデータは、NVM(Non Volatile Memory)メモリー及び/又はEEPROM(Electrically Erasable Programmable Read-Only Memory)に書き込まれることを示すコントロール情報
・メモリーアドレス、セクション設置情報、その他デジタル機器内のフラッシュ/NVM/EEPROMメモリーのアドレス情報であるパッチデータのアドレス情報
・ソフトウェア更新を行うパッチプログラムコード
・当該パッチプログラム内で使用されるプログラム言語情報(C/C++/Java(登録商標)/Assembler及びその他のソフトウェアプログラム言語、又はCPU/マイクロプロセッサやDSPの実行可能マシンコード)のようなパッチプログラムコードの解読情報
・フラッシュメモリー、NVM、及び/又はEEPROM内のデータエリアやデータテーブルを更新するパッチデータ
・当該パッチによって更新されるソフトウェアセクションの識別コード
・パッチプログラム作成とデータエリア更新を行うその他の情報
【0113】
(c)パッチの書き込みデータ後処理に関する項目は、例えば以下の通りである。
・再起動のフラグ(Reset Flag)
・回答メッセージをパッチサーバーに送信するコントロールフラグ
・パッチの書き込みデータ後処理に関するその他のコントロール信号とデータ
【0114】
受信されたパッチデータが作成されたら、デジタル機器は、必要時に作成されたパッチデータに対して暗号解読プロセスを実行することが望ましい。これは、パッチデータのセキュリティーチェックを強化するためである。勿論、パッチサーバー側は、パッチデータパケットに分割して送信する前に、パッチデータの暗号解読を行う。
【0115】
パッチプログラムコードは、C/C++/Java(登録商標)/Assemblerやその他のプログラム言語、又はCPU/マイクロプロセッサやDSPの実行可能マシンコードを利用して書き込みされる。パッチデータは、パッチプログラムコードについての変換情報を含む。このパッチプログラムコードがこの変換情報に基づいて変換される場合には、実装方法によっては、受信されたパッチプログラムを他のフォーマットに変換する変換のソフトウェアモジュールを含む。また、実装方法によっては、CPU/DSPがこのパッチプログラムを使用する際に、パッチプログラムは、CPU/DSP実行可能マシンコードに変換される。
【0116】
パッチプログラムは、組み込みソフトウェア内の一部の元のプログラムを取り替えるソフトウェア更新情報を含む。このパッチプログラムの実行は、パッチ開始アドレス(Patch Start Address)から開始される。また、例えば、パッチプログラムの末端部において、元の廃用/エラーコードがスキップされた組み込みソフトウェア内の予め決められた位置、又は廃用/エラーコードを有するブロックの末端にジャンプして戻る命令があることがある。
【0117】
パッチデータもまた、フラッシュメモリー、NVM、及び/又はEEPROMメモリー内のデータエリアを更新するための情報を有する。例えば、パッチデータは、デジタル機器のNVMメモリー内の元のデータテーブルを書き換えるための新しいデータテーブルを有する。
【0118】
デジタル機器は、特定の情報項目(例えば、ESN、製造識別ナンバー、製品モデルナンバー、ソフトウェアバージョンナンバー等)が当該デジタル機器内に保存されているものと一致しているかを検査する。一致していなければ、このデジタル機器は、このパッチデータを廃棄する(又はSMSメッセージを使用して当該メッセージを一般のSMSメッセージとして扱う)。一致する場合には、このデジタル機器は、さらにこの受信したパッチデータがデジタル機器のメモリーに書き込まれたか否かを検査する。書き込まれていなければ、このデジタル機器は、受信したパッチデータのメモリーへの書き込みを開始する。別の方法として、デジタル機器は、パッチサーバーにパッチ回答メッセージを送信してパッチプロセスを完成する。
【0119】
5. パッチの書き込み( Patch Programming
パッチの書き込みプロセスは、パッチデータをフラッシュメモリー内の対応するパッチエリアへ書き込むこと、及び/又は新しいパラメーターをNVM/EEPROMへ書き込むことに関与する。パッチデータ書き込みは、デジタル機器がアイドル状態(すなわち、未使用の状態)の際に行われるのが望ましい。新しいパラメーターをNVM/EEPROMメモリーに書き込む作業は、一般のデータ上書きプロセス(data overwriting process)を使用して行われる。しかしながら、データをフラッシュメモリーに書き込もうとする状況、特に、このフラッシュメモリーがデジタル機器に読み取られている場合には、一定以上の処置が必要になることがある。パッチプロセスを動作中のデジタル機器内に書き込むため、本発明の1つの実施例であるRAMメモリーにおけるフラッシュメモリープログラミング(programming)技術を紹介する。
【0120】
5.1 RAMメモリーを利用したフラッシュメモリーのプログラミング
フラッシュメモリーにデータを書き込むソフトウェアルーチンは、RAMメモリーに設置することができる。この分野の技術の熟練者は、既にいくつかの方式でソフトウェアルーチンをRAMメモリーに設置することができる。例えば、フラッシュメモリーにデータを書き込むソフトウェアルーチンは、フラッシュメモリーのプログラミングを行う前に、ソフトウェアルーチンによってRAMメモリーにコピーされる。もう1つの例として、組み込みソフトウェアをコンパイルする際に、コンパイラに対してフラッシュメモリープログラミングルーチンをRAMメモリーに設置するように指示することができ、これにより、コンパイラが自動的に当該ルーチンをRAMメモリーに配置する。RAMメモリーは、CPU/DSPPコアと同一チップ上にあるRAM/SRAMメモリー又はCPU/DSPを有するチップ外部のRAMメモリーである。パッチ関連データをフラッシュメモリーに書き込む必要がある場合には、フラッシュメモリーのプログラミングのソフトウェアルーチンは、RAM内で実行される。当該ルーチンは、データバイトを対応するフラッシュアドレス内に書き込み、フラッシュのステータス値を読み取り、データの書き込みの正確性及び作業の終了を確認する。このフラッシュプログラミングの作業は、最高の優先実行順位が付けられ、実行を開始する際に、全てのCPU/DSP中断機能(interrupts)を停止して、実行時に全ての他のソフトウェアの作業及びCPU/DSPの中断機能を停止・待機(stop and wait)の状態にすることが望ましい。
【0121】
中断処理プロセス(interrupt handler)において、フラッシュプログラミングのルーチンを実行する他の方式は、当該ルーチンが実行を開始する際に、全てのその他の中断機能を停止して、全ての他のソフトウェアの作業及びCPU/DSPの中断機能を停止・待機の状態にすることが望ましい。
【0122】
フラッシュプログラミングの過程においてその他のソフトウェアの作業や中断ルーチンの影響を受けないように確保する他の1つの方法は、フラッシュプログラミングの実行を開始する前に、フラッシュプログラミング又はソフトウェアパッチ操作と無関係のソフトウェアの作業及び中断ルーチンを停止することである。
【0123】
5.2 パッチ書き込みプロセス( Patch programming process
パッチ書き込みのプロセスは、いくつものサブステータスに分割され、図10にその実施例を示す。パッチデータの受信に成功したら、デジタル機器は、パッチデータをデジタル機器内のフラッシュメモリー、NVM及び/又はEEPROMメモリーに書き込む。
【0124】
パッチデータがフラッシュメモリー、NVM及び/又はEEPROMメモリー内のデータエリアやデータテーブルの更新に使用される場合には、デジタル機器は、これらのデータをフラッシュメモリー、NVM及び/又はEEPROMメモリー内の対応するアドレスに書き込む。
【0125】
パッチデータがソフトウェアセクションのプログラムコードの更新に使用される場合には、デジタル機器は、パッチプログラムコードをフラッシュメモリーの対応するアドレスに書き込む。
【0126】
続いて、デジタル機器は、パッチ識別情報をパッチコントロールテーブル1020又はパッチデータベース内に書き込み始める。これらのパッチ識別情報は、パッチアドレス、パッチ識別コード、ソフトウェアセクション識別コード等を有する。
【0127】
続いて,デジタル機器は、次の工程であるセクションステータスの書き込み1030を行う。上述した更新処理ルーチンの設計方式に基づいたソフトウェアセクションの更新処理ルーチンは、1つか2つのJUMP命令又はパッチフラグ(patch flag)を検査するパッチ検査ルーチンを有する。パッチプログラムの書き込みに成功し、更新処理ルーチンがパッチフラグを使用している場合には、その対応するパッチフラグは、パッチプログラムが存在する事実を反映するように変更される。更新処理ルーチンがJUMP命令を使用する場合には、CPU/DSPのIPが対応するパッチ開始アドレスにジャンプするように、対応するJUMPオフセットも変更される必要がある。パッチコントロールブロック及び/又はパッチ操作エリア内の一部のデータバイトは、フラッシュプログラミングルーチンによって変更される必要がある。更新処理ルーチンにおけるパッチプログラムのないステータスからパッチプログラムのあるステータスへの細かい変化及びパッチコントロールブロックの変化については、上述した説明の通りである。
【0128】
更新処理ルーチンにおけるキーJUMPオフセットのプログラミング及びパッチフラグの変更は、パッチプログラムがいつ停止してもデジタル機器が正常動作するように、最後に実行されるのが望ましい。例えば、上述した3.4節で説明したセクションAの更新処理ルーチンの更新をする際に、デジタル機器は、まずパッチコントロールブロック内のデータバイトをLabel_P_AにおいてPatch−Correction−Routine of Section−Aを実施する命令に変更する。その後、再びJUMP命令のオフセットを修正してJump to Label_O_AをJump to Label_P_Aに変更する。このようにして、元のコードの代わりにパッチプログラムを使用することは、全ての書き込み作業(programming process)が終了した際にのみ実行される。
【0129】
パッチの書き込みに成功したら、パッチステータスメッセージをパッチサーバーに送る、及び/又は必要時にシステムの再起動(system reset)を実行する等の後処理(post process)がデジタル機器によって行われる。SMSメッセージを使用する実施例において、デジタル機器は、以下の後処理を行うことがある。
【0130】
・デジタル機器は、SMSメッセージの方法を用いてパッチサーバーにパッチステータス報告を送信する。このパッチステータス報告は、ターミナル情報及び現在のパッチステータスが含まれる。
【0131】
・続いて、パッチデータ内のリセットフラグ(Reset-Flag)が既に設定されている場合には、デジタル機器は、システムの再起動を行う。
【0132】
6. パッチサーバー
図11は、パッチサーバー1100の実施例を示す概略図である。パッチサーバー1100は、パッチデータベース1130と、パッチ生成器1110と、パッチ送信コントローラー1120とを備えることが望ましい。
【0133】
パッチデータベース1130は、各デジタル機器と関連するパッチ情報と以下の項目とを保存する。
(a)製造識別コード
(b)製品モデルナンバー
(c)ソフトウェアバージョンナンバー
(d)ソフトウェアセクション識別コード
(e)パッチ識別コード
(f)CPU識別コード
(g)MAC(Medium Access Control)層
(h)その他デジタル機器を識別するパラメーター項目
(i)その他ユーザーを識別するパラメーター項目
(j)パッチアドレス情報
(k)RSTフラグ情報(Reset Flag Information)
(l)パッチプログラムコード
(m)パッチプログラムコード変換に関する情報
例えば、当該パッチプログラムコードで使用されるプログラム言語情報(C/C++/Java(登録商標)/Assemblerやその他のプログラム言語、又はCPU/マイクロプロセッサかDSPの実行可能マシンコード)
(n)デジタル機器のデータメモリーエリア(NVM/EEPROM)を更新するデータパラメーター
【0134】
パッチサーバーがデジタル機器にパッチ情報を送信しようとする際に、パッチ生成器1110は、パッチデータベース1130内のデータに基づいて対応する1つのパッチデータを生成する。パッチデータが1つのパッチデータパケットによって運ばれない場合には、パッチ生成器1110は、さらにパッチデータをいくつかのセクションに分割し、各セクションをパッチデータパケットに入れて送信する。
【0135】
パッチ情報送信コントローラー1120は、パッチデータパケットを確実にデジタル機器に送信する。1つの設計例は、タイマーを用いてパッチデータの再送信(retransmission)をコントロールするものであり、その詳細な説明を以下に述べる。
【0136】
パッチサーバーがパッチをデジタル機器に送信すると、タイマーが起動する。パッチサーバーがこのタイマーの設定する時間を経過してもまだ当該デジタル機器から返答される回答メッセージ(例えば、パッチステータス報告)を受信していない場合には、パッチサーバーによってパッチデータパケットがデジタル機器に再度送信される。パッチサーバーが予め決められた回数の再送信を実行しても、デジタル機器から送信される回答メッセージを受信していない特殊な状況下においては、このパッチサーバーが再送信の動作を一時停止するか、タイマーの使用のみを停止しログファイル内に受信されていない回答メッセージを記録する。
【0137】
デジタル機器から回答メッセージ(例えば、パッチステータス報告)を受信する際には、パッチサーバーは、パッチ情報再送信をコントロールするタイマーを停止し、パッチデータベース内においてデジタル機器のパッチのステータスを更新する。
【0138】
以下、SMSメッセージによるパッチサーバーからデジタル機器内へのソフトウェアパッチの送信について設計例を用いて説明する。この設計例ついては、図12に示している。
【0139】
この設計例において、組み込みソフトウェアを有するデジタル機器は、デジタル携帯電話機1250である。パッチサーバーのハードウェアは、コンピュータ1200とSMSメッセージを受信できる無線モデム1210とから構成される。このコンピュータは、パッチ情報及び対応するパッチSMSメッセージを発してから、インターネット(Internet)1205を介してこのメッセージを、無線サービスをデジタル機器1250に提供するサービスプロバイダーのメッセージサーバー1240に送信する。このメッセージをメッセージサーバーに送信する送信方式は、一般の電子メールが使用するSMTP(Simple Mail Transfer Protocol)及びTCP/IPに基づく。サービスプロバイダーのメッセージサーバー1240は、パッチSMSメッセージを一般のSMSメッセージ1225としてベースステーション1220に送信する。最後に、ベースステーション1220は、エアーメッセージ(air messages)(例えば、SMSメッセージ1225を運ぶデータ・バースト・メッセージ)によってこのメッセージ1225を対応する携帯電話機1250に送信する。
【0140】
パッチサーバーの無線モデム(modem)1210は、パッチサーバーのコンピュータ1200に付属する。無線モデムは、デジタル機器1250からの回答メッセージ1215を受信し、回答メッセージ1215をコンピュータ1200に送信する。コンピュータ1200は、回答メッセージ1215内の情報に基づいて、パッチのステータスを確定する。
【0141】
本出願における本発明は、望ましい実施例を参考に説明したが、同分野の熟練者は、本発明の範囲内で、他の実施方法を利用して上述した各項の実施例に置き換えることができる。よって、本発明の範囲は、特許請求の範囲の請求項目のみの制限を受けるべきである。
【0142】
略語
ARQ:Automatic Repeat reQuest
CPU:Central Processing Unit
CRC:Cyclic Redundancy Codes
DSP:Digital Signal Processor
EEPROM:Electrically Erasable Programmable Read-Only Memory
ESN:Electronic Serial Number
FLASH:一種の電力持続型不揮発性メモリー(constantly-powered nonvolatile memory)であり、ブロック(block)単位で消去及び上書きが可能
MAC:Medium Access Control
MCU Micro Processor Unit
NVM Non Volatile Memory
Patch data:パッチサーバー(patch server)からデジタル機器に送信されるパッチの総データ
Patch data packet:パッチ送信のユニット。1つのパッチは、複数のパッチデータパケット(patch data packets)に分割されて送信される。1つのパッチデータパケットは、1つのメッセージによって送信される。
Patch program:単数又は複数のCPU/DSPの命令からなり、ソフトウェアのソフトウェアプログラムを更新し、組み込みソフトウェア内の単数又は複数のプログラムコードを更新する。
Patch programming:パッチをメモリーに書き込む工程
Patch server:パッチをデジタル機器に送信する単数又は複数のサーバー
PCMCIA:Personal Computer Memory Card International Association
PDA:Personal Digital Assistant
RAM:Random Access Memory
ROM:Read-Only Memory
SMS:Short Message Service
【図面の簡単な説明】
【0143】
【図1】図1は、デジタル機器における従来のマイクロプロセッサシステムの概略図である。
【図2】図2は、デジタル機器における従来のDSPシステムの概略図である。
【図3】図3は、デジタル機器内のパッチシステムのソフトウェア構造例を示す図である。
【図4】図4は、デジタル機器内の元の組み込みソフトウェアのセクション区分、及び更新処理ルーチンの配置例を示す図である。
【図5】図5は、本発明の1つの実施例に関するソフトウェアセクションに基づいたソフトウェア更新の設計例及び実装例を示す図である。
【図6】図6は、本発明の他の実施例に関するパッチコントロールルーチン(Patch Control Routine)を介してパッチプログラムへジャンプ(JUMP)することによってソフトウェア更新を実行する設計例及び実装例を示す図である。
【図7】図7は、本発明のさらに他の実施例に関するパッチコントロールブロック(Patch- Control-Block)を介してパッチプログラムにジャンプ(JUMP)することによってソフトウェア更新を実行する設計例及び実装例を示す図である。
【図8】図8は、本発明の1つの実施例に関するパッチ送信の通信層の例を示す図である。
【図9】図9は、本発明の1つの実施例に関するパッチデータとパッチデータパケットのフォーマットの例を示す図である。
【図10】図10は、本発明にしたがうパッチ書き込みの状態遷移例を示す図である。
【図11】図11は、本発明にしたがうパッチサーバー(patch server)の構造例を示す図である。
【図12】図12は、SMSメッセージを使用してパッチを送信する設計例を示す図である。

Claims (57)

  1. ソフトウェアパッチによってフィールドを修正するために、デジタル機器内で動作する組み込みソフトウェアを調整する方法であって、
    a)所定の基準に基づいて、上記組み込みソフトウェア内に、当該組み込みソフトウェアのセクションを定義する複数の挿入位置を決定する工程と、
    b)上記複数の挿入位置毎に複数の更新処理ルーチンを設置する工程と、
    c)上記ソフトウェアパッチを使用するために、デジタル機器内にメモリーエリアを決定する工程と、
    d)上記複数の更新処理ルーチンとともに上記組み込みソフトウェアを上記デジタル機器の組み込みソフトウェアコードエリアにロードする工程とを備え、
    上記更新処理ルーチンは、上記セクションにおいてソフトウェアパッチが存在する場合には、対応するセクションにおいて上記組み込みソフトウェアの実行を修正するために適応されること
    を特徴とする組み込みソフトウェアを調整する方法。
  2. 上記メモリーエリアは、上記組み込みソフトウェアコードエリア内にあること
    を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。
  3. 上記メモリーエリアは、上記組み込みソフトウェアコードエリア外にあること
    を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。
  4. 上記挿入位置を決定する工程は、
    上記組み込みソフトウェアのプログラムソフトウェアの行数、
    上記組み込みソフトウェアの機能ユニット、
    上記組み込みソフトウェアの命令タイプ、
    上記デジタル機器のソフトウェア設計方式、
    上記デジタル機器のハードウェア設計方式、
    上記組み込みソフトウェアの修正機構、
    上記組み込みソフトウェアのエラー訂正機構
    のうち、少なくとも1つに基づくこと
    を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。
  5. 上記複数の更新処理ルーチンを設置する工程は、
    a)上記組み込みソフトウェアを実行可能なマシンコードにコンパイルする前に、上記更新処理ルーチンを当該組み込みソフトウェア内に設置すること、
    b)上記組み込みソフトウェアを対応するアセンブリープログラムコードにコンパイルしてから、上記更新処理ルーチンを当該アセンブリープログラムコード内に設置し、当該アセンブリープログラムコードを実行可能なマシンコードにコンパイルすること、
    c)上記組み込みソフトウェアを対応するオブジェクトコードにコンパイルしてから、上記更新処理ルーチンを当該オブジェクトコード内に設置し、当該オブジェクトコードを実行可能なマシンコードにコンパイルすること、
    d)上記組み込みソフトウェアを実行可能マシンコードにコンパイルしてから、上記更新処理ルーチンを当該実行可能なマシンコード内に設置すること
    のうち、少なくとも1つの方法に基づくこと
    を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。
  6. 上記複数の更新処理ルーチンを設置する工程は、さらに、少なくとも1つの上記組み込みソフトウェアのプログラム命令を修正する工程を有すること
    を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。
  7. 上記複数の更新処理ルーチンを設置する工程は、さらに、少なくとも1つの上記組み込みソフトウェアのプログラム命令を修正する工程を有すること
    を特徴とする請求項5記載の組み込みソフトウェアを調整する方法。
  8. 少なくとも1つの上記更新処理ルーチンは、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行すること
    を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。
  9. 少なくとも1つの上記更新処理ルーチンは、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行すること
    を特徴とする請求項4記載の組み込みソフトウェアを調整する方法。
  10. 少なくとも1つの上記更新処理ルーチンは、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在するか否かを検査し、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行すること
    を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。
  11. 少なくとも1つの上記更新処理ルーチンは、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチがあるか否かを検査し、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行すること
    を特徴とする請求項4記載の組み込みソフトウェアを調整する方法。
  12. 上記組み込みソフトウェアの実行を上記ソフトウェアパッチが存在する位置に移して行う工程は、さらに、上記組み込みソフトウェアの実行をパッチコントロールルーチンが存在する第1の位置に移した後、当該パッチコントロールルーチンに基づいて、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する第2の位置に移して、当該ソフトウェアパッチを実行すること
    を特徴とする請求項8記載の組み込みソフトウェアを調整する方法。
  13. 上記組み込みソフトウェアの実行を上記ソフトウェアパッチが存在する位置に移して行う工程は、さらに、上記組み込みソフトウェアの実行をパッチコントロールルーチンが存在する第1の位置に移した後、当該パッチコントロールルーチンに基づいて、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する第2の位置に移して、当該ソフトウェアパッチを実行すること
    を特徴とする請求項10記載の組み込みソフトウェアを調整する方法。
  14. 上記複数の更新処理ルーチンは、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第1のルーチンと、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在するか否かを検査し、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第2のルーチンと、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在するか否かを検査し、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行をパッチコントロールルーチンが存在する第1の位置に移して行ってから、当該パッチコントロールルーチンに基づいて当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する第2の位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第3のルーチンと、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行をパッチコントロールルーチンが存在する第1の位置に移して行ってから、当該パッチコントロールルーチンに基づいて当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する第2の位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第4のルーチンと
    のうち、少なくとも1つを有すること
    を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。
  15. e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
    f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
    g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
    h)上記ソフトウェアパッチを上記メモリーエリアに書き込む工程とをさらに備えること
    を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。
  16. e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
    f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
    g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
    h)上記ソフトウェアパッチを上記メモリーエリアに書き込む工程とをさらに備えること
    を特徴とする請求項8記載の組み込みソフトウェアを調整する方法。
  17. e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
    f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
    g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
    h)上記ソフトウェアパッチを上記メモリーエリアに書き込む工程とをさらに備えること
    を特徴とする請求項10記載の組み込みソフトウェアを調整する方法。
  18. e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
    f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
    g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
    h)上記ソフトウェアパッチを上記メモリーエリアに書き込む工程とをさらに備えること
    を特徴とする請求項12記載の組み込みソフトウェアを調整する方法。
  19. 上記ソフトウェアパッチを使用して上記組み込みソフトウェア内の上記更新処理ルーチンの少なくとも一部を上書きする工程をさらに備えること
    を特徴とする請求項15記載の組み込みソフトウェアを調整する方法。
  20. 上書きされる上記一部は、所定のジャンプオフセット(jump offset)であること
    を特徴とする請求項19記載の組み込みソフトウェアを調整する方法。
  21. 上記ソフトウェアパッチを生成する工程は、
    当該ソフトウェアパッチを生成する機能と、
    所定の暗号化アルゴリズムによって当該ソフトウェアパッチを暗号化する機能と
    のうち、少なくとも1つの機能を有するパッチサーバーを使用する工程を有すること
    を特徴とする請求項15記載の組み込みソフトウェアを調整する方法。
  22. 上記ソフトウェアパッチを送信する工程は、
    当該ソフトウェアパッチを送信する機能と、
    上記デジタル機器からの少なくとも1つのメッセージを受信する機能と、
    当該ソフトウェアパッチを再送信する機能と
    のうち、少なくとも1つの機能を有するパッチサーバーを使用する工程を有すること
    を特徴とする請求項15記載の組み込みソフトウェアを調整する方法。
  23. さらに、上記デジタル機器から少なくとも1つのメッセージを上記パッチサーバーに送信する工程は、
    当該デジタル機器によって上記ソフトウェアパッチを受信した後と、
    上記ソフトウェアパッチを上記メモリーエリアに書き込んだ後と
    のいずれかのタイミングで実行されること
    を特徴とする請求項22記載の組み込みソフトウェアを調整する方法。
  24. 上記ソフトウェアパッチは、
    製造識別コードと、
    製品モデルナンバーと、
    ソフトウェアバージョンナンバーと、
    ソフトウェアセクション識別コードと、
    パッチ識別コードと、
    CPU識別コードと、
    MAC層アドレスと、
    パッチアドレス情報と、
    上記組み込みソフトウェアを更新するパッチプログラムと、
    パッチプログラムの変換関連情報と、
    リセットフラグ情報と、
    パッチの書き込みの後処理に使用される情報と、
    デジタル機器を識別するために使用される情報と、
    ユーザーを識別するために使用される情報と、
    上記デジタル機器のデータエリアを更新するデータパラメーターと
    のうち、少なくとも1つを含むこと
    を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。
  25. ソフトウェアパッチによるフィールド修正のためにデジタル機器内の組み込みソフトウェアの動作を調整する方法であって、
    a)所定の基準に基づいて、上記組み込みソフトウェア内で複数の挿入位置を決定し、少なくとも2つの上記挿入位置を上記組み込みソフトウェアの2つのセクションと定義する工程と、
    b)上記組み込みソフトウェア内に複数のパッチ操作エリアを設置する工程と、
    c)上記パッチ操作エリアを第2の内容に選択的に変更可能な第1の内容に設定する工程と、
    d)上記複数のパッチ操作エリアとともに上記組み込みソフトウェアを上記デジタル機器内にロードする工程とを備えること
    を特徴とする組み込みソフトウェアの動作を調整する方法。
  26. 上記組み込みソフトウェア内に複数のパッチ操作エリアを設置する工程は、当該組み込みソフトウェアの上記挿入位置に上記パッチ処理エリアを設置する工程を有すること
    を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。
  27. 上記組み込みソフトウェアのコードエリア外の所定のメモリーエリアに少なくとも1つのパッチ操作エリアを設置する工程をさらに備えること
    を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。
  28. 上記組み込みソフトウェアのコードエリア外の所定のメモリーエリアに少なくとも1つのパッチ操作エリアを設置する工程をさらに備えること
    を特徴とする請求項26記載の組み込みソフトウェアの動作を調整する方法。
  29. 上記パッチ操作エリアを設置する工程は、上記組み込みソフトウェア内にプログラム命令を書き込むことによって当該組み込みソフトウェア内にメモリーエリアを確保して当該パッチ操作エリアとして使用する工程を有すること
    を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。
  30. 上記パッチ操作エリアを設置する工程は、上記組み込みソフトウェア内にプログラム命令を書き込むことによって当該組み込みソフトウェア内にメモリーエリアを確保して当該パッチ操作エリアとして使用する工程を有すること
    を特徴とする請求項26記載の組み込みソフトウェアの動作を調整する方法。
  31. 上記パッチ操作エリアを設置する工程は、上記組み込みソフトウェア内にプログラム命令を書き込むことによって当該組み込みソフトウェア内にメモリーエリアを確保して当該パッチ操作エリアとして使用する工程を有すること
    を特徴とする請求項27記載の組み込みソフトウェアの動作を調整する方法。
  32. 上記挿入位置を決定する工程は、
    上記組み込みソフトウェアのプログラムソフトウェアの行数、
    上記組み込みソフトウェアの機能ユニット、
    上記組み込みソフトウェアの命令タイプ、
    上記デジタル機器の所定のソフトウェア設計方式、
    上記デジタル機器の所定のハードウェア設計方式、
    上記組み込みソフトウェアの所定の修正機構、
    上記組み込みソフトウェアの所定のエラー訂正機構
    のうち、少なくとも1つに基づくこと
    を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。
  33. 上記パッチ操作エリアを設置する工程は、さらに、少なくとも1つの上記組み込みソフトウェアのプログラム命令を修正する工程を有すること
    を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。
  34. 上記パッチ操作エリアは、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第1の更新処理ルーチンと、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在するか否かを検査し、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第2の更新処理ルーチンと、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在するか否かを検査し、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行をパッチコントロールルーチンが存在する第1の位置に移して行ってから、当該パッチコントロールルーチンに基づいて当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する第2の位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第3の更新処理ルーチンと、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行をパッチコントロールルーチンが存在する第1の位置に移して行ってから、当該パッチコントロールルーチンに基づいて当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する第2の位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第4の更新処理ルーチンと、
    上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在するか否かを検査し、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、対応するセクションを修正するために当該組み込みソフトウェアの実行を修正し、当該ソフトウェアパッチにジャンプして実行する第5の更新処理ルーチンと、
    上記ソフトウェアパッチが存在する場合には、対応するセクションを修正するために当該組み込みソフトウェアの実行を修正し、当該ソフトウェアパッチが存在しない場合には、当該セクションにジャンプするジャンプ命令と、
    上記ジャンプ命令によって他のジャンプオフセット値に選択的に変更可能なエリアであるジャンプオフセット値と、
    上記ソフトウェアパッチにジャンプするように命令するルーチンであるパッチコントロールルーチンと、
    上記組み込みソフトウェアの実行を修正するパッチプログラムと、
    パッチ訂正ルーチンに選択的に変更可能なエリアであるパッチコントロールブロックと、
    上記組み込みソフトウェアの実行を修正するために使用される所定の内容を設定する第1のメモリーエリアと、
    上記組み込みソフトウェアの実行を修正するために使用されるパラメーターに変更可能な所定の内容を設定する第2のメモリーエリアと、
    上記組み込みソフトウェアの実行を修正するために使用されるパラメーターに変更可能な所定の内容を設定する第3のメモリーエリアと
    のうち、少なくとも1つを有すること
    を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。
  35. 上記パッチコントロールブロックは、上記組み込みソフトウェアの複数のセクションによってシェアされること
    を特徴とする請求項34記載の組み込みソフトウェアの動作を調整する方法。
  36. 上記複数のパッチ操作エリアを設置する工程のタイミングは、
    a)上記組み込みソフトウェアを実行可能マシンコードにコンパイルする前に少なくとも1つの上記パッチ操作エリアを当該組み込みソフトウェア内に設置すること、
    b)上記組み込みソフトウェアを対応するアセンブリープログラムコードにコンパイルしてから、少なくとも1つの上記パッチ操作エリアを当該アセンブリープログラムコード内に設置し、その後当該アセンブリープログラムコードを実行可能マシンコードにコンパイルすること、
    c)上記組み込みソフトウェアを対応するオブジェクトコードにコンパイルしてから、少なくとも1つの上記パッチ操作エリアを当該オブジェクトコード内に設置し、その後当該オブジェクトコードを実行可能マシンコードにコンパイルすること、
    d)上記組み込みソフトウェアを実行可能マシンコードにコンパイルしてから、少なくとも1つの上記パッチ操作エリアを上記実行可能マシンコード内に設置すること
    のうち、少なくとも1つの方法に基づくこと
    を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。
  37. e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
    f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
    g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
    h)上記ソフトウェアパッチを少なくとも1つの上記パッチ操作エリアに書き込む工程とをさらに備えること
    を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。
  38. e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
    f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
    g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
    h)上記ソフトウェアパッチを少なくとも1つの上記パッチ操作エリアに書き込む工程とをさらに備えること
    を特徴とする請求項27記載の組み込みソフトウェアの動作を調整する方法。
  39. e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
    f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
    g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
    h)上記ソフトウェアパッチを少なくとも1つの上記パッチ操作エリアに書き込む工程とをさらに備えること
    を特徴とする請求項28記載の組み込みソフトウェアの動作を調整する方法。
  40. e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
    f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
    g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
    h)上記ソフトウェアパッチを少なくとも1つの上記パッチ操作エリアに書き込む工程とをさらに備えること
    を特徴とする請求項29記載の組み込みソフトウェアの動作を調整する方法。
  41. e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
    f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
    g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
    h)上記ソフトウェアパッチを少なくとも1つの上記パッチ操作エリアに書き込む工程とをさらに備えること
    を特徴とする請求項34記載の組み込みソフトウェアの動作を調整する方法。
  42. 上記書き込む工程は、上記ソフトウェアパッチを使用して少なくとも1つのジャンプオフセットを変更する工程を有すること
    を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。
  43. 上記ソフトウェアパッチを生成する工程は、
    当該ソフトウェアパッチを生成する機能と、
    所定の暗号化アルゴリズムによって当該ソフトウェアパッチを暗号化する機能と
    のうち、少なくとも1つの機能を有するパッチサーバーを使用する工程を有すること
    を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。
  44. 上記ソフトウェアパッチを送信する工程は、
    当該ソフトウェアパッチを送信する機能と、
    上記デジタル機器からの少なくとも1つのメッセージを受信する機能と、
    当該ソフトウェアパッチを再送信する機能と
    のうち、少なくとも1つの機能を有するパッチサーバーを使用する工程を有すること
    を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。
  45. 上記送信する工程は、CDMA標準で定義されるデータ・バースト・メッセージ(Data Burst Message)を使用して上記ソフトウェアパッチを送信する工程を有すること
    を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。
  46. さらに、上記デジタル機器から少なくとも1つのメッセージを上記パッチサーバーに送信する工程は、
    当該デジタル機器によって上記ソフトウェアパッチを受信した後と、
    上記ソフトウェアパッチを上記パッチ操作エリアに書き込んだ後と
    のいずれかのタイミングで実行されること
    を特徴とする請求項44記載の組み込みソフトウェアの動作を調整する方法。
  47. 上記ソフトウェアパッチは、
    製造識別コードと、
    製品モデルナンバーと、
    ソフトウェアバージョンナンバーと、
    ソフトウェアセクション識別コードと、
    パッチ識別コードと、
    CPU識別コードと、
    MAC層アドレスと、
    パッチアドレス情報と、
    上記組み込みソフトウェアを更新するパッチプログラムと、
    パッチプログラムの変換関連情報と、
    リセットフラグ情報と、
    パッチの書き込みの後処理に使用される情報と、
    デジタル機器を識別するために使用される情報と、
    ユーザーを識別するために使用される情報と、
    上記デジタル機器のデータエリアを更新するデータパラメーターと
    のうち、少なくとも1つを有すること
    を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。
  48. 上記デジタル機器によって上記ソフトウェアパッチの少なくとも1項目を変換する工程は、さらに、
    上記ソフトウェアパッチを上記パッチ操作エリアに書き込む前に、上記少なくとも1項目を第1のソフトウェア言語フォーマットから第2のソフトウェア言語フォーマットに変更する工程と、
    上記ソフトウェアパッチを実行する前に、上記少なくとも1項目を第1のソフトウェア言語フォーマットから第2のソフトウェア言語フォーマットに変更する工程と、
    上記ソフトウェアパッチを上記パッチ操作エリアに書き込む前に、上記少なくとも1項目を第1のデータフォーマットから第2のデータフォーマットに変更する工程と、
    上記ソフトウェアパッチを実行する前に、上記少なくとも1項目を第1のデータフォーマットから第2のデータフォーマットに変更する工程と
    のうち、いずれか1つを有すること
    を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。
  49. 上記ソフトウェアパッチを上記パッチ操作エリアに書き込む工程は、データをフラッシュメモリーに書き込む少なくとも1つのフラッシュ書き込みルーチンによって実現されること
    を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。
  50. 上記ソフトウェアパッチの上記書き込み工程は、さらに、フラッシュ書き込みの前に、上記フラッシュ書き込みルーチンをRAMメモリーに移す工程を有すること
    を特徴とする請求項49記載の組み込みソフトウェアの動作を調整する方法。
  51. フラッシュメモリー及び不揮発性メモリー(non-volatile memory;NVM)を有する組み込みソフトウェアによって実行されるデジタル機器を修正する方法であって、
    a)フラッシュメモリーの内容を更新する少なくとも1つのパッチプログラムと不揮発性メモリーの内容を更新する少なくとも1つのデータパラメーターとからなるソフトウェアパッチを生成する工程と、
    b)無線通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
    c)上記デジタル機器よって上記ソフトウェアパッチを受信する工程と、
    d)上記ソフトウェアパッチを上記デジタル機器内に書き込む工程とを備えること
    を特徴とする組み込みソフトウェアによって実行されるデジタル機器を修正する方法。
  52. 上記書き込み工程は、
    既存のデータを上書きすることによって上記少なくとも1つのデータパラメーターを上記不揮発性メモリーに書き込む工程と、
    上記少なくとも1つのパッチプログラム片を上記フラッシュメモリーに書き込む工程と
    のうち、少なくとも1つの工程を有すること
    を特徴とする請求項51記載の組み込みソフトウェアによって実行されるデジタル機器を修正する方法。
  53. 上記ソフトウェアパッチの識別情報を上記組み込みソフトウェアのパッチコントロールテーブルに書き込む工程と、
    上記ソフトウェアパッチのパッチコントロール情報を上記組み込みソフトウェアのパッチコントロールテーブルに書き込む工程と
    のうち、少なくとも1つの工程をさらに備えること
    を特徴とする請求項52記載の組み込みソフトウェアによって実行されるデジタル機器を修正する方法。
  54. デジタル機器内の組み込みソフトウェアを更新する命令を備えるコンピュータ読み取り可能な記録媒体であって、
    上記組み込みソフトウェアを実行する命令と、
    上記組み込みソフトウェアのセクションの使用するパッチプログラムが存在するか否かを決定する命令と、
    上記パッチプログラムが上記セクションに使用される場合に、上記組み込みソフトウェアが当該セクションの実行を当該パッチプログラムに移す命令と、
    上記パッチプログラムの実行後、上記組み込みソフトウェアの所定の位置から実行する命令とを備えること
    を特徴とするコンピュータ読み取り可能な記録媒体。
  55. 上記組み込みソフトウェアは、パッチプログラムがあるか否かを判定する複数のルーチンが設置されること
    を特徴とする請求項54記載のコンピュータ読み取り可能な記録媒体。
  56. 上記所定の位置は、更新の必要があるプログラム部分の末端であること
    を特徴とする請求項54記載のコンピュータ読み取り可能な記録媒体。
  57. 通信接続を介してパッチプログラムを受信する命令と、
    上記パッチプログラムを上記デジタル機器内に書き込む命令とをさらに備えること
    を特徴とする請求項55記載のコンピュータ読み取り可能な記録媒体。
JP2003514412A 2001-07-16 2002-07-15 組み込みソフトウェア更新システム Pending JP2004536405A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US30570401P 2001-07-16 2001-07-16
US35491502P 2002-02-08 2002-02-08
PCT/US2002/022412 WO2003009136A1 (en) 2001-07-16 2002-07-15 Embedded software update system

Publications (2)

Publication Number Publication Date
JP2004536405A true JP2004536405A (ja) 2004-12-02
JP2004536405A5 JP2004536405A5 (ja) 2005-10-27

Family

ID=26974732

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003514412A Pending JP2004536405A (ja) 2001-07-16 2002-07-15 組み込みソフトウェア更新システム

Country Status (6)

Country Link
US (3) US6760908B2 (ja)
EP (1) EP1410181A1 (ja)
JP (1) JP2004536405A (ja)
KR (1) KR20040022451A (ja)
CN (1) CN1529847A (ja)
WO (1) WO2003009136A1 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004312711A (ja) * 2003-03-25 2004-11-04 Ricoh Co Ltd 画像形成装置及び画像形成装置を遠隔のアプリケーションにより操作する方法
JP2010057186A (ja) * 2003-03-25 2010-03-11 Ricoh Co Ltd 端末装置、方法、及びプログラム
US10684848B1 (en) 2016-03-30 2020-06-16 Square, Inc. Blocking and non-blocking firmware update
US10762196B2 (en) 2018-12-21 2020-09-01 Square, Inc. Point of sale (POS) systems and methods with dynamic kernel selection
US10817869B2 (en) 2016-06-29 2020-10-27 Square, Inc. Preliminary enablement of transaction processing circuitry
US10990969B2 (en) 2018-12-21 2021-04-27 Square, Inc. Point of sale (POS) systems and methods for dynamically processing payment data based on payment reader capability
US11010765B2 (en) 2016-06-29 2021-05-18 Square, Inc. Preliminary acquisition of payment information
US11049095B2 (en) 2018-12-21 2021-06-29 Square, Inc. Point of sale (POS) systems and methods with dynamic kernel selection

Families Citing this family (246)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321356B2 (en) * 2000-05-18 2012-11-27 United Parcel Service Of America, Inc. System and method for calculating real-time costing information
US8725656B1 (en) 2000-05-18 2014-05-13 United Parcel Service Of America, Inc. Freight rate manager
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
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
US20030140126A1 (en) * 2001-03-30 2003-07-24 Vitria Technology, Inc. Method of deployment for concurrent execution of multiple versions of an integration model
US7613716B2 (en) * 2001-07-20 2009-11-03 The Mathworks, Inc. Partitioning for model-based design
US7069546B2 (en) * 2001-12-03 2006-06-27 Corrigent Systems Ltd. Generic framework for embedded software development
EP2148334B1 (en) * 2002-01-29 2011-11-09 Agere Systems Inc. Differential flash memory programming technique
US20030191823A1 (en) * 2002-04-03 2003-10-09 Aplion Networks, Inc. System and method for providing customizable device capabilities to network equipment in a non-service affecting manner
US20040015943A1 (en) * 2002-07-17 2004-01-22 Ying-Chou Chen Embedded computer system equipped with an upgradeable software library
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
DE10260103A1 (de) * 2002-12-19 2004-07-01 Robert Bosch Gmbh Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät
US9092286B2 (en) * 2002-12-20 2015-07-28 Qualcomm Incorporated System to automatically process components on a device
US7644406B2 (en) * 2003-01-21 2010-01-05 Hewlett-Packard Development Company, L.P. Update system capable of updating software across multiple FLASH chips
WO2004072773A2 (en) * 2003-02-11 2004-08-26 Bitfone Corporation Electronic device supporting multiple update agents
US6886472B2 (en) * 2003-02-20 2005-05-03 General Electric Company Method and system for autonomously resolving a failure
GB2403303B (en) * 2003-06-23 2005-08-17 Matsushita Electric Ind Co Ltd Embedded device with software registry
JP2005050073A (ja) * 2003-07-28 2005-02-24 Matsushita Electric Ind Co Ltd データ復旧方法およびデータ記録装置
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes
US7673297B1 (en) * 2003-09-03 2010-03-02 The Directv Group, Inc. Automatic software update detection and flexible installer for set-top boxes
KR101003888B1 (ko) * 2003-09-03 2010-12-30 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 전자 장치에서의 3-단계 부팅 프로세스
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7624393B2 (en) * 2003-09-18 2009-11-24 International Business Machines Corporation Computer application and methods for autonomic upgrade maintenance of computer hardware, operating systems and application software
US20070226770A1 (en) * 2003-11-04 2007-09-27 Electronics And Telecommunications Reserach Institue 161, Gajeong-Dong, Yuseong-Gu Apparatus and Method for Receiving Data Broadcasting Service to Support Connection with Mobile Networks
WO2005048604A1 (en) * 2003-11-17 2005-05-26 Samsung Electronics Co., Ltd. Method for updating software of a target device using an extended identifier in digital broadcasting
US7409538B2 (en) * 2003-12-18 2008-08-05 International Business Machines Corporation Update in-use flash memory without external interfaces
DE602004026822D1 (de) 2004-02-27 2010-06-10 Ericsson Telefon Ab L M Programmieren eines Flash-Speichers
KR100620729B1 (ko) * 2004-03-31 2006-09-13 주식회사 팬택앤큐리텔 소프트웨어 이미지 생성 방법
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
US7600216B2 (en) * 2004-04-22 2009-10-06 Gteko, Ltd Method for executing software applications using a portable memory device
US20050251798A1 (en) * 2004-05-05 2005-11-10 News, Iq, Inc. System and method for inventory control and management
US7559058B2 (en) * 2004-05-11 2009-07-07 Microsoft Corporation Efficient patching
US8539469B2 (en) * 2004-05-11 2013-09-17 Microsoft Corporation Efficient patching
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
CN100370431C (zh) * 2004-08-16 2008-02-20 上海华为技术有限公司 对嵌入式系统进行在线监测的方法及其系统
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7373492B2 (en) * 2004-08-30 2008-05-13 Lehman Brothers Inc. Boot disk management utility
FR2875921B1 (fr) * 2004-09-27 2006-12-01 Gemplus Sa Campagne de telechargement de donnees dans des objets communicants portables
US20060075401A1 (en) * 2004-10-05 2006-04-06 Microsoft Corporation Patch installation control
KR100784783B1 (ko) * 2004-12-07 2007-12-14 한국전자통신연구원 정량적인 프로세스 관리를 위한 임베디드 시스템 개발 방법론 지원 시스템
US8019725B1 (en) 2004-12-15 2011-09-13 Apple Inc. Software update management
US8347285B2 (en) * 2004-12-16 2013-01-01 Intel Corporation Embedded agent for self-healing software
CN100435108C (zh) * 2004-12-22 2008-11-19 迅杰科技股份有限公司 存储装置固件修补方法
US7426571B2 (en) * 2005-01-06 2008-09-16 Dell Products L.P. Providing files to an information handling system using a remote access controller
US7734574B2 (en) * 2005-02-17 2010-06-08 International Business Machines Corporation Intelligent system health indicator
US20060200656A1 (en) * 2005-03-03 2006-09-07 Cardinell Charles S Apparatus and method to capture data from an embedded device
US7761710B2 (en) * 2005-04-05 2010-07-20 Mcafee, Inc. Captive portal system and method for use in peer-to-peer networks
US7606370B2 (en) * 2005-04-05 2009-10-20 Mcafee, Inc. System, method and computer program product for updating security criteria in wireless networks
US7757274B2 (en) 2005-04-05 2010-07-13 Mcafee, Inc. Methods and systems for exchanging security information via peer-to-peer wireless networks
US7822972B2 (en) * 2005-04-05 2010-10-26 Mcafee, Inc. Remotely configurable bridge system and method for use in secure wireless networks
US20060248107A1 (en) * 2005-04-11 2006-11-02 Coronado Juan A Apparatus system and method for updating software while preserving system state
CN100521676C (zh) 2005-04-14 2009-07-29 华为技术有限公司 在机顶盒中单独升级业务软件的实现方法和装置
US20060265692A1 (en) * 2005-05-20 2006-11-23 Mengjin Su Method, apparatus, and computer program product for code patching
US8399390B2 (en) 2005-06-29 2013-03-19 Exxonmobil Chemical Patents Inc. HVI-PAO in industrial lubricant and grease compositions
US7667874B2 (en) * 2005-07-06 2010-02-23 Xerox Corporation Method and system for improving print quality
MX2008000842A (es) 2005-07-19 2008-04-04 Exxonmobil Chem Patents Inc Composiciones de polialfa-olefinas y procesos para producirlas.
WO2007011462A1 (en) 2005-07-19 2007-01-25 Exxonmobil Chemical Patents Inc. Lubricants from mixed alpha-olefin feeds
WO2007023497A1 (en) * 2005-08-23 2007-03-01 Red Bend Ltd. Method and system for in-place updating content stored in a storage device
US7577872B2 (en) * 2005-08-26 2009-08-18 Home Box Office Dynamic system diagnosis
US20070074187A1 (en) * 2005-09-29 2007-03-29 O'brien Thomas E Method and apparatus for inserting code fixes into applications at runtime
CN100416503C (zh) * 2005-11-04 2008-09-03 中兴通讯股份有限公司 一种软件版本更新的方法
US8588756B2 (en) * 2005-11-30 2013-11-19 Telecom Italia S.P.A. Method and system for updating applications in mobile communications terminals
US20070132774A1 (en) * 2005-12-01 2007-06-14 Samsung Electronics Co., Ltd. System and method for a patch minimization tool
DE102005059319A1 (de) 2005-12-09 2007-06-14 Robert Bosch Gmbh Verfahren zum Betreiben einer Einrichtung
DE602005025385D1 (de) * 2005-12-20 2011-01-27 Ericsson Telefon Ab L M Erstellung inkrementeller Programmaktualisierungen
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
KR100717110B1 (ko) * 2006-02-21 2007-05-10 삼성전자주식회사 롬 데이터 패치 회로, 이를 포함하는 임베디드 시스템 및롬 데이터 패치 방법
KR100746036B1 (ko) 2006-02-23 2007-08-06 삼성전자주식회사 플래시 메모리를 제어하는 장치 및 방법
US8921290B2 (en) 2006-06-06 2014-12-30 Exxonmobil Research And Engineering Company Gear oil compositions
US8501675B2 (en) 2006-06-06 2013-08-06 Exxonmobil Research And Engineering Company High viscosity novel base stock lubricant viscosity blends
US8535514B2 (en) 2006-06-06 2013-09-17 Exxonmobil Research And Engineering Company High viscosity metallocene catalyst PAO novel base stock lubricant blends
US8299007B2 (en) 2006-06-06 2012-10-30 Exxonmobil Research And Engineering Company Base stock lubricant blends
US8834705B2 (en) 2006-06-06 2014-09-16 Exxonmobil Research And Engineering Company Gear oil compositions
EP2025095A2 (en) 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Device management in a network
WO2008005581A2 (en) * 2006-07-07 2008-01-10 United Parcel Service Of America, Inc. Compiled data for software applications
EP2047420A4 (en) 2006-07-27 2009-11-18 Hewlett Packard Development Co USER EXPERIENCE AND DEPENDENCE MANAGEMENT IN A MOBILE DEVICE
US8112747B2 (en) * 2006-11-27 2012-02-07 Sap Ag Integrated software support for a distributed business application with seamless backend communications
US20130167024A1 (en) 2006-12-05 2013-06-27 Adobe Systems Incorporated Embedded document within an application
US8533820B2 (en) * 2006-12-12 2013-09-10 International Business Machines Corporation Reserved write positions on install media
FR2911023B1 (fr) * 2006-12-29 2009-04-17 Radiotelephone Sfr Procede de securisation d'un flux de donnees.
DE102007003580A1 (de) * 2007-01-24 2008-07-31 Giesecke & Devrient Gmbh Installieren eines Patch in einem Smartcard-Modul
US7743339B1 (en) * 2007-02-01 2010-06-22 Adobe Systems Incorporated Rendering text in a brew device
US8819668B2 (en) * 2007-02-08 2014-08-26 Microsoft Corporation Accessible limited distribution release software change catalog
EP1956482B1 (en) * 2007-02-09 2011-08-17 Telefonaktiebolaget LM Ericsson Generating delta updates for a processing device
US8589779B2 (en) * 2007-03-08 2013-11-19 Adobe Systems Incorporated Event-sensitive content for mobile devices
BRPI0811720A2 (pt) * 2007-05-24 2014-11-04 Facebook Inc Método e sistema para proporcionar plataforma personalizada para acessar aplicativo na internet através de rede social e programa de computador.
US20090019435A1 (en) * 2007-07-12 2009-01-15 Sauer-Danfoss Inc. System and method for over the air programming
DE502007006736D1 (de) * 2007-10-16 2011-04-28 Siemens Ag Verfahren zur automatischen Modifikation eines Programms
US7802129B2 (en) * 2007-10-17 2010-09-21 Hewlett-Packard Development Company, L.P. Mobile handset employing efficient backup and recovery of blocks during update
US8213923B1 (en) * 2007-11-02 2012-07-03 Trend Micro Incorporated Product update via voice call in mobile security
US8009757B2 (en) * 2007-11-12 2011-08-30 Motorola Mobility, Inc. Method and apparatus for encoding a modulated signal in a communication system
ATE522861T1 (de) 2007-12-13 2011-09-15 Ericsson Telefon Ab L M Firmware-aktualisierung bei einem elektronischen gerät
US8839225B2 (en) 2008-01-23 2014-09-16 International Business Machines Corporation Generating and applying patches to a computer program code concurrently with its execution
JP5266335B2 (ja) 2008-01-31 2013-08-21 エクソンモービル・ケミカル・パテンツ・インク メタロセン触媒によるポリ−アルファオレフィン類の生産におけるリニアアルファオレフィン類の改良された利用
FR2928754B1 (fr) * 2008-03-13 2012-05-18 Sagem Securite Carte a circuit integre ayant un programme d'exploitation modifiable et procede de modification correspondant
US8865959B2 (en) 2008-03-18 2014-10-21 Exxonmobil Chemical Patents Inc. Process for synthetic lubricant production
CA2718894C (en) 2008-03-31 2013-01-15 Exxonmobil Chemical Patents Inc. Production of shear-stable high viscosity pao
US9058230B1 (en) * 2008-05-27 2015-06-16 Symantec Operating Corporation Online expert system guided application installation
WO2009156790A1 (en) * 2008-06-23 2009-12-30 Freescale Semiconductor, Inc. Patching of a read-only memory
US8394746B2 (en) 2008-08-22 2013-03-12 Exxonmobil Research And Engineering Company Low sulfur and low metal additive formulations for high performance industrial oils
US8930930B2 (en) * 2008-09-04 2015-01-06 International Business Machines Corporation Updating a computer system
US8312447B2 (en) * 2008-09-25 2012-11-13 Microsoft Corporation Managing updates using compiler and linker information
US8476205B2 (en) 2008-10-03 2013-07-02 Exxonmobil Research And Engineering Company Chromium HVI-PAO bi-modal lubricant compositions
KR101016916B1 (ko) * 2008-10-30 2011-02-22 한국항공우주산업 주식회사 비행 시뮬레이션 및 테스트를 위한 항공기 임베디드 시스템의 데이터 주입 방법
US20100180104A1 (en) * 2009-01-15 2010-07-15 Via Technologies, Inc. Apparatus and method for patching microcode in a microprocessor using private ram of the microprocessor
US9104521B2 (en) * 2009-03-16 2015-08-11 Tyco Electronics Subsea Communications Llc System and method for remote device application upgrades
US10055251B1 (en) * 2009-04-22 2018-08-21 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for injecting code into embedded devices
JP5310324B2 (ja) * 2009-07-07 2013-10-09 株式会社リコー 情報処理装置、情報処理方法、及びプログラム
WO2011006513A2 (en) * 2009-07-13 2011-01-20 Eyad Aii Mohammad Al Qalqili Method and system for advertising on the mobile main screen by cbs technology
US8716201B2 (en) 2009-10-02 2014-05-06 Exxonmobil Research And Engineering Company Alkylated naphtylene base stock lubricant formulations
JP5575267B2 (ja) 2009-12-24 2014-08-20 エクソンモービル・ケミカル・パテンツ・インク 新規合成ベースストックの製造方法
US8728999B2 (en) 2010-02-01 2014-05-20 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed engines by reducing the traction coefficient
US8748362B2 (en) 2010-02-01 2014-06-10 Exxonmobile Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed gas engines by reducing the traction coefficient
US8759267B2 (en) 2010-02-01 2014-06-24 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed engines by reducing the traction coefficient
US8598103B2 (en) 2010-02-01 2013-12-03 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low, medium and high speed engines by reducing the traction coefficient
US8642523B2 (en) 2010-02-01 2014-02-04 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed engines by reducing the traction coefficient
CN102156661B (zh) * 2010-02-11 2013-06-12 华为技术有限公司 在线补丁的激活方法、装置及系统
US9392017B2 (en) 2010-04-22 2016-07-12 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for inhibiting attacks on embedded devices
CN101930375A (zh) * 2010-08-26 2010-12-29 深圳市共进电子有限公司 单用户光网络单元中内存空间自适应的程序数据升级方法
US9815915B2 (en) 2010-09-03 2017-11-14 Exxonmobil Chemical Patents Inc. Production of liquid polyolefins
CN101950254B (zh) * 2010-09-16 2014-07-30 新邮通信设备有限公司 一种软件更新方法和系统
TW201246075A (en) * 2011-05-06 2012-11-16 Asmedia Technology Inc Flash device and associated booting method
DE102012103654A1 (de) 2011-05-17 2012-11-22 International Business Machines Corp. Installieren und Prüfen einer Anwendung auf einer stark genutzten Computerplattform
WO2013055481A1 (en) 2011-10-10 2013-04-18 Exxonmobil Research And Engineering Company High efficiency engine oil compositions
KR102132501B1 (ko) 2012-02-15 2020-07-09 더 트러스티이스 오브 콜롬비아 유니버시티 인 더 시티 오브 뉴욕 매립 디바이스에 대한 공격을 금지하기 위한 방법, 시스템 및 미디어
JP5886099B2 (ja) * 2012-03-21 2016-03-16 日立オートモティブシステムズ株式会社 自動車用電子制御装置
CN102707978A (zh) * 2012-05-18 2012-10-03 苏州万图明电子软件有限公司 图像设备的更新软件
US9817656B2 (en) 2012-08-24 2017-11-14 Ca, Inc. Hot rollback of updated agent
US9798557B2 (en) * 2012-08-24 2017-10-24 Ca, Inc. Injection of updated classes for a java agent
US9921954B1 (en) * 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
CN102880494B (zh) * 2012-09-26 2016-02-10 浙江大学 一种用于微小卫星系统的局部代码更新方法及其系统
US8930932B2 (en) 2012-10-09 2015-01-06 Futurewei Technologies, Inc. In-service software patch
US10310863B1 (en) * 2013-07-31 2019-06-04 Red Hat, Inc. Patching functions in use on a running computer system
US9547581B2 (en) 2013-10-01 2017-01-17 Wipro Limited Systems and methods for fixing software defects in a binary or executable file
CN103530184B (zh) * 2013-10-24 2017-04-12 华为技术有限公司 一种在线补丁激活的方法及装置
CN103645924A (zh) * 2013-12-27 2014-03-19 金三立视频科技(深圳)有限公司 嵌入式设备程序参数管理方法及装置
US9736098B2 (en) * 2014-02-07 2017-08-15 Lenovo (Singapore) Pte. Ltd. Email-based software delivery
US9547489B2 (en) * 2014-03-31 2017-01-17 Qualcomm Incorporated System and method for modifying a sequence of instructions in a read-only memory of a computing device
EP2955629B1 (en) * 2014-06-11 2021-10-27 Home Control Singapore Pte. Ltd. System for installing new firmware on a small-memory device
US10282187B2 (en) 2014-07-03 2019-05-07 Oracle International Corporation Efficient application patching in heterogeneous computing environments
US10657262B1 (en) * 2014-09-28 2020-05-19 Red Balloon Security, Inc. Method and apparatus for securing embedded device firmware
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9715402B2 (en) * 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
KR102261815B1 (ko) * 2014-10-30 2021-06-07 삼성전자주식회사 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US10101987B2 (en) 2015-03-11 2018-10-16 Echelon Corporation Method and system of processing an image upgrade
EP3040858A1 (en) * 2014-12-31 2016-07-06 Echelon Corporation A method and system of processing an image update
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9727725B2 (en) 2015-02-04 2017-08-08 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9886263B2 (en) 2015-03-24 2018-02-06 Oracle International Corporation Techniques for efficient application configuration patching
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
WO2016193408A1 (en) 2015-06-04 2016-12-08 Here Global B.V. Incremental update of compressed navigational databases
US10754494B2 (en) 2015-06-23 2020-08-25 Dell Products, L.P. Method and control system providing one-click commissioning and push updates to distributed, large-scale information handling system (LIHS)
US10063629B2 (en) 2015-06-23 2018-08-28 Dell Products, L.P. Floating set points to optimize power allocation and use in data center
US10009232B2 (en) 2015-06-23 2018-06-26 Dell Products, L.P. Method and control system providing an interactive interface for device-level monitoring and servicing of distributed, large-scale information handling system (LIHS)
CN106354524B (zh) 2015-07-17 2021-01-01 恩智浦美国有限公司 实时更新固件的系统和方法
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US9811363B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9830175B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9830449B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US20190073235A1 (en) * 2016-04-21 2019-03-07 Nec Corporation Network system, patch file application method, and recording medium
CN106055979B (zh) * 2016-05-24 2019-04-09 百度在线网络技术(北京)有限公司 内核修复方法和装置
US9952896B2 (en) 2016-06-28 2018-04-24 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
JP6751197B2 (ja) 2017-02-28 2020-09-02 日本電信電話株式会社 通信処理装置、情報処理装置、及び、通信処理装置の制御方法
US10402192B2 (en) 2017-07-25 2019-09-03 Aurora Labs Ltd. Constructing software delta updates for vehicle ECU software and abnormality detection based on toolchain
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
CN108874438B (zh) * 2018-06-25 2021-09-21 南京中感微电子有限公司 补丁生成方法、装置、电子设备及计算机存储介质
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
DE102018009835A1 (de) * 2018-12-14 2020-06-18 Giesecke+Devrient Mobile Security Gmbh Inkrementelles Aktualisieren einer Firmware
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
WO2020194000A1 (en) 2019-03-28 2020-10-01 Validata Holdings Limited Method of detecting and removing defects
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
CN110333890A (zh) * 2019-06-28 2019-10-15 南京兆伏电力科技有限公司 远程烧写固化flash数据的方法
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US10997056B1 (en) * 2019-10-09 2021-05-04 Fujitsu Limited Generation of explanatory and executable repair examples
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11669621B2 (en) * 2020-06-16 2023-06-06 Bank Of America Corporation Custom patching automation with machine learning integration
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
CN114860308A (zh) * 2021-02-04 2022-08-05 北京国基科技股份有限公司 一种嵌入式软件重构方法及装置
CN113076125B (zh) * 2021-04-25 2024-04-12 北京金山云网络技术有限公司 直播业务升级处理方法、装置、介质和服务器
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
CN113656059B (zh) * 2021-10-21 2022-02-08 北京联盛德微电子有限责任公司 嵌入式软件系统
US11900106B2 (en) 2022-03-02 2024-02-13 International Business Machines Corporation Personalized patch notes based on software usage
CN115469901B (zh) * 2022-08-16 2023-05-12 哈尔滨理工大学 一种双核dsp可拆卸远程升级系统及升级方法

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4954941A (en) * 1988-08-31 1990-09-04 Bell Communications Research, Inc. Method and apparatus for program updating
EP0617363B1 (en) * 1989-04-13 2000-01-26 SanDisk Corporation Defective cell substitution in EEprom array
US5481713A (en) * 1993-05-06 1996-01-02 Apple Computer, Inc. Method and apparatus for patching code residing on a read only memory device
US5675803A (en) * 1994-01-28 1997-10-07 Sun Microsystems, Inc. Method and apparatus for a fast debugger fix and continue operation
US5666293A (en) 1994-05-27 1997-09-09 Bell Atlantic Network Services, Inc. Downloading operating system software through a broadcast channel
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
US5619698A (en) * 1995-05-05 1997-04-08 Apple Computer, Inc. Method and apparatus for patching operating systems
US5896566A (en) 1995-07-28 1999-04-20 Motorola, Inc. Method for indicating availability of updated software to portable wireless communication units
US5689825A (en) 1995-07-28 1997-11-18 Motorola, Inc. Method and apparatus for downloading updated software to portable wireless communication units
US5802549A (en) * 1995-12-14 1998-09-01 International Business Machines Corporation Method and apparatus for patching pages of ROM
US5907708A (en) * 1996-06-03 1999-05-25 Sun Microsystems, Inc. System and method for facilitating avoidance of an exception of a predetermined type in a digital computer system by providing fix-up code for an instruction in response to detection of an exception condition resulting from execution thereof
EP0825530A3 (en) * 1996-06-20 2004-06-02 Sharp Kabushiki Kaisha Computer apparatus having electrically rewritable nonvolatile memory, and nonvolatile semiconductor memory
US5848064A (en) 1996-08-07 1998-12-08 Telxon Corporation Wireless software upgrades with version control
JP3755204B2 (ja) 1996-09-20 2006-03-15 カシオ計算機株式会社 通信装置、通信制御方法及び通信システム
US5963970A (en) * 1996-12-20 1999-10-05 Intel Corporation Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields
TW325551B (en) 1997-01-04 1998-01-21 Inventec Corp Auto switching memory space method capable of judging if there is updated version stored in memory circuit to automatically select program stored in ROM or memory circuit as execution stating location
US6266736B1 (en) * 1997-01-31 2001-07-24 Sony Corporation Method and apparatus for efficient software updating
US6049830A (en) 1997-05-13 2000-04-11 Sony Corporation Peripheral software download of a broadcast receiver
US5936667A (en) 1997-05-13 1999-08-10 Sony Corporation System and method for testing and updating stored content of a remote transmitter for an entertainment system
US5974312A (en) * 1997-07-10 1999-10-26 Ericsson Inc. System and method for updating a memory in an electronic device via wireless data transfer
US6002941A (en) 1997-12-17 1999-12-14 Motorola, Inc. Method and apparatus for implementing a service in a wireless communication system
US6167567A (en) * 1998-05-05 2000-12-26 3Com Corporation Technique for automatically updating software stored on a client computer in a networked client-server environment
US6209069B1 (en) * 1998-05-11 2001-03-27 Intel Corporation Method and apparatus using volatile lock architecture for individual block locking on flash memory
US6330715B1 (en) 1998-05-19 2001-12-11 Nortel Networks Limited Method and apparatus for managing software in a network system
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
US6353926B1 (en) 1998-07-15 2002-03-05 Microsoft Corporation Software update notification
US6366898B2 (en) 1998-09-21 2002-04-02 Sun, Microsystems, Inc. Method and apparatus for managing classfiles on devices without a file system
US6202208B1 (en) 1998-09-29 2001-03-13 Nortel Networks Limited Patching environment for modifying a Java virtual machine and method
US6237091B1 (en) 1998-10-29 2001-05-22 Hewlett-Packard Company Method of updating firmware without affecting initialization information
US6378069B1 (en) 1998-11-04 2002-04-23 Nortel Networks Limited Apparatus and methods for providing software updates to devices in a communication network
US6594822B1 (en) * 1999-02-19 2003-07-15 Nortel Networks Limited Method and apparatus for creating a software patch by comparing object files
US6434744B1 (en) * 1999-03-03 2002-08-13 Microsoft Corporation System and method for patching an installed application program
US6223291B1 (en) 1999-03-26 2001-04-24 Motorola, Inc. Secure wireless electronic-commerce system with digital product certificates and digital license certificates
US6357021B1 (en) * 1999-04-14 2002-03-12 Mitsumi Electric Co., Ltd. Method and apparatus for updating firmware
US6507881B1 (en) * 1999-06-10 2003-01-14 Mediatek Inc. Method and system for programming a peripheral flash memory via an IDE bus
US6321380B1 (en) * 1999-06-29 2001-11-20 International Business Machines Corporation Method and apparatus for modifying instruction operations in a processor
US6397385B1 (en) 1999-07-16 2002-05-28 Excel Switching Corporation Method and apparatus for in service software upgrade for expandable telecommunications system
US7032213B1 (en) * 1999-09-01 2006-04-18 Microsoft Corporation Fixing incompatible applications using a light debugger
US6640334B1 (en) * 1999-09-27 2003-10-28 Nortel Networks Limited Method and apparatus of remotely updating firmware of a communication device
US6769059B1 (en) * 1999-12-17 2004-07-27 Intel Corporation System for updating computer's existing video BIOS without updating the whole computer's system BIOS
US20020012329A1 (en) 2000-06-02 2002-01-31 Timothy Atkinson Communications apparatus interface and method for discovery of remote devices
US6256232B1 (en) * 2000-07-07 2001-07-03 Institute For Information Industry Data access method capable of reducing the number of erasing to flash memory and data patch and access device using the same
US20020026474A1 (en) 2000-08-28 2002-02-28 Wang Lawrence C. Thin client for wireless device using java interface
GB2366693B (en) 2000-08-31 2002-08-14 F Secure Oyj Software virus protection
US6529416B2 (en) * 2000-11-30 2003-03-04 Bitmicro Networks, Inc. Parallel erase operations in memory systems
US7055148B2 (en) * 2000-12-07 2006-05-30 Hewlett-Packard Development Company, L.P. System and method for updating firmware
US6813571B2 (en) * 2001-02-23 2004-11-02 Power Measurement, Ltd. Apparatus and method for seamlessly upgrading the firmware of an intelligent electronic device
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US20030079216A1 (en) * 2001-10-18 2003-04-24 International Business Machines Corporation Apparatus and method of using a hybrid of fixed media data and network-based data to provide software changes
JP4279528B2 (ja) * 2002-09-18 2009-06-17 株式会社ミクニ ウォータポンプ
JP2005135187A (ja) * 2003-10-30 2005-05-26 Toshiba Corp 電子機器および組み込みソフトウェア更新方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004312711A (ja) * 2003-03-25 2004-11-04 Ricoh Co Ltd 画像形成装置及び画像形成装置を遠隔のアプリケーションにより操作する方法
JP2010057186A (ja) * 2003-03-25 2010-03-11 Ricoh Co Ltd 端末装置、方法、及びプログラム
JP4523991B2 (ja) * 2003-03-25 2010-08-11 株式会社リコー 端末装置、方法、システム、及びプログラム
US10684848B1 (en) 2016-03-30 2020-06-16 Square, Inc. Blocking and non-blocking firmware update
US10817869B2 (en) 2016-06-29 2020-10-27 Square, Inc. Preliminary enablement of transaction processing circuitry
US11010765B2 (en) 2016-06-29 2021-05-18 Square, Inc. Preliminary acquisition of payment information
US10762196B2 (en) 2018-12-21 2020-09-01 Square, Inc. Point of sale (POS) systems and methods with dynamic kernel selection
US10990969B2 (en) 2018-12-21 2021-04-27 Square, Inc. Point of sale (POS) systems and methods for dynamically processing payment data based on payment reader capability
US11049095B2 (en) 2018-12-21 2021-06-29 Square, Inc. Point of sale (POS) systems and methods with dynamic kernel selection

Also Published As

Publication number Publication date
EP1410181A1 (en) 2004-04-21
WO2003009136A1 (en) 2003-01-30
KR20040022451A (ko) 2004-03-12
CN1529847A (zh) 2004-09-15
US20030084434A1 (en) 2003-05-01
US20050063242A1 (en) 2005-03-24
US6760908B2 (en) 2004-07-06
US20040237068A1 (en) 2004-11-25

Similar Documents

Publication Publication Date Title
JP2004536405A (ja) 組み込みソフトウェア更新システム
CN106569847B (zh) 一种用于车载系统基于移动网络实现iap远程升级的方法
US7082549B2 (en) Method for fault tolerant updating of an electronic device
US6584559B1 (en) Firmware download scheme for high-availability systems
US7716414B2 (en) Method for updating a mobile device using an update package obtained from a remote server
EP1519268B1 (en) Communication terminal and communication network for partially updating software, software update method, and software creation device and method therefor
US7093244B2 (en) Method of remotely upgrading firmware in field-deployed devices
CN101243393B (zh) 用于管理可修补软件系统的方法和装置
US7904895B1 (en) Firmware update in electronic devices employing update agent in a flash memory card
US7640458B2 (en) Software self-repair toolkit for electronic devices
KR101143112B1 (ko) 페일세이프 방식으로 맞춤 소프트웨어 영상 갱신을불휘발성 저장 장치에 적용하는 시스템 및 방법
US8453138B2 (en) Method and apparatus for generating an update package
KR100584338B1 (ko) 소프트웨어 업데이트 방법 및 시스템
US7096311B2 (en) Updating electronic files using byte-level file differencing and updating algorithms
CN109101261A (zh) 一种数据采集传输仪终端的远程在线升级方法及系统
US20080114925A1 (en) Electronic device with an update agent that employs preprocessing techniques for update
JP2006508432A (ja) アップグレード中に発生した障害や誤りからの自動復元を含む電子ファイルのアップグレード
CN103154889A (zh) 照明工程总线用户的并行编程和更新
CN108804118B (zh) 固件升级方法、设备及存储介质
CN101904105A (zh) 在更新期间使用高效的块备份和块恢复的移动手持送受话器
CN101815988A (zh) 固件映像更新和管理
CN111641527A (zh) 一种嵌入式芯片软件远程升级备份方法
WO2007023497A1 (en) Method and system for in-place updating content stored in a storage device
CN112947977A (zh) 一种软件在线升级方法及系统
EP1584005B1 (en) Mobile handset with a fault tolerant update agent