在系统空闲的情况下每隔10分钟左右会自动进入sleep状态(电池供电)

chinesedragon2010 2010-08-21 01:39:36
我的系统是WINCE6.0+S3C2443,问题的现象:
电池供电,开机进入WINCE界面后没有任何动作,大概过10分钟左右系统会自动进入sleep状态,我自己没有发出让系统进入sleep的通知,后来我进入WINCE->my device->control panel->power->schemes下面把让系统进入idle的条件全部设置为never,过10分钟左右一样会让我的系统进入sleep状态;后来我改为用AC供电(电池也存在),做同样的测试,就不会进入sleep状态。但我这边(BSP)都没有发出让系统进入sleep的通知,难道是WINCE这个自带的UI会检测到系统idle时间达到10分钟后会发出这个通知吗?如果是,那么是在哪里发出来的,我想阻止这个动作,在这里想大家请教了。
...全文
221 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinesedragon2010 2010-08-30
  • 打赏
  • 举报
回复
这个问题已解决,做了大概的总结,见
http://blog.csdn.net/chinesedragon2010/archive/2010/08/28/5846201.aspx
根据昨晚的进一步了解,应该还要其他的解决办法,但还没有验证,以后再补充了,谢谢大家了。
IT铁哥 2010-08-28
  • 打赏
  • 举报
回复
MARK~~
unsway123 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 chinesedragon2010 的回复:]

很奇怪我今天在BatteryPDDGetStatus()中加入下面的语句
hUserEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, _T("PowerManager/ActivityTimer/UserActivity"));
if (hUserEvent != NULL)
SetEvent(hUserEvent);
就可以不让系统按时进入s……
[/Quote]


这个help上有详细的说明。在网上有人说是PM的bug,在启动的时候如果你不写上上面的东西,对注册表的设置时不会被PM读到的,PM可能就会用默认值来处理各种系统电源状态。
博说医械研发 2010-08-27
  • 打赏
  • 举报
回复
有可能是你之前的注册表中ACUserIdle或者BattUserIdle没有设置成0
chinesedragon2010 2010-08-27
  • 打赏
  • 举报
回复
很奇怪我今天在BatteryPDDGetStatus()中加入下面的语句
hUserEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, _T("PowerManager/ActivityTimer/UserActivity"));
if (hUserEvent != NULL)
SetEvent(hUserEvent);
就可以不让系统按时进入sleep状态了,但之前好像不可以,很奇怪,也许我之前搞错了。
chinesedragon2010 2010-08-26
  • 打赏
  • 举报
回复
谢谢veabol,我抽空试一下啊。
博说医械研发 2010-08-26
  • 打赏
  • 举报
回复
看看有没有用

“默认的WINCE设置是会自动挂起的,在电源管理界面里设置从不自动挂起后能够禁止它自动挂起,同时修改了以下一些注册表:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\Timeouts]
"ACUserIdle"=dword:0 ; in seconds
"ACSystemIdle"=dword:0 ; in seconds
"ACSuspend"=dword:0 ; in seconds
"BattUserIdle"=dword:0 ; in seconds
"BattSystemIdle"=dword:0 ; in seconds
"BattSuspend"=dword:0 ; in seconds
"BattPowerOff"=dword:0
"ExtPowerOff"=dword:0
"WakeupPowerOff"=dword:0
"ScreenPowerOff"=dword:0

但当使用了hive 注册表时即使在定制OS的时候就将以上的值设置好仍然会自动挂起,而在WINCE的电源管理界面查看这些值是正确的,实际上是以上注册表信息是存储到system.hv中,一般情况下加载pm.dll的时候还无法从其它存储器中读取system.hv,pm.dll在无法读取这些注册表值的时候就会使用一些默认值,而这些默认值是会进行自动suspend的,所以需要在system.hv能够读取后使用如下代码让系统重新读取超时设置。
HANDLE hevReloadActivityTimeouts =
OpenEvent(EVENT_ALL_ACCESS, FALSE, _T("PowerManager/ReloadActivityTimeouts"));
if (hevReloadActivityTimeouts) {
SetEvent(hevReloadActivityTimeouts);
CloseHandle(hevReloadActivityTimeouts);
}

这部分由应用程序或者其它驱动来完成都可以。”
http://www.veabol.com/thread-3-1-1.html

chinesedragon2010 2010-08-26
  • 打赏
  • 举报
回复
我想通过下面两种方式来阻止系统在电池供电的时候定时进入睡眠状态,但都不行,不知道为什么?
1.在BatteryPDDGetStatus()中调用SystemIdleTimerReset();
2.在BatteryPDDGetStatus()中加入下面的语句
hUserEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, _T("PowerManager/ActivityTimer/UserActivity"));
if (hUserEvent != NULL)
SetEvent(hUserEvent);

但系统还是10分钟左右进入sleep状态,大家有什么建议啊?
xiao_rq 2010-08-24
  • 打赏
  • 举报
回复
关注中,期待楼主早日解决
chinesedragon2010 2010-08-24
  • 打赏
  • 举报
回复
找到产生这个问题的原因了,我在做电池驱动的时候BatteryPDDGetStatus()下面部分注释掉了
memcpy(pstatus, &gpStatus->sps, sizeof(*pstatus));
*pfBatteriesChangedSinceLastCall = gpStatus->fChanged;
if(*pfBatteriesChangedSinceLastCall) {
gpStatus->fChanged = FALSE; // reset changed flag if it's set
}
注释掉上面的代码后就出现了上面的问题,到底为什么会这样呢?有点眉目了,但还要彻底搞清楚,望大家也给些建议,谢谢了。
chinesedragon2010 2010-08-23
  • 打赏
  • 举报
回复
有道理,谢谢啊,我再仔细检查一下。
91program 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chinesedragon2010 的回复:]
引用 3 楼 91program 的回复:
看电源管理的驱动吧,也许是驱动里做了什么东东

在整个BSP包下都没有找到在哪里调用了SetSystemPowerState( NULL, POWER_STATE_SUSPEND, POWER_FORCE ),我觉得会不会是WINCE自带的UI发出让系统进入sleep状态的命令
[/Quote]

我觉得不会.

因为如果是系统UI做的,大家在定制系统的时候,都会失败,而不只是你遇到这个问题.
chinesedragon2010 2010-08-22
  • 打赏
  • 举报
回复
在正常情况下,是通过驱动或者应用程序调用SetSystemPowerState( NULL, POWER_STATE_SUSPEND, POWER_FORCE )来让系统进入休眠状态的。
chinesedragon2010 2010-08-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 91program 的回复:]
看电源管理的驱动吧,也许是驱动里做了什么东东
[/Quote]
在整个BSP包下都没有找到在哪里调用了SetSystemPowerState( NULL, POWER_STATE_SUSPEND, POWER_FORCE ),我觉得会不会是WINCE自带的UI发出让系统进入sleep状态的命令
91program 2010-08-22
  • 打赏
  • 举报
回复
看电源管理的驱动吧,也许是驱动里做了什么东东
chinesedragon2010 2010-08-21
  • 打赏
  • 举报
回复
自己先顶一个啊

19,503

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