现在的位置: 首页 > 综合 > 正文

Windows CE电源管理的实现

2013年01月27日 ⁄ 综合 ⁄ 共 11489字 ⁄ 字号 评论关闭

电源管理的目的是节能,基本的节能方法是使系统适时的进出休眠状态.比如用户按下On/Off按钮,或者监视用户活动的定时器超时,或者应用呼叫api都可以使得系统休眠,用户再次按下On/Off或者其他唤醒中断将使得系统退出休眠.从而可见,电源管理模块和用户活动情况密不可分,电源管理是用户活动所驱动的. WinCE中处理用户与系统交互的部分是GWES,所以早期电源管理工作是由GWES来实现.( GWES:Graphics,Windows and Events Subsystem.图形,窗口和事件子系统.主要负责图形输出和用户交互). 但GWES提供的电源管理模块功能过于粗糙死板:所有子设备只能有On和Suspend状态,应用程序无法得到任何状态转换通知,等等……直到WinCE4.0才引入了电源管理模块用以替代GWES中的电源管理功能.(进一步的,为了方便电源管理模块的集中管理,还需要关闭原来GWES对电源管理功能.方法是注册表HKLM/SYSTEM/CurrentControlSet/Control/Power设置DisableGwesPowerOff=1来禁止GWES插手电源管理.系统是默认禁止的.此外,一些用户活动情况仍旧依赖GWES获得,设置注册表HKLM/system/GWE下的ActivityEvent=PowerManager/ActivityTimer/UserActivity.从而告诉GWES,当鼠标,键盘,触摸屏等输入发生时候,GWES要SetEvent这个全局事件以通知电源管理模块.)

新的电源管理模块提供更完整和灵活的功能,系统电源可以自由灵活设定,子设备电源状态可以单独设定,应用可以获得电源通知等等.

[系统电源]

OEM可以依据需要任意定义系统电源状态,比如On,ScreenOff,UserIdle,SystemIdle,Suspend等.系统电源状态更多的是代表系统电源的一种配置方案,它是各个子设备电源配置的集合.它设定一种可能出现的情景,并且事先拟定了此情景下电力分配策略(哪些子设备打开,哪些子设备关闭).比如,也许On可以代表常规工作的情景,所有子设备打开的状态; ScreenOff可以代表LCD被用户请求关闭的情景,LCD背灯电源被关闭的状态; UserIdle可以代表用户一段时间没有操作的情景,cpu/soc将进入low power的状态; Suspend可以代表设备空闲很久了可以挂起的情景,所有非必要供电的子设备电源关闭的状态;等等…系统的电源状态的定义很灵活而且自由. 可以在注册表定义系统电源状态.比如:

[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Power/State/On]

"Default"=dword:0 ; D0

"Flags"=dword:10000 ; POWER_STATE_ON

上面定义了On状态,Flags是附加的状态信息(hints),对应pm.h中的宏定义POWER_STATE_ON.defaule表示在这个状态下所有子设备的默认状态.

电源管理模块的重点之一是制订系统电源管理策略,这包括定义系统电源状态,决定状态间转换的条件.以默认的版本为例子,简单图示如下:

子,简单图示如下:

 
 
 

On:用户与系统交互时候的状态.

UserIdle: 代表用户停止输入,但可能仍然在使用的情景,比如阅读文件.

SystemIdle: 代表用户停止使用设备,但处理器仍然工作的情景,比如,后台文件传输.

Suspend: 代表休眠状态.

用户在使用时候,系统处于On状态,用户停止输入,系统自动转入UserIdle状态,持续没有输入时间后,进入SystemIdle状态,持续一段时间后,系统将自动进入Suspend状态.应用程序也可以调用SetSystemPowerState()来进行状态切换.

在这个基础上,根据自己的平台特点,增加新的策略就基本可以满足常规产品需要.

1. On/Off按键. (A).电源管理模块已经支持了电源按键功能,最直接的办法可以在pdd中增加电源按键定义,按键io的初始化,检测等等,(B).从外部发送消息给电源管理模块来通知按键事件.(C).使用api直接转换状态.即不使用电源管理模块提供的按键功能,直接调用SetSystemPowerState使得系统进入Suspend状态.这是很常见的做法,我们设计一个电源按键的流驱动,检测到按键时候,呼叫api将系统电源转换到Suspend.

