打印

急!!!CY68013A BULK传输丢失数据问题

[复制链接]
5272|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
emesjx|  楼主 | 2011-3-13 11:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们的一个实时图像采集系统使用CY7C68013A,如果电脑的南桥芯片是ICH4(Intel 82801D),不管是笔记本还是台式机,图像采集时,USB2.0的BULK传输都很好,不丢数据,如果南桥是ICH6以上的,用笔记本采集图像丢数比较多,而台式机则很少。也就是说,对笔记本而言,速度越高(电脑越新),丢数越多,反而06年左右的老笔记本很稳定,不丢数据。操作系统都是WinXP SP2、SP3。2个问题:
1、为何性能越好的笔记本,USB2.0的BULK传输性能反而越差?
2、为何台式机没有这个问题?笔记本与台式机的差别在哪里?(就我所知,笔记本就多了1个电池管理功能,但拨掉笔记本电池用交流供电并卸掉所以电源管理程序也一样)。
不知有没有人遇到我这种情况,Cypress公司的技术人员说也有其他用户遇到过这种情况,但他们也没找到原因。
请高手给予指点。

相关帖子

沙发
dqyubsh| | 2011-3-13 14:46 | 只看该作者
没做这么高的速度,我的USB+DSP板子加上协议能做到6MBytes/s,感觉够用了,也没时间继续深挖。

听起来像是哪个底层的环节出了问题,是不是主板的硬件支持库没装(跟芯片组有关系,每个主板都有个光盘,笔记本也有)。或者是你的通讯协议写的不完善。

我想知道,你的每一次传输是何种形式实现的,主机与设备如何握手,每一次是不是都有状态标识,如果出现丢帧怎样处理。

使用特权

评论回复
板凳
emesjx|  楼主 | 2011-3-14 12:48 | 只看该作者
因摄像机是线阵的,黑白的为512像素,彩色的为3*512=1536像素,1个ms传输1行,因此速度不是很高的,黑白的为512K*8=4Mb/s,彩色的为1536K*8=12Mb/s,每次BULK传输读1行,Device采用Slave FIFO构,端点Buffer为4X512,图像数据实时写入FIFO,如果上FIFO写满没读走,则会覆盖写入。PC端程序使用1个最高优先级的线程完成BULK传输。从调式结果看,好像是PC机有时没有进入线程去完成BULK输入,以至于FIFO中的数据被覆盖写入造成数据丢失。

使用特权

评论回复
地板
dqyubsh| | 2011-3-14 19:52 | 只看该作者
USB通讯是主机发起的,什么时间从设备获取数据,并不是设备说了算。而主机操作系统Windows也不是个实时的系统,常常因为各种原因“卡”,这时候,设备再准备好数据,主机也没法取了。

解决这个问题可能有两种方法:
1)如果设备数据很重要,丢不得,那么设备这端要有个缓冲,缓冲的数据量要足够应付主机“卡”的时间,估计总要30ms吧。
2)设备可以丢数。比如你这个例子,可以把数据收上来,根据是图符的次序,把丢帧的数据扔掉。既然主机都“卡”了,干嘛不可以把当下一幅图像甩掉呢。

寄希望于windows,提高线程优先级,那根本不靠谱。你可以说电脑飞快,根本不“卡”,但这仅仅是一厢情愿。系统本身按时间片来执行各个任务,后台几十个程序,哪个都会突然间抢占时间,最起码还有个IDLE线程在那守候。在某种条件下强行拼凑出来的产品没有普适性,不堪一击。

使用特权

评论回复
5
emesjx|  楼主 | 2011-3-15 22:06 | 只看该作者
谢谢2、4楼的提示,USB的主从关系我们都知道,主机要“卡”也清楚,丢少量数据软件中也做了相应处理,关键问题是为何台式机要比笔记本好(台式机只是偶尔丢少量数据)?为何性能越好(速度越高)的笔记本丢数越多?同样的操作系统,主板驱动也装了。管理USB的同型号的南桥(如ICH6)芯片,笔记本的与台式机的底层(硬件与软件)又有何区别?不同型号(如ICH4与ICH6)的南桥又有何区别?等等。

使用特权

评论回复
6
emesjx|  楼主 | 2011-3-15 22:09 | 只看该作者
听说有些USB分析仪在笔记本上不好用,不知这里有没有那位开发过或使用过USB分析仪?有没有这方面的心得?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

30

帖子

1

粉丝