реклама на сайте
подробности

 
 
> Linker Script Commands + FILE
zuuuuk
сообщение Jan 21 2014, 11:19
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 188
Регистрация: 26-04-07
Пользователь №: 27 334



Доброго времени суток.
Подскажите, пожалуйста, пример ld скрипта, в котором можно подключить в .elf файл дополнительный файл с данными по определенному адресу.

Я нашёл описания команд по работе с файлами в скрипте линкера.
https://access.redhat.com/site/documentatio...e-commands.html
Но без примера не могу разобраться.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
_Артём_
сообщение Jan 21 2014, 11:25
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(zuuuuk @ Jan 21 2014, 13:19) *
Подскажите, пожалуйста, пример ld скрипта, в котором можно подключить в .elf файл дополнительный файл с данными по определенному адресу.

Вроде как, не было такой возможности? Где-то обсуждалось тут уже. В качестве решения предлагалось использовать srecord или что-то навроде того - вписать нужный bin-файл по нужному адресу после завершения работы линкера.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 21 2014, 12:04
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Сам не пробовал, но двигался бы таким путем:
1) преобразовал бы .bin в объектный .o при помощи objcopy, разместив содержимое в какую-то секцию с уникальным именем (.my_bin)
2) слинковал бы полученный .o с исходным .elf, указав разместить эту новую секцию по нужным адресам опциями командной строки --section-start=.my_bin=адрес


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 21 2014, 12:34
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Источник откуда взял мысль, не нашел. Результат тутто : 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


Сообщение отредактировал _Pasha - Jan 21 2014, 12:35
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 08:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016