Forum: Mikrocontroller und Digitale Elektronik Bootloader USB VCOM


von Thorsten (Gast)


Lesenswert?

Hallo,

ich benutze ein XMC4500 und kommunziere mittels USB Schnittstelle und 
Virtuellen Comport mit meinem PC. Die Kommunikation funktionert auch 
einwandfrei, aber ich bräuchte ein paar Tipps oder Denkanstösse.
Ich möchte nun die USB Schnittstelle inklusive virtuellen Comport nutzen 
um mein System komfortabel zu aktuallisieren, dafür gibt es auch eine 
gute Appnote mit Quellcode die auf UART basiert, deshalb denke ich die 
anpassend ist auch für mich als Cortex M4 Anfänger zubewältigen, aber in 
ein paar Punkten weiss ich nicht, ob mein Lösungsweg gut oder besser 
gemacht werden kann.

In den AVR Bootloadern hier im Forum wird nachdem Reset kurz auf dem 
UART gelaucht und auf ein Syncronbyte gewartet. Empfängt der 
Mikrocontroller nicht dieses Byte innerhalb einer gewissen Zeit, dann 
springt der µC zur Mainapplikation. Ich wollte es auch so für meinen USB 
Bootloader tätigen, aber nach den Dokumenten von Infineon kann die 
Enumierung vom USB Comport zwei Sekunden betragen, je nach OS und die 
Bootupzeit somit ist extrem lange, deshalb wollte die USB Schnittstelle 
in die Mainapplikation intrigieren und auf deine spezielles Passwort 
(Bytefolge) reagieren, somit wäre die Initalisierung der GPIO und andere 
Peripherie immer noch nach einem Reset recht schnell. Gibt es eine 
andere Idee? I/O's hab ich keine mehr frei, deshalb fällt diese 
Möglichkeit raus.

In einem Infineon Beispiel wird die Enumierung über eine while-Schleife 
immer wieder gepollt abgefragt und das Programm verhaart bis zu zwei 
Sekunden in der While-Schleife. Ich würde das Bit über die Funktion 
Zyklisch abfragen, damit ich quasi parallel noch andere Dinge machen 
kann. Wie würdet Ihr sonst vorgehen?

von Eric B. (beric)


Lesenswert?

Etwa so?

In Startup:
 Check Programmier-Flag (irgendein Byte oder Word in RAM/Flash/EEPROM)
 WENN Flag gesetzt
 DANN starte Download
 SONST starte Hauptprogramm.


Download:
 Starte USB
 Starte Programmiervorgang
 WENN Erfolgreich
 DANN Lösche Programmier-Flag.


Hauptprogramm:
 Starte USB und lese vom UART
 WENN passwort erkannt
 DANN setze Programmier-Flag und RESET.

von Thorsten (Gast)


Lesenswert?

Ja und einen wichtigen Punkt den Du beachtet hast ist das Flag im 
RAM/ROM/FLASH, daran hatte ich nicht gedacht.

Eventuell jemand noch einen anderen Lösungsansatz?

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.