linux arm 嵌入式驱动开发

发布于 2021-11-20 03:20:39 字数 148 浏览 906 评论 4

S3C2440的AD转换器有八个通道,现在我要用到4个通道进行数据采样,想要用中断的方式实现这个驱动,可是这样的话,如果有一个通道发生发生采集数据并转换完成时,中断响应函数读取了该数据返回给应用程序,那应用程序如何知道这是那个通道的数据呢??困扰了我许久了,想不到有什么办法解决,各位帮帮忙啊??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

倚栏听风 2021-11-23 18:11:12

“中断响应函数读取了该数据返回给应用程序”

返回给应用程序时,就已经确定了:

所抛出的时间,被哪个程序接受

或者是:

同一个程序接受,但是有对应的参数传递回来

可以判断相关的状态,包括获得对应的中断源(即哪个发生了中断)

1.之前写的,供参考:

详解ARM的AMBA设备中的DMA设备PL08X的Linux驱动

里面有很多DMA的概念的解释。

2.还有最近刚回复别人的:

【问题解答】linux中,中断注册和中断服务程序只能写在驱动层还是能写在应用层?

梅窗月明清似水 2021-11-23 17:32:35

谢谢six指点!

冷清清 2021-11-22 19:49:42

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,应用程序就可得

到触摸的数据了

2021-11-22 18:49:10

可以通过中断偏移寄存器(0x4a000014)得到得到中断源号的.而且,你每个通道应该对应不同的中断源才是.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文