2012-10-02 11 views
5

Ich versuche, einen Linux-Treiber auf ein Gerät zu schreiben, die ich die Windows-Treiber für Konvertieren von einem Fahrer auf Linux

Ich verwende Libusb habe (ähnlich den Fall beschrieben Here, aber ein anderes Gerät)

die Kommunikation auf der Linux-Seite und SourceUSB als USB-Sniffer (auf der Windows-Maschine). Jetzt denke ich, dass ich die Steuerelemente und Bulks richtig repliziert habe, aber ich kann das Linux-Protokoll nicht wirklich gegen das Windows-Protokoll testen. Ich benutze Ubuntu 12.04 auf einer VM.

Also meine Fragen sind:

  1. Gibt es ein Multi-Plattform-Logger? Das könnte den Protokollvergleichsprozess wirklich vereinfachen.
  2. Wenn ich das USB-Gerät an die VM anschließe - ich bekomme den VM-Treiber in Windows. Schnüffeln dieses Gerät gibt mir genau das, was das Gerät sieht, richtig? Ich meine - Will ich hier schnüffeln?

EDIT: ich auf Windows meine Anwendung kompiliert haben (libusb ist Cross-Plattform - Ein großer Dank Entwickler libusb, die solche hat einen guten Job) und meine Anwendung funktioniert ordnungsgemäß.

Wenn ich den VM-Treiber beim Ausführen meiner Anwendung unter Linux schnüffeln sehe, sehe ich die Anfragen an den USB als VENDOR_DEVICE anstelle von CONTROL_TRANSFER und BULK_OR_INTERRUPT. Dies scheint das Problem zu sein, wenn ich das richtig verstehe, da dies das Gerät "sieht".

Also ich denke, mein Problem ist jetzt, warum Linux sendet meine Anfragen als Anbieter.

ANOTHER EDIT: Problem gelöst:

  1. an dem VM Treiber Zuhören gab mir die falschen Anfragen (I an den VM Treiber Verkehr zuhörte, nicht, wie ich den Verkehr der Linux-Treiber meines USB wollte,
  2. libusb ist vollkommen plattformübergreif. es dauerte ein paar Minuten, um meinen Code zu bekommen unter Windows zu kompilieren, und von dort war es ziemlich einfach zu debuggen und vergleichen Protokolle

Antwort

5

Sie Wireshark USB-Verkehr erfassen können. Diese Seite erklärt, wie man es für Linux und Wi macht ndows: CaptureSetup/USB

Verwandte Themen