1. 首先在char/sep0718_char目录下编写源文件sep0718_hellomodule.c
#include
#include
#include
MODULE_LICENSE("GPL");
static int __init sep0718_hello_module_init(void)
{
printk("Hello, sep0718 module is installed !\n");
return 0;
}
static void __exit sep0718_hello_module_cleanup(void)
{
printk("Good-bye, sep0718 module was removed!\n");
}
module_init(sep0718_hello_module_init);
module_exit(sep0718_hello_module_cleanup);
2. 修改当前目录的Kconfig 和 Makefile
2.1 Kconfig:
if SEP0718_CHAR
menu "sep0718 char device"
config SEP0718_GPIO
tristate "sep0718 general gpio driver"
config SEP0718_HELLOMODULE
tristate "sep0718 hello module driver(for testing)"
endmenu
endif
2.2 Makefile:
PWD = $(shell pwd)
KERNEL_SRC = /home/zhangyue/sep0718newest/sep0718linux-2.6.32
obj-m := sep0718_hellomodule.o
all:
$(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules
clean:
rm -rf *.o *.ko
该Makefile可支持在当前目录直接make
3 若是支持源码树,则要确认上级目录中的Kconfig和Makefile索引本级目录的文件夹及Kconfig
4 遇到的问题:
在drivers/目录下新建了一个文件夹:modules,修改了drivers/目录下的Makefile:
obj-$(CONFIG_MODULES) += modules/
这就引发了纠纷。。 在kernel目录下的Makefile也有:
obj-$(CONFIG_MODULES) += module.o
当勾掉drivers目录的Kconfig时,kernel的module也被勾掉了。。
阅读(1951) | 评论(0) | 转发(0) |