Forum: Mikrocontroller und Digitale Elektronik Atmega32U4 per Flip flashen und als COM-Port in Terminalprogramm ansprechbar


von Michael F. (michael_f268)


Lesenswert?

Hallo zusammen,
ich habe eine kleine Platine mit einem ATmega32U4 Controller selbst 
aufgebaut, und würde diese gerne einen im Microchip Studio entwickelten 
Code als Hex-File per Flip über die USB Schnittstelle auf das Gerät 
flashen.
Reicht der Bootloader ab Werk hierzu aus?
Gerne würde ich auch mittels eines Terminal-Programms mit meinem PC in 
Verbindung treten mit dem Gerät.
Welchen Treiber (per Zadec-Tool?) muss ich hier verwenden, um das zu 
bewerkstelligen, d.h. dass das Gerät als COM-Port z.Bsp. in Docklight 
auftaucht?

Vielen Dank schon mal für eure Hilfe!
Michael

von C-hater (c-hater)


Lesenswert?

Michael F. schrieb:

> Reicht der Bootloader ab Werk hierzu aus?

Ab Werk gibt es meines Wissens nach keinen Booloader beim 32U4.

von Michael F. (michael_f268)


Lesenswert?

C-hater schrieb:
> Michael F. schrieb:
>
>> Reicht der Bootloader ab Werk hierzu aus?
>
> Ab Werk gibt es meines Wissens nach keinen Booloader beim 32U4.

Ab Werk ist der USB DFU Treiber drauf. Am Controller ist ein 16Mhz Quarz 
dran, in der Kombination habe ich auch den Controller zumindest schon 
mal löschen können , ich habe nur mit dem Zadek-Treiber Tool zu viel 
rumgespielt, und jetzt funktioniert es nicht mehr.

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


Lesenswert?

C-hater schrieb:
> Ab Werk gibt es meines Wissens nach keinen Booloader beim 32U4.
Hat er!
Wird aber ganz fix überschrieben, und dann isser weg.

Die 16U2 und 8U2 haben einen unlöschbaren Bootloader.

Beachtenswert:
1. Fuses
2. /HB Pin

von C-hater (c-hater)


Lesenswert?

Michael F. schrieb:

> Ab Werk ist der USB DFU Treiber drauf.

Ooops, stimmt. Bei den U4 ist wirklich ein Bootloader vorinstalliert. 
Allerdings scheint mir das Konzept nicht sehr gut durchdacht. Das liegt 
aber sicher daran, dass ich das Datenblatt nicht komplett gelesen habe.

> Am Controller ist ein 16Mhz Quarz
> dran

Genau das ist, worüber ich gedanklich gestolpert bin. Wenn ein 
vorinstallierter USB-Bootloader brauchbar sein soll, dann müßte ja auch 
die Default-Einstellung für die Taktquelle hinreichend für den Betrieb 
des USB-Interface sein. Der interne RC-Taktgenerator fällt da aus.

Und, bei der Suche nach der Erkenntnis im DB stellt sich raus:

Es gibt zwei Auslieferungsvarianten:
U4 und U4RC.

Letzteres ist nicht in der Lage, den Bootloader (wirklich) zu benutzen, 
weil es halt den internen RC-Oszillator als Default-Taktquelle benutzt. 
Der Bootloader ist aber trotzdem installiert und versucht zu tun, was er 
tun soll. Ziemlicher Schwachsinn...

Die U4 (ohne "RC") hingegen könnten theoretisch wirklich leisten, was 
dir vorschwebt. Da muss nur der Quarz und seine Bürde-Kapazitäten 
passen.

von Michael F. (michael_f268)


Lesenswert?

Anscheinend habe ich hier die richtige Version, weil es bei mir ja schon 
mal geklappt hat, das Board mit Flip zu flashen. Aber welchen Treiber 
muss ich verwenden, um über den USB Port Befehle empfangen und senden zu 
können von einem Terminalprogramm aus? Dafür müsste das Board ja mit 
einem COM-Port versehenen sein, oder? Welchen Treiber, den Zadek mir 
hier zur Auswahl gibt, muss ich hier verwenden? Hat da jemand 
Erfahrungen?

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


Lesenswert?

Lass Zadig erstmal weg...

Anhand der PID/VID kannst du herausfinden, welcher Treiber nötig ist, 
und was der USB Port kann.

Ich wiederhole:
Der /HWB Pin ist/kann/wird wichtig sein, damit der HardwareBootLoader 
ins Spiel kommen kann.

von Michael F. (michael_f268)


Lesenswert?

Arduino F. schrieb:
> Anhand der PID/VID kannst du herausfinden, welcher Treiber nötig ist,
> und was der USB Port kann.

Wie kann ich diese PID/VID herausfinden und wenn ich diese Kennung habe, 
woher weiß ich, welcher Treiber notwendig ist?

Arduino F. schrieb:
> Der /HWB Pin ist/kann/wird wichtig sein, damit der HardwareBootLoader
> ins Spiel kommen kann.

