Forum: Mikrocontroller und Digitale Elektronik RAM -Verbrauch


von Tony (Gast)


Lesenswert?

Hallo,
ich habe einen Mikrocontroller mit 4KByte RAM und 128KByte Flash,beim 
compilieren des Programms, bekomme ich folgende Informationen:
section     size      addr
.data       1568   8388864
.text      14850         0
.bss        2190   8390432
.stab      30900         0
.stabstr   12661         0
Total      62169

ich habe im Robonetz (unten dem Link 
http://www.rn-wissen.de/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc#Dynamischer_RAM-Verbrauch) 
gefunden, wie man der Speicherverbrauch mit avr-gcc bestimmen kann.Wie 
man die code integrieren kann, weiß ich nicht. Im Tutorial wird nur 
gesagt, dass die Funktion init_mem vor main funktion aufgerufen werden 
soll.
1)Welche Funktion soll ich im main aufrufen?
2)in welcher Variable finde ich die Große des freien SRAM

danke

von Karl H. (kbuchegg)


Lesenswert?

Tony schrieb:

> ich habe im Robonetz (unten dem Link
> 
http://www.rn-wissen.de/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc#Dynamischer_RAM-Verbrauch)
> gefunden, wie man der Speicherverbrauch mit avr-gcc bestimmen kann.Wie
> man die code integrieren kann, weiß ich nicht.

http://www.mikrocontroller.net/articles/FAQ#Ich_hab_da_mehrere_.2A.c_und_.2A.h_Dateien._Was_mache_ich_damit.3F

> Im Tutorial wird nur
> gesagt, dass die Funktion init_mem vor main funktion aufgerufen werden
> soll.
> 1)Welche Funktion soll ich im main aufrufen?

Die andere.
Sind ja nur 2 Funktionen da. Die eine wird beim Startup automatisch 
aufgerufen und die andere liefert die gewünschte Information.

> 2)in welcher Variable finde ich die Große des freien SRAM
In gar keiner.
Du rufst die Funktion auf und die gibt dir die gesuchte Größe.

Wozu brauchst du das überhaupt?
Deine Kennzahlen sind noch so weit von den Limits entfernt, dass da noch 
überhaupt keine Gefahr sein sollte.

von Tony (Gast)


Lesenswert?

Hallo,
ich brauche es, weil ich immer Problem beim Ausführen des Programms 
habe, die ich nicht verstehe,

von Karl H. (kbuchegg)


Lesenswert?

Tony schrieb:
> Hallo,
> ich brauche es, weil ich immer Problem beim Ausführen des Programms
> habe, die ich nicht verstehe,

Dann hilft dir der Speicherverbrauch aber auch nichts oder benutzt du 
malloc() und co.
Du hast einen Fehler im Code und den muss man finden.
Du hast bis jetzt ca. 1/3 deines SRAM mit Variablen verbraucht. Es ist 
ziemlich unwahrscheinlich, dass du einen Speicher Clash mit dem Heap 
hast (wenn auch nicht unmöglich).
Fang erst mit den naheliegenden Fehlerursachen an:
Arrayzugriffe ausserhalb des Arrays. Pointer die in den Wald zeigen. 
etc.

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.