robocat
22.02.2012, 16:35
Hallo liebe Bastler,
mir ist irgendwie nicht ganz klar, wieviel Flash- und SRAM-Speicher mein Programm belegt. Ich programmiere mit PN2, kompiliere mit WinAVR und schreibe die HEX Datei mit PonyProg (kein Bootloader).
Beispiel:
Die HEX Datei ist 16.275 Bytes gross (rechtsklick Eigenschaften in Windows). Beim kompilieren schreibt mir WinAVR:
Size after:
bla.elf :
section size addr
.text 5668 0
.data 110 8388704
.bss 145 8388814
.debug_aranges 128 0
.debug_pubnames 596 0
.debug_info 4467 0
.debug_abbrev 1434 0
.debug_line 2802 0
.debug_frame 352 0
.debug_str 1174 0
.debug_loc 1065 0
Total 17941
Nun bin ich zum einen erstaunt, denn das Programm ist noch gar nicht so riesengross; Wenn PonyProg schreibt, scheint es auch nur 15-20% des Gesamtspeichers zu belegen.
Zum anderen ist vor Allem die SRAM Belegung interessant, denn es wird eine Art Datenlogger, und je mehr Daten ich loggen kann, desto schön. Das Problem ist, weder PonyProg noch WinAVR scheint mir mitzuteilen, wenn ich zuviel FLASH oder SRAM belege. Mir ist es schon passiert, dass ich mit "zuviel" einen Atmega unbrauchbar gemacht habe, zumindest schien das so zu sein. Auch hatte ich schon merkwürdiges Programmverhalten, wenn zuviel FLASH belegt war. Pony meldet zwar "Write sucessful" aber das Programm funktioniert nicht mehr richtig; wenn man dann ein paar Bytes kürzer codet, geht es wieder problemlos.
Lange Story kurzer Sinn:
Könnte mir jemand der da durchsteigt mal erklären, wie ich die Speicherbelegung bzw freies FLASH- und SRAM irgendwie ermitteln kann, idealerweise aufs Byte genau, und ohne alle meine Variablen in Handarbeit zusammenzurechnen?
Herzlichen Dank schon im vorraus,
Eure Katze
mir ist irgendwie nicht ganz klar, wieviel Flash- und SRAM-Speicher mein Programm belegt. Ich programmiere mit PN2, kompiliere mit WinAVR und schreibe die HEX Datei mit PonyProg (kein Bootloader).
Beispiel:
Die HEX Datei ist 16.275 Bytes gross (rechtsklick Eigenschaften in Windows). Beim kompilieren schreibt mir WinAVR:
Size after:
bla.elf :
section size addr
.text 5668 0
.data 110 8388704
.bss 145 8388814
.debug_aranges 128 0
.debug_pubnames 596 0
.debug_info 4467 0
.debug_abbrev 1434 0
.debug_line 2802 0
.debug_frame 352 0
.debug_str 1174 0
.debug_loc 1065 0
Total 17941
Nun bin ich zum einen erstaunt, denn das Programm ist noch gar nicht so riesengross; Wenn PonyProg schreibt, scheint es auch nur 15-20% des Gesamtspeichers zu belegen.
Zum anderen ist vor Allem die SRAM Belegung interessant, denn es wird eine Art Datenlogger, und je mehr Daten ich loggen kann, desto schön. Das Problem ist, weder PonyProg noch WinAVR scheint mir mitzuteilen, wenn ich zuviel FLASH oder SRAM belege. Mir ist es schon passiert, dass ich mit "zuviel" einen Atmega unbrauchbar gemacht habe, zumindest schien das so zu sein. Auch hatte ich schon merkwürdiges Programmverhalten, wenn zuviel FLASH belegt war. Pony meldet zwar "Write sucessful" aber das Programm funktioniert nicht mehr richtig; wenn man dann ein paar Bytes kürzer codet, geht es wieder problemlos.
Lange Story kurzer Sinn:
Könnte mir jemand der da durchsteigt mal erklären, wie ich die Speicherbelegung bzw freies FLASH- und SRAM irgendwie ermitteln kann, idealerweise aufs Byte genau, und ohne alle meine Variablen in Handarbeit zusammenzurechnen?
Herzlichen Dank schon im vorraus,
Eure Katze