向内核源添加内置模块,未加载模块

时间:2017-06-22 10:09:39

标签: c linux linux-kernel kernel linux-device-driver

我编写了一个简单的模块,可以加载到内核中来控制简单的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设备。

但是,如果我选择内置选项,它会编译并生成wsg​​pio_udev.o文件,但在使用新内核重新启动后,不会创建/ dev / wsgpio0设备。据我所知,内置模块列在/ lib / modules / $(uname -r)/modules.builtin中,但我没有看到wsgpio_udev.ko

我错过了什么吗?

0 个答案:

没有答案