阅读:1499回复:4
用DS编驱动,要求接到中断后开启DMA传输
我看武安河的书,
对于9054的例子已经理解, 可是我要在接收Local端的中断(通过门铃寄存器)后, 启动DMA传输,从Local端读数据 问题是: 1.武安河的DMA例子是由应用程序发送的IRP_MJ_READ启动的,IRP中包括的Mdl指定了用户程序的数据缓冲区,如果我要由中断服务例程启动DMA的话,怎么和应用程序之间进行数据传输?? 2.就算可以解决和应用程序间的数据传输,DMA准备就绪回调例程OnDmaReady()中有一个参数就是IRP啊,怎么弄啊? 赐给我点思路吧!!!!!!!!! :( :( :( |
|
|
沙发#
发布于:2004-03-18 16:06
我不知道你有没有试过,将他书上的例子中DMA的代码搬到DEVICE_IO_CTRLXXX的分发例程中会出现什么样的结果?
其实,你可以直接使用PCI9054的DMA功能,因为PCI9054本身就具有DMA控制器,能够在PCI总线上发起DMA的 |
|
板凳#
发布于:2004-03-21 15:15
你是什么意思?
我现在就是想在DEVICE_IO_CTRLXXXX中,先保存IRP, 然后在中断服务程序中判断是否门铃中断,然后调用的延迟调用过程中,加入DMA的程序,就是把DMA的例子和DeviceIoControl异步完成结合起来 这个思路有问题吗? 什么叫直接使用9054的DMA功能?不就是设置好9054上的相关DMA寄存器(比如说PCI地址,本地地址,然后开始传输)吗? :( |
|
|
地板#
发布于:2004-04-01 11:07
对,是这样!
你这么样了? |
|
地下室#
发布于:2004-04-01 20:38
对,是这样! 硬件还没出来。。。都快半年了。。。 :( |
|
|