首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

关于WINCE下电源管理有关问题

2012-02-03 
关于WINCE下电源管理问题,请教各位1、我的电源管理用到两个表:充电表(即当外接电源插入时调用)放电表(即用

关于WINCE下电源管理问题,请教各位
1、我的电源管理用到两个表:充电表(即当外接电源插入时调用)
  放电表(即用电池时调用)
  但我发现放电时电池的放电曲线是类似线性的下降
  可是充电时充电曲线不是线性的,而是电压上升了一会就下降了一会,类似梯形方波
  不知道各位做过电源管理的是怎么处理这里的?是不是也是遇到我这种问题

2、我已经把 “控制面板”->“电源”->“方案”中的“将状态切换为挂起”、
  写死为“从不”
  所以我的PDA需要深度休眠只能通过按休眠按键(我这里定义的深度休眠是指CPU休眠,而不是背光休眠)
   
  但是偶尔会出现过了一段时间背光先关掉了,然后自动进入CPU休眠状态,这时只能通过按休眠键才唤醒,这是我不希望看到的
   
  不知道为什么会出现这个现象

[解决办法]
好像放电和充电都不是线性的,这个你找个做电池的人了解一下,他们最清楚。

控制面板中的东西,其实只是设置了注册表,具体怎么处理,还要看你的电源管理驱动。
[解决办法]
充放电曲线可以向电池供应商要的,没有一个是线性的吧

但是偶尔会出现过了一段时间背光先关掉了,然后自动进入CPU休眠状态,这时只能通过按休眠键才唤醒,这是我不希望看到的 
正常情况下是由PM来管理系统的状态切换的,默认设定是支持你的要求的,但为什么偶尔会进Suspend,必须要跟踪分析代码来查看,会不会有别的线程在更改系统状态,还是有修改过PM的代码?
[解决办法]
OEMPowerOff一般是由PM代码来调用的
可以把PM的Debug Message打开来看一看,相关代码在Public下面
[解决办法]
是不是有什么地方调用了SetSystemPowerState
这个函数也可以让系统进Suspended。
SetSystemPowerState (NULL,POWER_STATE_SUSPEND,POWER_FORCE) or 
SetSystemPowerState (NULL,POWER_STATE_OFF, POWER_FORCE) or
SetSystemPowerState (NULL,POWER_STATE_CRITICAL, POWER_FORCE) or
SetSystemPowerState (L"suspend", 0, 0);
调这些都有这种可能。

楼主可以按照hzdysymbol的建议,看下PM的log
在如果是PM要求进的Suspeded的话,应该在\public\common
\oak\drivers\pm\pdd\pda下的Platform.cpp的
PlatformSetSystemPowerState函数里的PowerOffSystem前能看到
log。但不知楼主的PM策略是不是使用的Public下的PDA这一套




[解决办法]
把系统里的所有别的驱动拿掉看看,只留Lcd,backlight,然后再看看系统会不会有问题?
没有问题再一个个加回去

再一个就是要想办法把这问题复制出来,这样就容易查了

因为我对4。2不熟悉,所以也没有什么特别好的思路

热点排行