#define SRC_ADDR \ 0x00000000 // Let's try to grab the very beginning of the EMMC/ROM #define DEST_ADDR 0x40008000 // Safe staging area in IRAM #define COPY_SIZE 0x2000 // 8KB chunk #define PMC_SCRATCH0 0x7000e450 void _start() { unsigned int *src = (unsigned int *)SRC_ADDR; unsigned int *dest = (unsigned int *)DEST_ADDR; for (int i = 0; i < (COPY_SIZE / 4); i++) { dest[i] = src[i]; } *(volatile unsigned int *)PMC_SCRATCH0 = 0x55AA55AA; while (1) ; }