USB的挂起和唤醒 (Suspend and Resume)〈转〉

摘要:
根据USB协议,如果USB电缆闲置超过3ms,设备应将其视为暂停信号,要求设备在10ms内进入暂停状态,并将设备所需的电流降低到指定值。USBHighSpeedSsuspendSignal如上图所示。主机在a点停止发送SOF,系统处于SE0状态。b点是3ms时间点。在这之后的125秒内,该设备消除了端子电阻并挂起1.5k上拉。)因为设备在挂起时处于全速信号,所以当主机需要从挂起状态退出设备时,它需要发送持续时间超过20ms的FulllSpeedK状态。

  USB协议的第9章讲到USB可见设备状态[Universal Serial Bus Specification, Section 9.1.1, Pg 239],分为连接(Attached),上电(Powered),默认(Default),地址(Address),配置(Configured)和挂起(Suspended)6个状态。所谓可见,即USB系统和主机可见的状态,其他状态属于USB设备内部而不可见。其中有关电源的,大致可分下面三类:
1. 连接状态(Attached):设备连接,但未提供电源。
2. 上电状态(Powered):设备被复位(Reset),或者说处于地址、配置状态。(参见USB枚举过程,USB Specification, page 241)
3. 挂起状态(Suspended):3 ms未见总线活动而处于省电状态,设备不可用,但仍然保持原有的USB地址和配置。

设备的挂起
我们知道,在USB系统中,正常状态下hub或root hub会一直周期性地发送SOF包(Start Of Frame,全速USB每1ms发送一个,高速USB则是125
µs发送一个)。根据USB协议,如果USB线上一直处于空闲(Idle)状态超过3ms,设备应该把它当作一个挂起(Suspended)信号,要求设备在10ms内进入挂起状态,并把设备所需的电流大小降到规定的值(对于low-power设备,要求是500 µA,而对于high-power或支持远程唤醒(remote wakeup)功能的设备是2.5mA【Section 7.2.3, Pg176】)。在挂起状态中,设备必须继续向数据项D+/D-的上拉电阻提供电压以维持Idle状态。而对于USB2.0高速设备,还有些额外的要求:
1. 高速设备在
收到挂起信号(3ms空闲)后,应在0.125ms内切换到全速状态,也就是说要把终端电阻移除,并在D+数据线上重新挂上1.5k上拉电阻。
2. 设备在随后的100-875µs内检测数据线上的状态。如果该状态是一个
Full speed J,那么说明host发下来的是一个挂起信号;如果此时该状态是SE0,说明是host drive数据线D+到0,这是一个复位信号(复位信号会持续至少10ms时间)。
  要注意的是高速设备在挂起状态时处于高速模式,只是所用的是全速信号。一旦从挂起状态恢复回来,会马上进入高速工作状态而无需进行复位操作。

USB的挂起和唤醒 (Suspend and Resume)〈转〉第1张
USB High Speed Suspend Signal
  如上图所示,Host在a点停止发送SOF,系统处于SE0状态,b点是3ms时间点,之后的125µs内,设备移除终端电阻,并挂上1.5k上拉。此时如host发送的是suspend信号,那它就不会不drive D+数据线,导致D+被设备拉高,形成一个Full Speed J状态。在c点之后100-875µs内设备检测此时host行为,发现是suspend信号,设备内部进入低功耗的挂起(suspend)状态。(假如hsot发送的是复位信号,那么当设备在c点挂1.5k电阻之后,由于host对D+线的drive作用,D+线无法被拉高,仍然处于SE0状态,设备在c点之后的检测,发现的还是SE0状态,等到10ms后就可判断这是一个复位信号,进行设备复位操作。)


设备的唤醒
  设备处于挂起状态时,任何总线上的活动(非空闲信号)都可以把设备唤醒/恢复,从而退出低功耗模式。(同样,设备也可以换醒host,比如电脑待机时通过USB键盘来换醒主机,这种功能称之为“远程唤醒”(remote wakeup),不在本文的讨论范围内。)
  因为设备挂起时处于全速信号,在当host需要把将设备退出suspend状态时,需要先发送一个持续时间超过20ms的Fulll Speed K状态。设备看到K状态结束的1.3us内醒过来,而host需要在3ms内发送uSOF信号以维持正常的高速信号模式,否则设备又将进入suspend。如下图所示:

USB的挂起和唤醒 (Suspend and Resume)〈转〉第2张



原文转自:http://apps.hi.baidu.com/share/detail/17542952

免责声明:文章转载自《USB的挂起和唤醒 (Suspend and Resume)〈转〉》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ABP 自动映射 AutoMapperIstio 学习记录下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mac-VM迁移注意事项

1.迁移之后首先查看mac的网关是多少: 先cd /Library/Preferences/VMware Fusion/vmnet8 然后 cat nat.conf ip 172.16.190.2就是我的网关,你的和我的应该不一致 2.配置虚拟机中的网络 点击系统-首选项-网络连接。 配置你的网卡,我的是eth1. 地址就是你的这台虚拟机ip,网关和dn...

docke网络之bridge、host、none

一、bridge网络 1.创建一个测试容器 [root@localhost ~]# docker run -d -it --name busybox_1 busybox /bin/sh -c "while true;do sleep 3600;done" 03b308c847edd23f21ba69afb825d92f7aaeb05b1ff4431dd47...

emmc基础技术8:操作模式2-device identification mode

1.前言 eMMC总线操作包含: boot mode, device identification mode interrupt mode data transfer mode 本文主要描述device identification mode,本模式下所有的数据通信都只在cmd line上完成,主要完成: host reset device 检查操作...

oracle服务起不来以及无法监听问题解决

改问题是在搭建起一个很早之前的数据库的时候碰见的,虽然这个问题网上已经有很多相关的帖子,但因最近碰见多次这样的问题,特此简单记录: 1.最开始碰见的问题是:The listener supports no services 之前的记录没有存,借用其他贴相似错误: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=orack...

电路原理图检查的十大步骤详解

最近一直在做嵌入式系统,画原理图。最后,为了保证原理图准确无误,检查原理图花费我近两周的时间,在此,把我在检查原理图方面的心得体会总结在此,供大家参考,说得不对的地方欢迎大家指出。 往往我们画完电路原理图后,也知道要检查检查,但从哪些地方入手检查呢?检查原理图需要注意哪些地方呢?下面听我根据我的经验一一道来。 1. 检查所有的芯片封装图引脚是否有误 当然,...

Nginx反向代理导致PHP获取不到正确的HTTP_HOST,SERVER_NAME,客户端IP的解决方法

今天第一次配Nginx负载均衡,发现PHP无法获取HTTP_HOST 贴上的Nginx配置 upstream abc.com { server 10.141.8.55:8005; server 10.141.8.55:8006; } server { listen 80; server_nam...