2012-06-03 12 views
6

Ich muss ein USB-Gerät zu Automatisierungs- und Testzwecken (in Linux) simulieren. Original Treiber/Anwendung für dieses Gerät verwendet "libusb", um mit ihm zu kommunizieren.Simulieren Sie ein USB-Gerät für die Automatisierung

Ich habe nicht viel Erfahrung in Linux und Simulation, nach einigem Suchen habe ich verstanden, dass ich einen Kernel-Level-Treiber und eine Anwendung in User-Space schreiben muss, um dieses Gerät zu simulieren. Ist das richtig? Wenn ja, wie kann dies getan werden?

Vielen Dank im Voraus.

+0

Eine weitere Möglichkeit wäre, eine Virtualisierungssoftware mit USB-Unterstützung (wie VirtualBox oder Qemu) zu verwenden und ein Plugin für das zu schreiben, das das USB-Gerät für das Gastsystem emuliert. (Dies könnte einfacher sein) – pmdj

Antwort

2

implementiert es schließlich durch „libusb“, modifiziert sie modifizieren USB-Übertragungen von Nachrichtenwarteschlange statt usbfs zu senden und zu empfangen. Programmierte meinen Simulator, um Transfers vom Typ libsub zu erstellen und sie auch über Message Queues zu senden/zu empfangen.

Der Simulator interpretiert jetzt die eingehenden Übertragungen und sendet sie an einen Befehlsparser, der eine Anforderung/Nachricht an das Automatisierungssystem sendet, indem Sockets in einem bestimmten Format verwendet werden. Das Automatisierungssystem sendet seine Anweisung durch Senden an den Befehlsparser unter Verwendung von Socket. Dieser Socket ruft eine Methode auf, die für jede Anfrage im Simulator spezifisch ist. Der Simulator bildet nun eine geeignete Übertragungsstruktur und wird über die Nachrichtenwarteschlange an das Geräte-Plugin (via libusb) übergeben.

+4

Würde es lieben, wenn Sie den Code dafür teilen, ich denke, dass ich das nützlich finden werde. –

0

Ich denke, was Sie suchen, würde ein virtuelles USB-Gerät genannt werden. Momentan gibt es im Standard-Kernel nichts. Einige virtuelle Maschinen stellen USB-Emulationen zur Verfügung. KVM bietet USB-Emulation. Es gibt Framework gadget in dem Sie nach Ihrer Lösung suchen können. Oder etwas in Linux USB project

Dank finden, Abhijeet

+0

Vielen Dank für Ihren Vorschlag, sah Gadget API vor dem Posten dieser Frage. Hatte Schwierigkeiten bei der Umsetzung. –

+0

@ gaurav-agrawal, Könnten Sie bitte einen Link oder Beispiel-Quellcode für diese Frage teilen? –

0

Das Projekt usb-vhci könnte nützlich sein, wenn Sie möchten, dass das Gerät dem Kernel auf die gleiche Weise wie echte Hardware präsentiert wird.