Hallo zusammen, folgendes ist mir aufgefallen: Wenn ich meine Sourcen, für einen ATmega16 mit dem AVR Studio 4.18, compiliere, bekomme ich als Data eine Belegung von 319 Byte, ~31% angezeigt. In einem File stehen aber folgende Zeilen Code: uint16_t ringbuffer_links[256]; uint16_t ringbuffer_rechts[256]; Meiner Rechnung nach sind das alleine aber schon 1024 Byte Data. Ergibt also zusammen mit oben 1343 Byte Daten. Das Programm hängt sich, erwartungsgemäß, auch auf. Meine Frage: Kann man das AVR-Studio wieder so einstellen das es richtig rechnet? Hat hier einer eine Idee dazu? Oder liege ich mit meiner Rechnung falsch? Ich fand es eigentlich ganz praktisch angezeigt zu bekommen wo die Speichernutzung hinläuft. Gruß Dietmar
Der Compiler kann nicht errechnen wieviel Speicher zur Laufzeit genutzt wird...
Versuche mal folgendes: Öffne dein Project->geh oben auf das "project" pulldown menü->Configuration options->Stelle unter "Optimization" O0 ein.
Dietmar schrieb: > In einem File stehen aber folgende Zeilen Code: > > uint16_t ringbuffer_links[256]; > uint16_t ringbuffer_rechts[256]; > > Meiner Rechnung nach sind das alleine aber schon 1024 Byte Data. Im "Data"-Bereich werden alle globalen Variablen und Static-Variablen abgelegt. Lokale Variablen werden erst zur Laufzeit und zwar auf dem Stack angelegt, deswegen werden die hier nicht mit berechnet.
Wichtel schrieb: > Der Compiler kann nicht errechnen wieviel Speicher zur Laufzeit genutzt > wird... > > Das wird's sein. Werde die beiden Variablen mal global anlegen, dann wird sich da wohl was tuen. Guter Tipp. Gefahr erkannt, Gefahr gebannt. Debuggen lohnt sich nicht, da ich ja ehh weiß da der genutze Ram zuviel ist. Der Stack hadert dam mit den Variablen ;-). Den Ringpuffer habe ich mittlerweile verkleinert und das Ding rennt jetzt. War aber auch nicht mein Problem. Gruß Dietmar
>Versuche mal folgendes: >Öffne dein Project->geh oben auf das "project" pulldown >menü->Configuration options->Stelle unter "Optimization" O0 ein. Und dann ? Werden die Array's trotzdem im Ram angelegt, dass macht also keinen Sinn. Gruß Jonas
In den Data-Bereich kommst du nur mi PROGMEM, nichts mit globalen Variablen...
jonas biensack schrieb: >>Versuche mal folgendes: >>Öffne dein Project->geh oben auf das "project" pulldown >>menü->Configuration options->Stelle unter "Optimization" O0 ein. > > Und dann ? Werden die Array's trotzdem im Ram angelegt, dass macht also > keinen Sinn. > > Gruß Jonas Ist dir in deiner unendlichen Weisheit mal aufgefallen dass er von "Data" gesprochen hat ? Odre hat irgendjemand was von "Program-Memory" gesagt? Und jetzt stellt sich die Frage ob dietmar die Daten innerhalb einer Funktion angelegt hat oder als Globals.
jonas biensack schrieb: > In den Data-Bereich kommst du nur mi PROGMEM, nichts mit globalen > Variablen... Und das ist ausgemachter Blödsinn. Aber naja hauptsache auch mal was gesagt
Tarkan D. schrieb: > Und jetzt stellt sich die Frage ob dietmar die Daten innerhalb einer > Funktion angelegt hat oder als Globals. Die Daten lagen innerhalb der main, waren also nicht global angelegt. Und jetzt nicht mehr streiten, meine Frage ist doch schon beantwortet ;-) Gruß Dietmar
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.