1 编译蜂鸣器驱动文件
同LED驱动文件一样,创建Makefile文件,将obj-m的值改为beep.o,Makefile文件内容如下:
KERNELDIR := /home/topeet/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga
CURRENT_PATH := $(shell pwd)
obj-m := beep.o
build: kernel_modules
kernel_modules:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
clean:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
首先我们在终端输入两个命令(设置两个环境变量):
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
然后执行“make”命令编译模块,编译完成生成beep.ko,如图 1.1所示:
2 编译应用测试程序
输入如下命令编译应用测试程序:
arm-linux-gnueabihf-gcc -o beep_test beep_test.c
编译完成后,会生成beep_test可执行文件。如图 2.1所示:
3 运行测试
启动开发板,将编译好的beep.ko驱动模块和beep_test应用测试文件拷贝到/lib/modules/4.1.15目录下(检查开发板根文件系统中有没有“/lib/modules/4.1.15”这个目录,如果没有的话需要自行创建一下。开发板中使用的是光盘资料里面提供的busybox文件系统,光盘资料的“i.MX6UL终结者光盘资料\08_开发板系统镜像\03_文件系统镜像\01_Busybox文件系统”目录下)。输入下面命令加载模块:
depmod
modprobe beep
驱动加载成功后,显示下面的信息:
然后使用应用测试程序来验证一下驱动是否正确,输入下面的命令打开蜂鸣器:
./beep_test /dev/beep 1 //打开蜂鸣器
查看开发板上的蜂鸣器是否有响声,如果有鸣叫声说明驱动正常工作。
然后输入下面命令关闭蜂鸣器:
./beep_test /dev/beep 0 //关闭蜂鸣器
正常情况下,蜂鸣器停止鸣叫。
使用下面的命令卸载模块:
rmmod beep //卸载模块