mailway
驱动牛犊
驱动牛犊
  • 注册日期2002-08-15
  • 最后登录2013-11-25
  • 粉丝0
  • 关注0
  • 积分134分
  • 威望24点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
阅读:2103回复:12

对DMA传输过程的理解,大虾进来指教啊!

楼主#
更多 发布于:2003-03-04 13:48
设备有数据-〉中断通知应用程序-〉驱动程序启动DMA完成一次数据传输-〉写往公共缓冲区<-用户进程读取

整个的传输过程是不是如上所述,望各位指教!

最新喜欢:

XmanXman
mailway
驱动牛犊
驱动牛犊
  • 注册日期2002-08-15
  • 最后登录2013-11-25
  • 粉丝0
  • 关注0
  • 积分134分
  • 威望24点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-04 14:16
设备有数据-〉中断通知驱动程序-〉驱动程序启动DMA完成一次数据传输-〉写往公共缓冲区<-用户进程读取

刚才写错了
oetek
驱动牛犊
驱动牛犊
  • 注册日期2003-01-18
  • 最后登录2004-12-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-04 22:11
可以是
1)设备有数据-〉中断通知应用程序-〉驱动程序启动DMA完成一次数据传输-〉写往符合DMA要求的缓冲区-〉写入用户缓冲区,用户进程读取
2)查询方式,若有数据,进行DMA传输
大江东去
mailway
驱动牛犊
驱动牛犊
  • 注册日期2002-08-15
  • 最后登录2013-11-25
  • 粉丝0
  • 关注0
  • 积分134分
  • 威望24点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-03-05 08:41
那么什么样的缓冲区才算得上是符合dma要求的呢
wfeiisch
驱动牛犊
驱动牛犊
  • 注册日期2002-10-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-03-05 09:47
DMA操作需要连续的内存空间!!!
mailway
驱动牛犊
驱动牛犊
  • 注册日期2002-08-15
  • 最后登录2013-11-25
  • 粉丝0
  • 关注0
  • 积分134分
  • 威望24点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-03-05 10:39
硬件向dma缓冲区写数据完成后发出一个中断,中断处理程序获得输入数据,应答中断,唤醒进程可以读数据,如何唤醒?
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-03-05 14:27
那时不是一次完整的DMA传输需要两次中断呢?在准备数据传输前有次中断,在传输完后有一次中断呢?没次中断都对应各自的ISR和DPC吗?是怎么回事?
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
mailway
驱动牛犊
驱动牛犊
  • 注册日期2002-08-15
  • 最后登录2013-11-25
  • 粉丝0
  • 关注0
  • 积分134分
  • 威望24点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-03-05 15:05
我是看到linux设备驱动程序上面这样描述的:dma被异步的使用
1、硬件发出中断,表明新的数据到达了;
2、中断处理程序分配一个缓冲区,告诉硬件将数据传往何处;
3、外围设备将数据写入缓冲区,当写完时,再次发出中断;
4、处理程序派发新数据,唤醒所有相关进程,处理一些杂务。
kxgchina
驱动小牛
驱动小牛
  • 注册日期2002-04-01
  • 最后登录2005-05-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-03-05 15:06
这与你的硬件有关,准备好数据这次中断在很多情况下,可以没有,只是在DMA传输玩后,响应中断,通知用户线程!!!
mailway
驱动牛犊
驱动牛犊
  • 注册日期2002-08-15
  • 最后登录2013-11-25
  • 粉丝0
  • 关注0
  • 积分134分
  • 威望24点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-03-05 15:10
楼上这位老兄,在响应中断的时候,是怎么样通知特定的用户线程的,能讲述一下嘛?谢谢!
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-03-05 17:36
在完成DMA数据传输的时候,产生硬件中断,这个中断,你们的硬件是怎么设计的?我的总线是ISA,我是这样设计的,对吗?
把总线上的记数结束信号T/C连接到总线上的一个中断输入信号,比如IRQ5,那么当发生中断的时候我怎么判断是不是我的中断,换句话说,我找不到我硬件里的中断控制寄存器!
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
mailme
驱动老牛
驱动老牛
  • 注册日期2001-05-21
  • 最后登录2010-02-25
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-03-06 11:29
mailway

 发表于: 2003/3/5 - 15:10
楼上这位老兄,在响应中断的时候,是怎么样通知特定的用户线程的,能讲述一下嘛?谢谢!
 


------这应该是一个异步过程调用吧,就是说用户线程先初始化一个内核同步对象(event、mutex...),把这个对象传递给驱动程序,然后阻塞该线程,驱动在数据传输完成后设置这个event,用户线程就知道驱动已经完成处理了。不过这只是异步响应中断的一些知识,dma没做过,不知道是否也这样,希望大侠指正
早起早睡 精神百倍
mailway
驱动牛犊
驱动牛犊
  • 注册日期2002-08-15
  • 最后登录2013-11-25
  • 粉丝0
  • 关注0
  • 积分134分
  • 威望24点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-03-11 08:23
送分啦!
游客

返回顶部