memimage.S: =============================================================== .section .rodata .macro INCLUDE label filename .global \label .type \label , %object .balign 4 \label : .incbin "\filename" .size \label , . - \label .set \label\()_tmp, . - \label .balign 4 .type \label\()_size, %object .global \label\()_size \label\()_size: .word \label\()_tmp .endm INCLUDE TubeOS TubeOS.bin INCLUDE High4 High4.bin INCLUDE ClockSp ClockSp.bin .previous =============================================================== memimage.h: =============================================================== #ifndef MEMIMAGE_H #define MEMIMAGE_H #include extern const uint8_t TubeOS[]; extern const uint32_t TubeOS_size; extern const uint8_t High4[]; extern const uint32_t High4_size; extern const uint8_t ClockSp[]; extern const uint32_t ClockSp_size; #endif =============================================================== main.c: =============================================================== ... memcpy(mpu_memory + 0xf800, TubeOS, TubeOS_size); ... ===============================================================