2012-06-03 28 views
6

Tengo que simular un dispositivo USB para fines de automatización y prueba (en Linux). El controlador/aplicación original para este dispositivo usa "libusb" para comunicarse con él.Simular un dispositivo USB para automatización

No tengo mucha experiencia en Linux y Simulación, después de algunas búsquedas, he entendido que necesito escribir un controlador de nivel de kernel y una aplicación en el espacio de usuario para simular ese dispositivo. ¿Es esto correcto? Si es así, ¿cómo puede hacerse esto?

Gracias de antemano.

+0

Otra opción podría ser utilizar el software de virtualización con soporte USB (como VirtualBox o Qemu) y escribir un complemento para el que emula el dispositivo USB para el sistema invitado. (esto podría ser más fácil) – pmdj

Respuesta

2

Finalmente implementado mediante la modificación "libusb", lo modificó para enviar y recibir transferencias USB de cola de mensajes en lugar de usbfs. Programé mi simulador para crear transferencias de tipo libsub y enviarlas/recibirlas usando colas de mensajes también.

Simulator ahora interpreta las transferencias entrantes y las envía a un analizador de comandos, que envía solicitudes/mensajes al sistema de automatización utilizando sockets en un formato específico. El sistema de automatización envía sus instrucciones enviando al analizador de comandos utilizando el socket. Este socket invoca un método específico para cada solicitud en el simulador, Now simulator forma una estructura de transferencia apropiada y pasa al complemento del dispositivo (a través de libusb) a través de la cola de mensajes.

+4

Me encantaría que compartiera el código para esto, creo que lo encontraré útil. –

0

Creo que lo que estás buscando se llamaría un dispositivo USB virtual. Actualmente no hay nada en Kernel estándar. Algunas máquinas virtuales proporcionan emulación USB.e.g. KVM proporciona emulación USB. Hay un marco gadget en el que podría buscar su solución. O encontrar algo en Linux USB project

Gracias, Abhijeet

+0

Gracias por su sugerencia, busqué la API del gadget antes de publicar esta pregunta. Estaba teniendo dificultades para implementarlo. –

+0

@ gaurav-agrawal, ¿podría compartir algún enlace o código fuente de ejemplo para esta pregunta? –

0

El proyecto usb-vhci podría ser útil si desea que el dispositivo se presente al kernel de la misma manera que el hardware real.

Cuestiones relacionadas