CN101308399A - 通用串行总线设备选择休眠的实现方法及相关的装置 - Google Patents
通用串行总线设备选择休眠的实现方法及相关的装置 Download PDFInfo
- Publication number
- CN101308399A CN101308399A CNA2008101154092A CN200810115409A CN101308399A CN 101308399 A CN101308399 A CN 101308399A CN A2008101154092 A CNA2008101154092 A CN A2008101154092A CN 200810115409 A CN200810115409 A CN 200810115409A CN 101308399 A CN101308399 A CN 101308399A
- Authority
- CN
- China
- Prior art keywords
- universal serial
- serial bus
- usb
- state
- monitoring
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000005059 dormancy Effects 0.000 title claims description 34
- 238000012544 monitoring process Methods 0.000 claims abstract description 96
- 230000007958 sleep Effects 0.000 claims abstract description 20
- 238000010586 diagram Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000002950 deficient Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Power Sources (AREA)
Abstract
本发明公开了一种通用串行总线设备选择休眠的实现方法及其装置,所述通用串行总线设备通过一通用串行总线连接在一运行有操作系统的终端,所述方法包括如下步骤:通过所述通用串行总线将所述通用串行总线设备加载至该操作系统;生成一设备监测单元,并由所述设备监测单元对所述通用串行总线的状态进行监测,若监测到所述通用串行总线的状态处于空闲状态,则控制所述通用串行总线设备进入选择休眠状态,若监测到所述通用串行总线的状态不再为空闲状态,则控制所述通用串行总线设备退出选择休眠状态而进入唤醒状态或深度休眠状态。本发明可以实现各种操作系统下通用串行总线设备的选择休眠,节省终端功耗。
Description
技术领域
本发明涉及USB(Universal Serial Bus,通用串行总线)技术领域,尤其涉及一种USB设备选择休眠(Selective Suspend)的实现方法、驱动模块、装置及USB设备。
背景技术
USB(Universal Serial Bus,通用串行总线)是由Compaq、IBM、Intel、Microsoft等七家公司于1995年所研发与规范出来的,随着近几年的推广与应用,USB已经成为个人计算机的标准的外设接口,并将逐步取代所有的各种传统外围接口,如串行端口、并行端口以及游戏接口等。相对于传统外围接口,USB具有诸多特性和优点:统一了各种接口设备的连接头、即插即用(plug andplay)特性、“热插拨”(hot attach and detach)特性、具备12Mbps的标准传输速率及更高的传输速率、最多可以连接127个设备、可由USB电缆供电而不需要附加电源、具有电源管理功能。
由于USB具有以上的特性和优点,许多传统的外设接口已经转向的USB接口,而传统的串口将随即被淘汰,因此在新开发的设备中使用USB接口将符合时代潮流,将使产品的生命力更强,而不至于很快被淘汰。
在USB2.0协议中定义USB分为host(主机)和client(客户端),所述主机通常运行有操作系统,该操作系统通过USB Host Controller(USB主控制器)在主机上控制通过USB总线与其相连的客户端。所述客户端又称为USB设备。
目前而言,USB设备可分为无驱USB设备和有驱USB设备。此处的“无驱”并不是真正不需要驱动程序,只是驱动程序不用自己去安装,更加人性化而已。
UVC是USB组织定义的一套USB视频设备的通用标准协议,Windows XPSP2以上的操作系统已经支持UVC协议。
在Windows XP SP2操作系统下,微软总共定义了4类可以不用额外安装驱动程序的USB设备,具体分类包括:
1.USB视频类(USB Video CLASS),简称UVC,主要就是指摄像头类产品;
2.USB音频类(USB Audio CLASS),简称UAC,主要是指USB声卡;
3.人机交换界面类(USB Human Interface Device),主要是指USB接口的鼠标键盘等设备;
4.存储设备类(USB Mass Storage Device),主要是指USB闪存盘。
选择休眠是USB2.0标准定义的一种USB设备休眠模式,其可以在操作系统正常工作时,自动判断USB设备是否处于空闲状态,当处于空闲状态时则将USB设备乃至整个USB Host Controller(主控制器)进入休眠模式,以达到最大限度的节约功耗。这对于笔记本电脑上的设备来说是一个必备的功能。但现有的微软系统或非微软系统均不支持无驱USB设备的选择休眠模式,如Windows XP(SP3以前)系统不支持UVC设备的选择休眠模式,由此会导致通过USB总线连接有所述无驱USB设备的终端功耗大,这对于使用便携式终端如笔记本电脑类的用户影响更重大,其严重降低便携式终端的待机时间。
综上可知,现有USB技术,在实际使用上,显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明目的在于提供一种通用串行总线设备选择休眠的实现方法、驱动模块、终端及通用串行总线设备,其可以实现各种操作系统下通用串行总线设备的选择休眠,节省终端功耗。
为了实现上述目的,本发明提供一种通用串行总线设备选择休眠的实现方法,所述通用串行总线设备通过一通用串行总线连接在一运行有操作系统的终端,其特点在于,所述方法包括如下步骤:
A、通过所述通用串行总线将所述通用串行总线设备加载至该操作系统;
B、生成一设备监测单元,并由所述设备监测单元对所述通用串行总线的状态进行监测,若监测到所述通用串行总线的状态处于空闲状态,则控制所述通用串行总线设备进入选择休眠状态,若监测到所述通用串行总线的状态不再为空闲状态,则控制所述通用串行总线设备退出选择休眠状态而进入唤醒状态或深度休眠状态。
优选地,所述步骤B进一步包括:
B1、生成一设备监测单元;
B2、该设备监测单元对所述通用串行总线上所加载的通用串行总线设备的状态进行监测,并根据所述通用串行总线设备是否被使用来判断所述通用串行总线的状态是否处于空闲状态,若没有监测到所述通用串行总线设备被使用,则所述通用串行总线的状态处于空闲状态,并继续执行步骤B3,若监测到所述通用串行总线设备被使用,则所述通用串行总线的状态处于非空闲状态,并且若所述通用串行总线的上一状态为空闲状态,则执行步骤B4;
B3、该设备监测单元控制所述通用串行总线设备进入选择休眠状态,并返回步骤B2;
B4、该设备监测单元控制所述通用串行总线设备退出选择休眠状态而进入唤醒状态或深度休眠状态,并返回步骤B2。
优选地,所述步骤B2中,该设备监测单元通过监测是否有过滤器被创建来判断所述通用串行总线设备是否被使用;
当该设备监测单元监测到有过滤器被创建则判断出有所述通用串行总线设备被使用,所述通用串行总线的状态不处于空闲状态;
当该设备监测单元监测到无过滤器被创建则判断出没有所述通用串行总线设备被使用,所述通用串行总线的状态处于空闲状态。
优选地,所述步骤B2中,该设备监测单元通过定时轮询的方式对所述通用串行总线上所加载的通用串行总线设备的状态进行监测。
优选地,所述步骤B3进一步包括:
B31、该设备监测单元提交空闲输入输出请求包(Idle IRP)至所述操作系统;
B32、所述操作系统接收所述空闲输入输出请求包后调用空闲通知回调例程(Idle IRP Callback)使所述通用串行总线设备进入选择休眠状态;
B33、该设备监测单元调用空闲输入输出请求包完成例程(Idle IRPComplete)以获取空闲输入输出请求包处理结果。
优选地,所述步骤B32中,所述空闲通知回调例程包括:
B321、判断所述通用串行总线是否仍然处于空闲状态,若所述通用串行总线仍然处于空闲状态,则执行步骤B322;
B322、通过电源管理方式判断所述通用串行总线设备的电源是否处于最大供电状态,若处于最大供电状态,则将所述通用串行总线设备设置在选择休眠状态。
优选地,所述空闲输入输出请求包处理结果包括:成功设置(STATUS_SUCCESS)、取消设置(STATUS_CANCELED)、错误设置(STATUS_ERROR);
所述步骤B33进一步包括:
B331、该设备监测单元调用空闲输入输出请求包完成例程(Idle IRPComplete)获取空闲输入输出请求包处理结果;
B332、判断所述空闲输入输出请求包处理结果是否成功设置(STATUS_SUCCESS),若是,则返回步骤B2,否则继续执行步骤B333;
B333、判断所述空闲输入输出请求包处理结果是否取消设置(STATUS_CANCELED)或错误设置(STATUS_ERROR),若是,继续执行步骤B334,否则返回步骤B2;
B334、判断所述通用串行总线设备的电源是否处于最大供电状态,若处于最大供电状态,则返回步骤B2;否则继续执行步骤B335;
B335、唤醒所述通用串行总线设备。
优选地,所述步骤B4中,该设备监测单元通过控制电源管理方式使所述通用串行总线设备退出选择休眠状态而进入唤醒状态或深度休眠状态。
优选地,所述操作系统为微软系统和/或非微软系统;其中,所述微软系统包括Windows XP系统;所述非微软系统包括Linux系统和/或Unix系统。
优选地,所述通用串行总线设备包括无驱USB设备和有驱USB设备。
为了实现上述目的,本发明还提供一种用于实现如上所述方法的通用串行总线设备选择休眠的驱动模块,其特点在于,所述通用串行总线设备通过一通用串行总线连接在一运行有操作系统的终端,所述驱动模块包括:设备加载单元,用于通过所述通用串行总线将所述通用串行总线设备加载至该操作系统;设备监测单元生成子模块,用于生成一设备监测单元;所述设备监测单元用于对所述通用串行总线的状态进行监测,若监测到所述通用串行总线的状态处于空闲状态,则控制所述通用串行总线设备进入选择休眠状态,若监测到所述通用串行总线的状态不再为空闲状态,则控制所述通用串行总线设备退出选择休眠状态而进入唤醒状态或深度休眠状态。
优选地,所述设备监测单元对所述通用串行总线上所加载的通用串行总线设备的状态进行监测,并根据所述通用串行总线设备是否被使用来判断所述通用串行总线的状态是否处于空闲状态。
优选地,所述的驱动模块进一步包括定时单元,用于设置定时轮询周期以使该设备监测单元通过定时轮询的方式对所述通用串行总线上所加载的通用串行总线设备的状态进行监测。
优选地,所述的驱动模块进一步包括:过滤器生成子模块,用于在所述通用串行总线设备被使用时生成过滤器;当该设备监测单元监测到无过滤器被创建则判断出所述通用串行总线设备没有被使用,所述通用串行总线的状态处于空闲状态。
优选地,所述的驱动模块进一步包括:空闲通知回调例程子模块,用于存储空闲通知回调例程(Idle IRP Callback),并供所述操作系统接收所述空闲输入输出请求包后调用以使所述通用串行总线设备进入选择休眠状态;空闲输入输出请求包完成例程子模块,用于存储空闲输入输出请求包完成例程(IdleIRP Complete)并供该设备监测单元调用以获取空闲输入输出请求包处理结果。
优选地,所述驱动模块位于所述通用串行总线设备和/或所述终端中。
优选地,所述设备加载单元通过所述通用串行总线将所述通用串行总线设备加载至该操作系统后自动生成一设备捕获单元以启动设备监测单元生成子模块;所述设备监测单元生成子模块启动后生成一设备监测单元。
为了实现上述目的,本发明又提供一种包括如上所述的驱动模块的通用串行总线设备,所述通用串行总线设备通过一通用串行总线连接在一运行有操作系统的终端。
为了实现上述目的,本发明再提供一种包括如上所述的驱动模块且运行有操作系统的终端,所述终端通过一通用串行总线连接有通用串行总线设备。本发明通过通用串行总线将通用串行总线设备加载至运行在终端上的操作系统,然后生成一设备监测单元,并由设备监测单元对通用串行总线的状态进行监测,若监测到通用串行总线的状态处于空闲状态,则控制通用串行总线设备进入选择休眠状态,若监测到通用串行总线的状态不再为空闲状态,则控制通用串行总线设备退出选择休眠状态而进入唤醒状态或深度休眠状态。借此,本发明可以实现各种操作系统下通用串行总线设备的选择休眠。本发明中,当通用串行总线设备未休眠时,其通常需要终端提供大于100mA的电流来工作,而选择休眠以后通用串行总线设备的工作电流小于1mA,由此大大节省终端功耗,对于便携式终端类还可以由此大大延长待机时间。
附图说明
图1是本发明优选实施例提供的用于实现USB设备选择休眠的驱动模块的模块结构示意图;
图2是本发明优选实施例中驱动模块所遵循的驱动框架;
图3是本发明提供的USB设备选择休眠的实现方法流程图;
图4是本发明优选实施例的USB设备选择休眠的部分实现方法流程图;
图5是本发明优选实施例的USB设备选择休眠的部分实现方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的基本思想是:当USB设备被加载至运行在终端上的操作系统后,生成一设备监测单元,并由所述设备监测单元对所述USB总线的状态进行监测,若监测到所述USB总线的状态处于Idle(空闲)状态,则控制所述USB设备进入选择休眠状态,若监测到所述USB总线的状态不再为Idle状态,则控制所述USB设备退出选择休眠状态而进入唤醒状态或深度休眠状态。
根据USB2.0标准,本发明所述术语“Idle”是针对USB总线而言,而“选择休眠”状态、“唤醒”状态、“深度休眠”状态则是针对USB设备而言,其中,“选择休眠”状态是指USB设备处于休眠模式和/或USB主控制器处于休眠模式,“深度休眠”是指整个系统(包括终端、USB主控制器和USB设备)处于休眠模式。
参见图1,USB设备100通过一USB总线20连接在运行有操作系统30的终端200即父设备,为了在操作系统30下实现USB设备100选择休眠,本发明提供了一种驱动模块10,该驱动模块10基于但不限于AV Stream(视频流)架构,所述AV Stream架构是目前视频设备的驱动模块所遵循的,参见图2所示,AV Stream架构包括多层设备驱动层,如AV Stream Filter Factory(视频流过滤器因子)层、AV Stream Filter Type(视频流过滤器类型)层、AV StreamPin Factory(视频流管脚针因子)层等。该驱动模块10如图1所示,除了包括现有的驱动模块功能外如设备加载单元21外,还进一步包括:设备监测单元生成子模块22、过滤器生成子模块23、空闲通知回调例程子模块24、空闲输入输出请求包完成例程子模块25和定时单元26,其中:
设备加载单元21,用于通过所述通用串行总线20将USB设备100加载至操作系统30。由此一设备捕获单元60用CCapture Device表示生成,并由设备捕获单元60启动设备监测单元生成子模块22。
设备监测单元生成子模块22,用于在启动后即在USB设备100被加载至该操作系统30后生成一设备监测单元40。
本发明中,设备监测单元40,也可用CsSDevCtrl表示,用于对USB总线20的状态进行监测,若监测到USB总线20的状态处于Idle(空闲)状态,则控制USB设备100进入选择休眠状态(在USB2.0标准定义下可用D2表示),若监测到USB总线20的状态不再为Idle状态,则控制USB设备100退出选择休眠状态而进入唤醒状态(即最大供电状态,在USB2.0标准定义下可用D0表示)或深度休眠状态(即整个系统休眠的状态,在USB2.0标准定义下可用D3表示)。
本发明中,所述控制USB设备100进入选择休眠状态还进一步包括:当所有加载在USB总线20的USB设备100均进入休眠状态,通过驱动模块10将USB主控制器置为选择休眠状态,以进一步节省主控制器的耗电。须注意,若有其中一个USB设备100没有进入休眠状态,驱动模块10不能将USB主控制器置为选择休眠状态。
优选地,所述驱动模块10包括有定时单元26,用于设置定时轮询周期。由此,该设备监测单元40根据定时单元26所设置的定时轮询周期通过定时轮询的方式对USB总线20上所加载的所有USB设备100的状态进行监测。
过滤器生成子模块23,用于在USB设备100被使用时生成过滤器50。该过滤器50也可用CCapture Filter表示,其是设备驱动层里的一层,例如图2中的AV Stream Filter Type(视频流过滤器类型)层,其是否被创建是作为认定USB设备100是否被使用的标准。具体而言,当该设备监测单元40监测到无过滤器50被创建则判断出USB设备100没有被使用,USB总线的状态处于Idle状态。当该设备监测单元40监测到有过滤器50被创建则判断出USB设备100正在被使用,USB总线的状态处于非Idle状态。
空闲通知回调例程子模块24,用于存储Idle IRP Callback(USB IdleNotification Callback Routine,空闲通知回调例程),并供操作系统30接收IdleIRP(空闲输入输出请求包)后调用以使USB设备100进入选择休眠状态。
本发明中,所述Idle IRP Callback是设备驱动必须提供的例程函数,在父设备200决定可以休眠的时候,会由父设备200调用,在该例程函数内主要做以下几类事务:取消所有I/O请求并准备进入休眠;如果设备需要远程唤醒,处理特殊的IRP;通过系统调用将设备设置到唤醒状态D2等等一系列事务。具体而言,判断USB总线20是否仍然处于Idle状态,若USB总线20仍然处于Idle状态,则通过电源管理方式判断USB设备100的电源是否处于最大供电状态,若处于最大供电状态,则将USB设备100设置在选择休眠状态。
空闲输入输出请求包完成例程子模块25,用于存储Idle IRP Complete(USB Idle Request IRP Completion Routine,空闲输入输出请求包完成例程)并供该设备监测单元40调用以获取Idle IRP处理结果。
本发明中,设备驱动可以通过所述Idle IRP Complete获知父设备200每一次Idle IRP处理的结果,并根据结果做出适合的处置。
Idle IRP处理结果包括:STATUS_SUCCESS(成功设置)、STATUS_CANCELED(取消设置)、STATUS_ERROR(错误设置);当设备监测单元40调用Idle IRP Complete获取空闲输入输出请求包处理结果后,判断所述空闲输入输出请求包处理结果是否STATUS_SUCCESS,若否,判断Idle IRP处理结果是否为STATUS_CANCELED或STATUS_ERROR,若是,进一步判断USB设备100的电源是否处于最大供电状态D0,若不处于最大供电状态D0,则唤醒USB设备100。
本发明中,所述驱动模块10可以集成在USB设备100,也可以如图1所示集成在终端200,还可以作为一个独立的驱动模块10,在需要的时候安装在USB设备100或终端200。
优选地,当USB设备100为无驱USB设备如UVC设备、UAC设备、人机交换界面类、存储设备类,将驱动模块10集成在终端200,如图1所示。
优选地,当USB设备100为无驱USB设备如UVC设备、UAC设备、人机交换界面类、存储设备类,并且操作系统30为Windows XP SP3之前系统时,将驱动模块10安装在终端200。
优选地,将驱动模块10直接集成或安装在为有驱的USB设备100中。
优选地,将驱动模块10直接集成在各种操作系统30中。由此可以在所有的操作系统,包括微软系统,如Windows XP系统和非微软系统如Linux系统、Unix系统等等,实现无驱USB设备或有驱USB设备的选择休眠,降低系统功耗。
图3是本发明提供的USB设备选择休眠的实现方法,结合图1所述的驱动模块10进行描述,所述USB设备100通过一USB总线20连接在一运行有操作系统30的终端200,所述方法包括如下:
步骤S301,设备加载单元21通过所述USB总线20将USB设备加载至该操作系统30。
步骤S302,设备监测单元生成子模块22生成一设备监测单元40,并由所述设备监测单元40对USB总线20的状态进行监测,若监测到所述USB总线20的状态处于Idle状态,则控制所述USB设备100进入选择休眠状态,若监测到USB总线20的状态不再为Idle状态,则控制所述USB设备100退出选择休眠状态而进入唤醒状态或深度休眠状态。
为了更好的描述本发明,本发明优选实施例提供了一种USB设备选择休眠的实现方法,结合图1所述的驱动模块10进行描述,该驱动模块10集成在运行有为Windows XP SP2的操作系统30的终端200,所述USB设备100为UVC设备,通过USB总线20连接在终端200上,所述实现方法如图4和图5所示,具体包括如下:
步骤S401,设备加载单元21通过所述USB总线20将USB设备100加载至该操作系统30,即PnPStart(Plug and Play Start,即插即用开始),CCaptureDevice 60被创建,启动设备监测单元生成子模块22以SS_StartIdleCtrl(开始空闲控制)。
步骤S402,设备监测单元生成子模块22在启动后即在USB设备100被加载至该操作系统30后生成一设备监测单元40即CsSDevCtl。
步骤S403,设备监测单元40通过定时单元26设置定时轮询时间周期,并Start SS_Timer(开始计时)。
步骤S404,TimerDpc(到达监测时间),设备监测单元40监测USB总线20所加载的USB设备100状态,并根据USB设备100是否被使用来判断USB总线20的状态是否为Idle状态,若处于Idle状态,则执行步骤S405,若监测到状态不再为处于Idle状态,则执行步骤S407。
本实施例中,设备监测单元40监测过滤器生成子模块23是否被创建过滤器50,若监测有创建过滤器50被创建(Filter Dispatch Create)则认定USB设备100被使用,USB总线20的状态不为Idle状态,若监测没有过滤器50被创建(Filter Dispatch Close)则认定USB设备100不被使用,USB总线20的状态为Idle状态。
所述“状态不再为处于Idle状态”是指上一次监测到的状态为Idle状态,而这次监测到的状态为非Idle状态。
步骤S405,设备监测单元40提交空闲输入输出请求包(Idle IRP)至所述Windows XP SP2操作系统30即Sumit Idle IRP,并等待操作系统30处理IRP包或等待调用空闲通知回调例程(Idle IRP Callback)。
步骤S406,操作系统30决定可以休眠时,调用空闲通知回调例程子模块24所存储Idle IRP Callback(USB Idle Notification Callback Routine,空闲通知回调例程)以使USB设备100进入选择休眠状态。
本步骤中,操作系统30决定不可以休眠时取消执行休眠,此时处理结果为STATUS_CANCELED或STATUS_ERROR。
所述Idle IRP Callback例程主要做以下几类事务:取消所有I/O请求并准备进入休眠;如果设备需要远程唤醒,处理特殊的IRP;通过系统调用将设备设置到唤醒状态D2等等一系列事务。
Idle IRP Callback具体工作流程如图5所示,包括如下:
步骤S50l,判断USB总线20是否仍然处于Idle状态,若USB总线20仍然处于Idle状态,则执行步骤S502,否则返回步骤S403;
步骤S502,通过电源管理方式判断USB总线20的电源是否处于最大供电状态D0,若处于D0状态,则执行步骤S503,否则直接返回步骤S403。
步骤S503,将USB设备100设置在选择休眠状态D2,并等待设备监测单元40执行步骤S504。
步骤S504,设备监测单元40调用空闲输入输出请求包完成例程子模块25所存储Idle IRP Complete(USB Idle Request IRP Completion Routine,空闲输入输出请求包完成例程)以获取Idle IRP处理结果。
步骤S505,设备监测单元40调用Idle IRP Complete获取Idle IRP处理结果后,判断Idle IRP处理结果是否为STATUS_SUCCESS,若是,直接返回步骤S403,否则执行步骤S506。
步骤S506,设备监测单元40判断Idle IRP处理结果是否为STATUS_CANCELED,若是则执行步骤S508,否则执行步骤S507。
步骤S507,设备监测单元40判断Idle IRP处理结果是否为STATUS_ERROR,若是执行步骤S508,否则返回步骤S403。
步骤S508,设备监测单元40判断USB设备100的电源是否处于最大供电状态D0,若不处于最大供电状态D0,则执行步骤S509,否则直接返回步骤S403。
步骤S509,唤醒USB设备100即将电源置为最大供电状态D0,并返回步骤S403。
本发明中,所述步骤S502也可以在判断出USB总线20的电源处于D0状态,将USB设备100设置在选择休眠状态D2后跳过步骤S504~S509直接返回步骤S403,然后再由设备监测单元40单独执行步骤S504~S509。
步骤S407,该设备监测单元40控制USB设备100退出选择休眠状态D2即SS_CancelSelectSuspend而进入唤醒状态D0或深度休眠状态D3,并返回步骤S403。
本步骤中,同样是通过电源管理方式控制USB设备100退出选择休眠状态而进入唤醒状态或深度休眠状态。本步骤中,若USB主控器也处于休眠状态,此时也退出休眠状态。
本实施例中,当USB设备100未休眠时,其通常需要终端提供大于100mA的电流来工作,而选择休眠以后USB设备100的工作电流小于1mA,显然,本发明可以大大节省终端功耗,对于便携式终端类如笔记本电脑还可以因此大大延长待机时间。
本发明另一实施例中,USB设备100为UVC设备,在操作系统30添加包括专门处理休眠的类CsSDevCtl的UVC驱动模块10,然后采用与优选实施例相同的实现方法,具体不再扩展,可参见图4和图5。
综上可知,当USB设备被加载至运行在终端上的操作系统后,生成一设备监测单元,并由所述设备监测单元对所述USB总线的状态进行监测,若监测到所述USB总线的状态处于Idle(空闲)状态,则控制所述USB设备备进入选择休眠状态,若监测到所述USB总线的状态不再为Idle状态,则控制所述USB设备退出选择休眠状态而进入唤醒状态或深度休眠状态。借此,本发明可以实现各种操作系统下通用串行总线设备的选择休眠。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (19)
1、一种通用串行总线设备选择休眠的实现方法,所述通用串行总线设备通过一通用串行总线连接在一运行有操作系统的终端,其特征在于,所述方法包括如下步骤:
A、通过所述通用串行总线将所述通用串行总线设备加载至该操作系统;
B、生成一设备监测单元,并由所述设备监测单元对所述通用串行总线的状态进行监测,若监测到所述通用串行总线的状态处于空闲状态,则控制所述通用串行总线设备进入选择休眠状态,若监测到所述通用串行总线的状态不再为空闲状态,则控制所述通用串行总线设备退出选择休眠状态而进入唤醒状态或深度休眠状态。
2、根据权利要求1所述的实现方法,其特征在于,所述步骤B进一步包括:
B1、生成一设备监测单元;
B2、该设备监测单元对所述通用串行总线上所加载的通用串行总线设备的状态进行监测,并根据所述通用串行总线设备是否被使用来判断所述通用串行总线的状态是否处于空闲状态,若没有监测到所述通用串行总线设备被使用,则所述通用串行总线的状态处于空闲状态,并继续执行步骤B3,若监测到所述通用串行总线设备被使用,则所述通用串行总线的状态处于非空闲状态,并且若所述通用串行总线的上一状态为空闲状态,则执行步骤B4;
B3、该设备监测单元控制所述通用串行总线设备进入选择休眠状态,并返回步骤B2;
B4、该设备监测单元控制所述通用串行总线设备退出选择休眠状态而进入唤醒状态或深度休眠状态,并返回步骤B2。
3、根据权利要求2所述的实现方法,其特征在于,所述步骤B2中,该设备监测单元通过监测是否有过滤器被创建来判断所述通用串行总线设备是否被使用;
当该设备监测单元监测到有过滤器被创建则判断出有所述通用串行总线设备被使用,所述通用串行总线的状态不处于空闲状态;
当该设备监测单元监测到无过滤器被创建则判断出没有所述通用串行总线设备被使用,所述通用串行总线的状态处于空闲状态。
4、根据权利要求2所述的实现方法,其特征在于,所述步骤B2中,该设备监测单元通过定时轮询的方式对所述通用串行总线上所加载的通用串行总线设备的状态进行监测。
5、根据权利要求2所述的实现方法,其特征在于,所述步骤B3进一步包括:
B31、该设备监测单元提交空闲输入输出请求包至所述操作系统;
B32、所述操作系统接收所述空闲输入输出请求包后调用空闲通知回调例程使所述通用串行总线设备进入选择休眠状态;
B33、该设备监测单元调用空闲输入输出请求包完成例程以获取空闲输入输出请求包处理结果。
6、根据权利要求5所述的实现方法,其特征在于,所述步骤B32中,所述空闲通知回调例程包括:
B321、判断所述通用串行总线是否仍然处于空闲状态,若所述通用串行总线仍然处于空闲状态,则执行步骤B322;
B322、通过电源管理方式判断所述通用串行总线设备的电源是否处于最大供电状态,若处于最大供电状态,则将所述通用串行总线设备设置在选择休眠状态。
7、根据权利要求5所述的实现方法,其特征在于,所述空闲输入输出请求包处理结果包括:成功设置、取消设置、错误设置;
所述步骤B33进一步包括:
B331、该设备监测单元调用空闲输入输出请求包完成例程获取空闲输入输出请求包处理结果;
B332、判断所述空闲输入输出请求包处理结果是否成功设置,若是,则返回步骤B2,否则继续执行步骤B333;
B333、判断所述空闲输入输出请求包处理结果是否取消设置或错误设置,若是,继续执行步骤B334,否则返回步骤B2;
B334、判断所述通用串行总线设备的电源是否处于最大供电状态,若处于最大供电状态,则返回步骤B2;否则继续执行步骤B335;
B335、唤醒所述通用串行总线设备。
8、根据权利要求2所述的实现方法,其特征在于,所述步骤B4中,该设备监测单元通过控制电源管理方式使所述通用串行总线设备退出选择休眠状态而进入唤醒状态或深度休眠状态。
9、根据权利要求2所述的实现方法,其特征在于,所述操作系统为微软系统和/或非微软系统;其中,所述微软系统包括Windows XP系统;所述非微软系统包括Linux系统和/或Unix系统。
10、根据权利要求2所述的实现方法,其特征在于,所述通用串行总线设备包括无驱USB设备和有驱USB设备。
11、一种用于实现如权利要求1~10任一项所述方法的通用串行总线设备选择休眠的驱动模块,其特征在于,所述通用串行总线设备通过一通用串行总线连接在-运行有操作系统的终端,所述驱动模块包括:
设备加载单元,用于通过所述通用串行总线将所述通用串行总线设备加载至该操作系统;
设备监测单元生成子模块,用于生成一设备监测单元;
所述设备监测单元用于对所述通用串行总线的状态进行监测,若监测到所述通用串行总线的状态处于空闲状态,则控制所述通用串行总线设备进入选择休眠状态,若监测到所述通用串行总线的状态不再为空闲状态,则控制所述通用串行总线设备退出选择休眠状态而进入唤醒状态或深度休眠状态。
12、根据权利要求11所述的驱动模块,其特征在于,所述设备监测单元对所述通用串行总线上所加载的通用串行总线设备的状态进行监测,并根据所述通用串行总线设备是否被使用来判断所述通用串行总线的状态是否处于空闲状态。
13、根据权利要求12所述的驱动模块,其特征在于,进一步包括定时单元,用于设置定时轮询周期以使该设备监测单元通过定时轮询的方式对所述通用串行总线上所加载的通用串行总线设备的状态进行监测。
14、根据权利要求12所述的驱动模块,其特征在于,进一步包括:
过滤器生成子模块,用于在所述通用串行总线设备被使用时生成过滤器;
当该设备监测单元监测到无过滤器被创建则判断出所述通用串行总线设备没有被使用,所述通用串行总线的状态处于空闲状态。
15、根据权利要求12所述的驱动模块,其特征在于,进一步包括:
空闲通知回调例程子模块,用于存储空闲通知回调例程,并供所述操作系统接收所述空闲输入输出请求包后调用以使所述通用串行总线设备进入选择休眠状态;
空闲输入输出请求包完成例程子模块,用于存储空闲输入输出请求包完成例程并供该设备监测单元调用以获取空闲输入输出请求包处理结果。
16、根据权利要求12所述的驱动模块,其特征在于,所述驱动模块位于所述通用串行总线设备和/或所述终端中。
17、根据权利要求12所述的驱动模块,其特征在于,所述设备加载单元通过所述通用串行总线将所述通用串行总线设备加载至该操作系统后自动生成一设备捕获单元以启动设备监测单元生成子模块;
所述设备监测单元生成子模块启动后生成一设备监测单元。
18、一种包括如权利要求11所述的驱动模块的通用串行总线设备,所述通用串行总线设备通过一通用串行总线连接在一运行有操作系统的终端。
19、一种包括如权利要求11所述的驱动模块且运行有操作系统的终端,所述终端通过一通用串行总线连接有通用串行总线设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101154092A CN101308399B (zh) | 2008-06-23 | 2008-06-23 | 通用串行总线设备选择休眠的实现方法及相关的装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101154092A CN101308399B (zh) | 2008-06-23 | 2008-06-23 | 通用串行总线设备选择休眠的实现方法及相关的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101308399A true CN101308399A (zh) | 2008-11-19 |
CN101308399B CN101308399B (zh) | 2010-07-07 |
Family
ID=40124875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101154092A Expired - Fee Related CN101308399B (zh) | 2008-06-23 | 2008-06-23 | 通用串行总线设备选择休眠的实现方法及相关的装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101308399B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011022976A1 (zh) * | 2009-08-26 | 2011-03-03 | 中兴通讯股份有限公司 | 一种通用串行总线调制解调器设备的节电装置及方法 |
CN102109898A (zh) * | 2009-12-29 | 2011-06-29 | 安国国际科技股份有限公司 | 降低功率消耗的通用序列汇流排装置 |
CN102111854A (zh) * | 2009-12-24 | 2011-06-29 | 盛大计算机(上海)有限公司 | 电子书中3g模块工作模式的控制方法 |
CN103678213A (zh) * | 2013-03-28 | 2014-03-26 | 威盛电子股份有限公司 | 通用串行总线集线器及其控制方法 |
CN101673213B (zh) * | 2009-10-15 | 2015-07-01 | 北京中星微电子有限公司 | 通用串行总线设备的驱动程序升级方法及装置 |
CN105446916A (zh) * | 2014-08-29 | 2016-03-30 | 成都鼎桥通信技术有限公司 | Usb总线状态切换方法及装置 |
CN106502368A (zh) * | 2016-10-14 | 2017-03-15 | 惠州Tcl移动通信有限公司 | 一种移动终端的otg外设控制方法及系统 |
CN107682918A (zh) * | 2016-08-02 | 2018-02-09 | 成都鼎桥通信技术有限公司 | 移动终端数据传输方法及设备 |
CN107783632A (zh) * | 2016-08-25 | 2018-03-09 | 大连楼兰科技股份有限公司 | 车联网嵌入式系统中低功耗设计方法 |
CN109218081A (zh) * | 2018-08-24 | 2019-01-15 | 北京大恒图像视觉有限公司 | 一种系统休眠唤醒后的数据传输方法和数据传输装置 |
US10216253B2 (en) | 2013-03-28 | 2019-02-26 | Via Technologies, Inc. | Universal serial bus hub and control method thereof |
WO2019071577A1 (zh) * | 2017-10-13 | 2019-04-18 | 华为技术有限公司 | 通用串行总线设备和通用串行总线设备的省电方法 |
CN114327020A (zh) * | 2021-11-30 | 2022-04-12 | 西安广和通无线通信有限公司 | 一种无线模组、功耗控制方法及电子设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109388241A (zh) * | 2018-09-29 | 2019-02-26 | 歌尔科技有限公司 | Vr设备低功耗的实现方法、装置和电子设备 |
-
2008
- 2008-06-23 CN CN2008101154092A patent/CN101308399B/zh not_active Expired - Fee Related
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8738953B2 (en) | 2009-08-26 | 2014-05-27 | Zte Corporation | Power-saving device for universal serial bus modem apparatus and method thereof |
WO2011022976A1 (zh) * | 2009-08-26 | 2011-03-03 | 中兴通讯股份有限公司 | 一种通用串行总线调制解调器设备的节电装置及方法 |
CN101673213B (zh) * | 2009-10-15 | 2015-07-01 | 北京中星微电子有限公司 | 通用串行总线设备的驱动程序升级方法及装置 |
CN102111854A (zh) * | 2009-12-24 | 2011-06-29 | 盛大计算机(上海)有限公司 | 电子书中3g模块工作模式的控制方法 |
CN102109898A (zh) * | 2009-12-29 | 2011-06-29 | 安国国际科技股份有限公司 | 降低功率消耗的通用序列汇流排装置 |
CN103678213A (zh) * | 2013-03-28 | 2014-03-26 | 威盛电子股份有限公司 | 通用串行总线集线器及其控制方法 |
CN103678213B (zh) * | 2013-03-28 | 2017-02-15 | 威盛电子股份有限公司 | 通用串行总线集线器及其控制方法 |
US10216253B2 (en) | 2013-03-28 | 2019-02-26 | Via Technologies, Inc. | Universal serial bus hub and control method thereof |
TWI613546B (zh) * | 2013-03-28 | 2018-02-01 | 威盛電子股份有限公司 | 通用序列匯流排集線器及其控制方法 |
CN105446916B (zh) * | 2014-08-29 | 2018-10-02 | 成都鼎桥通信技术有限公司 | Usb总线状态切换方法及装置 |
CN105446916A (zh) * | 2014-08-29 | 2016-03-30 | 成都鼎桥通信技术有限公司 | Usb总线状态切换方法及装置 |
CN107682918A (zh) * | 2016-08-02 | 2018-02-09 | 成都鼎桥通信技术有限公司 | 移动终端数据传输方法及设备 |
CN107783632A (zh) * | 2016-08-25 | 2018-03-09 | 大连楼兰科技股份有限公司 | 车联网嵌入式系统中低功耗设计方法 |
CN106502368A (zh) * | 2016-10-14 | 2017-03-15 | 惠州Tcl移动通信有限公司 | 一种移动终端的otg外设控制方法及系统 |
CN106502368B (zh) * | 2016-10-14 | 2020-01-14 | 惠州Tcl移动通信有限公司 | 一种移动终端的otg外设控制方法及系统 |
WO2019071577A1 (zh) * | 2017-10-13 | 2019-04-18 | 华为技术有限公司 | 通用串行总线设备和通用串行总线设备的省电方法 |
CN109218081A (zh) * | 2018-08-24 | 2019-01-15 | 北京大恒图像视觉有限公司 | 一种系统休眠唤醒后的数据传输方法和数据传输装置 |
CN109218081B (zh) * | 2018-08-24 | 2021-07-30 | 北京大恒图像视觉有限公司 | 一种系统休眠唤醒后的数据传输方法和数据传输装置 |
CN114327020A (zh) * | 2021-11-30 | 2022-04-12 | 西安广和通无线通信有限公司 | 一种无线模组、功耗控制方法及电子设备 |
WO2023098033A1 (zh) * | 2021-11-30 | 2023-06-08 | 西安广和通无线通信有限公司 | 无线模组、功耗控制方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101308399B (zh) | 2010-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101308399B (zh) | 通用串行总线设备选择休眠的实现方法及相关的装置 | |
US5799196A (en) | Method and apparatus of providing power management using a self-powered universal serial bus (USB) device | |
US7707447B2 (en) | Apparatus and method for managing power in computer system | |
CN1095111C (zh) | 网络休眠系统及其方法 | |
US5586332A (en) | Power management for low power processors through the use of auto clock-throttling | |
US8555094B2 (en) | System and method for managing power consumption of an information handling system based on the information handling system power state and battery status | |
CN101661321B (zh) | 一种计算机及控制计算机运行的方法 | |
CN102778943B (zh) | 状态控制方法、装置及便携终端 | |
CN101630191B (zh) | 一种实现通用串行总线调制解调器设备节电的装置及方法 | |
US9600059B2 (en) | Facilitating power management in a multi-core processor | |
CN1773399A (zh) | 用于控制待机电源的设备 | |
US6128745A (en) | Power management inactivity monitoring using software threads | |
CN101714021A (zh) | 混合式系统的计算机 | |
CN104050137B (zh) | 一种异构操作系统中内核运行的方法及装置 | |
CN103092701A (zh) | 一种通信方法、装置及电子设备 | |
CN101084480A (zh) | 电源状态转移的音频噪声抑制 | |
CN102193765A (zh) | 计算机、显卡、显示设备及显示信息更新的方法 | |
CN107273141A (zh) | 嵌入式实时操作系统 | |
JP2003509763A (ja) | コンピュータの補助装置に対してコンピュータのバスシステムを介して電源を供給するための装置及び方法 | |
US8452995B1 (en) | Universal serial bus low power idle mode | |
CN111625080A (zh) | 一种服务器节能方法、装置及电子设备和存储介质 | |
US7502635B1 (en) | Method and computer for remote communication while operating in a power-saving mode | |
US20080313483A1 (en) | Method and System for Power Management | |
TWI376592B (en) | Computer system | |
US20030227281A1 (en) | Method and apparatus for regulating the efficiency of a power supply in a computer system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100707 Termination date: 20120623 |