我用的OK210的板子在做按键中断驱动的硬件实现时遇到了一些问题,编写好程序之后,按下按键一直无法进入中断函数。通过调试发现,注册中断(request_irq)就没有成功,注册中断返回值为负数。
这是中断注册返回值为负数,注册失败。所以无法实现按键中断。通过询问与查阅,原来问题是内核已经将按键中断注册了。以下是解决办法。
进入内核目录:用make menuconfig ARCH=arm 进入配置页面
选择Device Drivers->,进入
选择Input device.....->,进入
将KeyBoard这项取掉,然后从新编译内核。这样就把内核注册的按键中断取消了。这里有三种中断注册的函数,它们的中断号不同,如下图:
分别返回他们的返回值:
如图所示,只有result1的返回值是成功的,其他的中断号都没有成功。当按键中断时,进入中断程序,表明实验成功了。