Tengo una buena cantidad de experiencia diseñando hardware y sistemas integrados en general, pero nunca he escrito un controlador para un sistema operativo.
Me gustaría saber si hay buenas guías, preferiblemente en línea, aunque me interesarían buenos libros, que me darán un buen comienzo sobre lo que necesito saber para diseñar e implementar controladores para un sistema operativo.
Esto probablemente hará que la gente me dispare, y aunque me encantaría ver una buena guía sin importar en qué sistema operativo esté basada, me gustaría ver una guía que esté basada en Windows, principalmente debido al hecho de que la mayoría de las personas Vendería un producto que tendría ventanas.
Avíseme si hay información adicional que pueda agregar para aclarar esto.
Respuestas:
La mayor parte de mi experiencia reciente en la escritura de controladores de sistema operativo reales ha sido con Linux, y la mejor referencia de IMO es Linux Device Drivers, 3rd Edition de Jonathan Corbet, Alessandro Rubini y Greg Kroah-Hartman (2005), que ya se ha 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 Essential Linux Device Drivers , de Sreekrishnan Venkateswaran (2008) (también disponible en Safari Books Online ) y Writing Linux Device Drivers: 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 el Controlador de dispositivos de Windows 7 , de 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 , de Walter Oney (2002). También está disponible en Safari Books Online .
Otro libro, que parece estar agotado pero disponible en Safari Books Online, es Desarrollando controladores con Windows Driver Foundation , de Penny Orwick y Guy Smith (2007). Supongo que cubriría Windows Vista.
Finalmente, Microsoft tiene punteros a muchos blogs, etc., sobre el desarrollo de controladores.
fuente
Un buen controlador encapsula las capacidades del hardware y las pone a disposición del SO / aplicaciones de forma natural.
La mejor forma de hacerlo depende en gran medida del sistema operativo al que se dirige y para qué tipo de hardware es el controlador.
Mi experiencia es todo con Linux y OSen personalizado en tiempo real.
Para Linux, recomendaría leer los controladores de dispositivo de Linux . Es una buena introducción a los diferentes sabores de los controladores de Linux y las abstracciones que el sistema operativo les proporciona.
Los dispositivos como los puertos serie donde los datos se leen secuencialmente generalmente son manejados por controladores de dispositivos de caracteres con un nodo de dispositivo en el espacio de usuario para que las aplicaciones lean.
cat
Puede leer de estos.Los dispositivos de acceso aleatorio como el almacenamiento flash y los discos duros son manejados por dispositivos de bloque.
dd
puede acceder a estos. Para un buen ejemplo, eche un vistazo al sistema Linux MTD .Los controladores que juegan con el hardware a bajo nivel casi seguramente necesitarán implementarse en el espacio del kernel. Puede optar por crear un módulo de kernel que se pueda cargar en tiempo de ejecución o colocar su código estáticamente en el kernel de Linux.
Los controladores que se basan en controladores genéricos existentes, como USB, pueden escribirse en el espacio de usuario. Usando, por ejemplo, libusb .
fuente
No tengo ninguna experiencia en este tema, pero voy a dar mis dos centavos.
Puede comenzar aquí http://www.osr.com/index.html o aquí https://www.osronline.com/index.cfm
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: http://translate.google.com.br/translate?hl=pt-BR&ie=UTF-8&sl=pt&tl=en&u=http://driverentry.com.br/ blog /% 3Fp% 3D825 & twu = 1
Espero haber ayudado un poco
fuente