如何将驱动编译进入内核
当你以模块的形式编译模块并且能够达到预想的效果,那么这样就可将模块编译到内核了,将模块编译到内核是很简单的。
第一、 进入linux-2.6.30.9/drivers文件夹,在文件夹中建立一个文件夹(名字可以和驱动的文件名一致)char_led。
第二、 将能够实现预想效果的驱动文件char_led.c复制到此文件夹char_led文件夹下
第三、 在char_led文件夹下建立一个以Makefile文件名命名的文件,在该文件中添加如下的代码:
#
# Makefile for the Linux kernel device drivers.
#
obj-y := char_led.o
$(obj)/defkeymap.c: $(obj)/%.c: $(src)/%.map
loadkeys --mktable $< > $@.tmp
sed -e 's/^static *//' $@.tmp > $@
rm $@.tmp
#只有如下的代码也是可以
#obj-y := char_led.o
#all:
# arm-linux-gcc -o char_led.o char_led.c
注意:当你的驱动文件名不是char_led时,那么代码中所有的char_led要替换成你编写的不带文件后缀的文件名。中间几行代码从别的目录中的Makefile中复制过来的,当然里面的功能很多,但是里面有一个功能就是将此目录下所有的以.c文件结尾的文件编译成.o文件。
第四、 进入上一级目录(即linux-2.6.30.9/drivers目录),打开此目录下的Makefile文件,在最后一行加入如下代码,
obj-y += char_led/
注意:如果你的驱动文件名不是char_led,那么你因该修改此行代码中的char_led了
点击保存,那么工作就完成了。下面的工作就make一下吧!