目前的位置: 首页 学术信息 正文

ZDS 2023技术报告分享第26篇:使用Wireshark分析USB通信(数据传输)


前言

2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。


ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。


今天分享第26篇技术报告,由胡星宇整理,题目为:

使用Wireshark分析USB通信(数据传输)



作者简介

Tomasz Moń是北欧半导体波兰有限公司的高级固件工程师。Tomasz是USBPcap——一个可以在Windows上实现USB捕获的内核驱动程序的发明者,同时也是Wireshark的核心开发者和各种开源项目的贡献者(例如OpenVizsla USB硬件嗅探器,数字音乐播放器的Rockbox固件)。Tomasz致力于在Zephyr中实现对USB设备的支持,其在裸机系统,RTOS,嵌入式Linux系统和Windows驱动程序方面拥有丰富的开发经验。



文章简介

在信息化时代,似乎人人都在使用USB,但很少有人知道它是如何工作的。本篇文章以Tomasz Moń的演讲为主要依据,将解释USB背后的基本原理,以及如何在Wireshark中呈现这些信息。



文章内容

USB技术的应用越来越广泛,我们常用的U盘、鼠标、键盘都是USB设备。我们有时也会遇见要对这种设备进行调试的情形,但是很少有人知道其实Wireshark也是可以胜任这一任务的。Wireshark可以像处理网络中的通信一样来捕获和解析USB设备的通信。Wireshark 2.0之后就加入了对USB协议的支持, USB协议版本有USB 1.0, USB 1.1, USB 2.0, USB 3.1等,目前USB 2.0比较常用。


文章前言

1. 术语

  • 将USB通信中的术语与网络通信中的术语类比:

  • 类比网络中的通信模型,USB主机可以看作是服务请求方,因为它向USB设备发出了通信请求;同时它也可以看作是DHCP服务器,因为它为USB设备分配地址,常见的USB主机有个人PC机,笔记本电脑等。USB设备可以看作是服务响应方,常见的USB设备有鼠标,键盘。

  • USB端口可以类比为网络设备的物理端口;USB集线器可以类比为交换机/集线器;USB的I/O地址可以类比为IP地址;设备端点可以类比为网络中的收发缓冲区;设备类型可以类比为网络通信协议。


2. USB 2.0依旧很通用


  • 目前流行的USB版本有USB 2.0,USB 3.x和USB 4.0。

  • 因为USB 2.0中只有一个差分对,所以只有半双工通信;USB 3.x和USB 4.0都是全双工通信。

  • USB 2.0支持1.5Mbps,12Mbps和480Mbps的数据传输率;USB 3.0支持的数据传输率最高可达10Gbps;USB 4.0需要USB-C接口,其数据传输率最高可达80Gbps。


  • USB 3.x和USB 4.0并没有取代USB 2.0,向后兼容性是通过双总线实现的,上层基本相同。

  • 每个USB 3.x集线器内部都包含USB 2.0和USB 3.x接口,USB 3.x和USB-C连接器包含专用的USB 2.0 D+/D-,所有USB 2.0规则都适用于D+/D-信号。

  • 许多设备如键盘、鼠标、控制器都能够很好的适应USB 2.0的数据传输速度。


3. USB传输的对象

USB将所有可能的传输信号概括为四种类型:


  • 控制信号:即一些命令,如 GET DESCRIPTOR、音量调节等。

  • 中断信号:鼠标,键盘等设备会产生中断信号,这些信号具有周期性,需保证延时和错误重传的特点。

  • 同步信号:音响等设备会产生同步信号,这些信号具有周期性,需保证带宽和无错误重传的特点。

  • 数据块。



USB通信捕获

  • 在Linux系统上,可以使用usbmon模块捕获USB的通信。在Linux系统上,使用sudo modprobe usbmon命令载入usbmon模块后,打开wireshark,选中想要监视的USB接口对应的usbmon过滤器,即可以进行相关USB接口的数据传输监视。在如下界面中,首先使用lsusb命令查看当前系统中加载的USB设备,将Zephyr USBD MSC作为目标监视设备,其在003号总线上,因此在wireshark中选择usbmon3过滤器。

  • 在Windows系统上,可以使用USBPcap捕获USB的通信。下图展示了配置USBPcap extcap的过程。

  • 在Mac OS系统上,可以使用XHC接口捕获USB的通信,在对设备数据传输进行监控前,需要先关闭Mac系统的完整性保护。下图展示了在mac系统中使用XHC监视USB数据传输的配置过程。


上一条:ZDS 2023技术报告分享第27篇:Zephyr消息总线(ZBus):轻量级和灵活的消息传递系统 下一条:ZDS 2023技术报告分享第24篇:使用Zephyr时提高效率的实用技巧

关闭

嵌入式与网络计算湖南省重点实验室
版权所有 © 2023 湖南大学