JP2004536405A - 組み込みソフトウェア更新システム - Google Patents
組み込みソフトウェア更新システム Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates 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メッセージを使用してパッチを送信する設計例を示す図である。
【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)
- ソフトウェアパッチによってフィールドを修正するために、デジタル機器内で動作する組み込みソフトウェアを調整する方法であって、
a)所定の基準に基づいて、上記組み込みソフトウェア内に、当該組み込みソフトウェアのセクションを定義する複数の挿入位置を決定する工程と、
b)上記複数の挿入位置毎に複数の更新処理ルーチンを設置する工程と、
c)上記ソフトウェアパッチを使用するために、デジタル機器内にメモリーエリアを決定する工程と、
d)上記複数の更新処理ルーチンとともに上記組み込みソフトウェアを上記デジタル機器の組み込みソフトウェアコードエリアにロードする工程とを備え、
上記更新処理ルーチンは、上記セクションにおいてソフトウェアパッチが存在する場合には、対応するセクションにおいて上記組み込みソフトウェアの実行を修正するために適応されること
を特徴とする組み込みソフトウェアを調整する方法。 - 上記メモリーエリアは、上記組み込みソフトウェアコードエリア内にあること
を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。 - 上記メモリーエリアは、上記組み込みソフトウェアコードエリア外にあること
を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。 - 上記挿入位置を決定する工程は、
上記組み込みソフトウェアのプログラムソフトウェアの行数、
上記組み込みソフトウェアの機能ユニット、
上記組み込みソフトウェアの命令タイプ、
上記デジタル機器のソフトウェア設計方式、
上記デジタル機器のハードウェア設計方式、
上記組み込みソフトウェアの修正機構、
上記組み込みソフトウェアのエラー訂正機構
のうち、少なくとも1つに基づくこと
を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。 - 上記複数の更新処理ルーチンを設置する工程は、
a)上記組み込みソフトウェアを実行可能なマシンコードにコンパイルする前に、上記更新処理ルーチンを当該組み込みソフトウェア内に設置すること、
b)上記組み込みソフトウェアを対応するアセンブリープログラムコードにコンパイルしてから、上記更新処理ルーチンを当該アセンブリープログラムコード内に設置し、当該アセンブリープログラムコードを実行可能なマシンコードにコンパイルすること、
c)上記組み込みソフトウェアを対応するオブジェクトコードにコンパイルしてから、上記更新処理ルーチンを当該オブジェクトコード内に設置し、当該オブジェクトコードを実行可能なマシンコードにコンパイルすること、
d)上記組み込みソフトウェアを実行可能マシンコードにコンパイルしてから、上記更新処理ルーチンを当該実行可能なマシンコード内に設置すること
のうち、少なくとも1つの方法に基づくこと
を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。 - 上記複数の更新処理ルーチンを設置する工程は、さらに、少なくとも1つの上記組み込みソフトウェアのプログラム命令を修正する工程を有すること
を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。 - 上記複数の更新処理ルーチンを設置する工程は、さらに、少なくとも1つの上記組み込みソフトウェアのプログラム命令を修正する工程を有すること
を特徴とする請求項5記載の組み込みソフトウェアを調整する方法。 - 少なくとも1つの上記更新処理ルーチンは、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行すること
を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。 - 少なくとも1つの上記更新処理ルーチンは、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行すること
を特徴とする請求項4記載の組み込みソフトウェアを調整する方法。 - 少なくとも1つの上記更新処理ルーチンは、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在するか否かを検査し、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行すること
を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。 - 少なくとも1つの上記更新処理ルーチンは、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチがあるか否かを検査し、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行すること
を特徴とする請求項4記載の組み込みソフトウェアを調整する方法。 - 上記組み込みソフトウェアの実行を上記ソフトウェアパッチが存在する位置に移して行う工程は、さらに、上記組み込みソフトウェアの実行をパッチコントロールルーチンが存在する第1の位置に移した後、当該パッチコントロールルーチンに基づいて、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する第2の位置に移して、当該ソフトウェアパッチを実行すること
を特徴とする請求項8記載の組み込みソフトウェアを調整する方法。 - 上記組み込みソフトウェアの実行を上記ソフトウェアパッチが存在する位置に移して行う工程は、さらに、上記組み込みソフトウェアの実行をパッチコントロールルーチンが存在する第1の位置に移した後、当該パッチコントロールルーチンに基づいて、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する第2の位置に移して、当該ソフトウェアパッチを実行すること
を特徴とする請求項10記載の組み込みソフトウェアを調整する方法。 - 上記複数の更新処理ルーチンは、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第1のルーチンと、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在するか否かを検査し、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第2のルーチンと、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在するか否かを検査し、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行をパッチコントロールルーチンが存在する第1の位置に移して行ってから、当該パッチコントロールルーチンに基づいて当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する第2の位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第3のルーチンと、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行をパッチコントロールルーチンが存在する第1の位置に移して行ってから、当該パッチコントロールルーチンに基づいて当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する第2の位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第4のルーチンと
のうち、少なくとも1つを有すること
を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。 - e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
h)上記ソフトウェアパッチを上記メモリーエリアに書き込む工程とをさらに備えること
を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。 - e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
h)上記ソフトウェアパッチを上記メモリーエリアに書き込む工程とをさらに備えること
を特徴とする請求項8記載の組み込みソフトウェアを調整する方法。 - e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
h)上記ソフトウェアパッチを上記メモリーエリアに書き込む工程とをさらに備えること
を特徴とする請求項10記載の組み込みソフトウェアを調整する方法。 - e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
h)上記ソフトウェアパッチを上記メモリーエリアに書き込む工程とをさらに備えること
を特徴とする請求項12記載の組み込みソフトウェアを調整する方法。 - 上記ソフトウェアパッチを使用して上記組み込みソフトウェア内の上記更新処理ルーチンの少なくとも一部を上書きする工程をさらに備えること
を特徴とする請求項15記載の組み込みソフトウェアを調整する方法。 - 上書きされる上記一部は、所定のジャンプオフセット(jump offset)であること
を特徴とする請求項19記載の組み込みソフトウェアを調整する方法。 - 上記ソフトウェアパッチを生成する工程は、
当該ソフトウェアパッチを生成する機能と、
所定の暗号化アルゴリズムによって当該ソフトウェアパッチを暗号化する機能と
のうち、少なくとも1つの機能を有するパッチサーバーを使用する工程を有すること
を特徴とする請求項15記載の組み込みソフトウェアを調整する方法。 - 上記ソフトウェアパッチを送信する工程は、
当該ソフトウェアパッチを送信する機能と、
上記デジタル機器からの少なくとも1つのメッセージを受信する機能と、
当該ソフトウェアパッチを再送信する機能と
のうち、少なくとも1つの機能を有するパッチサーバーを使用する工程を有すること
を特徴とする請求項15記載の組み込みソフトウェアを調整する方法。 - さらに、上記デジタル機器から少なくとも1つのメッセージを上記パッチサーバーに送信する工程は、
当該デジタル機器によって上記ソフトウェアパッチを受信した後と、
上記ソフトウェアパッチを上記メモリーエリアに書き込んだ後と
のいずれかのタイミングで実行されること
を特徴とする請求項22記載の組み込みソフトウェアを調整する方法。 - 上記ソフトウェアパッチは、
製造識別コードと、
製品モデルナンバーと、
ソフトウェアバージョンナンバーと、
ソフトウェアセクション識別コードと、
パッチ識別コードと、
CPU識別コードと、
MAC層アドレスと、
パッチアドレス情報と、
上記組み込みソフトウェアを更新するパッチプログラムと、
パッチプログラムの変換関連情報と、
リセットフラグ情報と、
パッチの書き込みの後処理に使用される情報と、
デジタル機器を識別するために使用される情報と、
ユーザーを識別するために使用される情報と、
上記デジタル機器のデータエリアを更新するデータパラメーターと
のうち、少なくとも1つを含むこと
を特徴とする請求項1記載の組み込みソフトウェアを調整する方法。 - ソフトウェアパッチによるフィールド修正のためにデジタル機器内の組み込みソフトウェアの動作を調整する方法であって、
a)所定の基準に基づいて、上記組み込みソフトウェア内で複数の挿入位置を決定し、少なくとも2つの上記挿入位置を上記組み込みソフトウェアの2つのセクションと定義する工程と、
b)上記組み込みソフトウェア内に複数のパッチ操作エリアを設置する工程と、
c)上記パッチ操作エリアを第2の内容に選択的に変更可能な第1の内容に設定する工程と、
d)上記複数のパッチ操作エリアとともに上記組み込みソフトウェアを上記デジタル機器内にロードする工程とを備えること
を特徴とする組み込みソフトウェアの動作を調整する方法。 - 上記組み込みソフトウェア内に複数のパッチ操作エリアを設置する工程は、当該組み込みソフトウェアの上記挿入位置に上記パッチ処理エリアを設置する工程を有すること
を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。 - 上記組み込みソフトウェアのコードエリア外の所定のメモリーエリアに少なくとも1つのパッチ操作エリアを設置する工程をさらに備えること
を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。 - 上記組み込みソフトウェアのコードエリア外の所定のメモリーエリアに少なくとも1つのパッチ操作エリアを設置する工程をさらに備えること
を特徴とする請求項26記載の組み込みソフトウェアの動作を調整する方法。 - 上記パッチ操作エリアを設置する工程は、上記組み込みソフトウェア内にプログラム命令を書き込むことによって当該組み込みソフトウェア内にメモリーエリアを確保して当該パッチ操作エリアとして使用する工程を有すること
を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。 - 上記パッチ操作エリアを設置する工程は、上記組み込みソフトウェア内にプログラム命令を書き込むことによって当該組み込みソフトウェア内にメモリーエリアを確保して当該パッチ操作エリアとして使用する工程を有すること
を特徴とする請求項26記載の組み込みソフトウェアの動作を調整する方法。 - 上記パッチ操作エリアを設置する工程は、上記組み込みソフトウェア内にプログラム命令を書き込むことによって当該組み込みソフトウェア内にメモリーエリアを確保して当該パッチ操作エリアとして使用する工程を有すること
を特徴とする請求項27記載の組み込みソフトウェアの動作を調整する方法。 - 上記挿入位置を決定する工程は、
上記組み込みソフトウェアのプログラムソフトウェアの行数、
上記組み込みソフトウェアの機能ユニット、
上記組み込みソフトウェアの命令タイプ、
上記デジタル機器の所定のソフトウェア設計方式、
上記デジタル機器の所定のハードウェア設計方式、
上記組み込みソフトウェアの所定の修正機構、
上記組み込みソフトウェアの所定のエラー訂正機構
のうち、少なくとも1つに基づくこと
を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。 - 上記パッチ操作エリアを設置する工程は、さらに、少なくとも1つの上記組み込みソフトウェアのプログラム命令を修正する工程を有すること
を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。 - 上記パッチ操作エリアは、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第1の更新処理ルーチンと、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在するか否かを検査し、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第2の更新処理ルーチンと、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在するか否かを検査し、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行をパッチコントロールルーチンが存在する第1の位置に移して行ってから、当該パッチコントロールルーチンに基づいて当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する第2の位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第3の更新処理ルーチンと、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、当該組み込みソフトウェアの実行をパッチコントロールルーチンが存在する第1の位置に移して行ってから、当該パッチコントロールルーチンに基づいて当該組み込みソフトウェアの実行を当該ソフトウェアパッチが存在する第2の位置に移して行い、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在しない場合には、当該組み込みソフトウェアの当該セクションを実行する第4の更新処理ルーチンと、
上記組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在するか否かを検査し、当該組み込みソフトウェアのセクションを更新するソフトウェアパッチが存在する場合には、対応するセクションを修正するために当該組み込みソフトウェアの実行を修正し、当該ソフトウェアパッチにジャンプして実行する第5の更新処理ルーチンと、
上記ソフトウェアパッチが存在する場合には、対応するセクションを修正するために当該組み込みソフトウェアの実行を修正し、当該ソフトウェアパッチが存在しない場合には、当該セクションにジャンプするジャンプ命令と、
上記ジャンプ命令によって他のジャンプオフセット値に選択的に変更可能なエリアであるジャンプオフセット値と、
上記ソフトウェアパッチにジャンプするように命令するルーチンであるパッチコントロールルーチンと、
上記組み込みソフトウェアの実行を修正するパッチプログラムと、
パッチ訂正ルーチンに選択的に変更可能なエリアであるパッチコントロールブロックと、
上記組み込みソフトウェアの実行を修正するために使用される所定の内容を設定する第1のメモリーエリアと、
上記組み込みソフトウェアの実行を修正するために使用されるパラメーターに変更可能な所定の内容を設定する第2のメモリーエリアと、
上記組み込みソフトウェアの実行を修正するために使用されるパラメーターに変更可能な所定の内容を設定する第3のメモリーエリアと
のうち、少なくとも1つを有すること
を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。 - 上記パッチコントロールブロックは、上記組み込みソフトウェアの複数のセクションによってシェアされること
を特徴とする請求項34記載の組み込みソフトウェアの動作を調整する方法。 - 上記複数のパッチ操作エリアを設置する工程のタイミングは、
a)上記組み込みソフトウェアを実行可能マシンコードにコンパイルする前に少なくとも1つの上記パッチ操作エリアを当該組み込みソフトウェア内に設置すること、
b)上記組み込みソフトウェアを対応するアセンブリープログラムコードにコンパイルしてから、少なくとも1つの上記パッチ操作エリアを当該アセンブリープログラムコード内に設置し、その後当該アセンブリープログラムコードを実行可能マシンコードにコンパイルすること、
c)上記組み込みソフトウェアを対応するオブジェクトコードにコンパイルしてから、少なくとも1つの上記パッチ操作エリアを当該オブジェクトコード内に設置し、その後当該オブジェクトコードを実行可能マシンコードにコンパイルすること、
d)上記組み込みソフトウェアを実行可能マシンコードにコンパイルしてから、少なくとも1つの上記パッチ操作エリアを上記実行可能マシンコード内に設置すること
のうち、少なくとも1つの方法に基づくこと
を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。 - e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
h)上記ソフトウェアパッチを少なくとも1つの上記パッチ操作エリアに書き込む工程とをさらに備えること
を特徴とする請求項25記載の組み込みソフトウェアの動作を調整する方法。 - e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
h)上記ソフトウェアパッチを少なくとも1つの上記パッチ操作エリアに書き込む工程とをさらに備えること
を特徴とする請求項27記載の組み込みソフトウェアの動作を調整する方法。 - e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
h)上記ソフトウェアパッチを少なくとも1つの上記パッチ操作エリアに書き込む工程とをさらに備えること
を特徴とする請求項28記載の組み込みソフトウェアの動作を調整する方法。 - e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
h)上記ソフトウェアパッチを少なくとも1つの上記パッチ操作エリアに書き込む工程とをさらに備えること
を特徴とする請求項29記載の組み込みソフトウェアの動作を調整する方法。 - e)ソフトウェアパッチを生成して書き替えることによって所定の機能を提供する工程と、
f)通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
g)上記デジタル機器によって上記ソフトウェアパッチを受信する工程と、
h)上記ソフトウェアパッチを少なくとも1つの上記パッチ操作エリアに書き込む工程とをさらに備えること
を特徴とする請求項34記載の組み込みソフトウェアの動作を調整する方法。 - 上記書き込む工程は、上記ソフトウェアパッチを使用して少なくとも1つのジャンプオフセットを変更する工程を有すること
を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。 - 上記ソフトウェアパッチを生成する工程は、
当該ソフトウェアパッチを生成する機能と、
所定の暗号化アルゴリズムによって当該ソフトウェアパッチを暗号化する機能と
のうち、少なくとも1つの機能を有するパッチサーバーを使用する工程を有すること
を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。 - 上記ソフトウェアパッチを送信する工程は、
当該ソフトウェアパッチを送信する機能と、
上記デジタル機器からの少なくとも1つのメッセージを受信する機能と、
当該ソフトウェアパッチを再送信する機能と
のうち、少なくとも1つの機能を有するパッチサーバーを使用する工程を有すること
を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。 - 上記送信する工程は、CDMA標準で定義されるデータ・バースト・メッセージ(Data Burst Message)を使用して上記ソフトウェアパッチを送信する工程を有すること
を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。 - さらに、上記デジタル機器から少なくとも1つのメッセージを上記パッチサーバーに送信する工程は、
当該デジタル機器によって上記ソフトウェアパッチを受信した後と、
上記ソフトウェアパッチを上記パッチ操作エリアに書き込んだ後と
のいずれかのタイミングで実行されること
を特徴とする請求項44記載の組み込みソフトウェアの動作を調整する方法。 - 上記ソフトウェアパッチは、
製造識別コードと、
製品モデルナンバーと、
ソフトウェアバージョンナンバーと、
ソフトウェアセクション識別コードと、
パッチ識別コードと、
CPU識別コードと、
MAC層アドレスと、
パッチアドレス情報と、
上記組み込みソフトウェアを更新するパッチプログラムと、
パッチプログラムの変換関連情報と、
リセットフラグ情報と、
パッチの書き込みの後処理に使用される情報と、
デジタル機器を識別するために使用される情報と、
ユーザーを識別するために使用される情報と、
上記デジタル機器のデータエリアを更新するデータパラメーターと
のうち、少なくとも1つを有すること
を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。 - 上記デジタル機器によって上記ソフトウェアパッチの少なくとも1項目を変換する工程は、さらに、
上記ソフトウェアパッチを上記パッチ操作エリアに書き込む前に、上記少なくとも1項目を第1のソフトウェア言語フォーマットから第2のソフトウェア言語フォーマットに変更する工程と、
上記ソフトウェアパッチを実行する前に、上記少なくとも1項目を第1のソフトウェア言語フォーマットから第2のソフトウェア言語フォーマットに変更する工程と、
上記ソフトウェアパッチを上記パッチ操作エリアに書き込む前に、上記少なくとも1項目を第1のデータフォーマットから第2のデータフォーマットに変更する工程と、
上記ソフトウェアパッチを実行する前に、上記少なくとも1項目を第1のデータフォーマットから第2のデータフォーマットに変更する工程と
のうち、いずれか1つを有すること
を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。 - 上記ソフトウェアパッチを上記パッチ操作エリアに書き込む工程は、データをフラッシュメモリーに書き込む少なくとも1つのフラッシュ書き込みルーチンによって実現されること
を特徴とする請求項37記載の組み込みソフトウェアの動作を調整する方法。 - 上記ソフトウェアパッチの上記書き込み工程は、さらに、フラッシュ書き込みの前に、上記フラッシュ書き込みルーチンをRAMメモリーに移す工程を有すること
を特徴とする請求項49記載の組み込みソフトウェアの動作を調整する方法。 - フラッシュメモリー及び不揮発性メモリー(non-volatile memory;NVM)を有する組み込みソフトウェアによって実行されるデジタル機器を修正する方法であって、
a)フラッシュメモリーの内容を更新する少なくとも1つのパッチプログラムと不揮発性メモリーの内容を更新する少なくとも1つのデータパラメーターとからなるソフトウェアパッチを生成する工程と、
b)無線通信接続を介して上記ソフトウェアパッチを上記デジタル機器に送信する工程と、
c)上記デジタル機器よって上記ソフトウェアパッチを受信する工程と、
d)上記ソフトウェアパッチを上記デジタル機器内に書き込む工程とを備えること
を特徴とする組み込みソフトウェアによって実行されるデジタル機器を修正する方法。 - 上記書き込み工程は、
既存のデータを上書きすることによって上記少なくとも1つのデータパラメーターを上記不揮発性メモリーに書き込む工程と、
上記少なくとも1つのパッチプログラム片を上記フラッシュメモリーに書き込む工程と
のうち、少なくとも1つの工程を有すること
を特徴とする請求項51記載の組み込みソフトウェアによって実行されるデジタル機器を修正する方法。 - 上記ソフトウェアパッチの識別情報を上記組み込みソフトウェアのパッチコントロールテーブルに書き込む工程と、
上記ソフトウェアパッチのパッチコントロール情報を上記組み込みソフトウェアのパッチコントロールテーブルに書き込む工程と
のうち、少なくとも1つの工程をさらに備えること
を特徴とする請求項52記載の組み込みソフトウェアによって実行されるデジタル機器を修正する方法。 - デジタル機器内の組み込みソフトウェアを更新する命令を備えるコンピュータ読み取り可能な記録媒体であって、
上記組み込みソフトウェアを実行する命令と、
上記組み込みソフトウェアのセクションの使用するパッチプログラムが存在するか否かを決定する命令と、
上記パッチプログラムが上記セクションに使用される場合に、上記組み込みソフトウェアが当該セクションの実行を当該パッチプログラムに移す命令と、
上記パッチプログラムの実行後、上記組み込みソフトウェアの所定の位置から実行する命令とを備えること
を特徴とするコンピュータ読み取り可能な記録媒体。 - 上記組み込みソフトウェアは、パッチプログラムがあるか否かを判定する複数のルーチンが設置されること
を特徴とする請求項54記載のコンピュータ読み取り可能な記録媒体。 - 上記所定の位置は、更新の必要があるプログラム部分の末端であること
を特徴とする請求項54記載のコンピュータ読み取り可能な記録媒体。 - 通信接続を介してパッチプログラムを受信する命令と、
上記パッチプログラムを上記デジタル機器内に書き込む命令とをさらに備えること
を特徴とする請求項55記載のコンピュータ読み取り可能な記録媒体。
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)
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)
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)
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 | 電子機器および組み込みソフトウェア更新方法 |
-
2002
- 2002-07-15 JP JP2003514412A patent/JP2004536405A/ja active Pending
- 2002-07-15 CN CNA028141911A patent/CN1529847A/zh active Pending
- 2002-07-15 KR KR10-2004-7000597A patent/KR20040022451A/ko not_active Application Discontinuation
- 2002-07-15 EP EP02748162A patent/EP1410181A1/en not_active Withdrawn
- 2002-07-15 US US10/195,199 patent/US6760908B2/en not_active Expired - Fee Related
- 2002-07-15 WO PCT/US2002/022412 patent/WO2003009136A1/en not_active Application Discontinuation
-
2004
- 2004-06-24 US US10/876,503 patent/US20040237068A1/en not_active Abandoned
- 2004-11-09 US US10/986,258 patent/US20050063242A1/en not_active Abandoned
Cited By (9)
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 |