Moin, ich habe auf meinem Chip einen eigenen Bootloader und das eigentliche Programm. Folgende Situation möchte ich lösen: Beim Anschalten des ATmegas soll der Bootloader sofort auf die Adresse 0x00 springen, also das eigentliche Programm und dort soll, wenn über Usart etwas empfangen worden ist zum Bootloader gesprungen werden und seine eigentliche FUnktion ausgeführt werden. Reicht es, wenn ich das Fuse so setze, dass nicht mit dem Bootloader gestartet wird und wenn dann ein Zeichen empfangen wurde, der nach 0x1c00 springt? mfg, Nils
Nils schrieb: > Moin, > > ich habe auf meinem Chip einen eigenen Bootloader und das eigentliche > Programm. Folgende Situation möchte ich lösen: > > Beim Anschalten des ATmegas soll der Bootloader sofort auf die Adresse > 0x00 springen, also das eigentliche Programm und dort soll, wenn über > Usart etwas empfangen worden ist zum Bootloader gesprungen werden und > seine eigentliche FUnktion ausgeführt werden. > > Reicht es, wenn ich das Fuse so setze, dass nicht mit dem Bootloader > gestartet wird und wenn dann ein Zeichen empfangen wurde, der nach > 0x1c00 springt? Nils, das wäre sehr gefährlich. Ich wäre auch überrascht, wenn es ginge. Was, wenn ein Bootvorgang scheitert - und in der Application Section dann Unklares steht? Die Entwickler von AVR haben sich schon was gedacht. Deine Anwendung, so wie Du sie hier beschrieben hast, ist auch mit den Atmegas erreichbar - Dootloader startet das Application Program. Wenn dies einen Boot-Befehl liest, setzt es einen Flag (ich benutze dazu das EEPROM) und startet den Prozessor erneut - dann ist der Bootloader wieder dran. Besondere Anlässe erfordern besondere Maßnahmen, ja, aber Deine Aufgabe hat nicht erkennen lassen, was denn das Besondere an ihr sein solle. Ciao Wolfgang Horn
Nils schrieb: > Reicht es, wenn ich das Fuse so setze, dass nicht mit dem Bootloader > gestartet wird und wenn dann ein Zeichen empfangen wurde, der nach > 0x1c00 springt? das geht, hat dann aber mit Bootloader im eigentlichen nichts mehr zu tun und bringt die von Wolfgang beschiebenen Nachteile. Was spricht dagegen im Bootloader 2-3s auf ein Token am UART zu warten, und dann die App zu starten. Zum Update kannst du aus der App immer noch in den Bootloader springen muss auch nicht zwingend an die Adresse des Bootvectors sein, so das du sofort mit den Update starten kannst. Sascha
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.