Gast
#267321
Hallo,
ich habe auf meinen ATmega128 einen Bootloader installiert. Ich springe
vom Bootloader ins Hauptprogramm (Adresse 0x0000). Jetzt möchte ich
allerdings auch wieder zum Bootloader zurückspringen, um ein manuelles
FW-Update auszuführen. Ich habe folgendes im Makefile des
Hauptprogrammes probiert:
MCU = atmega128
MAIN_START = 0x00000
BOOT_START = 0x1FC00
MAIN_JMP = 0x0000
BOOT_JMP = 0xFE00
LDFLAGS =
-Wl,-Map=$(TARGET).map,--cref,--section-start=.text=$(MAIN_START),--defs
ym=boot_start=$(BOOT_JMP),--defsym=main_start=$(MAIN_JMP)
-mmcu=$(MCU)
Im Hauptprogramm führe ich das aus:
asm volatile("jmp boot_start");
Allerdings führt das nicht zur gewünschten Lösung. Der AVR startet zwar
mein Hauptprogramm neu. Lädt aber nciht den Bootloader. Istd a ein
Gedankenfehler von mir? Oder wie kann ich generell einen "Softreset"
auslösen?