Forum: Compiler & IDEs Flashen aus der Anwendung


von Michael (Gast)


Lesenswert?

Hallo,

gibt es eine Möglichkeit bzw. welche eine neue Firmware aus der 
laufenden Applikation zu flashen?

Atmega128 in C

Bisher wird ein Menupunkt "neue Firmware" angewählt und von dort kann 
ein Reset ausgelöst werden, dann wird der Bootloader angesprungen und 
geflasht.

Das ist soweit so gut, jedoch wird bei meiner Hardware der Strom beim 
Reset unterbrochen und somit komme ich nicht mehr an den Bootloader.

Kann man den Bootloader aus der laufenden Applikation ohne einen Reset 
auszulösen anspringen?

von Peter D. (peda)


Lesenswert?

Michael wrote:

> Bisher wird ein Menupunkt "neue Firmware" angewählt und von dort kann
> ein Reset ausgelöst werden, dann wird der Bootloader angesprungen und
> geflasht.
>
> Das ist soweit so gut, jedoch wird bei meiner Hardware der Strom beim
> Reset unterbrochen und somit komme ich nicht mehr an den Bootloader.


Was denn nun?

Wird der Botloader nun nach dem Reset angesprungen oder nicht?

Zur Laufzeit kann man die Bootreihenfolge nicht mehr ändern, die wird 
fest mit den Fusebits programmiert.


Peter

von Michael (Gast)


Lesenswert?

die Hardware hat sich geändert, deshalb geht das wie oben beschrieben 
nicht mehr.

Also auslösen des Resets unterbricht die Stromzufuhr.

von Peter D. (peda)


Lesenswert?

Michael wrote:
> die Hardware hat sich geändert, deshalb geht das wie oben beschrieben
> nicht mehr.

Warum nicht?

Der Resetvektor wird auf den Bootloader gesetzt und die Applikation 
macht nen Watchdogreset zum Flashen.


Peter

von Michael (Gast)


Lesenswert?

das Problem ist, dass wenn der Reset ausgelöst wird alle Pins 
zurückgesetzt werden und somit die Stromversorgung unterbrochen wird.

von Günter R. (galileo14)


Lesenswert?

Du kannst doch auch aus Deiner Applikation direkt zum Bootloader
springen:

#define COLDBOOT APP_END /* ColdBoot-Einsprung-Adresse */

#define STR(x) STRINGIFY(x) /* String-Concatenation-Makros */
#define STRINGIFY(x) #x

asm volatile ("jmp " STR(COLDBOOT)::);

von Peter D. (peda)


Lesenswert?

Michael wrote:
> das Problem ist, dass wenn der Reset ausgelöst wird alle Pins
> zurückgesetzt werden und somit die Stromversorgung unterbrochen wird.

Heißt das die CPU dreht sich selber den Saft ab?
Und wer dreht dann den Saft wieder an?

Wer denkt sich denn sowas verrücktes aus.

Die wenigsten Hardwaredesignfehler lassen sich in Software korrigieren.


Peter

von Michael (Gast)


Lesenswert?

die Anwendung läuft mit einem Akku.
Es gibt keinen Schalter nur einen Taster zum einschalten.
Ausgeschaltet soll die Anwendung keinen Strom verbrauchen.
Wird der Taster gedrückt schaltet sich das Gerät ein.
Das funktioniert so tadellos.

>Günter
>Bootloader direkt anspringen werde ich testen.

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.