Forum: Mikrocontroller und Digitale Elektronik Software Update per Atmel Flip auf Atmega32U4. Welcher Bootloader?


von Michael F. (michael_f268)


Lesenswert?

Hallo zusammen,

ich bräuchte ein wenig Unterstützung bei Frage, wie ich ein 
Firmware-Update auf mein selbst gebautes Board mit deinen 
Atmega32U4(USB) µC hinbekomme.
Die Ausgangssituation ist folgende: Mittels Codevision Compiler habe ich 
im Microchip-Studio eine Anwednung entwickelt und per ISP auf den 
Controller geflasht. Dabei musste ich auch ein paar fuse-bits ändern. 
Das Board meldet sich als USB-device an, und ich kann an einen 
Terminal-Programm auch Zeichen hin und her schicken.
An dieser Stelle würde ich gerne ein Firmware-Update mittels der 
USB-Schnittstelle durchführen. Hätte ich nicht gerade vorher per ISB den 
Booloader ab Werk gelöscht, hätte ich mittels Atmel Flip ja Zugriff auf 
den µC, aber den habe ich durch das Flashen per ISP ja überschrieben, 
oder? Die Frage ist jetzt, woher bekomme ich einen Bootloader, mit dem 
ich wieder Zugrif auf den µC ohne ISP über USB bekomme, und wie bekomme 
ich diesen drauf, ohne dass ich das Programm überschreibe? Oder ist das 
Vorgehen hier anders, als ich es eben skizziert habe?

Vielen Dank schon mal für eure Hilfe.

Viele Grüße
Michael

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Catarina

von Michael F. (michael_f268)


Lesenswert?

Arduino F. schrieb:
> Catarina

Ok, Catarina ist der Bootloader, den ich brauche, oder?
Wie dann das Vorgehen?

Mit dem ISP Programmer flashe ich per Microchip-Studio den Bootloader 
auf den Chip. Danach programmiere ich die Fuses indem ich BOOTRST auf 0 
setze.
Dann flashe ich das Anwendungsprogramm. Aber überschreibe ich damit 
nicht meinen Bootloader?
Und wie wechsle ich zwischen Bootloader Firmware-Update Modus und 
Anwendung hin und her? Über den Reset?

Vielen Dank schon mal für die Hilfe.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Im Prinzip richtig.

Catarina kann das avr109 Protokoll

Per Fuse kann man den Bootloader Bereich gegen den Chip Erase schützen. 
Dann bleibt er dir beim Upload erhalten.
Und ja, der Bootloader startet nach Reset und wenn nix passiert startet 
ihm die Anwendung.

Arduino macht zusätzlich den Reset, wenn die Serielle(über USB) kurz auf 
1200 Baud gestellt wird.

Im Arduino AVR Paket, unter Leonardo/Micro findest du alles. Den 
Bootloader die Fuses und auch die AVRDude Kommandos um das ganze 
aufzuspielen.

Ein Anfang:
https://github.com/arduino/ArduinoCore-avr/blob/master/boards.txt#L400

: Bearbeitet durch User
von Michael F. (michael_f268)


Lesenswert?

Jetzt komme ich gerade drauf, dass der Atmega32U4 ja schon ab Werk (ich 
benutze ich mein eigenes Board, kein Leonardo Board) einen Bootloader 
drauf hat: https://ww1.microchip.com/downloads/en/DeviceDoc/doc7618.pdf

Dann müsste ich ja nur, bevor ich meine Anwendungsfirmware draufflashe, 
die Fuse-Bit setzen, um den Bereich gegen den Chip-Erase zu schützen.
Nach jeden Reset wäre dann erstmal der Bootloader aktiv und das Board 
ist available im Atmel Flip? Für wie lange dann? Bis zum nächsten 
Power-Up?

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Michael F. schrieb:
> Jetzt komme ich gerade drauf, dass der Atmega32U4 ja schon ab Werk (ich
> benutze ich mein eigenes Board, kein Leonardo Board) einen Bootloader
> drauf hat: https://ww1.microchip.com/downloads/en/DeviceDoc/doc7618.pdf

Liegt dran, welchen du bestellt hast, gibbet auch ohne Bootloader.

Michael F. schrieb:
> Dann müsste ich ja nur, bevor ich meine Anwendungsfirmware draufflashe,
> die Fuse-Bit setzen, um den Bereich gegen den Chip-Erase zu schützen.

Soweit ich weiß wird der Bootloader nicht von Flip überschrieben.
Aber per ISP dann doch.

Michael F. schrieb:
> Nach jeden Reset wäre dann erstmal der Bootloader aktiv und das Board
> ist available im Atmel Flip?

Es gibt eine Fuse für den HWB (HardwareBootloader)
Und einen /HWB Pin
Das Datenblatt weiß genaueres.

von Michael F. (michael_f268)


Lesenswert?

Arduino F. schrieb:
> Soweit ich weiß wird der Bootloader nicht von Flip überschrieben.
> Aber per ISP dann doch.

Die Fuses kann ich leider nur über ISP verändertn, oder? Ich muss leider 
neben den Bootloader Fuses auch CKOUT ändern, aber da gibt es keine 
Alternative zu ISP, oder? Sonst könnte ich ja gleich alles mit Atmel 
FLIP machen.

Arduino F. schrieb:
> Es gibt eine Fuse für den HWB (HardwareBootloader)
> Und einen /HWB Pin
> Das Datenblatt weiß genaueres.

Ja stimmt, da habe ich was gelesen. Kann ich den mit dem Reset-Pin 
zusammenschließen?

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Michael F. schrieb:
> Die Fuses kann ich leider nur über ISP verändertn, oder?

Nicht nur ... auch per HVPP
Einmal wirst du so (ISP) da ran gehen müssen.
Aber kein Grund einen Chip Erase zu machen.

von Michael F. (michael_f268)


Lesenswert?

Arduino F. schrieb:
> Nicht nur ... auch per HVPP

Das macht's nicht einfacher ;-) Ist halt blöd, weil ich eigentlich nur 
wg. der Fuse-Setting des ISP-Anschluss brauche, sonst könnte ich ja 
alles per USB flashen.

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.