Forum: PC-Programmierung LPC210x Bootloader Interface mit Anwendung (.NET) kombinieren?


von Be M. (bemi)


Lesenswert?

Hallo,

ich habe nun meine eigene Programmiersoftware für die NXP LPC2xxx MCUs 
fertig.

Nun ist es mir wichtig, dass ich den UART, der für den Bootloader 
verwendet wird auch gleichzeitig für die PC (Windows) Kommunikation 
genutzt werden kann.

Um zu Programmieren öffnet die Programmiersoftware die Schnittstelle, 
programmiert den LPC2xxx und gibt die serielle Schnittstelle (FTDI 
FT232) wieder frei.

Problem: Die PC Anwendung weiß natürlich nichts davon, dass ich (während 
der Entwicklung) öfter mal "so eben" neue Firmware in die MCU laden 
möchte. Ich unterstelle dabei, dass PC Anwendung und die MCU permanent 
miteinander kommunizieren. Also wird die serielle Schnittstelle 
dauerhaft offengehalten. Nun ist es mir zu aufwendig jedes mal vor dem 
Firmware Update die PC Anwendung zu beenden. Schön wäre es nun, wenn die 
Programmiersoftware die PC-Anwendung hierzu darüber informieren würde, 
dass ein MCU Update ansteht, damit diese die Kommunikation vorübergehend 
abbricht und nach dem Programmieren wieder neu initialisiert.

Ideal wäre es natürlich, wenn sich die Programmieranwendung "virtuell" 
zwischen die PC Anwendung und die serielle Schnittstelle schalten liese. 
Dann könnte ein Kommunikationsabbruch durch Unterterbrechung des 
Datenflusses erfolgen (virtuelle Stecker ziehen).

Nun 3 Fragen:
Ist es schwierig einen virtuellen COM-Port unter Windows anzulegen?
Gibt es unter Windows Möglichkeiten einen seriellen Kommunikationskanal 
zwischen 2 Anwendungen aufzubauen, ähnlich, als wenn die beiden 
Anwendungen über einen COM-Port kommunizieren würden?
Was wäre die einfachste Möglichkeit einer anderen Windowsanwenung eine 
Nachricht zu schicken.

Ich programmiere mit C++/CLI und dem .NET-Framework 2.0.

von Willivonbienemaya .. (willivonbienemaya)


Lesenswert?

Bernd M. wrote:
> Problem: Die PC Anwendung weiß natürlich nichts davon, dass ich (während
> der Entwicklung) öfter mal "so eben" neue Firmware in die MCU laden
> möchte.

Die PC Anwendung ist auch von dir geschrieben?
Wenn ja:
Kannst du nicht die Programmiersoftware über die Anwendung starten, dann 
weiss die Anwendung davon?


> Ideal wäre es natürlich, wenn sich die Programmieranwendung "virtuell"
> zwischen die PC Anwendung und die serielle Schnittstelle schalten liese.
> Dann könnte ein Kommunikationsabbruch durch Unterterbrechung des
> Datenflusses erfolgen (virtuelle Stecker ziehen).

Du kannst mal versuchen über den D2XX Treiber den USB zu resetten 
(Stichwort: Cycle), aber ich befürchte dass wird nicht funktionieren 
wenn die Anwendung den Port geöffnet hat.


> Nun 3 Fragen:
> Ist es schwierig einen virtuellen COM-Port unter Windows anzulegen?

Alles wo man tiefer ins Windows rein muss ist von Windows verbaut 
worden. Das wird sicher schwierig.

> Gibt es unter Windows Möglichkeiten einen seriellen Kommunikationskanal
> zwischen 2 Anwendungen aufzubauen, ähnlich, als wenn die beiden
> Anwendungen über einen COM-Port kommunizieren würden?

Keine Ahnung. Das .net Framework machts dir da aber nicht leichter, 
sondern versperrt dir noch mehr den Weg.

> Was wäre die einfachste Möglichkeit einer anderen Windowsanwenung eine
> Nachricht zu schicken.

Einfach, sicher, aber langsam ist es eine Nachricht in eine Datei zu 
schreiben, die von der anderen Anwendung gepollt wird.

von Be M. (bemi)


Lesenswert?

Grundsätzlich ist beides von mir. Es ging mir nur darum, eine möglichst 
komfortable Lösung zu finden.

von Arc N. (arc)


Lesenswert?

Bernd M. wrote:
> Grundsätzlich ist beides von mir. Es ging mir nur darum, eine möglichst
> komfortable Lösung zu finden.

Auf
http://www.gmbsg.com/works/index.php?title=Remote_Events_mit_.NET_2.0:_Generische_L%C3%B6sung_mit_Dispatcher_und_Adapter
wird auf einige Möglichkeiten eingegangen...

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.