Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Linker Script Commands + FILE
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
zuuuuk
Доброго времени суток.
Подскажите, пожалуйста, пример ld скрипта, в котором можно подключить в .elf файл дополнительный файл с данными по определенному адресу.

Я нашёл описания команд по работе с файлами в скрипте линкера.
https://access.redhat.com/site/documentatio...e-commands.html
Но без примера не могу разобраться.
_Артём_
Цитата(zuuuuk @ Jan 21 2014, 13:19) *
Подскажите, пожалуйста, пример ld скрипта, в котором можно подключить в .elf файл дополнительный файл с данными по определенному адресу.

Вроде как, не было такой возможности? Где-то обсуждалось тут уже. В качестве решения предлагалось использовать srecord или что-то навроде того - вписать нужный bin-файл по нужному адресу после завершения работы линкера.
Сергей Борщ
Сам не пробовал, но двигался бы таким путем:
1) преобразовал бы .bin в объектный .o при помощи objcopy, разместив содержимое в какую-то секцию с уникальным именем (.my_bin)
2) слинковал бы полученный .o с исходным .elf, указав разместить эту новую секцию по нужным адресам опциями командной строки --section-start=.my_bin=адрес
_Pasha
Источник откуда взял мысль, не нашел. Результат тутто : sm.gif
CODE
#ifdef __ASSEMBLER__
.altmacro
.macro External_File p q
.globl \p&_begin
\p&_begin:
.incbin \q
\p&_end:
// Put a ".byte 0" here if you know your data is text
// and you wish to use \p&_begin as a C string. It
// doesn't hurt to leave it here even for binary data
// since it is not counted in \p_&len
.byte 0
.globl \p&_len
\p&_len:
.int (\p&_end - \p&_begin)
.endm

#else // Not __ASSEMBLER__

#ifdef __cplusplus
extern "C" {
#endif
#include <stddef.h>
#define External_File(_NAME) \
extern const char _NAME##_begin; \
extern size_t _NAME##_len

#ifdef __cplusplus
}
#endif

#endif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.