IP Library Granted Patent US 9,104,521
Granted Patent B2
US 9,104,521 · App. 12/404,769 · Granted Aug 11, 2015

System and method for remote device application upgrades

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,104,521
App. No.
12/404,769
Granted
Aug 11, 2015
Kind
B2
Abstract

A method and system for remotely upgrading a remote device may be used to upgrade application programs in devices that are difficult to access physically, such as undersea optical devices in an optical communication system. The method and system uses a Non-Erasable Application (NEA) to manage the upgrade of an application program, to determine if the application program is valid, and to provide default application functions if the application program is not valid. The NEA may be stored on a memory that is not remotely erasable and the application program may be stored on a memory that is non-volatile and programmable. Code status indicators may be used to indicate if the application program is valid, for example, to indicate that the code is present and functional.

Claims (43)

1. A method of remotely upgrading a remote device, comprising:

managing download of an upgrade to an application program using a Non-Erasable Application (NEA) in said remote device, wherein said NEA is not remotely erasable and includes a non-upgradable version of said application program;

upgrading said application program in a non-volatile, programmable memory in said remote device with said upgrade to provide an upgraded application program;

determining whether said upgrading said application program was successful by validating functionality of said application program; and

executing device commands to provide functions of the remote device using said upgraded application program in said remote device if upgrading said application program is successful; and

executing said device commands using said NEA in said remote device if upgrading said application program is unsuccessful, whereby said NEA is configured execute the same ones of said device commands that would be executed by the upgraded application program if the upgrading the application program was successful by using the non-upgradable version of said application program,

wherein upgrading said application program comprises:

invalidating said application program using said NEA, and

downloading and storing said upgraded application program in said non-volatile, programmable memory using said NEA after said invalidating said application program using said NEA,

wherein a memory in said remote device includes at least a valid code location configured to store an address of said application program stored in said non-volatile, programmable memory, wherein invalidating said application program comprises resetting said valid code location to an invalid address,

wherein said validating functionality of said upgraded application program comprises repeating validation attempts if functionality is not validated, and wherein said upgrading is repeated if functionality of said upgraded application program is not validated after a number of said validation attempts.

2. A method according to claim 1 ,

said determining whether said upgrading said application program was successful comprises:

verifying a completed download of said upgrade.

3. A method according to claim 2 , wherein verifying said completed download of said upgrade comprises comparing at least one checksum.

4. A method according to claim 1 , wherein validating functionality of said upgraded application program comprises determining whether said upgraded application program receives, processes and responds to a command.

5. A method according to claim 1 , wherein validating functionality of said upgraded application program comprises determining whether said upgraded application program is functional within a period of time.

6. A method according to claim 1 wherein said determining whether said upgrading said application program was successful comprises determining if an address is set in said valid code location indicates that said upgraded application program is present and by determining if a flag is set in a code runvalid location indicating that said upgraded application program is functional.

7. A method according to claim 1 , wherein said remote device includes first and second controllers, and wherein upgrading said application program is performed first for said first controller and second for said second controller.

8. A system for remotely upgrading a remote device, comprising:

a first memory including a Non-Erasable Application (NEA) stored therein such that said NEA is not remotely erasable, and wherein said NEA is configured to manage an upgrade of an application program in said remote device in response to a remote command to provide an upgraded application program, said upgraded application program being configured to execute device commands to provide functions of the remote device, said NEA being further configured to determine if said upgraded application program is valid in said remote device-by validating functionality of said application program, and to cause execution of the same ones of said device commands that would be executed by the upgraded application program if the upgraded application program is valid by using a non-upgradable version of said application program if said upgraded application program is not valid;

a second memory configured to store said upgraded application program therein, wherein said second memory is non-volatile and programmable; and

a processor coupled to said first memory and said second memory, wherein said processor is configured to execute said NEA and is configured to execute said upgraded application program if said upgraded application program is valid,

wherein said NEA is configured to manage said upgrade of said application program by invalidating said application program in said second memory, and downloading and storing said upgraded application program in said second memory after invalidating said application program,

wherein a third memory in said remote device includes at least a valid code location configured to store an address of said application program in said second memory, wherein said NEA is configured to invalidate said application program in said second memory by resetting said valid code location to an invalid address,

