Ich habe ein (billiges) IO Modul gebaut, das ich aktuell über einen µC ansteuere. Um es professioneller zu machen möchte ich das Gerät gerne über den PC über USB Port anschließen. Jetzt benötige ich dafür einen USB-Treiber. Wie programmiere ich das? Ich suche nur ein "Stichwort" für den Anfang. Ich möchte es NICHT über einen FTDI Chip lösen, der sich als COM Port ausgibt, da so meine Datenrate stark begrenzt ist. Wie kann ich eine reine USB Datenübertragung realisieren? Danke für jeden Tipp! :D
Martini schrieb: > Ich suche nur ein "Stichwort" für den Anfang. Stichwort: Treiber Zertifizierung durch Microsoft. Dort findest du auch die grundlegenden Regeln, an du dich halten musst.
Hast du denn überhaupt schon einen USB-Controller auf Geräteseite? Brauchst du unbedingt einen echten Treiber, welcher dann auch von mehreren Anwendungen gleichzeitig genutzt werden kann? Das wird dann dank Treiber-Zertifizierung auch nicht ganz billig. Du kannst auch via WinUSB und/oder libusb aus Anwendungen direkt auf das Gerät zugreifen; das erspart den Treiber und ist deutlich einfacher.
VID/PID beschaffen! Ohne geht nix, mit Individualtreiber.
Beitrag #5844574 wurde von einem Moderator gelöscht.
Martini schrieb: > da so meine Datenrate stark begrenzt ist. Dir reichen keine 3 MBaud (für eine IO Modul)? Arduino Fanboy D. schrieb: > VID/PID beschaffen! > Ohne geht nix, mit Individualtreiber. Würde ich auch sagen. Oder du nutzt die standard Implementierungen wie CDC oder HID. Vorausgesetzt dein µC hat USB.
Michl schrieb im Beitrag #5844574: > Wenn ich solche Geräte installiere erscheint immer dieses Windows > typische Installationsmenü mit dem Logo der Firma des Endgerätes. Dann haben die einen eigenen Treiber der per Windows Update nachgeliefert wird. Michl schrieb im Beitrag #5844574: > Ist so etwas mit WinUSB/libusb umzusetzten? Teilweise. Wenn du unbedingt diesen Dialog und die automatische Erkennung (via Windows Update) haben willst, musst du eine .inf und .cat Datei anlegen, signieren (teuer) und bei Microsoft hinterlegen, auch bei WinUSB. Es gibt mehrere Möglichkeiten: - Signierter (teuer) eigener Treiber. Eigene .inf und .cat Datei, signiert (teuer), wird automatisch installiert, ggf. mit Dialog und Logo. - Kein eigener Treiber, stattdessen Zugriff über WinUSB/libusb. Eigene .inf und .cat Datei, signiert (teuer), wird automatisch installiert, ggf. mit Dialog und Logo. - Kein eigener Treiber, selbstsignierte eigene .inf+.cat Datei. Es erscheint bei XP-7 eine hässliche Meldung dass der Treiber nicht vertrauenswürdig ist, ab Win8 Installation nur über abgesicherten Modus (kaum zumutbar). - Kein eigener Treiber, keine eigene .inf+.cat Datei, Gerät hat dann keinen Namen und kein Logo. Durch entsprechende USB-Deskriptoren kann das Gerät als "WinUSB Device" markiert und damit ab Win8 vollautomatisch ohne Nutzer-Interaktion installiert werden - fast so schön wie unter Linux. Bis Win7 muss der Nutzer manuell WinUSB den winusb.sys Treiber auswählen oder das Zadig-Tool dafür nutzen.
Wenn es für dich selbst ist, kannst dir eine VID/PID aussuchen. Darfst es nur eben nicht veröffentlichen. Es besteht natürlich eine geringe Chance dass ein von dir gekauftes Gerät eben diese VID/PID hat, dann kommt es zu Problemen. Windows Treiber kannst du dir auch lokal zertifizieren, nur für deinen PC. Auch hier ist ein verteilen schwierig, da jeder diese Schritte wiederholen müsste. Ein Startpunkt wäre dort: https://docs.microsoft.com/en-us/previous-versions/dn913145(v=msdn.10)
Martini schrieb: > Ich möchte es NICHT über einen FTDI Chip lösen, der sich als COM Port > ausgibt, da so meine Datenrate stark begrenzt ist. Du kannst mit dem sogenannten "Baudrate Aliasing" arbeiten, dazu kannst Du den FTDI vor Auslieferung entsprechend einstellen. Damit sind dann sehr hohe Datenraten möglich. Der Benutzer wählt dann z.B. 300 Baud, dahinter verbirgt sich aber in Wirklichkeit 3MBaud. Wenn das nicht reicht wird es speziell
Martini schrieb: > Jetzt benötige ich dafür einen USB-Treiber. Wie programmiere ich das? > Ich suche nur ein "Stichwort" für den Anfang. Am Besten gar nicht! Ab Win10 ist der VCOM (USB CDC) Treiber im OS mit drin, und das Gerät bekommt automagisch einen COM Port. Für Win7 bräuchte man nur ein .inf, Win8 fällt hinten runter (bräuchte M$ Signatur auf dem .inf -> WHQL). VCOM Beispielcode liefer i.d.R. der Hersteller des µC mit. Wenn man lieber WinUSB benutzen will, sollte man sich WCID (https://github.com/pbatard/libwdi/wiki/WCID-Devices) mal anschauen. Damit entfällt das Inf.
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.