程序地带

i.MX6ULL终结者Linux按键输入实验运行测试



文章目录
1 编译按键驱动文件2 编译应用测试程序3 运行测试


1 编译按键驱动文件

和前面章节中驱动测试程序一样需要一个Makefile文件,只是将obj-m的值改为key.o,Makefile文件内容如下:


KERNELDIR := /home/topeet/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga
CURRENT_PATH := $(shell pwd)
obj-m := key.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.ko模块文件。


2 编译应用测试程序

输入如下命令编译应用测试程序: arm-linux-gnueabihf-gcc -o key_test key_test.c 编译完成后,会生成key_test可执行文件。


3 运行测试

启动开发板,将编译好的key.ko驱动模块文件和key_test应用测试程序拷贝到/lib/modules/4.1.15目录下(检查开发板根文件系统中有没有“/lib/modules/4.1.15”这个目录,如果没有的话需要自行创建一下。开发板中使用的是光盘资料里面提供的busybox文件系统,光盘资料的“i.MX6UL终结者光盘资料8_开发板系统镜像3_文件系统镜像1_Busybox文件系统”目录下)。输入下面命令加载模块:


depmod
modprobe key

模块加载成功后,使用key_test应用测试程序来测试KEY0按键,使用下面的命令: ./key_test /dev/key & 有如下信息显示: 在这里插入图片描述


图 3.1

按下开发板上的KEY0按键后,key_test应用测试程序就会获取并输入按键信息,如图 3.2所示: 在这里插入图片描述


图 3.2

当我们按下 KEY0 以后就会打印出“KEY0 Press, value = 0XF0”,表示按键按下。但是有时候按下一次 KEY0 可能会输出好几行“KEY0 Press, value = 0XF0”,是因为我们的代码没有做按键消抖处理。 卸载驱动模块程序之前需要先关闭key_test应用测试程序,使用“ps”命令查看当前进程信息,如图 3.3所示: 在这里插入图片描述 在这里插入图片描述


图 3.3

可以看到key_test进程的PID号为171,使用下面命令杀死该进程: kill 171 再次使用“ps”命令就看不到key_test进程了。然后去卸载模块驱动,否则会提示设备文件被占用。 rmmod key


在这里插入图片描述


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46635880/article/details/111246299

随机推荐

并查集之习题分析

并查集之习题分析一、并查集的概念二、并查集的数据结构以及代码分析(一)、并查集的数据结构(二)、并查集数据结构方法分析三、小岛问题(...

hyyyya 阅读(218)

Git工作流程

功能驱动本文的三种工作流程,都采用"功能驱动式开发"它指的是,需求是开发的起点,先有需求再有功能分支(featurebranch...

Anita-Sun 阅读(748)

采用vue开发的

1前端项目初始化步骤安装VUE脚手架通过Vue脚手架创建项目配置Vue路由配置Element-UI组件安装配置axios库2通过vue-ui的方式创建项目在命令行中输入:$vueui进入ui页面选择手...

Herman_Wan 阅读(920)

动态正则化权重系数_正则化方法及Python实现

正则化有助于克服过度拟合模型的问题。过度拟合是偏差和方差平衡的概念。如果过度拟合,机器学习模型将具有较低的准确性。当我们的机器学习模型试图从数据中学习更多属性时,就会添加来...

weixin_39553653 阅读(130)