阅读:838回复:2
关于DMA,我说的对吗?
我用DS做ISA板的系统DMA的驱动,DMA控制器是8237,我觉得执行DMA的过程是:当达到我设定的要传输的数据时,硬件发DMA请求信号,相应,在我的驱动中进入ISR例程,确认这个请求,再延迟到DpcForIsr,在这里有个事件对象来通知应用程序,可以发DMA的读请求了,然后应用程序发读请求,可以通过READFILE或DeviceIoControl来实现,我的驱动程序可以选择把IRP排队,或不排队都可以,接下来驱动进入相应的分发例程,把数据读到内存,完成DMA传输数据的过程,当传输完数据的时候又来个中断,又进入一个ISR(这个ISR与进行DMA传输前的ISR不同),在这里判断是否上次的传输完成了,在延迟,进入DpcForIsr。
我的理解是这样的,但用DS的DMA的机理是:DMA的启动是在STARTIO中完成的,也就是说是用IRP启动的DMA传输,我感觉这种方式不适合于我的这个项目。是不是真的这样???谁给分析一下!我捆饶了很长的时间了! |
|
|
沙发#
发布于:2003-04-01 20:10
哪位高手给看看!
这个问题好象不难吧! |
|
|
板凳#
发布于:2003-04-01 22:53
怎么做取决于你的驱动和应用程序。所谓“条条大路通罗马”
|
|