説明

フォールト・トレラントな更新エージェントを有するモバイルハンドセット

不揮発性メモリを具備する電子装置を更新する方法について開示する。本発明の一実施例によれば、フォールト・トレラントなバンクごとの方法を使用することにより、電子装置の第1コードバージョンから第2コードバージョンへの更新を実現することができる。更新命令を有する更新パッケージを公衆及び/又は無線網を介して受信可能であり、この更新命令を使用して、第1コードバージョンを第2コードバージョンに変換することができる。この変換におけるバンクの順序は、更新パッケージ内において指定可能であり、これは、非連続的なものであってもよい。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、モバイルハンドセットにおけるファームウェア/ソフトウェアの更新に関し、更に詳しくは、モバイルハンドセットにおける1つのバージョンから別のバージョンへのファームウェア/ソフトウェアのフォールト・トレラント(fault tolerant)な更新に関するものである。
【背景技術】
【0002】
(関連出願)
本出願は、2002年12月18日付けで出願された「Mobile Handset With A Fault Tolerant Update Agent」という名称の米国仮特許出願第60/434,712号を参照するものであり、この仮出願に対する優先権を主張すると共に、これに伴う利益を主張するものである。
(引用による包含)
先程引用した米国仮特許出願の内容は、本引用により、そのすべてが本明細書に包含される。又、本出願は、2000年11月17日付けで出願された「System and Method for Updating and Distributing Information」という名称の米国仮特許出願第60/249,606号及び2002年5月23日付けで公開された「System and Method for Updating and Distributing Information」という名称の国際特許出願公開第WO02/41147A1号をも参照するものであり、これらの内容も、本引用により、そのすべてが本明細書に包含される。更には、本出願は、2003年4月8日付けで出願された「Electronic Device With An Update Agent That Employs Preprocessing Techniquues For Update」という名称の米国仮特許出願第60/461,248号をも参照するものであり、この内容は、本引用により、そのすべてが本明細書に包含される。
(連邦政府による資金提供を受けた研究開発)
該当せず
(マイクロフィッシュ/著作権の引用)
該当せず
【0003】
移動電話機やPDA(Personal Digital Assistant:携帯情報端末)などの電子装置は、その電子装置の製造者、通信事業者、又はサードパーティから提供されたファームウェアやアプリケーションを含んでいる。このようなファームウェア及びアプリケーションソフトウェアには、しばしば、ソフトウェアの誤り(即ち、「バグ」)が含まれている。又、これらのソフトウェアの使用期間中に、ソフトウェア開発者によって新機能が追加される場合もある。このため、バグを修正したり、新機能を導入したり、或いは、これらの両方のために、ファームウェア及びソフトウェアの新バージョンが定期的にリリースされている。
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、このような装置を更新するプロセスは、相対的に複雑なものであって、更新プロセスを中断させる多数の潜在的な原因が存在している。これらの原因には、装置を作動させている電池の消耗、更新に使用している通信リンクの消失、及び発呼又は着呼による中断が含まれる。モバイルハンドセット(移動送受話機)のファームウェア/ソフトウェアの更新を行ってモバイルハンドセットが動作不能になると、ユーザーは、多くの場合に、その装置を一定の期間にわたって使用できなると共に、その装置をサービスセンターに返却しなければならないため、関連するファームウェア/ソフトウェアの更新を提供するサービスに対する期待を裏切る可能性が非常に高い。従って、このような理由から、ファームウェア/ソフトウェアの更新をモバイルハンドセットに提供するプロセスは、フォールト・トレラントである必要がある。しかしながら、これらの装置は、様々な制約を有しており、フォールト・トレラントな更新動作の実現は、容易なものではなく、関連する諸動作の設計及び管理において多くの配慮が要求されることになる。
【0005】
このような従来の伝統的な方法に伴う更なる制約や欠点については、これらのシステムと、図面を参照して以下の節において説明する本発明とを比較することにより、当業者に明らかとなろう。
【課題を解決するための手段】
【0006】
本発明の態様においては、第1コードバージョンを含む複数のバンクを具備する不揮発性メモリを有する電子装置を更新する方法が提供され、この方法は、複数のバンクの1つを選択する段階と、選択したバンクを作業バンクに複製する段階と、選択したバンクをバックアップバンクに複写する段階と、作業バンクの内容を第1コードバージョンから第2コードバージョンに変換する段階と、を有している。又、この方法は、変換済みの作業バンクを、選択したバンクに移動する段階と、サイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも1つを使用して、複製、複写、及び変換の各段階の中の少なくとも1つの正常な完了を検証する段階と、を更に有している。又、この方法は、複数のバンクのそれぞれの更新が完了するまで、以上の動作を反復可能である。本発明の一実施例における変換段階は、少なくとも1つの更新命令を使用可能であり、作業バンクは、揮発性メモリ内に配置可能であり、選択段階は、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、チェックサム、及び指定されたバンク順序の中の少なくとも1つを使用可能である。選択段階は、少なくともリセット又は電源投入のいずれかが行われた後に更新を再開する際に、サイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも1つを使用可能であり、選択段階は、すべてのその他の時点においては、指定されたバンク順序を使用可能である。
【0007】
本発明による一実施例は、更新パッケージを受信する段階を更に有することができる。更新パッケージは、少なくとも1つの更新命令を有することが可能であり、更新パッケージは、バンク順序仕様を有することもできる。受信段階は、公衆網を使用して実現可能であり、受信段階は、無線網を使用して実現することも可能である。本発明の一実施例は、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも1つを使用して更新の進捗状況を判定する段階を更に有することができる。又、変換段階は、選択したバンク以外の複数のバンクの中の少なくとも1つの少なくとも一部を使用可能である。
【0008】
本発明の更なる態様によれば、第1コードバージョンを含む複数のバンクを具備する不揮発性メモリを有する電子装置を第1コードバージョンから第2コードバージョンに更新する方法が提供され、この方法は、少なくとも1つの更新命令を有する更新パッケージを受信する段階と、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、チェックサム、及び指定されたバンク順序の中の少なくとも1つを使用して複数のバンクの中の1つを選択する段階と、を有している。又、この方法は、少なくとも1つの更新命令を使用して、選択したバンクを第1コードバージョンから第2コードバージョンに変換する段階と、1つのバンク内における受信、選択、及び変換の各段階を、複数のバンクのそれぞれの更新が完了するまで、バンクごとに反復する段階と、をも有することができる。選択段階においては、リセットと電源投入の少なくともいずれかが行われた後に更新を再開する際に、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも1つを使用可能であり、選択段階においては、すべてのその他の時点においては、指定されたバンク順序を使用可能である。本発明の一実施例における変換段階は、選択したバンクを作業バンクに複製する段階と、選択したバンクをバックアップバンクに複写する段階と、作業バンクの内容を第1コードバージョンから第2コードバージョンに変換する段階と、この作業バンクの変換済みの内容を、選択したバンクに移動する段階と、を更に有することができる。又、作業バンクは、揮発性メモリ内に配置可能であり、変換段階においては、選択したバンク以外の複数のバンクの中の少なくとも1つの少なくとも一部を使用可能である。
【0009】
本発明による一実施例においては、更新パッケージは、バンク順序仕様を有することが可能であり、非連続的なバンク順序によってバンクを選択可能である。又、受信段階は、公衆網を介するものであってよく、受信段階は、無線網を介したものであってもよい。
【0010】
本発明の更なる態様によれば、第1コードバージョンを含む複数のバンクを具備する不揮発性のメモリを有する電子装置を第1コードバージョンから第2コードバージョンに更新する方法が提供され、この方法は、公衆網を使用して少なくとも1つの更新命令を有する更新パッケージを受信する段階と、複数のバンクの中の1つを選択する段階と、少なくとも1つの命令を使用して、選択したバンクを第1コードバージョンから第2コードバージョンに変換する段階と、を有することができる。そして、この方法は、1つのバンク内における受信、選択、及び変換の各段階を、複数のバンクのそれぞれの更新が完了するまで、バンクごとに反復可能である。
【0011】
本発明による一実施例においては、変換段階は、選択したバンクを作業バンクに複製する段階と、選択したバンクをバックアップバンクに複写する段階と、作業バンクの内容を第1コードバージョンから第2コードバージョンに変換する段階と、作業バンクの変換済みの内容を、選択したバンクに移動する段階と、を更に有することができる。作業バンクは、揮発性メモリ内に配置可能であり、変換段階においては、複数のバンクの中のその他の少なくとも1つのものに加え、以前に更新されたバンクのオリジナル及び変換済みの内容をも使用可能である。又、変換段階においては、選択したバンク以外の複数のバンクの中の少なくとも1つの少なくとも一部を使用可能である。選択段階は、リセットと電源投入の少なくともいずれかが行われた後に更新を再開する際に、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも1つを使用可能であり、選択段階は、すべてのその他の時点においては、指定されたバンク順序を使用可能である。更新パッケージは、バンク順序仕様を有することが可能であり、複数のバンクの中の1つは、非連続的なバンク順序によって選択可能である。
【0012】
本発明の更に別の態様によれば、複数のバンクを具備するメモリを有する電子装置を更新する更新パッケージが提供され、この更新パッケージは、差分情報と、更新後署名(post−update signature)のコレクションとを有することが可能であり、それぞれの更新後署名は、更新対象である複数のバンクの中の1つに対応している。更新後署名のコレクションの中の少なくとも1つは、中断後に更新を再開する際に使用可能であり、これは、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の1つであってよい。
【0013】
本発明のこれら及びその他の特徴並びに利点については、添付図面と共に、本発明の以下の詳細な説明を参照することによって理解することができよう。尚、添付の図面においては、類似の参照符号によって類似の部分を示している。
【発明を実施するための最良の形態】
【0014】
図1は、本発明によるファームウェア/ソフトウェアの更新を助長するフォールト・トレラントな更新エージェント117を具備する模範的なモバイルハンドセット107のブロックダイアグラムを示している。この図1に示されているように、モバイルハンドセット107は、通信リンク143を介してサーバ109から更新パッケージをダウンロードする能力を有している。サーバ109は、更新パッケージリポジトリ137内に複数の更新パッケージを保持し、これらを提供する。モバイルハンドセット107は、不揮発性メモリ111、揮発性メモリ領域135、及びサーバ109などの外部システムと通信リンク143を介してやり取りするための通信手段(図示されてはいない)を有している。不揮発性メモリ111は、例えば、フラッシュ(FLASH)メモリから構成可能であり、これを使用して、モバイルハンドセット107のファームウェア/ソフトウェアを保存することができる。揮発性メモリ領域135は、例えば、ランダムアクセスメモリ(RAM)から構成可能であり、この内部において、プログラムの実行、プログラム変数の保存、コードセグメントの変更などを行うことができる。尚、以下の説明においては、「オリジナル」及び「古い」という用語は、現在の更新動作の実行よりも以前の時点におけるメモリのバンク/ブロックの内容を意味するものとする。
【0015】
本発明による一実施例においては、フォールト・トレラントな更新エージェント117は、揮発性メモリ領域135内の作業バンク125と不揮発性メモリ111内のバックアップバンク127を使用して、フォールト・トレラントな更新プロセスを実装することができる。このフォールト・トレラントな更新プロセスによれば、例えば、停電やその他の一時的な異常などによって中断が発生した場合にも、ファームウェア/ソフトウェアの更新の最中(並びに、この後)に、モバイルハンドセット107などのモバイルハンドセットの動作を安定した/回復可能な状態に維持することができる。
【0016】
本発明の一実施例においては、モバイルハンドセット107の電源投入又はリブートの際に、不揮発性メモリ111内のブートストラップコード115を実行可能である。そして、このブートストラップコード115が、モバイルハンドセット107内のファームウェア/ソフトウェアを更新するための更新パッケージが利用可能であると判定した場合に、更新エージェント117に制御が渡されることになる。更新エージェント117は、モバイルハンドセット107内(特に、不揮発性メモリ111のバンク1(119)〜バンクN(131)内)のファームウェア/ソフトウェアを更新することができる。尚、このブートストラップコード115及び更新エージェント117が占有しているメモリ空間は、通常、更新動作の対象区域外と見なされているが、本発明の一実施例においては、更新エージェント117によって円滑に実行される更新プロセスを使用することにより、更新エージェント自体の特定のサブコンポーネントを更新することも可能である。
【0017】
本発明の一実施例においては、モバイルハンドセット107は、サーバ109から更新パッケージをダウンロードし、モバイルハンドセット107の不揮発性メモリ111内に保存されているファームウェア又はソフトウェアを更新することができる。特定の更新パッケージの受信を完了すると、モバイルハンドセット107は、その更新パッケージ一式を不揮発性メモリ領域111内に転送可能である。尚、このように更新パッケージを不揮発性領域111に複写することによって、一定レベルのフォールト・トレランスを実現しており、この結果、モバイルハンドセット107は、サーバ109と更に通信することなしに、後続の更新動作を実行可能である。そして、この更新パッケージの不揮発性メモリ111内への保存が完了すると、状態テーブルエントリを変更して、モバイルハンドセット107内における更新パッケージの正常な受信と安全な保存を反映させることができる。
【0018】
本発明の一実施例における更新エージェント117は、それぞれ、揮発性メモリ135及び不揮発性メモリ領域111内に、「作業」バンク125と「バックアップ」バンク127用の空間を割り当てることができる。更新エージェント117は、これらの作業バンク125及びバックアップバンク127を使用することにより、不揮発性メモリ111内に保存されている既存のコードバージョンのコンポーネントに対して操作を実行可能であり、この際には、コードセクションの更新済みの内容の演算が完了し、これが正しいと検証されるまで、オリジナルのコードは変更されない。この結果、予期しない処理の誤りや電源の中断によってオリジナルコードが破壊されないようにしている。本発明の一実施例においては、更新エージェント117は、作業バンクポインタを初期化することにより、バンクの更新動作が行われ揮発性メモリ135内の場所(即ち、「作業バンク」)を指示することができる。又、バックアップバンクポインタを初期化することにより、更新対象のバンクの複写を保持している不揮発性メモリ111内の場所(即ち、「バックアップバンク」)を指示することも可能である。このバックアップバンクの存在は、電源の中断やリブート又はリセット動作の際のフォールト・トレランスの確保に有用である。
【0019】
本発明の一実施例における更新エージェント117は、バンク順序仕様書を使用可能である。このバンク順序仕様書は、更新パッケージを生成する際に決定可能であり、対応する更新パッケージの一部として、更新パッケージリポジトリ137から受信可能である。更新エージェント117は、このバンク順序仕様書を使用することにより、必要に応じて、不揮発性メモリ111内のバンク1(119)〜バンクN(131)などの様々なメモリバンクの更新の順序を管理することができる。このバンク順序仕様書を使用してバンクの更新順序を制御することにより、更新パッケージのサイズを最適化することができる。更新エージェント117は、バンク順序仕様書に従って、バンク1(119)〜バンクN(131)のそれぞれを作業バンク125に複写可能であり、この結果、これらのバンクを変更又は更新した後に、不揮発性メモリ領域111内に書き戻すことができる。
【0020】
本発明による一実施例においては、更新エージェント117は、当初、バンクJ(123)などの不揮発性メモリ111の選択したバンクの内容を作業バンク125に複写することができる。次いで、更新エージェントは、その更新パッケージ内に含まれている更新命令によって指定されているように作業バンク125を更新し、この更新済みの作業バンク125をバックアップバンク127に複写することができる。尚、この更新済みの作業バンク125のバックアップバンク127への複写は、フォールト・トレランスを提供するべく実行されるものである。次いで、更新エージェント117は、作業バンク125を、バンクJ(123)に複写してバンクJ(123)を更新することができる。又、更新エージェント117は、不揮発性メモリ111と揮発性メモリ135間におけるコードセグメント又はデータの複写後に、検証段階を実行することも可能である。このような実施例における検証は、MD5チェックサム、CRC、又は類似の算出値の演算と関係するものであってよく、次いで、この算出した検証値を、更新パッケージ内に含まれている更新対象のバンク用の既定値と比較することができる。
【0021】
本発明の別の実施例においては、更新エージェント117は、まず、バンクJ(123)などの不揮発性メモリ111の選択したバンクの内容を作業バンク125内に複写することができる。又、更新エージェント117は、バンクJ(123)の内容をバックアップバンク127内へも複写可能である。そして、更新エージェント117は、更新パッケージリポジトリ137から受信した更新パッケージ内に含まれている更新命令の適切な部分に従って作業バンク125を更新し、この作業バンク125の更新済みの内容をバンクJ(123)内に複写してバンクJ(123)を更新することができる。尚、作業バンク125の更新済みの内容をバンクJ(123)内に正常に複写する前に、プログラム障害やその他の中断が発生した場合には、更新エージェント117は、その中断された更新プロセスを継続するべく、バックアップバンク127からバンクJ(123)のオリジナルの内容を取得可能である。
【0022】
本発明の更に別の実施例においては、更新エージェント117は、まず、バンクJ(123)などの不揮発性メモリの選択したバンクの内容を作業バンク125内に複写することができる。次いで、更新エージェント117は、更新パッケージリポジトリ137から受信した更新パッケージの更新命令の適切な部分に従って作業バンク125を更新可能である。次いで、更新エージェント117は、バンクJ(123)の内容をバックアップバンク127内に複写可能である。そして、最後に、更新エージェント117は、作業バンク125の更新済みの内容をバンクJ(123)内に複写してバンクJ(123)を更新することができる。尚、作業バンク125の更新済みの内容をバンクJ(123)内に正常に複写する前に、プログラム障害やその他の中断が発生した場合には、更新エージェント117は、バックアップバンク127からオリジナルバンクJ(123)の内容を取得することにより、中断された更新プロセスを継続することができる。
【0023】
本発明の更なる実施例においては、更新エージェント117は、バックアップバンク127を使用することにより、以前に更新されたバンクのオリジナルの内容を保存することができる。この結果、更新命令は、現在のバンクを更新する際に、以前に更新されたバンクのオリジナルの内容を使用できるようになる。例えば、更新対象である現在のバンクがバンクJ(123)である場合に、本発明の一実施例においては、このバンクJ(123)を更新する際に、更新済みのバンクJ−1(121)の内容を使用可能である。そして、更には、更新プロセスにおいて使用するべく、バンクJ−1(121)の古いバージョン(即ち、オリジナルの内容)をバックアップバンク127内に利用可能な状態で保持しておくことも可能である。このような実施例においては、更新エージェント117は、バンクJ(123)の内容を作業バンク125内に複写して、更新パッケージリポジトリ137から受信した更新パッケージ内に含まれている更新命令の一部によって指定されているように作業バンク125を更新可能であるが、この更新パッケージ内の更新命令は、バンクJ−1(121)の更新済みの内容に加え、バックアップバンク127内に利用可能な状態で保持されているバンクJ−1(121)のオリジナルの内容をも使用可能である。そして、作業バンク125の更新後に、バンクJ(123)の内容をバックアップバンク127に複写して、バックアップバンク127内のバンクJ−1(121)のオリジナルの内容を置換可能である。次いで、バンクJ(123)の更新済みの内容を作業バンク15からバンクJ(123)に複写することができる。この結果、バンクJ(123)の更新の際に、バンクJ(123)のオリジナルの内容、バンク1(119)〜バンクJ−1(121)の更新済みのバンクの内容、バンクJ−1(121)のオリジナルの内容(バックアップバンク127内に保存されているもの)、及びバンクJ+1(図示されてはいない)〜バンクN(131)のオリジナルの内容を更新プロセスにおいて利用することができる。特に、バックアップバンク127の内容として保存されているバンクJ−1(121)のオリジナルの内容を利用できることにより、更新プロセスにおいて使用する「コンテキスト(context)」あるいは「参照の局所性(locality of reference)」を高めることになる。本発明のこの実施例によれば、更新エージェント117によって、対応する短縮されたダウンロード時間を有する小型の更新パッケージを生成可能であるのみならず、更新エージェント117を更に効果的なものにすることができる。
【0024】
本発明の更に別の実施例においては、更新エージェント117は、前述のフォールト・トレラントな更新方法の中の1つを実行する前に、バンク1(119)〜バンクN(131)の内容を事前処理することができる。このような事前処理は、更新パッケージのサイズを低減するべく、更新パッケージの生成時点と、更新エージェントの両方において、使用可能である。この事前処理技法には、例えば、オリジナル及び更新済みのバンク内の一致要素を整列するべく、1つ又は複数のバンクの内容の再配置又は再順序付けと、1つ又は複数のバンク内における要素のシフトを含むことができる。
【0025】
オリジナルのバンク(バンク1(119)〜バンクN(131))と関連して作業バンク125及びバックアップバンク127を使用することにより、バンク1(119)〜バンクN(131)を更新する際に、更新エージェント117は、フォールト・トレランスを提供可能である。尚、以上においては、RAM及びFLASHメモリを有する装置の使用と関連して、本発明の実施例について説明しているが、本発明は、FLASHが読み取り、書き込み、及び実行可能なものである場合には、FLASHのみを含む装置に対しても容易に適合可能である。又、本発明による一実施例においては、その他のタイプの不揮発性メモリを使用することも可能である。
【0026】
フォールト・トレラントな更新の実行を実現するべく、更新サーバ109上に保存されているそれぞれの更新パッケージには、更新対象である不揮発性メモリ111のそれぞれのバンクごとの既定の検証情報を含むことができる。この既定の検証情報は、正常な更新後のそれぞれの対応するバンクごとのCRC、MD5チェックサム、又は類似の算出値の予測値を有することができる。本発明の一実施例においては、このような既定の検証情報を使用することにより、起動後又は更新プロセスの中断の発生後に、前述の更新方法を再開するポイントを判定することができる。例えば、バンクの更新を演算中に図1のモバイルハンドセット107に対する電源供給が消失又は中断された場合には、作業バンク125は、破壊される可能性が高い。更新パッケージ内に含まれている検証情報を使用することにより、この種の破壊が発生したかどうかを判定可能である。そして、作業バンクの内容の破壊が検出された場合には、関連するオリジナルのバンクを使用して、更新プロセスを再開することにより、作業バンク内におけるオリジナルバンクの更新済みの複写の生成を完了させることができる。一方、作業バンク125の正常な更新の後に、現在のバンクの更新が中断された場合には、更新パッケージ内に含まれている検証情報を使用することにより、この種の破壊が発生したことを検出可能である。そして、現在のバンクの内容の破壊が検出された場合には、作業バンク125の内容(有効な場合)、又は、バックアップバンク127の内容を使用することにより、現在のバンクの更新済みの内容を演算することができる。
【0027】
図2は、本発明による、フォールト・トレラントな更新エージェントを呼出してファームウェア/ソフトウェアの更新動作を実行する図1のモバイルハンドセット107などのモバイルハンドセットの模範的な起動方法を示すフローチャートである。この処理は、モバイルハンドセットが電源投入又はリブートされた際に、始まっている(ブロック207)。次いで、初期化又はブートシーケンスが実行される(ブロック209)。次いで、モバイルハンドセットのファームウェア/ソフトウェアの更新を実行するかどうかの判定を実行する(ブロック211)。例えば、一実施例においては、状態テーブルにアクセスし、この状態テーブル内のフラグが、以前にダウンロードされ、モバイルハンドセット内に利用可能な状態で保持されている更新パッケージを使用してファームウェア/ソフトウェアを更新することが必要であることを示しているかどうかを判定可能である。
【0028】
そして、更新が不要であると判定された場合には、モバイルハンドセットの通常の起動手順を実行し(ブロック225)、この起動プロセスは終了することになる(ブロック221)。一方、更新が必要であると判定された場合には、フォールト・トレラントな更新エージェントが、更新プロセスを再開するべきポイントを判定する(ブロック213)。例えば、このポイントは、新規に開始された更新動作の場合には、開始点に位置可能であり、以前に起動され、中断されていた更新動作の場合には、不揮発性メモリ内の特定のバンクに位置することになる。次いで、更新エージェントは、フォールト・トレラントな更新プロセスに関係する様々な動作を実行する(ブロック215)。そして、最後に、更新エージェントは、モバイルハンドセットのリブートを起動する(ブロック223)。
【0029】
図3は、本発明による、更新プロセスにおいて、作業バンク、バックアップバンク、及び複数の更新可能なオリジナルバンクを使用する図1のモバイルハンドセット107などのモバイルハンドセットのフォールト・トレラントな更新の模範的な実行方法を示すフローチャートである。モバイルハンドセットがファームウェア/ソフトウェアの更新の必要性を検出した際に、このプロセスは始まり、更新を開始又は再開することを要するメモリ内のポイントを判定する(ブロック307)。例えば、本発明の一実施例においては、更新処理を開始又は再開するべきポイントは、更新対象である不揮発性メモリのそれぞれのバンクごとにCRC値を算出する検証プロセスを使用して判定可能である。次いで、それぞれのバンクごとに算出した値を、ファームウェア/ソフトウェアを含む更新パッケージ内に提供されているCRC値のリスト中の対応する事前に算出されている値と比較する。この比較は、算出したCRC値が、そのバンク用のリスト中の値と一致しない不揮発性メモリのバンクに遭遇するまで、リスト内において、バンクごとに継続されることになる。この不一致は、異常又は破壊を示しており、従って、更新動作を開始又は再開するべきポイントを示している。
【0030】
次いで、作業バンク及びバックアップバンクのアドレス又は場所を判定する(ブロック309)。一実施例においては、これらのバンクの場所及び長さ情報は、更新エージェントが維持している(又は、アクセス可能な)状態テーブル又は配置(コンフィギュレーション)構成内に保存されている関連するポインタによって提供可能である。次いで、更新エージェントは、更新パッケージ内に提供されている命令及びデータを使用して更新するべく、オリジナルのバンクを作業バンクに複写する(ブロック311)。次いで、この作業バンクを更新エージェントによって更新し、CRC値を選択的に算出して、更新プロセスの成否を検証する(ブロック313)。次いで、これに続く更新済みの作業バンクのオリジナルバンクへの複写が、停電やその他の理由によって失敗した際に、データソースを提供するべく、この更新済みの内容を有する作業バンクをバックアップバンクに複写する(ブロック315)。
【0031】
次いで、作業バンクをオリジナルバンクに複写する(ブロック317)。尚、このプロセスが、正常に完了する前に中断すると、後続の電源の再投入やリブート際に、バックアップバンクの内容が有効であると判定され、オリジナルバンクへのバックアップバンクの複写を起動することによって更新プロセスが継続されることになる。
【0032】
次いで、ファームウェア/ソフトウェアの更新におけるすべてのバンクの更新が完了しているかどうかを判定する(ブロック319)。そして、更新プロセスが完了している場合には、更新プロセスは終了する(ブロック323)。一方、更新プロセスが、まだ完了していない場合には、次のバンクに進むための手順を実行する(ブロック321)。次のバンクは、例えば、更新パッケージ内のバンク順序仕様書によって指定可能である。そして、次のバンクの内容を更新するべく、次のバンクのオリジナルの内容を作業バンクに複写することによって処理を継続することになる(ブロック311)。
【0033】
図4は、本発明による、バックアップバンクを使用して現在のバンクのオリジナルの内容の複写を保持する図1のモバイルハンドセット107などのモバイルハンドセットのフォールト・トレラントな更新の別の模範的な実行方法を示すフローチャートである。この図4に示されている方法においては、モバイルハンドセットが、ファームウェア/ソフトウェアの更新の必要性を検出した際に、プロセスが始まり、更新を開始又は再開することを要するメモリ内のポイントを判定する(ブロック407)。例えば、本発明の一実施例においては、更新プロセスを開始又は再開するべきポイントは、図3について前述した検証プロセスを使用して判定可能である。
【0034】
次に、作業バンク及びバックアップバンクのアドレス又は場所を判定する(ブロック409)。本発明の一実施例においては、これらのバンクの場所及び長さ情報は、更新エージェントが維持している(又は、アクセス可能な)状態テーブル又は配置(コンフィギュレーション)構成内に保存されている関連ポインタによって提供可能である。次いで、更新エージェントは、更新パッケージ内に提供されている命令及びデータを使用して更新するべく、現在のオリジナルのバンクを作業バンクに複写する(ブロック411)。次いで、更新エージェントによって作業バンクを更新し、CRC値(又は、MD5チェックサムなど)を算出して、更新プロセスの成否を検証する(ブロック413)。
【0035】
次いで、これに続く更新済みの作業バンクのオリジナルバンクへの複写が、停電やその他の理由のために失敗した際に、データソースを提供するべく、現在のバンク(「オリジナルバンク」とも呼ばれる)のオリジナルの内容をバックアップバンクに複写する(ブロック415)。次いで、作業バンクをオリジナルのバンクに複写する(ブロック417)。尚、このプロセスが、正常に完了する前に中断すると、後続の電源再投入又はリブートの際に、バックアップバンク内の内容が、オリジナルバンクの有効なオリジナルの内容であると判定され、バックアップバンクの作業バンクへの複写を起動することによって更新プロセスが継続されることになる。
【0036】
次いで、本プロセスは、すべてのバンクの更新が完了しているかどうかを判定する(ブロック419)。そして、更新プロセスが完了している場合には、更新プロセスは終了することになる(ブロック423)。一方、更新プロセスが完了していない場合には、次のバンクに進むための手順を実行する(ブロック421)。次のバンクは、例えば、ファームウェア/ソフトウェア更新を含む更新パッケージ内のバンク順序仕様書によって指定可能である。次いで、この処理は、次のオリジナルのバンクにおいて継続され、その更新プロセスを開始するべく、その内容が作業バンクに複写されることになる(ブロック411)。
【0037】
図5は、本発明による、作業バンクの更新よりも先に、オリジナルバンクからバックアップバンクへの複写動作を実行する図1のモバイルハンドセット107などのモバイルハンドセットのフォールト・トレラントな更新の別の模範的な実行方法を示すフローチャートである。この実施例においては、オリジナルバンクをバックアップバンク内に複写した後に作業バンクが更新されるように、図4のブロック413とブロック415の動作が置き換えられている。即ち、更新プロセスの開始後に(ブロック507)、オリジナルバンクを、作業バンクと(ブロック511)、バックアップバンクとに(ブロック513)、複写する。次いで、作業バンクを更新し(ブロック515)、更新済みの作業バンクをオリジナルバンク内に複写する(ブロック517)。この時点以降の処理は、図4に示されているものと同様である。
【0038】
図6は、本発明による、所与のバンクの更新動作の際に、バンク順序において先行するバンクのオリジナル並びに更新済みの内容を使用する図1のモバイルハンドセット107などのモバイルハンドセットのフォールト・トレラントな更新の別の模範的な実行方法を示すフローチャートである。このプロセスは、モバイルハンドセットが、ファームウェア/ソフトウェアの更新の必要性を検出した際に始まり、更新を開始又は再開することを要するメモリ内のポイントを判定する(ブロック607)。次いで、作業バンクとバックアップバンクのアドレス又は場所を判定する(ブロック609)。次いで、更新エージェントは、更新するべく、オリジナルバンクを作業バンクに複写する(ブロック611)。尚、この更新においては、バックアップバンク及び図1のバンク1(119)〜バンクJ(123)などのその他のバンクの内容に加え、更新パッケージ内に提供されている更新命令及びデータを使用可能である。又、バンク1(119)〜バンクJ(123)などのバンクは、更新パッケージ内に指定されているバンク順序に応じて、事前に更新しておくことも可能性があり、或いは、オリジナルの内容を保持していてもよい。
【0039】
次に、更新エージェントは、バックアップバンクの内容を使用して、作業バンクを更新する(ブロック613)。本プロセスのこの時点において、バックアップバンクは、バンク順序において先行するバンクのオリジナルの内容の複写を含んでいる。即ち、このバックアップバンクの内容は、ファームウェア/ソフトウェアの新バージョンの導入の際に、オリジナルバンクから移動されたコードセグメント又はデータを含んでいると期待されるため、高められた「参照の局所性(locality of reference)」を提供している。そして、作業バンクの更新が完了した後に、CRC値(又は、MD5チェックサムなど)を算出し、そのバンクに対する更新動作の結果を検証する。
【0040】
次いで、これに続く更新済みの作業バンクからオリジナルバンクへの複写が、停電又はその他の理由のために失敗した際に、データソースを提供するべく、現在のバンク(これは、「オリジナルバンク」とも呼ばれる)のオリジナルの内容をバックアップバンクに複写する(ブロック615)。尚、このオリジナルバンクの内容は、バンク順序における次のバンクを更新する際に、使用可能である。次いで、更新済みの作業バンクをオリジナルのバンクに複写する(ブロック617)。そして、このプロセスが、正常に完了する前に中断した場合には、後続の電源の再投入又はリブートの際に、更新が進行中であって、バックアップバンクの内容は、オリジナルバンクの有効なオリジナルの内容であると判定されることになる。そして、バックアップバンクを作業バンクに複写することにより、更新プロセスが継続されることになる。
【0041】
次に、更新エージェントは、更新プロセスが完了すると共に、すべてのバンクの更新が完了しているかどうかを判定する(ブロック619)。そして、バンク順序内のすべてのバンクが完了している場合には、更新プロセスは終了することになる(ブロック623)。一方、更新プロセスが完了していないと判定された場合には、処理は、次のバンクに進む(ブロック621)。前述のように、次のバンクは、更新パッケージ内に含まれているバンク順序仕様書によって指定可能である。そして、処理は、バンク順序における次のオリジナルバンクを作業バンクに複写し、その内容を更新することによって、継続されることになる(ブロック611)。
【0042】
以上のように、更新エージェントは、作業バンク、バックアップバンク、及び複数のオリジナルバンクの中の1つを使用することにより、ファームウェア/ソフトウェアのフォールト・トレラントな更新を助長する。一実施例においては、更新済みの作業バンクをオリジナルのバンクに書き込んでいる際に、バックアップバンクが、オリジナルバンクのバックアップ複写を保存している。別の実施例においては、バックアップバンクは、更新済みの作業バンクの内容のバックアップ複写を保持している。更に別の実施例においては、バックアップバンクは、オリジナルバンクのバックアップ複写と、更新済みの作業バンクのバックアップ複写の両方を保存している。
【0043】
以上、特定の実施例を参照して、本発明について説明したが、当業者であれば、本発明の範囲を逸脱することなしに、様々な変更を加えたり、同等物によって置換可能であることを理解するであろう。又、その範囲を逸脱することなしに、多くの変更を加えることにより、特定の状況又は材料を本発明の開示内容に適合させることも可能である。従って、本発明は、開示した特定の実施例に限定されるものではなく、本発明には、添付の請求項の範囲に属するすべての実施例が含まれる。
【図面の簡単な説明】
【0044】
【図1】本発明による、ファームウェア/ソフトウェアの更新を助長するフォールト・トレラントな更新エージェントを具備する模範的なモバイルハンドセットのブロックダイアグラムを示す図である。
【図2】本発明による、フォールト・トレラントな更新エージェントを呼出してファームウェア/ソフトウェアの更新動作を実行する図1のモバイルハンドセットなどのモバイルハンドセットの模範的な起動方法を示すフローチャートである。
【図3】本発明による、更新プロセスにおいて、作業バンク、バックアップバンク、及び複数の更新可能なオリジナルバンクを使用する図1のモバイルハンドセットなどのモバイルハンドセットのフォールト・トレラントな更新の模範的な実行方法を示すフローチャートである。
【図4】本発明による、バックアップバンクを使用して現在のバンクのオリジナルの内容の複写を保持する図1のモバイルハンドセットなどのモバイルハンドセットのフォールト・トレラントな更新の別の模範的な実行方法を示すフローチャートである。
【図5】本発明による、作業バンクの更新よりも先に、オリジナルバンクからバックアップバンクへの複写動作を実行する図1のモバイルハンドセットなどのモバイルハンドセットのフォールト・トレラントな更新の別の模範的な実行方法を示すフローチャートである。
【図6】本発明による、所与のバンクの更新動作の際に、バンク順序において先行するバンクのオリジナル及び更新済みの内容を使用する図1のモバイルハンドセットなどのモバイルハンドセットのフォールト・トレラントな更新の更に別の模範的な実行方法を示すフローチャートである。

