Sono nuovo al compilatore GNU.Collegamento del file di script Linker al codice sorgente
Ho un file di codice sorgente C che contiene alcune strutture e variabili in cui ho bisogno di posizionare determinate variabili in una particolare posizione.
Quindi, ho scritto un file script linker e ho utilizzato il __ attribute__("SECTION")
alla dichiarazione delle variabili, nel codice sorgente C.
Sto usando un compilatore GNU (cygwin) per compilare il codice sorgente e creare un file .hex usando l'opzione -objcopy
, ma non riesco a capire come collegare il file script del linker alla compilazione per riposizionare le variabili di conseguenza.
Allego il file script del linker e il file sorgente C per il riferimento.
Per favore aiutami a collegare il file script del linker al mio codice sorgente, mentre creo il file .hex usando 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
}
codice sorgente 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;
La mia intenzione è quella di posizionare le variabili di sezione "BASE_TABLE" all'indirizzo ho definito il file di script del linker e le restanti variabili al "SEG_HEADER" definito in il file di script linker qui sopra.
Ma dopo la compilazione, quando guardo al file .hex, le diverse variabili di sezione si trovano in diversi record esadecimali, che si trovano a un indirizzo di 0x00, non quello fornito nel file di script del linker.
Please help me nel collegamento del file script linker al codice sorgente.
Ci sono delle opzioni da riga di comando per collegare il file script del linker, se ce ne sono alcune che forniscono le informazioni su come utilizzare le opzioni.
Grazie in anticipo,
SureshDN.