AVR GCC, umiestnenie premennej na zadanu adresu

Jan Waclawek konfera@efton.sk
Sobota Srpen 16 13:28:00 CEST 2008


> 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).

wek





Další informace o konferenci Hw-list