阅读:1562回复:9
我只剩28分可给了,请众兄弟们进来看看
兄弟们帮我看一下这个方案可不可行:pc与usb设备之间互相传输数据的过程:pc通过不断扫描usb固件中的某个寄存器来判断usb设备是否要传输数据给pc,usb设备也通过不断扫描usb固件中的某个寄存器来判断是否pc想传输数据给usb设备;假设usb设备要传输数据给pc,这时usb设备将usb固件中的某个寄存器置为1,当pc扫描到该寄存器为1后,就开始调用readfile函数进行读操作,当pc读取完数据后,pc调用writefile函数将usb固件的另外一个寄存器置1,以通知usb设备数据以被接收完毕
(小弟原来是做计算机内的软件的,对usb固件实在不熟悉,上面的过程是我推测出来的,请大虾们评价一下,若不可行,那还请众大虾帮我提供一个用于pc和usb设备之间互相传输数据的模型) |
|
沙发#
发布于:2003-06-02 16:27
“pc通过不断扫描usb固件中的某个寄存器来判断usb设备是否要传输数据给pc” 是不可实现的,主机可以通过发送in令牌来判断设备是否有数据要传输,而设备方是通过中断来判断主机是否有数据发过来的。你说的那种方式其实协议上已经用另外的方式(如上)实现了,你如果想想实现连续不间断的传输,可以用iso方式,如果是定时的传输,可以用int方式。
|
|
板凳#
发布于:2003-06-02 16:49
JINGHUIREN老兄,你能否给个qq号码给我,或者给个邮箱地址给我,我还有好多问题想向你请教
|
|
地板#
发布于:2003-06-02 16:50
我的qq是6702731
|
|
地下室#
发布于:2003-06-03 09:28
“pc通过不断扫描usb固件中的某个寄存器来判断usb设备是否要传输数据给pc” 是不可实现的,主机可以通过发送in令牌来判断设备是否有数据要传输,而设备方是通过中断来判断主机是否有数据发过来的。你说的那种方式其实协议上已经用另外的方式(如上)实现了,你如果想想实现连续不间断的传输,可以用iso方式,如果是定时的传输,可以用int方式。 jinghuiren老大,我如果用bulk方式实现连续不断的传输可行么? 我的qq是10110181,也加我吧。 |
|
|
5楼#
发布于:2003-06-03 10:09
bulk方式驱动每次能处理的一般是64kB,也就是说接收或者发送完这么多数据后就会返回,因此返回的占用一些时间,如果固件方此时还在不断的往端点中填充数据,而且MCU足够快的话很可能会有数据丢失的,有人已经发现这一点,我倒没有验证过。
|
|
6楼#
发布于:2003-06-03 10:13
bulk方式驱动每次能处理的一般是64kB,也就是说接收或者发送完这么多数据后就会返回,因此返回的占用一些时间,如果固件方此时还在不断的往端点中填充数据,而且MCU足够快的话很可能会有数据丢失的,有人已经发现这一点,我倒没有验证过。 我现在就是这种情况!!我以前一直没弄清是主机方还是设备方的原因,多谢jinghuiren大哥。那么我怎么能解决这种问题呢?设备方多延迟? |
|
|
7楼#
发布于:2003-06-03 11:53
对于设备传输的延迟,只有提高mcu的速度,或者简化程序!
比如在主循环里采集数据到缓冲区,在中断中发送! |
|
8楼#
发布于:2003-06-05 18:27
我准备使用dsp5509,通过usb通信连到主机,我的传输速率大概是1Mbyte每秒,用bulk方式行吗? |
|
9楼#
发布于:2003-06-06 08:13
好象讨论来讨论去离楼主的意思越来越远了
我碰到的问题也是两个irp之间丢数的毛病(我现在大概是15MB/S),可能跟以前有个帖子“deviceiocontrol和内核之间的通讯需要2ms”的意思差不多,我观察这时间大概是200us左右。 现在我的解决方案是在外围多加一级fifo,做一下缓冲,这样应该不会丢数,实验正在做。大家有什么好的解决方案是否可以讨论一下?至于其他提高mcu速度的方法,我觉得我用的这个机制(bulk,一个deviceiocontrol提交一个irq)本身有问题,不缓冲数据必然丢失,楼上提出的在中断里发送的方法也有道理,只是用于传送图象信号,行中断太窄,而且一个irp容量也小,速度会慢。场中断够宽,但一场数据太大,远远超过64K,需要改驱动。 |
|