总线上suspended stop事件发起端

浮光的冰凉 2022-07-07 10:43:53 编辑

104100596079
我有个疑惑,在主机端挂一个空闲的hub,待hub枚举完成后,hub后级插入一usb设备,此时主机和hub之间会受到一个suspended stop消息,该消息是如何产生的?处理流程是什么样的?

USB中文网 2022-07-08 10:46:10 编辑

你这个背景感觉有点问题。
从你的抓包来看,看着像系统要休眠时,通过发送SET_FEATURE(REMOTE_WAKEUP),使能设备休眠唤醒特性,然后系统进行休眠模式。不过休眠前,肯定要先让设备份suspend.
不过由于某种原因,又被唤醒了,即设备收到了RESUME信号,唤醒了设备。这时主机同时下发CLEAR_FEATURE,再次禁止该特性。

更多的关于休眠唤醒可以参见:

下面是本人抓的一个USB键盘在设备休眠时收到的数据,只不过当用此键唤醒主机时是通过复位重新枚举让系统再次识别:
USB键盘在设备休眠时收到的数据

另附一张通过另一个设备唤醒主机时的抓包图:
103641297385

浮光的冰凉 2022-07-08 11:57:27 编辑

从实际应用来说,这背景应该不算问题,毕竟hub支持remotewakeup功能时,且hub上未挂载设备时,该总线上的相关功能可以跑到suspended mode,以降低功耗。待hub上有设备接入时,只需要hub端发起退出suspended mode,总线再进入正常工作状态即可。