Я плохо знаком с компилятором GNU.
У меня есть файл исходного кода C, который содержит некоторые структуры и переменные, в которые я должен поместить определенные переменные в детали местоположения.
Так, я записал файл сценария компоновщика и использовал __ attribute__("SECTION")
в объявлении переменной, в исходном коде C.
Я использую компилятор GNU (cygwin) для компиляции исходного кода и создаю .hex использование файла -objcopy
опция, но я не добираюсь, как связать мой файл сценария компоновщика при компиляции для перемещения переменных соответственно.
Я присоединяю файл сценария компоновщика и исходный файл C для ссылки.
Помогите мне связать файл сценария компоновщика со своим исходным кодом при создании .hex файла с помощью GNU.
/*linker script file*/
/*defining memory regions*/
MEMORY
{
base_table_ram : org = 0x00700000, len = 0x00000100 /*base table area for BASE table*/
mem2 : org =0x00800200, len = 0x00000300 /* other structure variables*/
}
/*Sections directive definitions*/
SECTIONS
{
BASE_TABLE : { } > base_table_ram
GROUP :
{
.text : { } { *(SEG_HEADER) }
.data : { } { *(SEG_HEADER) }
.bss : { } { *(SEG_HEADER) }
} > mem2
}
C исходный код:
const UINT8 un8_Offset_1 __attribute__((section("BASE_TABLE"))) = 0x1A;
const UINT8 un8_Offset_2 __attribute__((section("BASE_TABLE"))) = 0x2A;
const UINT8 un8_Offset_3 __attribute__((section("BASE_TABLE"))) = 0x3A;
const UINT8 un8_Offset_4 __attribute__((section("BASE_TABLE"))) = 0x4A;
const UINT8 un8_Offset_5 __attribute__((section("BASE_TABLE"))) = 0x5A;
const UINT8 un8_Offset_6 __attribute__((section("SEG_HEADER"))) = 0x6A;
Мое намерение состоит в том, чтобы поместить, переменные раздела "BASE_TABLE" в адресе определили меня, файл сценария компоновщика и остающиеся переменные в "SEG_HEADER" определили в файле сценария компоновщика выше.
Но после того, как компиляция, когда я заглядываю в .hex файл различные переменные раздела, расположена в различных шестнадцатеричных записях, расположенных в адресе 0x00, не один данный в файле сценария компоновщика.
Помогите мне в соединении файла сценария компоновщика к исходному коду.
Есть ли любые параметры командной строки для соединения файла сценария компоновщика, если кому-либо нравится, предоставляют мне информацию, как использовать опции.
Заранее спасибо,
SureshDN.
Попробуйте gcc -Xlinker -T (имя сценария компоновщика) (исходные файлы c)
Сначала я компилирую все свои c-файлы в объектные файлы, а затем связываю их с помощью:
gcc -Xlinker -T "xxx.lds" (все объектные файлы)
Из документации gcc:
`-Xlinker OPTION'
Pass OPTION as an option to the linker. You can use this to
supply system-specific linker options which GNU CC does not know
how to recognize.
Спасибо за ответ,
Я нашел еще одну опцию компоновщика в GCC, "ld" и опцию -T, чтобы связать секции с исходным кодом.
ld -T (имя скрипта компоновщика) -o (конечный objfile) (объектный файл исходного файла)
Спасибо. Suresh