www.mikrocontroller.net

Forum: Compiler & IDEs Stack-Size unter GCC festlegen?


Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Laut Datenblatt hat mein ATmega16 1k SRAM und der beinhaltet den Stack.
Korrekt?? Nun stürtzt mein Programm aber bei einem bss Wert von 600
etwa ab und ich vermute, das der Stack zu voll ist. Kann ich unter GCC
in Verbindung mit dem ProgrammersNotepad2 die Größe des Stack den ich
nutzen möchte festlegen? Wenn ja, wie?

Gruß Marco

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Stackgröße kann man nicht festlegen. Die CPU nimmt sich immer soviel
sie braucht. D.h. es hängt nur allein von der Schachtelungstiefe ab,
also wieviele Unterprogramme ineinander aufgerufen werden.

Unbedingt vermeiden muß man rekursive Funktionen. Die benötigen immer
wesentlich mehr CPU-Zeit und Flash als ein Schleifenprogramm. Und den
Stack fressen sie nicht nur, sie verschlingen ihn regelrecht wie ein
schwarzes Loch.

600 Bytes Daten klingen schon mächtig viel.
Hast Du auch gut überlegt, daß Du wirklich soviel brauchst und auch
nicht alles als globale Variablen deklariert ?


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.