2. 加入背灯控制.比如在On状态下打开请求显示驱动打开背灯,在UserIdle和SystemIdle状态下请求显示驱动关闭背灯.

[设备电源]

支持电源管理的设备驱动的实现,存在有大量的例子.简单介绍如下:

电源管理模块并不直接实现对子设备的电源开关控制,子设备的电源控制是由各个设备驱动来控制的.电源管理模块透过设备驱动的IOCTLs来请求设备控制自身电源.系统电源状态是灵活自由设定的,而设备电源状态是固定的,最多有5个:D0,D1,D2,D3,D4代表Full on,Low on, Standby, Sleep, Off这5个状态.

不是所有的设备驱动都支持电源管理(至少,在电源管理出现前的早期的设备驱动不会支持).电源管理模块对设备驱动提出了一个规范和架构,满足规范的驱动纳入电源管理.对于流驱动控制的设备,要支持电源管理要满足的条件,简单来说有:1.声明自己是支持电源管理的(Iclass值).2.驱动中实现电源管理模块所要求的IOCTLs.3.驱动加载时候要汇报所支持的电源状态和相关特征.4.***_PowerDown和***_PowerUp接口接收系统休眠和唤醒通知.此外,设计驱动还应该了解:设备不一定具备所有5种状态,但至少可以工作在D0;电源管理模块可能会要求设备进入任何设备电源状态,并不仅仅是设备所汇报自己支持的那几个;如果被要求进入不支持的状态,应该进入另一个它所支持的更高功耗的状态;当前状态不需要重复设置;设备电源状态不一定和系统的电源状态同步.除了流驱动外,还有许多内建驱动需要支持电源管理功能.简单总结:1.显示驱动通过ExtCode接口(SETPOWERMANAGEMENT命令,类似IOCTLs)来控制显示驱动的电源,还控制背灯.2键盘驱动的接口KeybdDriverPowerHandler.3.触摸屏是TouchPanelPowerHandler.4.内建网络miniport驱动是MiniportReset接口.5.PCMCIA驱动是PowerUp和PowerDown.还有打印机,红外等一些内建驱动.

[OAL对电源管理的支持]

[系统的 idle状态]

当没有线程准备运行时候,内核就调用OEMIdle().这个函数在bsp中,可以由OEM来修改定制.一般我们在这个函数里面会要求cpu进入low power状态节省电流消耗.一般的cpu/soc都提供了对应idle的睡眠模式.当中断发生或者唤醒事件发生时候,要保证cpu快速离开idle状态,返回运行状态.

系统idle状态和前面说的UserIdle状态是不同概念,前者是cpu负荷情况驱动,代表系统空闲;后者是用户活动驱动,代表用户空闲.

一个OEMIdle()的推荐流程:

根据dwReschedTime变量来计算下次唤醒时间

判断sleep类型,假如需要,调整唤醒时间

Idle处理器和时钟

中断发生

判断唤醒源

更新CurMSec, idle计数值.

[系统suspend状态]

当用户按下OFF按钮或者应用调用api进入suspend状态时候,内核会调用OEMPowerOff()函数.在OEMPowerOff()函数里面实现系统挂起,并且系统唤醒后继续从OEMPowerOff()被挂起处执行. OEMPowerOff()时候要进入睡眠模式,睡眠模式根据cpu芯片的sleep模式来选择,要选择最低功耗的模式.如果cpu芯片提供的最低功耗模式是PowerDown模式,处理工作比较复杂,因为唤醒后是从reset处开始执行,要恢复挂起时候的环境,使得应用程序不知道自己被挂起过.一般按照这样流程来处理:关屏,清framebuffer, 保存必须的寄存器到内存, 设置io, 保存通用寄存器, 保存wakeup地址, 静止中断,清除cache, 使能唤醒源中断, 设置sdram自刷新, cpu进入PowerDown. 唤醒后的流程相反即可. 对于PowerDown模式之外的其他模式,比如慢时钟模式, 处理则简单很多,最重要的是设置唤醒源(一般是任何中断可唤醒), sdram进入自刷新状态.
 

 

[SDRAM的控制]

