根据计划,本来上个星期就要完成键盘驱动,但是延期了。某天心血来潮决定当晚完成键盘驱动!刷刷代码写完。一调试,我考,系统都死了,问题有点严重。
具体现象如下: 键盘按键按下,对应中断脚就一直低电平,而且系统也死了。
我考,同样的键盘板,我曾经在linux-2.6.26内核通过中断方式实现了。这怎么就 罢 工了呢?硬件电路不一样???还是.....
奋战到凌晨,实在顶不住了。睡觉去了。
接下来的几天,公司比较忙就没管这事了。今天拿来一看,突然产生了一个想法。 假如我不在中断发生时关闭中断呢?马上试验,嘿嘿,还真ok了。再精确定位,原来linux-3.1.6内核在中断发生时不能同步关闭中断本身!但是可以同步关闭其他中断。其实要在中断中关闭中断本身只要用disable_irq_nosync代替disable_irq就可以了!我考! 搞定,睡觉去!
嗨,有时想想,软件开发就这样,你死磕她,就是不行,撞的头破血流。晕倒
睡了一会,
具体现象如下: 键盘按键按下,对应中断脚就一直低电平,而且系统也死了。
我考,同样的键盘板,我曾经在linux-2.6.26内核通过中断方式实现了。这怎么就 罢 工了呢?硬件电路不一样???还是.....
![](http://cnc.qzs.qq.com/qzone/em/e141.gif)
接下来的几天,公司比较忙就没管这事了。今天拿来一看,突然产生了一个想法。 假如我不在中断发生时关闭中断呢?马上试验,嘿嘿,还真ok了。再精确定位,原来linux-3.1.6内核在中断发生时不能同步关闭中断本身!但是可以同步关闭其他中断。其实要在中断中关闭中断本身只要用disable_irq_nosync代替disable_irq就可以了!我考! 搞定,睡觉去!
嗨,有时想想,软件开发就这样,你死磕她,就是不行,撞的头破血流。晕倒
![](http://cnc.qzs.qq.com/qzone/em/e108.gif)