Red de conocimiento informático - Material del sitio web - Cómo agregar su propio controlador de dispositivo en Linux integrado

Cómo agregar su propio controlador de dispositivo en Linux integrado

Hay dos métodos de compilación para los controladores de Linux: uno se compila estáticamente en el kernel y el otro se compila en un módulo para carga dinámica. Dado que uClinux no admite la carga dinámica de módulos y LINUX integrado no puede usar insmod/rmmod para cargar/descargar controladores de dispositivos con tanta flexibilidad como el LINUX de escritorio, aquí solo presentamos el método de compilación estática de controladores de dispositivos en el kernel de uClinux.

Tomando UCLINUX como ejemplo, introduciremos una serie de pasos para compilar el controlador test.c en el kernel de acuerdo con el controlador test.c en forma de módulo:

(1) Modificar el código fuente de test.c

(2) Compile test.c en el kernel. código fuente c

El primer paso es cambiar el original:

#include

#include

char kernel_version[]=UTS_RELEASE

Cambiar a

#ifdef MODULE

#include

#include

char kernel_version[]= UTS_RELEASE ;

#else

#define MOD_INC_USE_COUNT

#define MOD_DEC_USE_COUNT

#endif

El segundo paso , Nueva función int init_test(void)

Escriba el registro del dispositivo aquí:

result=register_chrdev(254, "test", amp; test_fops

( 2) Copie test.c al directorio /uclinux/config. c Copie al directorio /uclinux/linux/drivers/char. Y agregue el siguiente código en la función int chr_dev_init() en el archivo mem.c. Agregue el siguiente código a la función int chr_dev_init() en c:

#ifdef CONFIG_TESTDRIVE

init_test();

#endif

(3) Agregue el siguiente código al Makefile en el directorio /uclinux/linux/drivers/char:

ifeq($(CONFIG_TESTDRIVE),y)

L_OBJS =test. o

Endif

( 4) Agregue el siguiente código en la sección del dispositivo de caracteres en la carpeta /uclinux/config.

Agregue el siguiente código a la sección de dispositivo de caracteres en:

bool 'support for testdrive' CONFIG_TESTDRIVE y

(5) Ejecute make menuconfig (puede verlo en la opción de dispositivo de caracteres de menuconfig La opción "soporte para testdrive" que acabamos de agregar, ya está marcada); make dep; make linux.text; make linux.data;

(6) Cree un dispositivo en el directorio /uclinux/romdisk/romdisk/dev/:

mknod test c 254 0

y ejecute make en /uclinux/appsrc/ Genere un nuevo archivo Romdisk.s19.

En este punto, se puede decir que el trabajo de agregar controladores de dispositivos a UCLINUX se ha completado, siempre que el nuevo linux.bin contenga Romdisk