SDRAM的耗电比较大,一般是系统里面除了lcd背光外,sdram是最大的电力消耗设备.常见有mobile sdram和normal sdram这2种,mobile sdram相对于normal sdram增加了温度补偿自刷新,局部阵列自刷新,深度休眠特性,更加适合功耗限制设备,(但mobile sdram工作在更低电压(1.8~2.5v),我想,对有些3.3v总线的cpu未必适合,因为总线会增加很多电平转换的电路.)

在OEMPowerOff()函数里面,保存好当前环境到sdram,然后使得sdram进入自刷新状态,cpu就可以进入最低功耗的sleep模式.唤醒后需要退出自刷新状态.

[应用层于电源管理]

电源管理模块也提供了应用层接口,使得应用程序也可以参与到电源管理.

应用层可以通过SetSystemPowerState()来设置系统电源状态,可以通过SetDevicePower来设置子设备电源状态,可以通过SetPowerRequirement通知电源管理模块将子设备设置在特殊电源状态下,不随系统电源改变.此外,电源管理还提供了消息队列,应用层还可以通过RequestPowerNotifications函数请求电源管理模块发送相关消息(PBT_RESUME, PBT_POWERSTATUSCHANGE, PBT_TRANSITION, PBT_POWERINFOCHANGE).

设计应用程序也许有几点值得考虑:不要无谓占用cpu,尽可能快的让出cpu.比如一个很小的动画,哪怕只占1%的cpu也会导致一些系统无法进入低功耗.这里是2点建议:(1)当应用不在foreground时候,停止占用cpu.(2)用户没有和应用交互时候,停止应用对cpu的占用.另外一些应用也许是相反情况的,播放媒体文件时候,当开始播放时候,不希望自动进入suspend模式.可以(1)每隔一些时间就reset一次定时器.(2)或者设置所有定时器为0,停止电源管理(tcpmp就是这样的).

[电源管理的系统实现]

电源管理模块实体是一个动态链接库pm.dll来实现的.可以在pb的catalog窗口中选择电源管理组件添加到os中.如下图,微软提供了2个选择(二选一).第一个代表完整功能,所有api全功能实现,第二个代表空实现(形式上提供接口,但空函数).

 

 

电源管理模块的代码结构是分层的,MDD PDD.MDD是抽象公共库,不需要改动,PDD是平台相关,主要改动都在PDD.针对平台特性,微软提供了2种类型PDD示例.一种是default,另外一种是pda版本的.默认的情况,使用的是default.如果要使用pda版本的,需要在系统中指定环境变量SYSGEN_PM_PDA. default和pda版本的主要区别:

default版本定义了4种状态:On, UserIdle, SystemIdle, Suspend;

PDA版本定义了On, ScreenOff, Unattended, Resume, Suspend.

default版本的简单描述:UserIdle状态是描述用户在使用但没有操作,比如阅读.SystemIdle状态描述用户停止使用,但系统仍然工作,比如文件传输.

PDA版本简单描述:ScreenOff状态描述用户请求把屏幕背灯关闭.是用户主动关闭的情况,区别于UserIdle,UserIdle是自动的.Unattended状态表示后台工作,用户不会对其察觉的情景,比如ActiveSync每5分钟唤醒系统同步,然后继续suspend; Resume状态描述唤醒后情景,比如唤醒后在指定时间内决定转到哪个状态,否则继续suspend.

[定制电源管理模块的方法]

Pm.dll是由device.exe加载的,首先device.exe当然是必须的,在pb的catalog中检查Device Manager组件,或者检查SYSGEN_DEVICE变量.其次,仍旧应该选择上图的电源管理组件power management full.

方案一(推荐方案):在bsp的驱动目录中新建一个pm目录,在这里完成电源管理模块PDD部分的实现,并链接MDD最终生成一个pm.dll替代原来系统的pm.dll.

PDD参考微软提供的代码platform.cpp,主要修改是增加状态转换的动作执行单元.

方案二:完全不修改电源管理部分,因为默认的PDD在状态转换时候虽然没有动作,但是广播了PBT_TRANSITION消息,可以截获这个消息来进行状态转换.这样作法不如方案一直接.如果是进程实现,还浪费一个宝贵进程资源.

[影响系统功耗各方面考虑]

1.系统时钟周期

