MyException - 我的异常网
当前位置:我的异常网» 驱动开发 » linux按键设备驱动解决方法

linux按键设备驱动解决方法(3)

www.myexceptions.net  网友分享于:2013-04-10  浏览:6次

    the irq_no:16 down
    handle with irq : 16,irq_no:1
    disbale_irq_nosync :16
    the irq_no:16 down
其中第1、2行同时输出的,然后等待1s,再输出3、4、5行,再等待1s,输出第6行。
我的疑问是:
输出1、2行之后,当前中断已经被屏蔽掉,直到1s后进入定时处理函数恢复中断,此中断才可以继续使用,我按键只按了一下,应该只显示前三行的信息,后三行的信息我不知道怎么来的。
我使用命令:
# cat /proc/devices
输出(其他信息省略掉了,一下类似):
Character devices:
280 kbd
 
# lsmod
   Not tainted
    key 3204 0 - Live 0xbf067000
 
# cat /proc/interrupts
 CPU0
 16:         18    s3c-ext0  GPF1
 17:         10    s3c-ext0  GPF2
 18:          2    s3c-ext0  GPF3
 48:          2     s3c-ext  GPF4

------解决方案--------------------
原理图呢?谁知道你这是什么按键啊
------解决方案--------------------
这应该是发生了抖动的问题,将
key_timer[*(int *)dev_id - 1].expires = jiffies + HZ;
add_timer(&key_timer[*(int *)dev_id - 1]);
放到
disable_irq_nosync(irq);
printk("disbale_irq_nosync :%d\n",irq);
前面试试看
------解决方案--------------------
按下,中断一次,弹起,同样中断一次
可以这样试试: 按下不放手,过5或者10秒钟再放手,看看输出信息。

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有