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