典型的WinCE系统时钟周期是1ms,增加时钟周期有助进一步降低设备功耗.在OEMInit()àOALTimerInit()修改系统时钟.

2.可变系统时钟节拍Variable Tick Scheduler

典型设计里wince每毫秒产生系统时钟中断,那么每隔1ms都会使得idle退出,如果发现没有线程就绪时候继续idle. 对有功耗限制的设计,可以考虑改变系统时钟节拍后进入idle状态.这样在预期的时间段里,idle状态不会被无谓的系统时钟中断唤醒.

3.LCD背灯的调节策略

早期的设计使用一个独立的驱动来实现背灯的控制和调节策略.简单介绍背灯驱动原理:背灯驱动启动一个监视工作线程,不停等待3个事件:

1. BackLightChangeEvent

2. PowerChangedEvent(供电电源发生变化,比如插手了AC电源,会获得了这个事件)

3. PowerManager/ActivityTimer/UserActivity(用户输入事件)

从注册表中读取超时值,当超时事件发生,则将系统背灯关闭.背灯关闭期间,用户重新活动时候,发生第3个事件,则打开背灯.注册表的超时值决定了背灯工作时间.类同pc上设置屏幕保护时间.此外,背灯驱动也需要提供对系统电源状态切换的支持.power down时候要关闭背灯,power up时候打开背灯.

电源管理模块可以定义一种系统电源状态来描述背灯关闭的情景(比如在UserIdle或者ScreenOff状态时候关闭背灯,On状态时候打开背灯)所以,背灯驱动可以被取消.

4.IO口的漏电流

空载IO避免设置成为输入口,考虑悬空输入导致门电路开关,造成电流消耗.负载IO依照情况设定,一般设置输出低.

5.电池驱动

电池驱动最主要的功能是监视系统电力.它提供了其他模块和应用对系统电源状态的查询,查询是AC,还是battary供电,查询电池电量等.
 

本文来源:数据大全网
原文链接:http://www.sql163.com/html/2009-3/2009328161247_2.html

 

 

Windows CE设备驱动开发之电源管理      第二部分

4.7.2、电源状态

电源管理器期望所有被管理的设备能支持一个或多个设备电源状态。设备电源状态的数量是有限的。设备必须通知电源管理器其功耗特性。设备常以功耗换取性能。

电源管理器在OEM定义的系统电源状态下管理设备电源状态。系统电源状态在注册表中定义,可以用任意数字定义。系统电源状态会给设备电源状态设置一个上限。

某些应用程序可能需要特定设备保持运行在指定的设备功率等级上。例如:当一个音频播放程序在播放音乐时,可能需要网卡及音频解码器保持运行在高功率等级。视频播放程序可能需要网络、音频,同时可能要使显示设备在进入屏幕保护模式后一直显示,并保持背光常亮。应用程序可以请求电源管理器设置最小设备电源状态,电源管理器会调用SetPowerRequirement和ReleasePowerRequirement系统API来进行设置。

4.7.2.1              设备电源状态

设备电源状态是预定义的静态值。电源管理器将设备状态传给驱动程序,驱动程序负责将其映射为自身的设备性能,然后在物理设备上进行状态转换。

下表是对各种设备电源状态的描述。

设备电源状态
 注册表键值
 描述
 
Full on
 D0
 此状态表示设备已开启或正在运行。设备将以系统允许的最大功耗及最高性能运行。
 
Low on
 D1
 此状态表示设备已开启或正在运行,但以低于D0状态的功耗及性能运行。D1状态适用于设备已经被使用,但以较低的性能运行即可,没有必要以最大性能运行,会产生额外的功率消耗。
 
Standby
 D2
 此状态表示设备被部分供电,保证设备在需要时能自动唤醒。
 
Sleep
 D3
 睡眠状态。保证唤醒的最小供电,在需要时能自动唤醒并初始化。
 
Off
 D4
 关闭状态,不供电。
 

一种物理设备并不能支持上述所有的设备电源状态。但是,所有的设备都必须支持D0设备电源状态。如果驱动程序收到请求,要求其将设备进入它不支持的电源状态,驱动程序应使设备进入下一个支持的电源状态。例如:电源管理器请求设备进入D2电源状态,但设备并不支持D2状态,这时如果设备支持D3或D4状态,驱动程序应使设备进入D3或D4状态。如果某一设备需要进入D3状态,但是此设备却不能唤醒系统,那么应使此设备进入D4状态。上述这些规则可以使驱动程序的执行简单化。

