阅读:1528回复:5
求助:多 busmaster DMA通道的WDM编程
自己做的PCI卡的单个DMA通道我已经调通,能够连续接收数据了,
对于双通道的,由于在应用程序中是用readfile函数读卡的,该函数 没有办法设置读哪一个通道,只能提供数据缓冲区的地址和长度。 有没有什麽好的方法处理呢?请大虾帮忙!!!! |
|
沙发#
发布于:2002-08-12 13:39
用deviceiocontrol来读呢?
|
|
板凳#
发布于:2002-08-12 19:50
要求实时接收处理的,我是连续发送16个读IRP,然后等待返回事件,
返回了就写盘 驱动程序收到read irp就初始化DMA传输对象,进入dma回调程序,开始DMA传输,在中断服务程序中可以通过寄存器判断是哪个通道收满了数据,是不是可以在返回前,在数据缓冲区中增加一个标志通道 的字节?怎麽增加呢? |
|
地板#
发布于:2002-08-15 18:25
你的数据传输量是多达? dma size?用scatter/gather了吗?我也正在考虑交替使用两个dma channel,但不知道行不行?
|
|
地下室#
发布于:2002-08-16 21:27
dma size是8k,用了scatter/gather,如果两路信号的速率一样,交替读是没问题的,我试过了,如果不一样的话,就比较麻烦,我想还是应该由驱动程序在完成DMA传输后,返回一个通道信息,具体怎麽返回我还没想出来,难道每个读IRP后面都要跟个deviceiocontrol?
而且我用的是异步读,我总觉得deviceiocontrol应该用在立即就能 返回的场合,不知道我想的对不对? |
|
5楼#
发布于:2005-06-08 21:00
bspbsp:
小弟是新手,最近接到上司一个数据采集卡的驱动开发任务,要求用DMA方式,但不知如何开发,听仁兄说已经调通了单通道的DMA方式,不知能否将源代码给小弟发过来,让小弟参考学习一下,非常感谢,我用的模式是WDM,万分感谢!我的邮箱:fire_ice666@sina.com |
|