Firmware ROM Patch Method
First Claim
1. A method for patching firmware residing within a non-rewritable memory (NRM) comprised in a system, wherein the firmware is mapped to a first area of program memory, the method comprising:
- specifying a first set of instructions corresponding to a respective first portion of the firmware;
assigning a first flag to the first set of instructions, wherein the first flag is configured to indicate whether to execute the first set of instructions or the respective first portion of the firmware;
writing the first set of instructions into a second memory comprised in the system, wherein the first set of instructions are mapped to a second area of program memory distinct from the first area of program memory; and
checking the first flag to determine whether to execute the first set of instructions or the respective first portion of the firmware.
10 Assignments
0 Petitions
Accused Products
Abstract
A system in which firmware residing in ROM may be upgraded without re-spinning silicon. A one-bit flag may be assigned for each patchable function representing a firmware upgrade. The first statement of each function may check its associated flag and determine if patch-code should be executed in place of the current function residing in ROM. If the flag is not set, the code may continue executing normally. If the flag is set, a function identifier may be placed into a global memory location, and an assembly language “jump” instruction may be executed, redirecting program control to a specified location in a volatile Scratch Read Only Memory (SROM) where the corresponding patched code may be stored. If more than one function is patched, the global identifier may be used to determine which patched function to execute. Using an assembly language “jump” instruction to redirect control results in the patched function'"'"'s returning normally to its calling function once it has completed executing.
90 Citations
16 Claims
-
1. A method for patching firmware residing within a non-rewritable memory (NRM) comprised in a system, wherein the firmware is mapped to a first area of program memory, the method comprising:
-
specifying a first set of instructions corresponding to a respective first portion of the firmware; assigning a first flag to the first set of instructions, wherein the first flag is configured to indicate whether to execute the first set of instructions or the respective first portion of the firmware; writing the first set of instructions into a second memory comprised in the system, wherein the first set of instructions are mapped to a second area of program memory distinct from the first area of program memory; and checking the first flag to determine whether to execute the first set of instructions or the respective first portion of the firmware. - View Dependent Claims (2, 3, 4, 5, 7, 8, 9, 10)
-
-
11. A method for updating one or more functions comprised in program code residing within a read-only memory (ROM) comprised in a system, wherein the program code is mapped to a first area of program memory, and wherein each of the one or more functions comprises a first portion and a second portion, the method comprising:
-
specifying a respective patched function for each one of the one or more functions; assigning each respective patched function to a respective flag, wherein each respective flag is configured to indicate whether to execute its assigned respective patched function or the second portion of the one or more functions for which its assigned respective patched function has been specified; and writing each respective patched function into a rewritable memory comprised in the system, wherein each respective patched function is mapped to a respective area of program memory distinct from respective areas of program memory to which other respective patched functions are mapped. - View Dependent Claims (12, 13, 14)
-
-
15. A system comprising:
-
a non-rewritable memory (NRM) configured to hold main program instructions mapped to a first area of program memory; a rewritable memory configured to store; secondary program instructions corresponding to a first portion of the main program instructions, wherein the secondary program instructions are mapped to a second area of program memory distinct from the first program area of program memory; and a first flag indicating whether to execute the secondary program instructions or the first portion of the main program instructions; and a processing unit operable to; execute the main program instructions if the first flag indicates that the main program instructions should be executed; and execute the secondary program instructions if the first flag indicates that the secondary program instructions should be executed. - View Dependent Claims (16)
-
Specification