linux usb枚举过程,USB枚举过程及波形分析

本文记录为了解决某个手机在特殊条件下无法和车机连接问题(AOA协议连接),学习USB协议及驱动工作原理过程中整理的笔记。

方法: 阅读Universal Serial Bus Specification Revision 2.0,理解USB设备的识别及通信过程,理解高速通信握手过程,分析USB总线上的数据包。

工具: 示波器,usbmon

参考文档: Universal Serial Bus Specification Revision 2.0,Linux USB驱动源码

主机:USB HOST

设备:USB DEVICE

HUB:介于主机与设备之间的通信设备,位于主机端

文章目录

波形一览

阶段A:发现设备

阶段B:枚举设备

阶段C:分配地址与配置

阶段D:发现设备(2)

阶段E:枚举设备(2)

阶段F:分配地址与配置(2)

注意

1:为什么设备连接过程中出现了两次High-Speed握手配对?

2:usbmon log数据分析错误?

波形一览

截一个AOA连接正常的波形,先把波形图分为了几部分后面根据每个部分单独分析。

linux usb枚举过程,USB枚举过程及波形分析_第1张图片

阶段A:发现设备

A:该部分为HUB发现USB设备接入,D+数据线上设备端的3.3V上拉电阻拉高,此时HOST端的HUB检测到设备接入。稳定100ms后HOST发出reset信号。reset部分放在B阶段讨论。

阶段B:枚举设备

首先将B处波形放大图贴出来:

linux usb枚举过程,USB枚举过程及波形分析_第2张图片B1:此处就是前面提到的HOST触发的reset信号,

你可能感兴趣的:(linux,usb枚举过程)