Hallo, wir müssen für ein Hardware-Projekt kurzfristig ein Angebot abgeben. Das zu entwickelnde Gerät kommuniziert über eine USB-Schnittstelle mit einem Windows-PC. Wir haben zwar die Ressourcen, uns in die Problematik einzuarbeiten, momentan fehlt uns aber schlicht der Überblick, mit welchem USB-Device-Controller wir für ca. die nächsten 5 Jahre einigermaßen zukunftsfest sind. Der Controller muss Interrupt-Transfer mit Hi-Speed-Übertragung beherrschen. Vom Hersteller, und das ist der eigentliche Knackpunkt, sollte ein nach neuen MS-Richtlinien zertifizierter Windows-10-Treiber mitgeliefert werden. Es müssen allerdings auch Treiber für Windows 7 und 8 verfügbar sein. Gibt es dazu Erfahrungen im Forum? Vielen Dank, Lutz
Viele Microcontroller haben USB Device Peripherie eingebaut. Da braucht es keine extra USB-Bridge. fchk
Lutz schrieb: > Vom Hersteller, und das ist der eigentliche Knackpunkt, > sollte ein nach neuen MS-Richtlinien zertifizierter Windows-10-Treiber > mitgeliefert werden. Es müssen allerdings auch Treiber für Windows 7 und > 8 verfügbar sein. Da kommt es doch sehr darauf an, was das zu entwickelnde Gerät eigentlich für Daten übertragen soll. Wenn es in eine Geräte-Klasse passt, die von Windows sowieso schon unterstützt wird, benötigt man überhaupt keinen zusätzlichen Treiber.
Ins Gerät werden in Quasi-'Echtzeit' Datensätze geschrieben. Maximal müssen pro ms ca. 2kB (20 Sätze zu 100 Bytes) übertragen werden. Die Verarbeitung der Datensätze wird vom Gerät bestätigt, d.h Rückmeldung an PC. Hinzu kommen asynchron vom Gerät generierte Events, die an den PC zurückgemeldet werden. Ich weiß nicht, ob die allgemeine Beschreibung schon ausreicht. Lutz
Das sind eine ganze Menge Daten, und da wird man um einen eigenen Treiber nicht herumkommen. Evtl. mal mit einem Treiberspezialisten in Kontakt treten (z.B. Fa. Thesycon). Controller gibt's für solche Aufgaben jedenfalls wie Sand am Meer.
In Zeiten von WinUSB und LibUSB ist der Bedarf an Kerneltreiberprogrammierung heutzutage gering. Ich würde auch eher versuchen, eine Standard-USB Geräteklasse zu verwenden und dewegen genau KEINE extra USB Bridge von FTDI, SiLabs usw verwenden. Mit Standard-USB-Geräteklassen brauchst Du nämliche keine extra Treiber mehr, weil die schon beim Betriebssystem dabei sind. fchk
Frank K. schrieb: > Viele Microcontroller ... können nur Full Speed. Lutz schrieb: > Vom Hersteller, und das ist der eigentliche Knackpunkt, sollte ein > nach neuen MS-Richtlinien zertifizierter Windows-10-Treiber > mitgeliefert werden. Es müssen allerdings auch Treiber für Windows 7 > und 8 verfügbar sein. Da ist die einfachste Lösung ein Treiber, den Microsoft schon mitliefert, also WinUSB (https://msdn.microsoft.com/en-us/library/windows/hardware/ff540196.aspx). Alternativ irgendein separater USB/seriell-Konverter-Chip, z.B. FT232H (macht die Hardware teurer, aber spart die USB-Firmware-Entwicklung).
Frank K. schrieb: > Mit Standard-USB-Geräteklassen brauchst Du nämliche keine > extra Treiber mehr, weil die schon beim Betriebssystem dabei sind. Da kommst du halt an Grenzen. Die Controlpipe kann max. 64 bytes pro ms, mit HID gehen glaube ich bis zu 1023 bytes pro ms. TO benötigt aber schon das Doppelte davon...
Sind die Datensätze voneinander abhängig d.h. gibt es folgenden Ablauf: Anfrage1 (PC->Device) Antwort1 (Device->PC) Anfrage2 (PC->Device) Antwort2 (Device->PC) ... wobei Anfrage2 erst (oder überhaupt nur) ausgeführt wird, wenn Antwort1 vom PC empfangen wurde?
Oder um es klarer zu machen: Könnte man alle 20 Anfrage Sätze senden, bevor 20 (oder mehr oder weniger) Antwort Sätze kommen?
Echtzeitanforderungen im EInstelligen ms Bereich oder gar im usec Bereich vertragen sich nicht so toll mit USB, nocht nicht mal mit USB-HS. Schon mal ueber die Moeglichkeit nachgedacht die gesammelten Daten vor Ort mit einer MCU teilweise zu bearbeiten und dann mit niedrigen Echtzeianforderungen stressfrei den USB zu nutzen? Nur so ein Gedanke. Die schnelleren M4 Derivate von ST, NXP, Atmel und neuerdings auch Renesas bieten USB-HS Robert
Ich kann auch nur dringend empfehlen auf WinUSB oder LibUSB zu gehen. Wenn nur Windows das Ziel sein soll dann eher Winusb. Der ist in jedem Windows seit XP dabei und wird von MS gepflegt. Da kannst du jeden beliebigen Device Controller dran machen. Wir setzen den ohne Probleme mit dem FX2 und auch dem FX3 von Cypress ein.
Vielen Dank erst einmal für die Antworten. Ich werde mich nochmal mit WinUSB beschäftigen, vielleicht können wir mit den Standardtreibern doch das Problem schon lösen. @A. Horn Die Bestätigung benötigen wir eigentlich nur, um die Laufzeit zu messen. D.h. jeder Datensatz erhält eine lfd. Nummer, die Datensätze werden nacheinander übertragen. Anhand der Antwort, die wieder die jeweilige laufende Nummer enthält, können wir die Lauf- + Verarbeitungszeit messen. So haben wir es jedenfalls beim Vorgänger des neu zu entwickelnden Gerätes gemacht. Der dort verwendete USB-Controller ist abgekündigt, und der dazu gehörende Treiber ist nicht Windows10-konform. Lutz
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.