Forum: Mikrocontroller und Digitale Elektronik IAR: Stack bei 100%


von Eric (Gast)


Lesenswert?

Hallo!

IAR hat zwar gar nichts mit GCC zu tun, aber och wusste nicht wo ich 
diesen beitrag hätte sonst hinpacken sollen.
Zum eigentlich Problem: Ich tippe gerade an einer Firmware für einen 
MSP.
Beim debuggen meldet mir IAR folegendes
1
Mon Jun 14 07:49:01 2010: The stack 'Stack' is filled to 100% (80 bytes used out of 80). The warning threshold is set to 90.%

ich bin zwar ein absoluter Anfänger, aber ich weiß, dass es kein gutes 
Zeichen ist, wenn der Stack überfüllt ist.
Aber woran liegt das? Wie kann man das verhindern?

Danke für eure Hilfe.

Gruß
Eric

: Verschoben durch User
von Dennis (Gast)


Lesenswert?

80 Bytes ist immer anfangs eingestellt - mach ihn doch einfach größer.

von Christian R. (supachris)


Lesenswert?

In den Projektoptionen kannst den Stack größer einstellen. Der MSP430 
hat im Prinzip einen unbegrenz großen Stack, der liegt im normalen 
RAM-Bereich. Wenn dein RAM nicht zu voll ist, kann der Stack auch viel 
mehr als 80 Byte groß werden.

von Eric (Gast)


Lesenswert?

Hallo!

Danke für die Antworten.
Hab die Option gefunden, um den Stack zu vergrößern.
Jetzt die Frage: Wo sehe ich die Speicherausnutzung? RAM, Flash?

Gruß
Eric

von Dennis (Gast)


Lesenswert?

Die kannst du dir beim Kompilieren im Build-Fenster anzeigen lassen. 
Musst du aber vorher einschalten, dass du alles sehen willst. Findest du 
auch bei den Optionen. Den Stack kannste dir auch unter "View" anzeigen 
lassen.

von Eric (Gast)


Lesenswert?

Dennis schrieb:
> Die kannst du dir beim Kompilieren im Build-Fenster anzeigen lassen.
> Musst du aber vorher einschalten, dass du alles sehen willst. Findest du
> auch bei den Optionen. Den Stack kannste dir auch unter "View" anzeigen
> lassen.

Also ich bin jetzt eigentlich jeden Reiter durchgegangen. Sowohl unter 
Project-Option, wie auch den Allgemeinen. Hab nichts von "Show memory 
information" o.ä. gefunden....

von Dennis (Gast)


Lesenswert?

TOOLS -> OPTIONS -> MESSAGES -> SHOW BUILD MESSAGES -> ALL

von Tony (Gast)


Lesenswert?

Oder

Projectoptions -> Linker -> List -> dort mal alles Anklicken

ergibt ein .map file im Outputdirectory mit allen Infos drin.

von Eric (Gast)


Lesenswert?

Dennis schrieb:
> TOOLS -> OPTIONS -> MESSAGES -> SHOW BUILD MESSAGES -> ALL

Ok, jetzt habe ich nach einem Rebuild eine Ausgabe von Bytes.
Ich geh mak davon aus, das CODE-Memory die (Flash-)Speichernutzung der 
Firmware und DATA-Memory der RAM ist.

Aber was ist diese (+XX absolute), dass hinter der Angabe vom 
DATA-Memory steht?

Tony schrieb:
> Projectoptions -> Linker -> List -> dort mal alles Anklicken
>
> ergibt ein .map file im Outputdirectory mit allen Infos drin.

Die Tabelle ist ja Wahnsinn. Da bin ich eigentlich schon erschlagen von 
der Informationsflut.

In der "Module Summary" wird ja die Speichernutzung aufgeführt. Was wird 
hier unter "Shared" und "Common" bzw. "Rel" und "Abs" verstanden?

Und was ist der Unterschied zwischen "Stack prev" und "Stack locally" 
beim Callstack.

Apropos Stack:
Unter "Watch" kann ich mir nicht den Stack anzeigen lassen, sofern ich 
als Variablennamen "Stack" eingebe. Du meintest doch mit "View" die 
Variablenwatchliste, oder?

von Dennis (Gast)


Lesenswert?

Eric schrieb:
> Aber was ist diese (+XX absolute), dass hinter der Angabe vom
> DATA-Memory steht?

Da wäre ich froh, wenn dazu hier auch nochmal jemand eine Info gibt, das 
weiß ich nämlich auch nicht.

Eric schrieb:
> Unter "Watch" kann ich mir nicht den Stack anzeigen lassen, sofern ich
> als Variablennamen "Stack" eingebe. Du meintest doch mit "View" die
> Variablenwatchliste, oder?

Nein, das meine ich nicht, sondern kannst du (nur wenn du debuggst) 
unter VIEW -> STACK den Füllstand des Stacks sehen. Der ändert sich 
halt, je nachdem, wo du grad im Programm bist. Aber wie gesagt, 
natürlich nur während du debuggst, sonst ist unter VIEW nicht viel zu 
sehen :)

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.