www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fehlerhaftes RET (msp430)


Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zur Ergänzung: das Programm liegt im RAM im bereich 0x2d00 (und 
folgende)

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der SP zeigt nicht auf die Ret-Adresse sondern auf Speicher in der diese 
steht. Aber das klingt so, als ob der SP in den Wald zeigt.

Autor: Lars (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)

Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.