mikrocontroller.net

Forum: Compiler & IDEs Flashen aus der Anwendung


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

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

Also auslösen des Resets unterbricht die Stromzufuhr.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

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

Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht 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)::);

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.