【特許請求の範囲】
【請求項1】
第1コードバージョンを含む複数のバンクを具備する不揮発性メモリを有する電子装置を更新する方法であって、
(a)前記複数のバンクの中の1つを選択する段階と、
(b)前記選択したバンクを作業バンクに複製する段階と、
(c)前記選択したバンクをバックアップバンクに複写する段階と、
(d)前記作業バンクの内容を前記第1コードバージョンから第2コードバージョンに変換する段階と、
(e)前記変換済みの作業バンクを前記選択したバンクに移動する段階と、
(f)サイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも1つを使用して、前記複製段階、前記複写段階、及び前記変換段階の中の少なくとも1つの正常な完了を検証する段階と、
(g)前記複数のバンクのそれぞれの更新が完了するまで、(a)〜(f)段階を反復する段階と、
を有することを特徴とする方法。
【請求項2】
前記変換段階は、少なくとも1つの更新命令を使用する請求項1記載の方法。
【請求項3】
前記作業バンクは、揮発性メモリ内に配置されている請求項1記載の方法。
【請求項4】
前記選択段階は、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、チェックサム、及び指定されたバンク順序の中の少なくとも1つを使用する請求項1記載の方法。
【請求項5】
前記選択段階は、少なくともリセット又は電源投入のいずれかが行われた後に前記更新を再開する際に、サイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも1つを使用し、前記選択段階は、すべてのその他の時点においては、指定されたバンク順序を使用する請求項4記載の方法。
【請求項6】
更新パッケージを受信する段階を更に有する請求項1記載の方法。
【請求項7】
前記更新パッケージは、少なくとも1つの更新命令を有している請求項6記載の方法。
【請求項8】
前記更新パッケージは、バンク順序仕様を有している請求項6記載の方法。
【請求項9】
前記受信段階は、公衆網を使用して実現される請求項6記載の方法。
【請求項10】
前記受信段階は、無線網を使用して実現される請求項6記載の方法。
【請求項11】
少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも1つを使用して前記更新段階の進捗状況を判定する段階を更に有する請求項1記載の方法。
【請求項12】
前記変換段階は、前記選択したバンク以外の前記複数のバンクの中の少なくとも1つの少なくとも一部を使用する請求項1記載の方法。
【請求項13】
第1コードバージョンを含む複数のバンクを具備する不揮発性メモリを有する電子装置を前記第1コードバージョンから第2コードバージョンに更新する方法であって、
(a)少なくとも1つの更新命令を有する更新パッケージを受信する段階と、
(b)少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、チェックサム、及び指定されたバンク順序の中の少なくとも1つを使用して前記複数のバンクの中の1つを選択する段階と、
(c)前記選択したバンクを、前記少なくとも1つの更新命令を使用して、前記第1コードバージョンから前記第2コードバージョンに変換する段階と、
(d)前記複数のバンクのそれぞれの更新が完了するまで、1つのバンク内における(b)段階〜(c)段階を、バンクごとに反復する段階と、
を有することを特徴とする方法。
【請求項14】
前記選択段階は、リセット及び電源投入の少なくともいずれかが行われた後に前記更新を再開する際に、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも1つを使用し、前記選択段階は、すべてのその他の時点においては、指定されたバンク順序を使用する請求項13記載の方法。
【請求項15】
前記変換段階は、
前記選択したバンクを作業バンクに複製する段階と、
前記選択したバンクをバックアップバンクに複写する段階と、
前記作業バンクの内容を前記第1コードバージョンから前記第2コードバージョンに変換する段階と、
前記作業バンクの前記変換済みの内容を前記選択したバンクに移動する段階と、
を更に有する請求項13記載の方法。
【請求項16】
前記作業バンクは、揮発性メモリ内に配置されている請求項15記載の方法。
【請求項17】
前記変換段階は、前記選択したバンク以外の前記複数のバンクの中の少なくとも1つの少なくとも一部を使用する請求項13記載の方法。
【請求項18】
前記更新パッケージは、バンク順序仕様を有している請求項13記載の方法。
【請求項19】
前記バンクは、非連続的なバンク順序によって選択される請求項13記載の方法。
【請求項20】
前記受信段階は、公衆網を介したものである請求項13記載の方法。
【請求項21】
前記受信段階は、無線網を介したものである請求項13記載の方法。
【請求項22】
第1コードバージョンを含む複数のバンクを具備する不揮発性メモリを有する電子装置を前記第1コードバージョンから第2コードバージョンに更新する方法であって、
(a)公衆網を使用して、少なくとも1つの更新命令を有する更新パッケージを受信する段階と、
(b)前記複数のバンクの中の1つを選択する段階と、
(c)前記選択したバンクを、前記少なくとも1つの更新命令を使用して、前記第1コードバージョンから前記第2コードバージョンに変換する段階と、
(d)前記複数のバンクのそれぞれの更新が完了するまで、1つのバンク内における(b)段階〜(c)段階を、バンクごとに反復する段階と、
を有することを特徴とする方法。
【請求項23】
前記変換段階は、前記選択したバンクを作業バンクに複製する段階と、
前記選択したバンクをバックアップバンクに複写する段階と、
前記作業バンクの内容を前記第1コードバージョンから前記第2コードバージョンに変換する段階と、
前記作業バンクの前記変換済みの内容を前記選択したバンクに移動する段階と、
を更に有する請求項22記載の方法。
【請求項24】
前記作業バンクは、揮発性メモリ内に配置されている請求項23記載の方法。
【請求項25】
前記変換段階は、前記複数のバンクの中のその他の少なくとも1つに加え、以前に更新されたバンクのオリジナル及び変換済みの内容を使用する請求項23記載の方法。
【請求項26】
前記変換段階は、前記選択したバンク以外の前記複数のバンクの中の少なくとも1つの少なくとも一部を使用する請求項22記載の方法。
【請求項27】
前記選択段階は、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、チェックサム、及び指定されたバンク順序の中の少なくとも1つを使用する請求項22記載の方法。
【請求項28】
前記選択段階は、リセット及び電源投入の少なくともいずれかが行われた後に前記更新を再開する際に、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも1つを使用し、前記選択段階は、すべてのその他の時点においては、指定されたバンク順序を使用する請求項27記載の方法。
【請求項29】
前記更新パッケージは、バンク順序仕様を有している請求項22記載の方法。
【請求項30】
前記複数のバンクの中の前記の1つは、非連続的なバンク順序によって選択される請求項22記載の方法。
【請求項31】
複数のバンクを具備するメモリを有する電子装置を更新する更新パッケージであって、
差分情報と更新後署名のコレクションとを有し、
前記更新後署名の各々が更新対象である前記複数のバンクの中の1つに対応している、
ことを特徴とする更新パッケージ。
【請求項32】
前記更新後署名のコレクションの中の少なくとも1つは、中断後に前記更新を再開する際に使用される請求項31記載の更新パッケージ。
【請求項33】
各更新後署名は、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の1つである請求項31記載の更新パッケージ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2006−518059(P2006−518059A)
【公表日】平成18年8月3日(2006.8.3)
【国際特許分類】
【出願番号】特願2005−508521(P2005−508521)
【出願日】平成15年9月4日(2003.9.4)
【国際出願番号】PCT/US2003/027727
【国際公開番号】WO2004/061551
【国際公開日】平成16年7月22日(2004.7.22)
【出願人】(505230009)ビットフォン コーポレイション (1)
【Fターム(参考)】