AVR-Studio rechnet falsch!?

Gast #2232023
Lesenswert?

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
#2232038
Lesenswert?

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.
Gast #2232039
Lesenswert?

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
Gast #2232040
Lesenswert?

>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
#2232049
Lesenswert?

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.
Gast #2232095
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren