#define SRC_ADDR 0x40030000 // Higher IRAM, usually less guarded #define DEST_ADDR 0x40008000 #define COPY_SIZE 0x1000 // Just 4KB for now #define PMC_SCRATCH0 0x7000e450 #define PMC_CNTRL 0x7000e400 void _start() { unsigned int *src = (unsigned int *)SRC_ADDR; unsigned int *dest = (unsigned int *)DEST_ADDR; unsigned int test_val = src[0]; for (int i = 0; i < (COPY_SIZE / 4); i++) { dest[i] = src[i]; } *(volatile unsigned int *)PMC_SCRATCH0 = 0x11223344; *(volatile unsigned int *)PMC_CNTRL |= (1 << 4); while (1) ; }