2012-06-27 13 views
27

Quiero aprender la programación del controlador del dispositivo del kernel de Linux. Entonces, ¿alguien puede publicar buenas páginas de tutoriales o enlaces aquí? Soy nuevo en el entorno Linux kernel. Lo he buscado pero no sé cómo comenzar y cuál leer para comprender los conceptos básicos. Gracias por adelantado.Programación del controlador del dispositivo del kernel de Linux

+0

Esto también ayuda un poco http://linuxseekernel.blogspot.ie/2015/08/linux-kernel-module-programming.html – Jeyaram

+0

configuración automatizada Mínimo módulo del núcleo QEMU + + Buildroot BusyBox: https: // github.com/cirosantilli/linux-kernel-module-cheat –

Respuesta

40

Depende de sus habilidades actuales. Si es realmente nuevo en Linux, quizás debería comenzar con la programación del sistema de espacio de usuario con Advanced Linux Programming. Obtendrá un buen conocimiento de las llamadas al sistema Unix y otros conceptos como señales, procesos/hilos, etc. con este recurso gratuito. Esto es imprescindible (entendiendo la API de espacio de usuario) si está desarrollando desde el punto de vista del núcleo, ya que la función de un núcleo es proporcionar servicios a los usuarios de forma segura.

De lo contrario, uno de los libros citados es Linux Device Drivers, Third Edition (LDD3). Tenga en cuenta que esta edición se escribió en el momento de Linux 2.6.10 y algunas cosas cambiaron desde entonces. This article muestra las diferencias según evolucionó 2.6 (hasta 2.6.31, es decir, no es muy útil). Debo mencionar martinezjavier/ldd3, que contiene controladores de ejemplo de LDD3 actualizados para núcleos más recientes (gracias a 42n4 para señalar eso).

Otro libro interesante que no se cita tantas veces es Essential Linux Device Drivers. No encontrarás una versión gratuita de esta, pero todavía presenta un enfoque interesante. Lo que me gusta de este es que cubre muchos tipos diferentes de dispositivos y está actualizado a partir de 2.6.24, que es un poco mejor que LDD.

Finalmente, un gran libro sobre el núcleo en sí (no específicamente para los controladores) es Understanding the Linux Kernel, 3rd Edition. Esto cubre las instalaciones de kernel en profundidad y los mecanismos internos. Está actualizado a partir de 2.6.11.

En cuanto a los tutoriales en línea, encontré this post on Pete's Blog es un gran ejemplo. No sólo se muestra cómo crear un dispositivo de caracteres (el más fácil de tipo controlador del núcleo, es decir, el que debe comenzar con), que utiliza modernas características del kernel de Linux en un formato fácil de entender la moda, incluyendo:

  • uso de udev
  • uso de una estructura de datos del núcleo (FIFO)
  • uso de la sincronización del kernel (mutex)
  • uso de Sysfs con atributos personalizados
  • opciones de módulos para insmod

Plus: está dirigido a Linux 3.0, lo que significa que es más actualizado en comparación con otros recursos.

También le puede interesar this post sobre cómo crear entradas Sysfs manualmente, aunque el modelo de dispositivo Linux se encargará de registrar su dispositivo como una entrada Sysfs si no necesita nodos o atributos adicionales.

Editar: Debo añadir que la mejor manera de aprender la programación del controlador de dispositivo real de Linux es mirar los controladores reales. Hay miles de controladores en drivers. Comience a leer y comprender el concepto de los simples como drivers/leds y verá cuán gratificante es esto.

0

mejor libro para aprender a programar controlador de dispositivo es
"LDD"

1

que podría estar interesado en la recién estrenada Linux Driver Templates. Como su nombre lo indica, proporciona plantillas y demuestra instalaciones Linux de uso frecuente para comenzar rápidamente.

+0

Oye, ¿podrías explicarme cómo pasar por LDT? – const

1

Entiendo que es una respuesta tardía !!

Puede elegir cualquier libro, esos son realmente buenos libros sugeridos anteriormente.

Pero realmente tiene que trabajar prácticamente. Intenta involucrarte en Kernel tanto como sea posible.

En su mayoría, debe buscar en el código fuente del núcleo.

Y el documento más interesante que puede encontrar en la carpeta Documentación en Kernel tree.

0

Professional Linux Kernel Architecture es una buena lectura también.

8
+0

+1, aunque tenga en cuenta que las preguntas antiguas de este tipo son, según las directrices modernas de desbordamiento de pila, fuera del tema, ya que se considera demasiado amplio. – halfer

0

La mejor fuente son las páginas del manual de Linux, pero son un tanto fundamentales para los principiantes, la programación directa de los controladores del dispositivo no es una tarea fácil. Le recomiendo que vaya a través de punteros y estructuras a través de los libros siguientes

básicos C Libros 1. Programación C - Byron Gottfried 2. El lenguaje de programación C - Dennis Ritchie

Intermedio Libros 1. Punteros en C Kenneth Olor 2.Programación Profunda C Secretos Profundos - Linden

Llegando al dispositivo Controladores He cargado la documentación de Kernel Source en formato pdf https://drive.google.com/folderview?id=0B7iRyndFhHldR3hjOHpOZTdKTjA&usp=sharing Puede descargar desde este enlace.

controladores de dispositivos Conceptos básicos (Programación del modo de usuario)

la interfaz de programación de Linux - Michael Kerrisk A partir de Programación Linux Wrox Editores controladores de dispositivos (Kernel) Deleopment 1. Desarrollo del Kernel de Linux - Robert Amor 2. Linux Kernel Internals - m Beck

controladores de dispositivos (Programación del controlador) 1. Linux Device Drivers - Tercera Edición (Descargar gratis está disponible para 2.6 Kernel) 2. Esenciales Linux Device Drivers - Venkateswaran

para el conductor conocimientos básicos Fol low this site http://www.tldp.org/LDP/khg/HyperNews/get/devices/devices.html

Mi experiencia es Primero que nada debemos obtener un buen conocimiento de la programación C, principalmente Estructuras y Punteros antes de pasar por la Programación de Conductores; de lo contrario será un poco engorroso comprender la programación del controlador.

comming y puesta en marcha: -

  1. espacio de usuario de programación fundamentos de la generación de gcc proprocessed, ensamblador y archivos de objetos utilizando los comandos del CCG de análisis de archivos de objetos utilizando diferentes herramientas de objetos, programación básica en Linux, hilos (cerraduras , técnicas de sincronización), señales, procesos (fork, exec), temporizadores (Posix). Esto te ayudará mucho a comprender los conceptos del kernel.

  2. Kernel Programming Comprender el árbol de código fuente del kernel, las diferentes ramas y su importancia, usar ctags y cscope para navegar por el código fuente del kernel, esto lo ayudará en la búsqueda de fuentes del kernel.

  3. controlador de programación En primer lugar, conocer distintas clases de conducir, carbón, etc. bloque, Siguiente protocolos del dispositivo, la transmisión y la recepción, el manual del producto es la mejor fuente para pasar por esto. Luego, comience a escribir el controlador de carga simple, por ejemplo, RTC (un dispositivo mapeado por puerto), IOAPIC (un dispositivo de memoria mapeada), luego vaya a USB, PCI, Red, I2C, SPI, etc., si desea la ayuda puede encontrar el código de esqueleto para todo esto en el árbol fuente del kernel.

Cuestiones relacionadas