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
ergänzung: der SP liegt effektiv etwa in der mitte zwischen STKOV und STKUN er ist also noch weit von STKOV entfernt...
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
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?
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.