电子工程师技术服务社区
- 社区首页
- 下载
- TestKEY.rar
资料描述
基于前面提到的最精简的框架,中断程序只是多了一个irq注册和响应的代码。
需要增加的函数有:
request_irq //请求注册irq
free_irq //释放请求
和一个自定义的irq响应函数。
当然,为了程序能够真正完成工作,还需要一个阻塞响应机制,以便用户程序能够等到中断的到达。
这里同样使用了最简单的方式,增加的函数:
declare_completion(msg); //linux内核定义好的宏,给一个变量名称即可
init_completion(&msg); //初始化
wait_for_completion(&msg); //阻塞函数
complete(&msg); //打断阻塞的函数
对照之前的gpio框架,可以很清晰地看出区别。代码还是贴不了,继续上附件吧。
这样,测试程序在调用了read之后会阻塞在那里,等待驱动程序中中断的达到。每次按下按键后,程序就继续执行了。wait_for_completion有很多种,可以增加超时之类的来完成自己的要求。
顺便说一下,pcduino已经占用了这个中断,测试的话,在启动后需要先rmmod sw_interrupt,以保证本程序的运行。