想对我的板子s5p6818进行DHT11的驱动增加
目标增加驱动 : dht11
c文件 dht11.c
生成驱动 dht11.ko
在内核文件的驱动里建立文件
创建dht11 的文件夹
放入之前写好的dht11.c文件
makefile
obj-$(CONFIG_HELLO) += dht11.o
增加Kconfig
menu "DHT11 Driver "
comment "for dth11 temperture check"
config DHT11
tristate "dht11 module test"
default m
help
This is the dht11 test driver --by_len.
endmenu
修改上一级的文件目录
1)编辑Makefile,在后面添加一行:
obj-$(CONFIG_HELLO) += dht11/
2)编辑Kconfig,在后面添加一行:
source “drivers/dht11/Kconfig”
注:某些内核版本需要同时在arch/arm/Kconfig中添加:source “drivers/dht11/Kconfig”
make menuconfig配置
执行:make menuconfig ARCH=arm
选择并进入:Device Drivers选项
可以看到新增 DHT11 Driver选项
老办法编译(记录驱动编译出的文件.ko在哪)
退出保存后进入:cd ~/A33-Vstar/dragonboard/
执行:sudo ./build.sh 编译内核
1)如果选择编译成模块
编译内核过程中,会有如下输出:
LD drivers/hello/built-in.o
CC [M] drivers/hello/hello.o
CC drivers/hello/hello.mod.o
LD [M] drivers/hello/hello.ko
2)如果选择编译进内核
编译内核过程中,会有如下输出:
CC drivers/hello/hello.o
LD drivers/hello/built-in.o
编译完成后,drivers/hello/下新增hello.o和hello.ko,并且/linux-3.4/output/lib/modules/3.4.39/下也会有hello.ko。
我们一般写程序的编译
先把内核编译好
因为6818 用的是bulidroot 所以参考 对6818的编译
我们不可能编译一次驱动就要编译一次内核
在其他地方建立文件夹,把我们的驱动c文件 dht11.c 放入
增加 Makefile文件
#内核要提前编译好
KERN_DIR = /home/scholar/Desktop/6818GEC/kernel
#-C 是转到后面的目录'$(KERN_DIR)',使用这个目录下面的 Makefile 编译
#M是指当前目标是什么
#moudule 是指目标
all:
make -C $(KERN_DIR) M=`pwd` modules
clean:
make -C $(KERN_DIR) M=`pwd` modules clean
rm -rf modules.order
obj-m += dht11.o
执行我们的编译命令,由于要跳转到内核里面进行编译,所以 我们编译内核的命令里面的参数也同样要加进去指定架构
指定我们的编译器所在位置
make -j4 ARCH=arm CROSS_COMPILE=/home/scholar/Desktop/6818GEC/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-
看我们的ko文件
上机器调试
下次经行 源码的修改