AVR GCC, umiestnenie premennej na zadanu adresu

Butrus Damaskus butrus.butrus@gmail.com
Sobota Srpen 16 14:41:56 CEST 2008


2008/8/16 Jan Waclawek <konfera@efton.sk>

>
> > Jedine co chcem dosiahnut je to, ze ked pouzivam premenne v EEPROM,
> > napriklad
> > char str_prog[] PROGMEM = "Retazec vo FLASH";
>


>
> Tak v EEPROM alebo vo FLASH? ;-)
>
> > tak aby v pripade zmeny retazca alebo pridani dalsich compiler
> > neprepisal to urcene miesto. Viem ze zapisat alebo citat mozem lubovolnu
> > adresu, ale to compileru nezabrani na tu adresu nieco umiestnit a to je
> > prave to co chcem osetrit.
>
> Linker postupuje zdola nahor, takze bud tu premennu (alebo miesto pre nu)
> deklarujete ako prve (a mate len jeden zdrojak alebo sa linkuje ako prvy);
> alebo si ho jednoducho "rucne" umiestnite na vrch FLASH alebo EEPROM.
>
> PS. GCC MA pamatove segmenty ale nema pamatove triedy, t.j. napr. k
> premennej a ktora je inde ako v RAM sa neda pristupit jednoducho ako napr. b
> = a, ale len cez "zaobalovacie" funkcie napr. b = eeprom_read_byte(&a).


Ještě doplním dokumentaci k segmentům:

• http://www.nongnu.org/avr-libc/user-manual/mem_sections.html

Jinak co se týče EEPROM, tak sice je možné ze zdrojáků přímo (elegantně)
generovat proměnné v EEPROM, ale zas tak často se to nedělá a hlavně se to
neděje automaticky, alébrž je to nutné ručně nastavit v Makefile při
generování objektů. Takže rozhodně se není třeba bát, že by zrovna v případě
EEPROM tam kompilátor něco hodil automaticky...



> wek
>
>
------------- daląí část ---------------
HTML příloha byla odstraněna...
URL: http://list.hw.cz/pipermail/hw-list/attachments/20080816/44be01bf/attachment-0002.htm 


Daląí informace o konferenci Hw-list