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