CPC G06F 3/0604 (2013.01) [G06F 3/0632 (2013.01); G06F 3/0659 (2013.01); G06F 3/0679 (2013.01); G06F 8/654 (2018.02); G06F 8/656 (2018.02)] | 20 Claims |
1. A method comprising:
performing a live firmware update (LFU) of a single memory bank in an integrated circuit (IC) using the single memory bank without power reset of the IC between receipt by the IC of a command to perform the LFU and a re-enabling of interrupt response after the LFU;
wherein performing the LFU comprises:
receiving, using a memory bank, first instructions to be executed by a processor to perform an interrupt service routine;
writing the first instructions to an application portion of the memory bank to replace second instructions previously stored by the memory bank;
executing the first instructions to perform the following steps in order:
in a first step, while maintaining an interrupt response, initializing a variable specified by the first instructions and not specified by the second instructions, and not changing a variable specified by the first instructions;
in a second step, after determining that there is no interrupt response in process, disabling the interrupt response and proceeding to a third step:
in the third step, initializing a stack used to save and restore context, updating an interrupt vector, and updating a function pointer; and
in a fourth step, re-enabling the interrupt response.
|