To program the non-volatile flash, the DAP controller must be enabled. After the DAP controller is enabled, flash programming routines can be downloaded into the OCM and a DAP initiated wake-up request for the RPU can be sent to the PMU to execute flash programming routines in the OCM. Using the OCM as a data FIFO, continue pushing flash programs into the OCM buffer through JTAG and the RPU, running flash programming routines to program flash using data from the OCM buffer. When the network is enabled, flash programming can be downloaded from the network as part of a flash programming routine.