阅读:1170回复:7
s5933大牛看过来啊!!救命,55555
我想问一下,大牛们用的的数据传输方式是fifo还是passthru啊?
我想使用fifo方式,但是我遇到一个问题:我想使用master方式中的外加接口启动的模式,这是不是要外加板卡上的cpu对s5933进行数据传输的配置?其中s5933的MWAR(写目的地址寄存器)是如何确定的那?因为我要向pc送数据,但是我不太清楚,设置的这个地址是pc的物理地址?逻辑地址?驱动程序怎么知道到那去取数据那? 我得理解是master模式下,pci启动时,驱动程序是根据应用程序的地址确定MWAR的地址,读写pci控制寄存器中的fifo寄存器端口,外加接口响应的写读外接口控制寄存器实现数据传输。 在外加接口启动时,外加接口cpu设置MWAR,我直接读写fifo,我不知道pci是如何接受数据的?也是不断读写pci控制寄存器组中的fifo寄存器端口吗?MWAR中的地址值是怎么确定pc中的存放数据的位置的? 如果那位大侠帮帮忙,小弟不胜感激!!! |
|
沙发#
发布于:2002-11-06 18:31
给分了!!
谢谢ppphaitaoamingpan兄、brucezh兄,谢谢两位对我的帮助,十分感激。 以后还请两位多多指点啊! |
|
板凳#
发布于:2002-11-06 11:46
呵呵,还是ppphaitaoamingpan兄,太感谢了,待会放分,稍等片刻。 这个理解没错,是PC上的。是不是可以这样,驱动把缓冲区的物理地址写入MWAR,传送大小写入MWTC,然后向外设发信号,由Add-on 端在数据准备好时启动传输。 如果是这样的话,驱动并不难写。只要创建一个非分页缓冲区即可,可以利用DS提供的KDmaAdapter和KDmaTransfer类,这样问题的关键就变成了外设写数据和驱动向用户模式传输据之间的同步问题了。只要处理的好,应该没问题。 仅供参考。 |
|
|
地板#
发布于:2002-11-06 11:37
呵呵,还是ppphaitaoamingpan兄,太感谢了,待会放分,稍等片刻。
我的硬件设计中采用了外接fifo芯片,以提高传输速度。我的设计主要是由add-on端向pci端传输,那目的地址是否先需要由驱动程序传给add-on端,然后由add-on端设置MWAR啊?我需要由add-on端启动数据传输,我不明白的就是这个地址,我得理解是这个地址是内存地址啊,是pc上的,不是板卡上的资源了!!这样理解对吗? |
|
地下室#
发布于:2002-11-05 23:36
你做图象处理,使用FIFO进行DMA传输这样很快最大速度达到132MB/S
DMA的驱动程序也不难写,它每次能传输64M足够你用了! 驱动程序将基地址放在驱动程序扩展中!在访问MAILBOX和FIFO时应用程序给一个偏移量即可。方法同我给你的一样。这种方式很慢,因为FIFO只有32个字节(8个双字)。你可以用DMA的方式,PCI为主控方,将数据给FIFO,然后ADD-ON总线的设备从FIFO读取数据,此时应该同步,当然不是严格的同步,另外FIFO传输数据时注意FIFO管理表的应用。我在硬件上没有使用PASS-THROU但是我在驱动中做了,用起来比较繁。PCI读和写数据完全一样。 |
|
|
5楼#
发布于:2002-11-05 21:49
大佬们都干吗去了?
这么长时间了,也没人来帮帮小弟,要出人命了!!! 命苦啊!!! |
|
6楼#
发布于:2002-11-05 12:03
5933不是有本很详细的DataSheet么,里面有详细的描述。只是现在没在手边也不能给你详细的讲了。那还是两年前的事了。
|
|
|
7楼#
发布于:2002-11-04 15:29
最好给小弟讲一下fifo数据传输流程,如果那位仁兄愿意的话。
|
|