universales - ¿Cómo debería comenzar a escribir controladores de dispositivos?
drivers motorola moto g4 (4)
Me gustaría aprender a escribir controladores de dispositivo porque creo que sería divertido. Uso una Macbook Mac OS X, pero también tengo una máquina Ubuntu (ejecutándose en Mac Min). Estoy bastante familiarizado con C y actualmente estoy leyendo este libro . He encontrado algunos enlaces en línea, como Mac Dev Center . Estoy haciendo esto porque sería divertido. Creo que sería una gran satisfacción ver que el hardware funciona por el software que escribí.
Supongo que lo que me gustaría es algunos consejos o consejos, y ¿alguien sabe de una lista de dispositivos que no tienen controladores o puedo escribir un controlador para algo que ya está soportado (preferiría el anterior así que estoy realmente proporcionando valor). ¿Cuál es un buen dispositivo para comenzar? ¿Estoy mordiendo más de lo que puedo masticar? No le temo a la programación o montaje de bajo nivel ni a la cantidad de esfuerzo que se requiera. ¡Me gustaría un desafío realmente!
Escribir un controlador de dispositivo puede ser bastante simple o puede ser casi arbitrariamente complicado. Por ejemplo, he estado involucrado en un proyecto en el que a seis de nosotros nos tomó casi tres años resolver UN error en un controlador de dispositivo. Por supuesto, limpiamos docenas de otros errores mientras lo buscábamos ... el código mejoró inmensamente. La solución resultó ser un parche de ocho líneas, que costó, de manera conservadora, alrededor de un millón de dólares.
Pero, como un proyecto paralelo a eso, escribí un controlador de Ethernet de la hoja de datos del chip en una semana y tardé otra semana en depurarlo. No he necesitado tocarlo desde entonces.
No hay manera de decir, en general, cuánto trabajará un conductor; un controlador de GPU podría costar cientos de millones, un controlador para un solo LED cuesta un par de horas de trabajo como máximo.
Para Linux, puede buscar el libro O''Reilly Linux Device Drivers o leer PDFs línea. En mi opinión, es uno de los mejores textos sobre el tema.
La Guía de programación de módulos Kernel de Linux es otro buen recurso.
También es posible que desee recoger un libro específicamente en el kernel de Linux. Recolecté una copia de Linux Kernel Development (2nd Edition) de Robert Love para este propósito ( 3ra Edición en el camino).
Para Mac, es posible que desee echar un vistazo al libro de Mac OS X Internals . Es pesado y pensativo, pero divertido de leer. Se trata principalmente de computadoras Mac basadas en PowerPC, pero tiene un apéndice sobre las basadas en Intel. Para Linux, eche un vistazo a PDFs : es más ligero (PDF gratuitos en línea :) y está realmente orientado al controlador de dispositivo, podría ser un mejor comienzo.
Si desea utilizar el desarrollo de controladores de dispositivos Linux, debe leer obligatoriamente el libro de O''Reilly PDFs , de libre disposición.
Para encontrar piezas de hardware no compatibles para las que podría escribir un controlador, pregunte en las listas de correo de Linux . Tal vez algún dispositivo USB 3.0? ;)