
A partir de una imagen ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img.xz (https://wiki.ubuntu.com/ARM/RaspberryPi) Estoy intentando agregar el controlador I2C ad525x_dpot que no se habilitó durante la compilación del kernel.
Tomé ad525x_dpot.c
, ad525x_dpot.h
de ad525x_dpot-i2c.c
la fuente de Linux correspondiente para crear un paquete DKMS.
dkms.conf:
PACKAGE_NAME="ad525x_dpot"
PACKAGE_VERSION="0.10"
MAKE[0]="make all KVERSION=$kernelver"
CLEAN="make clean"
BUILT_MODULE_NAME[0]="ad525x_dpot"
DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"
AUTOINSTALL="yes"
Archivo Make:
obj-m := ad525x_dpot.o ad525x_dpot-i2c.o
KVERSION := $(shell uname -r)
all:
$(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
El módulo ad525x_dpot
se puede cargar modprobe
y se muestra en lsmod
pero no en /sys/bus/i2c/drivers
. Hay algunas advertencias en syslog.
ad525x_dpot: loading out-of-tree module taints kernel.
ad525x_dpot: module verification failed: signature and/or required key missing - tainting kernel
¿Por qué no aparece /sys/bus/i2c/drivers
?
Intenté cargar un módulo de kernel similar ad799x
que viene con el kernel. Aparece en /sys/bus/i2c/drivers/ad799x
(no hay dispositivos definidos para usar ad799x
, por lo que no está relacionado con el árbol de dispositivos ni con la configuración de la placa).
Respuesta1
Tuve que dividirlo ad525x_dpot.o
en ad525x_dpot-i2c.o
dos paquetes DKMS para tener dos módulos de kernel separados.