¿Existen recursos para aprender a escribir controladores?

26

Tengo bastante experiencia en el diseño de hardware y sistemas integrados en general, pero nunca escribí un controlador para un sistema operativo.

Me gustaría saber si hay alguna buena guía, preferiblemente en línea, aunque me interesen los buenos libros, que me darán un buen comienzo en lo que necesito saber para diseñar e implementar controladores para un sistema operativo.

Esto probablemente tendrá gente disparándome, y aunque me encantaría ver una buena guía sin importar en qué sistema operativo esté, me gustaría ver una guía basada en Windows, principalmente debido al hecho de que la mayoría de la gente que vendería un producto tendría ventanas.

Déjeme saber si hay alguna información adicional que pueda agregar para aclarar esto.

    
pregunta Kortuk

3 respuestas

10

La mayor parte de mi experiencia reciente en escribir controladores de sistemas operativos reales ha sido con Linux, y la mejor IMO de referencia es Linux Device Drivers, tercera edición de Jonathan Corbet, Alessandro Rubini y Greg Kroah-Hartman (2005), que ya ha sido mencionado Está disponible en Amazon , Safari Books On-Line , y también como descarga gratuita .

Un par de libros más sobre el mismo tema son Controladores de dispositivos Linux esenciales , por Sreekrishnan Venkateswaran (2008) ( también disponible en Safari Books Online ) y Escritura de controladores de dispositivos Linux: una guía con ejercicios (Volumen 3) del Dr. Jerry Cooperstein (2009).

Para los controladores de dispositivos de Windows, el último libro sobre el tema (publicado hace dos semanas) parece ser Controlador de dispositivo de Windows 7 , por Ronald D. Reeves, Ph.D. (2010). También está disponible en Safari Books Online .

Un libro antiguo, que cubriría Windows XP, es: Programación del Modelo de controlador de Microsoft Windows, Segunda edición , por Walter Oney (2002). También está disponible en Safari Books Online .

Otro libro, que parece estar agotado pero disponible en Safari Books Online, es Desarrollo de controladores con Windows Driver Foundation , por Penny Orwick y Guy Smith (2007). Supongo que cubriría Windows Vista.

Finalmente, Microsoft tiene punteros a muchos blogs, etc. que tratan sobre el desarrollo de controladores.

    
respondido por el tcrosley
11

Un buen controlador encapsula las capacidades del hardware y las pone a disposición del sistema operativo / aplicaciones de forma natural.

La mejor manera de hacer esto depende mucho del sistema operativo al que te dirijas y para qué tipo de hardware es el controlador.

Mi experiencia es todo con Linux y un pequeño sistema operativo personalizado en tiempo real.

Para Linux, recomiendo leer Controladores de dispositivos Linux . Es una buena introducción a los diferentes sabores de los controladores de Linux y las abstracciones que el sistema operativo les brinda.

Los dispositivos como los puertos serie en los que los datos se leen de manera secuencial, generalmente son manejados por controladores de dispositivo de caracteres con un nodo de dispositivo en el espacio de usuario para que las aplicaciones puedan leer. cat puede leer de estos.

Los dispositivos de acceso aleatorio, como el almacenamiento flash y los discos duros, se manejan mediante dispositivos de bloque. dd puede acceder a estos. Para ver un buen ejemplo, eche un vistazo al sistema Linux MTD .

Es muy probable que los controladores que se ocupan del hardware de bajo nivel con hardware deban implementarse en el espacio del kernel. Puede elegir crear un módulo de kernel que se pueda cargar en tiempo de ejecución o colocar su código de forma estática en el kernel de Linux.

Los controladores que se construyen sobre controladores genéricos existentes, como USB, pueden estar escritos en el espacio del usuario. Usando, por ejemplo, libusb .

    
respondido por el Toby Jaffey
3

No tengo ninguna experiencia en este tema, pero voy a dar mis dos centavos.

Puede comenzar aquí enlace o aquí enlace

Aquí en Brasil tenemos un buen blog sobre este tema. Está escrito en portugués e inglés. La mayoría de los artículos están en portugués desafortunadamente.

Hay una publicación en portugués sobre libros en este blog: enlace

Espero haberte ayudado un poco

    
respondido por el Daniel Grillo

Lea otras preguntas en las etiquetas