阅读:2172回复:12
100分求PCI9054DMA中断
我这段时间弄了个数据采集卡,采用DMA传输方式,A/D转换后的数据送入RAM中保存,空间是512K,当写满后要求主机从RAM中读取数据到内存中,但我不知道怎么样才能通知主机开始DMA传输,能不能用本地中断在驱动程序中引起一次读操作,在read()中设置DMA传输开始,如果这样的话,在驱动程序中怎样才能引起读操作呢?
|
|
沙发#
发布于:2003-12-18 08:47
在Windows 2000/XP WDM设备驱动程序开发 这本书里,有9054DMA中断的实例,你可以找找看。
|
|
|
板凳#
发布于:2003-12-18 09:02
具体点说,9054设置在DMA工作方式下,主机设定本地和PCI端的起始地址,传输字节数和传输方向,有软件设置DMA传输的方式(单周期,四个突发数据周期或永远突发直至传输结束),另外不知你用什么开发的,要是用Windriver来编写设备驱动程序的话,它针对PLX的9054和AMCC的专用接口芯片特别编写了API函数包,这些函数能够方便地实现中断处理、DMA传输、I/O操作、内存映射以及即插即用等功能,另外WinDriver提供了许多例程,可以利用它们来产生自己驱动程序的基本框架
|
|
|
地板#
发布于:2003-12-18 09:31
谢谢各位的解答,我用的是driverwork作驱动开发,还没有windriver这方面的资料,如果amaosonic兄有的话能不能给兄弟一份,我参考了武安河的那本书,但它的中断只是由应用程序发出的DMA读FIFO,而我的中断是由本地设备发出,用来通知主机进行一次DMA传输,中断信号由LINT#输入,而DMA传输结束PCI9054还会再发出一个DMA传输结束中断,因此我的驱动中有两个中断服务程序,他们分别由两个中断线产生,INTA#和INTB#,另外不知BTERM#信号要不要产生
|
|
地下室#
发布于:2003-12-18 13:44
书的话,你已经有了吧? 软件本站好像就可以下的了. 或是你任意找个破解版都可以download 了。
|
|
|
5楼#
发布于:2004-02-10 10:32
suyuanping大侠:
我正在用9054 做数据采集卡。使用commonbuf block dma ,用driverworks 做驱动,dma 传输不正常。 请教,你的问题解决了吗,能否说说如何解决。 |
|
6楼#
发布于:2004-02-10 15:13
有个贴子上有人说用DRIVER STUDIO 3。0就没问题了。
fix DMA的一个什么错误 |
|
7楼#
发布于:2004-02-11 10:16
amaosonic兄,我用的也是9054+windriver,都能dma了,就是dmastart dmaclose一次,才能产生一次中断,dma中断里判断dmais done后读数据,可是怎么就一次啊!
|
|
|
8楼#
发布于:2004-02-13 19:45
wanghb369兄,我的问题已解决,我是在应用程序中发出一个读数据请求的,采用通道0 BLOCK DMA方式,在驱动程序中首先设置好通道参数,在STARTDMA()函数中设置,当驱动程序接受到读数据IRP请求包时启动DMA传输,数据传输完毕产生DMA中断,然后在中断程序中禁止和清除中断位,同时调用延时调用程序来完成数据传输到应用程序缓冲区中
|
|
9楼#
发布于:2004-02-17 16:05
中断和dma读数一起用?
还是dma channel的中断? |
|
|
10楼#
发布于:2004-02-18 11:04
suyuanping 你说的那样不行哟,你是怎样创建一个设备控制器的哟
|
|
11楼#
发布于:2004-02-18 11:08
julan你好,怎样调用PCI的RAW驱动呀
|
|
12楼#
发布于:2004-02-19 09:03
dnykang,我没明白raw驱动you said.
|
|
|