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?
Ich bin nochmal am suchen. Anscheinden startet der doch den Bootloader. Zumindest sendet der mir EIN! Zeichen zurück. Aber nicht mehr. Dann läuft schon wieder das Hauptprogramm. Kann es sein, dass ich da irgendwas mit dem Stack usw. noch beachten muss?
Hi Normalerweise sollte der Stack vom Bootloader gleich neu initialisert werden. Ist evtl. noch ein Interrupt aus dem Hauptprogramm aktiv? Matthias
Hey, ich hatte das Problem damals mit einem künstlichen erzeugten Watchdog Reset gelöst mittlerweile würde ich es wohl auch eleganter versuchen. Du solltest ein "cli" einbauen. Google mach nach AVR reset oder Schau mal hier http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=188539&POSTNUKESID=add9d4cf028a2c6d43e1871364643f33#188539 http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=33814&highlight= Freudi
Also mit "wdt_enable(WDTO_15MS);" geht es wunderbar. Ein cli() hatte ich vorher schon drin. Kann ich nicht nachvollziehen, warum es da nicht ging. Auch die IRQs werden ja nicht angesprochen, wenn ein Interrupt ansteht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.