Bootloader anspringen: kein jmp bei ATmega8..

Gast #311457
Lesenswert?
• ▲
▼
Hallo!

Ich hatte in meinem Programm die Möglichkeit, durch ein bestimmtes
Zeichen an der RS-232 über
#asm("JMP 0xe00");
den Bootloader direkt ohne Reset anspringen zu können.
Nun hat AVR den JPM-Befehl aus dem Datenblatt entfernt.
Wer kann mir nen schlauen Weg sagen, das auch über RJMP oder anders
hinzukriegen?
Bin in Assembler nicht so firm...

Danke,
Martin
Gast #311458
Lesenswert?
• ▲
▼
irgendwie müsste der Compiler ja die aktuelle Adresse ja kennen - dann
müsste sich auch der rjmp automatisch ausrechnen lassen. Ich wüsste
jetzt aber nicht wie...
Ich würde den Holzhammer nehmen:

ldi z, 0xe00  (aufteilen in high- und low-teil  für zh und zl!)
ijmp

je nachdem, was dein Bootlader macht und ob er zum C-Programm
zurückkehren soll, musst du evtl. Z sichern und wiederherstellen.
Gast #311460
Lesenswert?
• ▲
▼
Klar, gibts auch als Zero-Flag, aber das meine ich nicht.
Die Register R30/R31 werden zusammen als Z-Register bezeichnet.
Also:

ldi r30, low (0xe00)
ldi r31, high (0xe00)   //Sprungziel steht nun in r30:r31
ijmp                    //indirect jmp (z)

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.