本文将介绍当 USB 设备连接到PC 上标准的 USB 端口时,PC 到底发生了什么。
连接戴尔制造的键盘。 分析通信内容的示波器。
当 PC 检测设备时,首先要检测设备是低速还是高速。
在示波器方面,低速设备D-高速设备D 高电平。 然后,PC 重置识别后,它将开始与设备通信。
当设备首次连接时,设备将向前连接 PC 发送设置数据包。 现阶段目标没有实现 ID 地址分配给设备,所以目标是 ID 地址和终点都显示了 0。 设置使用此 0 完成地址,然后发送数据。
根据每个设备的特定格式识别后续设置数据。 这个数据包是00 05 0C 00 00 00 00 00 00”。 以十六进制表示。
第一个字节表示请求类型。
对于此连接的键盘, bmRequestType 为“00” , 所以二进制表示法是000000 。 再按D7 、 D6 · D5 、 D4 ~ D0和位分组 , 将其改为十进制数 。 D7 是 0,因为 D7 是 0“从 PC 作为主机发送到设备 D6D5 也是 0是标准请求 D4 到 D0 也是 你可以看到收件人是设备的方向。
下一个字节 (05) 表示是具体要求。 确认后,您将看到参见表 9-3”。
由于 bRequest 值是05,所以你可以看到内容是05SET_ADDRESS”。
然后,检查请求指示w 值”、“wINdex”和“wLength”值。
w 值、w 索引和 w 长度是两个字节。
从示波器的角度来看,wValue 是“0C 00”,wINdex 和 wLength 是“00 00”。
这三个都有具体的要求,让我们来看看。 w 值表示设备地址。
由于 wValue 是“0C 他们在转换过程中排序,所以他们实际上说0000C设备地址是C”。
wINdex 和 wLength 在这种情况下,是零。
试着在电脑上运行lsusb命令。 将显示所有 USB 但是你可以看到12(16进制 C)”设备。 刚刚连接的戴尔键盘似乎在示波器中检测得很好。
设置命令分配 C 0C,指定终点 0。
当然也有数据包从USB将键盘发送到您的计算机。
USB 设备向 PC 发送数据包后,从 PC 返回设备的请求是6。
“6”是“GET_DESCRIPTOR这意味着 PC 请求设备描述符。 当计算机中的设备识别时 USB 它不知道设备是什么。 可能是鼠标,也可能是硬盘驱动器。 因此,PC 要求设备描述其内容。
下一个数字是10 01”。 这意味着连接设备是 USB 1.1。
它还标记了制造商和产品的序列号。
电脑知识