Интеграция другого двоичного файла

8

Я строю двоичный файл для ARM, используя GCC и Crossworks. У меня есть вторичное двоичное изображение, которое должно быть загружено в другую микросхему во время запуска.

Мне нравится интегрировать этот двоичный файл в мою цепочку инструментов, другими словами, я делаю этот двоичный файл частью своего образа, и каждый раз, когда я собираю этот двоичный файл, он интегрируется в окончательный двоичный файл, который будет загружен в ЦП. Какова лучшая практика для этого?

Спасибо

Ktc
источник

Ответы:

3

Вы можете использовать objcopyдля преобразования двоичного изображения в объектный файл. Объектный файл будет содержать символы, к которым можно получить доступ из кода Си. Затем попросите GCC связать объектный файл, и вы сможете получить доступ к символам в объектном файле, используя их externдля загрузки данных в другую ИС.

Вот хорошее руководство о том, как связать в двоичном двоичном объекте, в том числе о том, как отфильтровать параметры, которые необходимо передать для objcopyиспользования objdump.

И, конечно, objcopyсправочная страница и objdumpсправочная страница .

embedded.kyle
источник
супер ответ .. мне потребовалось всего 5 минут, чтобы сделать эту работу ..
Ktc
Дополнительный вопрос Файл obj работает хорошо, однако набор инструментов помещает его в оперативную память, что становится проблемой из-за размера файла. Как я могу заставить этот объект быть помещенным во Flash?
Ktc
решил это .. в основном, objcopy -I бинарный -O elf32-littlearm -B arm --rename-section .data = .rodata, alloc, load, readonly, data, content fpga.bin fpga.o это все и делает. Родата и линкер размещаются правильно на флеш.
Ktc
objcopyимеет огромное количество вариантов. Вероятно, он может делать все что угодно. Просто нужно много пялиться на эту справочную страницу. Спасибо, что поделились своим решением, так как я уверен, что это будет общий вопрос для людей, которые хотят делать то, что вы делаете.
embedded.kyle