Forum: Mikrocontroller und Digitale Elektronik RAM-Auslastung AVR


von Philipp P. (putzer_philipp)


Lesenswert?

Guten Morgen!!

Weiß jemand, wie ich die RAM-Auslastung meines Programms anzeigen kann?
Programmieren tue ich in C, Simulieren kann ich mein Programm ja 
anschließend mit dem AVR-Studio, nur leider komme ich nicht dahinter, wo 
und wie es mir die RAM-Auslastung anzeigt (soll).

Geht das überhaupt?

Vielen Dank und schöne Grüße
Philipp

von Sebastian (Gast)


Lesenswert?

Also bei Bascom kann man eine Option aktivieren, dass ein rreport file 
erstellt wird. das zeigt das dann an.

von Nullpainter (Gast)


Lesenswert?

Daie statischen Variablen sieht man im Map file, den Stack kann man 
abschaetzen. Worum geht's denn ? Ah, dynamische Variablen und Garbage 
collection ?

von Mark .. (mork)


Lesenswert?

Hallo Philpp,

vllt hilft Dir das hier weiter: 
http://www.roboternetz.de/wissen/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc

MfG Mark

von Philipp P. (putzer_philipp)


Lesenswert?

Aha, das heißt also bei dem Auszug unten, dass ich 40Byte in globalen, 
nicht zu null initialisierten Adressen habe, und 754Byte für die 
restlichen brauche?

Also brauche ich hier insgesamt 794Byte an Ram. Oder kommt hier noch 
etwas hinzu?

Size after:
sd_12.elf  :
section            size      addr
.text             14970         0
.data                40   8388704
.bss                754   8388744
.noinit               0   8389498
.eeprom               0   8454144
.stab               876         0
.stabstr            132         0
.debug_aranges      100         0
.debug_pubnames    1332         0
.debug_info       12332         0
.debug_abbrev      1885         0
.debug_line        7835         0
.debug_str         3903         0
.debug_ranges       144     14970
Total             44303


   text     data      bss      dec      hex  filename
      0    15010        0    15010     3aa2  sd_12.hex

von Rolf Magnus (Gast)


Lesenswert?

> Also brauche ich hier insgesamt 794Byte an Ram. Oder kommt hier noch
> etwas hinzu?

Der Stack und (falls du malloc & co benutzt) dynamisch allokierter 
Speicher.

von Philipp P. (putzer_philipp)


Lesenswert?

Malloc und Co verwende ich nicht. Kann der Stack auch irgendwie 
angezeigt werde. Eher nicht, hängt ja eigentlich von der Ausführung des 
Progs ab. Kann man den vielleicht grob irgendwie abschätzen?

von JojoS (Gast)


Lesenswert?

Die max. Stacknutzung hängt ja vom Programmablauf ab und den kennt der 
Compiler nicht. Man kann aber den Speicher komplett mit einem 'Magic' 
Wert, z.B. 0xaffe vollschreiben und dann in einer Testfunktion zählen 
bis wohin die Affen überschrieben wurden. Das findet natürlich auch 
nicht in jedem Fall die max. Auslastung aber wenn man verschiedene 
Betriebszustände simuliert liefert das schon einen guten Anhaltspunkt.

von Philipp P. (putzer_philipp)


Lesenswert?

Ok, das mit dem Testwert wäre ne Möglichkeit.

Fürs erste wirds schon reichen, wenn ich weiß wieviel RAM meine 
Variablen brauchen, für den Stack lasse ich einfach eine großzügige 
Reserve.


Vielen Dank für die Hilfe
Philipp

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
Noch kein Account? Hier anmelden.