AVR GCC, umiestnenie premennej na zadanu adresu
Jakub Ladman
ladmanj@volny.cz
Sobota Srpen 16 15:53:23 CEST 2008
> 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...
no nevim,
mám tu zhruba tohle
unsigned char alarm_eedata[ALARMS][7] EEMEM = {{1,7,7,30,10,10,99},
{1,7,7,35,15,10,99},
{1,7,7,45,20,10,99},
{1,7,8,0,25,10,99},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0}};
a pak např.
void alm_eesave(unsigned char nr){
eeprom_write_block (alarm_data[nr], alarm_eedata[nr],
sizeof(alarm_data[ALARMS]));
}
a kompilátor si naprosto sám volí adresy v EEPROM a já se o ně naprosto
nestarám, takže vaše tvrzení že se není třeba bát ... atd. asi není úplně
oprávněné.
jestli Vás zajímají parametry linkeru tak vězte že tam není nic než
defaultní -Wl,-Map,.map -mmcu=atmega64
Jakub Ladman
Další informace o konferenci Hw-list