我采用的是2.6.26的内核。
例:在drivers里添加个设备文件夹如(buzzer文件夹),里面有buzzer.c和buzzer.h文件把他们变成模块。
1. 在arch/arm/kconfig 和drivers/kconfig 里添加source "drivers/buzzer/Kconfig"选择模块的选项。
2. 在/drivers/里的makefiel文件添加编译的路径
obj-$(CONFIG_NEW_BUZZERS) += buzzer/
3. 在/drivers/buzzer/里编写Makefile文件。
obj-$(CONFIG_NEW_BUZZERS) += buzzer.o
4. 在/drivers/buzzer/里编写kconfig文件
menuconfig NEW_BUZZERS
bool "BUZZER Support"
help
Say Y to enable Linux BUZZER support. This allows control of supported
BUZZERs from both userspace and optionally, by kernel events (triggers).
This is not related to standard keyboard BUZZERs which are controlBUZZER
via the input system.
若没有选择相应的模块就不会被编译。
方法2
以模块的方式加载进去。其makefile文件如下:
obj-m := buzzer.o
KSRCDIR = ../linux-2.6.26.5
KOBJDIR = /home/s3c2410/
EXTRA_CFLAGS += -I../modules
default:
$(MAKE) -C $(KSRCDIR) O=$(KOBJDIR) SUBDIRS=$(PWD) ARCH=arm CROSS_COMPILE=/usr/local/arm/3.4.1/bin/arm-linux- modules
clean:
rm -f *.o *.ko *.mod.c .*.cmd Module.symvers .tmp_versions *.order
rm -rf .tmp_versions
注意:
1.在编写driver/设备/ 下的Makefile 时,生成的.O要和.C文件同名,否则编译会出错。
2.编译的设备文件和编译的内核要处于同一个目录下,而且内核要先进行编译过