IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Tiny4412 Linux驱动之按键(使用中断)

    techbulo发表于 2015-12-04 23:50:02
    love 0

    接着上一个实验 《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使用率

    CPU使用率

    可以看到基本不占用CPU,没有按键按下时key_test_irq进程是出于休眠状态的。

    通过对比发现,使用中断的方式要不使用查询的方式好很多。本次测试结束。



沪ICP备19023445号-2号
友情链接