Cómo agregar controladores al kernel de Linux

  
 I. Descripción general:
Agregar un programa al kernel de Linux requiere las siguientes tres tareas:
1. Copie el código fuente al directorio correspondiente del código fuente del kernel de Linux
2. En el archivo Kconfig del directorio Agregue la opción de configuración de compilación para el nuevo código correspondiente al proyecto correspondiente.
3. Agregue la entrada de compilación para el nuevo código fuente en el Makefile del directorio
2.Instance
1. Primero asigne el código del controlador usbtmc (carpeta) Vaya a /usr/src/linux2.6.32/drivers/char
Primero debe saber dónde debe estar su módulo en el árbol de fuentes del núcleo.
1> El controlador del dispositivo se almacena en el subdirectorio del controlador /subdirectorio del árbol de fuentes del núcleo. Dentro de él, los archivos del controlador del dispositivo se organizan de manera ordenada según la categoría y el tipo.
a. Los dispositivos de caracteres existen en el directorio drivers /char /

b. Los dispositivos de bloque se almacenan en el directorio drivers /block /
Los dispositivos c.USB se almacenan en el directorio drivers /usb /.
Nota:
(1) Las reglas de organización de archivos aquí no son absolutamente iguales. Por ejemplo, los dispositivos USB también son dispositivos de caracteres y también se pueden almacenar en el directorio drivers /usb /.
(2) Por ejemplo, almacenamos el controlador usbtmc en el directorio drivers /char /, luego debe tener en cuenta que hay una gran cantidad de archivos fuente C y muchos otros directorios en el directorio. Todos los controladores de dispositivo para solo uno o dos archivos de origen se pueden colocar directamente en este directorio, pero si el controlador contiene muchos archivos de origen y otros archivos auxiliares, puede crear un nuevo subdirectorio.
Aquí, colocamos el directorio usbtmc debajo del directorio drivers /char
2. Modifique Kconfig y Makefile debajo del directorio char <1> (1) Modifique Kconfig
sudo gedit Kconfig Agregue la siguiente oración
source " drivers /char /usbtmc /Kconfig " Significa que Kconfig en el directorio usbtmc está montado en Kconfig en el directorio char (para que el archivo Kconfig de esta capa funcione, necesitamos modificar el archivo Kconfig del directorio principal). , únase a la declaración de origen)
1> Para el controlador, Kconfig generalmente está en el mismo directorio que el código fuente.
2 > Si creas un nuevo directorio y quieres que el archivo Kconfig exista en ese directorio, debes importarlo en un archivo Kconfig existente, debes usar la instrucción
anterior Montado en Kconfig en el directorio drivers /char.
(2) Modificar Makefile
Agregar una oración:
obj - $ (CONFIG_USBTMC) + = usbtmc /Esta línea de instrucciones de compilación le dice al sistema de compilación del módulo que ingrese al subdirectorio usbtmc /al compilar el módulo. La compilación del controlador en este momento depende de una configuración especial CONFIG_USBTMC opción de configuración.
3. Ahora agregue Kconfig y Makefile en nuestra propia carpeta de controladores <1> (1) Modificar Kconfig
Cree un nuevo Kconfig Agregue las siguientes palabras menú " USBTMC " comentario " USBTMC Driver " config USBTMCtristate " USBTMC " defaultnhelpSi dice S aquí, el soporte para usbtmc con interfaz de computadora se compilará en el kernel y será accesible a través del nodo del dispositivo. También puede decir que M y el controlador de disco se construirá como un módulo llamado usbtmc.ko.Ifunsure, say N Después de que .endmenu esté correctamente configurado, después de ejecutar sudo make menuconfig bajo el código fuente, seleccione el dispositivo de caracteres en Controladores de dispositivo en la interfaz gráfica de la Configuración del Kernel de Linux, y verá el menú USBTCM recién agregado,
(2 Modificar Makefile
Crear un nuevo Makefile, agregar las siguientes palabras
obj - $ (CONFIG_USBTMC) + = usbtmc.o En este punto, el sistema de compilación se ejecutará en el directorio usbtmc /y compilar usbtmc.c en usbtmc .ko módulo
Nota:
Si puede haber más de un archivo de origen de controlador, puede modificar el Makefile de la siguiente manera:
obj - $ (CO NFIG_USBTMC) + = usbtmc.ousbtmc-objs: = usbtmc-main.o usbtmc-usb1.o En este punto, usbtmc-main.c y usbtmc-usb1.c están compilados y conectados a un bloque de usbtmc.ko.
4. Ahora bien, ahora podemos ingresar al directorio del kernel de Linux a través de menuconfig para encontrar nuestra opción USBTMC (USBTMC se puede encontrar en los dispositivos de caracteres en Device_Drivers) para seleccionarlo. Luego salga, compile el kernel, y listo.
5. Eliminar:
Eliminar también es muy simple, primero elimine su propia carpeta de controladores en el directorio drivers /char. En segundo lugar, elimine los elementos agregados antes de Makefile y Kconfig, y listo.


Copyright © Conocimiento de Windows All Rights Reserved