Patent ID: 7406559

Claim:
An apparatus for in-circuit programming of an integrated circuit, comprising: a single non-volatile memory device comprising non-volatile memory cells on the integrated circuit that store instructions for execution by a microprocessor, the single non-volatile memory device containing in-circuit programming code for programming the single non-volatile memory device and user code for facilitating communication with an external device, wherein the in-circuit programming code can be reprogrammable and stored in a predetermined location of the single non-volatile memory device, and the user code can be stored in a location of the single non-volatile memory device that is different from the predetermined location; a microprocessor configured to input instruction addresses to the single non-volatile memory device and to receive instructions from the single non-volatile memory device; a delegable memory controller operatively coupled between the microprocessor and the single non-volatile memory device, the delegable memory controller being configured to receive an in-circuit program update command and to perform an in-circuit programming update function on the non-volatile memory cells of the single non-volatile memory device, whereby the microprocessor is relieved of performing the in-circuit programming update function; and a code generator operatively connected between the delegable memory controller and the microprocessor, the code generator being capable of providing instructions to be executed by the microprocessor; wherein the single non-volatile memory device, the microprocessor, the delegable memory controller, and the code generator are on a same single chip; wherein the microprocessor is configured to execute at least one control routine, which does not require the microprocessor to use the non-volatile memory device, provided by the code generator while the delegable memory controller performs the in-circuit programming update function.