www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Stack overflow der keiner ist....


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
verwende einen C167 als compiler keil. Mein problem ist, dass ich 
scheinbar immer einen stack overflow hab...
mit traps.c (file von keil, welches u.a. bei einem stack overflow einen 
interrupt auslöst) hab ich überprüft ob wirklich ein stack overflow 
vorliegt.  Dies, indem ich, soblad ich in diesen interrupt kommmen, die 
werte des SP, STKOV und STKUN über die serielle schnittstelle an den PC 
sende. Dabei stelle ich jeweils fest, dass der Stackpointer wie er soll 
irgendwo zwischen STKOV und STKUN liegt... Wie kann das sein? meine ein 
stack overflow liegt vor, wenn der SP unterhalb von STKOV liegt. dies 
ist aber nicht der fall... wie kann es daher sein, dass mit der 
entsprechende interrupt dauernd ausgelöst wird?????

mfg
Daniel

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ergänzung: der SP liegt effektiv etwa in der mitte zwischen STKOV und 
STKUN er ist also noch weit von STKOV entfernt...

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schreib bei der Initialisierung des µC den kompletten Stackbereich mit 
einem Muster voll; zb 0xAA.

Einene Stackoverflow kannst du dann daran erkennen wenn das Muster in 
den letzten Stackadressen überschrieben ist.

Du könntest aber auch einen Stackunderflow haben.

Gruß
Ralph

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo ralph,
gute idee, hab ich mal gemacht, und es ist so rausgekommen wie ich 
aufgrund anderer versuche erwartat habe, grosse teile des stacks sind 
trotz stack-overflow trap noch mit dem wert 0xAAAA beschrieben...

>>Du könntest aber auch einen Stackunderflow haben.
naja dann würde ein anderer Trap ausgelöst, ich würde es also merken... 
oder überseh ich was?

woran könnte das ganze liegen? Wie weiter?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
niemand ne idee?

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.