lala
驱动中牛
驱动中牛
  • 注册日期2001-04-26
  • 最后登录2006-10-18
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1499回复:4

用DS编驱动,要求接到中断后开启DMA传输

楼主#
更多 发布于:2004-03-15 21:37
我看武安河的书,
对于9054的例子已经理解,
可是我要在接收Local端的中断(通过门铃寄存器)后,
启动DMA传输,从Local端读数据

问题是:

1.武安河的DMA例子是由应用程序发送的IRP_MJ_READ启动的,IRP中包括的Mdl指定了用户程序的数据缓冲区,如果我要由中断服务例程启动DMA的话,怎么和应用程序之间进行数据传输??
2.就算可以解决和应用程序间的数据传输,DMA准备就绪回调例程OnDmaReady()中有一个参数就是IRP啊,怎么弄啊?


赐给我点思路吧!!!!!!!!! :( :( :(
:D拉拉拉,拉拉拉,偶素待业的小青年...
flying
驱动小牛
驱动小牛
  • 注册日期2002-08-01
  • 最后登录2016-06-19
  • 粉丝0
  • 关注0
  • 积分197分
  • 威望70点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-03-18 16:06
我不知道你有没有试过,将他书上的例子中DMA的代码搬到DEVICE_IO_CTRLXXX的分发例程中会出现什么样的结果?

其实,你可以直接使用PCI9054的DMA功能,因为PCI9054本身就具有DMA控制器,能够在PCI总线上发起DMA的
lala
驱动中牛
驱动中牛
  • 注册日期2001-04-26
  • 最后登录2006-10-18
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-21 15:15
你是什么意思?
我现在就是想在DEVICE_IO_CTRLXXXX中,先保存IRP,
然后在中断服务程序中判断是否门铃中断,然后调用的延迟调用过程中,加入DMA的程序,就是把DMA的例子和DeviceIoControl异步完成结合起来
这个思路有问题吗?

什么叫直接使用9054的DMA功能?不就是设置好9054上的相关DMA寄存器(比如说PCI地址,本地地址,然后开始传输)吗? :(
:D拉拉拉,拉拉拉,偶素待业的小青年...
flying
驱动小牛
驱动小牛
  • 注册日期2002-08-01
  • 最后登录2016-06-19
  • 粉丝0
  • 关注0
  • 积分197分
  • 威望70点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-04-01 11:07
对,是这样!
你这么样了?
lala
驱动中牛
驱动中牛
  • 注册日期2001-04-26
  • 最后登录2006-10-18
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-01 20:38
对,是这样!
你这么样了?



硬件还没出来。。。都快半年了。。。 :(
:D拉拉拉,拉拉拉,偶素待业的小青年...
游客

返回顶部