USBMon、DebugFS、Trace 与故障排查
1. 枚举
1 | lsusb |
lsusb -t确认速度、拓扑、driver和root hub。
2. Sysfs
1 | readlink -f /sys/bus/usb/devices/1-1/driver |
3. usbmon
Defconfig列出USB_MON。挂载debugfs后:
1 | modprobe usbmon |
Wireshark可读usbmon binary接口。抓包含payload和控制请求,需按敏感数据保护。
4. Trace
USB/DWC3/xHCI tracepoints可通过tracefs启用,适合分析URB延迟、role切换、endpoint和controller events。
5. DebugFS
可用节点依配置:
- DWC3 registers/events/link state;
- xHCI rings/contexts;
- usbmon;
- gadget/UDC;
- Type-C/TCPM trace。
Gadget debug files已在defconfig列出,但最终 .config仍需核对。
6. 枚举失败阶段
| 日志/现象 | 重点 |
|---|---|
| 无connect | VBUS、D+/D-、PHY、role |
| device descriptor read error | 电源、信号、reset、线材 |
| address失败 | controller/Hub/设备firmware |
| config descriptor错误 | 设备描述符 |
| driver未绑定 | ID/class/Kconfig/module |
| USB2正常USB3失败 | SS lane、orientation、PHY、线材 |
7. 常见errno
-71EPROTO;-110timeout;-32EPIPE/stall;-19ENODEV;-108ESHUTDOWN;-75EOVERFLOW。
同一errno不是唯一根因,需结合发生阶段。
8. RK3588检查
1 | dmesg | grep -Ei 'dwc3|xhci|ehci|ohci|usb2phy|usbdp|typec|tcpm' |
同时确认regulator、GPIO、power domain和PHY状态。
9. 性能
使用fio/iperf/实际UVC workload并记录:
- negotiated speed;
- UAS/BOT;
- xHCI errors;
- CPU/IRQ affinity;
-IOMMU/DMA;
-autosuspend;
-线材/Hub;
-thermal throttling。
10. 方法
先固定单端口、短线、无Hub、autosuspend临时关闭,再逐项恢复变量,避免同时修改DTS quirk和driver参数。
正在加载留言…