Этот мерзавец ссылка решил мою проблему.Ниже приведен фрагмент кода для определения MACRO INCBIN (), который использует псевдоинструкцию ассемблера incbin для встраивания двоичного файла в исполняемый файл.
#define STR2(x) #x
#define STR(x) STR2(x)
#define INCBIN(name, file) \
__asm__(".section .rodata\n" \
".global incbin_" STR(name) "_start\n" \
".type incbin_" STR(name) "_start, @object\n" \
".balign 16\n" \
"incbin_" STR(name) "_start:\n" \
".incbin \"" file "\"\n" \
\
".global incbin_" STR(name) "_end\n" \
".type incbin_" STR(name) "_end, @object\n" \
".balign 1\n" \
"incbin_" STR(name) "_end:\n" \
".byte 0\n" \
); \
extern const __attribute__((aligned(16))) void* incbin_ ## name ## _start; \
extern const void* incbin_ ## name ## _end; \
Макрос INCBIN должен вызываться глобально.Далее мы включаем «binary.bin», который будет доступен через «foobar» из приложения.
INCBIN(foobar, "binary.bin");
После компиляции с фрагментом кода выше, «binary.bin» должен быть скомпилирован с результирующим исполняемым файлом.Теперь, чтобы получить доступ к вышеупомянутому двоичному файлу, необходимо использовать «foobar».«incbin_foobar_start» будет иметь начальный адрес, а «incbin_foobar_end» будет иметь двоичный конечный адрес.Затем последним шагом является выполнение операции memcpy (), чтобы поместить двоичный файл в место (адрес памяти), в котором был создан FSP.