PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe! Mein Speicherplatz!



tobimc
13.04.2007, 18:46
Hi!

Ich habe ein AVR-GCC-Programm geschrieben, das war so ungefähr 35% des Speicherplatzes vom M8 groß (mit -O3).

Nun hab ich die ein oder andere Variable volatilisiert (volatile uint8_t, global).
Und der benötigte Speicherplatz ist um glatt 50% gewachsen, nämlich auf gut 83%.

Das kanns doch irgendwie nicht sein, oder?

(Mei, das wird so ne n00b-Frage sein.)

Thx schonmal,
Tobi

PS: AVRGCC auf neuerster Version, AVRStudio upgedated auf 4.13 b...

wolfbert
13.04.2007, 19:08
Hmm, das ist natürlich eine Menge...

Volatile bedeutet, dass die Variable bei jedem Zugriff neu aus dem RAM geladen wird (und bei Veränderung gleich wieder zurückgeschrieben) wird, also nicht in einem Register gehalten werden kann (sie könnte ja zwischenzeitlich durch eine Interruptroutine verändert worden sein). LDS (Load) und STS (Store) konsumieren jeweils 4 Byte zusätzlich.

Du könntest auch mal -Os probieren, das ist gelegentlich etwas sparsamer.

Informativ ist auch ein Blick in die .lss Datei vorher/nachher, da siehst Du den generierten Assembler-Code und damit genau, wo der Mehrverbrauch stattfindet.

LG
Wolfgang

tobimc
13.04.2007, 19:27
Hi

hm. lustig. Mit -Os ist der spaß nur noch 29% groß.
Thanx a lot!

VLG Tobi .o0O(Warum sind das immer die Dinge, auf die man nicht kommt, die einem weiterhelfen?)