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