为什么 I2C 设备驱动程序没有出现在 /sys/bus/i2c/drivers 中?

为什么 I2C 设备驱动程序没有出现在 /sys/bus/i2c/drivers 中?

从映像 ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img.xz 开始 (https://wiki.ubuntu.com/ARM/RaspberryPi)我正在尝试添加在内核构建期间未启用的 ad525x_dpot I2C 驱动程序。

我从相应的 Linux 源中取出了ad525x_dpot.c、、来制作 DKMS 包。ad525x_dpot.had525x_dpot-i2c.c

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"

生成文件:

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

模块ad525x_dpot可以通过 加载,modprobe并且显示在 中lsmod,但不显示在 中/sys/bus/i2c/drivers。系统日志中有一些警告。

ad525x_dpot: loading out-of-tree module taints kernel.
ad525x_dpot: module verification failed: signature and/or required key missing - tainting kernel

为何它没有显示出来/sys/bus/i2c/drivers

我尝试加载ad799x内核附带的类似内核模块。它出现在/sys/bus/i2c/drivers/ad799x(没有定义使用的设备ad799x,因此它与设备树或板配置无关)。

答案1

必须将其拆分ad525x_dpot.oad525x_dpot-i2c.o两个 DKMS 包才能拥有两个独立的内核模块。

相关内容