我编写了一个简单的模块,可以加载到内核中来控制简单的led。它工作正常。 源文件是两个C文件和一个头文件:
gpio_handler_ws.c nct5104d_access.c nct5104d_access.h
我决定将它添加到内核源代码中执行以下步骤:
1. In drivers/char modify the Kconfig file adding:
config GPIO0_DEVICE
tristate "GPIO0 device"
default y
help
"Creates /dev/wsgpio0 char device to control GPIO0"
2. In drivers/char modify the Makefile file adding:
obj-$(CONFIG_GPIO0_DEVICE) += wsgpio_udev.o
wsgpio_udev-objs := gpio_handler_ws.o nct5104d_access.o
3. Copy source and headers files to drivers/char directory
然后,如果我在menuconfig中选择m选项将其编译为模块,它会创建按预期工作的wsgpio_udev.ko文件,我可以加载它并创建控制LED的de / dev / wsgpio0设备。
但是,如果我选择内置选项,它会编译并生成wsgpio_udev.o文件,但在使用新内核重新启动后,不会创建/ dev / wsgpio0设备。据我所知,内置模块列在/ lib / modules / $(uname -r)/modules.builtin中,但我没有看到wsgpio_udev.ko
我错过了什么吗?