1. An apparatus for in-circuit programming of an integrated circuit having a processor which executes a program of instructions, comprising: a first memory array comprising non-volatile memory cells on the integrated circuit which stores instructions for execution by the processor, including an in-circuit programming set of instructions for programming the first memory array; a second memory array on the integrated circuit; an external port on the integrated circuit by which data is received from an external source; and control logic, responsive to an in-circuit program update command, to write a copy of the in-circuit programming set from the first memory array to the second memory array, and to cause the processor to execute the in-circuit programming set from the second memory array to program non-volatile memory cells of the first memory array with data from the external port; wherein the second memory array comprises non-volatile memory cells.