7784|31

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

CE5.0 电源属性 系统定时挂起问题 [复制链接]

在WINCE5.0 系统中,控制面板--电源--电源属性--方案,
当我在电源使用方案中选电池电源时,将状态切换为挂起的时间不准(即是系统定时睡眠的时间不准),
请高手指点应该怎么样修改,谢谢!

最新回复

你这问题不是还没有解决吗?怎么结贴了 我觉得23楼的做法不是根本解决问题的办法,而且系统已经提供了PM来切换状态,这样做反倒有可能导致系统的不正常。 其实找出这问题的根本原因应该不难,你先platform.cpp中的Message打开         // wait for an event; keep track of elapsed time         dwStartTime = GetTickCount();         dwStatus = WaitForMultipleObjects(dwNumEvents, hEvents, FALSE, dwTimeout);         dwElapsedTime = GetTickCount() - dwStartTime;         PMLOGMSG(ZONE_PLATFORM,             (_T("%s: wait returned %d, elapsed time %d, timeout was %d\r\n"), pszFname,             dwStatus, dwElapsedTime, dwTimeout)); 如果你没有自己定制过PM的话,那就写一个小AP实时的调用一下函数GetTickCount();,然后看它跟实际的时间对不对得上,如果可以对上的话应该是不会有问题,如果对不上,请检查OEMInit()中调用的OALTimerInit(1, OEM_TICKS_1MS, OEM_TICK_COUNT_MARGIN); 下面是Intel PXA270的设定: #define OEM_CLOCK_FREQ          3250000        // 3.25M ticks/sec #define OEM_TICKS_1MS           3250           // 1ms in ticks 其它的CPU可能要查看其CPU的Spec   详情 回复 发表于 2008-10-16 16:56
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
说明你背后有驱动要求PM不要进suspend,可以create 一个线程去监听系统的电源消息
 
 

回复

76

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
楼上的说法我不同意,机器是能挂起的,只是时间不准而已。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
驱动要求PM不要进suspend,等它做完事情之后再发消息通知PM,可以进入suspend了。

这些都是猜测,你创建一个线程监听系统电源消息和状态变化就什么都知道了。
 
 
 

回复

47

帖子

0

TA的资源

禁止访问

5
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复

95

帖子

0

TA的资源

一粒金砂(中级)

6
 
谁能给点意见
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

7
 
不明白您所说的不准是什么意思,是到了一定电量系统没有挂起,系统监测的电量不准导致时间不对.还是说你设定一个系统时间,但是到时间没有挂起?如果是最后一种,那基本上是没办法了,我以前遇到过CE当中精确定时真是困难.建议你试下CAPPRUNATTIME吧.另一个进程挂起系统.
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
时间不准,差的有多少?
PM中有没有设
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
        "Timeout"=dword:1          ; in seconds

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
        "Timeout"=dword:1          ; in seconds  
这两个Timeout的值,这个值会影响到进Suspend的时间
系统进Suspend的时间应该是UserActivity Timeout值+系统进UserIdle Timeout值+系统进SystemIdle Timeout值+系统进Suspend Timeout值
理论上来说应该是差得很少的
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

9
 
UserActivity Timeout是指什么?
没有听说过这段时间,能具体描述一下?
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

10
 
可以参考一下PM的代码,系统正常开机后进入Activity状态,等到UserActivity Timeout到后切换到Inactivity状态,然后才开始计UserIdle的Timeout,等时间到后才会切到UserIdle状态
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

11
 
lz说的不准是每次都差多少啊,
每次都一样吗?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

12
 
根据UserIdle ,SystemIdle ,Suspend设置的不同,时间差得不同
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 7 楼 hzdysymbol 的回复:
时间不准,差的有多少?
PM中有没有设
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
"Timeout"=dword:1          ; in seconds

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
"Timeout"=dword:1          ; in seconds  
这两个Timeout的值,这个值会影响到进Suspend的时间
系统进Suspend的时间应该是UserActivity …


好厉害
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 7 楼 hzdysymbol 的回复:
时间不准,差的有多少?
PM中有没有设
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
"Timeout"=dword:1          ; in seconds

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
"Timeout"=dword:1          ; in seconds
这两个Timeout的值,这个值会影响到进Suspend的时间
系统进Suspend的时间应该是UserActivity Timeout值…

这两个值,都是设置对的。这都是PUBLIC下的代码,编出来就是不准的,你们也可以测一下自己的机器,应该都是不准的
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

15
 
我的电池休眠也不准确
交流电源休眠时间非常准确
我在注册表中没有看到
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
"Timeout"=dword:1          ; in seconds

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
"Timeout"=dword:1          ; in seconds  
这两个设置
请问楼主是否解决这个问题了??
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

16
 
我的电池休眠和交流电源休眠时间都准确了

在注册表中并没有
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
"Timeout"=dword:1          ; in seconds

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
"Timeout"=dword:1          ; in seconds  
 
 
 

回复

97

帖子

0

TA的资源

一粒金砂(初级)

17
 
我正在试改PUBLIC下的代码,
因为这都是微软的,编出来就是不准的,注册表都是这样设置的,默认的,没动过。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

18
 
在PUBLIC中
的power.cpp有设置休眠时间的函数
但是这个都是固定的不需要修改啊

在你的驱动中只需要读取注册表中你设置的休眠时间再乘1000
然后waitforsingleobject(xxx,挂起时间)

就可以了
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

19
 
wangxin_801115:
我的注册表里是有这两项的:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
"Timeout"=dword:1          ; in seconds

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
"Timeout"=dword:1          ; in seconds  
休眠时间的处理我们的电池驱动没有做处理,而是使用的PUBLIC下PM\PDD\DEFAULT里面提供的默认处理
你现在是怎么处理的,请详细说明一下
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

20
 
在Common.reg中找到
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
    "Timeout"=dword:A                        ; in seconds

; @CESYSGEN IF PM_PM_DEFAULT_PDD

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
    "Timeout"=dword:A                        ; in seconds

通过远程查看注册表也可以看到:Timeout 为10

奇怪的问题:
本来刚开始电池休眠是好使的,而且很准
但是后来就不能休眠了,但是查看注册表可以看到
BattSystemIdle  60
BattUserIdle    60
说明向注册表写入已经成功了
但是,就是休眠不了??
奇怪!!!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表