电源管理器有选择的将系统电源状态映射为对应的设备电源状态。例如:如果设备仅支持D0及D4电源状态,那么,电源管理器不会直接请求设备进入D4电源状态。如果D3或D4被设为此设备的最小电源状态,电源管理器会一直等待直到系统进入D3或D4状态时,再将设备设为D4状态。如果此设备的最小电源状态被设为D0、D1或D2,电源管理器将使设备一直运行于D0状态。

当设备驱动程序被加载时,应将设备设为D0状态。在驱动程序被卸载时,应将设备设为D4状态。如果在启动时设备进入了D0外的其他设备电源状态,那么可以在处理IOCTL_POWER_CAPABILITIES时发出一个DevicePowerNotify请求。

 

4.7.2.2              系统电源状态

系统电源状态由OEM定义,并由OEM引用。OEM可以将其命名为像On,SystemIdle,OnBattery,InCradle,OutOfCradle等名称。这些名称并没有被系统预定义,也不要求将其定义为线性序列。系统电源状态在系统配置注册表键中定义。Windows CE并没有限制可以定义多少种系统电源状态。

当然,也可以创建系统电源状态与预定义的设备电源状态的显式映射。显式映射需要在注册表中定义。系统电源状态明确的制定系统中所有设备的最大设备电源状态。

电源管理器示例定义了On,UserIdle,SystemIdle及Suspend四种系统电源状态。当用户使用系统时,电源状态设为On。如果用户停止使用,电源状态被设为UserIdle。当用户在一定的周期内(如30s)不使用系统,则进入SystemIdle状态;只要设备驱动程序处于活动状态,系统将一直保持在SystemIdle状态。如果设备驱动程序停止活动,系统进入Suspend状态。

UserIdle状态用于用户正在使用设备,但却没有操作设备。例如,用户一直观看屏幕显示,但没有手动操作。SystemIdle状态被用于用户没有直接使用设备,但处理器仍在继续运行。例如,在传输文件期间,用户可能人为设备已处于空闲状态,但实际上处理器依旧在持续运行,直到文件传输完成。

电源管理器示例实现了根据UserActivity和SystemActivity定时器对用户及系统活动进行判断。在定时器超时后,根据当前系统供电状况(使用外接电源或电池)进行不同的系统电源状态切换。

Platform Builder提供的Windows CE运行时image示例均使用外接电源供电模式。你可以选择实现一套在使用电池供电时的电源状态。复制电源管理器示例代码的PDD目录,并对其做适当的修改即可。

4.7.2.2.1   将系统电源状态映射为设备电源状态

在注册表系统配置中明确定义系统电源状态名称。系统电源状态到设备电源状态的映射在注册表的每一个电源状态名称键值下被枚举。如下示例代码:

[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Power/State/Example]    Default=dword:0; D0    Flags=dword:10000; POWER_STATE_ON    COM1:=dword1; D1上面的注册表片段定义了名为Example的系统电源状态,并设置了除COM1:被限制为最高运行于D1设备电源状态外,其他的所有设备最高均可运行于D0设备电源状态。其中Flags列是一个标识码,用于表示Pm.h头文件中定义的POWER_STATE_ON标记。如果需要,OEM可以定义自己的电源状态标记。

下表列出了键值名称及其描述。

键名
 描述
 
Name
 系统电源状态名称
 
Flags
 标识码。用于表示在Pm.h头文件中预定义的类似于POWER_STATE_ON的标记。
 
Default
 表示在此系统电源状态下时,所有设备的默认设备电源状态。此键值用数字表示,0代表D0,1代表D1,以此类推。
 
DeviceName
 设置在此系统电源状态下指定设备的最大设备电源状态。可以对任意数目的设备进行定义。
 

 

电源管理器支持多种设备类型的映射。例如:NDIS迷你接口及块设备驱动器设备类型在Pm.h中会被指定为其自身的GUID类型。其他类型被管理设备的默认值也可以在注册表中指定。例如:

