接着上一个实验 《Tiny4412 Linux驱动之按键(使用查询方式)》 ,这一节使用中断的方式进行按键的检测,Linux下的中断体系结构前面也发了好几篇文章,写的都不错挺详细,大家可以看看,链接如下。
Linux内核异常处理体系结构详解(一)
Linux内核异常处理体系结构详解(二)
下面开始今天的正文,使用中断的方式检测按键,
还是一共三个文件,1驱动相关:. keyIrq_drv.c Makefile
2.测试程序 : key_test_irq.c
实验步骤:
驱动和应用程序都编译出来之后,首先加载驱动:
insmod keyIrq_drv.ko
如上图所示,加载完驱动之后,按键节点已经自动创建出来了,
下面开始测试;
输入 ./key_test_irq
依次按下4个按键,可以看到输出正确,并且按键抖动也不是那么严重了(还有偶尔有的,以后会使用内核定时器进行过滤),可以看到申请的4个中断如下图所示:
再来看一下这种方式下的CPU使用率
可以看到基本不占用CPU,没有按键按下时key_test_irq进程是出于休眠状态的。
通过对比发现,使用中断的方式要不使用查询的方式好很多。本次测试结束。