[USB驱动] 请教一个Cy7C68013A驱动丢帧的问题

[复制链接]
2266|4
 楼主| pzb19841116 发表于 2013-10-21 10:16 | 显示全部楼层 |阅读模式
小弟今日在编写Linux下Cy7C68013A的驱动,在Skeleton模板的基础上进行开发。
在参考了前辈的几个帖子后,增大通信时读写的字符长度,确实能提高传输速率。但是把采集的数据写入文件后用Matlab查看,发现有丢失数据的现象。丢失数据的字节数并不是芯片上缓冲区512的整倍数,而且传输速率越快,每次丢失的字节数越多。我读数据用的是在内核里开一个线程,用usb-bulk-msg来读取,现初步断定是读线程在运行过程中被CPU调度挂起,让出时间片给别的线程和进程运行时,设备发送的数据溢出缓冲区造成的。
同一个固件程序,linux下跑到4MB就会出现丢失数据的情况;而Windows下用BeginDataXfer、WaitForXfer和FinishDataXfer的方式,能稳定的跑到10MB。
各位大侠,是小弟的驱动结构有问题,还是使用函数方法有问题?为啥和官网的Windows驱动差距就那么大呢?
刚刚加入21ic,没什么分,江湖救急,大家多多担待。
 楼主| pzb19841116 发表于 2013-10-21 10:41 来自手机 | 显示全部楼层
pc与芯片之间无存储芯片做缓存,可官方window驱动却能稳定跑到10MB。虽说要承认与国外有差距,太这差距也太大了吧。
 楼主| pzb19841116 发表于 2013-10-21 11:50 来自手机 | 显示全部楼层
看论坛人气很旺,为什么没人出援手呀?
 楼主| pzb19841116 发表于 2013-10-21 15:45 来自手机 | 显示全部楼层
抱歉可能没有描述清楚,使用环境是usb以恒定速率向上位机传数据,我用多线程采,当设备速率到4MB以上时,就会丢失数据。暂时估计是线程调度导致。官方驱动却可以做到不丢数据,请问我的驱动设计有什么缺陷吗?
woshansi 发表于 2014-1-31 12:26 | 显示全部楼层
你这问的好像有点高端吧,不懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部