1.机箱后面的usb口供电能力强,前面的容易出现供电不足现象
2.使用vnc远程登录远端ubuntu进行usb烧写数据通信,会发生数据通信不稳定[这是发生在我身上的现象,仅仅记录下来而已]
3.好多笔记本上和Intel处理器(DELL OptiPlex 330)台式机上,前后口usb对于我们的设备,供电都不足,必须另外购买带电源的usb hub,在AMD处理器(DELL OptiPlex 740) 台式机上我们的设备连续发送100M左右数据时usb通信运行正常
4.usb数据传输线太长或者usb数据线质量太差
5.USB接口性能不稳定
【故障现象】主板上的USB接口有时能正常使用,有时却工作不稳定。【故障分析与处理】估计是主板上的USB接口供电能力不足。USB接口不光是要进行数据传输,也会对连接在其上的设备提供外接电流。如果外设需要的电流较大,USB接口不能很好的提供充足稳定的电流,则可能导致设备在使用时出现故障。而对一些较小,耗电量少的设备,USB接口能很好的为其提供稳定的电流,这些设备连接在USB接口上便能稳定的工作。
通过在Intel处理器(DELL OptiPlex 330)台式机上分别使用
libusb-0.1.12用户态驱动,和基于drivers/usb/misc/usblcd.c修改后的内核态ko驱动,
都表现出和我们的设备usb通信不稳定现象,在本台Intel处理器(DELL OptiPlex 330)台式机安装windows xp系统,然后安装相应的windows版本工具的usb驱动[应用程序和linux一样],发现windows下usb数据传输速度远远低于ubuntu下usb数据传输速度,这是怎么回事?
通过外加带电源的usb hub发现不稳定现象依然存在,但是在笔记本上windows版本软件,出现同样的usb通信不稳定现象之后,外加带电源的usb hub之后,这种不稳定现象就立即消除了,这是怎么回事?
在AMD处理器(DELL OptiPlex 740) 台式机上无论libusb-0.1.12用户态驱动,和基于drivers/usb/misc/usblcd.c修改后的内核态ko驱动,都表现的很出色,通信非常稳定,也不用外加带电源的usb hub,这是怎么回事?
Intel处理器(DELL OptiPlex 330)台式机和AMD处理器(DELL OptiPlex 740) 台式机安装的都是完全一致的ubuntu操作系统,都经过完全一致的软件安装和系统升级,
那只能说明ubuntu在Intel处理器(DELL OptiPlex 330)台式机上的usb设备通信表现不佳,
但是在Intel处理器(DELL OptiPlex 330)台式机上插入u盘进行1G数据传输,通过diff比较前后文件,发现根本不存在错误数据,这是怎么回事?那么前面的怀疑都被推翻了,哎,搞不懂,对了我们的设备是自供电的,同时设备也会通过usb充电,但是在usb传输数据期间,会把充电功能关掉,搞了好几天了,搞不懂,放弃了,把调试过程发表出来,如果哪位大虾能够发现问题出在哪,希望不吝赐教[gliethttp_20080529]!!!
ps:可以肯定的是pc确实已经把通信数据发送下去了,在调用read的时候,一直不能等到设备返回应该返回的状态信息,协议上可能不存在丢包后数据重发机制,所以可能确实是因为pc下发的数据包丢失了,所以设备端因为没有收到数据,以及校验包完整性措施,进而,不能和tcp/ip数据传输那样有很好的容错能力,看来marvell设计的这个通信不成熟阿,
所以在协议设计上,对丢包处理、数据干扰后的校验重传机制等对任何产品来说不是必要的,而是必须的,所以文件切包之后进行包序号标记是很有意义的,可以参考成熟的tcp/ip数据传输、校验、重传等方式![gliethttp_20080529]
ps:所以从这里来看,所谓的设备通信不稳定,就是在于设备对丢包和误码处理不完善,虽然bulk类型端口的通信能够保证数据传输正确性,但是不能保证因为线路干扰严重或者系统自身的问题超过bulk内定的重试次数之后引起的丢包现象![gliethttp_20080529]
阅读(9223) | 评论(1) | 转发(0) |