JackyWu
驱动小牛
驱动小牛
  • 注册日期2001-10-25
  • 最后登录2011-04-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2203回复:15

DMA?什么东西?我真的不懂!!

楼主#
更多 发布于:2002-07-01 14:13
 :D :D写PCI的驱动程序,需要用到DMA的传输方式。我却不知道怎么办了。看了一点资料,有一些似是而非的概念。我都不知道对不对,兄弟们帮忙看看,对不对。

我感觉好像对于PCI设备来说,作DMA基本就是有两种情况。
    如果PCI卡本身就可以作为DMA主控,那么在DMA操作的时候,只需要向PCI控制寄存器里面写一些参数,然后就可以启动DMA了。这样的操作不占用主板上的DMA控制器。
    如果PCI卡本身是slave。那么就必须使用主板上的DMA通道了。

1,我这些理解是否有错误?请点拨。
2,我用的9054的片子。好像本身可以作为PCI的主控。但是我只想把它作为PCI总线的slave来处理。那么是不是我只能调用系统的DMA通道了?
3,如果用系统的DMA通道的话,那么我在什么地方得到系统的DMA资源?在StartDevice里面吗?IO管理器怎么知道我的板子需要使用DMA通道?难道是在PCI状态的寄存器里面可以设定吗?

哈哈。。。。乱七八糟一堆问题。兄弟们不要嫌分少啊。 :D :D

最新喜欢:

znsoftznsoft
多年以后,我又回来了。
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-01 14:27
:D :D写PCI的驱动程序,需要用到DMA的传输方式。我却不知道怎么办了。看了一点资料,有一些似是而非的概念。我都不知道对不对,兄弟们帮忙看看,对不对。

我感觉好像对于PCI设备来说,作DMA基本就是有两种情况。
    如果PCI卡本身就可以作为DMA主控,那么在DMA操作的时候,只需要向PCI控制寄存器里面写一些参数,然后就可以启动DMA了。这样的操作不占用主板上的DMA控制器。
    如果PCI卡本身是slave。那么就必须使用主板上的DMA通道了。

1,我这些理解是否有错误?请点拨。
2,我用的9054的片子。好像本身可以作为PCI的主控。但是我只想把它作为PCI总线的slave来处理。那么是不是我只能调用系统的DMA通道了?
3,如果用系统的DMA通道的话,那么我在什么地方得到系统的DMA资源?在StartDevice里面吗?IO管理器怎么知道我的板子需要使用DMA通道?难道是在PCI状态的寄存器里面可以设定吗?

哈哈。。。。乱七八糟一堆问题。兄弟们不要嫌分少啊。 :D :D


1  正确,如果你的卡上有dma控制器,当然可以不用主板上提供的dma通道
2  可以吧
3  资源是在startdevice中得到,需要申请dma适配器对象,用IoGetDmaAdapter
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-07-01 14:29
1、对。
2、是。有9054,你可以不用它。
3、有一些函数,用来使用DMA的。一般在在你的StartIO里面,申请系统的DMA资源。如果一次不够,在DMA完了(中断)时,再设置DMA,再来一次。
shengws
驱动大牛
驱动大牛
  • 注册日期2002-03-08
  • 最后登录2010-06-21
  • 粉丝0
  • 关注0
  • 积分384分
  • 威望102点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-01 15:25
请教wd怎么玩? :D
喂,小孩,你的小JJ露出来了!
JackyWu
驱动小牛
驱动小牛
  • 注册日期2001-10-25
  • 最后登录2011-04-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-07-01 15:42
 :D :D两大高手都出手了。哈哈。。。。我有救了!

既然系统DMA通道是通过IoGetDmaAdapter来申请,那么在StartDevice里面获得资源的方式是不是和其他资源类型有着很大的不同了?
其他资源类型,如mem,io等,都是在总线驱动程序读取PCI状态寄存器以后,了解到设备需要某些资源,然后再在StartDevice里面通过Irp里面的参数传递进来通知我们的驱动程序具体分配了什么资源。
而DMA资源则需要在StartDevice里面申请并获得。

对不对啊?
多年以后,我又回来了。
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-07-01 16:37
关于dma操作,主控和从属的有很多地方不太一样

具体的还是要看书,
walter oney那本书的第七章最后一节

仔细研究一下,会有收获的。
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
JackyWu
驱动小牛
驱动小牛
  • 注册日期2001-10-25
  • 最后登录2011-04-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-07-02 14:18
刻苦钻研中。。。。。ZZZzzzz............. :D :D :D
多年以后,我又回来了。
fulminate
驱动小牛
驱动小牛
  • 注册日期2002-05-16
  • 最后登录2006-11-27
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-07-02 16:31
几位高手可不可以帮我做一做Modem卡for XP的驱动啊?
==========腾蛟起凤,孟学士之词宗;紫电青霜,王将军之武库==========
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-07-02 16:56
我可不是高手

不过怎么帮你呀
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
fulminate
驱动小牛
驱动小牛
  • 注册日期2002-05-16
  • 最后登录2006-11-27
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-07-03 15:05
我把inf文件放上来,高手们帮我看看怎么改?
我的inf文件在附件中
==========腾蛟起凤,孟学士之词宗;紫电青霜,王将军之武库==========
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2002-07-03 15:40
你的是VxD的驱动?
光改INF是没有用的,VxD在XP下就不用了。
JackyWu
驱动小牛
驱动小牛
  • 注册日期2001-10-25
  • 最后登录2011-04-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-07-03 20:50
 :D :D是啊,是啊,赫赫。。。。arthurtu说的很对阿,呵呵。。。。。(其实我不懂VxD,瞎凑合。)
 :D :D :D :D
多年以后,我又回来了。
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2002-07-04 09:33
:D :D是啊,是啊,赫赫。。。。arthurtu说的很对阿,呵呵。。。。。(其实我不懂VxD,瞎凑合。)
 :D :D :D :D

faint :D
fulminate
驱动小牛
驱动小牛
  • 注册日期2002-05-16
  • 最后登录2006-11-27
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-07-04 11:35
那要怎么改?XP下是用sys吗?
==========腾蛟起凤,孟学士之词宗;紫电青霜,王将军之武库==========
guard2002
驱动中牛
驱动中牛
  • 注册日期2002-05-21
  • 最后登录2017-03-07
  • 粉丝0
  • 关注0
  • 积分46分
  • 威望65点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
14楼#
发布于:2002-07-04 12:00
是吧
fulminate
驱动小牛
驱动小牛
  • 注册日期2002-05-16
  • 最后登录2006-11-27
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-07-05 15:45
回答得这么简洁?能不能详细点?
==========腾蛟起凤,孟学士之词宗;紫电青霜,王将军之武库==========
游客

返回顶部