Hallo Ich habe einen Bootloader nach http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung programmiert und im ATmega auch das BOOTRST gesetzt. Im Grunde funktioniert alles: Der Bootloader wird aufgerufen, ich kann das Hauptprogramm flashen und es startet. Aber: Nach meinem Verständnis sollte doch anschließend aufgrund des Fuses BOOTRST immer zum Bootloader gesprungen werden, wenn ein Reset oder PowerOn eintritt. Aber es wird immer gleich das Hauptprogramm gestartet. Verstehe ich da was falsch?
Peter schrieb: > Aber: Nach meinem Verständnis sollte doch anschließend aufgrund des > Fuses BOOTRST immer zum Bootloader gesprungen werden, wenn ein Reset > oder PowerOn eintritt. Aber es wird immer gleich das Hauptprogramm > gestartet. > Verstehe ich da was falsch? Kommt drauf an, wie der Bootloader geschrieben ist. Die meisten Bootloader sind so gebaut, dass sie nur eine begrenzte Zeit lang auf die Gegenstelle warten. Kommt da nix, dann startet der Bootloader das Hauptprogramm. Macht auch Sinn. Nach einem Stromausfall möchtest du ja haben, dass der µC von alleine wieder startet und sein Programm weitermacht und nicht ewig darauf wartet, dass der Servicetechniker kommt und dem Bootloader sein OK gibt.
Schon klar so weit. Nur der Bootloader wird gar nicht ausgeführt nach dem ersten Flashen über ihn. Ich nutze noch den Beispielcode http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung#Schritt_1_und_2_-_siehe_.22Hallo_Welt.22_Bootloader Und da würde wenigstens ein Text ausgegeben werden (zumal ich den Code modifiziert habe und er auf ein Zeichen warten müßte).
Nachtrag: Vom Hauptprogramm aus kann ich per Befehl durchaus wieder zum Bootloader springen.
Peter schrieb: > Schon klar so weit. Nur der Bootloader wird gar nicht ausgeführt nach > dem ersten Flashen über ihn. Ich nutze noch den Beispielcode > http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung#Schritt_1_und_2_-_siehe_.22Hallo_Welt.22_Bootloader > Und da würde wenigstens ein Text ausgegeben werden (zumal ich den Code > modifiziert habe und er auf ein Zeichen warten müßte). Ah. OK Überprüf nochmal das BOOTRST Flag. Wenn das richtig steht, MUSS der µc den Bootloader anspringen. Er hat gar kein andere Wahl nach einem Reset. Überprüf auch, ob du die Größe der Bootloader Section richtig eingestellt hast.
Argh! Darauf hätte ich ja auch gleich selber kommen können. *Danke.* Ich ging fest davon aus, daß das Bit gesetzt ist, denn immerhin springt er ja zum Bootloader. Aber es war nicht der Fall. Gesetzt und alles Paletti.
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.