本文是<实战解析 USB HID 协议>的后续, 文中只有一个细小的新知识点, 主要是补充USB HID Mouse的HID Report Descriptor和Input Report作为例子, 供读者学习参考. 这回我换套工具, 用(昂贵的)Lecroy USB Protocol Suite捕捉/呈现USB Mouse数据(其实USB协议分析仪主要用在硬件产品设计阶段, 用于定位/分析回路或固件设计缺陷; 用来抓USB2.0 Full Speed设备的数据实属杀鸡用牛刀). 下图是USB Protocol Suite在USB发射器插入后捕获的USB设备的SETUP Transfer:
上图中Transfer 1# ~ Transfer 17#是所有USB2.0设备所共有的Standard Request;Transfer 18# ~ Transfer 19#: USB Host向USB Device请求USB Keyboard HID Report Descriptor;Transfer 20# ~ Transfer 21#: USB Host向USB Device请求USB Mouse HID Report Descriptor.
USB Protocol Suite解析得到的Keyboard/Mouse Report Descriptor分别如下:USB Keyboard HID Report Descriptor (完整Keyboard Report Descriptor 报告见附件html文档)
USB Mouse HID Report Descriptor (完整Mouse Report Descriptor 报告见附件html文档)
USB Protocol Suite 为USB Keyboard生成的HTML文档大小32KB; 为USB Mouse生成的HTML文档大小 80KB. 可见USB Mouse的功能更为复杂(毕竟在设备管理器里HID Keyboard才1个虚拟设备; HID Mouse有5个虚拟设备).
依然使用前一篇文章总结出来的方法, 按以下步骤进行解析: a). 按UsagePage/Usage/Collection & End Collection进行分组(绿框部分) ; b). 把Collection & End Collection中相同的Main Item归为一类(红框部分), 同时计算Hid Report将占用的Size; c). 解读各个字段含义;
Step a). 按UsagePage/Usage/Collection & End Collection进行分组. 按这个规则可以分5组, 如下图. 5个分组中只有第一个分组的用途是Mouse (Usage (Mouse)), 因此我们将注意力集中在此:
Step b). 把Collection & End Collection中相同的Main Item归为一类(下图中所有红框都属于Input Main Item).
登录后可查看完整内容
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-289733.htm
[原创]实战解析 USB HID 协议 2
219 浏览
1 回复
学习了。之前还是做模拟锁驱动时研究过点,但是没有向你一样系统性整理。