(57)【要約】不揮発性メモリを具備する電子装置を更新する方法について開示する。本発明の一実施例によれば、フォールト・トレラントなバンクごとの方法を使用することにより、電子装置の第１コードバージョンから第２コードバージョンへの更新を実現することができる。更新命令を有する更新パッケージを公衆及び／又は無線網を介して受信可能であり、この更新命令を使用して、第１コードバージョンを第２コードバージョンに変換することができる。この変換におけるバンクの順序は、更新パッケージ内において指定可能であり、これは、非連続的なものであってもよい。
2006518059.tif 000002
【特許請求の範囲】
【請求項１】
第１コードバージョンを含む複数のバンクを具備する不揮発性メモリを有する電子装置を更新する方法であって、
（ａ）前記複数のバンクの中の１つを選択する段階と、
（ｂ）前記選択したバンクを作業バンクに複製する段階と、
（ｃ）前記選択したバンクをバックアップバンクに複写する段階と、
（ｄ）前記作業バンクの内容を前記第１コードバージョンから第２コードバージョンに変換する段階と、
（ｅ）前記変換済みの作業バンクを前記選択したバンクに移動する段階と、
（ｆ）サイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも１つを使用して、前記複製段階、前記複写段階、及び前記変換段階の中の少なくとも１つの正常な完了を検証する段階と、
（ｇ）前記複数のバンクのそれぞれの更新が完了するまで、（ａ）〜（ｆ）段階を反復する段階と、
を有することを特徴とする方法。
【請求項２】
前記変換段階は、少なくとも１つの更新命令を使用する請求項１記載の方法。
【請求項３】
前記作業バンクは、揮発性メモリ内に配置されている請求項１記載の方法。
【請求項４】
前記選択段階は、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、チェックサム、及び指定されたバンク順序の中の少なくとも１つを使用する請求項１記載の方法。
【請求項５】
前記選択段階は、少なくともリセット又は電源投入のいずれかが行われた後に前記更新を再開する際に、サイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも１つを使用し、前記選択段階は、すべてのその他の時点においては、指定されたバンク順序を使用する請求項４記載の方法。
【請求項６】
更新パッケージを受信する段階を更に有する請求項１記載の方法。
【請求項７】
前記更新パッケージは、少なくとも１つの更新命令を有している請求項６記載の方法。
【請求項８】
前記更新パッケージは、バンク順序仕様を有している請求項６記載の方法。
【請求項９】
前記受信段階は、公衆網を使用して実現される請求項６記載の方法。
【請求項１０】
前記受信段階は、無線網を使用して実現される請求項６記載の方法。
【請求項１１】
少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも１つを使用して前記更新段階の進捗状況を判定する段階を更に有する請求項１記載の方法。
【請求項１２】
前記変換段階は、前記選択したバンク以外の前記複数のバンクの中の少なくとも１つの少なくとも一部を使用する請求項１記載の方法。
【請求項１３】
第１コードバージョンを含む複数のバンクを具備する不揮発性メモリを有する電子装置を前記第１コードバージョンから第２コードバージョンに更新する方法であって、
（ａ）少なくとも１つの更新命令を有する更新パッケージを受信する段階と、
（ｂ）少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、チェックサム、及び指定されたバンク順序の中の少なくとも１つを使用して前記複数のバンクの中の１つを選択する段階と、
（ｃ）前記選択したバンクを、前記少なくとも１つの更新命令を使用して、前記第１コードバージョンから前記第２コードバージョンに変換する段階と、
（ｄ）前記複数のバンクのそれぞれの更新が完了するまで、１つのバンク内における（ｂ）段階〜（ｃ）段階を、バンクごとに反復する段階と、
を有することを特徴とする方法。
【請求項１４】
前記選択段階は、リセット及び電源投入の少なくともいずれかが行われた後に前記更新を再開する際に、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも１つを使用し、前記選択段階は、すべてのその他の時点においては、指定されたバンク順序を使用する請求項１３記載の方法。
【請求項１５】
前記変換段階は、
前記選択したバンクを作業バンクに複製する段階と、
前記選択したバンクをバックアップバンクに複写する段階と、
前記作業バンクの内容を前記第１コードバージョンから前記第２コードバージョンに変換する段階と、
前記作業バンクの前記変換済みの内容を前記選択したバンクに移動する段階と、
を更に有する請求項１３記載の方法。
【請求項１６】
前記作業バンクは、揮発性メモリ内に配置されている請求項１５記載の方法。
【請求項１７】
前記変換段階は、前記選択したバンク以外の前記複数のバンクの中の少なくとも１つの少なくとも一部を使用する請求項１３記載の方法。
【請求項１８】
前記更新パッケージは、バンク順序仕様を有している請求項１３記載の方法。
【請求項１９】
前記バンクは、非連続的なバンク順序によって選択される請求項１３記載の方法。
【請求項２０】
前記受信段階は、公衆網を介したものである請求項１３記載の方法。
【請求項２１】
前記受信段階は、無線網を介したものである請求項１３記載の方法。
【請求項２２】
第１コードバージョンを含む複数のバンクを具備する不揮発性メモリを有する電子装置を前記第１コードバージョンから第２コードバージョンに更新する方法であって、
（ａ）公衆網を使用して、少なくとも１つの更新命令を有する更新パッケージを受信する段階と、
（ｂ）前記複数のバンクの中の１つを選択する段階と、
（ｃ）前記選択したバンクを、前記少なくとも１つの更新命令を使用して、前記第１コードバージョンから前記第２コードバージョンに変換する段階と、
（ｄ）前記複数のバンクのそれぞれの更新が完了するまで、１つのバンク内における（ｂ）段階〜（ｃ）段階を、バンクごとに反復する段階と、
を有することを特徴とする方法。
【請求項２３】
前記変換段階は、前記選択したバンクを作業バンクに複製する段階と、
前記選択したバンクをバックアップバンクに複写する段階と、
前記作業バンクの内容を前記第１コードバージョンから前記第２コードバージョンに変換する段階と、
前記作業バンクの前記変換済みの内容を前記選択したバンクに移動する段階と、
を更に有する請求項２２記載の方法。
【請求項２４】
前記作業バンクは、揮発性メモリ内に配置されている請求項２３記載の方法。
【請求項２５】
前記変換段階は、前記複数のバンクの中のその他の少なくとも１つに加え、以前に更新されたバンクのオリジナル及び変換済みの内容を使用する請求項２３記載の方法。
【請求項２６】
前記変換段階は、前記選択したバンク以外の前記複数のバンクの中の少なくとも１つの少なくとも一部を使用する請求項２２記載の方法。
【請求項２７】
前記選択段階は、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、チェックサム、及び指定されたバンク順序の中の少なくとも１つを使用する請求項２２記載の方法。
【請求項２８】
前記選択段階は、リセット及び電源投入の少なくともいずれかが行われた後に前記更新を再開する際に、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも１つを使用し、前記選択段階は、すべてのその他の時点においては、指定されたバンク順序を使用する請求項２７記載の方法。
【請求項２９】
前記更新パッケージは、バンク順序仕様を有している請求項２２記載の方法。
【請求項３０】
前記複数のバンクの中の前記の１つは、非連続的なバンク順序によって選択される請求項２２記載の方法。
【請求項３１】
複数のバンクを具備するメモリを有する電子装置を更新する更新パッケージであって、
差分情報と更新後署名のコレクションとを有し、
前記更新後署名の各々が更新対象である前記複数のバンクの中の１つに対応している、
ことを特徴とする更新パッケージ。
【請求項３２】
前記更新後署名のコレクションの中の少なくとも１つは、中断後に前記更新を再開する際に使用される請求項３１記載の更新パッケージ。
【請求項３３】
各更新後署名は、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の１つである請求項３１記載の更新パッケージ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、モバイルハンドセットにおけるファームウェア／ソフトウェアの更新に関し、更に詳しくは、モバイルハンドセットにおける１つのバージョンから別のバージョンへのファームウェア／ソフトウェアのフォールト・トレラント（ｆａｕｌｔ  ｔｏｌｅｒａｎｔ）な更新に関するものである。
【背景技術】
【０００２】
（関連出願）
本出願は、２００２年１２月１８日付けで出願された「Ｍｏｂｉｌｅ  Ｈａｎｄｓｅｔ  Ｗｉｔｈ  Ａ  Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ  Ｕｐｄａｔｅ  Ａｇｅｎｔ」という名称の米国仮特許出願第６０／４３４，７１２号を参照するものであり、この仮出願に対する優先権を主張すると共に、これに伴う利益を主張するものである。
（引用による包含）
先程引用した米国仮特許出願の内容は、本引用により、そのすべてが本明細書に包含される。又、本出願は、２０００年１１月１７日付けで出願された「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｕｐｄａｔｉｎｇ  ａｎｄ  Ｄｉｓｔｒｉｂｕｔｉｎｇ  Ｉｎｆｏｒｍａｔｉｏｎ」という名称の米国仮特許出願第６０／２４９，６０６号及び２００２年５月２３日付けで公開された「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｕｐｄａｔｉｎｇ  ａｎｄ  Ｄｉｓｔｒｉｂｕｔｉｎｇ  Ｉｎｆｏｒｍａｔｉｏｎ」という名称の国際特許出願公開第ＷＯ０２／４１１４７Ａ１号をも参照するものであり、これらの内容も、本引用により、そのすべてが本明細書に包含される。更には、本出願は、２００３年４月８日付けで出願された「Ｅｌｅｃｔｒｏｎｉｃ  Ｄｅｖｉｃｅ  Ｗｉｔｈ  Ａｎ  Ｕｐｄａｔｅ  Ａｇｅｎｔ  Ｔｈａｔ  Ｅｍｐｌｏｙｓ  Ｐｒｅｐｒｏｃｅｓｓｉｎｇ  Ｔｅｃｈｎｉｑｕｕｅｓ  Ｆｏｒ  Ｕｐｄａｔｅ」という名称の米国仮特許出願第６０／４６１，２４８号をも参照するものであり、この内容は、本引用により、そのすべてが本明細書に包含される。
（連邦政府による資金提供を受けた研究開発）
該当せず
（マイクロフィッシュ／著作権の引用）
該当せず
【０００３】
移動電話機やＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ：携帯情報端末）などの電子装置は、その電子装置の製造者、通信事業者、又はサードパーティから提供されたファームウェアやアプリケーションを含んでいる。このようなファームウェア及びアプリケーションソフトウェアには、しばしば、ソフトウェアの誤り（即ち、「バグ」）が含まれている。又、これらのソフトウェアの使用期間中に、ソフトウェア開発者によって新機能が追加される場合もある。このため、バグを修正したり、新機能を導入したり、或いは、これらの両方のために、ファームウェア及びソフトウェアの新バージョンが定期的にリリースされている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、このような装置を更新するプロセスは、相対的に複雑なものであって、更新プロセスを中断させる多数の潜在的な原因が存在している。これらの原因には、装置を作動させている電池の消耗、更新に使用している通信リンクの消失、及び発呼又は着呼による中断が含まれる。モバイルハンドセット（移動送受話機）のファームウェア／ソフトウェアの更新を行ってモバイルハンドセットが動作不能になると、ユーザーは、多くの場合に、その装置を一定の期間にわたって使用できなると共に、その装置をサービスセンターに返却しなければならないため、関連するファームウェア／ソフトウェアの更新を提供するサービスに対する期待を裏切る可能性が非常に高い。従って、このような理由から、ファームウェア／ソフトウェアの更新をモバイルハンドセットに提供するプロセスは、フォールト・トレラントである必要がある。しかしながら、これらの装置は、様々な制約を有しており、フォールト・トレラントな更新動作の実現は、容易なものではなく、関連する諸動作の設計及び管理において多くの配慮が要求されることになる。
【０００５】
このような従来の伝統的な方法に伴う更なる制約や欠点については、これらのシステムと、図面を参照して以下の節において説明する本発明とを比較することにより、当業者に明らかとなろう。
【課題を解決するための手段】
【０００６】
本発明の態様においては、第１コードバージョンを含む複数のバンクを具備する不揮発性メモリを有する電子装置を更新する方法が提供され、この方法は、複数のバンクの１つを選択する段階と、選択したバンクを作業バンクに複製する段階と、選択したバンクをバックアップバンクに複写する段階と、作業バンクの内容を第１コードバージョンから第２コードバージョンに変換する段階と、を有している。又、この方法は、変換済みの作業バンクを、選択したバンクに移動する段階と、サイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも１つを使用して、複製、複写、及び変換の各段階の中の少なくとも１つの正常な完了を検証する段階と、を更に有している。又、この方法は、複数のバンクのそれぞれの更新が完了するまで、以上の動作を反復可能である。本発明の一実施例における変換段階は、少なくとも１つの更新命令を使用可能であり、作業バンクは、揮発性メモリ内に配置可能であり、選択段階は、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、チェックサム、及び指定されたバンク順序の中の少なくとも１つを使用可能である。選択段階は、少なくともリセット又は電源投入のいずれかが行われた後に更新を再開する際に、サイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも１つを使用可能であり、選択段階は、すべてのその他の時点においては、指定されたバンク順序を使用可能である。
【０００７】
本発明による一実施例は、更新パッケージを受信する段階を更に有することができる。更新パッケージは、少なくとも１つの更新命令を有することが可能であり、更新パッケージは、バンク順序仕様を有することもできる。受信段階は、公衆網を使用して実現可能であり、受信段階は、無線網を使用して実現することも可能である。本発明の一実施例は、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも１つを使用して更新の進捗状況を判定する段階を更に有することができる。又、変換段階は、選択したバンク以外の複数のバンクの中の少なくとも１つの少なくとも一部を使用可能である。
【０００８】
本発明の更なる態様によれば、第１コードバージョンを含む複数のバンクを具備する不揮発性メモリを有する電子装置を第１コードバージョンから第２コードバージョンに更新する方法が提供され、この方法は、少なくとも１つの更新命令を有する更新パッケージを受信する段階と、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、チェックサム、及び指定されたバンク順序の中の少なくとも１つを使用して複数のバンクの中の１つを選択する段階と、を有している。又、この方法は、少なくとも１つの更新命令を使用して、選択したバンクを第１コードバージョンから第２コードバージョンに変換する段階と、１つのバンク内における受信、選択、及び変換の各段階を、複数のバンクのそれぞれの更新が完了するまで、バンクごとに反復する段階と、をも有することができる。選択段階においては、リセットと電源投入の少なくともいずれかが行われた後に更新を再開する際に、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも１つを使用可能であり、選択段階においては、すべてのその他の時点においては、指定されたバンク順序を使用可能である。本発明の一実施例における変換段階は、選択したバンクを作業バンクに複製する段階と、選択したバンクをバックアップバンクに複写する段階と、作業バンクの内容を第１コードバージョンから第２コードバージョンに変換する段階と、この作業バンクの変換済みの内容を、選択したバンクに移動する段階と、を更に有することができる。又、作業バンクは、揮発性メモリ内に配置可能であり、変換段階においては、選択したバンク以外の複数のバンクの中の少なくとも１つの少なくとも一部を使用可能である。
【０００９】
本発明による一実施例においては、更新パッケージは、バンク順序仕様を有することが可能であり、非連続的なバンク順序によってバンクを選択可能である。又、受信段階は、公衆網を介するものであってよく、受信段階は、無線網を介したものであってもよい。
【００１０】
本発明の更なる態様によれば、第１コードバージョンを含む複数のバンクを具備する不揮発性のメモリを有する電子装置を第１コードバージョンから第２コードバージョンに更新する方法が提供され、この方法は、公衆網を使用して少なくとも１つの更新命令を有する更新パッケージを受信する段階と、複数のバンクの中の１つを選択する段階と、少なくとも１つの命令を使用して、選択したバンクを第１コードバージョンから第２コードバージョンに変換する段階と、を有することができる。そして、この方法は、１つのバンク内における受信、選択、及び変換の各段階を、複数のバンクのそれぞれの更新が完了するまで、バンクごとに反復可能である。
【００１１】
本発明による一実施例においては、変換段階は、選択したバンクを作業バンクに複製する段階と、選択したバンクをバックアップバンクに複写する段階と、作業バンクの内容を第１コードバージョンから第２コードバージョンに変換する段階と、作業バンクの変換済みの内容を、選択したバンクに移動する段階と、を更に有することができる。作業バンクは、揮発性メモリ内に配置可能であり、変換段階においては、複数のバンクの中のその他の少なくとも１つのものに加え、以前に更新されたバンクのオリジナル及び変換済みの内容をも使用可能である。又、変換段階においては、選択したバンク以外の複数のバンクの中の少なくとも１つの少なくとも一部を使用可能である。選択段階は、リセットと電源投入の少なくともいずれかが行われた後に更新を再開する際に、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の少なくとも１つを使用可能であり、選択段階は、すべてのその他の時点においては、指定されたバンク順序を使用可能である。更新パッケージは、バンク順序仕様を有することが可能であり、複数のバンクの中の１つは、非連続的なバンク順序によって選択可能である。
【００１２】
本発明の更に別の態様によれば、複数のバンクを具備するメモリを有する電子装置を更新する更新パッケージが提供され、この更新パッケージは、差分情報と、更新後署名（ｐｏｓｔ−ｕｐｄａｔｅ  ｓｉｇｎａｔｕｒｅ）のコレクションとを有することが可能であり、それぞれの更新後署名は、更新対象である複数のバンクの中の１つに対応している。更新後署名のコレクションの中の少なくとも１つは、中断後に更新を再開する際に使用可能であり、これは、少なくともサイクリックリダンダンシチェック、メッセージダイジェスト、デジタル署名、及びチェックサムの中の１つであってよい。
【００１３】
本発明のこれら及びその他の特徴並びに利点については、添付図面と共に、本発明の以下の詳細な説明を参照することによって理解することができよう。尚、添付の図面においては、類似の参照符号によって類似の部分を示している。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明によるファームウェア／ソフトウェアの更新を助長するフォールト・トレラントな更新エージェント１１７を具備する模範的なモバイルハンドセット１０７のブロックダイアグラムを示している。この図１に示されているように、モバイルハンドセット１０７は、通信リンク１４３を介してサーバ１０９から更新パッケージをダウンロードする能力を有している。サーバ１０９は、更新パッケージリポジトリ１３７内に複数の更新パッケージを保持し、これらを提供する。モバイルハンドセット１０７は、不揮発性メモリ１１１、揮発性メモリ領域１３５、及びサーバ１０９などの外部システムと通信リンク１４３を介してやり取りするための通信手段（図示されてはいない）を有している。不揮発性メモリ１１１は、例えば、フラッシュ（ＦＬＡＳＨ）メモリから構成可能であり、これを使用して、モバイルハンドセット１０７のファームウェア／ソフトウェアを保存することができる。揮発性メモリ領域１３５は、例えば、ランダムアクセスメモリ（ＲＡＭ）から構成可能であり、この内部において、プログラムの実行、プログラム変数の保存、コードセグメントの変更などを行うことができる。尚、以下の説明においては、「オリジナル」及び「古い」という用語は、現在の更新動作の実行よりも以前の時点におけるメモリのバンク／ブロックの内容を意味するものとする。
【００１５】
本発明による一実施例においては、フォールト・トレラントな更新エージェント１１７は、揮発性メモリ領域１３５内の作業バンク１２５と不揮発性メモリ１１１内のバックアップバンク１２７を使用して、フォールト・トレラントな更新プロセスを実装することができる。このフォールト・トレラントな更新プロセスによれば、例えば、停電やその他の一時的な異常などによって中断が発生した場合にも、ファームウェア／ソフトウェアの更新の最中（並びに、この後）に、モバイルハンドセット１０７などのモバイルハンドセットの動作を安定した／回復可能な状態に維持することができる。
【００１６】
本発明の一実施例においては、モバイルハンドセット１０７の電源投入又はリブートの際に、不揮発性メモリ１１１内のブートストラップコード１１５を実行可能である。そして、このブートストラップコード１１５が、モバイルハンドセット１０７内のファームウェア／ソフトウェアを更新するための更新パッケージが利用可能であると判定した場合に、更新エージェント１１７に制御が渡されることになる。更新エージェント１１７は、モバイルハンドセット１０７内（特に、不揮発性メモリ１１１のバンク１（１１９）〜バンクＮ（１３１）内）のファームウェア／ソフトウェアを更新することができる。尚、このブートストラップコード１１５及び更新エージェント１１７が占有しているメモリ空間は、通常、更新動作の対象区域外と見なされているが、本発明の一実施例においては、更新エージェント１１７によって円滑に実行される更新プロセスを使用することにより、更新エージェント自体の特定のサブコンポーネントを更新することも可能である。
【００１７】
本発明の一実施例においては、モバイルハンドセット１０７は、サーバ１０９から更新パッケージをダウンロードし、モバイルハンドセット１０７の不揮発性メモリ１１１内に保存されているファームウェア又はソフトウェアを更新することができる。特定の更新パッケージの受信を完了すると、モバイルハンドセット１０７は、その更新パッケージ一式を不揮発性メモリ領域１１１内に転送可能である。尚、このように更新パッケージを不揮発性領域１１１に複写することによって、一定レベルのフォールト・トレランスを実現しており、この結果、モバイルハンドセット１０７は、サーバ１０９と更に通信することなしに、後続の更新動作を実行可能である。そして、この更新パッケージの不揮発性メモリ１１１内への保存が完了すると、状態テーブルエントリを変更して、モバイルハンドセット１０７内における更新パッケージの正常な受信と安全な保存を反映させることができる。
【００１８】
本発明の一実施例における更新エージェント１１７は、それぞれ、揮発性メモリ１３５及び不揮発性メモリ領域１１１内に、「作業」バンク１２５と「バックアップ」バンク１２７用の空間を割り当てることができる。更新エージェント１１７は、これらの作業バンク１２５及びバックアップバンク１２７を使用することにより、不揮発性メモリ１１１内に保存されている既存のコードバージョンのコンポーネントに対して操作を実行可能であり、この際には、コードセクションの更新済みの内容の演算が完了し、これが正しいと検証されるまで、オリジナルのコードは変更されない。この結果、予期しない処理の誤りや電源の中断によってオリジナルコードが破壊されないようにしている。本発明の一実施例においては、更新エージェント１１７は、作業バンクポインタを初期化することにより、バンクの更新動作が行われ揮発性メモリ１３５内の場所（即ち、「作業バンク」）を指示することができる。又、バックアップバンクポインタを初期化することにより、更新対象のバンクの複写を保持している不揮発性メモリ１１１内の場所（即ち、「バックアップバンク」）を指示することも可能である。このバックアップバンクの存在は、電源の中断やリブート又はリセット動作の際のフォールト・トレランスの確保に有用である。
【００１９】
本発明の一実施例における更新エージェント１１７は、バンク順序仕様書を使用可能である。このバンク順序仕様書は、更新パッケージを生成する際に決定可能であり、対応する更新パッケージの一部として、更新パッケージリポジトリ１３７から受信可能である。更新エージェント１１７は、このバンク順序仕様書を使用することにより、必要に応じて、不揮発性メモリ１１１内のバンク１（１１９）〜バンクＮ（１３１）などの様々なメモリバンクの更新の順序を管理することができる。このバンク順序仕様書を使用してバンクの更新順序を制御することにより、更新パッケージのサイズを最適化することができる。更新エージェント１１７は、バンク順序仕様書に従って、バンク１（１１９）〜バンクＮ（１３１）のそれぞれを作業バンク１２５に複写可能であり、この結果、これらのバンクを変更又は更新した後に、不揮発性メモリ領域１１１内に書き戻すことができる。
【００２０】
本発明による一実施例においては、更新エージェント１１７は、当初、バンクＪ（１２３）などの不揮発性メモリ１１１の選択したバンクの内容を作業バンク１２５に複写することができる。次いで、更新エージェントは、その更新パッケージ内に含まれている更新命令によって指定されているように作業バンク１２５を更新し、この更新済みの作業バンク１２５をバックアップバンク１２７に複写することができる。尚、この更新済みの作業バンク１２５のバックアップバンク１２７への複写は、フォールト・トレランスを提供するべく実行されるものである。次いで、更新エージェント１１７は、作業バンク１２５を、バンクＪ（１２３）に複写してバンクＪ（１２３）を更新することができる。又、更新エージェント１１７は、不揮発性メモリ１１１と揮発性メモリ１３５間におけるコードセグメント又はデータの複写後に、検証段階を実行することも可能である。このような実施例における検証は、ＭＤ５チェックサム、ＣＲＣ、又は類似の算出値の演算と関係するものであってよく、次いで、この算出した検証値を、更新パッケージ内に含まれている更新対象のバンク用の既定値と比較することができる。
【００２１】
本発明の別の実施例においては、更新エージェント１１７は、まず、バンクＪ（１２３）などの不揮発性メモリ１１１の選択したバンクの内容を作業バンク１２５内に複写することができる。又、更新エージェント１１７は、バンクＪ（１２３）の内容をバックアップバンク１２７内へも複写可能である。そして、更新エージェント１１７は、更新パッケージリポジトリ１３７から受信した更新パッケージ内に含まれている更新命令の適切な部分に従って作業バンク１２５を更新し、この作業バンク１２５の更新済みの内容をバンクＪ（１２３）内に複写してバンクＪ（１２３）を更新することができる。尚、作業バンク１２５の更新済みの内容をバンクＪ（１２３）内に正常に複写する前に、プログラム障害やその他の中断が発生した場合には、更新エージェント１１７は、その中断された更新プロセスを継続するべく、バックアップバンク１２７からバンクＪ（１２３）のオリジナルの内容を取得可能である。
【００２２】
本発明の更に別の実施例においては、更新エージェント１１７は、まず、バンクＪ（１２３）などの不揮発性メモリの選択したバンクの内容を作業バンク１２５内に複写することができる。次いで、更新エージェント１１７は、更新パッケージリポジトリ１３７から受信した更新パッケージの更新命令の適切な部分に従って作業バンク１２５を更新可能である。次いで、更新エージェント１１７は、バンクＪ（１２３）の内容をバックアップバンク１２７内に複写可能である。そして、最後に、更新エージェント１１７は、作業バンク１２５の更新済みの内容をバンクＪ（１２３）内に複写してバンクＪ（１２３）を更新することができる。尚、作業バンク１２５の更新済みの内容をバンクＪ（１２３）内に正常に複写する前に、プログラム障害やその他の中断が発生した場合には、更新エージェント１１７は、バックアップバンク１２７からオリジナルバンクＪ（１２３）の内容を取得することにより、中断された更新プロセスを継続することができる。
【００２３】
本発明の更なる実施例においては、更新エージェント１１７は、バックアップバンク１２７を使用することにより、以前に更新されたバンクのオリジナルの内容を保存することができる。この結果、更新命令は、現在のバンクを更新する際に、以前に更新されたバンクのオリジナルの内容を使用できるようになる。例えば、更新対象である現在のバンクがバンクＪ（１２３）である場合に、本発明の一実施例においては、このバンクＪ（１２３）を更新する際に、更新済みのバンクＪ−１（１２１）の内容を使用可能である。そして、更には、更新プロセスにおいて使用するべく、バンクＪ−１（１２１）の古いバージョン（即ち、オリジナルの内容）をバックアップバンク１２７内に利用可能な状態で保持しておくことも可能である。このような実施例においては、更新エージェント１１７は、バンクＪ（１２３）の内容を作業バンク１２５内に複写して、更新パッケージリポジトリ１３７から受信した更新パッケージ内に含まれている更新命令の一部によって指定されているように作業バンク１２５を更新可能であるが、この更新パッケージ内の更新命令は、バンクＪ−１（１２１）の更新済みの内容に加え、バックアップバンク１２７内に利用可能な状態で保持されているバンクＪ−１（１２１）のオリジナルの内容をも使用可能である。そして、作業バンク１２５の更新後に、バンクＪ（１２３）の内容をバックアップバンク１２７に複写して、バックアップバンク１２７内のバンクＪ−１（１２１）のオリジナルの内容を置換可能である。次いで、バンクＪ（１２３）の更新済みの内容を作業バンク１５からバンクＪ（１２３）に複写することができる。この結果、バンクＪ（１２３）の更新の際に、バンクＪ（１２３）のオリジナルの内容、バンク１（１１９）〜バンクＪ−１（１２１）の更新済みのバンクの内容、バンクＪ−１（１２１）のオリジナルの内容（バックアップバンク１２７内に保存されているもの）、及びバンクＪ＋１（図示されてはいない）〜バンクＮ（１３１）のオリジナルの内容を更新プロセスにおいて利用することができる。特に、バックアップバンク１２７の内容として保存されているバンクＪ−１（１２１）のオリジナルの内容を利用できることにより、更新プロセスにおいて使用する「コンテキスト（ｃｏｎｔｅｘｔ）」あるいは「参照の局所性（ｌｏｃａｌｉｔｙ  ｏｆ  ｒｅｆｅｒｅｎｃｅ）」を高めることになる。本発明のこの実施例によれば、更新エージェント１１７によって、対応する短縮されたダウンロード時間を有する小型の更新パッケージを生成可能であるのみならず、更新エージェント１１７を更に効果的なものにすることができる。
【００２４】
本発明の更に別の実施例においては、更新エージェント１１７は、前述のフォールト・トレラントな更新方法の中の１つを実行する前に、バンク１（１１９）〜バンクＮ（１３１）の内容を事前処理することができる。このような事前処理は、更新パッケージのサイズを低減するべく、更新パッケージの生成時点と、更新エージェントの両方において、使用可能である。この事前処理技法には、例えば、オリジナル及び更新済みのバンク内の一致要素を整列するべく、１つ又は複数のバンクの内容の再配置又は再順序付けと、１つ又は複数のバンク内における要素のシフトを含むことができる。
【００２５】
オリジナルのバンク（バンク１（１１９）〜バンクＮ（１３１））と関連して作業バンク１２５及びバックアップバンク１２７を使用することにより、バンク１（１１９）〜バンクＮ（１３１）を更新する際に、更新エージェント１１７は、フォールト・トレランスを提供可能である。尚、以上においては、ＲＡＭ及びＦＬＡＳＨメモリを有する装置の使用と関連して、本発明の実施例について説明しているが、本発明は、ＦＬＡＳＨが読み取り、書き込み、及び実行可能なものである場合には、ＦＬＡＳＨのみを含む装置に対しても容易に適合可能である。又、本発明による一実施例においては、その他のタイプの不揮発性メモリを使用することも可能である。
【００２６】
フォールト・トレラントな更新の実行を実現するべく、更新サーバ１０９上に保存されているそれぞれの更新パッケージには、更新対象である不揮発性メモリ１１１のそれぞれのバンクごとの既定の検証情報を含むことができる。この既定の検証情報は、正常な更新後のそれぞれの対応するバンクごとのＣＲＣ、ＭＤ５チェックサム、又は類似の算出値の予測値を有することができる。本発明の一実施例においては、このような既定の検証情報を使用することにより、起動後又は更新プロセスの中断の発生後に、前述の更新方法を再開するポイントを判定することができる。例えば、バンクの更新を演算中に図１のモバイルハンドセット１０７に対する電源供給が消失又は中断された場合には、作業バンク１２５は、破壊される可能性が高い。更新パッケージ内に含まれている検証情報を使用することにより、この種の破壊が発生したかどうかを判定可能である。そして、作業バンクの内容の破壊が検出された場合には、関連するオリジナルのバンクを使用して、更新プロセスを再開することにより、作業バンク内におけるオリジナルバンクの更新済みの複写の生成を完了させることができる。一方、作業バンク１２５の正常な更新の後に、現在のバンクの更新が中断された場合には、更新パッケージ内に含まれている検証情報を使用することにより、この種の破壊が発生したことを検出可能である。そして、現在のバンクの内容の破壊が検出された場合には、作業バンク１２５の内容（有効な場合）、又は、バックアップバンク１２７の内容を使用することにより、現在のバンクの更新済みの内容を演算することができる。
【００２７】
図２は、本発明による、フォールト・トレラントな更新エージェントを呼出してファームウェア／ソフトウェアの更新動作を実行する図１のモバイルハンドセット１０７などのモバイルハンドセットの模範的な起動方法を示すフローチャートである。この処理は、モバイルハンドセットが電源投入又はリブートされた際に、始まっている（ブロック２０７）。次いで、初期化又はブートシーケンスが実行される（ブロック２０９）。次いで、モバイルハンドセットのファームウェア／ソフトウェアの更新を実行するかどうかの判定を実行する（ブロック２１１）。例えば、一実施例においては、状態テーブルにアクセスし、この状態テーブル内のフラグが、以前にダウンロードされ、モバイルハンドセット内に利用可能な状態で保持されている更新パッケージを使用してファームウェア／ソフトウェアを更新することが必要であることを示しているかどうかを判定可能である。
【００２８】
そして、更新が不要であると判定された場合には、モバイルハンドセットの通常の起動手順を実行し（ブロック２２５）、この起動プロセスは終了することになる（ブロック２２１）。一方、更新が必要であると判定された場合には、フォールト・トレラントな更新エージェントが、更新プロセスを再開するべきポイントを判定する（ブロック２１３）。例えば、このポイントは、新規に開始された更新動作の場合には、開始点に位置可能であり、以前に起動され、中断されていた更新動作の場合には、不揮発性メモリ内の特定のバンクに位置することになる。次いで、更新エージェントは、フォールト・トレラントな更新プロセスに関係する様々な動作を実行する（ブロック２１５）。そして、最後に、更新エージェントは、モバイルハンドセットのリブートを起動する（ブロック２２３）。
【００２９】
図３は、本発明による、更新プロセスにおいて、作業バンク、バックアップバンク、及び複数の更新可能なオリジナルバンクを使用する図１のモバイルハンドセット１０７などのモバイルハンドセットのフォールト・トレラントな更新の模範的な実行方法を示すフローチャートである。モバイルハンドセットがファームウェア／ソフトウェアの更新の必要性を検出した際に、このプロセスは始まり、更新を開始又は再開することを要するメモリ内のポイントを判定する（ブロック３０７）。例えば、本発明の一実施例においては、更新処理を開始又は再開するべきポイントは、更新対象である不揮発性メモリのそれぞれのバンクごとにＣＲＣ値を算出する検証プロセスを使用して判定可能である。次いで、それぞれのバンクごとに算出した値を、ファームウェア／ソフトウェアを含む更新パッケージ内に提供されているＣＲＣ値のリスト中の対応する事前に算出されている値と比較する。この比較は、算出したＣＲＣ値が、そのバンク用のリスト中の値と一致しない不揮発性メモリのバンクに遭遇するまで、リスト内において、バンクごとに継続されることになる。この不一致は、異常又は破壊を示しており、従って、更新動作を開始又は再開するべきポイントを示している。
【００３０】
次いで、作業バンク及びバックアップバンクのアドレス又は場所を判定する（ブロック３０９）。一実施例においては、これらのバンクの場所及び長さ情報は、更新エージェントが維持している（又は、アクセス可能な）状態テーブル又は配置（コンフィギュレーション）構成内に保存されている関連するポインタによって提供可能である。次いで、更新エージェントは、更新パッケージ内に提供されている命令及びデータを使用して更新するべく、オリジナルのバンクを作業バンクに複写する（ブロック３１１）。次いで、この作業バンクを更新エージェントによって更新し、ＣＲＣ値を選択的に算出して、更新プロセスの成否を検証する（ブロック３１３）。次いで、これに続く更新済みの作業バンクのオリジナルバンクへの複写が、停電やその他の理由によって失敗した際に、データソースを提供するべく、この更新済みの内容を有する作業バンクをバックアップバンクに複写する（ブロック３１５）。
【００３１】
次いで、作業バンクをオリジナルバンクに複写する（ブロック３１７）。尚、このプロセスが、正常に完了する前に中断すると、後続の電源の再投入やリブート際に、バックアップバンクの内容が有効であると判定され、オリジナルバンクへのバックアップバンクの複写を起動することによって更新プロセスが継続されることになる。
【００３２】
次いで、ファームウェア／ソフトウェアの更新におけるすべてのバンクの更新が完了しているかどうかを判定する（ブロック３１９）。そして、更新プロセスが完了している場合には、更新プロセスは終了する（ブロック３２３）。一方、更新プロセスが、まだ完了していない場合には、次のバンクに進むための手順を実行する（ブロック３２１）。次のバンクは、例えば、更新パッケージ内のバンク順序仕様書によって指定可能である。そして、次のバンクの内容を更新するべく、次のバンクのオリジナルの内容を作業バンクに複写することによって処理を継続することになる（ブロック３１１）。
【００３３】
図４は、本発明による、バックアップバンクを使用して現在のバンクのオリジナルの内容の複写を保持する図１のモバイルハンドセット１０７などのモバイルハンドセットのフォールト・トレラントな更新の別の模範的な実行方法を示すフローチャートである。この図４に示されている方法においては、モバイルハンドセットが、ファームウェア／ソフトウェアの更新の必要性を検出した際に、プロセスが始まり、更新を開始又は再開することを要するメモリ内のポイントを判定する（ブロック４０７）。例えば、本発明の一実施例においては、更新プロセスを開始又は再開するべきポイントは、図３について前述した検証プロセスを使用して判定可能である。
【００３４】
次に、作業バンク及びバックアップバンクのアドレス又は場所を判定する（ブロック４０９）。本発明の一実施例においては、これらのバンクの場所及び長さ情報は、更新エージェントが維持している（又は、アクセス可能な）状態テーブル又は配置（コンフィギュレーション）構成内に保存されている関連ポインタによって提供可能である。次いで、更新エージェントは、更新パッケージ内に提供されている命令及びデータを使用して更新するべく、現在のオリジナルのバンクを作業バンクに複写する（ブロック４１１）。次いで、更新エージェントによって作業バンクを更新し、ＣＲＣ値（又は、ＭＤ５チェックサムなど）を算出して、更新プロセスの成否を検証する（ブロック４１３）。
【００３５】
次いで、これに続く更新済みの作業バンクのオリジナルバンクへの複写が、停電やその他の理由のために失敗した際に、データソースを提供するべく、現在のバンク（「オリジナルバンク」とも呼ばれる）のオリジナルの内容をバックアップバンクに複写する（ブロック４１５）。次いで、作業バンクをオリジナルのバンクに複写する（ブロック４１７）。尚、このプロセスが、正常に完了する前に中断すると、後続の電源再投入又はリブートの際に、バックアップバンク内の内容が、オリジナルバンクの有効なオリジナルの内容であると判定され、バックアップバンクの作業バンクへの複写を起動することによって更新プロセスが継続されることになる。
【００３６】
次いで、本プロセスは、すべてのバンクの更新が完了しているかどうかを判定する（ブロック４１９）。そして、更新プロセスが完了している場合には、更新プロセスは終了することになる（ブロック４２３）。一方、更新プロセスが完了していない場合には、次のバンクに進むための手順を実行する（ブロック４２１）。次のバンクは、例えば、ファームウェア／ソフトウェア更新を含む更新パッケージ内のバンク順序仕様書によって指定可能である。次いで、この処理は、次のオリジナルのバンクにおいて継続され、その更新プロセスを開始するべく、その内容が作業バンクに複写されることになる（ブロック４１１）。
【００３７】
図５は、本発明による、作業バンクの更新よりも先に、オリジナルバンクからバックアップバンクへの複写動作を実行する図１のモバイルハンドセット１０７などのモバイルハンドセットのフォールト・トレラントな更新の別の模範的な実行方法を示すフローチャートである。この実施例においては、オリジナルバンクをバックアップバンク内に複写した後に作業バンクが更新されるように、図４のブロック４１３とブロック４１５の動作が置き換えられている。即ち、更新プロセスの開始後に（ブロック５０７）、オリジナルバンクを、作業バンクと（ブロック５１１）、バックアップバンクとに（ブロック５１３）、複写する。次いで、作業バンクを更新し（ブロック５１５）、更新済みの作業バンクをオリジナルバンク内に複写する（ブロック５１７）。この時点以降の処理は、図４に示されているものと同様である。
【００３８】
図６は、本発明による、所与のバンクの更新動作の際に、バンク順序において先行するバンクのオリジナル並びに更新済みの内容を使用する図１のモバイルハンドセット１０７などのモバイルハンドセットのフォールト・トレラントな更新の別の模範的な実行方法を示すフローチャートである。このプロセスは、モバイルハンドセットが、ファームウェア／ソフトウェアの更新の必要性を検出した際に始まり、更新を開始又は再開することを要するメモリ内のポイントを判定する（ブロック６０７）。次いで、作業バンクとバックアップバンクのアドレス又は場所を判定する（ブロック６０９）。次いで、更新エージェントは、更新するべく、オリジナルバンクを作業バンクに複写する（ブロック６１１）。尚、この更新においては、バックアップバンク及び図１のバンク１（１１９）〜バンクＪ（１２３）などのその他のバンクの内容に加え、更新パッケージ内に提供されている更新命令及びデータを使用可能である。又、バンク１（１１９）〜バンクＪ（１２３）などのバンクは、更新パッケージ内に指定されているバンク順序に応じて、事前に更新しておくことも可能性があり、或いは、オリジナルの内容を保持していてもよい。
【００３９】
次に、更新エージェントは、バックアップバンクの内容を使用して、作業バンクを更新する（ブロック６１３）。本プロセスのこの時点において、バックアップバンクは、バンク順序において先行するバンクのオリジナルの内容の複写を含んでいる。即ち、このバックアップバンクの内容は、ファームウェア／ソフトウェアの新バージョンの導入の際に、オリジナルバンクから移動されたコードセグメント又はデータを含んでいると期待されるため、高められた「参照の局所性（ｌｏｃａｌｉｔｙ  ｏｆ  ｒｅｆｅｒｅｎｃｅ）」を提供している。そして、作業バンクの更新が完了した後に、ＣＲＣ値（又は、ＭＤ５チェックサムなど）を算出し、そのバンクに対する更新動作の結果を検証する。
【００４０】
次いで、これに続く更新済みの作業バンクからオリジナルバンクへの複写が、停電又はその他の理由のために失敗した際に、データソースを提供するべく、現在のバンク（これは、「オリジナルバンク」とも呼ばれる）のオリジナルの内容をバックアップバンクに複写する（ブロック６１５）。尚、このオリジナルバンクの内容は、バンク順序における次のバンクを更新する際に、使用可能である。次いで、更新済みの作業バンクをオリジナルのバンクに複写する（ブロック６１７）。そして、このプロセスが、正常に完了する前に中断した場合には、後続の電源の再投入又はリブートの際に、更新が進行中であって、バックアップバンクの内容は、オリジナルバンクの有効なオリジナルの内容であると判定されることになる。そして、バックアップバンクを作業バンクに複写することにより、更新プロセスが継続されることになる。
【００４１】
次に、更新エージェントは、更新プロセスが完了すると共に、すべてのバンクの更新が完了しているかどうかを判定する（ブロック６１９）。そして、バンク順序内のすべてのバンクが完了している場合には、更新プロセスは終了することになる（ブロック６２３）。一方、更新プロセスが完了していないと判定された場合には、処理は、次のバンクに進む（ブロック６２１）。前述のように、次のバンクは、更新パッケージ内に含まれているバンク順序仕様書によって指定可能である。そして、処理は、バンク順序における次のオリジナルバンクを作業バンクに複写し、その内容を更新することによって、継続されることになる（ブロック６１１）。
【００４２】
以上のように、更新エージェントは、作業バンク、バックアップバンク、及び複数のオリジナルバンクの中の１つを使用することにより、ファームウェア／ソフトウェアのフォールト・トレラントな更新を助長する。一実施例においては、更新済みの作業バンクをオリジナルのバンクに書き込んでいる際に、バックアップバンクが、オリジナルバンクのバックアップ複写を保存している。別の実施例においては、バックアップバンクは、更新済みの作業バンクの内容のバックアップ複写を保持している。更に別の実施例においては、バックアップバンクは、オリジナルバンクのバックアップ複写と、更新済みの作業バンクのバックアップ複写の両方を保存している。
【００４３】
以上、特定の実施例を参照して、本発明について説明したが、当業者であれば、本発明の範囲を逸脱することなしに、様々な変更を加えたり、同等物によって置換可能であることを理解するであろう。又、その範囲を逸脱することなしに、多くの変更を加えることにより、特定の状況又は材料を本発明の開示内容に適合させることも可能である。従って、本発明は、開示した特定の実施例に限定されるものではなく、本発明には、添付の請求項の範囲に属するすべての実施例が含まれる。
【図面の簡単な説明】
【００４４】
【図１】本発明による、ファームウェア／ソフトウェアの更新を助長するフォールト・トレラントな更新エージェントを具備する模範的なモバイルハンドセットのブロックダイアグラムを示す図である。
【図２】本発明による、フォールト・トレラントな更新エージェントを呼出してファームウェア／ソフトウェアの更新動作を実行する図１のモバイルハンドセットなどのモバイルハンドセットの模範的な起動方法を示すフローチャートである。
【図３】本発明による、更新プロセスにおいて、作業バンク、バックアップバンク、及び複数の更新可能なオリジナルバンクを使用する図１のモバイルハンドセットなどのモバイルハンドセットのフォールト・トレラントな更新の模範的な実行方法を示すフローチャートである。
【図４】本発明による、バックアップバンクを使用して現在のバンクのオリジナルの内容の複写を保持する図１のモバイルハンドセットなどのモバイルハンドセットのフォールト・トレラントな更新の別の模範的な実行方法を示すフローチャートである。
【図５】本発明による、作業バンクの更新よりも先に、オリジナルバンクからバックアップバンクへの複写動作を実行する図１のモバイルハンドセットなどのモバイルハンドセットのフォールト・トレラントな更新の別の模範的な実行方法を示すフローチャートである。
【図６】本発明による、所与のバンクの更新動作の際に、バンク順序において先行するバンクのオリジナル及び更新済みの内容を使用する図１のモバイルハンドセットなどのモバイルハンドセットのフォールト・トレラントな更新の更に別の模範的な実行方法を示すフローチャートである。
【図１】
2006518059.tif 000003
【図２】
2006518059.tif 000004
【図３】
2006518059.tif 000005
【図４】
2006518059.tif 000006
【図５】
2006518059.tif 000007
【図６】
2006518059.tif 000008