27 votos

¿Existen recursos para aprender a escribir conductores?

Tengo una cantidad decente de experiencia en el diseño de hardware y sistemas embebidos en general, pero nunca he escrito un controlador para un sistema operativo.

Me gustaría saber si hay alguna buena guía, preferiblemente online, aunque me interesaría algún buen libro, que me permita empezar bien lo que necesito saber para diseñar e implementar drivers para un sistema operativo.

Esto probablemente hará que la gente me dispare, y aunque me encantaría ver una buena guía sin importar el sistema operativo en el que esté basada, me gustaría ver una guía basada en Windows, sobre todo por el hecho de que la mayoría de la gente a la que vendería un producto tendría Windows.

Por favor, dígame si hay alguna información adicional que pueda añadir para que esto quede más claro.

11voto

letronje Puntos 128

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

La mejor manera de hacerlo depende en gran medida del sistema operativo al que te dirijas y del tipo de hardware para el que esté destinado el controlador.

Mi experiencia es toda con Linux y pequeños OSen personalizados en tiempo real.

Para Linux, recomiendo la lectura de Controladores de dispositivos de Linux . Es una buena introducción a los diferentes sabores de los controladores de Linux y las abstracciones que el sistema operativo proporciona para ellos.

Los dispositivos, como los puertos serie, en los que los datos se leen de forma secuencial, suelen ser manejados por controladores de dispositivos de caracteres con un nodo de dispositivo en el espacio de usuario para que las aplicaciones lo lean. cat puede leer de estos.

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

Los controladores que manipulan el hardware a bajo nivel necesitarán, casi con toda seguridad, ser implementados en el espacio del kernel. Puedes elegir hacer un módulo del kernel cargable en tiempo de ejecución o colocar tu código de forma estática en el kernel de linux.

Los controladores que se basan en los controladores genéricos existentes, como el USB, pueden escribirse en el espacio de usuario. Utilizando, por ejemplo, libusb .

10voto

Matt McMinn Puntos 6067

La mayor parte de mi experiencia reciente en la escritura de controladores de sistemas operativos reales ha sido con Linux, y la mejor referencia IMO es Linux Device Drivers, 3rd Edition por 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 esenciales de Linux de Sreekrishnan Venkateswaran (2008) (también disponible en Libros de Safari en línea ) y Escribir 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 dispositivos de Windows 7 de Ronald D. Reeves, Ph.D. (2010). También está disponible en Libros de Safari en línea .

Un libro más antiguo, que cubriría Windows XP, es: Programación del modelo de controladores de Microsoft Windows, segunda edición de Walter Oney (2002). También está disponible en Libros de Safari en línea .

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

Por último, Microsoft tiene punteros a un montón de blogs, etc. debatir sobre el desarrollo de los conductores.

3voto

John Puntos 453

No tengo ninguna experiencia en este tema, pero voy a dar mi opinión.

Puede empezar 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. Por desgracia, la mayoría de los artículos están en portugués.

Hay una entrada 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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X