(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5731473
(24)【登録日】2015年4月17日
(45)【発行日】2015年6月10日
(54)【発明の名称】遠隔装置アプリケーション更新のためのシステムおよび方法
(51)【国際特許分類】
G06F 13/00 20060101AFI20150521BHJP
G06F 11/00 20060101ALI20150521BHJP
【FI】
G06F13/00 530B
G06F9/06 630B
【請求項の数】15
【全頁数】15
(21)【出願番号】特願2012-500871(P2012-500871)
(86)(22)【出願日】2010年3月16日
(65)【公表番号】特表2012-521053(P2012-521053A)
(43)【公表日】2012年9月10日
(86)【国際出願番号】US2010027407
(87)【国際公開番号】WO2010107743
(87)【国際公開日】20100923
【審査請求日】2012年12月17日
(31)【優先権主張番号】12/404,769
(32)【優先日】2009年3月16日
(33)【優先権主張国】US
【前置審査】
(73)【特許権者】
【識別番号】502101180
【氏名又は名称】タイコ エレクトロニクス サブシー コミュニケーションズ エルエルシー
(74)【代理人】
【識別番号】100073184
【弁理士】
【氏名又は名称】柳田 征史
(74)【代理人】
【識別番号】100090468
【弁理士】
【氏名又は名称】佐久間 剛
(72)【発明者】
【氏名】サビト,サメー エイ
(72)【発明者】
【氏名】リス,ジョナサン エム
【審査官】
小林 義晴
(56)【参考文献】
【文献】
特開2004−227143(JP,A)
【文献】
特開平06−149695(JP,A)
【文献】
米国特許第5940074(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
G06F 11/00
G06F 9/06
(57)【特許請求の範囲】
【請求項1】
遠隔装置を遠隔操作で更新する方法であって、
前記遠隔装置において、消去不能アプリケーション(NEA)を用いてアプリケーションプログラムの更新のダウンロードを管理することであって、前記NEAは遠隔操作で消去できないものであり、かつ更新不能バージョンの前記アプリケーションプログラムを含むものであること、
更新されたアプリケーションプログラムを提供するために、前記更新により前記遠隔装置において不揮発性プログラム可能メモリ内の前記アプリケーションプログラムを更新すること、
前記NEAを使用して前記アプリケーションプログラムの前記更新が成功であるかどうかを判定すること、および、
前記アプリケーションプログラムの前記更新が成功した場合、前記遠隔装置において前記更新されたアプリケーションプログラムを使用して、前記遠隔装置の機能を提供するためにデバイスコマンドを実行し、前記アプリケーションプログラムの更新が成功しなかった場合、前記遠隔装置において前記NEAを使用して前記デバイスコマンドを実行し、これにより、前記NEAが、前記更新不能バージョンのアプリケーションプログラムを使用することにより、前記アプリケーションプログラムの前記更新が成功したならば、前記更新されたアプリケーションプログラムにより実行されるであろう前記デバイスコマンドと同一のデバイスコマンドを実行するよう構成されることを含み、
前記アプリケーションプログラムを更新することが、
前記NEAを使用して前記アプリケーションプログラムを無効にすること、および
前記アプリケーションプログラムを無効にした後、前記NEAを使用して前記不揮発性プログラム可能メモリ内に前記更新されたアプリケーションプログラムをダウンロードして記憶すること、
を含むことを特徴とする方法。
【請求項2】
前記アプリケーションプログラムの前記更新が成功であるかどうかを判定することは、
前記更新されたアプリケーションプログラムのダウンロードの終了を検証すること、および、
前記更新されたアプリケーションプログラムの機能の妥当性を確認すること、
を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記遠隔装置内の別のメモリは、前記不揮発性プログラム可能メモリに記憶された前記アプリケーションプログラムのアドレスを記憶するように構成された少なくとも有効コードロケーションを含み、前記アプリケーションプログラムを無効にすることは、前記有効コードロケーションを無効アドレスにリセットすることを含むこと特徴とする請求項1に記載の方法。
【請求項4】
前記更新されたアプリケーションプログラムの前記ダウンロードの終了を検証することは、少なくとも1つのチェックサムを比較することを含むことを特徴とする請求項2に記載の方法。
【請求項5】
前記更新されたアプリケーションプログラムの機能の妥当性を確認することは、前記更新されたアプリケーションプログラムがコマンドを受信し、処理し、そしてコマンドに応答するかを判定することを含むことを特徴とする請求項2に記載の方法。
【請求項6】
前記更新されたアプリケーションプログラムの機能の妥当性を確認することは、前記更新されたアプリケーションプログラムが、一定時間内で機能するかどうかを判定することを含むことを特徴とする請求項2に記載の方法。
【請求項7】
前記更新されたアプリケーションプログラムの機能の妥当性を確認することは、機能の妥当性が確認されない場合、妥当性確認試行を繰返すことを含み、前記更新することは、前記妥当性確認をある回数試行した後に、前記更新されたアプリケーションプログラムの機能の妥当性が確認されない場合に繰返されることを特徴とする請求項2に記載の方法。
【請求項8】
前記アプリケーションプログラムの前記更新が成功であるかどうかを判定することは、前記更新されたアプリケーションプログラムが存在していることを示す、アドレスが別のメモリの有効コードロケーションにセットされているかどうかを判定し、かつ、前記更新されたアプリケーションプログラムが機能していることを示す、フラグがコードラン有効ロケーションにセットされているかどうかを判定することを含むことを特徴とする請求項1に記載の方法。
【請求項9】
前記遠隔装置は、第1および第2のコントローラを含み、前記アプリケーションプログラムの更新は、最初に前記第1のコントローラについて、2番目に前記第2のコントローラについて実施されることを特徴とする請求項1に記載の方法。
【請求項10】
遠隔装置を備え、該遠隔装置を遠隔操作で更新するシステムであって、
前記遠隔装置が、
第1のメモリであって、遠隔操作で消去できないように記憶された消去不能アプリケーション(NEA)を含み、前記NEAは、更新されたアプリケーションプログラムを提供するために、遠隔コマンドに応答して前記遠隔装置においてアプリケーションプログラムの更新を管理するように構成され、前記更新されたアプリケーションプログラムは、前記遠隔装置の機能を提供するためにデバイスコマンドを実行するように構成され、前記NEAは、さらに前記更新されたアプリケーションプログラムが前記遠隔装置において有効かどうかを判定し、前記更新されたアプリケーションプログラムが有効でない場合、更新不能バージョンの前記アプリケーションプログラムを使用することにより、前記更新されたアプリケーションプログラムが有効であるならば、前記更新されたアプリケーションプログラムにより実行されるであろう前記デバイスコマンドと同一のデバイスコマンドを実行するように構成される、第1のメモリと、
前記更新されたアプリケーションプログラムを記憶するように構成され、不揮発性でかつプログラム可能である、第2のメモリと、
前記第1のメモリおよび前記第2のメモリに結合したプロセッサであって、前記NEAを実行するように構成され、前記更新されたアプリケーションプログラムが有効である場合、前記更新されたアプリケーションプログラムを実行するように構成されるプロセッサとを含み、
前記NEAが、前記第2のメモリの前記アプリケーションプログラムを無効にし、該アプリケーションプログラムを無効にした後、前記第2のメモリ内に前記更新されたアプリケーションプログラムをダウンロードして記憶することにより、前記アプリケーションプログラムの前記更新を管理するよう構成されることを特徴とするシステム。
【請求項11】
前記NEAは、前記更新されたアプリケーションプログラムのダウンロードの終了を検証するように構成されることを特徴とする請求項10に記載のシステム。
【請求項12】
前記遠隔装置が、前記第2のメモリ内の前記更新されたアプリケーションプログラムのステータスを示す少なくとも1つのステータスインジケータを記憶するように構成された第3のメモリをさらに備えることを特徴とする請求項10に記載のシステム。
【請求項13】
前記第3のメモリは、少なくとも、前記更新されたアプリケーションプログラムが存在していることを示す前記更新されたアプリケーションプログラムのアドレスを記憶するように構成された有効コードロケーション、および、前記更新されたアプリケーションプログラムが機能することを示すフラグを記憶するように構成されたコードラン有効ロケーションを含むことを特徴とする請求項12に記載のシステム。
【請求項14】
前記NEAは、前記更新されたアプリケーションプログラムが機能するかどうかを判定するように構成され、システムは、一定時間後に前記更新されたアプリケーションプログラムが機能すると判定することに前記NEAが失敗した場合、前記プロセッサをリセットするように構成されたハードウェアタイマをさらに備えることを特徴とする請求項10に記載のシステム。
【請求項15】
前記NEAは、前記遠隔装置についてブートローダ機能およびリンカ機能を実施するように構成されることを特徴とする請求項10に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、装置アプリケーションプログラムを遠隔操作で更新することに関し、特に、アクセス性が制限された装置においてアプリケーションプログラムを遠隔操作で更新するシステムおよび方法に関する。
【背景技術】
【0002】
海底光ファイバ伝送システムは、送信および/または受信トランク端末で終端されてもよい比較的長いトランクセグメントを含む可能性がある。光ファイバ伝送システムはさらに、1つまたは複数の光学装置、たとえば、そのトランクに沿って位置する分岐ユニットおよび/またはリピータを含む可能性がある。各分岐ユニット(BU)は、送信および/または受信分岐端末で終端する分岐セグメントに接続されてもよい。各トランクおよび/または分岐端末は、乾いた陸地にまたはその近くにあってもよい。比較的長いトランクシステムは、水面下で、たとえば海底にそって延びる。光学装置はまた、乾いた陸地から比較的長い距離、たとえば50キロメートル以上の海底に配置されてもよい。各光学装置は、デバイス機能を制御する、および/または、デバイス機能を監視する、および/または、端末と通信するように構成されたコントローラを含んでもよい。こうしたデバイス機能は、ソフトウェア、ハードウェア、および/またはその組合せで実装されてもよい。
【0003】
時々、これらの遠隔装置においてソフトウェア、ファームウェア、および/またはハードウェアを更新することが望ましい場合がある。ハードウェア更新は、装置に対する実際の物理的アクセスを必要とする可能性があるが、ソフトウェアおよび/またはファームウェア更新は、サービスを維持するために遠隔操作で行われる可能性がある。遠隔操作で更新する能力は、たとえば海底システムにおいて、場所のために物理的にアクセスすることが難しい装置に対する物理的アクセスを必要とする活動と比較して、大幅なコスト節減を提供する可能性がある。しかし、遠隔操作による更新能力は、更新試行が失敗するために物理的アクセスが先行する場合、利益をほとんどもたらさない。したがって、コスト節減およびサービス可用性を維持するために、遠隔操作による更新が信頼性の高いものであり、また、更新が失敗した場合の復帰を可能にするならば望ましい。
【0004】
信頼性がない伝送設備から、ファームウェア更新などのアプリケーションプログラムを送信するときに、他の難題も存在する可能性がある。たとえば、遠隔装置に対する低帯域幅伝送チャネルは、アクセス性を制限する可能性がある。端末との連続した通信またはプロトコルハンドシェイクの欠如は、ダウンロードされたアプリケーションのダウンロードされた全てのパケットを検証する能力およびアプリケーションを定期的に再送信する能力を制限する可能性がある。
【0005】
以下の詳細な説明に対して参照が行われるべきであり、以下の詳細な説明は、同じ数字が同じ部品を表す添付図に関連して読まれるべきである。
【発明の概要】
【課題を解決するための手段】
【0006】
本開示の一態様によれば、遠隔装置を遠隔操作で更新する方法が提供されており、方法は、遠隔装置において、遠隔操作で消去できない消去不能アプリケーション(NEA)をランさせる(run)こと、遠隔装置において不揮発性プログラム可能メモリ内のアプリケーションプログラムを更新すること、および、アプリケーションプログラムの更新が成功した場合、遠隔装置においてアプリケーションプログラムを使用してデバイスコマンドを実行し、アプリケーションプログラムの更新が成功しなかった場合、遠隔装置においてNEAを使用してデバイスコマンドを実行することを含む。
【0007】
本開示の別の態様によれば、遠隔装置を遠隔操作で更新するシステムが提供される。システムは、遠隔操作で消去できないように記憶された消去不能アプリケーション(NEA)を含む、第1のメモリを含む。NEAは、遠隔コマンドに応答して遠隔装置においてアプリケーションプログラムの更新を管理し、アプリケーションプログラムが遠隔装置において有効かどうかを判定し、アプリケーションプログラムが有効でない場合、デフォルトアプリケーション機能を提供するように構成される。システムはまた、アプリケーションプログラムを記憶するように構成され、不揮発性でかつプログラム可能である、第2のメモリを含む。システムはさらに、第1のメモリおよび第2のメモリに結合したプロセッサを含み、プロセッサは、NEAを実行するように構成され、アプリケーションプログラムが有効である場合、アプリケーションプログラムを実行するように構成される。
【0008】
本開示のなお別の態様によれば、陸地に位置し、トランク経路上に信号を提供するように構成されたトランク端末と、トランク経路に結合した遠隔装置とを含む、通信システムが提供されており、遠隔装置は、遠隔環境に位置し、遠隔操作で更新されるように構成される。遠隔装置は、遠隔装置の機能を制御するように構成されたコントローラを含む。コントローラは、遠隔操作で消去できないように記憶された消去不能アプリケーション(NEA)を含む、第1のメモリを含む。NEAは、遠隔コマンドに応答して、遠隔装置においてアプリケーションプログラムの更新を管理し、アプリケーションプログラムが有効であるかどうかを判定し、アプリケーションプログラムが有効でない場合、デフォルトアプリケーション機能を提供するように構成される。コントローラはまた、アプリケーションプログラムを記憶するように構成され、不揮発性でかつプログラム可能である、第2のメモリを含む。コントローラはさらに、第1のメモリおよび第2のメモリに結合したプロセッサを含み、プロセッサは、NEAを実行するように構成され、アプリケーションプログラムが有効である場合、アプリケーションプログラムを実行するように構成される。
【0009】
しかし、本明細書で述べられた実施形態は、本発明を利用するいくつかの実施形態のうちの一部に過ぎず、制限ではなく、例証として本明細書で述べられる。当業者に容易に明らかになる多くの他の実施形態が、添付特許請求の範囲に規定される本発明の趣旨および範囲から実質的に逸脱することなく作られてもよい。
【図面の簡単な説明】
【0010】
【
図1】本開示の実施形態と整合する光通信システムの略図である。
【
図2】遠隔操作によるアプリケーション更新用のシステムを含む装置の実施形態のブロック図である。
【
図3A】アプリケーションプログラムを遠隔操作で更新する方法を示すフローチャートである。
【
図3B】アプリケーションプログラムを遠隔操作で更新する方法を示すフローチャートである。
【
図3C】アプリケーションプログラムを遠隔操作で更新する方法を示すフローチャートである。
【
図4】本開示に整合する遠隔操作によるアプリケーション更新の実施形態を示す状態遷移図である。
【発明を実施するための形態】
【0011】
本開示は、アクセス性が制限された遠隔装置において、ファームウェアなどのアプリケーションプログラムを遠隔操作で更新するシステムおよび方法に関する。システムおよび方法は、アプリケーション更新を管理するため、および/または、デフォルトアプリケーション機能を提供するために、消去不能アプリケーション(non−erasable application)(NEA)を使用し、それにより、比較的信頼性がある遠隔操作によるアプリケーションプログラム更新能力を提供する。システムおよび方法は、システム装置に対する物理的アクセスが比較的難しいおよび/または高価である可能性があるシステム、たとえば以下に述べる海底光通信システムで使用されてもよい。例示的な実施形態が、海底光通信システムの文脈で述べられるが、本明細書で述べるシステムおよび方法はまた、地上通信システムで使用されてもよい。
【0012】
ここで
図1を参照すると、本開示に整合する例示的な光通信システム100が示されている。システム100は、説明を容易にするため非常に簡略化した形態で述べられていることを当業者は認識するであろう。光通信システム100は、トランク経路112に結合したトランク端末110、120を含む。本明細書で使用される用語「結合した(coupled)」は、任意の接続、結合、リンク、または同様なものを指し、それにより、1つのシステム要素によって運ばれる信号が、「結合した」要素に与えられる。こうした「結合した」装置は、必ずしも互いに直接接続されるわけではなく、こうした信号を操作するまたは修正する可能性がある中間構成要素または装置によって分離されてもよい。
【0013】
トランク経路112は、光信号を運ぶための複数の光ケーブルセグメント、たとえばケーブルセグメント106、107、108を含んでもよい。各ケーブルセグメントは、トランク端末110と120との間で光信号の双方向通信のための伝送経路を提供するために、光ファイバ対および1つまたは複数のリピータを含む光ファイバケーブルの1つまたは複数のセクション170を含んでもよい。
【0014】
1つまたは複数の分岐ユニット、たとえば分岐ユニット130および140は、トランク端末110と120との間のトランク経路に結合されてもよい。各分岐ユニット130、140はさらに、おそらく1つまたは複数のリピータ170およびリンク用光ケーブルを通して、それぞれ関連する分岐経路135、146を通して、それぞれ分岐端末、たとえば分岐端末150および160に結合されてもよい。したがって、システム100は、2つ以上の端末110、120、150、160間で光信号の双方向通信を提供するように構成されてもよい。説明を容易にするために、本明細書の説明は、1つの端末から別の端末への伝送に言及してもよい。しかし、システム100は、端末110、120、150、160の任意の端末間での双方向通信または単方向通信のために構成されてもよい。
【0015】
トランクおよび分岐経路内の構成要素は、それらの意図される機能を果たすための既知の構成を含んでもよい。リピータ170は、たとえば伝送経路上での信号減衰を補償する任意の既知の光増幅器/リピータ構成を含んでもよい。たとえば、リピータの1つまたは複数は、エルビウム添加ファイバ増幅器(EDFA)、ラマン増幅器、またはハイブリッドラマン/EDFA増幅器などの光増幅器として構成されてもよい。同様に、リピータの1つまたは複数は、光信号を電気信号に変換し、電気信号を処理し、次に、光信号を再送信することによって光信号を再生する既知の光−電気−光構成で設けられてもよい。
【0016】
光通信システム100は、たとえば約600kmより長い、端末の少なくとも2つの端末間の長さを有する長距離(long−haul)システムとして構成されてもよく、水域(a body of water)にまたがってもよい。水域、たとえば海にまたがるように使用されるとき、増幅器170ならびに/または分岐ユニット130および/または140は、海底に着座し、トランク経路112は、ビーチランディング(beach landing)間にまたがってもよい。複数のリピータ、分岐ユニット、および光媒体リンクが、水の下、および/または、陸の上に配設されてもよい。
【0017】
光通信システム100内の1つまたは複数の光学装置(たとえば、分岐ユニット)は、時々更新される可能性がある、ファームウェアなどのアプリケーションプログラムを含んでもよい。光学装置が海底内にまたはその上に配置されている場合、光学装置を遠隔操作で、すなわち端末から更新することが望ましいかもしれない。更新が高い信頼性を持って実施されること、および、更新が失敗した場合、光学装置が機能し続けることも望ましいかもしれない。
【0018】
ここで
図2を参照すると、分岐ユニットまたは他の海底光学装置などの例示的な遠隔装置210は、本開示に整合する遠隔操作によるアプリケーション更新能力を有してもよい。装置210は、説明を容易にするため非常に簡略化した形態で述べられていることを当業者は認識するであろう。装置210は、1つまたは複数のコントローラ220a、220bを含んでもよい。本明細書で使用される「コントローラ(controller)」は、プログラム可能ハードウェア要素、および/または、ハードウェア、ソフトウェア、およびファームウェアの組合せを含んでもよい。たとえば、コントローラは、たとえばCPU、メモリ(たとえば、リード/ライトおよび/またはリードオンリー)、および/または入力および出力が可能な周辺機器を含む、マイクロコントローラであってよい。別の例では、コントローラは、ASIC、すなわち「システムオンチップ(system on a chip)」またはFPGAまたは同様なものとして実装されてもよい。
【0019】
装置210はさらに、他のデバイス機能ハードウェア225を含んでもよい。他のデバイス機能ハードウェア225は、コントローラの制御下で、装置210の機能、たとえば、リピータおよび/または分岐機能を提供するように構成されたハードウェアであってよい。コントローラ220a、220bは、通信信号を、端末および/または別の装置からおよび/またはそこへ、たとえば、端末110、120、150、160および/または別の装置130、140、170から/へ、受信するおよび/または送信するように構成されてもよい。コントローラ220a、220bはさらに、制御信号を、他のデバイス機能ハードウェア225から/へ受信するおよび/または送信するように構成されてもよい。複数のコントローラを有する装置では、コントローラ220a、220bは、冗長(redundant)機能を提供するように構成されてもよい。換言すれば、コントローラ220aは、1つのコントローラが失敗する場合に装置210が機能し続けるように、コントローラ220bと同じデバイス機能を提供するように構成されてもよい。
【0020】
装置210は、たとえばデバイスコマンドを実行することによってデバイス機能を提供するように構成された1つまたは複数のアプリケーションプログラムを含んでもよい。例示的な実施形態では、装置210においてアプリケーションプログラム(複数可)を遠隔操作で更新するシステムは、コントローラ220a、220bの少なくとも一方に実装されてもよい。一般に、コントローラ220aは、プロセッサ230によって実行されるアプリケーションプログラムを記憶する不揮発性プログラム可能メモリ240に結合したプロセッサまたは中央処理ユニット(CPU)230を含んでもよい。コントローラ220aはまた、アプリケーションプログラム更新を管理するための、および/または、デフォルトアプリケーション機能を提供するための消去不能アプリケーション(NEA)を記憶する消去不能メモリ245を含んでもよい。コントローラ220aはさらに、更新されたアプリケーションプログラムの妥当性が一定時間内に確認されない場合にプロセッサをリセットするための、ウォッチドックタイマ255などのハードウェアタイマを含んでもよい。別のメモリ250は、アプリケーションプログラムが有効であるかどうか(すなわち、更新が成功であるかどうか)を示すプログラムステータスインジケータを記憶するために使用されてもよい。コントローラ220aはまた、入力/出力ブロック(I/O)235などの、当業者に知られている他の構成要素を含んでもよい。
【0021】
アプリケーションプログラムを記憶するための不揮発性プログラム可能メモリ240は、比較的大きなブロックでプログラムされるように構成された、消去可能プログラム可能リードオンリーメモリ(EEPROM)、より具体的にはフラッシュメモリタイプEEPROMを含んでもよい。EEPROMは、遠隔ロケーションから(たとえば、端末から)ダウンロードされた、新しいまたは更新されたアプリケーションプログラムが、既存のまたは以前にプログラムされたアプリケーションプログラムを置換するように消去可能でかつプログラム可能であってよい。
【0022】
消去不能メモリ245は、リードオンリーメモリ(ROM)などの、1回プログラムされると、遠隔操作で消去もプログラミングもできないように構成されるメモリを含んでもよい。不揮発性プログラム可能メモリ240および消去不能メモリ245は、別個のメモリ素子(たとえば、EEPROMおよびROM)として示し述べられるが、単一メモリ素子(EEPROMの保護されたコード空間に記憶されたNEAを有するEEPROM)の別個の部分として実装されてもよい。
【0023】
先に述べたように、NEAは、新しいアプリケーションプログラムのダウンロードを管理し、不揮発性プログラム可能メモリ240(たとえば、EEPROM)の消去および/またはプログラミングを管理するように構成されてもよい。NEAはさらに、ブートローダおよび/またはリンカ機能を提供するように構成されてもよい。本明細書で使用されるように、ブートローダは、コントローラがリセットされるおよび/またはパワーアップされるときにランする(run)ように構成されるプログラムとして理解されてもよい。たとえば、ブートローダは、アプリケーションプログラムをメモリにロードし、通信があるかを「聞く(listen)」、および/または、アプリケーションの開始ロケーションにジャンプするように構成されてもよい。本明細書で使用されるように、リンカは、プログラムモジュールおよび/またはデータを組合せて、単一プログラムを形成するように構成されるプログラムとして理解されてもよい。NEAはさらに、デバイスアプリケーション機能、および/または、不揮発性の遠隔操作で消去可能メモリ240内に有効なアプリケーションが存在しないときにデバイス機能を提供するデフォルトアプリケーションを提供するように構成されてもよい。換言すれば、NEAは、遠隔操作で更新されることができない、更新不能バージョンのアプリケーションプログラムを含んでもよい。
【0024】
プログラムステータスインジケータを記憶するメモリ250は、EEPROMなどの不揮発性メモリを含んでもよい。メモリ250は、メモリ240、245の一方または両方と一緒のメモリ素子部分であってよく、または、別個のメモリ素子であってよい。メモリ250は、プログラムステータスインジケータを記憶するように構成された1つまたは複数のメモリロケーションを含んでもよい。たとえば、メモリ250は、アプリケーションプログラムの開始アドレスを記憶するように構成された有効コードロケーション(VALID_CODE_LOC)を含んでもよく、それにより、アプリケーションプログラムが存在することを示す。VALID_CODE_LOCは、新しいアプリケーションプログラムがダウンロードされることを示すためにリセットされてもよく、また、新しいアプリケーションがダウンロードされた後、たとえばダウンロードされた新しいアプリケーションが検証されると、新しいアプリケーションプログラムの開始アドレスにセットされてもよい。メモリ250はさらに、アプリケーションプログラムの機能の妥当性が確認されたことを示すフラグを記憶するように構成されたコードラン有効(runvalid)ロケーション(CODE_RUNVALID_LOC)を含んでもよい。CODE_RUNVALID_LOCは、新しいアプリケーションプログラムがダウンロードされることを示すためにVALID_CODE_LOCがリセットされるときにリセットされてもよく、また、新しいアプリケーションプログラムの機能の妥当性確認によってセットされてもよい。
【0025】
メモリ250はさらに、新しいアプリケーションプログラムの妥当性を確認する試行回数のカウンタを記憶するように構成されたコードリトライロケーション(CODE_RETRIES_LOC)を含んでもよい。CODE_RETRIES_LOCは、新しいアプリケーションがダウンロードされ、検証された後にゼロにリセットされてもよく、また、新しいアプリケーションの機能の妥当性を確認する試行ごとに増分されてもよい。VALID_CODE_LOCは、CODE_RETRIES_LOCに記憶された値に基づいて、たとえば記憶された値が所定の値(すなわち、リトライ数)を超える場合リセットされてもよい。メモリロケーションおよびプログラムステータスインジケータは、アプリケーションプログラムを更新する例示的な方法に関連してさらに詳細に述べられる。
【0026】
装置210は、冗長コントローラ220aおよび220bを含む場合、各コントローラ220a、220bが他に独立にプログラムされるように構成されてもよい。これは、単一コントローラシステムと比較すると、機能信頼性レベルの向上とプログラミング信頼性レベルの向上の両方を提供する可能性がある。たとえば、装置は、1つのコントローラが失敗した場合、機能し続ける。コントローラプログラミング試行が失敗した場合、装置はまた、他のコントローラの制御下で、または、NEAのデフォルトアプリケーションに従って機能し続けてもよい。既存のアプリケーションは、以下で論じる方法に従って複数のコントローラの各コントローラにおいて更新されてもよい。信頼性を維持するために、更新は、たとえば順次に、1回に1つのコントローラにおいて実施されてもよい。冗長コントローラが利点を提供するが、これは、制限であると考えられず、遠隔操作によるアプリケーション更新のためのシステムおよび方法は、単一コントローラに実装されてもよい。
【0027】
ここで
図3Aを参照すると、フローチャート300は、本開示に整合するアプリケーションプログラムを遠隔操作で更新する1つの一般的な方法を示す。一般に、NEAがランし(run)(301)、既存のアプリケーションは、その後、不揮発性プログラム可能メモリ(たとえば、EEPRM)において更新されてもよい。方法はまた、更新が成功したかどうかを判定する(303)ことを含む。たとえば、NEAは、アプリケーションプログラムのステータスを示すプログラムステータスインジケータをチェックしてもよい。更新が成功しなかった場合、デバイスコマンドは、NEAを使用して実行されて(304)、たとえば、デフォルトアプリケーション機能を提供する、および/または、別の更新を試行する。更新が成功した場合、デバイスコマンドは、更新されたアプリケーションを使用して実行される(305)。
【0028】
図3Bを参照すると、フローチャート306は、既存のアプリケーションを更新する例示的な方法をより詳細に示す。この例示的な方法によれば、更新は、たとえば遠隔コマンドに応答して、既存の(すなわち、以前にプログラムされた)アプリケーションを無効にする(307)ことで始まってもよい。新しいアプリケーションが、その後、ダウンロードされ(309)、新しいアプリケーションのダウンロードの終了が、たとえば1つまたは複数のチェックサムを検証することによって検証されてもよい(311)。チェックサム(複数可)を検証することは、ダウンロードプロセス中に、新しいアプリケーションが損なわれなかったという確認を提供してもよい。新しいアプリケーションの機能の妥当性が、その後、確認されてもよい(313)。新しいアプリケーションの機能は、新しいアプリケーションが、端末またはある他の装置と通信することおよび/またはコマンドを処理することなどの、機能を実施することを確認することによって妥当性確認されてもよい。
【0029】
更新中に以前のアプリケーションを無効にする(307)ことは、プログラムステータスインジケータをリセットすることを含んでもよい。先に述べたように、プログラムステータスインジケータは、ダウンロードの終了が検証されたこと、および、新しいアプリケーションの機能の妥当性が確認されたことを示すために使用されてもよい。ダウンロードの終了が検証された後、たとえば、新しいアプリケーションプログラムのアドレスが、有効コードロケーション(VALID_CODE_LOC)にセットされてもよい。新しいアプリケーションプログラムの機能の妥当性確認後に、フラグが、コードラン有効(runvalid)ロケーション(CODE_RUNVALID_LOC)にセットされてもよい。以前のアプリケーションを無効にする(307)ことは、その後、有効コードロケーションをリセットすること(たとえば、ロケーションVALID_CODE_LOCを0xFFFFFFFFにリセットすること)、コードラン有効ロケーション(たとえば、CODE_RUNVALID_LOC)を無効アプリケーションフラグにリセットすること、およびコントローラをリセットすることを含んでもよい。外部コマンド、すなわち、装置、たとえば装置210から遠隔に位置する(locate)ユーザからのユーザコマンドに応答して、既存のアプリケーションが、無効にされてもよく、および/または、コントローラがリセットされてもよい。光通信システムでは、たとえば、外部コマンドは、比較的低いビットレートのテレメトリチャネルを通じて受信されてもよい。
【0030】
新しいアプリケーションをダウンロードする(309)ことは、たとえば端末110、120、150、160から装置210に送信される新しいアプリケーションプログラムを受信することを含んでもよい。速度を考慮して、装置210からのペイロード/メッセージ確認は、ダウンロード動作中、ターンオフされてもよい。受信されるアプリケーションプログラムは、複数のレコードを含んでもよい。各レコードは、関連するエラーチェックパラメータ、たとえばチャックサムを含んでもよい。付加的にまたは別法として、複数のレコード(すなわち、アプリケーション全体)は、関連するエラーチェックパラメータを含んでもよい。不揮発性プログラム可能メモリ240は、その後、たとえばアプリケーションプログラムをフラッシュメモリに焼き込むことによって、受信されたアプリケーションプログラムをプログラムされてもよい。新しいアプリケーションプログラムがダウンロードされた後、ペイロードおよび/またはメッセージ確認が、その後、元通りターンオンされてもよい。
【0031】
プログラムがダウンロードされた後、ダウンロードされた新しいアプリケーションを検証する(311)ことは、アプリケーション全体についてチェックサムを検証するためのユーザコマンドを受信することを含んでもよい。ユーザコマンドは、送信されるアプリケーションプログラムについての開始アドレスおよび終了アドレス、ならびに、送信されるアプリケーションプログラムについての送信されるチェックサムを含んでもよい。たとえば、送信されるチェックサムは、送信されるアプリケーションプログラムに対応するバイトの和のある数(たとえば、16)の最下位ビットを含んでもよい。プログラムされるチェックサムは、その後、開始アドレスと終了アドレスとの間(開始アドレスと終了アドレスを含め)の、プログラム式不揮発性メモリ240のコンテンツに基づいて計算されてもよい。送信されるチェックサムとプログラムされるチェックサムは、その後比較される。比較されたチェックサムが一致する場合、開始アドレスが、その後、メモリ250の有効コードロケーション(すなわち、VALID_CODE_LOC)に記憶されてもよい。コントローラは、その後、ユーザコマンドに応答してリセットされてもよい。
【0032】
ダウンロードされたプログラムが検証された後、新しいアプリケーションプログラムの機能の妥当性を確認する(validate)こと(313)は、新しいアプリケーションプログラムが、一定時間内で機能を実施することが可能かどうかを判定することを含んでもよい。一例によれば、アプリケーションプログラムは、ウォッチドッグタイマ255によって強要される一定時間(たとえば、2分窓)中にアプリケーションプログラムのバージョン番号を検証(verify)するユーザ要求を受信し、処理し、それに応答しようと試みてもよい。アプリケーションプログラムが、一定時間内にその機能を実施できない(たとえば、どんな理由であれ、コマンドを受信しない、正しいバージョン番号がわからない、またはハングアップする)場合、妥当性確認は、不成功と見なされ、コントローラがリセットされる。アプリケーションプログラムが、一定時間内にその機能を実施する(たとえば、2分窓内で正しいバージョン番号を確認する)場合、機能の妥当性が確認されたことを示すフラグが、コードラン有効ロケーション(CODE_RUNVALID_LOC)にセットされる。
【0033】
ここで
図3を参照すると、例示的なフローチャート315は、コントローラリセットおよび/または装置パワーアップからの、NEAとアプリケーションプログラムとの間のプログラムフローをより詳細に示す。先に論じたように、NEAは、新しいアプリケーションプログラムのダウンドード、不揮発性プログラム可能メモリのプログラミング、ダウンロードされた新しいアプリケーションの検証、および/または、新しいアプリケーションプログラムの妥当性確認を管理するように構成されてもよい。NEAはさらに、ブートローダ機能、リンカ機能、および/またはデフォルトアプリケーション機能を提供するように構成されてもよい。
【0034】
プログラムフローが始まる(317)と、NEAが起動してもよい(319)。たとえば、ユーザからのリセットコマンドは、NEAが、起動し(319)、ランし始めるようにさせてもよい。別の例では、装置パワーアップは、NEAが起動する(319)ようにさせてもよい。VALID_CODE_LOCがセットされたかどうかが、その後、判定されてもよい(321)。VALID_CODE_LOCがセットされない(アプリケーションプログラムが存在しないことを示す)場合、新しいアプリケーションプログラムダウンロード動作を管理する、および/または、デバイスコマンドを実行することによってデフォルトデバイス機能を提供するために、NEAがランしてもよい(323)。ダウンロード動作が試行された後、(たとえば、チェックサムを検証することによって)完全なコード検証が受信された(325)場合、VALID_CODE_LOCが、ダウンロードされた新しいアプリケーションプログラムの開始アドレスにセットされてもよい(327)。完全なコード検証が受信されなかった場合(たとえば、ダウンロードされたアプリケーションが損なわれ、チェックサムが一致しなかった場合)、フローは、NEAラン323に戻って、別のダウンロードを試行する、および/または、デバイスコマンドを実行してもよい。VALID_CODE_LOCがセットされた(327)後、NEAは、リセットコマンドが受信される(329)までランし続けてもよい(323)。リセットコマンドが受信された場合、CODE_RETRIES_LOCが、ゼロにリセットされ(331)、プログラムフローは、NEA起動319に戻ってもよい。
【0035】
VALID_CODE_LOCが(たとえば、アプリケーションプログラムの開始アドレスに)セットされていると判定される場合、CODE_RUNVALID_LOCがセットされているかどうかが、その後、判定されてもよい(333)。CODE_RUNVALID_LOCがセットされている場合、アプリケーションプログラムがランし(341)、また、デバイスコマンドを実行してもよい。換言すれば、VALID_CODE_LOCがセットされることおよびCODE_RUNVALID_LOCがセットされることは、新しいアプリケーションプログラムが成功裏にダウンロードされ、その機能が確認されたこと、すなわち、更新が成功であったことを示す。
【0036】
CODE_RUNVALID_LOCがセットされない場合、CODE_RETRIES_LOCが、増分されてもよい(335)。CODE_RETRIES_LOCがリトライ数(たとえば、3)を超えると判定される(337)場合、VALID_CODE_LOCは、アプリケーションプログラムが存在しないことを示し、また、NEAをランすること(323)によって別のダウンロードを始動するために、(たとえば、0xFFFFFFFFに)リセットされてもよい(339)。換言すれば、CODE_RUNVALID_LOCが、機能の妥当性を確認する複数の試行が失敗したことを示す場合、アプリケーションプログラムは、動作せず、別のダウンロードが必要とされてもよい。
【0037】
CODE_RETRIES_LOCがリトライ数(たとえば、3)未満の場合、機能を実施し、機能の妥当性を確認するように試みるアプリケーションプログラムがランされてもよい(341)。アプリケーションがランしている(341)ときに、アプリケーションプログラムが、成功裏に機能を実施する(たとえば、バージョン要求が終了する)場合、CODE_RUNVALID_LOCが、機能の妥当性が確認されたことを示すためにセットされてもよい。CODE_RUNVALID_LOCがセットされる(343)場合、アプリケーションプログラムは、ランし続け(341)、デバイスコマンドを実行してもよい。CODE_RUNVALID_LOCがセットされず(343)、タイマがタイムアウトしていない(345)場合、アプリケーションプログラムは、ランし続け(341)、妥当性確認を試行することになる。CODE_RUNVALID_LOCがセットされず(343)、タイマがタイムアウトする(345)場合、妥当性確認試行は失敗し、プログラムフローは、NEA起動319に戻ってもよく、また、妥当性確認シーケンスが、再び開始されてもよい。
【0038】
図4を参照すると、状態遷移
図400はさらに、本開示に整合するアプリケーションプログラムを遠隔操作で更新するシステムおよび方法を示す。最初に、すなわち、アプリケーションプログラム更新動作の直前に、アプリケーションは、コマンド待ち状態410にある可能性がある。(たとえば端末から)無効コマンドを受信すると、VALID_CODE_LOCがリセットされ、CODE_RUNVALID_LOCがリセットされ、コントローラがリセットされ、状態が、NEA起動状態415に遷移してもよい。VALID_CODE_LOCがセットされない場合、状態は、NEAコマンド待ち状態420に遷移してもよい。ファームウェアダウンロードコマンドが受信される場合、状態は、NEA焼き込みコード状態425に遷移してもよく、NEA焼き込みコード状態425では、ダウンロードが終了し検証される場合、VALID_CODE_LOCがセットされてもよい。リセットが起こる場合、状態は、その後、NEA起動状態415に遷移してもよい。VALID_CODE_LOCがセットされ、CODE_RUNVALID_LOCがセットされず、CODE_RETRIES_LOCがリトライ数(たとえば、3)未満の場合、CODE_RETRIES_LOCが増分され、状態が、アプリケーション妥当性確認待ち状態430に遷移してもよい。リセットコマンドが受信される、および/または、妥当性確認コマンドが受信されない、および/または、一定時間、たとえば2分後に妥当性確認が成功でなかった場合、状態は、NEA起動415に遷移してもよい。VALID_CODE_LOCがセットされ、CODE_RUNVALID_LOCがセットされず、CODE_RETRIES_LOCがリトライ数以上である場合、状態は、リセットVALID_CODE_LOC435に遷移してもよい。状態は、その後、NEAコマンド待ち状態420に遷移してもよい。NEA起動状態415にて、VALID_CODE_LOCがセットされ、CODE_RUNVALID_LOCがセットされる場合、状態は、アプリケーションコマンド待ち状態410に遷移してもよい。
【0039】
したがって、海底光ファイバ装置などの、物理的にアクセスすることが難しい遠隔装置について信頼性が高いソフトウェアおよび/またはファームウェアを提供する可能性があるシステムおよび方法が述べられた。ダウンロードを管理し、ブートローダおよび/またはリンカ機能を提供し、更新が成功でない場合にデフォルトデバイスアプリケーション機能を提供するように構成されるNEAが提供されてもよい。更新をそれぞれダウンロードし、ダウンロードが成功裏に終了したことを検証し、ダウンロードされた更新が機能する、すなわち、更新が成功であったことの妥当性を確認するように構成された複数のコントローラによって信頼性が高められてもよい。