Forum: Compiler & IDEs Programmausführung springt nicht zum Bootloader


von Peter (Gast)


Lesenswert?

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?

von Karl H. (kbuchegg)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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).

von Peter (Gast)


Lesenswert?

Nachtrag:
Vom Hauptprogramm aus kann ich per Befehl durchaus wieder zum Bootloader 
springen.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.