Controlador PCIe para Windows CE y Windows Desktop


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).

Tenemos mucha experiencia desarrollando 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 para el escritorio de Windows sin alguna ayuda externa. Creo que tenemos dos opciones:

1) Utilice un framework de controladores como Jungo WinDriver, que nos permite desarrollar el controlador una vez y compilar para múltiples plataformas. Esto también tiene la ventaja de que la mayor parte del desarrollo será en el espacio del usuario, por lo que debería simplificar el proceso de desarrollo.

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

¿cuáles serían los beneficios y desventajas de cada opción? ¿Recomendaría enfoques alternativos?

Author: Gilles, 2011-09-16

2 answers

Como solicité hace poco, intentaré compartir mi experiencia ahora más de un año después de haber hecho 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.

Usar Windriver en Windows CE 6.0 tiene tanto ventajas como desventajas. Significa que todo nuestro código de controlador está 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 Constructor de plataforma). Así que desde el punto de vista del desarrollo ha sido agradable. El rendimiento también ha estado bien. Hubo cierta sobrecarga al principio aprendiendo la API Windriver y cómo usarla, especialmente con DMA e interrupciones, pero no creo que fuera peor que aprender la API PCI raw de Windows CE 6.0.

La única desventaja real en la 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 usando Windriver. En nuestro aplicación (sistema embebido 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 de la parte posterior 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 estoy feliz de que tenemos la capacidad de portar nuestro "controlador" al escritorio de Windows con (esperemos) muy poco esfuerzo cuando lo necesito.

 2
Author: Allan Larsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-22 19:44:16

Habiendo utilizado Windriver para desarrollar controladores para Windows/Linux, quiero responder a esta pregunta.

Prefiero Windriver, si la aplicación que usa el controlador también va a ser escrita por usted. Ya que mencionas que estás desarrollando un controlador personalizado, asumo que vas a escribir la aplicación también por ti 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 serán generadas por el propio Windriver. Es como llamar a funciones de biblioteca estándar en lugar de usar IOCTLs, etc.

En el pasado, he utilizado windriver para generar código básico de interfaz de controlador, y desarrollado aplicaciones (Principalmente aplicaciones de diagnóstico) que utiliza el código generado por windriver. Con pocas modificaciones, pudimos usar el controlador y la aplicación entre windows y linux. No estoy abogando por usar Jungo, pero era fácil de usar.

Dado que la pregunta es acerca de pedir sugerencias, es difícil de dar una respuesta exacta, solo estoy compartiendo mis comentarios.

 1
Author: Durairaj Packirisamy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-12 23:16:43