Linux下驱动模块化编译与装载、卸载
我们在修改完驱动后,如果每次都需要重新编译内核烧录的话,太过麻烦了,我们可以通过NFS来挂载根文件系统、然后驱动程序单独编译,再将.ko文件copy到根文件系统,动态装载上去的方式,来减少这种麻烦。具体方法我们看下面。
- 我们将驱动源程序文件单独放到一个文件夹,然后新建一个Makefile文件,编辑输入类似于如下的内容,这是mini2440 LCD背光驱动的Makefile。
ifeq ($(KERNELRELEASE),)
# KERNELDIR ?= /your/target/source/directory/
KERNELDIR ?=/home/eurphan/learn/arm9learn/kernel/linux-3.18.108
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
.PHONY: modules modules_install clean
else
obj-m := mini2440_backlight.o
endif
在上面的源码中,KERNELDIR是你的内核源码目录,因为驱动需要使用内核的头文件和链接库,因此是需要指定驱动装载内核相应的源码目录的。obj-m后面的就是驱动源码所生成的.o文件了,生成多个文件的需要在这里全部添加上去。</