发布时间:2017-10-02 00:40:01
最近公司测试USB发现一个问题:将U盘插在单板上重启会概率性的出现检测U盘失败的情况,要重新拔插才能正确识别到U盘。这里将这个问题的分析做一个总结。首先查看日志,有如下错误打印:xHCI dying or halted, can't queue_commandcouldn't allocate usb_device从日志信息可以看出来,在检测到U盘.........【阅读全文】
发布时间:2017-09-16 15:12:32
最近调公司一款芯片的USB接口的驱动,USB3.0的控制器,枚举失败,有如下错误打印:device descriptor read/8, error -110即读设备描述符超时,通过USB协议分析仪抓包,发现host没有发出GET_DESCRIPTOR请求,分析怀疑:1.驱动发出的GET_DESCRIPTOR请求数据不对2.有cache一致性问题导致host取到.........【阅读全文】
发布时间:2017-08-06 11:08:51
xhci是USB3.0的host规范,对于SoC的芯片,xhci host作为一个platform_device,对于的驱动是usb_xhci_driver: dirvers/usb/host/xhci-plat.c 先看 xhci_init_driver: 这里用到了面向对象.........【阅读全文】
发布时间:2017-07-30 00:52:15
先看一张熟悉的图: 可见usb设备都是接在hub上的,设备的检测自然跟hub相关了,这里以root hub为例。看usb hub驱动代码,跟usb设备检测相关的有如下几处(按在hub_probe中的调用顺序):1.INIT_WORK(&hub->events, hub_event);2.usb_fill_int_urb(hub->urb, hdev, pipe, *hub->buffer, maxp, hub_irq, .........【阅读全文】