Verwendung eines Seriell-zu-USB-Geräts mit I / O-Kit

9

Ich habe folgendes Problem: Ich habe ein Wintec WBT-202 GPS-Gerät, das die Standortdaten live als NMEA-Daten über USB übertragen kann. In diesem USB ist es nur eine USB zu serielle Brücke, die unter Windows mit dem Standard usbser.sys Treiber ausgeführt wird.

Mein Problem ist, dass es unter Mac OS X funktioniert.

Die Hardware Die USB-GPS-Maus verwendet einen Atmel AT91SAM7S256-Chip, der auch für die USB-Schnittstelle zuständig ist.

Das Problem unter Mac OS X passiert nichts. Es wurde kein neues Zeichengerät unter /dev erstellt, um dieses Gerät zugänglich zu machen.

Unter Windows wird der Standardtreiber usbser.sys verwendet. Es gibt nur eine INF-Datei, die die VendorID und ProductID auf diesen Treiber verweist. Von der Verwendung von Snoopy Pro unter Windows (einer USB-Sniffer-Software) weiß ich, dass die Daten, sobald das Gerät richtig initialisiert ist, als ASCII-NMEA-Zeichenfolgen gesendet werden, was alles ist, was ich will.

Frage 1 Gibt es eine usbser.sys Entsprechung für Mac OS X? Wenn ja, könnte ein Codex-Kext verwendet werden, um sicherzustellen, dass die Treiberübereinstimmung korrekt erfolgt?

Wenn dies nicht funktionieren würde, würde ich IOKit aus dem Benutzerbereich verwenden, um Nachrichten an das Gerät zu senden und zu empfangen. Ich habe noch Fragen, wie das im Detail funktionieren würde, weil ich die Dokumentation von Apple nicht vollständig verstehe. Wenn ein USB-Gerät angeschlossen ist, erfolgt eine Treiberübereinstimmung. Was passiert, wenn kein Treiber gefunden wird?

Frage 2 Könnte es sein, dass ein generischer USB-Treiber geladen wird, mit dem ich im Kernel vom Benutzerbereich aus "sprechen" kann? Woher weiß ich, dass der richtige Treiber geladen ist?

Frage 3 Ich habe gesehen, dass es in WWDC08 eine "Erste Schritte mit I / O Kit" -Session gab. Gibt es eine Möglichkeit, Zugang zu diesem Session-Video zu bekommen?

Ich habe einige Protokolle von USBProbe und den I / O-Registry-Auszug angehängt.

Irgendwelche Kommentare darüber, wie ich anfangen könnte, welche Dokumentation ein anständiges Tutorial bietet, wären sehr willkommen.

Ich habe Mac OS X Interna - A System Internals von Amit Singh, Apples Dokumentation "Erste Schritte mit I / O Kit", "I / O Kit Fundamentals Guide" und die USB-private untersucht Datenbeispiel.

ANHANG

USB-Sonde

%Vor%

IO-Registrierung

%Vor%

USB-Probe-Logon Gerät anhängen

%Vor%

BEARBEITEN: Der Protokolldatei-Auszug aus der console.app wurde nach dem Anschließen des Geräts hinzugefügt

%Vor%     
GorillaPatch 15.02.2011, 21:16
quelle

4 Antworten

3

Die Antwort, die ich von der USB-Mailing-Liste von Apple erhalten habe, ist, dass der Apple AppleUSBCDCACMData -Treiber einen Fehler darin hat, seine Arbeit zu verhindern. Ich habe einen Fehler auf Apples Radar abgelegt und hoffe, dass es bald behoben wird.

    
GorillaPatch 20.02.2011, 11:19
quelle
2

Es sieht so aus, als ob der CDC-Treiber des Systems korrekt übereinstimmt, was /dev/ttyusbmodem* IIRC erzeugen sollte. Ich würde die Systemprotokolle auf Fehlermeldungen prüfen, falls das nicht funktioniert.

    
Hasturkun 16.02.2011 01:06
quelle
0

Wenn Sie ein USB-Treiberprogrammierer sind, sollten Sie den Quellcode für das AppleUSBCDCDriver-Projekt herunterladen, der AppleUSBCDCDriver.kext, AppleUSBCDCACMControl.kext, AppleUSBCDCACMData.kext, AppleUSBCDCECMControl.kext, AppleUSBCDCECMData.kext enthält.

Was ich versprechen kann ist, dass Sie dieses Problem definitiv lösen können, indem Sie den Code reparieren und Ihren eigenen Treiber erstellen (Denken Sie daran, den Klassennamen des Treibers zu ändern.)

Was ich bestätigen kann, ist, dass der AppleUSBCDCDriver hauptsächlich gemäß der Spezifikation der Standard-Kommunikationsgeräteklasse entwickelt wurde und die Berücksichtigung durch das Apple-Entwicklungsteam beinhaltet, und dieses Problem sollte kein Fehler sein.

Unter Mac OS erfolgt die Treiberübereinstimmung hauptsächlich gemäß der inf.plist des Treibers, genau wie die .inf-Datei unter Windows.

    
Ivan 13.07.2011 14:37
quelle
0

Es gibt einen Workaround für den in AppleUSBCDCACMData genannten Fehler. Sie müssen dem Deskriptor für die Anrufverwaltung eine Schnittstelle zuweisen. Du hast es auf 00 gesetzt.

Sie zeigen:

Comm Class Call Management Functional Descriptor
Raw Descriptor (hex) 0000: 05 24 01 01 00

Das fehlt und Zuordnung. Mit den ATMEL USB-Bibliotheken würde es so aussehen:

%Vor%     
b degnan 13.02.2013 22:55
quelle

Tags und Links