Gast
#547289
Hallo allerseits, ich stehe bei WinAVR momentan vor folgendem Problem: Ich möchte aus meiner Applikation heraus meinen Bootloader aufrufen. Da die Applikation die Adresse des Bootloaders nicht kennt, habe ich am Ende des Flashs einen Sprungbefehl definiert, der zum Bootloader führt. Die Applikation muss also nur einen Sprung zur letzten Flashadresse machen und wird dann entsprechend weitergeleitet. Nur - wie macht man so einen Sprung zur letzten Adresse in WinAVR? Alle Sprungbefehle scheinen relativ sein. Gibt es einen Befehl wie "goto" für absolute Adressen? Auch mit inline Assembler komme ich nicht so recht weiter. Wenn ich "rjmp FLASHEND" schreibe, macht er nach dem Compilieren daraus etwas wie "rjmp PC+0x0123" - was aufaddiert jedoch nicht FLASHEND ergibt. Was kann ich tun? Ich habs erstmal behelfsmäßig über einen IJMP-Befehl gelöst, bei dem ich die FLASHEND-Adresse ins Z-Register schreibe. Da muss es aber doch noch einen "ordentlichen" Weg für geben, an eine absolute Adresse zu springen?! Weiß jemand Rat? Viele Grüße, Steffen