Frage zu AVR & Stack

Gast #2159572
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
Gast #2159602
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.
Persönliche Seite #2212845
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

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