AVR GCC definovanie vlastnej section

Milan B. milan@bastl.sk
Pátek Červenec 3 23:08:42 CEST 2009


Ja AVR nerad, takze mozno som nieco prehliadol. Ak ide o to, aby obsah 
sekcii .fram bol mapovany od adresy 0x90000 skuste sa odpichnut od tohoto:

1. Zoberte existujuci linker skript
2. do casti MEMORY pridajte popis svojej oblasti pamate, napriklad:
fram(rwx)    : ORIGIN = 0x90000,     LENGTH = 1K
3. Do casti SECTIONS pridajte sekciu fram a povedzete jej, ze sa ma 
ukladat do oblasti pamate definovanej vyssie
.fram : { *(.fram) } > fram

alebo:

vytvorte novy skript:, obsahujuci:
SECTIONS
{
    . = 0x90000
    .fram: {*(.fram)}
} INSERT AFTER .eeprom

v tomto pripade by sa sekcia .fram mala pridat k existujucemu skriptu.  
Ale toto som nikdy neskusal ...

Blizsie info: http://sourceware.org/binutils/docs/ld/index.html

-m-


martin wrote:
> Zdravím,
>
> Riešim nasledovný problém:
>
> K AVR Mega162 mam pripojenú FRAM na I2C zbernici. Napísal som funkcie 
> na čítanie a zápis (fram_read_byte, fram_write_byte, ...) podobne tým 
> z avr-libc eeprom_read_byte, eeprom_write_byte ... a definoval som makro 
>
> #define FRAM __attribute__(section(".fram")) 
>
> ktoré definovanej premennej povie že má byť mapovaná do sekcie .fram. 
> (napr: uint8_t FRAM fram_premenna;)
> V linkeri premapujem sekciu .fram na adresu 0x90000 
> (-Wl,--section-start=0x900000), čím zabezpečím že premenné ktoré majú 
> byť vo framke sú od adresy 0x0000. 
> Adresu na čítanie a zápis z/do fram beriem z pointra definovanej 
> premennej. Prvá premenná je na adrese 0x0000, a ďalšie sú naskladanie 
> pekne za sebou.
> Všetko funguje ako som si "vysníval" keď premenné do framky definujem 
> v jednom zdrojovom súbore. Problém nastáva keď sú premenné definované 
> vo viacerých zdrojových súboroch. 
> Vtedy sa vytvorí sekcia .fram z prvého zdrojového súboru a z ďalších 
> sa vytvoria sekcie .fram.1 .fram.2 ... To spôsobí že presunutie sekcie 
> linkerom funguje len pre prevý zdrojový súbor.
>
> Keď definujem premenné pre sekciu .eeprom (EEMEM) alebo pre flasku 
> .text (PROGMEM) tak sú pospájané do jednej sekcie .eeprom alebo .text. 
>
> Mam pocit, že cesta vedie cez definovanie vlastného LINKER SCRIPTU, 
> ale netuším ako na to. 
>
> Ak niekto viete o čom hovorím, skúste ma prosím nakopnuť správnym smerom.
>
> Ďakujem
>
> s pozdravom 
>
> Martin
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>   




Další informace o konferenci Hw-list