Я новичок в компиляторе 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.