(57)【特許請求の範囲】
【請求項１】
遠隔装置を遠隔操作で更新する方法であって、
前記遠隔装置において、消去不能アプリケーション（ＮＥＡ）を用いてアプリケーションプログラムの更新のダウンロードを管理することであって、前記ＮＥＡは遠隔操作で消去できないものであり、かつ更新不能バージョンの前記アプリケーションプログラムを含むものであること、
更新されたアプリケーションプログラムを提供するために、前記更新により前記遠隔装置において不揮発性プログラム可能メモリ内の前記アプリケーションプログラムを更新すること、
前記ＮＥＡを使用して前記アプリケーションプログラムの前記更新が成功であるかどうかを判定すること、および、
前記アプリケーションプログラムの前記更新が成功した場合、前記遠隔装置において前記更新されたアプリケーションプログラムを使用して、前記遠隔装置の機能を提供するためにデバイスコマンドを実行し、前記アプリケーションプログラムの更新が成功しなかった場合、前記遠隔装置において前記ＮＥＡを使用して前記デバイスコマンドを実行し、これにより、前記ＮＥＡが、前記更新不能バージョンのアプリケーションプログラムを使用することにより、前記アプリケーションプログラムの前記更新が成功したならば、前記更新されたアプリケーションプログラムにより実行されるであろう前記デバイスコマンドと同一のデバイスコマンドを実行するよう構成されることを含み、
前記アプリケーションプログラムを更新することが、
前記ＮＥＡを使用して前記アプリケーションプログラムを無効にすること、および
前記アプリケーションプログラムを無効にした後、前記ＮＥＡを使用して前記不揮発性プログラム可能メモリ内に前記更新されたアプリケーションプログラムをダウンロードして記憶すること、
を含むことを特徴とする方法。
【請求項２】
前記アプリケーションプログラムの前記更新が成功であるかどうかを判定することは、
前記更新されたアプリケーションプログラムのダウンロードの終了を検証すること、および、
前記更新されたアプリケーションプログラムの機能の妥当性を確認すること、
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記遠隔装置内の別のメモリは、前記不揮発性プログラム可能メモリに記憶された前記アプリケーションプログラムのアドレスを記憶するように構成された少なくとも有効コードロケーションを含み、前記アプリケーションプログラムを無効にすることは、前記有効コードロケーションを無効アドレスにリセットすることを含むこと特徴とする請求項１に記載の方法。
【請求項４】
前記更新されたアプリケーションプログラムの前記ダウンロードの終了を検証することは、少なくとも１つのチェックサムを比較することを含むことを特徴とする請求項２に記載の方法。
【請求項５】
前記更新されたアプリケーションプログラムの機能の妥当性を確認することは、前記更新されたアプリケーションプログラムがコマンドを受信し、処理し、そしてコマンドに応答するかを判定することを含むことを特徴とする請求項２に記載の方法。
【請求項６】
前記更新されたアプリケーションプログラムの機能の妥当性を確認することは、前記更新されたアプリケーションプログラムが、一定時間内で機能するかどうかを判定することを含むことを特徴とする請求項２に記載の方法。
【請求項７】
前記更新されたアプリケーションプログラムの機能の妥当性を確認することは、機能の妥当性が確認されない場合、妥当性確認試行を繰返すことを含み、前記更新することは、前記妥当性確認をある回数試行した後に、前記更新されたアプリケーションプログラムの機能の妥当性が確認されない場合に繰返されることを特徴とする請求項２に記載の方法。
【請求項８】
前記アプリケーションプログラムの前記更新が成功であるかどうかを判定することは、前記更新されたアプリケーションプログラムが存在していることを示す、アドレスが別のメモリの有効コードロケーションにセットされているかどうかを判定し、かつ、前記更新されたアプリケーションプログラムが機能していることを示す、フラグがコードラン有効ロケーションにセットされているかどうかを判定することを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記遠隔装置は、第１および第２のコントローラを含み、前記アプリケーションプログラムの更新は、最初に前記第１のコントローラについて、２番目に前記第２のコントローラについて実施されることを特徴とする請求項１に記載の方法。
【請求項１０】
遠隔装置を備え、該遠隔装置を遠隔操作で更新するシステムであって、
前記遠隔装置が、
第１のメモリであって、遠隔操作で消去できないように記憶された消去不能アプリケーション（ＮＥＡ）を含み、前記ＮＥＡは、更新されたアプリケーションプログラムを提供するために、遠隔コマンドに応答して前記遠隔装置においてアプリケーションプログラムの更新を管理するように構成され、前記更新されたアプリケーションプログラムは、前記遠隔装置の機能を提供するためにデバイスコマンドを実行するように構成され、前記ＮＥＡは、さらに前記更新されたアプリケーションプログラムが前記遠隔装置において有効かどうかを判定し、前記更新されたアプリケーションプログラムが有効でない場合、更新不能バージョンの前記アプリケーションプログラムを使用することにより、前記更新されたアプリケーションプログラムが有効であるならば、前記更新されたアプリケーションプログラムにより実行されるであろう前記デバイスコマンドと同一のデバイスコマンドを実行するように構成される、第１のメモリと、
前記更新されたアプリケーションプログラムを記憶するように構成され、不揮発性でかつプログラム可能である、第２のメモリと、
前記第１のメモリおよび前記第２のメモリに結合したプロセッサであって、前記ＮＥＡを実行するように構成され、前記更新されたアプリケーションプログラムが有効である場合、前記更新されたアプリケーションプログラムを実行するように構成されるプロセッサとを含み、
前記ＮＥＡが、前記第２のメモリの前記アプリケーションプログラムを無効にし、該アプリケーションプログラムを無効にした後、前記第２のメモリ内に前記更新されたアプリケーションプログラムをダウンロードして記憶することにより、前記アプリケーションプログラムの前記更新を管理するよう構成されることを特徴とするシステム。
【請求項１１】
前記ＮＥＡは、前記更新されたアプリケーションプログラムのダウンロードの終了を検証するように構成されることを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記遠隔装置が、前記第２のメモリ内の前記更新されたアプリケーションプログラムのステータスを示す少なくとも１つのステータスインジケータを記憶するように構成された第３のメモリをさらに備えることを特徴とする請求項１０に記載のシステム。
【請求項１３】
前記第３のメモリは、少なくとも、前記更新されたアプリケーションプログラムが存在していることを示す前記更新されたアプリケーションプログラムのアドレスを記憶するように構成された有効コードロケーション、および、前記更新されたアプリケーションプログラムが機能することを示すフラグを記憶するように構成されたコードラン有効ロケーションを含むことを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記ＮＥＡは、前記更新されたアプリケーションプログラムが機能するかどうかを判定するように構成され、システムは、一定時間後に前記更新されたアプリケーションプログラムが機能すると判定することに前記ＮＥＡが失敗した場合、前記プロセッサをリセットするように構成されたハードウェアタイマをさらに備えることを特徴とする請求項１０に記載のシステム。
【請求項１５】
前記ＮＥＡは、前記遠隔装置についてブートローダ機能およびリンカ機能を実施するように構成されることを特徴とする請求項１０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、装置アプリケーションプログラムを遠隔操作で更新することに関し、特に、アクセス性が制限された装置においてアプリケーションプログラムを遠隔操作で更新するシステムおよび方法に関する。
【背景技術】
【０００２】
海底光ファイバ伝送システムは、送信および／または受信トランク端末で終端されてもよい比較的長いトランクセグメントを含む可能性がある。光ファイバ伝送システムはさらに、１つまたは複数の光学装置、たとえば、そのトランクに沿って位置する分岐ユニットおよび／またはリピータを含む可能性がある。各分岐ユニット（ＢＵ）は、送信および／または受信分岐端末で終端する分岐セグメントに接続されてもよい。各トランクおよび／または分岐端末は、乾いた陸地にまたはその近くにあってもよい。比較的長いトランクシステムは、水面下で、たとえば海底にそって延びる。光学装置はまた、乾いた陸地から比較的長い距離、たとえば５０キロメートル以上の海底に配置されてもよい。各光学装置は、デバイス機能を制御する、および／または、デバイス機能を監視する、および／または、端末と通信するように構成されたコントローラを含んでもよい。こうしたデバイス機能は、ソフトウェア、ハードウェア、および／またはその組合せで実装されてもよい。
【０００３】
時々、これらの遠隔装置においてソフトウェア、ファームウェア、および／またはハードウェアを更新することが望ましい場合がある。ハードウェア更新は、装置に対する実際の物理的アクセスを必要とする可能性があるが、ソフトウェアおよび／またはファームウェア更新は、サービスを維持するために遠隔操作で行われる可能性がある。遠隔操作で更新する能力は、たとえば海底システムにおいて、場所のために物理的にアクセスすることが難しい装置に対する物理的アクセスを必要とする活動と比較して、大幅なコスト節減を提供する可能性がある。しかし、遠隔操作による更新能力は、更新試行が失敗するために物理的アクセスが先行する場合、利益をほとんどもたらさない。したがって、コスト節減およびサービス可用性を維持するために、遠隔操作による更新が信頼性の高いものであり、また、更新が失敗した場合の復帰を可能にするならば望ましい。
【０００４】
信頼性がない伝送設備から、ファームウェア更新などのアプリケーションプログラムを送信するときに、他の難題も存在する可能性がある。たとえば、遠隔装置に対する低帯域幅伝送チャネルは、アクセス性を制限する可能性がある。端末との連続した通信またはプロトコルハンドシェイクの欠如は、ダウンロードされたアプリケーションのダウンロードされた全てのパケットを検証する能力およびアプリケーションを定期的に再送信する能力を制限する可能性がある。
【０００５】
以下の詳細な説明に対して参照が行われるべきであり、以下の詳細な説明は、同じ数字が同じ部品を表す添付図に関連して読まれるべきである。
【発明の概要】
【課題を解決するための手段】
【０００６】
本開示の一態様によれば、遠隔装置を遠隔操作で更新する方法が提供されており、方法は、遠隔装置において、遠隔操作で消去できない消去不能アプリケーション（ＮＥＡ）をランさせる（ｒｕｎ）こと、遠隔装置において不揮発性プログラム可能メモリ内のアプリケーションプログラムを更新すること、および、アプリケーションプログラムの更新が成功した場合、遠隔装置においてアプリケーションプログラムを使用してデバイスコマンドを実行し、アプリケーションプログラムの更新が成功しなかった場合、遠隔装置においてＮＥＡを使用してデバイスコマンドを実行することを含む。
【０００７】
本開示の別の態様によれば、遠隔装置を遠隔操作で更新するシステムが提供される。システムは、遠隔操作で消去できないように記憶された消去不能アプリケーション（ＮＥＡ）を含む、第１のメモリを含む。ＮＥＡは、遠隔コマンドに応答して遠隔装置においてアプリケーションプログラムの更新を管理し、アプリケーションプログラムが遠隔装置において有効かどうかを判定し、アプリケーションプログラムが有効でない場合、デフォルトアプリケーション機能を提供するように構成される。システムはまた、アプリケーションプログラムを記憶するように構成され、不揮発性でかつプログラム可能である、第２のメモリを含む。システムはさらに、第１のメモリおよび第２のメモリに結合したプロセッサを含み、プロセッサは、ＮＥＡを実行するように構成され、アプリケーションプログラムが有効である場合、アプリケーションプログラムを実行するように構成される。
【０００８】
本開示のなお別の態様によれば、陸地に位置し、トランク経路上に信号を提供するように構成されたトランク端末と、トランク経路に結合した遠隔装置とを含む、通信システムが提供されており、遠隔装置は、遠隔環境に位置し、遠隔操作で更新されるように構成される。遠隔装置は、遠隔装置の機能を制御するように構成されたコントローラを含む。コントローラは、遠隔操作で消去できないように記憶された消去不能アプリケーション（ＮＥＡ）を含む、第１のメモリを含む。ＮＥＡは、遠隔コマンドに応答して、遠隔装置においてアプリケーションプログラムの更新を管理し、アプリケーションプログラムが有効であるかどうかを判定し、アプリケーションプログラムが有効でない場合、デフォルトアプリケーション機能を提供するように構成される。コントローラはまた、アプリケーションプログラムを記憶するように構成され、不揮発性でかつプログラム可能である、第２のメモリを含む。コントローラはさらに、第１のメモリおよび第２のメモリに結合したプロセッサを含み、プロセッサは、ＮＥＡを実行するように構成され、アプリケーションプログラムが有効である場合、アプリケーションプログラムを実行するように構成される。
【０００９】
しかし、本明細書で述べられた実施形態は、本発明を利用するいくつかの実施形態のうちの一部に過ぎず、制限ではなく、例証として本明細書で述べられる。当業者に容易に明らかになる多くの他の実施形態が、添付特許請求の範囲に規定される本発明の趣旨および範囲から実質的に逸脱することなく作られてもよい。
【図面の簡単な説明】
【００１０】
【図１】本開示の実施形態と整合する光通信システムの略図である。
【図２】遠隔操作によるアプリケーション更新用のシステムを含む装置の実施形態のブロック図である。
【図３Ａ】アプリケーションプログラムを遠隔操作で更新する方法を示すフローチャートである。
【図３Ｂ】アプリケーションプログラムを遠隔操作で更新する方法を示すフローチャートである。
【図３Ｃ】アプリケーションプログラムを遠隔操作で更新する方法を示すフローチャートである。
【図４】本開示に整合する遠隔操作によるアプリケーション更新の実施形態を示す状態遷移図である。
【発明を実施するための形態】
【００１１】
本開示は、アクセス性が制限された遠隔装置において、ファームウェアなどのアプリケーションプログラムを遠隔操作で更新するシステムおよび方法に関する。システムおよび方法は、アプリケーション更新を管理するため、および／または、デフォルトアプリケーション機能を提供するために、消去不能アプリケーション（ｎｏｎ−ｅｒａｓａｂｌｅ  ａｐｐｌｉｃａｔｉｏｎ）（ＮＥＡ）を使用し、それにより、比較的信頼性がある遠隔操作によるアプリケーションプログラム更新能力を提供する。システムおよび方法は、システム装置に対する物理的アクセスが比較的難しいおよび／または高価である可能性があるシステム、たとえば以下に述べる海底光通信システムで使用されてもよい。例示的な実施形態が、海底光通信システムの文脈で述べられるが、本明細書で述べるシステムおよび方法はまた、地上通信システムで使用されてもよい。
【００１２】
ここで図１を参照すると、本開示に整合する例示的な光通信システム１００が示されている。システム１００は、説明を容易にするため非常に簡略化した形態で述べられていることを当業者は認識するであろう。光通信システム１００は、トランク経路１１２に結合したトランク端末１１０、１２０を含む。本明細書で使用される用語「結合した（ｃｏｕｐｌｅｄ）」は、任意の接続、結合、リンク、または同様なものを指し、それにより、１つのシステム要素によって運ばれる信号が、「結合した」要素に与えられる。こうした「結合した」装置は、必ずしも互いに直接接続されるわけではなく、こうした信号を操作するまたは修正する可能性がある中間構成要素または装置によって分離されてもよい。
【００１３】
トランク経路１１２は、光信号を運ぶための複数の光ケーブルセグメント、たとえばケーブルセグメント１０６、１０７、１０８を含んでもよい。各ケーブルセグメントは、トランク端末１１０と１２０との間で光信号の双方向通信のための伝送経路を提供するために、光ファイバ対および１つまたは複数のリピータを含む光ファイバケーブルの１つまたは複数のセクション１７０を含んでもよい。
【００１４】
１つまたは複数の分岐ユニット、たとえば分岐ユニット１３０および１４０は、トランク端末１１０と１２０との間のトランク経路に結合されてもよい。各分岐ユニット１３０、１４０はさらに、おそらく１つまたは複数のリピータ１７０およびリンク用光ケーブルを通して、それぞれ関連する分岐経路１３５、１４６を通して、それぞれ分岐端末、たとえば分岐端末１５０および１６０に結合されてもよい。したがって、システム１００は、２つ以上の端末１１０、１２０、１５０、１６０間で光信号の双方向通信を提供するように構成されてもよい。説明を容易にするために、本明細書の説明は、１つの端末から別の端末への伝送に言及してもよい。しかし、システム１００は、端末１１０、１２０、１５０、１６０の任意の端末間での双方向通信または単方向通信のために構成されてもよい。
【００１５】
トランクおよび分岐経路内の構成要素は、それらの意図される機能を果たすための既知の構成を含んでもよい。リピータ１７０は、たとえば伝送経路上での信号減衰を補償する任意の既知の光増幅器／リピータ構成を含んでもよい。たとえば、リピータの１つまたは複数は、エルビウム添加ファイバ増幅器（ＥＤＦＡ）、ラマン増幅器、またはハイブリッドラマン／ＥＤＦＡ増幅器などの光増幅器として構成されてもよい。同様に、リピータの１つまたは複数は、光信号を電気信号に変換し、電気信号を処理し、次に、光信号を再送信することによって光信号を再生する既知の光−電気−光構成で設けられてもよい。
【００１６】
光通信システム１００は、たとえば約６００ｋｍより長い、端末の少なくとも２つの端末間の長さを有する長距離（ｌｏｎｇ−ｈａｕｌ）システムとして構成されてもよく、水域（ａ  ｂｏｄｙ  ｏｆ  ｗａｔｅｒ）にまたがってもよい。水域、たとえば海にまたがるように使用されるとき、増幅器１７０ならびに／または分岐ユニット１３０および／または１４０は、海底に着座し、トランク経路１１２は、ビーチランディング（ｂｅａｃｈ  ｌａｎｄｉｎｇ）間にまたがってもよい。複数のリピータ、分岐ユニット、および光媒体リンクが、水の下、および／または、陸の上に配設されてもよい。
【００１７】
光通信システム１００内の１つまたは複数の光学装置（たとえば、分岐ユニット）は、時々更新される可能性がある、ファームウェアなどのアプリケーションプログラムを含んでもよい。光学装置が海底内にまたはその上に配置されている場合、光学装置を遠隔操作で、すなわち端末から更新することが望ましいかもしれない。更新が高い信頼性を持って実施されること、および、更新が失敗した場合、光学装置が機能し続けることも望ましいかもしれない。
【００１８】
ここで図２を参照すると、分岐ユニットまたは他の海底光学装置などの例示的な遠隔装置２１０は、本開示に整合する遠隔操作によるアプリケーション更新能力を有してもよい。装置２１０は、説明を容易にするため非常に簡略化した形態で述べられていることを当業者は認識するであろう。装置２１０は、１つまたは複数のコントローラ２２０ａ、２２０ｂを含んでもよい。本明細書で使用される「コントローラ（ｃｏｎｔｒｏｌｌｅｒ）」は、プログラム可能ハードウェア要素、および／または、ハードウェア、ソフトウェア、およびファームウェアの組合せを含んでもよい。たとえば、コントローラは、たとえばＣＰＵ、メモリ（たとえば、リード／ライトおよび／またはリードオンリー）、および／または入力および出力が可能な周辺機器を含む、マイクロコントローラであってよい。別の例では、コントローラは、ＡＳＩＣ、すなわち「システムオンチップ（ｓｙｓｔｅｍ  ｏｎ  ａ  ｃｈｉｐ）」またはＦＰＧＡまたは同様なものとして実装されてもよい。
【００１９】
装置２１０はさらに、他のデバイス機能ハードウェア２２５を含んでもよい。他のデバイス機能ハードウェア２２５は、コントローラの制御下で、装置２１０の機能、たとえば、リピータおよび／または分岐機能を提供するように構成されたハードウェアであってよい。コントローラ２２０ａ、２２０ｂは、通信信号を、端末および／または別の装置からおよび／またはそこへ、たとえば、端末１１０、１２０、１５０、１６０および／または別の装置１３０、１４０、１７０から／へ、受信するおよび／または送信するように構成されてもよい。コントローラ２２０ａ、２２０ｂはさらに、制御信号を、他のデバイス機能ハードウェア２２５から／へ受信するおよび／または送信するように構成されてもよい。複数のコントローラを有する装置では、コントローラ２２０ａ、２２０ｂは、冗長（ｒｅｄｕｎｄａｎｔ）機能を提供するように構成されてもよい。換言すれば、コントローラ２２０ａは、１つのコントローラが失敗する場合に装置２１０が機能し続けるように、コントローラ２２０ｂと同じデバイス機能を提供するように構成されてもよい。
【００２０】
装置２１０は、たとえばデバイスコマンドを実行することによってデバイス機能を提供するように構成された１つまたは複数のアプリケーションプログラムを含んでもよい。例示的な実施形態では、装置２１０においてアプリケーションプログラム（複数可）を遠隔操作で更新するシステムは、コントローラ２２０ａ、２２０ｂの少なくとも一方に実装されてもよい。一般に、コントローラ２２０ａは、プロセッサ２３０によって実行されるアプリケーションプログラムを記憶する不揮発性プログラム可能メモリ２４０に結合したプロセッサまたは中央処理ユニット（ＣＰＵ）２３０を含んでもよい。コントローラ２２０ａはまた、アプリケーションプログラム更新を管理するための、および／または、デフォルトアプリケーション機能を提供するための消去不能アプリケーション（ＮＥＡ）を記憶する消去不能メモリ２４５を含んでもよい。コントローラ２２０ａはさらに、更新されたアプリケーションプログラムの妥当性が一定時間内に確認されない場合にプロセッサをリセットするための、ウォッチドックタイマ２５５などのハードウェアタイマを含んでもよい。別のメモリ２５０は、アプリケーションプログラムが有効であるかどうか（すなわち、更新が成功であるかどうか）を示すプログラムステータスインジケータを記憶するために使用されてもよい。コントローラ２２０ａはまた、入力／出力ブロック（Ｉ／Ｏ）２３５などの、当業者に知られている他の構成要素を含んでもよい。
【００２１】
アプリケーションプログラムを記憶するための不揮発性プログラム可能メモリ２４０は、比較的大きなブロックでプログラムされるように構成された、消去可能プログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、より具体的にはフラッシュメモリタイプＥＥＰＲＯＭを含んでもよい。ＥＥＰＲＯＭは、遠隔ロケーションから（たとえば、端末から）ダウンロードされた、新しいまたは更新されたアプリケーションプログラムが、既存のまたは以前にプログラムされたアプリケーションプログラムを置換するように消去可能でかつプログラム可能であってよい。
【００２２】
消去不能メモリ２４５は、リードオンリーメモリ（ＲＯＭ）などの、１回プログラムされると、遠隔操作で消去もプログラミングもできないように構成されるメモリを含んでもよい。不揮発性プログラム可能メモリ２４０および消去不能メモリ２４５は、別個のメモリ素子（たとえば、ＥＥＰＲＯＭおよびＲＯＭ）として示し述べられるが、単一メモリ素子（ＥＥＰＲＯＭの保護されたコード空間に記憶されたＮＥＡを有するＥＥＰＲＯＭ）の別個の部分として実装されてもよい。
【００２３】
先に述べたように、ＮＥＡは、新しいアプリケーションプログラムのダウンロードを管理し、不揮発性プログラム可能メモリ２４０（たとえば、ＥＥＰＲＯＭ）の消去および／またはプログラミングを管理するように構成されてもよい。ＮＥＡはさらに、ブートローダおよび／またはリンカ機能を提供するように構成されてもよい。本明細書で使用されるように、ブートローダは、コントローラがリセットされるおよび／またはパワーアップされるときにランする（ｒｕｎ）ように構成されるプログラムとして理解されてもよい。たとえば、ブートローダは、アプリケーションプログラムをメモリにロードし、通信があるかを「聞く（ｌｉｓｔｅｎ）」、および／または、アプリケーションの開始ロケーションにジャンプするように構成されてもよい。本明細書で使用されるように、リンカは、プログラムモジュールおよび／またはデータを組合せて、単一プログラムを形成するように構成されるプログラムとして理解されてもよい。ＮＥＡはさらに、デバイスアプリケーション機能、および／または、不揮発性の遠隔操作で消去可能メモリ２４０内に有効なアプリケーションが存在しないときにデバイス機能を提供するデフォルトアプリケーションを提供するように構成されてもよい。換言すれば、ＮＥＡは、遠隔操作で更新されることができない、更新不能バージョンのアプリケーションプログラムを含んでもよい。
【００２４】
プログラムステータスインジケータを記憶するメモリ２５０は、ＥＥＰＲＯＭなどの不揮発性メモリを含んでもよい。メモリ２５０は、メモリ２４０、２４５の一方または両方と一緒のメモリ素子部分であってよく、または、別個のメモリ素子であってよい。メモリ２５０は、プログラムステータスインジケータを記憶するように構成された１つまたは複数のメモリロケーションを含んでもよい。たとえば、メモリ２５０は、アプリケーションプログラムの開始アドレスを記憶するように構成された有効コードロケーション（ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣ）を含んでもよく、それにより、アプリケーションプログラムが存在することを示す。ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣは、新しいアプリケーションプログラムがダウンロードされることを示すためにリセットされてもよく、また、新しいアプリケーションがダウンロードされた後、たとえばダウンロードされた新しいアプリケーションが検証されると、新しいアプリケーションプログラムの開始アドレスにセットされてもよい。メモリ２５０はさらに、アプリケーションプログラムの機能の妥当性が確認されたことを示すフラグを記憶するように構成されたコードラン有効（ｒｕｎｖａｌｉｄ）ロケーション（ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣ）を含んでもよい。ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣは、新しいアプリケーションプログラムがダウンロードされることを示すためにＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣがリセットされるときにリセットされてもよく、また、新しいアプリケーションプログラムの機能の妥当性確認によってセットされてもよい。
【００２５】
メモリ２５０はさらに、新しいアプリケーションプログラムの妥当性を確認する試行回数のカウンタを記憶するように構成されたコードリトライロケーション（ＣＯＤＥ＿ＲＥＴＲＩＥＳ＿ＬＯＣ）を含んでもよい。ＣＯＤＥ＿ＲＥＴＲＩＥＳ＿ＬＯＣは、新しいアプリケーションがダウンロードされ、検証された後にゼロにリセットされてもよく、また、新しいアプリケーションの機能の妥当性を確認する試行ごとに増分されてもよい。ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣは、ＣＯＤＥ＿ＲＥＴＲＩＥＳ＿ＬＯＣに記憶された値に基づいて、たとえば記憶された値が所定の値（すなわち、リトライ数）を超える場合リセットされてもよい。メモリロケーションおよびプログラムステータスインジケータは、アプリケーションプログラムを更新する例示的な方法に関連してさらに詳細に述べられる。
【００２６】
装置２１０は、冗長コントローラ２２０ａおよび２２０ｂを含む場合、各コントローラ２２０ａ、２２０ｂが他に独立にプログラムされるように構成されてもよい。これは、単一コントローラシステムと比較すると、機能信頼性レベルの向上とプログラミング信頼性レベルの向上の両方を提供する可能性がある。たとえば、装置は、１つのコントローラが失敗した場合、機能し続ける。コントローラプログラミング試行が失敗した場合、装置はまた、他のコントローラの制御下で、または、ＮＥＡのデフォルトアプリケーションに従って機能し続けてもよい。既存のアプリケーションは、以下で論じる方法に従って複数のコントローラの各コントローラにおいて更新されてもよい。信頼性を維持するために、更新は、たとえば順次に、１回に１つのコントローラにおいて実施されてもよい。冗長コントローラが利点を提供するが、これは、制限であると考えられず、遠隔操作によるアプリケーション更新のためのシステムおよび方法は、単一コントローラに実装されてもよい。
【００２７】
ここで図３Ａを参照すると、フローチャート３００は、本開示に整合するアプリケーションプログラムを遠隔操作で更新する１つの一般的な方法を示す。一般に、ＮＥＡがランし（ｒｕｎ）（３０１）、既存のアプリケーションは、その後、不揮発性プログラム可能メモリ（たとえば、ＥＥＰＲＭ）において更新されてもよい。方法はまた、更新が成功したかどうかを判定する（３０３）ことを含む。たとえば、ＮＥＡは、アプリケーションプログラムのステータスを示すプログラムステータスインジケータをチェックしてもよい。更新が成功しなかった場合、デバイスコマンドは、ＮＥＡを使用して実行されて（３０４）、たとえば、デフォルトアプリケーション機能を提供する、および／または、別の更新を試行する。更新が成功した場合、デバイスコマンドは、更新されたアプリケーションを使用して実行される（３０５）。
【００２８】
図３Ｂを参照すると、フローチャート３０６は、既存のアプリケーションを更新する例示的な方法をより詳細に示す。この例示的な方法によれば、更新は、たとえば遠隔コマンドに応答して、既存の（すなわち、以前にプログラムされた）アプリケーションを無効にする（３０７）ことで始まってもよい。新しいアプリケーションが、その後、ダウンロードされ（３０９）、新しいアプリケーションのダウンロードの終了が、たとえば１つまたは複数のチェックサムを検証することによって検証されてもよい（３１１）。チェックサム（複数可）を検証することは、ダウンロードプロセス中に、新しいアプリケーションが損なわれなかったという確認を提供してもよい。新しいアプリケーションの機能の妥当性が、その後、確認されてもよい（３１３）。新しいアプリケーションの機能は、新しいアプリケーションが、端末またはある他の装置と通信することおよび／またはコマンドを処理することなどの、機能を実施することを確認することによって妥当性確認されてもよい。
【００２９】
更新中に以前のアプリケーションを無効にする（３０７）ことは、プログラムステータスインジケータをリセットすることを含んでもよい。先に述べたように、プログラムステータスインジケータは、ダウンロードの終了が検証されたこと、および、新しいアプリケーションの機能の妥当性が確認されたことを示すために使用されてもよい。ダウンロードの終了が検証された後、たとえば、新しいアプリケーションプログラムのアドレスが、有効コードロケーション（ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣ）にセットされてもよい。新しいアプリケーションプログラムの機能の妥当性確認後に、フラグが、コードラン有効（ｒｕｎｖａｌｉｄ）ロケーション（ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣ）にセットされてもよい。以前のアプリケーションを無効にする（３０７）ことは、その後、有効コードロケーションをリセットすること（たとえば、ロケーションＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣを０ｘＦＦＦＦＦＦＦＦにリセットすること）、コードラン有効ロケーション（たとえば、ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣ）を無効アプリケーションフラグにリセットすること、およびコントローラをリセットすることを含んでもよい。外部コマンド、すなわち、装置、たとえば装置２１０から遠隔に位置する（ｌｏｃａｔｅ）ユーザからのユーザコマンドに応答して、既存のアプリケーションが、無効にされてもよく、および／または、コントローラがリセットされてもよい。光通信システムでは、たとえば、外部コマンドは、比較的低いビットレートのテレメトリチャネルを通じて受信されてもよい。
【００３０】
新しいアプリケーションをダウンロードする（３０９）ことは、たとえば端末１１０、１２０、１５０、１６０から装置２１０に送信される新しいアプリケーションプログラムを受信することを含んでもよい。速度を考慮して、装置２１０からのペイロード／メッセージ確認は、ダウンロード動作中、ターンオフされてもよい。受信されるアプリケーションプログラムは、複数のレコードを含んでもよい。各レコードは、関連するエラーチェックパラメータ、たとえばチャックサムを含んでもよい。付加的にまたは別法として、複数のレコード（すなわち、アプリケーション全体）は、関連するエラーチェックパラメータを含んでもよい。不揮発性プログラム可能メモリ２４０は、その後、たとえばアプリケーションプログラムをフラッシュメモリに焼き込むことによって、受信されたアプリケーションプログラムをプログラムされてもよい。新しいアプリケーションプログラムがダウンロードされた後、ペイロードおよび／またはメッセージ確認が、その後、元通りターンオンされてもよい。
【００３１】
プログラムがダウンロードされた後、ダウンロードされた新しいアプリケーションを検証する（３１１）ことは、アプリケーション全体についてチェックサムを検証するためのユーザコマンドを受信することを含んでもよい。ユーザコマンドは、送信されるアプリケーションプログラムについての開始アドレスおよび終了アドレス、ならびに、送信されるアプリケーションプログラムについての送信されるチェックサムを含んでもよい。たとえば、送信されるチェックサムは、送信されるアプリケーションプログラムに対応するバイトの和のある数（たとえば、１６）の最下位ビットを含んでもよい。プログラムされるチェックサムは、その後、開始アドレスと終了アドレスとの間（開始アドレスと終了アドレスを含め）の、プログラム式不揮発性メモリ２４０のコンテンツに基づいて計算されてもよい。送信されるチェックサムとプログラムされるチェックサムは、その後比較される。比較されたチェックサムが一致する場合、開始アドレスが、その後、メモリ２５０の有効コードロケーション（すなわち、ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣ）に記憶されてもよい。コントローラは、その後、ユーザコマンドに応答してリセットされてもよい。
【００３２】
ダウンロードされたプログラムが検証された後、新しいアプリケーションプログラムの機能の妥当性を確認する（ｖａｌｉｄａｔｅ）こと（３１３）は、新しいアプリケーションプログラムが、一定時間内で機能を実施することが可能かどうかを判定することを含んでもよい。一例によれば、アプリケーションプログラムは、ウォッチドッグタイマ２５５によって強要される一定時間（たとえば、２分窓）中にアプリケーションプログラムのバージョン番号を検証（ｖｅｒｉｆｙ）するユーザ要求を受信し、処理し、それに応答しようと試みてもよい。アプリケーションプログラムが、一定時間内にその機能を実施できない（たとえば、どんな理由であれ、コマンドを受信しない、正しいバージョン番号がわからない、またはハングアップする）場合、妥当性確認は、不成功と見なされ、コントローラがリセットされる。アプリケーションプログラムが、一定時間内にその機能を実施する（たとえば、２分窓内で正しいバージョン番号を確認する）場合、機能の妥当性が確認されたことを示すフラグが、コードラン有効ロケーション（ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣ）にセットされる。
【００３３】
ここで図３を参照すると、例示的なフローチャート３１５は、コントローラリセットおよび／または装置パワーアップからの、ＮＥＡとアプリケーションプログラムとの間のプログラムフローをより詳細に示す。先に論じたように、ＮＥＡは、新しいアプリケーションプログラムのダウンドード、不揮発性プログラム可能メモリのプログラミング、ダウンロードされた新しいアプリケーションの検証、および／または、新しいアプリケーションプログラムの妥当性確認を管理するように構成されてもよい。ＮＥＡはさらに、ブートローダ機能、リンカ機能、および／またはデフォルトアプリケーション機能を提供するように構成されてもよい。
【００３４】
プログラムフローが始まる（３１７）と、ＮＥＡが起動してもよい（３１９）。たとえば、ユーザからのリセットコマンドは、ＮＥＡが、起動し（３１９）、ランし始めるようにさせてもよい。別の例では、装置パワーアップは、ＮＥＡが起動する（３１９）ようにさせてもよい。ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣがセットされたかどうかが、その後、判定されてもよい（３２１）。ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣがセットされない（アプリケーションプログラムが存在しないことを示す）場合、新しいアプリケーションプログラムダウンロード動作を管理する、および／または、デバイスコマンドを実行することによってデフォルトデバイス機能を提供するために、ＮＥＡがランしてもよい（３２３）。ダウンロード動作が試行された後、（たとえば、チェックサムを検証することによって）完全なコード検証が受信された（３２５）場合、ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣが、ダウンロードされた新しいアプリケーションプログラムの開始アドレスにセットされてもよい（３２７）。完全なコード検証が受信されなかった場合（たとえば、ダウンロードされたアプリケーションが損なわれ、チェックサムが一致しなかった場合）、フローは、ＮＥＡラン３２３に戻って、別のダウンロードを試行する、および／または、デバイスコマンドを実行してもよい。ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣがセットされた（３２７）後、ＮＥＡは、リセットコマンドが受信される（３２９）までランし続けてもよい（３２３）。リセットコマンドが受信された場合、ＣＯＤＥ＿ＲＥＴＲＩＥＳ＿ＬＯＣが、ゼロにリセットされ（３３１）、プログラムフローは、ＮＥＡ起動３１９に戻ってもよい。
【００３５】
ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣが（たとえば、アプリケーションプログラムの開始アドレスに）セットされていると判定される場合、ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣがセットされているかどうかが、その後、判定されてもよい（３３３）。ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣがセットされている場合、アプリケーションプログラムがランし（３４１）、また、デバイスコマンドを実行してもよい。換言すれば、ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣがセットされることおよびＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣがセットされることは、新しいアプリケーションプログラムが成功裏にダウンロードされ、その機能が確認されたこと、すなわち、更新が成功であったことを示す。
【００３６】
ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣがセットされない場合、ＣＯＤＥ＿ＲＥＴＲＩＥＳ＿ＬＯＣが、増分されてもよい（３３５）。ＣＯＤＥ＿ＲＥＴＲＩＥＳ＿ＬＯＣがリトライ数（たとえば、３）を超えると判定される（３３７）場合、ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣは、アプリケーションプログラムが存在しないことを示し、また、ＮＥＡをランすること（３２３）によって別のダウンロードを始動するために、（たとえば、０ｘＦＦＦＦＦＦＦＦに）リセットされてもよい（３３９）。換言すれば、ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣが、機能の妥当性を確認する複数の試行が失敗したことを示す場合、アプリケーションプログラムは、動作せず、別のダウンロードが必要とされてもよい。
【００３７】
ＣＯＤＥ＿ＲＥＴＲＩＥＳ＿ＬＯＣがリトライ数（たとえば、３）未満の場合、機能を実施し、機能の妥当性を確認するように試みるアプリケーションプログラムがランされてもよい（３４１）。アプリケーションがランしている（３４１）ときに、アプリケーションプログラムが、成功裏に機能を実施する（たとえば、バージョン要求が終了する）場合、ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣが、機能の妥当性が確認されたことを示すためにセットされてもよい。ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣがセットされる（３４３）場合、アプリケーションプログラムは、ランし続け（３４１）、デバイスコマンドを実行してもよい。ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣがセットされず（３４３）、タイマがタイムアウトしていない（３４５）場合、アプリケーションプログラムは、ランし続け（３４１）、妥当性確認を試行することになる。ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣがセットされず（３４３）、タイマがタイムアウトする（３４５）場合、妥当性確認試行は失敗し、プログラムフローは、ＮＥＡ起動３１９に戻ってもよく、また、妥当性確認シーケンスが、再び開始されてもよい。
【００３８】
図４を参照すると、状態遷移図４００はさらに、本開示に整合するアプリケーションプログラムを遠隔操作で更新するシステムおよび方法を示す。最初に、すなわち、アプリケーションプログラム更新動作の直前に、アプリケーションは、コマンド待ち状態４１０にある可能性がある。（たとえば端末から）無効コマンドを受信すると、ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣがリセットされ、ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣがリセットされ、コントローラがリセットされ、状態が、ＮＥＡ起動状態４１５に遷移してもよい。ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣがセットされない場合、状態は、ＮＥＡコマンド待ち状態４２０に遷移してもよい。ファームウェアダウンロードコマンドが受信される場合、状態は、ＮＥＡ焼き込みコード状態４２５に遷移してもよく、ＮＥＡ焼き込みコード状態４２５では、ダウンロードが終了し検証される場合、ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣがセットされてもよい。リセットが起こる場合、状態は、その後、ＮＥＡ起動状態４１５に遷移してもよい。ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣがセットされ、ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣがセットされず、ＣＯＤＥ＿ＲＥＴＲＩＥＳ＿ＬＯＣがリトライ数（たとえば、３）未満の場合、ＣＯＤＥ＿ＲＥＴＲＩＥＳ＿ＬＯＣが増分され、状態が、アプリケーション妥当性確認待ち状態４３０に遷移してもよい。リセットコマンドが受信される、および／または、妥当性確認コマンドが受信されない、および／または、一定時間、たとえば２分後に妥当性確認が成功でなかった場合、状態は、ＮＥＡ起動４１５に遷移してもよい。ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣがセットされ、ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣがセットされず、ＣＯＤＥ＿ＲＥＴＲＩＥＳ＿ＬＯＣがリトライ数以上である場合、状態は、リセットＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣ４３５に遷移してもよい。状態は、その後、ＮＥＡコマンド待ち状態４２０に遷移してもよい。ＮＥＡ起動状態４１５にて、ＶＡＬＩＤ＿ＣＯＤＥ＿ＬＯＣがセットされ、ＣＯＤＥ＿ＲＵＮＶＡＬＩＤ＿ＬＯＣがセットされる場合、状態は、アプリケーションコマンド待ち状態４１０に遷移してもよい。
【００３９】
したがって、海底光ファイバ装置などの、物理的にアクセスすることが難しい遠隔装置について信頼性が高いソフトウェアおよび／またはファームウェアを提供する可能性があるシステムおよび方法が述べられた。ダウンロードを管理し、ブートローダおよび／またはリンカ機能を提供し、更新が成功でない場合にデフォルトデバイスアプリケーション機能を提供するように構成されるＮＥＡが提供されてもよい。更新をそれぞれダウンロードし、ダウンロードが成功裏に終了したことを検証し、ダウンロードされた更新が機能する、すなわち、更新が成功であったことの妥当性を確認するように構成された複数のコントローラによって信頼性が高められてもよい。
【図１】
0005731473.tif 000002
【図２】
0005731473.tif 000003
【図３Ａ】
0005731473.tif 000004
【図３Ｂ】
0005731473.tif 000005
【図３Ｃ】
0005731473.tif 000006
【図４】
0005731473.tif 000007