http://www.nongnu.org/avr-libc/user-manual...#faq_binarydata--
Я делаю так (ПЛИС не помню, МК - ATMega128):
Файл *.cmd с командами на конвертирование исходного бинарного файла (у меня - fpga_zeroconfig.rbf, 77655 байт) в объектный (fpga_zeroconfig.o):
Код
@echo Creating relocatable object file with data for FPGA:
@avr-objcopy -v --rename-section .data=.progmem.data,contents,alloc,load,readonly,data -I binary -O elf32-avr fpga_zeroconfig.rbf fpga_zeroconfig.o
@avr-objdump -t fpga_zeroconfig.o
@avr-size fpga_zeroconfig.o
@pause
Далее я его тупо указываю линкеру в Makefile проекта:
Код
OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o) fpga_zeroconfig.o
И использую где надо:
Код
extern PGM_P _binary_fpga_zeroconfig_rbf_start;
extern PGM_P _binary_fpga_zeroconfig_rbf_end;
//...
uint32_t sz = GET_FAR_ADDRESS(_binary_fpga_zeroconfig_rbf_end) - GET_FAR_ADDRESS(_binary_fpga_zeroconfig_rbf_start);
//...
for(uint32_t i = 0; i < sz; i++)
{
// = pgm_read_byte_far(GET_FAR_ADDRESS(_binary_fpga_zeroconfig_rbf_start) + i);
}
Макрос GET_FAR_ADDRESS взят на
avrfreaks.