完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
编译驱动程序
和前面章节中驱动测试程序一样需要一个 Makefile 文件,只是将 obj-m 的值改为 key_input.o,Makefile 文 件内容如下: KERNELDIR := /home/topeet/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga CURRENT_PATH := $(shell pwd) obj-m := key_input.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”命令编译模块,编译完成生成 key_input.ko 模块文件。 |
|
|
|
编译应用测试程序
输入如下命令编译应用测试程序: arm-linux-gnueabihf-gcc -o key_input_test key_input_test.c 编译完成后,会生成 key_input_test 可执行文件。 |
|
|
|
运行测试
启动开发板,将编译好的 key_input.ko 模块文件和 key_input_test 应用程序拷贝到/lib/modules/4.1.15 目录下(检查开发板根文件系统中有没有“/lib/modules/4.1.15”这个目录,如果没有的话需要自行创建一下。开发板中使用的是光盘资料里面提供的 busybox 文件系统,光盘资料的“i.MX6UL 终结者光盘资料 8_开发板系统镜像 3_文件系统镜像 1_Busybox 文件系统”目录下)。在加载驱动模块文件之前,先看一下在/dev/input 目录下都有哪些文件,结果如下图所示: 在/dev/input 目录下已经存在了不少的 event 事件,然后输入下面命令加载模块: depmod modprobe key_input 驱动加载成功后在来看一下在/dev/input 目录下有哪些文件,结果如下图所示: 可以看出,多了一个 event3 文件,因此/dev/input/event3 就是我们注册的驱动所对应的设备文件。然后key_input_test 应用程序通过读取/dev/input/event3 设备文件来获取输入事件信息,测试命令如下: 。/key_input_test /dev/input/event3 按下开发板上的按键 KEY0,有如下现象: 可以看出,当我们按下或者释放开发板上的按键以后都会在终端上输出相应的内容,提示我们哪个按键按下或释放了,在 Linux 内核中 KEY_0 为 11。 另外,我们也可以不用 key_input_test 应用程序 来测试驱动,可以直接使用 hexdump 命令来查看 /dev/input/event3 文件内容,输入如下命令: hexdump /dev/input/event3 按下开发板上的按键 KEY0,有如下现象: 上图就是 input_event 类型的原始事件数据值,采用十六进制表示,这些原始数据的含义如下: type 为事件类型,EV_KEY 事件值为 1,EV_SYN 事件值为 0。因此第 1 行表示 EV_KEY 事件,第 2 行表示 EV_SYN 事件。code 为事件编码,也就是按键号,KEY_0 这个按键编号为 11,对应的十六进制为0xb,因此第 1 行表示 KEY_0 这个按键事件,最后的 value 就是按键值,为 1 表示按下,为 0 的话表示松开。 综上所述,上图中的原始事件值含义如下: 第 1 行,按键(KEY_0)按下事件。 第 2 行,EV_SYN 同步事件,因为每次上报按键事件以后都要同步的上报一个 EV_SYN 事件。 第 3 行,按键(KEY_0)松开事件。 第 4 行,EV_SYN 同步事件,和第 2 行一样。 |
|
|
|
只有小组成员才能发言,加入小组>>
791 浏览 0 评论
1151 浏览 1 评论
2527 浏览 5 评论
2860 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2710 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1070浏览 3评论
193浏览 2评论
455浏览 2评论
368浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
453浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 11:16 , Processed in 1.237222 second(s), Total 82, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号