IP Library Granted Patent US 8,839,227
Granted Patent B2
US 8,839,227 · App. 12/396,154 · Granted Sep 16, 2014

Preventing overwrite of nonessential code during essential code update

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 8,839,227
App. No.
12/396,154
Filed
Mar 2, 2009
Granted
Sep 16, 2014
Kind
B2
Art Unit
2198
USPC
717/172
Abstract

Systems and methods are provided for downloading updated software from a head end to a cable modem that writes to flash memory an updated operating system code without overwriting the preexisting application code portion and also without overwriting the preexisting operating system code portion. Updated application code is not written until the updated operating system code has been verified as error-free.

Claims (52)

1. A method for updating the software of a network communication device, the method comprising the steps of:

receiving the updated software code from a head end device, wherein the updated software code includes an essential code portion and a nonessential application code portion; and

upon a determination that sufficient storage capacity exists within a flash memory device for the essential code portion while maintaining a preexisting essential code portion and a preexisting nonessential application code portion therein:

writing the essential code portion to the flash memory device such that both the preexisting essential code portion and the preexisting nonessential application code portion are not overwritten by the essential code portion;

verifying that the essential code portion has been written to the flash memory device without error;

updating a first pointer with an address corresponding to the essential code;

writing the nonessential application code portion to the flash memory device such that the preexisting essential code portion is not overwritten; and

updating a second pointer with an address corresponding to the nonessential application code.

2. The method of claim 1 further comprising the steps of:

upon determination that essential code portion was not accurately written to the flash memory device:

receiving the updated software code again from a head end device; and

performing the determination steps again.

3. The method of claim 2 further comprising the step of, upon failure of an attempt to write the essential code portion to the flash memory device, operating the network communication device with the preexisting essential code portion and the preexisting nonessential application code portion without the need for re-download of preexisting software code.

4. The method of claim 1 , wherein the network communication device is a cable modem.

5. The method of claim 1 , wherein the nonessential application code portion includes code for operating a telephony device.

6. The method of claim 1 , wherein the nonessential application code portion includes PacketCable™ code.

7. The method of claim 1 further comprising the step of, booting the network communication device from the preexisting essential code portion after a failure that occurred while updating the software and before the verifying step.

8. The method of claim 7 further comprising the step of, requesting that the updated software code be re-sent from the head end device, whereupon the updating of the software begins again.

9. The method of claim 7 , wherein the failure is one of the following: a loss of power, an RF interruption, a corrupted download.

10. The method of claim 1 further comprising the step of, verifying that the nonessential application code portion has been written to the flash memory device without error.

11. A method for updating the software of a network communication device, the method comprising the steps of:

receiving the updated software code from a head end device, wherein the updated software code includes an essential code portion and a nonessential application code portion;

determining that sufficient storage capacity exists within a flash memory device for the essential code portion while maintaining a preexisting essential code portion and a preexisting nonessential application code portion therein,

writing the essential code portion to the flash memory device such that both the preexisting essential code portion and the preexisting nonessential application code portion are not overwritten by the essential code portion; and

writing the nonessential application code portion to the flash memory device such that the preexisting essential code portion is not overwritten.

12. A system for updating the software of a network communication device, the system comprising:

a head end device for providing updated software code, wherein the updated software code includes an essential code portion and a nonessential application code portion; and

a network communication device comprising a flash memory device, the network communication device coupled to the head end device through a network and configured to:

receive the updated software code from the head end device; and

upon a determination that sufficient storage capacity exists within the flash memory device for the essential code portion and also maintain a preexisting essential code portion and a preexisting nonessential application code portion therein:

write the essential code portion to the flash memory device while the preexisting essential code portion and the preexisting nonessential application code portion are not overwritten;

verify that the essential code portion has been written to the flash memory device without error;

update a first pointer with an address that corresponds to the essential code;

write the nonessential application code portion to the flash memory device such that the preexisting essential code portion is not overwritten; and

update a second pointer with an address that corresponds to the nonessential application code.

13. The system of claim 12 , wherein the network communication device is further configured to request the updated software code again from the head end device upon a determination that the essential code portion was not accurately written to the flash memory device.

14. The system of claim 13 , wherein the network communication device is further configured to operate with the preexisting essential code portion and the preexisting nonessential application code portion upon failure of an attempt to write the essential code portion to the flash memory device, such that a re-download of preexisting software code is unnecessary.

15. The system of claim 12 , wherein the network communication device is a cable modem.

16. The system of claim 12 , wherein the nonessential application code portion includes code for operating a telephony device.

17. The system of claim 12 , wherein the nonessential application code portion includes PacketCable™ code.

18. The system of claim 12 the network communication device is configured to boot from the preexisting essential code portion after a failure that occurred while updating the software and before verification of the essential code portion.

19. The system of claim 18 wherein the network communication device is configured to request that the updated software code be re-sent from the head end device such that the updating of the software starts again.

20. The system of claim 18 , wherein the failure is one of the following: a loss of power, an RF interruption, a corrupted download.

21. The system of claim 12 wherein the network communication device verifies that the nonessential application code portion has been written to the flash memory device without error.

22. A method for installing an updated set of communication programs into a stored program controlled apparatus that includes a communication port and a memory by transmitting said updated set of programs to said apparatus via said port, with the aid of a preexisting set of communications programs already resident in said memory, where said preexisting set of programs contains a subset of programs that include preexisting essential programs, and said updated set of programs contain a subset of programs that include essential programs and nonessential application programs, comprising the steps of:

installing the essential programs in a first area of said memory that do not contain the preexisting essential programs and also do not contain preexisting nonessential application programs, such that the preexisting essential programs and preexisting nonessential application programs are not overwritten;

altering operation of said apparatus to execute the essential programs instead of the preexisting essential programs; and

installing the nonessential application programs in a second area of said memory, said second area constituting memory locations not occupied by the essential programs.

23. The method of claim 22 , further comprising the steps of:

erasing said first area of said memory, said erasing step to be performed prior to said step of installing the essential programs into said first area of said memory; and

erasing said second area of said memory, said erasing step to be performed after said step of altering operation of the apparatus and prior to said step of installing the remaining nonessential application programs of said updated set of communication programs.

24. The method of claim 22 , wherein said step of altering operation of said apparatus to execute said essential programs is accomplished by updating a pointer to a byte address indicating a beginning sector of said essential programs to pass control of said apparatus to said essential programs.