2011-09-16 19 views
32

Necesito un pequeño consejo para el desarrollo de un controlador PCIe personalizado. El controlador debe ser compatible con Windows CE 6.0 y Windows Desktop (xp, 7 y 8 cuando esté listo).Controlador PCIe para Windows CE y Windows Desktop

Tenemos mucha experiencia en el desarrollo de controladores para Windows CE pero ninguno para Windows Desktop. Estoy bastante seguro de que podemos desarrollar un buen y sólido controlador de Windows CE, pero creo que no podremos hacer lo mismo con el escritorio de Windows sin ayuda externa. Creo que tenemos dos opciones:

1) Use un marco de controladores existente como Jungo WinDriver, que nos permite desarrollar el controlador una vez y compilar para multiples plataformas. Esto también tiene la ventaja de que la mayor parte del desarrollo estará en el espacio del usuario, por lo que debe simplificar el proceso de desarrollo.

2) Obtenga ayuda externa para configurar un buen controlador de escritorio de Windows donde todo el plomería está hecho y simplemente necesitamos agregar el código que se comunica con nuestra placa y exponer los IOControls relevantes. Tal vez mover tanto como sea posible del código en una biblioteca de espacio de usuario.

¿Cuáles serían los beneficios y las desventajas de cada opción? ¿Recomendarías enfoques alternativos?

+0

Allan para tener mejores oportunidades de obtener una respuesta, debería haber etiquetado también con "windows" su pregunta. Creo que tienes pocas posibilidades de obtener una respuesta solo en la sección windows-ce. También le recomiendo que eche un vistazo a Jan Axelson, libro USB Complete Fourth Edition - www.lvr.com, obtendrá buena información desde allí. Personalmente, trataría de usar WinDriver, teniendo una solución de respaldo como ayuda externa. – garzanti

+0

Gracias por la nota sobre la etiqueta "windows" y su recomendación general. Sin embargo, no veo cómo un libro sobre USB me ayudará con una decisión sobre un controlador PCI. Tengo la tercera edición del libro que recomiendas, y es lo único que recuerdo sobre el protocolo USB y muy poco sobre los controladores (se menciona WinDriver for USB, pero no más que eso). –

+0

Para mí, ayudó a ese libro. Pero, ¿a qué tipo de clase/subclase USB pertenece su dispositivo? Es un HID? que es exactamente? al menos en términos generales para tener una mejor idea. – garzanti

Respuesta

2

Como solicité hace un momento, intentaré compartir mi experiencia ahora más de un año después de haber formulado la pregunta original. Decidimos usar Windriver, pero hasta ahora solo hemos escrito un controlador para Windows CE 6.0, por lo que no puedo comentar sobre el soporte multiplataforma.

El uso de Windriver en Windows CE 6.0 tiene ventajas y desventajas. Significa que todo nuestro código de controlador se encuentra ahora en la biblioteca, por lo que ha sido más fácil de desarrollar y depurar (en comparación con un controlador estándar que requiere Platform Builder). Entonces, desde el punto de vista del desarrollo, ha sido agradable. El rendimiento también ha estado bien. Hubo algunos gastos indirectos al principio al aprender la API de Windriver y cómo usarla, especialmente con DMA e interrupciones, pero no creo que fuera peor que aprender la API PCI de Windows CE 6.0 sin procesar.

La única desventaja real que puedo pensar es que un controlador "real" es más fácil de compartir entre múltiples procesos que la biblioteca que hemos creado utilizando Windriver. En nuestra aplicación (sistema integrado con un proceso) no es realmente un problema, pero es más difícil crear utilidades de depuración/desarrollo que operen en el hardware detrás del proceso principal. Hemos utilizado ese enfoque para probar/depurar en otras plataformas, pero es un poco más complicado de hacer aquí.

Para resumir todo, creo que tomamos la decisión correcta y me alegra que tengamos la capacidad de transferir nuestro "controlador" al escritorio de Windows con (con suerte) muy poco esfuerzo cuando lo necesitamos.

1

Al haber usado Windriver para desarrollar controladores para Windows/Linux, quiero responder a esta pregunta.

Prefiero Windriver, si la aplicación que utiliza el controlador también va a ser escrita por usted. Como usted menciona que está desarrollando un controlador personalizado, asumo que también va a escribir la aplicación usted mismo. En este caso, la aplicación no necesita cambiar mucho entre Windows y Windows CE, ya que la mayoría de las funciones del controlador van a ser generadas por Windriver. Es como llamar a las funciones de biblioteca estándar en lugar de usar IOCTL, etc.

En el pasado, he utilizado windriver para generar código de interfaz de controlador básico y aplicaciones desarrolladas (principalmente aplicaciones de diagnóstico) que utiliza el código generado por el generador de viento. Con pequeñas modificaciones, pudimos usar el controlador y la aplicación entre Windows y Linux. No estoy abogando por usar Jungo, pero fue fácil de usar.

Como la pregunta se trata de pedir sugerencias, es difícil dar una respuesta exacta, solo estoy compartiendo mis comentarios.

+1

oops. ¡Me acabo de dar cuenta de que respondí una pregunta hecha hace un año! –

Cuestiones relacionadas