近期因为项目需求,又一次与USB EHCI亲密接触。
有如下问题:
1. 对ECHI通过HUB去处理full/Low speed device,当control传输(获取string descript)时,如果遇到short packet的情况,会导致USB 传输死掉。对那个地址的USB设备没有响应了,EHCI不再产生中断,不知道是因为设备发送请求没有成功,而没有产生中断,还是什么原因。
2.一个fullspeed的camera(Microsoft lifecam VX1000),和USB mouse同时工作会有冲突,(可能与USB耳机工作的话,冲突会更严重)。会导致USB鼠标产生transaction Err or babble.不知道什么机制导致的这个错误。
3.(更严重,或者更不好定位)USB耳机,camera, headset一起工作,开个视频会议的应用,程序跑上二十分钟,EHCI不知道遇到什么error, 自己把port disable了,因为所有的外设是通过hub挂到这一个port上去的,所有的外设均停止工作了。
应用是将EHCI下面通过hub的trasation traslator 去处理full/speed设备,不过因为驱动处理的不好,而导致诸多错误。
不过根本原因在哪儿呢?
有路过的高人指点。
感觉,这下,与USB真是打的水深火热了!
2012年1月12日
对于USB iso endpoint,要从中读数据,这个数据长度不是由td或者itd的中的len域长度指定的,当host发送in token后,设备中有多少数据会向上传送多少数据。因此为了不产生packet babble的error,因此在那个长度域中指定max packet size就可以了;
还有个情况:frame babble,在使用microsoft cinema cameral时,我抓到了frame babble这种error,maxpacket size是0x400,结果一个microframe中传上来180KB的数据。不知道这是不是device的问题,严重超载呀,必然的会导致严重的安全事故。。。
但什么原因引起的这种错误呢?
阅读(1666) | 评论(0) | 转发(0) |