Forum: Mikrocontroller und Digitale Elektronik Frage zu AVR & Stack


von Dietmar (Gast)


Lesenswert?

Hallo zusammen,

ich habe da mal eine Frage zum Stack bei den AVR-Controllern.

Diese programmiere ich mit dem AVR-Studio 4.18 und dem AVR GCC -Plugin.

Wie der RAM mit den Variablen, Heap und Stack organisiert ist weiß ich, 
darum geht es hier auch nur sekundär. Ich frage mich ob es eine 
Möglichkeit gibt die Größe des  Stack im voraus abzuschätzen und positiv 
zu beeinflussen. Wobei positiv hier kleiner heißt.

Klar ist mir schon mal das jeder Funktionsaufruf Stack benötigt. Je mehr 
ich die Aufrufe schachtele umso mehr wird’s werden.
Konstanten lege ich im Flash ab, spart ebenfalls RAM. So habe ich mehr 
Platz für den Stack, also auch positiv.

Wenn es irgendwie eine Faustformel gibt, z.B. ab 80% RAM Nutzung wird es 
gefährlich, oder einen Text den man sich anlesen kann, wäre mir schon 
geholfen.

Da ich von der PC-Seite komme fehlt mir im Moment so der richtige „Pack 
an“.

Gruß Dietmar

von Stapelfahrer (Gast)


Lesenswert?

Dietmar schrieb:
> Ich frage mich ob es eine
> Möglichkeit gibt die Größe des  Stack im voraus abzuschätzen und positiv
> zu beeinflussen. Wobei positiv hier kleiner heißt.

Die einfachste, aber auch mühsamste Variante ist die Analyse des 
Assembler Listings. Unbedingt die ISR anschauen - nested interrupts 
möglich?

Du könntest den Stack-Bedarf auch zur Laufzeit auswerten: Oberes Ende 
des SRAM (also den Stack-Bereich) mit einem "guten Muster" ausfüllen und 
sporadisch nachschauen, wie weit der Stack gewachsen ist, also wie weit 
das Muster schon überschrieben wurde.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Stapelfahrer schrieb:

> Du könntest den Stack-Bedarf auch zur Laufzeit auswerten: Oberes Ende
> des SRAM (also den Stack-Bereich) mit einem "guten Muster" ausfüllen und
> sporadisch nachschauen, wie weit der Stack gewachsen ist, also wie weit
> das Muster schon überschrieben wurde.

Exemplarisch ausgeführt in
http://www.rn-wissen.de/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc

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.