Der /HWB Pin ist der Reset, den ich per Taster auf low setzen kann?

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


Lesenswert?

Michael F. schrieb:
> Der /HWB Pin ist der Reset, den ich per Taster auf low setzen kann?
Das Datenblatt gibt gerne und ausführlich Auskunft!
Es gibt keine Notwendigkeit da zu raten, oder im Nebel zu stochern.
Du musst noch nicht einmal mir glauben.

Michael F. schrieb:
> Wie kann ich diese PID/VID herausfinden
z.B. mit dem Gerätemanager!

Michael F. schrieb:
> woher weiß ich, welcher Treiber notwendig ist?
Google wird das schon wissen.
Muss man nur fragen.
Die PID/VID ist dabei durchaus hilfreich.

: Bearbeitet durch User
von Michael F. (michael_f268)


Lesenswert?

Arduino F. schrieb:
>> Der /HWB Pin ist der Reset, den ich per Taster auf low setzen kann?
> Das Datenblatt gibt gerne und ausführlich Auskunft!
> Es gibt keine Notwendigkeit da zu raten, oder im Nebel zu stochern.
> Du musst noch nicht einmal mir glauben.

Ohne den richtigen Treiber kann ich doch mit /HWB auf low mittels Flip 
nichts flashen auf den Mikrocontroller.

Die PID/VID aus dem Gerätemanager zeigt mir doch nur, welchen Treiber 
ich installiert habe, deshalb kann ich doch nicht schließen, welcher 
Treiber eigentlich installiert sein müsste, damit ich per FLIP zum 
Flashen auf den Chip draufkomme und per Terminalprogramm darauf 
zugreifen kann, oder habe ich da was falsch verstanden?

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


Lesenswert?

Michael F. schrieb:
> Die PID/VID aus dem Gerätemanager zeigt mir doch nur, welchen Treiber
> ich installiert habe,

Ich gebe auf.

von Michael F. (michael_f268)


Lesenswert?

Arduino F. schrieb:
> Ich gebe auf.

Bitte nicht aufgeben! Ich will doch nur den richtigen Treiber für meine 
Anwendung finden.

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


Lesenswert?

Michael F. schrieb:
> Ich will doch nur den richtigen Treiber für meine
> Anwendung finden.

2 Treiber:
Einmal für Flip
Und einmal seriell

Michael F. schrieb:
> Bitte nicht aufgeben!
Warum nicht?
Ich sagte was nötig ist, aber du bist dagegen...
OK...(vielleicht)
Aber helfen kann ich auf die Art nicht.
Das mit dem Don Quijote und den Windmühlen, das liegt mir nicht so.

von Michael F. (michael_f268)


Lesenswert?

Arduino F. schrieb:
> 2 Treiber:
> Einmal für Flip
> Und einmal seriell

Ok, welchen Treiber brauche ich für FLIP und welchen für die serielle 
Schnittstelle?

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


Lesenswert?

Michael F. schrieb:
> Ok, welchen Treiber brauche ich für FLIP
Den, welcher bei Flip automatisch mit installiert wird.
Sich im Installationspaket befindet.
Den, welchen du evtl. per Zadig zerstört/wegkonfiguriert hast.

Michael F. schrieb:
> und welchen für die serielle
> Schnittstelle?

Das weiß ich nicht!
Das ist abhängig von der USB Konfiguratioen deines AVR.
Von der Serial Emulation.
Da ich die nicht sehe.....
Und du sogar unbedingt das PID/VID Pärchen geheim halten musst....

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Arduino F. schrieb:
> Das ist abhängig von der USB Konfiguratioen deines AVR.
> Von der Serial Emulation.

Üblich ist CDC. Neuere Windows-Installationen brauchen dafür keine 
zusätzlichen Treiber, da sie endlich damit umzugehen wissen. So etwas 
wie "Zadig" braucht man da einfach nicht mehr.

> Und du sogar unbedingt das PID/VID Pärchen geheim halten musst....

Welche PID/VID man in eigener Software verwendet, sagt nichts darüber 
aus, welcher Treiber schlussendlich zum Einsatz kommt. Anders sieht es 
nur aus, wenn man z.B. das Protokoll einer bereits existierenden 
USB-UART-Bridge wie z.B. FT232 nachbilden will, um den FTDI-Treiber 
nutzen zu können, aber irgendeine Stimme sagt mir, daß das hier GANZ 
SICHER nicht der Fall ist.

Ein immer hilfreiches Mittel bei USB-Anwendungen unter Windows ist der 
US Device Tree Viewer von Uwe Sieber:

https://www.uwe-sieber.de/usbtreeview.html

Verstehen, was einem da angezeigt wird, muss man natürlich trotzdem.

von C-hater (c-hater)


Lesenswert?

Harald K. schrieb:

> Welche PID/VID man in eigener Software verwendet, sagt nichts darüber
> aus, welcher Treiber schlussendlich zum Einsatz kommt.

