2010-04-21 22 views
21

Recientemente, comencé a desarrollar un controlador de un dispositivo integrado ejecutando linux.Nuevo en el desarrollo del kernel/controlador de Linux

Hasta ahora solo tengo , lea sobre linux internals.
Al no tener experiencia previa en desarrollo de controladores, me resulta un poco difícil encontrar mi primer paso.

  • He descargado el código fuente del kernel (v2.6.32).
  • He leído (escapado) Controladores de dispositivos Linux (3e)
  • He leído algunos mensajes relacionados aquí en StackOverflow.
  • Entiendo que Linux tiene un enfoque "monolítico".
  • He compilado kernel (incluido el controlador existente en menuconfig etc.)
  • Conozco los conceptos básicos de los archivos kconfig y makefile, así que eso no debería ser un problema.

Puede alguien describir la estructura (es decir, las interrelaciones enlaces)
de los diversos directorios en el código del kernel-source.

En otras palabras, dado un archivo de código fuente, los cuales
otros archivos tendrían que consultar para obtener el código relacionado

(Los -s "# include" proporcionan una idea parcial)

¿Podría alguien ayudarme a obtener una mejor idea?
Cualquier ayuda será muy apreciada

Gracias.

+0

Esto debería aclararlo. http://www.youtube.com/watch?v=ENNKtfR2PYc –

+0

Escriba un módulo simple Hello World para el kernel. Luego, una vez que comprenda el Hello World Kernel Module , escriba http://www.freesoftwaremagazine.com/articles/drivers_linux y pruébelo.Siga el enlace de arriba hasta que no lo comprenda. y también leí dos de mis publicaciones aquí http://mail.nl.linux.org/kernelnewbies/2010-09/ Luché literalmente en el foro para entender cómo funciona esto. Así que tienes que hacer lo mismo. Independientemente de lo que alguien diga luchar hasta que no entiendas. La mejor manera de aprender es retomar un proyecto y comenzar a trabajar al final obtendrás mucho. Por ejemplo, decide arreglar un –

+0

error para un controlador inalámbrico en kernel. Sé que en este momento parece weired pero persígalo hasta que lo hagas. Al final de ti podrás hacerlo. –

Respuesta

18

Dado un archivo C, debe observar las funciones que llama y las estructuras de datos que utiliza, en lugar de preocuparse por archivos en particular.

Hay dos rutas básicas para el desarrollo de su propio controlador de dispositivo:

  • Tome un controlador que es similar a la suya; quite el código que no se aplica a su dispositivo y complete un nuevo código para su dispositivo.
  • Comience con las piezas más básicas de un controlador de dispositivo y agregue piezas poco a poco hasta que el dispositivo comience a funcionar.

Los archivos que componen su controlador tendrán más sentido a medida que complete este proceso. Tenga en cuenta lo que pertenece a cada archivo, pero hasta cierto punto, dividir un controlador entre los archivos es más un arte que una ciencia. Los controladores más pequeños a menudo caben en solo uno o dos archivos.

Un poco de diseño también puede ser bueno. Considere lo que hace su dispositivo y lo que su conductor tendrá que hacer. En función de eso, debería poder mapear qué funciones necesitará tener un controlador de dispositivo.

También creo que Linux Device Drivers, Third Edition puede ayudarlo a seguir su camino hacia el desarrollo de controladores.

Los propios archivos de Linux incluyen archivos basados ​​en lo que hacen, en qué capa están y a qué capa acceden de la pila de llamadas. The Big Picture realmente informa cómo cada archivo está relacionado con el siguiente.

+0

+1 en el controlador del dispositivo Linux recomendación – ctuffli

+0

Gracias por la recomendación. pasará a través del libro cuidadosamente esta noche. ¿¿Qué más?? ¿Un tutorial práctico para cualquiera? ... – TheCodeArtist

+1

Un verdadero experto necesita más de unas pocas páginas para recorrer el kernel ... además de eso, muchas partes del núcleo cambian rápidamente, por lo que no tiene datos una vez que está escrito . Su mejor apuesta es leer y comprender los subsistemas que le interesan. – WhirlWind

7

Tuve que arreglar un controlador kernel una vez. Mi mayor consejo (si usas vim) es configurarlo con ctags para que puedas saltar alrededor de la fuente del kernel con ctrl-] cada vez que veas una función que no comprendes.

+2

... estado haciendo esto desde hace un tiempo! Y es realmente útil de verdad! – TheCodeArtist

+0

@frankster - gran consejo gracias – artm

Cuestiones relacionadas