Hallo, ich habe einen Bootloader für die Megas. Der Funktioniert auch. Eine Firmware ebenfalls. Controller ist ATMega644P. Komischerweise habe ich, nur bei dieser CPU, das Problem, dass ich nachdem ich 1x die Firmware per Bootloader über Bluetooth (Uart) geändert habe, keinen Zugriff mehr auf den Bootloader habe. Bei bspw. dem Mega328P wo ich den Bootloader auch nutze, klappt es beliebig oft. Woran kann das liegen? Nach dem updaten habe ich mit Atmel Studio veryfing des Flashes gemacht - complete (also Firmware 100% correct geändert). Der Bootloader an sich wird funktionieren, er ist auch noch im Flash unberührt vorhanden nach dem Updaten (auch nochmal gegen geprüft, alles korrekt). Im Hauptprogramm springe ich so zum Bootloader (klappt wie gesagt 1x). void (*jmp_to_bootloader) (void) = 0x7000; Diese Sprungfunktion rufe ich auf, vorher schalte ich noch wdt_disable, und cli(). Genauso mache ich es aber auch anderen Controllern wo es geht. Ich habe, auch wenn der Bootloader nur 1,7kb groß ist, 8kb Bootsection genommen.
Mr. AVR schrieb im Beitrag #5375780: > Im Hauptprogramm springe ich so zum Bootloader (klappt wie gesagt 1x). > > void (*jmp_to_bootloader) (void) = 0x7000; wo im Hauptprogramm? Am Anfang? 0x7000 passt aber nicht für jeden Controller. Un an was merkst du das der Bootloader nicht aufgerufen wird? I.d.R. stellt man per Fuse ein das der AVR nach dem Reset die Bootloaderadresse anspringt, dann geht das nämlich auch noch wenn beim Flashen des Hauptprogramms mal was schief läuft. Sascha
Ohne konkrete Hinweise, um welchen Bootloader es sich handelt und den Quelltext deines Programms können wir Dir keine vernünftige Antwort geben.
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.