wherein validating functionality of said upgraded application program comprises repeating validation attempts if functionality is not validated, and wherein said upgrading is repeated if functionality of said upgraded application program is not validated after a number of said validation attempts.

9. The system according to claim 8 wherein said NEA is configured to verify a completed download of said upgrade program.

10. The system according to claim 8 wherein said third memory is configured to store at least one status indicator indicating a status of said upgraded application program in said second memory.

11. The system according to claim 8 wherein said third memory comprises a code runvalid location configured to store a flag indicating that said upgraded application program is functional.

12. The system according to claim 8 further comprising a hardware timer configured to reset said processor if said NEA fails to determine that said upgraded application program is functional after a period of time.

13. The system according to claim 8 wherein said NEA is configured to perform bootloader functions and linker functions for said remote device.

14. A communication system comprising:

a trunk terminal situated on land and configured to provide a signal on a trunk path; and

a remote device coupled to said trunk path, wherein said remote device is situated in a remote environment and is configured to be upgraded remotely, said remote device comprising:

a controller configured to control a function of said remote device, wherein said controller comprises:

a first memory including a Non-Erasable Application (NEA) stored therein, wherein said NEA is not remotely erasable, and wherein said NEA is configured to manage an upgrade of an application program in said remote device in response to a remote command from said trunk terminal to provide an upgraded application program, said upgraded application program being configured to execute device commands to provide functions of the remote device, said NEA being further configured to determine if said upgraded application program in said remote device is valid by validating functionality of said application program, and to cause execution of the same ones of said device commands that would be executed by the upgraded application program if the upgrade application program is valid by using a non-upgradable version of said application program if said upgraded application program is not valid;

a second memory configured to store said upgraded application program therein, wherein said second memory is non-volatile and programmable; and

a processor coupled to said first memory and said second memory, wherein said processor is configured to execute said NEA and is configured to execute said upgraded application program if said upgraded application program is valid,

wherein said NEA is configured to manage said upgrade of said application program by invalidating said application program in said second memory, and downloading and storing said upgraded application program in said second memory after invalidating said application program,

wherein a third memory in said remote device includes at least a valid code location configured to store an address of said application program in said second memory, wherein said NEA is configured to invalidate said application program in said second memory by resetting said valid code location to an invalid address,

wherein validating functionality of said upgraded application program comprises repeating validation attempts if functionality is not validated, and wherein said upgrading is repeated if functionality of said upgraded application program is not validated after a number of said validation attempts.

15. A communication system according to claim 14 wherein said remote device is an undersea optical device.

16. A communication system according to claim 14 wherein said third memory is configured to store at least one status indicator indicating a status of said upgraded application program in said second memory.

Assignments (7)
SECURITY INTEREST Recorded Apr 27, 2021
From: SUBCOM, LLC
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 056067/0462 →
RELEASE OF SECURITY INTEREST Recorded Apr 27, 2021
From: GOLDMAN SACHS LENDING PARTNERS LLC, AS ADMINISTRATIVE AGENT
To: TYCO ELECTRONICS SUBSEA COMMUNICATIONS LLC
Reel/Frame 057215/0950 →
CHANGE OF NAME Recorded Nov 16, 2018
From: TYCO ELECTRONICS SUBSEA COMMUNICATIONS LLC
To: SUBCOM, LLC
Reel/Frame 047586/0655 →
SECURITY INTEREST Recorded Nov 2, 2018
From: TYCO ELECTRONICS SUBSEA COMMUNICATIONS LLC
To: GOLDMAN SACHS LENDING PARTNERS LLC, AS COLLATERAL AGENT
Reel/Frame 047924/0194 →
CHANGE OF ASSIGNEE ADDRESS Recorded Sep 18, 2018
From: TYCO TELECOMMUNICATIONS (US) INC
To: TYCO ELECTRONICS SUBSEA COMMUNICATIONS LLC
Reel/Frame 047210/0302 →
CHANGE OF NAME Recorded Apr 12, 2010
From: TYCO TELECOMMUNICATIONS (US) INC.
To: TYCO ELECTRONICS SUBSEA COMMUNICATIONS LLC
Reel/Frame 024213/0531 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 17, 2009
From: SABET, SAMEH A.; LISS, JONATHAN M.
To: TYCO TELECOMMUNICATIONS (US) INC.
Reel/Frame 022404/0401 →