linux arm 嵌入式驱动开发
S3C2440的AD转换器有八个通道,现在我要用到4个通道进行数据采样,想要用中断的方式实现这个驱动,可是这样的话,如果有一个通道发生发生采集数据并转换完成时,中断响应函数读取了该数据返回给应用程序,那应用程序如何知道这是那个通道的数据呢??困扰了我许久了,想不到有什么办法解决,各位帮帮忙啊??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
“中断响应函数读取了该数据返回给应用程序”
返回给应用程序时,就已经确定了:
所抛出的时间,被哪个程序接受
或者是:
同一个程序接受,但是有对应的参数传递回来
可以判断相关的状态,包括获得对应的中断源(即哪个发生了中断)
1.之前写的,供参考:
详解ARM的AMBA设备中的DMA设备PL08X的Linux驱动
里面有很多DMA的概念的解释。
2.还有最近刚回复别人的:
【问题解答】linux中,中断注册和中断服务程序只能写在驱动层还是能写在应用层?
谢谢six指点!
input_report_abs 提交位置, input_report_key提交按键动作(这两个函数定义在input.h)
上面两个函数都是inline函数,其实是封装了input_event()函数(定义在input.c)
input_event()调用input_handle_event()函数(也是定义在input.c)
input_handle_event()调用dev->event(), 并将触摸的数据传给事件驱动
在触摸屏驱动中的dev->event()其实就是调用evdev_event()函数(在evdev.c定义)
到此事件驱动得到了数据,但是怎样提交给应用程序呢?
答案是:应用程序read /dev/XXX文件时,会进入等待队列,当触摸中断产生,会经过上面综述,
最后在evdev_event()中调用wake_up_interruptible()函数唤醒等待的read,应用程序就可得
到触摸的数据了
可以通过中断偏移寄存器(0x4a000014)得到得到中断源号的.而且,你每个通道应该对应不同的中断源才是.