小弟今日在编写Linux下Cy7C68013A的驱动,在Skeleton模板的基础上进行开发。
在参考了前辈的几个帖子后,增大通信时读写的字符长度,确实能提高传输速率。但是把采集的数据写入文件后用Matlab查看,发现有丢失数据的现象。丢失数据的字节数并不是芯片上缓冲区512的整倍数,而且传输速率越快,每次丢失的字节数越多。我读数据用的是在内核里开一个线程,用usb-bulk-msg来读取,现初步断定是读线程在运行过程中被CPU调度挂起,让出时间片给别的线程和进程运行时,设备发送的数据溢出缓冲区造成的。
同一个固件程序,linux下跑到4MB就会出现丢失数据的情况;而Windows下用BeginDataXfer、WaitForXfer和FinishDataXfer的方式,能稳定的跑到10MB。
各位大侠,是小弟的驱动结构有问题,还是使用函数方法有问题?为啥和官网的Windows驱动差距就那么大呢?
刚刚加入21ic,没什么分,江湖救急,大家多多担待。 |