Propojení soubor skriptu Linker ke zdrojovému kódu

hlasů
5

Jsem nový GNU kompilátor.

Mám soubor C zdrojový kód, který obsahuje některé struktury a proměnné, ve kterém musím zařadit některé proměnné v určitém umístění.

Tak jsem napsal soubor linker skriptu a použije se __ attribute__(SECTION) v deklaraci proměnné, ve zdrojovém kódu C.

Já používám GNU kompilátoru (Cygwin) ke kompilaci zdrojového kódu a vytváření hex souboru pomocí -objcopyvolby, ale já jsem nedostal, jak propojit svůj linker skript při sestavování odpovídajícím způsobem přemístit proměnné.

Přikládám soubor skriptu linker a zdrojový soubor C pro reference.

Prosím, pomozte mi odkaz na soubor skriptu linker mém zdrojový kód, při vytváření souboru Hex pomocí 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 zdrojový kód:

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; 

Mým záměrem je umístit proměnné sekci „BASE_TABLE“ na adresu definovanou jsem scénář soubor linker a zbývající proměnné na „SEG_HEADER“ je definován v souboru skriptu vazebné výše.

Ale po sestavení když se podívám se do Hex soubor různé proměnné sekce jsou umístěny v různých hex záznamech, která se nachází na adrese 0x00, ne ten, uvedené v souboru linker skriptu.

Prosím, pomozte mi v propojení soubor linker skriptu ke zdrojovému kódu.

Existují nějaké možnosti příkazového řádku vytvořit odkaz na soubor skriptu linker, pokud vůbec nějaké plese mi poskytnout informace, jak používat možnosti.

Díky předem,

SureshDN.

Položena 29/03/2010 v 11:02
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
2

Díky za odpověď

Zjistil jsem, že ještě jednu možnost spojovacím GCC, „LD“ a teh volbou -t spojit oddíly do zdrojového kódu.

ld -T (linker scriptname) -o (final objfile) (objectfile of source file)

Díky Suresh

Odpovězeno 11/05/2010 v 09:26
zdroj uživatelem

hlasů
2

Poprvé jsem se shromažďují všechny své c soubory soubory objektů a propojit je s:

gcc -Xlinker -T"xxx.lds" (all object files)

Z GCC dokumenty:

`-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.
Odpovězeno 30/03/2010 v 10:32
zdroj uživatelem

hlasů
2

Snaž se gcc -Xlinker -T (linker script name) (c sources files)

Odpovězeno 30/03/2010 v 08:18
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more