前几天在TIny4412开发板上做了LED点灯的Linux驱动,其实挺简单,GPIO驱动,今天再看一下按键的驱动,毕竟按键用的还是比较广泛的,本文使用查询的方式获取按键值,后面会有文章使用中断的方式进行操作,也算是为了对比一下这两种处理方式的效率。
按键检测的原理在前面裸机部分已经介绍的很详细了,《Tiny4412裸机程序,按键检测(轮询方式)》 ,忘了怎么操作的同学可以再查看一下。
还是一共三个文件,1驱动相关:. key_drv.c Makefile
2.测试程序 : key_test.c
实验步骤:
驱动和应用程序都编译出来之后,首先加载驱动:
insmod key_drv.ko
如上图所示,加载完驱动之后,按键节点已经自动创建出来了,使用cat /pros/devices命令查看,按键设备已经有了。
下面开始测试;
输入 ./key_test
看到了吧,我按下了第一个按键,按键已经能检测了,但是有一个问题,用这种方式效率太低了,大家看一个图:
CPU使用率达到了25!!!!4412是4核的处理器,那就是整整占用了一个CPU啊!!!太可怕了,下一节会使用中断的方式重新做这个实验,对比一下效率。