阅读:1116回复:1
usb键盘不稳定
嗨,大家好,最近在做PXA255的usb键盘驱动,用的是linux-2.4.17的版本。
其中有三个问题: 1.input_envent事件中删除定时器操作不能正确执行,即如下的del_timer返回0: if (test_bit(EV_REP, dev->evbit) && dev->timer.function) { if (value) { mod_timer(&dev->timer, jiffies + dev->rep[REP_DELAY]); dev->repeat_key = code; break; } if (dev->repeat_key == code) del_timer(&dev->timer); } 导致若干次按键后,定时器老是重发最后一个键,我删除如上的两个定时器操作后 消除了这个问题,但是按下键不松开也不会有重发了。 2。在drivers/char/keyboard.c中的kbd_processkeycode()函数中还有一处重发操作, 也会导致按键若干次后不断的重发键值,即使我不按键盘。 我也是把那个定时器操作注销以后就可以了,是不是太粗暴了一点!:) 3。第三个问题我至今没有解决,可能和ohci有关系。就是我按键百来次以后会出现 键盘不被响应的情况,我看了一下usb-ohci.c中的hc_interrupt函数发现是我的 中断类型即ints是1,而一般有按键情况下这个值应该是2或者是3。 所以hc_interrupt 就不会进入dl_done_list(),也就不处理按键事件了。 这是怎么回事啊?我对usb没有什么概念,按键状态的改变最早是哪里探测到的啊? usb又是怎么把这个改变通知键盘驱动的呢? 谢谢了,为了这个问题搞了近一个礼拜,还没有什么头绪! |
|
沙发#
发布于:2005-01-11 22:48
linux到linux专区去可能会更好
嗨,大家好,最近在做PXA255的usb键盘驱动,用的是linux-2.4.17的版本。 |
|
|