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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.