usb设备描述符获取异常

scutwyz 2013-04-11 03:59:54
一个控制传输,请求device-descriptor?(请求18字节那种)
在模型 ehci->usb2.0->hub2.0->usb1.1->低速设备中
呈现出理想状态:
setup->in->in->in->out 控制端点深度8字节,18字节的描述符正好拆开为3份,3个in包
以usb 分析图作为证据

在另外一个模型中:(对比第一个模型,将ehci主控器支持编译出内核。电路,电源没有任何变化)
ohci->usb1.1->hub2.0->usb1.1->低速设备
就经常出现:(也有一定正常的可能,调节尝试最大次数可以勉强解决问题)
setup->in->in->out 状态
总之,就是第一个in包不见了,对应的8字节数据也没有了。其余包完全正常。
以上也有usb 分析仪作为证据

请问,这是什么回事呢?
获取设备描述符,属于usb子系统中, usb-core 那部分,不可能有错,我这个小白看起来也没有问题。设备却在不同的主控器表现出各异的现象。

各位usb方面的专家,帮我这一次吧!真是求大家了。

...全文
769 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
scutwyz 2013-04-13
  • 打赏
  • 举报
回复
有提高其兼容性的方案吗?
IT民工老巢 2013-04-13
  • 打赏
  • 举报
回复
兼容性不好,我遇到过
ppzzhhsky 2013-04-12
  • 打赏
  • 举报
回复
也可以换个USB设备
ppzzhhsky 2013-04-12
  • 打赏
  • 举报
回复
他的BUF 不够,只有8BYTE,所以要3次,可以尝试换个HUB试试
ppzzhhsky 2013-04-12
  • 打赏
  • 举报
回复
2.0hub和1.1兼容性不好
scutwyz 2013-04-12
  • 打赏
  • 举报
回复
ohci主控器会不会兼容性很差啊?
szgrape 2013-04-12
  • 打赏
  • 举报
回复
正常来说通过EP0下发一个控制命令,setup->data->ack 然后设备回应的是一个intoken包 in->data->ack 不太明白你说的分成3个包是啥意思
scutwyz 2013-04-12
  • 打赏
  • 举报
回复
更正:我提及的包实际上应该是传输 setup 传输 ----》 setup 包 data 包 ack in 传输 ----》 in token包 data 包 ack (这一次的传输经常会丢掉) in 传输 ----》 in token包 data 包 ack in 传输 ----》 in token包 data 包 ack out 传输 ----》 out token包 data 包 ack 措辞不当,万分抱歉
scutwyz 2013-04-12
  • 打赏
  • 举报
回复
控制端点的FIFO 一般不是 8 byte的吗?(本人小白) 所以18字节拆分成了 3个data包,也就是理想状态。 但是,经常会出现只有两个包的情况,也就是第一个包会丢失。 ehci->usb2.0->hub2.0->usb1.1->低速设备 -------》不会丢包 ohci->usb1.1->hub2.0->usb1.1->低速设备 -------》经常丢掉第一个包 罗列以上只是为了对照 实际上:ohci 直连低速设备也会出现类似的现象 抱歉,还是请求大家帮忙啊!
scutwyz 2013-04-11
  • 打赏
  • 举报
回复
帮忙啊,各位

21,615

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