阅读:1641回复:8
Amcc5933的DMA传输驱动具体情况如下,硬件用windriver作驱动可以比较稳定在4MB/s,几乎不出错。 用从驱动开发网上下载的那个pci-wdm-v1.4.zip驱动程序,无论工作在10MB/s,还是4MB/s,甚至100KB/s,都会产生相同的错误。所以肯定是驱动的问题。 错误的现象如下: 收到的数据中会产生跳变,每次跳变字节数必定为4或12或16或24,最多24字节,而且跳变的内容肯定是其后不远(间隔8或12或16或24个字节)处的数据,如下所示: 。。。03 04 05 “1a 1b 1c 1d ” 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d。。。 你看应该是06 07 08 09 的地方变成了1a 1b 1c 1d,而且必然是其后不远处的数据(距离是4字节的倍数)!! 其它情况: 1、如果只把数据从设备dma到用户内存,等dma结束后再把内存中的数据写到硬盘,数据就不会错!! 2、如果dma的同时也写盘,数据会出错,20-50个/400MB!! 3、如果设备和显卡共用一个中断号,即使采用1的方法,当屏幕有变化的时候也会出错!! 4、当采用1的方法时,另外开一个进程写盘,数据也会错! |
|
|
沙发#
发布于:2002-02-06 15:29
我就是用pci-wdm-v1.4.zip驱动程序改的,很好呀!
你的AMCC那一头连的什么东西呀? |
|
|
板凳#
发布于:2002-02-06 16:07
你自己的5933一定要改一些东东的,应该不可以直接用吧。你看一下硬件设计和例程的不同之处吧,不会完全一样的
|
|
|
地板#
发布于:2002-02-07 14:21
我就是用pci-wdm-v1.4.zip驱动程序改的,很好呀! amcc的addon端接输入的32位数据,并且有一个cpld产生输入时钟。当cpld检测到fifo满的时候,就停止往fifo里写数,同时外部有一个大的fifo进行缓冲。 因为用windriver在4MB/s下可以正常工作,所以应该是软件的问题。 我对那个例子也改了点儿内容,但主要的流程没变。难道哪里改坏了? 你加入超时取消irp的功能了吗? 要不我把我的代码发给你,帮忙看看好吗? |
|
|
地下室#
发布于:2002-02-07 15:38
真是抱谦,现在一直都很忙,要到了4月份才有空啊。
我不会用windriver和ds 的工具,现在只会用ddk. windriver和ds的都带有5933的,工作也不正常? 直接发信给lxf吧,他可是高手哦。 硬件是你自己设计的吗, good lucky。 |
|
|
5楼#
发布于:2002-02-07 22:22
真是抱谦,现在一直都很忙,要到了4月份才有空啊。 谢谢你! 已经好了,那个wdm的例子果然好用,是我的应用端写的效率太低了。现在10MB/s可以支持了,只不过前3M字节会丢数,以后就稳定多了。 windriver工作正常,只是效率不高。不过我现在怀疑是自己的代码效率太低了:( 硬件不是我设计的。设计硬件的家伙被我害惨了,真是过意不去!! 现在好了,可以放心回家过年了。谢谢你和lxf这么热心帮助我,祝你们春节快乐! |
|
|
6楼#
发布于:2002-02-08 09:57
如果设备和显卡共用一个中断号,即使采用1的方法,当屏幕有变化的时候也会出错!
在你的中断里有没有识别处理? |
|
|
7楼#
发布于:2002-02-08 21:35
如果设备和显卡共用一个中断号,即使采用1的方法,当屏幕有变化的时候也会出错! 有识别处理,就是读intcsr检验是否发生中断。问题还是出在客户端,今天有进步了,连初始信息都不会错误了,真爽啊:) |
|
|
8楼#
发布于:2007-12-08 15:48
pci-wdm-v1.4.zip驱动程序在站内怎么没有啊!
大虾能给个链接么? |
|