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