【问题标题】:USB: understanding the RESUME and SUSPENDED statesUSB:了解 RESUME 和 SUSPENDED 状态
【发布时间】:2019-11-04 08:54:12
【问题描述】:

我不了解 USB 协议 (USB 2.0) 中的“RESUME”和“SUSPENDED”模式。

USB 2.0 规范规定:

如果在指定的时间长度内没有观察到总线活动,所有设备必须挂起 第 7 章连接的设备必须随时准备挂起,无论它们是否已通电 已分配非默认地址或已配置。总线活动可能会因主机进入一个 自己的挂起模式。

第 7 章规定的时间长度为 3 帧。我不明白“没有总线活动”是什么意思:这是否意味着根本没有数据包?这是否意味着没有数据包发送到此设备(因此,如果设备检测到 SOF 数据包,那么它不应该进入 SUSPENDED 模式?)

此外,USB 设备也应在集线器端口时进入 Suspended 状态 它附加到被禁用。这称为选择性挂起。

如何禁用集线器端口?是集线器端口本身决定这样做(在什么条件下?)还是主机向集线器发送命令来这样做(这个命令是什么?)? 假设从设备的角度来看,挂起和选择性挂起是相同的是否正确,因为在这两种情况下,设备都只看到没有总线活动?

当有总线活动时,USB 设备退出挂起模式。 USB 设备也可以请求主机 通过使用电信号指示远程唤醒退出挂起模式或选择性挂起。

我不明白这部分。为什么 USB 设备会请求主机退出挂起模式或选择性挂起,因为这始终是发起事务的主机?

感谢您的帮助。

【问题讨论】:

    标签: usb


    【解决方案1】:

    总线活动是指设备看到的任何数据包。

    我不知道选择性挂起的所有细节,但我相信操作系统可以判断什么时候没有尝试使用 USB 设备,然后告诉 USB 端口挂起设备以节省电量。

    至于为什么 USB 设备会请求主机退出挂起模式:您是否注意到您可以通过按下键盘上的键或单击鼠标上的按钮将计算机从睡眠中唤醒?

    【讨论】:

    • 如果我理解正确:鼠标在一定时间内没有发送任何变化的数据 => 计算机决定进行选择性挂起并关闭端口 => 因为端口已关闭,所以鼠标看不到任何总线活动并自行挂起。对于鼠标来说,选择性挂起和挂起没有区别:两者都是因为没有总线活动而发生的?或者是否有鼠标必须处理的选择性暂停命令?
    • 但是如果鼠标决定唤醒,它怎么会因为它看不到总线活动呢?
    • 是的,USB 设备无法判断有多少设备被挂起。没有挂起命令。您可以在 USB 2.0 规范中搜索有关“远程唤醒”和“恢复信号”的详细信息:这就是鼠标如何发出信号表示它想要结束挂起模式。也许第 7.1.7.7 节是一个不错的起点。
    猜你喜欢
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多