[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Power/State/Example/{98C5250D-C29A-4985-AE5F-AFE5367E5006}]    Default=dword:1; D1    "CISCO1"=dword:0; D0上面注册表片段设置电源管理器限值所有NDIS迷你接口设备在Example系统电源状态下时均运行于D1设备电源状态,只有名为CISCO1的设备最高可运行于D0状态。

 

4.7.2.2.2   系统电源状态切换

电源管理器在下列情况下进行系统电源状态切换:

l         OEM定义的状态切换事件发生。

l         应用程序调用SetSystemPowerState。

OEM定义的事件可能包含设备供电从外接电源切换为使用电池供电,延长系统空闲周期,将设备插入底座(Cradle),电池电量低等。OEM需要根据情况修改电源管理器,以便判断两种系统电源状态间的切换是否合理,并在必要时切换系统电源状态。Platform Builder提供的电源管理器源代码仅支持在设备从外接电源切换为使用电池供电时进行系统电源状态切换。

应用程序可以使用系统电源状态名或表示系统电源状态的数值为参数调用SetSystemPowerState函数。如果应用程序了解OEM定义的系统电源状态,那么可以选择使用电源状态名进行显式调用。对于独立于平台的应用程序,则设置数值进行调用,并允许电源管理器决定如何进行电源状态映射。电源管理器可对应用程序能请求的状态进行限制。

 

4.7.2.2.3   系统电源状态示例

下面的注册表片段是表示系统电源状态到设备电源状态映射的示例。

[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Power/State/On]    "Default"=dword:0           ; D0    "Flags"=dword:10000         ; POWER_STATE_ON[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Power/State/UserIdle]    "Default"=dword:1           ; D1    "Flags"=dword:0[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Power/State/SystemIdle]    "Default"=dword:2           ; D2    "Flags"=dword:0[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Power/State/Suspend]    "Default"=dword:3           ; D3    "Flags"=dword:200000        ; POWER_STATE_SUSPEND; @CESYSGEN IF CE_MODULES_NDIS[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Power/State/Suspend/{98C5250D-C29A-4985-AE5F-AFE5367E5006}]    "Default"=dword:4           ; D4; @CESYSGEN ENDIF CE_MODULES_NDIS下表描述了上面注册表片段的映射方式。

系统电源状态
 设备电源状态
 
On
 D0
 
UserIdle
 D1
 
SystemIdle
 D2
 
Suspend
 D3。NDIS迷你接口单独被映射为D4。
 

当系统使用上面的注册表配置,并进入Suspend状态,除了NDIS迷你接口会被关闭外,其他可唤醒源都将处于可激活状态。如果有设备不支持D3状态,它将自动进入D4状态。

应用程序可以使用SetPowerRequirement创建设备电源要求。也可以使用电源管理器控制面板程序创建附加的设备电源要求。

 

4.7.2.3              设备及系统电源状态名称

电源管理器要求使用小写字母命名设备及系统电源状态名称。一些类似于wsprintf(buf, "%u", n)或不区分大小写的比较这样的操作,会涉及区位表(Locale table)查询。区位表(Locale table)在Wince.nls内存映射文件中被实现。在挂起期间,电源管理器不能使用FileSystemPowerFunction访问文件系统。从挂起的线程中访问文件系统可能造成操作系统死锁。如果Wince.nls中必须的页面无法在内存中找到,就会产生死锁。

在处理API调用时,电源管理器将名称转换为小写字母。然而,在挂起及恢复状态时,电源管理器在文件系统操作被禁止后访问注册表。这时不能将注册表设置项转换为小写。所以必须将系统电源状态注册表设置改为小写字母。例如:WAV1:应被描述为wav1:。其他类似于注册表HKLM/Drivers/Builtin下的用于控制设备驱动加载的设置项不用修改。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Fenstein/archive/2009/01/10/3746312.aspx

 

 

 

 

 

constantine
1.测试的时候没有接USB
2.如果用电池供电
  如果在eboot时配置成disable battery,系统会按照SETTING-POWER-Schemes里的AC Power设置的时间进入3个模式
  如果在eboot时配置成enable battery,系统会按照SETTING-POWER-Schemes里的AC Power设置的时间进入useridle 和systemidle,但不进入suspend或者很久才进入suspend

3如果用外部电源供电
  结果同2

 

抱歉!评论已关闭.