(57)【要約】本発明は、ソフトウェアをアップデートする方法、装置、および、システムを提供する。ネットワークに接続された少なくとも１つの電子機器に存在するソフトウェアを遠隔からアップデートするためのシステム。電子機器は、少なくとも２つのパーティションに分割された不揮発性書き替え可能記憶装置を有し、一方のパーティションはコアファームウェアを含み、他方のパーティションは補助ソフトウェアを含む。機器においてアップデートが受信されると、アップデートされたコアファームウェアが、書き替え可能記憶装置の補助ソフトウェアを含むパーティションに書き込まれて上書きされる。これが完了し、かつ、うまくなされたことが確認されたら、記憶装置に記憶された以前のバージョンのコアファームウェアは、機器がそれを実行できないようにされる。次に、アップデートされた補助ソフトウェアが、古いバージョンのコアファームウェアに書き込まれて上書きされる。この書き込みが完了すると、機器は、アップデートされたソフトウェアを実行するために、その機器をリブートする適切な時間を決定する。別の実施形態においては、機器の現在のコアファームウェアは、それが存在するパーティションから他方のパーティションにコピーされて、そこに記憶された補助ソフトウェアに上書きされる。機器をアップデートするために受信された新しいコアファームウェアは、第１のパーティションに上書きされ、アップグレードに失敗した場合には、コピーされた古いコアファームウェアが存在し、そして、第１のパーティションをうまくアップデートできれば、補助ソフトウェアが、第２のパーティションに書き込まれて、コピーされた古いコアファームウェアに上書きされる。このように、機器の通常動作中、パーティション内のコアファームウェアおよび補助ソフトウェアの位置が、維持される。
2005502971.tif 000002
【特許請求の範囲】
【請求項１】
複数の遠隔機器内のソフトウェアをアップデートする方法であって、
前記遠隔機器のそれぞれが、アップデートされたバージョンのソフトウェアおよび以前のバージョンのソフトウェアの両方を記憶するには不十分な容量の不揮発性書き替え可能記憶装置を有し、
前記遠隔機器のそれぞれが、ネットワークに接続され、
（１）少なくともコアファームウェアアップデートを含むアップデートをアップデートサーバーに配置するステップと、
（２）前記ネットワークに接続されたアップデートされるべき機器を識別するステップと、
（３）前記アップデートを前記アップデートサーバーから前記ネットワークを介して前記識別された機器に転送し、前記識別された機器のそれぞれが、前記アップデートが正しく受信されたことを検査し、受信した前記アップデートに誤りのある部分があれば、前記部分の再送を要求し、前記部分を受信するステップと、
（４）記憶装置に存在する以前のバージョンのコアファームウェアに上書きしないように、前記受信されたアップデートのコアファームウェア部分を不揮発性書き替え可能記憶装置に書き込むステップと、
（５）前記記憶装置に書き込まれた前記受信されたアップデートのコアファームウェア部分を検査するステップと、
（６）前記検査されたアップデートコアファームウェアを、前記機器によって使用されるべき有効なコアファームウェアであるとみなし、前記以前のバージョンのコアファームウェアを、使用できないものであるとみなすステップと、
（７）前記アップデートされたソフトウェアをロードおよび実行するために、前記機器をリブートするステップと、
を含む方法。
【請求項２】
ステップ（３）とステップ（４）との間において、前記以前のバージョンのコアファームウェアが、前記記憶装置に記憶された補助ソフトウェア上にコピーされ、検査され、前記コピーを、前記機器によって使用されるべき有効なコアファームウェアであるとみなし、オリジナルの前記以前のバージョンのコアファームウェアを、使用できないものであるとみなす請求項１に記載の方法。
【請求項３】
前記アップデートが、アップデートされた補助ソフトウェアをさらに含み、前記補助ソフトウェアが、前記機器によって受信され、検査され、ステップ（６）とステップ（７）との間において、前記補助ソフトウェアアップデートが、前記使用できない以前のバージョンのコアファームウェアに上書きされる請求項２に記載の方法。
【請求項４】
前記アップデートが、アップデートされた補助ソフトウェアをさらに含み、前記補助ソフトウェアが、前記機器によって受信され、検査され、ステップ（６）とステップ（７）との間において、前記補助ソフトウェアアップデートが、前記使用できない以前のバージョンのコアファームウェアに上書きされる請求項１に記載の方法。
【請求項５】
ステップ（２）が、前記機器がアップデートされ得る状態にあるかどうかを前記機器が前記ネットワークに通知することをさらに備えた請求項１〜４の何れか一項に記載の方法。
【請求項６】
少なくとも１つの電子機器内に存在するコアファームウェアを通信リンクを介して遠隔からアップデートするためのシステムであって、
前記少なくとも１つの電子機器内に存在するメモリサブシステムと、
アップデートサーバーと、
を備え、
前記メモリサブシステムは、前記コアファームウェアが記憶される不揮発性書き替え可能メモリを含み、
前記不揮発性書き替え可能メモリは、補助ソフトウェアを記憶できるほどに十分に大きくはあるが、前記コアファームウェア、アップデートされたバージョンのコアファームウェア、および、前記補助ソフトウェアを同時に記憶できるほどには大きくなく、
前記コアファームウェアは、命令を含み、
前記命令は、以前のバージョンのコアファームウェアに上書きしないようにして、アップデートされたバージョンのコアファームウェアを前記不揮発性書き替え可能メモリに書き込み、前記以前のバージョンのコアファームウェアを使用できないようにし、
前記命令の結果、前記少なくとも１つの電子機器をリブートしたとき、前記アップデートされたバージョンのコアファームウェアがロード及び実行され、
前記アップデートサーバーは、前記アップデートされたバージョンのコアファームウェアを備えたアップデートを前記少なくとも１つの電子機器に通信リンクを介して転送するのに使用することのできる、
システム。
【請求項７】
前記コアファームウェアは命令を含み、
前記命令は、前記使用できないようにされた以前のバージョンのコアファームウェアの少なくとも一部には上書きするが、前記アップデートされたバージョンのコアファームウェアには上書きしないようにして、アップデートされたバージョンの補助ソフトウェアを不揮発性書き替え可能メモリに書き込む、
請求項６に記載のシステム。
【請求項８】
前記メモリサブシステムが命令を含む不揮発性メモリをさらに備え、
前記命令は、前記電子機器がリブートしたときに実行され、使用できないようにされていないバージョンのコアファームウェアを探索するために前記不揮発性書き替え可能メモリをスキャンし、前記バージョンのコアファームウェアをロードし、実行する、
請求項７に記載のシステム。
【請求項９】
少なくとも１つの電子機器内に存在するコアファームウェアおよび補助ソフトウェアを通信リンクを介して遠隔からアップデートするためのシステムであって、
前記コアファームウェアおよび前記補助ソフトウェアを記憶するための前記少なくとも１つの電子機器内に存在するメモリ装置と、
アップデートサーバーと、
を備え、
前記メモリ装置が、
前記コアファームウェアを含む第１のメモリ内容を第１のパーティションに記憶し、前記第１のパーティションに記憶できるほどに十分に小さく、前記補助ソフトウェアを含む第２のメモリ内容を、前記第１のメモリ内容を記憶できるほどに十分に大きい第２のパーティションに記憶する、不揮発性書き替え可能メモリと、
前記電子機器がリブートされたときに実行されるブートローディング命令が記憶された不揮発性メモリと、
を含み、
前記コアファームウェアは、アップデートクライアントを含み、
前記アップデートクライアントは、アップデートされたバージョンの第１のメモリ内容を受信すると、前記アップデートされたバージョンの第１のメモリ内容を前記第２のパーティションに書き込んで、前記第２のメモリ内容に上書きし、第１のパーティションに含まれる前記第１のメモリ内容を使用できないようにし、アップデートされたバージョンの第２のメモリ内容を受信すると、前記アップデートされたバージョンの第２のメモリ内容を前記第１のパーティションに書き込んで、前記使用できないようにされた第１のメモリ内容に上書きし、前記電子機器をリブートし、
前記ブートローディング命令は命令を含み、
前記命令は、実行されると、使用できないようにされていないバージョンの前記第１のメモリ内容を得るために、前記不揮発性書き替え可能メモリを探索し、前記バージョンの第１のメモリ内容が見つかれば、前記電子機器の制御をそのバージョンのメモリ内容に記憶されたコアファームウェアに切り換え、
前記アップデートサーバーは、前記アップデートされたバージョンの第１および第２のメモリ内容を備えたアップデートを前記少なくとも１つの電子機器に前記通信リンクを介して転送するのに使用することができる、
システム。
【請求項１０】
少なくとも１つの電子機器内に存在するコアファームウェアおよび補助ソフトウェアを通信リンクを介して遠隔からアップデートするためのシステムであって、
前記コアファームウェアおよび前記補助ソフトウェアを記憶するための前記少なくとも１つの電子機器内に存在するメモリ装置と、
アップデートサーバーと、
を備え、
前記メモリ装置が、
前記コアファームウェアを含む第１のメモリ内容を、第１のパーティションに記憶し、前記第１のパーティションに記憶できるほどに十分に小さく、前記補助ソフトウェアを含む第２のメモリ内容を、前記第１のメモリ内容を記憶できるほどに十分に大きい第２のパーティションに記憶する不揮発性書き替え可能メモリと、
前記電子機器がリブートされたときに実行されるブートローディング命令を記憶する不揮発性メモリと、
を含み、
前記コアファームウェアが、アップデートクライアントを含み、
前記アップデートクライアントは、アップデートされたバージョンの第１のメモリ内容を受信すると、前記第１のメモリ内容を前記第２のパーティションにコピーして、前記第２のメモリ内容に上書きし、前記アップデートされたバージョンの第１のメモリ内容を前記第１のパーティションに書き込んで、前記第１のメモリ内容に上書きし、アップデートされたバージョンの第２のメモリ内容を受信すると、前記アップデートされたバージョンの第２のメモリ内容を前記第２のパーティションに書き込み、前記電子機器をリブートし、
前記ブートローディング命令は、命令を含み、
前記命令は、実行されると、使用できないようにされていないバージョンの前記第１のメモリ内容を得るために、前記不揮発性書き替え可能メモリを探索し、前記バージョンの第１のメモリ内容が見つかれば、前記電子機器の制御をそのバージョンのメモリ内容に記憶されたコアファームウェアに切り換え、
前記アップデートサーバは、前記アップデートされたバージョンの第１および第２のメモリ内容を備えたアップデートを前記少なくとも１つの電子機器に前記通信リンクを介して転送するのに使用することのできる、
システム。
【請求項１１】
少なくとも１つの電子機器内に存在するコアファームウェアおよび補助ソフトウェアを通信リンクを介して遠隔からアップデートするためのシステムであって、
前記コアファームウェアおよび前記補助ソフトウェアを記憶するための前記少なくとも１つの電子機器内に存在するメモリ装置と、
アップデートサーバーと、
を備え、
前記メモリ装置は、
前記コアファームウェアを含む第１のメモリ内容を第１のパーティションに記憶し、前記第１のパーティションに記憶できるほどに十分に小さく、前記補助ソフトウェアを含む第２のメモリ内容を前記第１のメモリ内容を記憶できるほどに十分に大きい第２のパーティションに記憶する、不揮発性書き替え可能メモリと、
前記電子機器がリブートされたときに実行されるブートローディング命令を記憶した不揮発性メモリと、
を含み、
前記コアファームウェアはアップデートクライアントを含み、
前記アップデートクライアントは、アップデートされたバージョンの第１のメモリ内容を受信すると、可能であれば、前記第２のパーティションのサイズを縮小し、該縮小により、前記第２のパーティションが、前記アップデートされたバージョンの第１のメモリ内容をちょうど記憶できる大きさとなり、前記アップデートされたバージョンの第１のメモリ内容を前記第２のパーティションに書き込んで、前記第２のパーティションの以前の内容に上書きし、前記第１のパーティションに記憶された第１のメモリ内容のバージョンを使用できないようにし、アップデートされたバージョンの第２のメモリ内容を受信すると、可能であれば、前記第１のパーティションのサイズを増大させ、前記第２のパーティションに含まれない不揮発性書き替え可能メモリのすべての部分を含め、前記アップデートされたバージョンの第２のメモリ内容を前記第１のパーティションに書き込んで、前記第１のパーティションの以前の内容に上書きし、前記電子機器をリブートし、
前記ブートローディング命令は、命令を含み、
前記命令は、実行されると、使用できないようにされていないバージョンの前記第１のメモリ内容を得るために、前記不揮発性書き替え可能メモリを探索し、前記バージョンの第１のメモリ内容が見つかれば、前記電子機器の制御をそのバージョンのメモリ内容に記憶されたコアファームウェアに切り換え、
前記アップデートサーバは、前記アップデートされたバージョンの第１および第２のメモリ内容を備えたアップデートを前記少なくとも１つの電子機器に前記通信リンクを介して転送するのに使用することのできる、
システム。
【請求項１２】
前記不揮発性書き替え可能メモリへの書き込みが正しいかどうか検査される、請求項６〜１１の何れか一項に記載のシステム。
【請求項１３】
前記アップデートクライアントが、前記少なくとも１つの電子機器を与えられた時間にアップデートすることができるかどうかを前記アップデートサーバーに通知するのに使用することができ、前記アップデートサーバーが、前記アップデートクライアントから受信した情報に応答し、前記電子機器がアップデートできる状態になければ、前記電子機器のアップデートを延期する、請求項１２に記載のシステム。
【請求項１４】
前記アップデートサーバーが、アップデートに優先順位をつけることができ、前記アップデートクライアントが、優先順位がつけられなければアップデートできない電子機器をアップデートできる状態にする、請求項１３に記載のシステム。
【請求項１５】
電子機器において使用するためのメモリサブシステムであって、
コアファームウェアおよび補助ソフトウェアが記憶される不揮発性書き替え可能メモリを備え、
前記コアファームウェアが、命令を含み、
前記命令が、前記補助ソフトウェアの少なくとも一部分には上書きするが以前のバージョンのコアファームウェアには上書きしないようにして、アップデートされたバージョンのコアファームウェアを前記不揮発性書き替え可能メモリに書き込み、前記アップデートされたバージョンのコアファームウェアを検査し、前記以前のバージョンのコアファームウェアを使用できないようにすることにより、前記電子機器をリブートしたとき、前記アップデートされたバージョンのコアファームウェアが、ロードされ、実行される、
メモリサブシステム。
【請求項１６】
電子機器において使用するためのメモリサブシステムであって、
前記メモリサブシステムが、不揮発性書き替え可能メモリを備え、
前記不揮発性書き替え可能メモリには、コアファームウェアが記憶され、
前記不揮発性書き替え可能メモリは、前記コアファームウェアおよび補助ソフトウェアを記憶できるほどに十分に大きいが、前記コアファームウェア、アップデートされたバージョンのコアファームウェア、および、前記補助ソフトウェアを同時に記憶できるほどには大きくなく、
前記コアファームウェアが、命令を含み、
前記命令は、以前のバージョンのコアファームウェアに上書きしないようにして、アップデートされたバージョンのコアファームウェアを前記不揮発性書き替え可能メモリに書き込み、前記アップデートされたバージョンのコアファームウェアを検査し、前記以前のバージョンのコアファームウェアを使用できないようにすることにより、前記電子機器をリブートしたとき、前記アップデートされたバージョンのコアファームウェアが、ロードされ、実行される、
メモリサブシステム。
【請求項１７】
前記コアファームウェアが、命令を含み、
前記命令は、使用できないようにされた以前のバージョンのコアファームウェアの少なくとも一部分には上書きするが前記アップデートされたバージョンのコアファームウェアには上書きしないようにして、アップデートされたバージョンの補助ソフトウェアを前記不揮発性書き替え可能メモリに書き込む、
請求項１５または請求項１６に記載のメモリサブシステム。
【請求項１８】
命令を含む不揮発性メモリをさらに備え、
前記命令は、前記電子機器がリブートしたときに実行され、使用できないようにされていないバージョンのコアファームウェアを得るために、前記不揮発性書き替え可能メモリをスキャンし、使用できないようにされていない前記バージョンのコアファームウェアをロードし、実行する、
請求項１７に記載のメモリサブシステム。
【請求項１９】
記憶された命令を実行することができ、アップデートされたバージョンの命令を受信することができる電子機器において使用するための該命令を記憶するメモリサブシステムであって、
前記メモリサブシステムが、不揮発性書き替え可能メモリを備え、
前記不揮発性書き替え可能メモリにおいては、前記電子機器がリスタートするのを可能にし、あるいは、アップデートが進行中に前記電子機器がリブートした場合に前記不揮発性書き替え可能メモリをアップデートするのを継続するのを可能にするのに必要な命令を少なくとも含む第１のメモリ内容が、第１のパーティションに記憶され、
前記第１のパーティションに記憶できるほど十分に小さく、前記第１のメモリ内容に含まれない前記電子機器のリブート後の通常動作に必要なすべての命令を含む第２のメモリ内容が、前記第１のメモリ内容を記憶できるほど十分に大きい第２のパーティションに記憶され、
前記第１のメモリ内容に記憶された命令は、
アップデートされたバージョンの第１のメモリ内容が受信された後に実行されると、前記アップデートされたバージョンの第１のメモリ内容を第２のパーティションに書き込んで、前記第２のメモリ内容に上書きし、前記第１のパーティションに含まれる前記第１のメモリ内容を使用できないようにする命令と、
アップデートされたバージョンの第２のメモリ内容が受信された後に実行されると、前記アップデートされたバージョンの第２のメモリ内容を前記第１のパーティションに書き込んで、前記使用できないようにされた第１のメモリ内容に上書きし、前記電子機器をリブートする命令と、
を含み、
前記メモリサブシステムが、さらに、前記電子機器がリブートされたときに実行されるブートローディング命令が記憶された不揮発性メモリを備え、
前記ブートローディング命令が、命令を含み、
前記命令は、実行されると、使用できないようにされていない第１のメモリ内容のバージョンを得るために、前記不揮発性書き替え可能メモリを探索し、前記バージョンの第１のメモリ内容が見つかれば、前記電子機器の制御をそのバージョンのメモリ内容に記憶された命令に切り換える、
メモリサブシステム。
【請求項２０】
記憶された命令を実行することができ、アップデートされたバージョンの命令を受信することができる電子機器において使用するための、該命令を記憶するメモリサブシステムであって、
前記メモリサブシステムが、不揮発性書き替え可能メモリを備え、
前記不揮発性書き替え可能メモリにおいては、
前記電子機器が、リスタートするのを可能にし、あるいは、アップデートが進行中に前記電子機器がリブートした場合に前記不揮発性書き替え可能メモリをアップデートするのを継続するのを可能にするのに必要な命令を少なくとも含む第１のメモリ内容が、第１のパーティションに記憶され、
前記第１のメモリ内容に含まれない前記電子機器のリブート後の通常動作に必要なすべての命令を含む第２のメモリ内容が、前記第１のメモリ内容を記憶できるほど十分に大きい第２のパーティションに記憶され、
前記第１のメモリ内容に記憶された命令は、
アップデートされたバージョンの第１のメモリ内容が受信された後に実行されると、第１のメモリ内容を第２のパーティションにコピーして、前記第２のメモリ内容に上書きし、前記アップデートされたバージョンの第１のメモリ内容を前記第１のパーティションに書き込んで、前記第１のメモリ内容に上書きする命令と、
アップデートされたバージョンの第２のメモリ内容が受信された後に実行されると、前記アップデートされたバージョンの第２のメモリ内容を前記第２のパーティションに書き込んで、前記使用できないようにされた第１のメモリ内容に上書きし、前記電子機器をリブートする命令と、
を含み、
前記メモリサブシステムが、さらに、前記電子機器がリブートされたときに実行されるブートローディング命令が記憶された不揮発性メモリを備え、
前記ブートローディング命令が、命令を含み、
前記命令は、実行されると、使用できないようにされていない第１のメモリ内容のバージョンを得るために、前記不揮発性書き替え可能メモリを探索し、前記バージョンの第１のメモリ内容が見つかれば、前記電子機器の制御をそのバージョンのメモリ内容に記憶された命令に切り換える、
メモリサブシステム。
【請求項２１】
記憶された命令を実行することができ、アップデートされたバージョンの命令を受信することができる電子機器において使用するための、該命令を記憶するメモリサブシステムであって、
前記メモリサブシステムが、不揮発性書き替え可能メモリを備え、
前記不揮発性書き替え可能メモリにおいては、
前記電子機器が、リスタートするのを可能にし、あるいは、アップデートが進行中に前記電子機器がリブートした場合に前記不揮発性書き替え可能メモリをアップデートするのを継続するのを可能にするのに必要な命令を少なくとも含む第１のメモリ内容が、前記不揮発性書き替え可能メモリの開始点から開始するかまたは前記不揮発性書き替え可能メモリの終了点で終了する連続する第１のパーティションに記憶され、
前記第１のメモリ内容に含まれない前記電子機器のリブート後の通常動作に必要なすべての命令を含む第２のメモリ内容が、前記不揮発性書き替え可能メモリの前記第１のパーティションが存在しない部分を占め、前記第１のメモリ内容を記憶できるほど十分に大きい連続する第２のパーティションに記憶され、
前記第１のメモリ内容に記憶された命令は、
アップデートされたバージョンの第１のメモリ内容が受信された後に実行されると、可能であれば、前記第２のパーティションのサイズを縮小することにより、前記第２のパーティションが、前記アップデートされたバージョンの第１のメモリ内容をちょうど記憶できる大きさとなり、前記アップデートされたバージョンの第１のメモリ内容を前記第２のパーティションに書き込んで、前記第２のパーティションの以前の内容に上書きし、前記第１のパーティションに記憶された第１のメモリ内容のバージョンを使用できないようにする命令と、
アップデートされたバージョンの第２のメモリ内容が受信された後に実行されると、可能であれば、前記第１のパーティションのサイズを増大させ、前記第２のパーティションに含まれない不揮発性書き替え可能メモリのすべての部分を含め、前記アップデートされたバージョンの第２のメモリ内容を前記第１のパーティションに書き込んで、前記第１のパーティションの以前の内容に上書きし、前記電子機器をリブートする命令と、
を含み、
前記メモリサブシステムが、さらに、前記電子機器がリブートされたときに実行されるブートローディング命令が記憶された不揮発性メモリを備え、
前記ブートローディング命令が、命令を含み、
前記命令は、実行されると、使用できないようにされていない第１のメモリ内容のバージョンを得るために、前記不揮発性書き替え可能メモリを探索し、前記バージョンの第１のメモリ内容が見つかれば、前記電子機器の制御を当該バージョンのメモリ内容に記憶された命令に切り換える、
メモリサブシステム。
【請求項２２】
電子機器の不揮発性書き替え可能メモリに記憶されたコアファームウェアを補助ソフトウェアとともに、アップデートされたバージョンのコアファームウェアにアップデートする方法であって、
（１）前記補助ソフトウェアの少なくとも一部分には上書きするが、以前のバージョンのコアファームウェアには上書きしないようにして、前記アップデートされたバージョンのコアファームウェアを前記不揮発性書き替え可能メモリに書き込むステップと、
（２）前記以前のバージョンのコアファームウェアを使用できないようにすることにより、前記電子機器をリブートするとき、前記アップデートされたバージョンのコアファームウェアが、ロードされ、実行されるステップと、
を備えた方法。
【請求項２３】
電子機器の不揮発性書き替え可能メモリに記憶された以前のバージョンのコアファームウェアおよび補助ソフトウェアを、アップデートされたバージョンのコアファームウェアおよび補助ソフトウェアにアップデートする方法であって、
（１）前記補助ソフトウェアの少なくとも一部分には上書きするが、以前のバージョンのコアファームウェアには上書きしないようにして、前記アップデートされたバージョンのコアファームウェアを前記不揮発性書き替え可能メモリに書き込むステップと、
（２）前記以前のバージョンのコアファームウェアを使用できないようにすることにより、前記電子機器をリブートするとき、前記アップデートされたバージョンのコアファームウェアが、ロードされ、実行されるステップと、
（３）前記アップデートされたバージョンのコアファームウェアに上書きしないようにして、前記アップデートされたバージョンの補助ソフトウェアを前記不揮発性書き替え可能メモリに書き込むステップと、
を備えた方法。
【請求項２４】
前記電子機器がリブートされたとき、使用できないようにされていないコアファームウェアのバージョンを得るために、前記不揮発性書き替え可能メモリがスキャンされ、当該バージョンのコアファームウェアが、ロードされ、実行される、請求項２２または請求項２３に記載の方法。
【請求項２５】
アップデートおよびソフトウェアの両方を保持できるほど大きくない不揮発性書き替え可能メモリに記憶された前記ソフトウェアに前記アップデートをインストールする方法であって、
前記アップデートを、前記不揮発性書き替え可能メモリの半分以下の領域に記憶することのできるコア部分を含む個々に書き込み可能な部分に分割するステップと、
不揮発性書き替え可能メモリを、前記アップデートのコア部分と前記アップデートのコア部分をちょうど保持できる大きさの補助部分とに対応する、前記不揮発性書き替え可能メモリの半分以下の領域を含むコア部分を含み、ソフトウェア部分を含む個々に書き替え可能な部分に分割するステップと、
前記アップデートのコア部分を前記不揮発性書き替え可能メモリの補助部分に書き込み、前記アップデートのコア部分が正しく書き込まれたかを検査するステップと、
前記不揮発性書き替え可能メモリの前記コア部分に含まれる以前のバージョンのソフトウェアを使用できないようにするステップと、
前記アップデートのコア部分に含まれない前記アップデートの部分を、前記不揮発性書き替え可能メモリのコア部分に含まれない前記不揮発性書き替え可能メモリの部分に書き込み、前記アップデートの部分が正しく書き込まれたかを検査するステップと、
を備えた方法。
【請求項２６】
少なくとも１つの電子機器を通信リンクを介して遠隔からアップデートするためのシステムであって、
コアファームウェアおよび補助ソフトウェアを備えたアップデートを前記少なくとも１つの電子機器に前記通信リンクを介して転送するのに使用することのできるアップデートサーバーと、
前記アップデートサーバーから受信される転送を一時的に記憶するための揮発性メモリと、
前記少なくとも１つの電子機器内に存在する不揮発性書き替え可能記憶装置であって、少なくとも第１および第２のパーティションに分割され、前記第１のパーティションは、あるバージョンのコアファームウェアおよび補助ソフトウェアの一方を記憶し、前記第２のパーティションは、あるバージョンのコアファームウェアおよび補助ソフトウェアの他方を記憶する、不揮発性書き替え可能記憶装置と、
前記機器において動作するアップデートクライアントと、
を備え、
前記アップデートクライアントが、
（１）揮発性メモリに記憶された受信アップデートコアファームウェアを、前記第１および第２のパーティションの一方に記憶されたあるバージョンの補助ソフトウェアに上書きし、該書き込みがうまくなされたかどうかを検査し、
（２）前記機器を次にリブートするときに、ステップ（１）において記憶された前記コアファームウェアを実行するように、前記機器を設定し、
（３）揮発性メモリに記憶された受信されたアップデートされた補助ソフトウェアを、前記第１および第２のパーティションの他方に記憶されたあるバージョンのコアファームウェアに上書きし、該書き込みがうまくなされたかどうかを検査し、
（４）前記機器をリブートし、前記アップデートされたコアファームウェアおよび前記アップデートされた補助ソフトウェアを実行する、
システム。
【請求項２７】
前記アップデートクライアントが、さらに、前記機器を与えられた時間にアップデートすることができるかどうかを前記アップデートサーバーに通知し、
前記アップデートサーバーが、前記アップデートクライアントから受信した情報に応答し、前記機器がアップデートできる状態になければ、前記機器のアップデートを延期するする、
請求項２６に記載のシステム。
【請求項２８】
前記アップデートサーバーが、アップデートに優先順位をつけることができ、該優先順位をつけることによって、前記アップデートクライアントが、優先順位がつけられなければアップデートできない電子機器をアップデートできる状態にする、請求項２７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、遠隔に配置された電子機器内のソフトウェアをアップデートするための方法、装置、および、システムに関する。より詳細には、本発明は、ネットワークに接続された遠隔配置電子機器内に存在するソフトウェアをアップデートするための方法、システム、および、装置に関し、これらの方法、システム、および、装置によれば、それらの電子機器は、ネットワークを介して、アップデートの失敗をリカバーすることができ、かつ、アップデートを完了することができる。
【背景技術】
【０００２】
多くの一般的な電気機器は、デバイスの電源が落とされた場合でも、ソフトウェア若しくはデータを保持することができる書き替え可能メモリを備えている。該書き替え可能メモリに保持されているソフトウェア若しくはデータは、書き替え可能である。現在、そのような書き替え可能なメモリは、典型的には、フラッシュメモリまたはそれと同等のものであるが、その他の種類のメモリまたは記憶装置を使用することもできる。フラッシュメモリは、不揮発性の半導体メモリの一種であり、そのため、電源が切られてもデータが消失することはなく、さらには、異なるデータを含むように書き替え可能である。フラッシュメモリは、小型であり、相当に耐久性があり、高速であり、かつ、書き替え可能であるので、広く普及している。例えば、携帯電話は、短縮番号、呼出音、ファームウェアアップデート、などの電話機能を実行するソフトウェアを保持するのにフラッシュメモリを使用する。したがって、新しい機能が提供されまたはバグフィックスが実施されるので、電子機器内のファームウェアをアップデートすることができる。
【０００３】
しかしながら、フラッシュメモリまたはそれと同等なものに、欠点がないわけではない。１つの欠点は、フラッシュメモリが比較的高価なことである。製造業者が消費者価格を低く維持しなければならない機器においては、その機器は、必要とされるフラッシュメモリの量を最小限に抑制するように設計しなければならない。
【０００４】
ファームウェアまたはその他のソフトウェアまたはデータを、それらが配置された機器においてアップデートできることは明らかに望ましいことではあるが、電子機器内のフラッシュメモリをアップデートするのは、必ずしも容易なことではない。例えば、たいていの携帯電話のファームウェアまたはその他のソフトウェアのアップデートを必要とする場合、ローカルサービスセンターに当該携帯電話を持ち込まなければならない。ローカルサービスセンターは、アップデートされたソフトウェアを保持するアップデートステーションを有し、携帯電話を有線データリンクを介して当該アップデートステーションに接続することによってソフトウェアをアップデートする。アップデートセッション中に新しいソフトウェアの転送に問題があれば、機器は不明の状態または動作不能の状態になる。この場合、機器はリセットされ、転送が完了しかつ機器が適切に動作するようになるまで、新しいソフトウェアが、単に、再度転送されることになる。
【０００５】
しかしながら、この方法が魅力的なオプションであることは極めて稀である。なぜなら、このような方法は、サービスセンターを訪問しなければならないユーザの積極的な関与または協力を必要とするからである。無線ローカルループ加入者ステーションのような機器の場合、加入者ステーションをサービスセンターに持ち込むことは、サービスセンターまで出かける不便さに加えて、加入者ステーションが通常配置されている場所に電話またはデータサービスが一時的に存在しなくなることを意味する。
【０００６】
機器内の不揮発性書き替え可能メモリをそれらの機器が接続されたネットワークを介してアップデートすることが、これまでに試みられてきた。例えば、携帯電話は、サービスする無線ネットワークを介して、そのフラッシュメモリにソフトウェアアップデートを受信することができる。しかしながら、何らかの理由によって、伝送に失敗すれば、あるいは、伝送に誤りがあれば、機器は不明の状態または動作不能の状態のままとなるかもしれないという点において、当該技術には問題がある。このような場合、サービスセンターにおいてアップデートがなされる上述の例と異なり、アップデートソフトウェアの再送を試みることはできず、サービスセンターに戻されるまで、ユーザには動作不能の機器が残される。
【０００７】
この問題の従来技術による一解決方法は、別個のバンクからなる書き替え可能メモリを提供することであった。特許文献１は、携帯電話システムを教示しており、この携帯電話システムにおいては、書き替え可能なメモリの半分が、現在のバージョンのソフトウェアを保持するのに使用されるバンクであり、アップデートされたソフトウェアは、書き替え可能なメモリの他方の半分のバンクにダウンロードされる。携帯電話が、例えば、ＣＲＣを検査することによって、転送がうまくなされたと判断すれば、その携帯電話は、メモリのアップデートされたバンクを使用するように切り換え、そして、古いソフトウェアを含むバンクは、次のアップデートを受信するのに使用することができる。類似する従来技術による解決方法が、特許文献２に教示されている。これらの構成は、アップデート中に回復不能エラーが発生するのを防止するが、高価な書き替え可能メモリを２倍必要とする。
【０００８】
また、上述した従来技術によるアップデート方法は、典型的には、機器のユーザの協力または関与を必要とし、ユーザは、サービスセンターに出向かなければならないか、あるいは、ネットワークを介してアップデートデータを転送することを受け入れ、しかも、当該転送を開始しなければならない。ネットワークオペレータのためにネットワークの安定性または容量を改善するような重要なアップデートは、ユーザに不便をかけるために、ユーザによっては、拒絶されるかもしれないし、さもなければ、遅延させられるかもしれない。さらに、公知の従来技術による方法は、ネットワークにおいてそれぞれの機器をアップデートすることは、個々に実施されなければならない。
【０００９】
ネットワークに接続された機器の不揮発性書き替え可能メモリ内のソフトウェアまたはデータを高い信頼性でアップデートする方法およびシステムが望まれている。当該方法およびシステムは、機器内において２倍の量の不揮発性書き替え可能メモリを必要とせず、かつ、多数の機器において自動的にかつ並行して実行されることが可能であることが望まれる。
【特許文献１】
米国特許第６，０２３，６２０号
【特許文献２】
米国特許第６，２７５，９３１号
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の目的は、電子機器内に存在するソフトウェアをネットワークを介してアップデートするための新規な方法、システム、および、装置を提供することであり、これらの方法、システム、および、装置は、上述した従来技術の欠点を除去または緩和するものである。
【課題を解決するための手段】
【００１１】
本発明の第１の態様によれば、少なくとも１つの電子機器を通信リンクを介して遠隔からアップデートするためのシステムが提供される。当該システムは、アップデートサーバー、揮発性メモリ、前記少なくとも１つの電子機器内に存在する不揮発性書き替え可能記憶装置、および、当該機器で動作するアップデートクライアントを含む。アップデートサーバーは、コアファームウェアおよび補助ソフトウェアを備えたアップデートを通信リンクを介して少なくとも１つの電子機器に転送するのに使用することができる。揮発性メモリは、アップデートサーバーから受信された転送を一時的に記憶するのに使用される。不揮発性書き替え可能記憶装置は、少なくとも第１および第２のパーティションに分割され、第１のパーティションは、あるバージョンのコアファームウェアおよび補助ソフトウェアの一方を記憶し、第２のパーティションは、あるバージョンのコアファームウェアおよび補助ソフトウェアの他方を記憶する。アップデートクライアントは、機器において動作し、（１）揮発性メモリに記憶された受信されたアップデートコアファームウェアを、第１および第２のパーティションの一方に記憶されたバージョンの補助ソフトウェアに上書きし、この書き込みがうまくなされたかどうかを検査し、（２）機器を次にリブートしたときに、（１）において記憶されたコアファームウェアを実行するように機器を設定し、（３）揮発性メモリに記憶された受信されたアップデートされた補助ソフトウェアを、第１および第２のパーティションの他方に記憶されたバージョンのコアファームウェアに上書きし、この書き込みがうまくなされたかどうかを検査し、（４）機器をリブートし、アップデートされたコアファームウェアおよびアップデートされた補助ソフトウェアを実行する、のに使用することができる。
【００１２】
本発明の別の態様によれば、ネットワークに接続された複数の遠隔機器内に存在するソフトウェアをアップデートする方法が、提供される。この方法は、（１）少なくともコアファームウェアアップデートを備えたアップデートをアップデートサーバーに配置するステップと、（２）ネットワークに接続されたアップデートされるべき機器を識別するステップと、（３）アップデートをアップデートサーバーからネットワークを介して識別された機器に転送し、識別された機器のそれぞれが、アップデートが正しく受信されたことを検査し、それまでに受信したアップデートに誤りのある部分があれば、その部分の再送を要求し、かつ、その部分を受信するステップと、（４）以前のバージョンのコアファームウェアの有効なコピーが、常に、記憶装置に存在することを保証しながら、受信されたアップデートのコアファームウェア部分をパーティショニングされた不揮発性書き替え可能記憶装置に書き込んで、コアファームウェア部分を、以前に記憶されたバージョンのソフトウェアを含むパーティションに上書きし、その書き込みを検査するステップと、（５）検査されたアップデートコアファームウェアパーティションを、機器によって使用されるべき有効なコアファームウェアとみなし、以前のバージョンのコアファームウェアを、使用できないものであるとみなすステップと、（６）アップデートされたソフトウェアをロードおよび実行するために、機器をリブートするステップと、を含む。
【００１３】
オプションとして、受信されたアップデートのコアファームウェア部分がパーティショニングされた不揮発性書き替え可能記憶装置に書き込まれる前に、以前のバージョンのコアファームウェアが、記憶装置に記憶された補助ソフトウェア上にコピーされ、正しくコピーされたか検査され、そのコピーが、機器によって使用されるべき有効なコアファームウェアであるとみなされ、そして、オリジナルのコアファームウェアが、使用できないものであるとみなされてもよい。
【００１４】
また、アップデートは、アップデートされた補助ソフトウェアを含んでもよい。補助ソフトウェアが、機器によって、受信され、検査され、そして、機器がリブートされる前に、補助ソフトウェアアップデートが、使用できない以前のバージョンのコアファームウェアに上書きされる。
【００１５】
本発明の別の態様によれば、少なくとも１つの電子機器に存在するコアファームウェアを通信リンクを介して遠隔からアップデートするシステムが、提供される。当該システムは、電子機器内に存在するメモリサブシステムと、アップデートされたバージョンのコアファームウェアを少なくとも含むアップデートを通信リンクを介して電子機器に転送するのに使用することのできるアップデートサーバーと、を含む。メモリサブシステムは、不揮発性書き替え可能メモリを含み、その不揮発性書き替え可能メモリにはコアファームウェアが記憶され、その不揮発性書き替え可能メモリは補助ソフトウェアを記憶できるほどに十分に大きいが、コアファームウェア、アップデートされたバージョンのコアファームウェア、および、補助ソフトウェアを同時に記憶できるほどには大きくない。コアファームウェアは、（１）以前のバージョンのコアファームウェアに上書きしないようにして、アップデートされたバージョンのコアファームウェアを不揮発性書き替え可能メモリに書き込み、オプションとして、その書き込みが正しくなされたか検査し、そして、（２）以前のバージョンのコアファームウェアを使用できないようにし、それによって、少なくとも１つの電子機器をリブートするとき、アップデートされたバージョンのコアファームウェアがロードされ、かつ、実行される、ための命令を含む。
【００１６】
また、コアファームウェアは、使用できないようにされた以前のバージョンのコアファームウェアの少なくとも一部分には上書きするがアップデートされたバージョンのコアファームウェアには上書きしないようにして、アップデートされたバージョンの補助ソフトウェアを不揮発性書き替え可能メモリに書き込むための命令を含んでもよい。オプションとして、その書き込みが正しくなされたかどうか検査されてもよい。
【００１７】
メモリサブシステムは、さらに、命令が記憶された不揮発性メモリを含んでもよく、その命令は、電子機器がリブートしたときに実行され、使用できないようにされていないバージョンのコアファームウェアを見つけるために、不揮発性書き替え可能メモリがスキャンされる。使用できないようにされていないバージョンのコアファームウェアが見つかれば、その当該バージョンがロードされ、かつ、実行される。
【００１８】
本発明のさらに別の態様によれば、少なくとも１つの電子機器に存在するコアファームウェアおよび補助ソフトウェアを通信リンクを介して遠隔からアップデートするためのシステムが提供される。当該システムは、コアファームウェアおよび補助ソフトウェアを記憶するための少なくとも１つの電子機器内に存在するメモリ装置と、アップデートを少なくとも１つの電子機器に通信リンクを介して転送するのに使用することのできるアップデートサーバーと、を含む。メモリ装置は不揮発性書き替え可能メモリを含む。該メモリにおいて、第１のパーティションには、コアファームウェアを含む第１のメモリ内容が記憶され、第２のパーティションには、第１のパーティションに記憶されるのに十分なほど小さく補助ソフトウェアを含む第２のメモリ内容が記憶される。該第２のパーティションは第１のメモリ内容を記憶するのに十分なほど大きい。コアファームウェアはアップデートクライアントを含み、そのアップデートクライアントは、アップデートされたバージョンの第１のメモリ内容を受信すると、そのアップデートされたバージョンの第１のメモリ内容を第２のパーティションに書き込んで、第２のメモリ内容に上書きし、オプションとして、その書き込みが正しくなされたか検査し、第１のパーティションに含まれる第１のメモリ内容を使用できないようにし、そして、アップデートされたバージョンの第２のメモリ内容を受信すると、そのアップデートされたバージョンの第２のメモリ内容を第１のパーティションに書き込んで、使用できないようにされた第１のメモリ内容に上書きし、電子機器をリブートする。さらに、メモリ装置は、ブートローディング命令が記憶された不揮発性メモリを含み、そのブートローディング命令は、電子機器がリブートされたときに、実行される。ブートローディング命令は、命令を含み、その命令は、実行されると、使用できないようにされていないバージョンの第１のメモリ内容を見つけるために、不揮発性書き替え可能メモリを探索し、見つかれば、電子機器の制御をそのメモリ内容に記憶されたコアファームウェアに切り換える。
【００１９】
あるいは、アップデートクライアントは、アップデートされたバージョンの第１のメモリ内容を受信すると、第１のメモリ内容を第２のパーティションにコピーして、第２のメモリ内容に上書きし、アップデートされたバージョンの第１のメモリ内容を第１のパーティションに書き込んで、第１のメモリ内容に上書きしてもよい。オプションとして、その書き込みが正しくなされたか検査する。アップデートされたバージョンの第２のメモリ内容を受信すると、そのアップデートされたバージョンの第２のメモリ内容を第２のパーティションに書き込み、オプションとして、その書き込みが正しくなされたか検査し、そして、電子機器をリブートする。
【００２０】
さらに、あるいは、アップデートクライアントは、アップデートされたバージョンの第１のメモリ内容を受信すると、第２のパーティションのサイズを縮小してもよい。それによって、第２のパーティションは、アップデートされたバージョンの第１のメモリ内容をちょうど記憶できる大きさとなり、アップデートされたバージョンの第１のメモリ内容を第２のパーティションに書き込んで、第２のパーティションの以前の内容に上書きし、オプションとして、その書き込みが正しくなされたか検査する。そして、第１のパーティションに記憶された第１のメモリ内容のバージョンを使用できないようにし、そして、アップデートされたバージョンの第２のメモリ内容を受信すると、第１のパーティションのサイズを増大させ、第２のパーティションに含まれない不揮発性書き替え可能メモリのすべての部分を含め、アップデートされたバージョンの第２のメモリ内容を第１のパーティションに書き込んで、第１のパーティションの以前の内容に上書きし、オプションとして、その書き込みが正しくなされたか検査し、そして、電子機器をリブートする。
【００２１】
オプションとして、アップデートクライアントは、さらに、与えられた時間に少なくとも１つの電子機器をアップデートすることができるかどうかをアップデートサーバーに通知するのに使用することができてもよい。アップデートサーバーは、アップデートクライアントから受信した情報に応答し、電子機器がアップデートできる状態になければ、電子機器のアップデートを延期する。また、アップデートサーバーは、アップデートに優先順位をつけることができ、それによって、アップデートクライアントは、そうしなければアップデートできない電子機器をアップデートできる状態にする。
【００２２】
本発明のさらに別の態様によれば、電子機器において使用するためのメモリサブシステムが提供され、そのメモリサブシステムは、コアファームウェアおよび補助ソフトウェアが記憶された不揮発性書き替え可能メモリを含む。コアファームウェアは命令を含み、その命令は、補助ソフトウェアの少なくとも一部分には上書きするが、以前のバージョンのコアファームウェアには上書きしないようにして、アップデートされたバージョンのコアファームウェアを不揮発性書き替え可能メモリに書き込み、アップデートされたバージョンのコアファームウェアを検査し、以前のバージョンのコアファームウェアを使用できないようにし、それによって、電子機器をリブートしたとき、アップデートされたバージョンのコアファームウェアが、ロードされ、かつ、実行される。コアファームウェアは、命令を含んでもよく、その命令は、使用できないようにされた以前のバージョンのコアファームウェアの少なくとも一部分には上書きするがアップデートされたバージョンのコアファームウェアには上書きしないようにして、アップデートされたバージョンの補助ソフトウェアを不揮発性書き替え可能メモリに書き込む。また、メモリサブシステムは、命令を記憶する不揮発性メモリを含んでもよく、その命令は、電子機器がリブートしたときに実行され、使用できないようにされていないバージョンのコアファームウェアを見つけるために、不揮発性書き替え可能メモリをスキャンし、そして、使用できないようにされていないバージョンのコアファームウェアをロードし、かつ、実行する。
【００２３】
本発明のさらに別の側面によれば、電子機器において使用するためのメモリサブシステムが、提供され、そのメモリサブシステムは、不揮発性書き替え可能メモリを含み、その不揮発性書き替え可能メモリには、コアファームウェアが記憶され、不揮発性書き替え可能メモリは、コアファームウェアおよび補助ソフトウェアを記憶できるほどに十分に大きいが、コアファームウェアを同時に記憶できるほどには大きくない。コアファームウェアは、命令を含み、その命令は、以前のバージョンのコアファームウェアに上書きしないようにして、アップデートされたバージョンのコアファームウェアを不揮発性書き替え可能メモリに書き込み、アップデートされたバージョンのコアファームウェアを検査し、以前のバージョンのコアファームウェアを使用できないようにし、それによって、電子機器をリブートしたとき、アップデートされたバージョンのコアファームウェアが、ロードされ、かつ、実行される。コアファームウェアは、命令を含んでもよく、その命令は、使用できないようにされた以前のバージョンのコアファームウェアの少なくとも一部分には上書きするがアップデートされたバージョンのコアファームウェアには上書きしないようにして、アップデートされたバージョンの補助ソフトウェアを不揮発性書き替え可能メモリに書き込む。また、メモリサブシステムは、命令を記憶する不揮発性メモリを含んでもよく、その命令は、電子機器がリブートしたときに実行され、使用できないようにされていないバージョンのコアファームウェアを見つけるために、不揮発性書き替え可能メモリをスキャンし、そして、使用できないようにされていないバージョンのコアファームウェアをロードし、かつ、実行する。
【００２４】
本発明のさらに別の態様によれば、記憶された命令を実行することができ、そのような命令のアップデートされたバージョンを受信することができる電子機器において使用するための、そのような命令を記憶するためのメモリサブシステムが提供される。当該メモリサブシステムは、不揮発性書き替え可能メモリおよび不揮発性メモリを含む。電子機器がリブートされたときに実行されるブートローディング命令が、不揮発性メモリに記憶される。不揮発性書き替え可能メモリにおいては、電子機器がリスタートするのを可能にし、あるいは、アップデートが進行中に電子機器がリブートした場合に不揮発性書き替え可能メモリをアップデートするのを継続するのを可能にするのに必要な命令を少なくとも含む第１のメモリ内容が、第１のパーティションに記憶され、第１のパーティションに記憶できるほど十分に小さくかつ第１のメモリ内容に含まれない電子機器のリブート後の通常動作に必要なすべての命令を含む第２のメモリ内容が、第１のメモリ内容を記憶できるほど十分に大きい第２のパーティションに記憶される。第１のメモリ内容に記憶された命令は、アップデートされたバージョンの第１のメモリ内容が受信された後に実行されると、アップデートされたバージョンの第１のメモリ内容を第２のパーティションに書き込んで、第２のメモリ内容に上書きし、第１のパーティションに含まれる第１のメモリ内容を使用できないようにする命令と、アップデートされたバージョンの第２のメモリ内容が受信された後に実行されると、アップデートされたバージョンの第２のメモリ内容を第１のパーティションに書き込んで、使用できないようにされた第１のメモリ内容に上書きし、電子機器をリブートする命令と、を含む。
【００２５】
あるいは、第１のメモリ内容に記憶された命令は、アップデートされたバージョンの第１のメモリ内容が受信された後に実行されると、第１のメモリ内容を第２のパーティションにコピーして、第２のメモリ内容に上書きし、アップデートされたバージョンの第１のメモリ内容を第１のパーティションに書き込んで、第１のメモリ内容に上書きする命令と、アップデートされたバージョンの第２のメモリ内容が受信された後に実行されると、アップデートされたバージョンの第２のメモリ内容を第２のパーティションに書き込んで、使用できないようにされた第１のメモリ内容に上書きし、電子機器をリブートする命令とを含んでもよい。
【００２６】
あるいは、第１のメモリ内容に記憶された命令は、アップデートされたバージョンの第１のメモリ内容が受信された後に実行されると、可能であれば、第２のパーティションのサイズを縮小し、それによって、第２のパーティションが、アップデートされたバージョンの第１のメモリ内容をちょうど記憶できる大きさとなり、アップデートされたバージョンの第１のメモリ内容を第２のパーティションに書き込んで、第２のパーティションの以前の内容に上書きし、第１のパーティションに記憶された第１のメモリ内容のバージョンを使用できないようにする命令と、アップデートされたバージョンの第２のメモリ内容が受信された後に実行されると、可能であれば、第１のパーティションのサイズを増大させ、第２のパーティションに含まれない不揮発性書き替え可能メモリのすべての部分を含め、アップデートされたバージョンの第２のメモリ内容を第１のパーティションに書き込んで、第１のパーティションの以前の内容に上書きし、そして、電子機器をリブートする命令と、を含んでもよい。
【００２７】
本発明のさらに別の態様によれば、アップデートおよびソフトウェアの両方を保持できるほど大きくない不揮発性書き替え可能メモリに記憶されたソフトウェアにアップデートをインストールする方法が提供される。この方法は、アップデートを、不揮発性書き替え可能メモリの半分以下の領域に記憶することのできるコア部分を含む個々に書き込み可能な部分に分割するステップと、不揮発性書き替え可能メモリを、アップデートのコア部分とアップデートのコア部分をちょうど保持できる大きさの補助部分とに対応する、不揮発性書き替え可能メモリの半分以下の領域を含むコア部分を含みかつソフトウェア部分を含む個々に書き替え可能な部分に分割するステップと、アップデートのコア部分を不揮発性書き替え可能メモリの補助部分に書き込み、かつ、その書き込みが正しくなされたかを検査するステップと、不揮発性書き替え可能メモリのコア部分に含まれる以前のバージョンのソフトウェアを使用できないようにするステップと、アップデートのコア部分に含まれないアップデートの部分を、不揮発性書き替え可能メモリのコア部分に含まれない不揮発性書き替え可能メモリの部分に書き込み、その書き込みが正しくなされたかを検査するステップと、を備える。
【発明を実施するための最良の形態】
【００２８】
以下、添付の図面を参照して、本発明の例としての実施形態を説明する。
【００２９】
ここで、図１を参照すると、少なくとも１つの電子機器内に存在するソフトウェアまたはデータをアップグレードするのを可能にする無線ネットワークが、符号２０によって概略的に示されている。ネットワーク２０は、少なくとも１つのアップデートステーションを含み、そのアップデートステーションは、この例においては、無線基地局２４であり、双方向通信リンク３２を介して、ソフトウェアアップデートを送信するのに使用することができる。また、ネットワーク２０は、音声およびデータに対応可能な無線ローカルループのための加入者ステーション２８ａ、２８ｂ、．．．、２８ｎのような少なくとも１つの電子機器を含む。加入者ステーション２８は、音声およびデータのための無線ローカルループにおける顧客構内機器、無線ＰＯＳ端末、または、モデムを有する携帯情報端末（「ＰＤＡ」）、携帯電話、ケーブルモデム、ラップトップコンピュータ、および、当業者が想到するであろう通信リンク３２を介して通信することのできるその他の適切な電子機器のようなその他の何らかの電子機器であってもよい。
【００３０】
基地局２４によってサービスされる加入者ステーションの数「ｎ」は、利用できる無線帯域幅の大きさ、または、加入者ステーション２８の構成および要件に応じて、変化してもよい。わかりやすいように、アップデートされる電子機器として、ここでは、加入者ステーション２８にしか言及しない。しかしながら、上述したようなものおよび通信リンク３２を介してソフトウェアアップデートを受信できるものなど、その他の電子機器が、本発明の範囲に存在する。
【００３１】
ネットワーク２０において、基地局２４は、適切なゲートウェイおよびバックホール３４によって、地上通信線データ交換網３０および公衆電話交換網３３のような少なくとも１つの電気通信網に接続されてもよい。バックホール３４は、Ｔ１、Ｔ３、Ｅ１、Ｅ３、ＯＣ３、または、その他の適切な地上通信線リンクのようなリンクであってもよく、あるいは、衛星チャネルリンク、その他の無線またはマイクロ波チャネルリンク、または、当業者が考えつくようなバックホールとして動作するのに適切なその他の何らかのリンクであってもよい。また、基地局２４は、ソフトウェアアップデートサーバー３６を含んでもよく、あるいは、バックホール３４またはその他の手段によって、ソフトウェアアップデートサーバー３６に接続されてもよく、そのソフトウェアアップデートサーバー３６は、加入者ステーション２８のためのソフトウェアロードを含む。さらに、基地局２４は、加入者データベースに接続され、その加入者データベースは、アップデートサーバー３６内に配置され、あるいは、そのような目的のために集中ネットワークオペレーションセンター（以下で説明する）のようなどこかほかの場所に提供される別個のデータベースサーバー（図示しない）内に配置され、そのデータベースサーバーは加入者ステーション２８の現在のソフトウェアロードの記録を保持する。
【００３２】
無線ネットワーク２０においては、通信リンク３２が、無線によって、基地局２４とそれぞれの加入者ステーション２８との間で確立されるが、有線、赤外線、および、超音波手段を含むその他の物理的な接続手段が、使用されてもよい。通信リンク３２は、必要に応じて、基地局２４とそれぞれの加入者ステーション２８ａ、２８ｂ、．．．、２８ｎとの間で音声およびデータ情報を伝送してもよい。通信リンク３２は、ＴＤＭＡ、ＦＤＭＡ、ＣＤＭＡ、ＯＦＤＭ、または、ＧＳＭのような混成システムなどを含む様々な多重化技術によって実施されてもよい。さらに、通信リンク３２は、音声通信またはデータ伝送のような異なる種類のデータを搬送する様々なチャネル内に配置されてもよく、あるいは、エンドユーザ通信またはネットワーク２０の制御のような様々な目的に使用されてもよい。図１に示される実施形態においては、通信リンク３２を介して送信されるデータは、ＩＰ（インターネットプロトコル）パケットとして送信されるが、任意の適切な種類のパケットが、使用されてもよい。
【００３３】
図２は、基地局２４の例をより詳細に示す。基地局２４は、通信リンク３２を介して無線通信を受信および送信するための１つかまたは複数のアンテナ４０を備える。アンテナ４０は無線送受信機４４に接続され、そして、その無線送受信機４４はモデム４８に接続される。モデム４８は、Ｉｎｔｅｌによって製造されるＰｅｎｔｉｕｍ（登録商標）ＩＩＩプロセッサシステムおよびそれに関連する装置のようなマイクロプロセッサルータアセンブリ５２に接続される。マイクロプロセッサルータアセンブリ５２は、必要であれば、複数のマイクロプロセッサを含んでもよいことがわかる。さらに、マイクロプロセッサルータアセンブリ５２のルータ機能は、必要であれば、別個のユニットとして提供されてもよい。マイクロプロセッサルータアセンブリ５２内において実施されるルータ機能は、何らかの適切なやり方でバックホール３４に接続され、基地局２４を少なくとも１つの電気通信網３０、３３に接続する。また、上述したように、基地局２４は、直接に、または、バックホール３４を介して、アップデートサーバー３６に接続されてもよい。
【００３４】
ここで、図３を参照すると、加入者ステーション２８の例が、より詳細に示される。加入者ステーション２８は、通信リンク３２を介して無線通信を受信および送信するために、１つかまたは複数のアンテナ６０を備える。アンテナ６０は、無線送受信機６４に接続され、そして、その無線送受信機６４は、モデム６８に接続される。モデム６８は、マイクロプロセッサアセンブリ７２に接続され、そのマイクロプロセッサアセンブリ７２は、メモリ装置７８に接続される。
【００３５】
マイクロプロセッサアセンブリ７２は、例えば、Ｉｎｔｅｌによって製造されるＳｔｒｏｎｇＡＲＭプロセッサを含んでもよく、様々な機能を実行し、それらの機能には、Ａ／Ｄ−Ｄ／Ａ変換、フィルタ、符号器、復号器、データ圧縮器、データ解凍器、および／または、パケット分解を実施することが含まれる。図３に示されるように、マイクロプロセッサアセンブリ７２は、また、モデム６８と１つかまたはそれ以上のポート７６とを相互接続し、その１つかまたはそれ以上のポート７６は、加入者ステーション２８をデータ装置および電話装置に接続するのに使用されてもよい。電話装置の例は、電話である。データ装置の例には、パーソナルコンピュータ、ＰＤＡ、または、それらに類似するものが含まれる。したがっって、マイクロプロセッサアセンブリ７２は、ポート７６とモデム６８との間のデータを処理するのに使用することができる。
【００３６】
加入者ステーション２８において、メモリ装置７８は、２つの主要構成要素、すなわち、（１）加入者ステーション２８を動作させるのに必要な命令およびデータを記憶するためにマイクロプロセッサアセンブリ７２によって使用される、ダイナミックＲＡＭ（ＤＲＡＭ）または同期型ＤＲＡＭ（ＳＤＲＡＭ）であってよい揮発性ランダムアクセスメモリ（「ＲＡＭ」）８２、および、（２）命令も含めたデータを記憶するのに使用される、加入者ステーション２８においてはフラッシュメモリである、不揮発性書き替え可能記憶装置ＲＳＵ８６を備える。ＲＳＵ８６においては、加入者ステーション２８の電源が切られたときにも、データが消失することはない。メモリ装置７８は、ブートソフトウェア、オペレーティングシステム、ソフトウェアアプリケーション、無線リソース管理ソフトウェア、デバイスドライバ、および、データファイルを含めた加入者ステーション２８の適切かつ所望の機能のために必要なすべての命令およびデータを含むのに使用することができる。
【００３７】
当業者には良く知られているように、ＲＡＭ８２は、典型的には、ＲＳＵ８６において使用されるフラッシュメモリよりも高速であり、そのために、加入者ステーション２８の現時点において好ましい実施形態においては、命令およびデータは、ほとんどの場合、実行される前に、マイクロプロセッサアセンブリ７２によってＲＳＵ８６からＲＡＭ８２にコピーされる。ある環境においては、当業者には良く知られていることではあるが、命令またはデータを、ＲＳＵ８６からマイクロプロセッサアセンブリ７２に直接読み込み、実行し、あるいは、動作する。
【００３８】
また、マイクロプロセッサアセンブリ７２は、以下で説明するように、ＲＡＭ８２からＲＳＵ８６に命令およびデータを書き込むのに使用することができる。
【００３９】
加入者ステーション２８において、ＲＡＭ８２は、３２ＭバイトのＳＤＲＡＭであり、ＲＳＵ８６は、８Ｍバイトのフラッシュメモリである。しかしながら、ＲＡＭメモリの容量および種類は、特に限定されるわけではなく、その他の種類の不揮発性書き替え可能メモリ、例えば、一般的なＩＤＥおよびＳＣＳＩハードドライブ、光メモリ記憶装置、および、ＥＰＲＯＭＳがフラッシュメモリの代わりに使用されてもよい。他のタイプの不揮発性書き替え可能メモリを当業者ならば想到することができるであろう。本発明の実施形態におけるＲＳＵ８６において代替の不揮発性書き替え可能メモリなどを使用することが必要とされるかもしれない以下の記載に対する変更にも、当業者ならば想到するであろう。
【００４０】
ＲＳＵ８６に使用されるようなフラッシュメモリは、一般的にブロック単位で読込及び書込をしなければならない。ブロックは、書き込むことのできる最小単位であり、書き込まれる前に、消去されなければならない（言い換えれば、フラッシュメモリは、「粒状」のものであり、以下で説明するように、それを使用する方法に影響を及ぼす）。当業者には、この制約が、加入者ステーション２８におけるフラッシュメモリの代わりに使用されるかもしれない何らかのその他の形態の不揮発性書き替え可能メモリには適用されないことがわかるはずである。加入者ステーション２８において現時点で使用されるある特定のフラッシュメモリは、２５６Ｋバイトのブロックサイズを有する。ここで、図４ａを参照すると、ＲＳＵ８６の初期パーティショニングが概略的に示される。ＲＳＵ８６は、論理的パーティションに分割され、それらの論理的パーティションのそれぞれは、１つかまたはそれ以上の論理的に連続するブロックからなる記憶装置である。当業者には明らかなように、「パーティション」および「論理的パーティション」という用語は、ここでは、同義的に使用される。本発明に対する唯一の制約は、サイズの等しいパーティションが使用されるかもしれない特別な場合を除いて、パーティションはサイズ変更可能および／または再配置可能でなければならないことである。したがって、論理的パーティション、および、場合によっては、この要件を満足する物理的パーティションは、いずれも本発明の範囲に含められる。
【００４１】
それぞれのパーティションは、少なくとも開始位置とそのパーティションのために定義された長さ／サイズとを有する。当業者には良く知られているように、パーティションは、何らかの目的のために、それらのパーティションがあたかも独立した個々のメモリ装置であるかのように取り扱われる。例えば、２つのパーティションを備えたハードドライブは、そのハードドライブに接続されたコンピュータで実行されているアプリケーションソフトウェアにとっては、２つの独立したハードドライブのように見える。また、当業者には良く知られているように、論理的パーティションおよび何らかの物理的パーティションは、典型的には、記憶装置内において柔軟性を提供するために、追加、削除、または、サイズを変更することができる。論理的パーティションの場合、これは、不揮発性書き替え可能メモリに記憶されたデータ構造を変更することによってなされ、あるいは、加入者ステーション２８の場合のように、以下で説明するように、スタートアップ時に再構成される。データ構造は、上述した開始位置およびサイズ／長さのようなデータを含み、記憶装置における物理的な場所と論理的パーティションとを対応させる。また、論理的なパーティショニングは、不連続な記憶場所を、アプリケーションにとっては、あたかも連続するブロックのように見えるようにすることができる。例えば、偶数番号のブロック（すなわち、ブロック０、２、４、６、など）が、アプリケーションにとっては、記憶装置の一方の連続するブロックに見え、かつ、奇数番号のブロック（すなわち、ブロック１、３、５、７、など）が、アプリケーションにとっては、他方の連続するブロックに見えるように、フラッシュＲＯＭをパーティショニングすることができる。当業者は、多くのその他のパーティショニング方式およびパーティショニング構造を考え出すことができ、それらは、本発明の範囲に含まれる。加入者ステーション２８において、ＲＳＵ８６は、まず最初に、３つのパーティション、すなわち、ブートパーティション１０４、コアファームウェアパーティション１０８、および、補助ソフトウェアパーティション１１２に分割される。
【００４２】
ブートパーティション１０４は、ＲＳＵ８６の第１のブロックに配置され、加入者ステーション２８のためのブートローディングファームウェアを含む。加入者ステーション２８は、スタートアップ（ブート）時、まず最初にＲＳＵ８６の第１のブロック内に存在する命令をマイクロプロセッサアセンブリ７２が実行するように構成されるが、ＲＳＵ８６の最後のブロックを読み込むような、その他の方式が使用されてもよい。ＲＳＵ８６の残りのブロックは、まず最初に、以下で説明するようにして、コアファームウェアパーティション１０８と補助ソフトウェアパーティション１１２とにパーティショニングされる。図４ａにおいて、コアファームウェアパーティション１０８は、ブートパーティション１０４の直後のブロックを占めるものとして示され、補助ソフトウェアパーティション１１２は、コアファームウェアパーティション１０８の最後のブロックとＲＳＵ８６の終了点との間に存在するブロックを占めるものとして示される。以下で説明するように、コアファームウェアパーティション１０８と補助ソフトウェアパーティション１１２との最初の位置は反対であってもよく、以下に記載されるように、アップグレードの結果として、反対にされてもよい（図４ｃ参照、図４ｃにおいて参照符号にダッシュを付加することにより反対の順序が示されている。）。
【００４３】
加入者ステーション２８において、ブートローディングファームウェアは、加入者ステーション２８においてさらなるＲＯＭまたはその他の不揮発性記憶装置パッケージを備える必要性を回避するために、ブートパーティション１０４内に備えられる。しかしながら、当業者には明らかなように、そのようなＲＯＭまたはその他の不揮発性記憶装置パッケージが、加入者ステーション２８において、メモリ装置７８かまたはどこか他の場所に備えられるのであれば、ブートパーティション１０４はそこに配置され、ＲＳＵ８６からは除去されてもよく、そして、そのＲＳＵ８６は、２つのパーティション１０８および１１２として構成される。「メモリサブシステム」という用語は、メモリ装置７８と、ブートパーティション１０４がＲＯＭまたは別の不揮発性記憶装置パッケージに記憶されているのであれば、そのＲＯＭまたは別の不揮発性記憶装置パッケージと、のいずれをも含むものである。
【００４４】
少なくとも最低限の機能を加入者ステーション２８に提供するのに必要なコアファームウェアが、まず最初に、コアファームウェアパーティション１０８に書き込まれる。コアファームウェアは、加入者ステーション２８の基本動作を提供する責任を有する。これらの基本動作は、メモリ管理と、タスクハンドリングと、ファイル、Ｉ／Ｏ、などの管理と、（何らかのエンドユーザサービスを提供するには必ずしも十分な機能ではないが）加入者ステーション２８が基地局２４と通信するのを可能にするのに必要な少なくとも最小限の数の機能と、を含んでもよい。加入者ステーション２８において、コアファームウェア内に含まれるオペレーティングシステムは、リナックスカーネルバージョン２．４を含み、ブートパーティション１０４内のブートローディングソフトウェアは、リナックスブートローダである。パーティション１０８内のコアファームウェアは、ｃｒａｍｆｓファイルシステムであり、そのｃｒａｍｆｓファイルシステムは、当業者には良く知られている読み出し専用の圧縮されたファイルシステムである。ｃｒａｍｆｓファイルシステムの資料は、容易に入手することができ（例えば、ｈｔｔｐ：／／ｓｏｕｒｃｅｆｏｒｇｅ．ｎｅｔ／ｐｒｏｊｅｃｔｓ／ｃｒａｍｆｓ／を参照）、その動作は、ここでは、さらには説明しない。
【００４５】
スタートアップ時、ブートパーティションが読み込まれ、そのパーティションの内容を実行することが開始されると、ブートローダは、コアファームウェアパーティション１０８の開始ブロックおよびサイズを探索するために、ＲＳＵ８６の開始点から順次に読み込むことを開始する。ブートローダは、ｃｒａｍｆｓファイルシステムにおいて定義されたスーパーブロックを捜し出すことによって、これを実行する。１つのブロックが見つかれば、それがコアファームウェアパーティション１０８における圧縮されたリナックスカーネルのスーパーブロックであるとみなされる。そして、ブートローダは、カーネルイメージをＲＡＭ８２内へ解凍するために、スーパーブロック内に記憶された情報を使用し、オペレーティングシステムが開始するときに、コアファームウェアパーティション１０８の開始ブロックおよびサイズをブートパラメータとしてリナックスカーネルに転送し、それによって、ＲＳＵのパーティショニングを決定することができる。
【００４６】
現時点においてはリナックスが好ましいが、その他のオペレーティングシステムおよびオペレーティングシステムバージョンが本発明の範囲に含まれる。ＲＳＵ８６内におけるコアファームウェアパーティション１０８の場所は、特に限定されるわけではなく、ブートローダとしてのブートパーティション１０４（もし存在すれば）がＲＳＵ８６の内容を探索した後に、有効なコアファームウェアパーティション１０８の開始点、すなわち、ｃｒａｍｆｓスーパーブロックが探索されるまでは、どのような連続した一連の論理的ブロックアドレスを占めてもよい。しかしながら、以下の説明から明らかとなるように、１つかまたはそれ以上のメモリブロックがコアファームウェアパーティション１０８または補助ソフトウェアパーティション１１２のどちらにも存在しない状態を回避するために、コアファームウェアパーティション１０８は、ブートパーティション１０４の直後に配置されるか、あるいは、ＲＳＵ８６の最後の部分に配置されることが好ましい。
【００４７】
残りのソフトウェアおよびデータは、ＲＳＵ８６の補助ソフトウェアパーティション１１２内に記憶される。以下、このソフトウェアは、補助ソフトウェアと呼ばれる。補助ソフトウェアは、特に限定されるわけではなく、オプションとしてのデバイスドライバ、ユーザアプリケーション、システムソフトウェアアプリケーション、データファイル、電話呼処理ソフトウェアのようなソフトウェアおよびエンドユーザアプリケーション、音声およびオーディオコーデック、ソフトウェアフィルタ、ファイアウォール、ユーティリティ、ヘルプファイル、加入者データファイル、ディジタルメディアファイル、および、当業者が想到するようなその他のアプリケーションファイルおよびデータファイルを含んでもよい。
【００４８】
補助ソフトウェアは、上述したｃｒａｍｆｓ形式のような圧縮ファイルシステム形式で記憶されてもよく、あるいは、この分野に精通する者が考えつくようなその他の何らかの適切な形で記憶されてもよい。補助ソフトウェアがモノリシックであれば、すなわち、ソフトウェアの変更およびアップデートがパーティションの内容全体を入れ替えることを必要とするものであれば、ｃｒａｍｆｓまたはそれに類似するファイル／記憶装置システムが、それらの代わりとなる好ましいものであるかもしれない。あるいは、補助ソフトウェアがモノリシックではなく、そのために、必要に応じて、パーティションにおいてソフトウェア構成要素をロードおよび／またはアンロードすることができるのであれば、Ａｘｉｓ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ＡＢ，Ｅｍｄａｌａｖａｅｇｅｎ  １４，Ｓ−２２３  ６９，Ｌｕｎｄ  Ｓｗｅｄｅｎによって開発されたＪＦＦＳ（Ｊｏｕｒｎａｌｉｎｇ  Ｆｌａｓｈ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）のような適切なシステムが、使用されてもよい。
【００４９】
一般的に、補助ソフトウェアパーティション１１２内に記憶された補助ソフトウェアは、加入者ステーション２８が基地局２４と通信するためにはなくてもよいものであるが、補助ソフトウェアパーティション１１２内に記憶された補助ソフトウェアは、加入者ステーション２８が、ボイスコールを送受信し、エンドユーザデータコネクション（ｈｔｔｐブラウザセッションのような）をなし、または、その他のエンドユーザ機能をなすのを可能にするのに必要とされるかもしれない。ＲＳＵ８６内における補助ソフトウェアパーティション１１２の場所は、特に限定されるわけではなく、論理的に連続する一連のブロックを占めればよいが、上述したように、好ましくは、ＲＳＵ８６の最後の部分のブロックに存在するか、あるいは、ブートパーティション１０４の直後に存在する。
【００５０】
図４ａに示されるように、コアファームウェアパーティション１０８は、補助ソフトウェアパーティション１１２よりもサイズが小さい。しかしながら、コアファームウェアパーティション１０８および補助ソフトウェアパーティション１１２としてパーティショニングするのに利用できるブロック数が、偶数であれば、それらのパーティションは、サイズが同じであってもよい。加入者ステーション２８のこの実施形態においては、ＲＳＵ８６において利用できる総記憶空間は、８Ｍバイトであり、ブートパーティション１０４は、２５６Ｋバイトであり、コアファームウェアパーティション１０８は、３．７５Ｍバイトの最大サイズを有し、補助ソフトウェアパーティション１１２は、（７．７５Ｍバイト−コアファームウェアパーティション１０８のサイズ）の最大サイズを有する。ここで説明される特定の実施形態においては、補助ソフトウェアブロックの最大サイズは、４Ｍバイトである。
【００５１】
この実施形態においては、ＲＳＵ８６におけるメモリブロックの総数は偶数であるので、かつ、１つのブロックがブートパーティション１０４に使用されるので、奇数の数のブロックが、コアファームウェアパーティション１０８および補助ソフトウェアパーティション１１２としてパーティショニングするのに利用でき、したがって、コアファームウェアパーティション１０８および補助ソフトウェアパーティション１１２は、サイズが等しくないかもしれない。以下の説明から明らかとなるように、重要な制約は、コアファームウェアパーティション１０８が補助ソフトウェアパーティション１１２よりも大きくてはいけないことである。それによって、いかなる場合にも、既存のコアファームウェアパーティション１０８に上書きすることなく、コアファームウェアのアップデートを補助ソフトウェアパーティション１１２に書き込むことができる。これは、以下の説明からすぐにわかることである。
【００５２】
コアファームウェアパーティション１０８内のコアファームウェアをアップデートすることが望ましい場合、以下でより詳細に説明するように、アップデートコアファームウェアが、アップデートサーバー３６から通信リンク３２を介して加入者ステーション２８に転送される。加入者ステーション２８へのアップデートコアファームウェアおよび補助ソフトウェアのすべての転送が完了するまで、コアファームウェアが、受信され、加入者ステーション２８内のＲＡＭ８２に記憶されるが、必要であれば、アップデートコアファームウェアを転送し、そして、補助ソフトウェアを転送する前に、そのアップデートコアファームウェアをインストールすることも考えられる。アップデートのサイズおよびＲＡＭ８２のサイズに応じて、加入者ステーション２８で実行されている大きな量のＲＡＭ８２を必要とする何らかのプロセスを終了しなければならないかもしれない。以下で説明するように、そのようなプロセスを終了させる能力は、加入者ステーション２８をアップデートすることを決定する前に考慮される状態判断基準の１つである。
【００５３】
アップデートサーバー３６から加入者ステーション２８にコアファームウェアおよび補助ソフトウェアを転送するために、ＵＤＰ／ＩＰまたはＴＣＰ／ＩＰによってソフトウェアをパケットで送信するなど、様々な技術を使用できることが考えられる。ソフトウェアを転送するのに使用される通信リンク３２または物理的メディア（有線接続、など）は、障害または誤りの影響を受ける可能性があるので、受信された転送ソフトウェアの正当性が、使用される前に検査される。この正当性を検査するのに使用される特定の方法は、特に限定されるわけではなく、当業者には明らかなように、チェックサム、ＣＲＣ、ディジタル署名などが、転送のすべてかまたは一部分に使用されてもよい。受信された内容が、正しくなければ、また、１つかまたはそれ以上の誤りを含むならば、ソフトウェアまたはそれの適切な一部分が、完全な正しいコピーが加入者ステーション２８で受信されるまで、アップデートサーバー３６から加入者ステーション２８に再送されてもよい。
【００５４】
アップデート／交換コアファームウェアの完全な正しいコピー、すなわち、「新しい」コアファームウェアが、加入者ステーション２８において受信され、ＲＡＭ８２に記憶されると、アップデートプロセスは、これまでに補助ソフトウェアパーティション１１２によって占められていたＲＳＵ８６の全部分または一部分に新しいコアファームウェアを書き込むことによって、処理を続行する。この上書きを実行するために、何らかの残存するプロセス、それは、加入者ステーション２８で実行されていたものであり、また、補助ソフトウェアパーティション１１２内に存在する補助ソフトウェアへの読み込みアクセスを必要とするものであるが、それらの残存プロセスが、終了させられる。これらのプロセス（もしあれば）が終了させられると、新しいコアファームウェアが、ＲＡＭ８２からコピーされ、ＲＳＵ８６に書き込まれる。新しいコアファームウェアが、新しいコアファームウェアパーティション１０８’として図４ｂに示される。ここで使用される場合、「上書きする」および「上書きされる」という用語は、古いデータと交換するために新しいデータを不揮発性メモリに配置するのに必要な操作を備えることを意味するものであり、フラッシュメモリの場合、新しいデータをフラッシュメモリに書き込む前に、（もしそのようなステップが必要であれば）まずメモリを消去することを含む。
【００５５】
また、受信されるアップデートが書き込む前に適切に受信されたことを検査することができれば、ＲＡＭ８２において必要とされるメモリを少なくするために、アップデートされるコアファームウェアは、それが受信されているときに、一定量ずつ、例えば、２５６Ｋバイトのアップデートブロックの単位で、書き込まれてもよいことが考えられる。そのような場合、与えられた量のアップデートデータが、加入者ステーション２８において受信されると、そのアップデートデータは、ＲＡＭ８２に一時的に記憶され、かつ、検査され、そして、ＲＳＵ８６に書き込まれ、そして、受信される次のアップデートは、ＲＡＭ８２に一時的に記憶されている以前に受信されたアップデートに上書きされる。このように、ＲＡＭ８２から待避した様々なアプリケーションおよびプロセスは、以下で説明するように、少なくとも加入者ステーション２８がリブートされるまでは、アップデートプロセス中に必ずしも終了させられなくてもよい。
【００５６】
図４ｂに示されるように、上書きは、新しいコアファームウェアパーティション１０８’の終了点が補助ソフトウェアパーティション１１２の終了点に一致するように決定された補助ソフトウェアパーティション１１２の開始点からのオフセットにおいて開始される。上述した例において、ＲＳＵ８６が、全サイズが８Ｍバイトであり、ブートパーティション１０４のサイズが０．２５Ｍバイトであり、補助ソフトウェアパーティション１１２のサイズが４Ｍバイトであり、そして、コアファームウェアパーティション１０８が、３．７５Ｍバイトであれば、新しいコアファームウェアパーティション１０８’が補助ソフトウェアパーティション１１２上に上書きされるオフセットは、ブートパーティション１０４がＲＳＵ８６の開始点に実際に存在すると仮定すれば、ＲＳＵ８６の開始点から４．２５Ｍバイトである。
【００５７】
新しいコアファームウェアパーティション１０８’が、書き込まれた後、それの内容が、加入者ステーション２８によって検査され、加入者ステーション２８は、今度は新しいコアファームウェアパーティション１０８’から内容を読み込み、その内容を、ＲＡＭ８２内の新しいコアファームウェアのコピーと比較する。受信されたとき、新しいコアファームウェアパーティション１０８’が、ＲＡＭ８２からより小さな部分に書き込まれるならば、次に受信される部分がＲＡＭ８２に一時的に記憶された最後の部分を上書きする前に、それらのより小さい部分の書き込みは、ＲＡＭ８２内に記憶されたものと比較される。
【００５８】
いずれの場合においても、新しいコアファームウェアパーティション１０８’から読み込まれた内容が正しいことを確認できなければ、新しいコアファームウェアパーティション１０８’の書き込み、または、新しいコアファームウェアパーティション１０８’の関連する部分の書き込みが、再度、実行され、内容が正しいことが確認されるまで、検査／再書き込みプロセスが、反復される。
【００５９】
新しいコアファームウェアパーティション１０８’の内容が、正しく書き込まれたと確認されると、新しいコアファームウェアパーティション１０８’は、加入者ステーション２８によって、最も新しいコアファームウェアを含むものとみなされ、そして、コアファームウェアパーティション１０８内に存在する元々のコアファームウェアは、「無効」のマークを付けることによって、加入者ステーション２８が、実行できないようにされる。コアファームウェアパーティション１０８および１０８’がｃｒａｍｆｓ形式リナックスカーネルなどを含む加入者ステーション２８においては、コアファームウェアパーティション１０８内に存在する元々のコアファームウェアは、コアファームウェアパーティション１０８のスーパーブロックをそれがもはや有効なスーパーブロックではないものに変更するように上書きすることによって、無効であるとみなされる。これがなされると、加入者ステーション２８が次にリブートするときには、ブートローダは、最も新しい有効なコアファームウェアパーティションである新しいコアファームウェアパーティション１０８’のスーパーブロックしか探索せず、加入者ステーション２８は、パーティション１０８’からブートすることになる。
【００６０】
図４ｂから明らかなように、上述したことは、結果として、無効なコアファームウェアパーティション１０８と、もしあれば、有効なデータをもはや含んでいない補助ソフトウェアパーティション１１２の残りの部分とをもたらす。そして、加入者ステーション２８は、図４ｃに示されるように、補助ソフトウェアをＲＡＭ８２から書き込み（あるいは、その補助ソフトウェアをアップデートサーバー３６からＲＡＭ８２にダウンロードし（もしこれがまだ実行されていなければ））、新しい補助ソフトウェアパーティション１１２’をコアファームウェアパーティション１０８および補助ソフトウェアパーティション１１２の残りの部分（もしあれば）のメモリ空間に形成することができる。あるいは、加入者ステーション２８は、新しいコアファームウェアを実行するために、リブートされてもよく、そして、補助ソフトウェアが、アップデートサーバーからダウンロードされ、新しい補助ソフトウェアパーティション１１２’に記憶されてもよい。コアファームウェアについて上述したものと類似するようなやり方で、新しい補助ソフトウェアの書き込みが正しくなされたことが、確認されると、加入者ステーション２８は、補助ソフトウェアを実行することができ（加入者ステーション２８がすでにリブートされておりかつ新しいコアファームウェアを実行していると仮定すれば）、あるいは、新しいコアファームウェアパーティション１０８’内のアップデートされたコアファームウェアをローダにブートさせかつコアファームウェアおよび補助ソフトウェアの両方によって提供されるすべてのサービスをリスタートするために、リブートされてもよい。その際、オペレーティングシステムは、新しいコアファームウェアパーティション１０８’のスーパーブロックおよび新しい補助ソフトウェアパーティション１１２’のスーパーブロック（もしｃｒａｍｆｓが補助ソフトウェアパーティションに使用されていれば）を探索し、リパーティショニングされたＲＳＵ８６を表現するデータ構造を形成する。
【００６１】
上述したことから明らかなように、アップデートプロセス中に、加入者ステーション２８が、例え、電源が切られ、電力が不安定であり、リブートを必要とし、さもなければ、妨害されても、コアファームウェアの有効なコピーは、常に、ＲＳＵ８６に存在する。アップデートプロセスが、新しいコアファームウェアパーティション１０８’を補助ソフトウェアパーティション１１２に上書きすることによってすでに開始されている場合、新しいコアファームウェアパーティション１０８’の書き込みが完了および確認される前に、加入者ステーション２８の電源が切られると、加入者ステーション２８は、次にそれの電源が再び投入されたとき、依然として無傷の古いコアファームウェアパーティション１０８からブートする。有効な補助ソフトウェアパーティション１１２が存在しないことがわかり、アップデートプロセス全体が、リスタートされるか、あるいは、有効な補助ソフトウェアの転送が、アップデートサーバー３６に要求され、復元された補助ソフトウェアパーティション１１２としてＲＳＵ８６に記憶されてもよく、アップデートプロセスは、後に延期される。ネットワーク２０が過度の負荷がかかった状態で使用され、アップデートを実行する容量を容易に得ることができない場合、この後者の選択肢が選択される。
【００６２】
アップデートがうまく実行されたならば、加入者ステーション２８内のコアファームウェアを再びアップデートしたい場合にはいつでも、新しいコアファームウェアパーティション１０８が、補助ソフトウェアパーティション１１２’の一部分を上書きし、新しい補助ソフトウェアパーティション１１２が、古いコアファームウェアパーティション１０８’および古い補助ソフトウェアパーティション１１２’の残りの部分を上書きし、再び、図４ａに示される構成が得られる。新しいコアファームウェアパーティション１０８が正しいことが確認された後、古いコアファームウェアパーティション１０８’のスーパーブロックを消去することは絶対に必要なわけではないことに注意されたい。なぜなら、アップデートが、その段階において中断されたならば、リブートが発生したとき、ブートローダは、古いコアファームウェアパーティション１０８’に到達する前に、新しいコアファームウェアパーティション１０８の内容を探索および使用するからである。
【００６３】
コアファームウェアをその後にアップデートするたびに、新しいコアファームウェアパーティションが、既存の補助ソフトウェアパーティションに上書きされ、かつ、新しい補助ソフトウェアパーティションが、古いコアファームウェアパーティションおよび補助ソフトウェアパーティションの残りの部分に上書きされることになる。
【００６４】
ここで使用されるように、「新しい補助ソフトウェア」という用語は、補助ソフトウェアに変更がまったくなされておらず、かつ、新しい補助ソフトウェアが、加入者ステーション２８にダウンロードされたその変更されていないソフトウェアの新しいコピーのことをただ単に意味する場合、および、補助ソフトウェアのアップデートされたかさもなければ変更されたバージョンが加入者ステーション２８にダウンロードされた場合の両方を含むことを意図していることに注意されたい。
【００６５】
図５ａに示されるように、通常動作中のＲＳＵ８６におけるパーティション１０８および１１２の場所を変えたくなければ、「古い」コアファームウェアパーティション１０８が、「古い」補助ソフトウェアパーティション１１２上にコピーされ、コピーされた古いコアファームウェアパーティション１０８”が、形成されてもよい。そして、このコピーされた古いコアファームウェアパーティション１０８”が、検査され、正しいことが確認されると、元々のコアファームウェアパーティション１０８は、それを変更するためにそれのスーパーブロックを上書きすることによって、または、何らかのその他の適切な手段によって、無効なものであるとみなされる。この時点において、加入者ステーション２８が、何らかの理由でリブートされれば、ブートローダは、コピーされたコアファームウェアパーティション１０８”の内容を探索および使用する。
【００６６】
次に、図５ｂに示されるように、「新しい」コアファームウェアが、ＲＡＭ８２から元々のコアファームウェアパーティション１０８に上書きされ、検査される。元々のコアファームウェアパーティション１０８に代わる新しいコアファームウェアのスーパーブロックは、コアファームウェアパーティション１０８の残りの部分の内容が検査されるまでは、元々のコアファームウェアパーティション１０８に書き込まれることはなく、その後に、スーパーブロックが書き込まれ、かつ、検査される。そして、コピーされたコアファームウェアパーティション１０８”は、それのスーパーブロックを上書きまたは変更することによって、または、何らかのその他の適切な手段によって、無効なものであるとみなされる。このように、新しいコアファームウェアパーティション１０８の書き込みを検査するのに先だってコアファームウェアをロードしなければならないリブートまたはその他のイベントは、新しいコアファームウェアパーティション１０８の代わりに、コピーされたコアファームウェアパーティション１０８”を使用する。
【００６７】
最後に、新しい補助ソフトウェアが、図５ｃに示されるように、ＲＡＭ８２からコピーされ、補助ソフトウェアパーティション１１２が形成され、このパーティションが使用される前に検査され、加入者ステーション２８は、再度、その通常の動作構成になる。このプロセスは、結果として、ＲＳＵ８６において同じ位置を常に有するパーティション１０８および１１２をもたらすが、コアファームウェアパーティション１０８の内容をコピーされるコアファームウェアパーティション１０８”にコピーするために実行される余計な書き込み操作および確認操作を必要とし、これは、アップデートを実行するのに必要な時間を増加させ、そして、ＲＳＵ８６がフラッシュメモリであれば、より早くＲＳＵ８６を疲弊させるかもしれない。
【００６８】
本発明のこの実施形態においては、加入者ステーション２８におけるソフトウェアのアップデートは、管理されたプロセスである。これは、とりわけ、主要な電話回線に取って代わる無線ローカルループのようなクリティカルネットワークまたは「常時サービス継続性」ネットワークにおいては重要なことである。図６は、ネットワークオペレーションセンター（ＮＯＣ）２００、ネットワーク２０の基地局２４におけるそれぞれのセクタごとの無線セクタマネージャー２０４、および、ネットワーク２０によってサービスを提供されるそれぞれの加入者ステーションごとの加入者ステーションアップデートクライアント２０８を含むネットワーク２０の管理システム階層を示す。
【００６９】
ネットワークオペレーションセンター２００は、ネットワーク２０のオペレータによって操作される中央集中設備であり、ネットワーク２０全体における加入者ステーションをアップデートするのを管理することに加えて、ＯＡＭ＆Ｐなどのその他のネットワーク管理機能を実行することもできる。無線セクタマネージャー２０４は、好ましくは、ネットワーク２０のそれぞれの基地局２４に配置され、また、アップデートサーバー３６と同じ場所に配置されてもよく、あるいは、アップデートサーバー３６内で実施されてもよい。基地局２４が、無指向性（単一セクタ）基地局であれば、その基地局においては、ただ１つの無線セクタマネージャー２０４しか提供されない。より一般的には、基地局２４は、指向性（ビーム形成）アンテナを使用することも考えられ、その指向性アンテナによって、基地局２４は、より多くの加入者ステーション２８にサービスを提供することができる。例えば、６０°のビーム形成アンテナが使用されるならば、基地局２４は、６つの異なる無線セクタとして構成することができ、それぞれのセクタは、その基地局２４によってサービスを提供される総加入者ステーション２８の一部にサービスを提供する。そのような場合、６つの無線セクタマネージャー２０４が、基地局２４に提供される。最後に、それぞれの加入者ステーション２８は、そのコアファームウェアの一部分として、アップデートクライアント２０８を含み、そのアップデートクライアント２０８は、加入者ステーション２８で動作する。
【００７０】
ＮＯＣ２００は、数百の無線セクタマネージャー２０４にサービスを提供することができ、そして、それらの無線セクタマネージャー２０４を介して、数千またはそれ以上の加入者ステーション２８にそれらのアップデートクライアント２０８を介してサービスを提供することができるので、図６においては、破線で示される無線セクタマネージャー２０４は、複数のそのような無線セクタマネージャー２０４およびそれらに関連するアップデートクライアントを表現しようとするものである。
【００７１】
加入者ステーション２８の補助ソフトウェアまたはコアファームウェアへのアップデートが生成され、かつ、ネットワーク２０のオペレータがそのアップデートを実施したければ、ネットワークオペレーションセンター２００は、ネットワーク２０によってサービスを提供されるそれぞれの加入者ステーション２８内にロードされたソフトウェアの現在のバージョンを判断する。当業者には明らかなように、この判断は、様々なやり方でなされてもよい。本発明の実施形態においては、加入者ステーション２８の電源が投入されるたびに、および／または、アップデートがなされた後にその都度、それぞれの加入者ステーション２８のアップデートクライアント２０８が、その加入者ステーション２８にサービスを提供している無線セクタマネージャー２０４に、加入者ステーション２８内にロードされたソフトウェアの現在のバージョンを報告する。無線セクタマネージャー２０４は、この情報をネットワークオペレーションセンター２００に転送し、そのネットワークオペレーションセンター２００において、その情報は、適切なデータベースに記憶される。当業者には明らかなように、それぞれの加入者ステーション２８の現在のソフトウェアロードを決定するために、適切な間隔でアップデートクライアント２０８をポーリングすることなども含めて、様々なその他の技術を使用することができる。
【００７２】
ネットワーク２０におけるそれぞれの加入者ステーションの現在のソフトウェアロード、または、ネットワーク２０において関心のある一部の加入者ステーション２８（例えば、ネットワークオペレータは特定の都市の加入者ステーションをアップデートすることにしか関心がないかもしれない）の現在のソフトウェアロードが、決定されると、ネットワークオペレーションセンター２００は、アップデートされるべき加入者ステーション２８を決定する。ほとんどの環境においては、ネットワーク２０におけるすべての加入者ステーション２８をアップデートすることが望ましいが、一部の選択された加入者ステーション２８をアップデートすることが、あるいは、個々の加入者ステーション２８をアップデートすることすらもが、望ましいと考えられる場合もある。
【００７３】
ネットワークオペレーションセンター２００は、アップデートされるべき加入者ステーション２８を備えた無線セクタマネージャー２０４にサービスを提供する１つかまたはそれ以上のアップデートサーバー３６において、アップデートされた所望のソフトウェアを利用できることを保証し、必要であれば、アップデートされたソフトウェアをアップデートサーバー３６に転送する。次に、ネットワークオペレーションセンター２００は、アップデートされるべき加入者ステーション２８を備えた無線セクタマネージャー２０４にそれらの加入者ステーション２８のＩＤを通知し、アップデートを開始するようにそれらの無線セクタマネージャー２０４に指示する。
【００７４】
無線セクタマネージャー２０４が、ネットワークオペレーションセンター２００からアップデートの指示を受信すると、無線セクタマネージャー２０４は、それが管理するアップデートされるべき加入者ステーション２８のアクティビティのレベルおよび／または状態を判断する。理想的には、アップデートは、そのアップデートが通信リンク３２で必要とする容量がその他のものに必要とされない場合、および／または、加入者ステーション２８がアップデートプロセスのために中断されなければならないエンドユーザプロセスを実行していない場合にしか実施されない。したがって、無線セクタマネージャー２０４は、まず最初に、アップデートを送信するために通信リンク３２に余裕および／または容量があるかどうかを判断する。典型的には、そのようなアップデートは、通信リンク３２がエンドユーザによってあまり利用されていない深夜または早朝に実施されることが考えられる。しかしながら、また、ネットワーク２０の動作を安定させるために、あるいは、改善されたセキュリティなどを提供するために必要とされるような重要なアップデートは、ネットワークオペレータセンター２００によって高いアップデート優先順位を割り付けられてもよいことが考えられ、そのネットワークオペレータセンター２００は、アップデートをできるだけ早く実施するように無線セクタマネージャー２０４に指示し、通信リンク３２の容量をその他のものに使用するのを終了または中断し、および／または、アップデートされるべき加入者ステーション２８におけるエンドユーザアクティビティを中断し、サービスを低下させ、または、保留する。
【００７５】
無線セクタマネージャー２０４が、無線セクタマネージャー２０４が加入者ステーション２８にアップデートを送信するための容量を通信リンク３２に有すると判断すれば、あるいは、無線セクタマネージャー２０４が容量を確保した優先順位の高いアップデートの場合、無線セクタマネージャー２０４は、アップデートされるべき加入者ステーション２８それぞれにおけるアップデートクライアント２０８に問い合わせ、それらの加入者ステーション２８の状態を判断する。この状態は、加入者ステーション２８において現在なされているアクティビティのレベルおよび／または種類を通知するものである。
【００７６】
例えば、加入者ステーション２８は、それが１０分の間ずっとアイドル状態（エンドユーザアクティビティがない）であること、あるいは、それが、現在、エンドユーザのためのｈｔｔｐセッションを実行していること、などを通知してもよい。転送されるアップデートのダウンロードは、典型的には、まず最初に、ＲＡＭ８２に記憶されるので、そのダウンロードを記憶するのに必要な選択されたメモリの量（この量は、すべてのアップデートのために予め定められた量であってもよく、あるいは、無線セクタマネージャー２０４によって、それのアップデートクライアント２０８への状態問い合わせの中に提供されてもよい）が、ＲＡＭ８２において足らなければ、加入者ステーション２８は、この情報を、無線セクタマネージャー２０４へのそれの状態レポートに含める。あるいは、加入者ステーション２３におけるアップデートクライアント２０８は、メモリ空間を解放するために、ＲＡＭメモリ８２を使用しているプロセスおよび／またはアプリケーションを終了させることができるかどうかを判断してもよく、そして、もしそれができれば、状態応答を無線セクタマネージャー２０４に送信する前に、そのようにする。
【００７７】
無線セクタマネージャー２０４は、アップデートされるべきそれぞれの加入者ステーション２８から受信した状態応答を精査し、どの加入者ステーション２８をこの時点におけるアップデートに含めてもよいかを決定する。そして、それらの加入者ステーション２８それぞれのアップデートクライアント２０８は、無線セクタマネージャー２０４から送信されるアップデート情報を受信し、そのアップデート情報は、それらの加入者ステーション２８がアップデートされることをそれらの加入者ステーション２８に通知し、かつ、アップデートが送信される通信リンク３２のチャネルを指示するものである。
【００７８】
そして、無線セクタマネージャー２０４は、アップデートサーバー３６からのアップデートを、アップデートを処理するように通知されている加入者ステーション２８にマルチキャスト送信することを開始する。本発明の実施形態においては、アップデートは、マルチキャスト送信として、ＩＰを介してＵＤＰによって送信され、送信されるそれぞれのパケットは、正しく受信されたことを検査するためのＣＲＣチェックサム、および、パケットの一連番号またはその他の固有の識別子を含み、それによって、それぞれの加入者ステーション２８は、必要なすべてのパケットを正しく受信したかどうかを判断することができる。１つかまたはそれ以上のパケットが、加入者ステーション２８によって、誤りのある状態またはまるまる紛失した状態で受信された場合、そのような加入者ステーション２８は、パケットの送信が進行中に、再送要求を無線セクタマネージャー２０４に送信してもよく、そして、要求されたパケットが、再送されてもよい。好ましくは、この再送は、マルチキャストチャネルを介して実施され、アップデートされるすべての加入者ステーション２８にとって有効であるが（１つよりも多い加入者ステーション２８が同じパケットの再送を必要とする場合）、また、そのような再送は、そのために、無線セクタマネージャー２０４によって加入者ステーション２８との間に確立された通信リンク３２の専用チャネルを介して、１つの加入者ステーション２８に対してなされてもよいことが考えられる。
【００７９】
本発明の実施形態においては、アップデート全体が、ダウンロードされ、かつ、検査されたならば、加入者ステーションにおけるアップデートクライアントは、ＲＳＵ８６のアップデートをいつ実施するかを決定しなければならない。アップデートは、加入者ステーション２８のリブート（リスタート）を必要とするので、アップデートクライアント２０８は、たとえあるとしてもサービスの最小限の中断しかエンドユーザに発生しないようなアップデートのための時間帯を選択することを試みる。繰り返すと、そのようなアップデートは、典型的には、深夜または早朝に、あるいは、ユーザが加入者ステーション２８を使用する可能性の低いその他のいずれかの時間に、実施されることが考えられる。
【００８０】
しかしながら、また、加入者ステーション２８におけるアップデートクライアント２０８は、エンドユーザのどのようなアクティビティが発生しているかおよび／またはエンドユーザの最後のアクティビティからの時間を判断することによって、アップデートをいつ実施するかについてインテリジェントに決定してもよい。例えば、エンドユーザの音声コネクションまたはデータコネクションを２０分以上も前に最後に実施した加入者ステーション２８は、アップデートが実施される次の数分間はエンドユーザによって使用されないと合理的に仮定することができる。
【００８１】
繰り返すと、また、何らかのアップデートは、それらのアップデートに高い優先順位を割り付けさせるのに十分なほどネットワーク２０の動作にとって重要性を有することが考えられ、その高い優先順位は、アップデートが実施されるのを保証するために、加入者ステーションにおけるエンドユーザのアクティビティをアップデートクライアント２０８が終了させるのを可能にする。
【００８２】
アップデートクライアント２０８が、アップデートを実施することができると判断すれば、上述したプロセスが、実行され、新しいファームウェアパーティション１０８’またはコピーされるパーティション１０８などが、補助ソフトウェアパーティション１１２に上書きされる。
【００８３】
アップデートがうまく実施され、加入者ステーション２８が新しいコアファームウェアおよび／または補助ソフトウェアをリブートし、そして、それらの新しいコアファームウェアおよび／または補助ソフトウェアが実行されると、アップデート状態メッセージが、無線セクタマネージャー２０４に送信され、アップデートが完了したことを通知し、かつ、加入者ステーション２８によって実行されるソフトウェアのバージョン番号を確認する。そして、無線セクタマネージャー２０４は、アップデートされた加入者ステーション２８および依然としてアップデートを要求している加入者ステーション２８に関するそれの記録を更新する。
【００８４】
そして、無線セクタマネージャー２０は、アップデートされるべき残りの加入者ステーション２８のために、１回かまたはそれ以上の回数だけ繰り返すことによってプロセスを反復する。無線セクタにおけるアップデートされるべき予め選択された比率の加入者ステーション２８をアップデートできるようになるまではアップデートは開始されないことも考えられる。例えば、無線セクタマネージャー２０４のセクタにおけるアップデートされるべき加入者ステーション２８の少なくとも５０％がアップデートできるようにならない限り、その無線セクタマネージャー２０４はアップデートを開始しないことが選択されてもよい。もしこのしきい値に達しなければ、このしきい値を満足できるまで、あるいは、ネットワークオペレーションセンターがこのしきい値を（例えば、３５％にまで）下げ、または、アップデートの優先順位を上げ、それによって、加入者ステーション２８が強制的にアップデートを実施させられるまで、アップデートは延期される。
【００８５】
ネットワークオペレーションセンター２００は、無線セクタマネージャー２０４によって、アップデートの状態を通知される。したがって、ネットワークオペレーションセンター２００は、アップデートされた加入者ステーション２８の数およびアップデートされるべき残りの加入者ステーション２８の数を判断することができる。ネットワークオペレーションセンター２００が、所望されるよりも少ない加入者ステーション２８に対してアップデートが実行されていることに気がつけば、ネットワークオペレーションセンター２００は、それらの加入者ステーション２８に強制的にアップデートなどの準備をさせるために、そのアップデートに高い優先順位を適用してもよい。
【００８６】
ほとんどの環境においては、コアファームウェアアップデートおよび補助ソフトウェアアップデートは、１つのアップデートとして送信されると考えられるが、また、環境によっては、まず最初に、コアファームウェアアップデートを送信し、加入者ステーション２８がそのアップデートをうまくインストールした後に、補助ソフトウェアアップデートを送信することが望ましいかもしれないことが考えられる。また、環境によっては、補助ソフトウェアだけをアップデートすることが望ましいことも考えられる。そのような場合、コアファームウェアは、アップデートされず、アップデートされた補助ソフトウェアが、既存のソフトウェアパーティション１１２に上書きされる。
【００８７】
図７は、上述したアップデートプロセスのフローチャートを示す。ネットワークオペレーションセンター２００が、ネットワーク２０に存在する機器をアップデートしたい場合、ステップ３００において、アップデートをインストールされるべき機器が決定される。ステップ３０４において、アップデートが、１つかまたは複数のアップデートサーバー３６に転送され、さもなければ、それらのアップデートサーバー３６によって利用できるようにされ、それらのアップデートサーバー３６から、アップデートが、アップデートされるべき機器に転送される。
【００８８】
ステップ３０８において、それぞれの無線セクタマネージャー２０４は、それがサービスを提供している機器のどれをアップデートすることができるかを判断する。ステップ３１２において、無線セクタマネージャー２０４は、それらの機器がアップデートされることをそれらに通知し、マルチキャストパラメータなどのアップデート通信の詳細を提供する。
【００８９】
ステップ３１６において、アップデートが、アップデートされる機器に転送される。対象となるそれぞれの機器は、送信が完了したときかまたは送信中に、送信されたアップデートが正しく受信されたかどうかを確認し、ステップ３２０において、送信の誤りのある部分を受信し、あるいは、送信の一部を受信できなかった機器は、このことを無線セクタマネージャー２０４に通知し、無線セクタマネージャー２０４は、それらの部分を再送する。
【００９０】
ステップ３２４において、機器が、アップデートの正しいコピーを受信すれば、機器は、アップデートを実行する適切な時間を決定する。上述したように、この決定は、取るに足らない問題であってもよく（すなわち、機器の状態に関係なくアップデートを実行する）、あるいは、機器の状態に応じてなされてもよく、その機器の状態には、機器で実行されている現在のプロセス、エンドユーザプロセスが実行されてからの時間、など、のような要因が含まれる。
【００９１】
機器のアップデートおよびリブートが、完了すると、ステップ３２８において、機器は、それがアップデートされたことをそれを管理する無線セクタマネージャー２０４に通知し、また、それの現在のソフトウェアロードの詳細を提供してもよい。
【００９２】
ステップ３３２において、それぞれの無線セクタマネージャー２０４は、それが管理する機器でまだアップデートされていないものがあるかどうかを判断する。そのような機器がまだあれば、必要に応じて、ステップ３０８〜ステップ３２８が、再度、実行される。そのような機器がもうなければ、アップデートプロセスは、ステップ３３６において完了する。
【００９３】
ここで説明されたいくつかの実施形態は、本発明の特定の実施形態を説明するものであり、この実施形態の組み合わせ、一部分、および、変形は、本発明の範囲に含まれることがわかる。
【００９４】
本発明の上述した実施形態は、本発明の例として説明されたものであり、当業者は、ここに添付された特許請求の範囲によってのみ定義される本発明の範囲を逸脱することなく、それに変形および変更を実施することができる。
【図面の簡単な説明】
【００９５】
【図１】本発明の実施形態における電子機器のアップグレードを可能にするネットワークのブロック図である。
【図２】本発明の実施形態におけるアップデートステーションのブロック図である。
【図３】本発明の実施形態におけるメモリ装置を含むアップデート可能な電子機器のブロック図である。
【図４ａ】図３に示される電子機器における本発明の実施形態のメモリ装置のブロック図である。
【図４ｂ】図３に示される電子機器における本発明の実施形態のメモリ装置のブロック図である。
【図４ｃ】図３に示される電子機器における本発明の実施形態のメモリ装置のブロック図である。
【図５ａ】図３に示される電子機器における本発明の別の実施形態のメモリ装置のブロック図である。
【図５ｂ】図３に示される電子機器における本発明の別の実施形態のメモリ装置のブロック図である。
【図５ｃ】図３に示される電子機器における本発明の別の実施形態のメモリ装置のブロック図である。
【図６】本発明の実施形態によるアップデートシステムの階層のブロック図である。
【図７】本発明によるアップデートプロセスの実施形態を説明するフローチャートである。
【図７】
2005502971.tif 000003
【国際公開パンフレット】
2005502971.tif 000004
2005502971.tif 000005
2005502971.tif 000006
2005502971.tif 000007
2005502971.tif 000008
2005502971.tif 000009
2005502971.tif 000010
2005502971.tif 000011
2005502971.tif 000012
2005502971.tif 000013
2005502971.tif 000014
2005502971.tif 000015
2005502971.tif 000016
2005502971.tif 000017
2005502971.tif 000018
2005502971.tif 000019
2005502971.tif 000020
2005502971.tif 000021
2005502971.tif 000022
2005502971.tif 000023
2005502971.tif 000024
2005502971.tif 000025
2005502971.tif 000026
2005502971.tif 000027
2005502971.tif 000028
2005502971.tif 000029
2005502971.tif 000030
2005502971.tif 000031
2005502971.tif 000032
2005502971.tif 000033
2005502971.tif 000034
2005502971.tif 000035
2005502971.tif 000036
2005502971.tif 000037
2005502971.tif 000038
2005502971.tif 000039
2005502971.tif 000040
2005502971.tif 000041
2005502971.tif 000042
2005502971.tif 000043
2005502971.tif 000044
2005502971.tif 000045
2005502971.tif 000046
2005502971.tif 000047
2005502971.tif 000048
2005502971.tif 000049
【国際公開パンフレット（コレクトバージョン）】
2005502971.tif 000050
2005502971.tif 000051
【国際調査報告】
2005502971.tif 000052
2005502971.tif 000053
2005502971.tif 000054
2005502971.tif 000055
2005502971.tif 000056
2005502971.tif 000057