2009-10-13 27 views
11

¿Cómo debo abordar la implementación de un controlador de dispositivo USB para Windows? ¿Cómo debo tomar en cuenta las diferentes versiones de Windows por ejemplo: - Windows XP - Windows Vista - Windows 7¿Cómo implementar un controlador de dispositivo USB para Windows?

¿Hay soluciones de código abierto que podrían utilizarse como punto de partida? Soy un novato total en el desarrollo de controladores de Windows.

Tenemos un dispositivo integrado con puerto de dispositivo USB y nos gustaría tener la menor comunicación de latencia posible desde el nivel de aplicación al dispositivo sin sacrificar el rendimiento de los datos. Los datos reales transferidos son datos ADC/DAC. Básicamente, hay una gran cantidad de datos que tenemos que transferir a una máquina con Windows lo más rápido posible.

Respuesta

1
+0

con novato total No me refiero a ese nivel de un novato ;-) –

+0

Lo siento, tomé novato total demasiado literalmente. La respuesta a continuación es excepcionalmente detallada para alguien de su nivel. –

12

necesitamos más información sobre el dispositivo de apuntar en la dirección correcta, pero aquí hay algunos pasos para empezar:

  • registro con Microsoft Connect para que puede descargar el Kit de controladores de Windows
  • regístrese con osr-online ya que encontrará excelentes artículos, mucha información y un grupo de noticias autorizado solo para los controladores de Windows: este lugar es una mina de oro
  • compre Developing Drivers with WDF, que le ayudará a darle sentido al desarrollo de controladores en Windows y le dará una buena base para leer artículos de OSR y Microsoft
  • Espero que pueda usar UMDF (controladores de modo de usuario) ya que puede usar C++ y solo escribe el código COM Si está haciendo algo con un USB que requiere espacio en el kernel ... ¡tendrá mucho que leer y aprender a hacer durante el próximo año!

Para responder a su pregunta sobre las versiones, el Kit de controladores tiene herramientas que lo ayudarán a administrar la creación de diferentes controladores. Si escribe un buen controlador, debería ejecutarse en los tres sistemas operativos sin problemas, y las diferencias se encontrarán en el área de configuración (no en el binario)

Básicamente, depende de qué tan complejo sea su dispositivo. ¿Qué tipo de conductor estás tratando de escribir? Sistema de archivos? ¿Reproductor de mp3? ¿Cámara? ¿Módem?

Si termina teniendo que escribir un controlador de modo kernel, hágamelo saber y le indicaré algunos buenos artículos y lo que no.

También debo agregar que por alrededor de US $ 5,000, usted puede comprar una licencia para WinDriver, una herramienta que elimina todas las cosas difíciles del desarrollo del controlador. Puede usar el código de modo de usuario C++ o C# para comunicarse con su controlador generado de forma personalizada para su dispositivo. Este es el camino a seguir si tiene un plazo ajustado.

+0

Hemos integrado el dispositivo con el puerto del dispositivo USB y nos gustaría tener una comunicación de baja latencia desde el nivel de aplicación hasta el dispositivo sin sacrificar el rendimiento de los datos. –

+0

La latencia va a depender en gran medida del controlador USB de su hardware. Si yo fuera tú, lanzaría primero un controlador UMDF (modo de usuario) de prueba y verifica si cumple con tus necesidades de latencia. Olvídese de las interfaces agradables y lo que no, simplemente implemente la funcionalidad de E/S y una aplicación de prueba Win32 para empujar y tirar de datos. Con el libro que mencioné anteriormente, usted debería poder tener un controlador básico listo en aproximadamente una semana. La ventaja de UMDF es que es bastante fácil de implementar y fácil de depurar ya que no necesita el depurador de kernel. Siempre puede ir con KMDF si UMDF no lo corta. –

1

Si tiene algún tipo de control sobre el lado del dispositivo, implemente una interfaz para la cual Windows ya proporciona controladores. P.ej. la clase USB HID (literalmente Human Input Device, pero ni Human ni Input es obligatoria) ya tiene controladores de Windows, y hay una API Win32 razonable en la parte superior. Sin embargo, no obtendrá tasas de datos cercanas a 480 Mbps.

+0

De acuerdo, implementar HID en el lado del dispositivo es la mejor manera de evitar tener que desarrollar un controlador en el lado de Windows (u otros sistemas operativos). – kenny

2

Puede echar un vistazo a las ventanas variante de libusb * here *. Hay contenedores para muchos lenguajes de programación en el sitio oficial de libusb y en la web.

+0

Tenga en cuenta que libusb-win32 está obsoleto por mucho tiempo a favor de la plataforma cruzada [libusb] (http://libusb.info/). –

Cuestiones relacionadas