Fehlerhaftes RET (msp430)

Gast #511280
Lesenswert?

moinsen,

ich sitz grad vor IAR und kuck blöd aus der wäsche:

Ich habe ein Unterprogramm, welches ich aus einem Sensor ins RAM des 
1611 kopiere und dann ausführe.

von dort aus rufe ich per "call &0x4010" ein Unterprogramm im Flash auf 
(habe über eine Tabelle an dieser adresse stehen, wo das UP liegt).
Das funktioniert auch wunderbar, und das UP löppt.

ABER:
nun kommt am ende des UPs RET, und die kiste springt eben nicht an die 
Adresse, auf die der SP zeigt, sondern unnachvollziehbar an 0x0000
seltsamerweise wird dabei aber der wert der auf dem stack steht um 6 
erhöht.

Hat irgendjemand den effekt schon mal beobachtet?
Gast #511292
Lesenswert?

hab mal kurzerhand 4 screenshots gemacht:
einer vor dem Aufruf des UPs aus dem Ram, einer direkt danach, einer vor 
dem RET (bei mir steht testweise mov @SP+, PC , aber das macht ja genau 
das gleich (und produziert auch den gleichen fehler...die ruitine wird 
übrigens vorher schon einige male fehlerfrei aufgerufen...fehler 
passiert nur bei nem programmaufruf aus dem RAM)
Angehängte Dateien:
Gast #511319
Lesenswert?

Hat sich erledigt.
das ganze war ein debugfehler:
IAR (und alle anderen debuger) kann logischerweise keine 
debuginformationen in code einfügern, der von woanders kommt.
Daher wird der code im ram zwar ausgeführt, die ausführung aber nich 
angezeigt.
In meinem Fall war nich der RET das Problem, sondern die Adresse des 
folgenden Calls. da hab ich mich vertippt, und er is wie gewünscht an 
die Adresse 0x0000 gesprungen.

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