Cómo compilar su propio controlador en el kernel o módulo
La descripción anterior muestra que Kconfig es el menú de configuración correspondiente al kernel. Si desea agregar un nuevo controlador al código fuente del kernel, puede modificar Kconfig para agregar un menú de configuración para nuestro controlador, de modo que tenga una forma de seleccionar nuestro controlador, si desea compilar el controlador, debe modificar el Makefile en el directorio donde se encuentra el controlador.
Por lo tanto, para agregar un nuevo controlador, generalmente necesita modificar dos tipos de archivos (tenga en cuenta que hay más de dos tipos)
*Kconfig
*Makefile
p>Para saber cómo modificar estos dos archivos, necesita comprender la estructura de sintaxis de estos dos archivos.
Primero: Kconfig
Cada elemento del menú se identifica mediante una palabra clave, la más común es config.
Sintaxis:
símbolo de configuración
opciones
lt;! --[if !supportLineBreakNewLine]--gt;
lt;! --[endif]--gt;
El símbolo es un nuevo elemento de menú, y las opciones son los atributos y opciones bajo este nuevo elemento de menú
La parte de opciones incluye:
1. Definición de tipo:
Cada elemento del menú de configuración debe tener una definición de tipo, bool: tipo booleano. trieste: incorporado, módulo, eliminar, cadena: cadena, hex: hexadecimal, entero: entero
Por ejemplo, configure HELLO_MODULE
bool "hola módulo de prueba"
p>el tipo bool solo se puede seleccionar o deseleccionar. Hay más opciones para compilar como módulo de kernel en el elemento del menú de tipo triestado. Si elige compilar como módulo de kernel, la configuración CONFIG_HELLO_MODULE=m se generará en el archivo .config. kernel, estará en .config. Generar configuración CONFIG_HELLO_MODULE=y también generará configuración HELLO_MODULE=y en .config.
1.
2. La definición de dependencia depende o requiere
Si la apariencia de este menú depende de otra definición
config HELLO_MODULE
bool "hello test module"
Depende de ARCH_ PXA
Este ejemplo muestra que el elemento de menú HELLO_MODULE solo está disponible para procesadores XScale, es decir, solo cuando se selecciona ARCH_PXA Solo visible (configurable).
3. Definición de ayuda
Simplemente use la palabra clave help o --help para agregar ayuda--
lt;! --[if !supportLineBreakNewLine]--gt;
lt;!--[endif]--gt;
Para obtener una sintaxis de Kconfigconfig más detallada, consulte:
Segundo: Kernel Makefile
El kernel Makefile se divide en cinco partes:
Makefile El Makefile más avanzado
.p>.config El archivo de configuración actual para el kernel, que se convierte en parte del Makefile de nivel superior en el momento de la compilación
arch/$(ARCH)/Makefile Makefile específico de la arquitectura
s/ Makefile. * Algunas reglas generales sobre Makefile
kbuild Makefile es una colección de aproximadamente 500 archivos, que se encuentran en directorios en diferentes niveles de acuerdo con las definiciones de macros y otras reglas de compilación transmitidas desde el Makefile superior, el código fuente. se compila en módulos o núcleos.
El Makefile de nivel superior lee el contenido del archivo .config y generalmente es responsable de construir el kernel y los módulos, mientras que Arch Makefile proporciona información adicional relacionada con la arquitectura. El archivo Makefile en el directorio s contiene las definiciones y reglas necesarias para construir el kernel de acuerdo con el kbuild Makefile.
(El contenido en .config es el resultado de configurar el documento Kconfig durante el proceso make menuconfig)
La descripción detallada del Makefile del kernel se puede encontrar en linux2.6. x/Documentation/kbuild directorio encontrado en.
Finalmente, un ejemplo:
Supongamos que desea cargar un controlador flash que escribió en su proyecto y puede seleccionarlo al configurar el kernel a través de menuconfig, ¿qué debe hacer? Se puede hacer en tres pasos:
Paso uno: agregue el archivo flashtest.c que escribió al directorio /driver/mtd/maps/.
Segundo: Modifique el archivo kconfig en el directorio /driver/mtd/maps:
config MTD_flashtest
tristate "ap71 flash"
De esta manera aparecerá la opción de flash ap71 al realizar menuconfig.
Tercero: Modificar el documento makefile en este directorio.
Agrega lo siguiente: obj-$(CONFIG_MTD_flashtest) = flashtest.o
De esta manera, cuando ejecutes make menucofnig, encontrarás la opción flash ap71 si la seleccionaste. Esta selección se guardará en el archivo .config. Al compilar el kernel, leerá el archivo .config, y cuando se encuentre que la opción flash ap71 es sí, el sistema agregará flashtest.o al kernel al llamar al archivo MAKE en /driver/mtd/maps/. Esto cumplirá su propósito.
Imprimir