Man kann damit aber ermitteln, welcher funktionieren könnte. Diesen dann 
installieren und schauen, ob der auch geladen wird. Wenn nicht, kann man 
schauen, was statt dessen geladen wird. Und dies dann gezielt entsorgen.

Also, kurz:

1) PID/VID einer USB-Hardware zu kennen, kann in vielerlei Hinsicht 
nützlich sein.
2) PID/VID zu verheimlichen macht keinen Sinn. Es sei denn, man ist ein 
Traffic-Troll, dessen Ziel nicht ist, ein Problem zu lösen, sondern eien 
möglichst langen sinnlosen Thread zu generieren.

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


Lesenswert?

Harald K. schrieb:
> Welche PID/VID man in eigener Software verwendet, sagt nichts darüber
> aus, welcher Treiber schlussendlich zum Einsatz kommt.

Es ist die einzige/wichtigste Information, die uns der AVR beim 
Anschluss an den PC liefert. Wenn man diese Information in den Wind 
schlägt, steht man vollkommen nackt da.

Nachtrag:
Per ISP zum Arduino Leonardo machen.
Dort findet man dann zuverlässige und ausgetretene Pfade vor.

: Bearbeitet durch User
von Michael F. (michael_f268)


Angehängte Dateien:

Lesenswert?

Vielen Dank für eure ausführlichen Antworten. Ich bin leider nicht dazu 
gekommen, früher zu antworten, entschuldigt bitte.

Der USB tree viewer zeigt als PID/VID folgendes an:
Vendor ID                : 0x03EB (Atmel Corporation)
Product ID               : 0x2FF4

USB Deivce Tree zeigt mir das Gerät auch als COM8 an, dieser ist auch in 
einem Terminalprogram auswählbar, allerdings kann ich mich nicht 
connecten drauf.
Mittels Flip kann ich mich leider auch nicht mit dem Atmega32U4 
verbinden, weder im Modus 'kein Reset/HWB', noch im 'nur HWB' noch bei 
'Reset+HWB' gedrückt.
Laut Zadek (ich weiß, den hätte ich nie verwenden sollen) ist aktuell 
der 'USB CDC USB Serial' draufgespielt.

Wie verhält es sich denn allgemein mit den Treibern. Generell muss doch 
ein Treiber auf dem Host-PC installiert sein und dieser dann vom Device 
auch geladen werden, d.h. Teile des Treibers werden im Device 
verarbeitet, oder?

D.h. nur durch eine Änderung des Treibers auf dem Rechner kann ich 
möglicherweise nicht wieder zum alten Ausgangszustand meines Devices 
zurückkehren, wenn das Device den neuen Treiber nicht laden kann?

Wie gehe ich denn jetzt am Besten vor, damit ich über Flip und USB 
wieder flashen kann (einen ISP-Anschluss habe ich bei meinem 
custom-board leider gar nicht rausgeführt) und mittels eines 
Terminalprogramms mit dem Gerät in Verbindung treten kann?

Entschuldigt, wahrscheinlich müsste dass aus den verschiedenen Antworten 
schon klar, sein, ich kapier's trotztdem nicht, was ich jetzt konkret 
machen muss.

von Thomas Z. (usbman)


Lesenswert?

Michael F. schrieb:
> allerdings kann ich mich nicht connecten drauf.
was vollkommen klar ist weil das Device nicht gestartet werden kann 
(code 10)

Google nach der VID / PID  combo sagt dass dies ein Atmel DFU Device ist 
was wohl auf libusb basiert. Zadig ist ein sehr mächtiges Tool aber halt 
nicht für Anfänger gemacht. Du kannst mit Zadig jetzt einfach für diese 
VID /PID den libusbk zuordnen. Da gibts einen Button alle Devices 
anzeigen dann sollte auch die PID wieder auftauchen.

Alternativ sollte auch folgendes funktionieren:
1. mit Zadig den CDC Eintrag für diese VID/PID löschen
2. Flip Software neu installieren die sollte Treiber und infs mitbringen

: Bearbeitet durch User
von Arduino F. (Firma: Gast) (arduinof)


Angehängte Dateien:

Lesenswert?

Michael F. schrieb:
> USB Deivce Tree zeigt mir das Gerät auch als COM8 an,

Da ich keinen Fabrikneuen 32U4 da habe, mit original Bootloader, 
erfolgen meine Tests mit einem 16U2.

Dort wird kein COM Port vom Bootloader und Treiber eingerichtet.
Der kommt erst wenn die Anwendung startet.

Windows bietet mir die Treiber, welche im Anhang zu sehen sind.
Beide funktionieren mit Flip
Dieser findet sich im Installationspaket.
(einer meiner stammt offensichtlich aus einer alten Flip Version)

Da hilft kein Zadig!
Das geht ganz ohne.

Wenn du dann irgendwann die UART Emulation (CDC?) über USB nutzen 
möchtest, ist das eine andere Baustelle.
u.A. abhängig von der PID/VID welche die Emulation zum PC sendet.
Das ist nicht die gleiche, wie für Flip, bzw. den Bootloader.

: Bearbeitet durch User
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.