首页|资源下载
登录|注册

您现在的位置是:首页 > 技术阅读 >  当手机插入电脑后,秘密私语了什么(七)?

当手机插入电脑后,秘密私语了什么(七)?

时间:2022-09-29

来源:公众号【鱼鹰谈单片机】

作者:鱼鹰Osprey

ID   :emOsprey


当你的手机插入了电脑后,为什么电脑可以识别你的手机设备?你并没有做任何操作,但是电脑会弹出提示框,告诉你,手机已插入,可以进行操作了,电脑和手机之间到底交流了什么东西?
回答这个问题,很简单,当插入手机后,电脑通过数据线的电平变化,知道有一个 USB 设备已经插入了,但是这个是什么设备,电脑其实还不知道。
所以电脑开始发送复位信号给设备(只复位 USB,并不是整个手机重启),之后电脑和手机之间开始简单数据交互,了解一个 USB 设备的基本信息,之后再次复位(据说这次复位是历史遗留导致的)。
这次复位之后,电脑会了解更多 USB 设备的信息。
在设置手机的地址后,将全面了解 USB 设备信息,比如有多少个配置,多少个接口,多少个端点等信息。
如果是手机,一般会识别为 U 盘(也可能不是 U 盘,如果不是,需要专门安装驱动),这是 USB 标准协议中定义好的设备,而大多数电脑安装了U盘驱动,所以电脑可以在不安装驱动的情况下像操作 U盘一样直接操作手机。

鱼鹰并没有分析手机的通信过程,所以以上内容是鱼鹰猜测的,大体是应该类似的。
但鱼鹰熟悉 CDC 设备,即模拟串口的USB设备,而所有的 USB 设备在插入后那一段时间的行为基本是确定的,这个是 USB 标准规定的,只要是 USB 设备,都会遵循该流程,所以我们可以借此了解一下,当 CDC 设备插入之后发生了什么通信过程呢?
通过逻辑分析仪,我们可以很方便的了解USB设备插入之后的通信流程:
可以看到,当设备插入后,除了复位信号外, USB 设备一直在接收主机发送过来的帧 SOF 包(密麻麻的数据包大部分是帧首包):
这个 SOF 数据包就像人的心跳一样,维持着设备与主机的联系(每隔 1 ms 发送)。
我们再细看两个复位信号(DP 和DM 同时为低电平):
看上面第7通道(收发完成中断),可以看到在两个复位之间存在数据交互情况,通过放大可以看到发生了一次控制传输过程:
再放大看其中建立阶段的数据包:
你会看到这不就是前面所说的传输事务嘛,而前面的建立阶段、数据阶段、状态阶段组成了一次完整的控制传输
通过一次控制传输,主机终于知道插入的家伙一点点信息了(USB版本、设备类型、生产厂商、设备版本号等)。
但这些信息还不够,所以在第二次复位后,主机开始更加全面的了解设备信息了:
通过前面的多次控制传输,主机终于了解到这个设备是什么设备了,因为 CDC 设备驱动电脑会默认安装,所以你会发现不需要安装任何驱动即可操作该 USB,即通过串口软件收发数据(所谓免驱,不是真的不需要驱动,而是电脑系统自带)。
那么这些交互的数据里面到底包含了哪些具体信息,设备要告诉主机什么信息才能让主机正确识别设备?
下节开始全面揭晓USB通信的神秘面纱!


推荐阅读:
嵌入式系统优先级详解
KEIL 调试经验总结
线程CPU使用率到底该如何计算?
许久以后,你会感谢自己写的异常处理代码
终极串口接收方式,极致效率
延时功能进化论(合集)
如何写一个健壮且高效的串口接收程序?
打了多年的单片机调试断点到底应该怎么设置?| 颠覆认知

-THE END-



如果对你有帮助,记得转发分享哦


微信公众号「鱼鹰谈单片机

每周一更单片机知识

长按后前往图中包含的公众号关注