Embedded software update system
First Claim
1. A method of preparing an embedded software operative in a digital product for field modification by a software patch, comprising the steps of:
- a) determining a plurality of insertion locations for said embedded software based on a predetermined criteria, each of said one insertion locations defining one section of said embedded software;
b) allocating a plurality of update processing routines at said plurality of insertion locations, each of said update processing routines being adapted to modify execution of said embedded software at a corresponding section when a software patch exists for said section;
c) determining a memory area in said digital product for use by said software patch;
d) loading said embedded software with said plurality of update processing routines into an embedded software code area of said digital product.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and system for an embedded software update system, which helps manufactures or vendors avoid costly product recall activities in the event their digital products have field software errors (“bugs”) or hardware problems. One aspect of the present invention is directed to an error correction system, which remotely corrects these software errors and minimizes influences of hardware problems. Another aspect of the present invention is directed to a software updating system, which is capable of updating software modules in the digital products by use of software patches. The software patch system of the present invention facilitates manufactures'"'"' transmitting software patches to the “on-the-fly” digital products to fix software errors and minimize influences of hardware problems. The software patch may also contain new parameters for updating some data area in NVM (Non Volatile Memory), EEPROM (Electrically Erasable Programmable Read-Only Memory) memory of a digital product, which is quite useful when service providers or manufactures want to modify some service features or product features.
90 Citations
54 Claims
-
1. A method of preparing an embedded software operative in a digital product for field modification by a software patch, comprising the steps of:
-
a) determining a plurality of insertion locations for said embedded software based on a predetermined criteria, each of said one insertion locations defining one section of said embedded software;
b) allocating a plurality of update processing routines at said plurality of insertion locations, each of said update processing routines being adapted to modify execution of said embedded software at a corresponding section when a software patch exists for said section;
c) determining a memory area in said digital product for use by said software patch;
d) loading said embedded software with said plurality of update processing routines into an embedded software code area of said digital product. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
based on number of lines of program software of said embedded software;
based on unit of function of said embedded software;
based on type of instruction of said embedded software;
based on a software design scheme of said digital product;
based on a hardware design scheme of said digital product;
based on a modification scheme of said embedded software;
based on an error correction scheme of said embedded software.
-
-
5. The method of claim 1, said step of allocating a plurality of update processing routines is based on at least one of the following methodology:
-
a) allocating said update processing routines in said embedded software before compiling said embedded software into executable machine code;
b) compiling said embedded software into corresponding assembly program code, allocating said update processing routines in said assembly program code, and then compiling said assembly program code into executable machine code;
c) compiling said embedded software into corresponding object code, allocating said update processing routines in said object code, and then compiling said object code into executable machine code;
d) compiling said embedded software into executable machine code, allocating said update processing routines in said executable machine code.
-
-
6. The method of claim 1, wherein said step of allocating a plurality of update processing routines further comprises modifying at least one program instruction of said embedded software.
-
7. The method of claim 5, wherein said step of allocating a plurality of update processing routines further comprises modifying at least one program instruction of said embedded software.
-
8. The method of claim 1, wherein at least one of said update processing routines is adapted to:
-
if there is a software patch for updating a section of said embedded software, direct execution of said embedded software to a location of said software patch for execution;
if there is no such a software patch, use said section of said embedded software for execution.
-
-
9. The method of claim 4, wherein at least one of said update processing routines is adapted to:
-
if there is a software patch for updating a section of said embedded software, direct execution of said embedded software to a location of said software patch for execution;
if there is no such a software patch, use said section of said embedded software for execution.
-
-
10. The method of claim 1, wherein at least one of said update processing routines is adapted to:
-
check whether there is a software patch for updating a section of said embedded software, and if there is such a software patch, direct execution of said embedded software to a location of said software patch for execution;
if there is no such a software patch, use said section of said embedded software for execution.
-
-
11. The method of claim 4, wherein at least one of said update processing routines is adapted to:
-
check whether there is a software patch for updating a section of said embedded software, and if there is such a software patch, direct execution of said embedded software to a location of said software patch for execution;
if there is no such a software patch, use said section of said embedded software for execution.
-
-
12. The method of claim 8, wherein said step to direct execution of said embedded software to a location of said software patch further comprises:
direct execution of said embedded software to a first location of a patch control routine, and then direct execution of said embedded software to a second location of said software patch based on said patch control routine, and use said software patch for execution.
-
13. The method of claim 10, wherein said step to direct execution of said embedded software to a location of said software patch further comprises:
direct execution of said embedded software to a first location of a patch control routine, and then direct execution of said embedded software to a second location of said software patch based on said patch control routine, and use said software patch for execution.
-
14. The method of claim 1, wherein said plurality of update processing routines comprise at least one of:
-
first routine adapted to, if there is a software patch for updating a section of said embedded software, direct execution of said embedded software to a location of said software patch for execution, if there is no such a software patch, use said section of said embedded software for execution;
second routine adapted to check whether there is a software patch for updating a section of said embedded software, and if there is such a software patch, direct execution of said embedded software to a location of said software patch for execution, if there is no such a software patch, use said section of said embedded software for execution;
third routine adapted to check whether there is a software patch for updating a section of said embedded software, and if there is such a software patch, direct execution of said embedded software to a first location of a patch control routine, and then direct execution of said embedded software to a second location of said software patch based on said patch control routine for execution, if there is no such a software patch, use said section of said embedded software for execution;
fourth routine adapted to, if there is a software patch for updating a section of said embedded software, direct execution of said embedded software to a first location of a patch control routine and direct execution of said embedded software to a second location of a software patch based on said patch control routine for execution, if there is no such a software patch, use said section of said embedded software for execution.
-
-
15. The method of claim 1, further comprising:
-
e) generating a software patch, adapted to provide a predetermined function;
f) transmitting said software patch to said digital product through a communications link;
g) receiving said software patch by said digital product;
h) writing said software patch into said memory area.
-
-
16. The method of claim 8, further comprising:
-
e) generating a software patch, adapted to provide a predetermined function;
f) transmitting said software patch to said digital product through a communications link;
g) receiving said software patch by said digital product;
h) writing said software patch into said memory area.
-
-
17. The method of claim 10, further comprising:
-
e) generating a software patch, adapted to provide a predetermined function;
f) transmitting said software patch to said digital product through a communications link;
g) receiving said software patch by said digital product;
h) writing said software patch into said memory area.
-
-
18. The method of claim 12, further comprising:
-
e) generating a software patch, adapted to provide a predetermined function;
f) transmitting said software patch to said digital product through a communications link;
g) receiving said software patch by said digital product;
h) writing said software patch into said memory area.
-
-
19. The method of claim 15, further comprising the step of using said software patch to overwrite at least a portion of said update processing routine in said embedded software.
-
20. The method of claim 19, wherein said portion is a predetermined jump offset.
-
21. The method of claim 15, wherein said step of generating comprises using a patch server, which has at least one of the following functions,
handling generating said software patch; handling encrypting said software patch with a predetermined encryption algorithm.
-
22. The method of claim 15, wherein said step of transmitting comprises using a patch server, which has at least one of the following functions,
handling transmitting said software patch; -
handling receiving at least one of messages from said digital product;
handling re-transmitting said software patch.
-
-
23. The method of claim 22, further comprising sending at least one message from said digital product to said patch server in at least one of the following timing
after receiving of said software patch by said digital product; after writing said software patch into said memory area.
-
24. The method of claim 1, wherein said software patch includes at least one of the followings:
-
manufacture identifier;
product model number;
software version number;
software section identifier;
patch identifier;
CPU identifier;
MAC layer address;
patch address information;
patch program for updating said embedded software;
information of how to interpret patch program;
reset flag information;
information items that can be used for post-process of patch programming;
information items that can be used for identifying a digital product;
information items that can be used for identifying a subscriber;
data parameter for updating data area of said digital product.
-
-
25. A method of preparing an embedded software operative in a digital product for field modification by a software patch, comprising the steps of:
-
a) determining a plurality of insertion locations for said embedded software based on a predetermined criteria, at least two of said insertion locations defining two sections for said embedded software;
b) allocating a plurality of patch operation areas in said embedded software;
c) setting said patch operation areas with a first content which is selectively changeable to a second content;
d) loading said embedded software with said plurality of patch operation areas into said digital product. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50)
allocating said patch operation areas at said insertion locations of said embedded software.
-
-
27. The method of claim 25, further comprising allocating at least one of patch operation areas at a predetermined memory area outside of said embedded software code area.
-
28. The method of claim 26, further comprising allocating at least one of patch operation area at a predetermined memory area outside of said embedded software code area.
-
29. The method of claim 25, wherein said step of allocating comprises:
reserving memory areas in said embedded software for use as said patch operation areas by program instruction in said embedded software.
-
30. The method of claim 26, wherein said step of allocating comprises:
reserving memory areas in said embedded software for use as said patch operation areas by program instruction in said embedded software.
-
31. The method of claim 27, wherein said step of allocating comprises:
reserving memory areas in said embedded software for use as said patch operation areas by program instruction in said embedded software.
-
32. The method of claim 25, wherein said step of determining insertion locations is based on at least one of the following methods:
-
based on number of lines of program software of said embedded software;
based on unit of functions of said embedded software;
based on types of instructions of said embedded software;
based on a predetermined software design scheme of said digital product;
based on a predetermined hardware design scheme of said digital product;
based on a predetermined modification scheme of said embedded software;
based on a predetermined error correction scheme of said embedded software.
-
-
33. The method of claim 25, wherein said step of allocating further comprises modifying at least one program instruction of said embedded software.
-
34. The method of claim 25, wherein said patch operation areas comprise at least one of the following:
-
a first update processing routine adapted to, if there is a software patch for updating a section of said embedded software, direct execution of said embedded software to a location of said software patch for execution;
if there is no such a software patch, use said section of said embedded software for execution;
a second update processing routine adapted to check whether there is a software patch for updating a section of said embedded software, and if there is such a software patch, direct execution of said embedded software to a location of said software patch for execution;
if there is no such a software patch, use said section of said embedded software for execution;
a third update processing routine adapted to check whether there is a software patch for updating a section of said embedded software, and if there is such a software patch, direct execution of said embedded software to a first location of a patch control routine, and then direct execution of said embedded software to a second location of said software patch based on said patch control routine for execution;
if there is no such a software patch, use said section of said embedded software for execution;
a fourth update processing routine adapted to, if there is a software patch for updating a section of said embedded software, direct execution of said embedded software to a first location of a patch control routine and direct execution of said embedded software to a second location of a software patch based on said patch control routine for execution;
if there is no such a software patch, use said section of said embedded software for execution;
a fifth update processing routine adapted to check whether there is a software patch and if so, to modify execution of said embedded software for a corresponding section to jump to said software patch for execution;
a jump instruction adapted to modify execution of said embedded software for a corresponding section if there is said software patch, and to jump to said section if there is no said software patch;
a jump offset value selectably changeable to another jump offset value for use by said jump instruction;
a patch control routine adapted to cause jumping to said software patch;
a patch program adapted to modify execution of said embedded software;
a patch control block selectably changeable to a patch correction routine;
a first memory area set to a pre-determined content used to modify execution of said embedded software;
a second memory area set to a pre-determined content changeable to a parameter used to modify execution of said embedded software;
a third memory area set to a pre-defined content changeable to a software program used to modify execution of said embedded software.
-
-
35. The method of claim 34, wherein said patch control block is shared by a plurality of sections of said embedded software.
-
36. The method of claim 25, wherein timing of said step of allocating a plurality of patch operation areas is based on at least one of the following methodology:
-
a) allocating at least one of said patch operation areas in said embedded software before compiling said embedded software into executable machine code;
b) compiling said embedded software into corresponding assembly program code, allocating at least one of said patch operation areas in said assembly program code, and then compiling said assembly program code into executable machine code;
c) compiling said embedded software into corresponding object code, allocating at least one of said patch operation areas in said object code, and then compiling said object code into executable machine code;
d) compiling said embedded software into executable machine code, allocating at least one of said patch operation areas in said executable machine code.
-
-
37. The method of claim 25, further comprising:
-
e) generating a software patch, adapted to provide a predetermined function;
f) transmitting said software patch to said digital product through a communications link;
g) receiving said software patch by said digital product;
h) writing said software patch into at least one of said patch operation areas.
-
-
38. The method of claim 27, further comprising:
-
e) generating a software patch, adapted to provide a predetermined function;
f) transmitting said software patch to said digital product through a communications link;
g) receiving said software patch by said digital product;
h) writing said software patch into at least one of said patch operation areas.
-
-
39. The method of claim 28, further comprising:
-
e) generating a software patch, adapted to provide a predetermined function;
f) transmitting said software patch to said digital product through a communications link;
g) receiving said software patch by said digital product;
h) writing said software patch into at least one of said patch operation areas.
-
-
40. The method of claim 29, further comprising:
-
e) generating a software patch, adapted to provide a predetermined function;
f) transmitting said software patch to said digital product through a communications link;
g) receiving said software patch by said digital product;
h) writing said software patch into at least one of said patch operation areas.
-
-
41. The method of claim 34, further comprising:
-
e) generating a software patch, adapted to provide a predetermined function;
f) transmitting said software patch to said digital product through a communications link;
g) receiving said software patch by said digital product;
h) writing said software patch into at least one of said patch operation areas.
-
-
42. The method of claim 37, wherein said step of writing comprises the step of using said software patch to change at least one jump offset.
-
43. The method of claim 37, wherein said step of generating comprises using a patch server, which has at least one of the following functions,
handling generating said software patch; handling encrypting said software patch with a predetermined encryption algorithm.
-
44. The method of claim 37, wherein said step of transmitting comprises using a patch server, which has at least one of the following functions,
handling transmitting said software patch; -
handling receiving at least one of messages from said digital product;
handling re-transmitting said software patch.
-
-
45. The method of claim 37, wherein said step of transmitting comprises sending said software patch using Data Burst Messages defined in CDMA standards.
-
46. The method of claim 44, further comprising sending at least one message from said digital product to said patch server in at least one of the following instances:
-
after receiving of said software patch by said digital product;
after writing said software patch into said patch operation area.
-
-
47. The method of claim 37, wherein said software patch comprises at least one of the following information:
-
manufacture identifier;
product model number;
software version number;
software section identifier;
patch identifier;
CPU identifier;
MAC layer address;
patch address information;
patch program for updating said embedded software;
information of how to interpret patch program;
reset flag information;
information items that can be used for post-process of patch programming;
information items that can be used for identifying a digital product;
information items that can be used for identifying a subscriber;
data parameter for updating data area of said digital product.
-
-
48. The method of claim 37, further comprising interpreting at lease one item of said software patch by said digital product in at least one of the following ways:
-
changing said at lease one item from a first software language format to a second software language format before writing said software patch into said patch operation area;
changing said at lease one item from a first software language format to a second software language format before using said software patch for execution;
changing said at lease one item from a first data format to a second data format before writing said software patch into said patch operation area;
changing said at lease one item from a first data format to a second data format before using said software patch for execution.
-
-
49. The method of claim 37, wherein writing said software patch into said patch operation area is performed by at least one FLASH programming routine adapted to write data into FLASH memory.
-
50. The method of claim 49, wherein said step of writing said software patch further comprises putting into said FLASH programming routines into RAM memory before FLASH programming.
-
51. A method of modifying a digital product having FLASH memory and non-volatile memory (NVM), said digital product being operated by an embedded software, comprising the steps of:
-
a) generating a software patch, said software patch comprising one of at least a patch program for updating content in FLASH memory, and at least one data parameter for updating NVM content;
b) transmitting said software patch to said digital product using a wireless communication link;
c) receiving said software patch by said digital product;
d) writing said software patch into said digital product. - View Dependent Claims (52, 53)
writing said at least one data parameters to said NVM by overwriting existing data in said NVM;
writing said at least a piece of patch program to said FLASH memory.
-
-
53. The method of claim 52, further comprising at least one of the following steps:
-
writing identification information of said software patch to a patch control tables for said embedded software;
writing patch control information of said software patch to a patch control table for said embedded software.
-
-
54. A computer readable medium comprising instructions for updating an embedded software for a digital product, comprising instructions for:
-
executing said embedded software;
determining whether a patch program is available for a section of said embedded software;
directing execution of said embedded software at said section to said patch program if said patch program is available for said section;
directing execution back to a predetermined location of said embedded software after execution of said patch program.
-
Specification