6667|22

80

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

WINCE 不能按设定时间进入suspend 的问题 [复制链接]


如上图设置wince 进入各种模式的时间,启动系统后,不操作,系统会按照设置准确的进入useridle和systemidle ,但是不会按照设定时间进入suspend,有时延时一段时间(几十分钟不等)进入suspend,有时根本就不会进入suspend.请问大侠指点一下.谢谢啦!

最新回复

请问lz,这个问题解决了吗?我也遇到相同的问题  详情 回复 发表于 2010-2-2 13:39
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
系统是不是后台有东东在运行呢?
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
时间到,手动调用GwesPowerOffSystem();
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

4
 
不知道,关注一下
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
91program说的有道理,可能是后台有东东在运行,打乱了定时器的计时。
你可以试着把useridle和systemidle的时间设长一些,大于suspend的时间,把suspend的时间设短些,看看能不能先进入syspend,而后进入useridle。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

6
 
sorry。进入了suspend就不可能再进入useridle了。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

7
 
谢谢这么多热心人啊!

引用 4 楼 Ricky_hu 的回复:
91program说的有道理,可能是后台有东东在运行,打乱了定时器的计时。
你可以试着把useridle和systemidle的时间设长一些,大于suspend的时间,把suspend的时间设短些,看看能不能先进入syspend,而后进入useridle。

呵呵,按照我图上的设定,不动作,过了1分钟系统进入useridle,再过2分钟进入systemidle,再过3分钟进入suspend.


我刚才做了试验,大体知道了方向,在系统启动时通过eboot,配置选项use battery(Disable Battery)之后,系统可以按照设定时间进入3种模式。如果配置成use battery(Enabel Battery),就有上面说的问题了,不能进入suspend或者很久才会进入suspend.

我们的BSP 和相应的开发板是没有battery供电的,battery部分是我们后来加上的,可能是和这部分有关系了.我再继续查查.大家再有建议谢谢提供啊!谢谢啦!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
直接到这里把AC设定的值读出来,看最后进Suspend的值是多少
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\Timeouts]
    "ACUserIdle"=dword:78               
    "ACSystemIdle"=dword:12C       
    "ACSuspend"=dword:3C               
    "BattUserIdle"=dword:3C               
    "BattSystemIdle"=dword:3C       
    "BattSuspend"=dword:3C               
,如果还有问题,可以把PM驱动的调试信息打开,所有的一切都可以看得很清楚
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 
hzdysymbol
你是指我设定值和注册表里相应的值是否一致吗?这个我看过了,每次设置改变注册表也会更新的.
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

10
 
如果接了usb同步或是网线那么基本上是不行的,只要有数据流通就不会挂起。
我就是因为这样,结果定时不准确,设置2分钟有时候编程半个小时,所以后来自己做了个驱动,不用wince的。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

11
 
另外你确认你是电池电源?不是电池供电就是认为是电池电源的。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 
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
 
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

13
 
上面写错了,更正下


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

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

回复

66

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 8 楼 AlicePeter 的回复:
hzdysymbol
你是指我设定值和注册表里相应的值是否一致吗?这个我看过了,每次设置改变注册表也会更新的.

我是让你检查一下在使用AC的状况下timeout的值的设定是多少?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

15
 
PM中会检测Power supply,如果是电池供电则安Battery的注册表设定进行Timeout,如果是AC供电,则按AC的注册表设定进行Timeout
而这个Power supply的状态一般是由电池的驱动提供的,当电池和电源状态进行切换的时候会有Notify通知PM驱动

象LZ这个问题,最好是把PM代码中的Timer的值和所有的事件打印出来,这样比较容易找出问题为什么不进Suspend?
按正常的没有修改过的PM,我知道的在USB activesync连接,传输文件,播放Media Player,通过Wifi下载文件时系统会停在system idle状态,因为这些动作会不断的Reset Timer
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

16
 
[img=http://p.blog.eeworld.net/images/p_blog_eeworld_net/AlicePeter/EntryImages/20081223/bat633656197344818750.JPG[/img]

hzdysymbol ,以上是设置值和注册表的值.都是对应的,AC power的设置分别是1分钟,1分钟,1钟.

我现在正在尝试多打印出一些相关的信息,不过我对PM 这部分不是很熟,所以还在查,看该打印哪些信息.谢谢你的提示!

我现在放开了下面文件里的一些信息,再看看结果
C:\WINCE500\PLATFORM\COMMON\SRC\SOC\pxa3xx\IPM\Driver\source
IPMainThread.cpp
IPMPowerMonitor.cpp
ipm_main.cpp
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

17
 
IPM中的信息没有用的,要打开Public/common/drivers/pm中的message,
如果自己定制过PM的话,那可能相关的代码已经移到BSP中
反正最终的DLL为pm.dll,要把这里的消息打印出来
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

18
 
把路径D:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\下的PM文件夹copy到bsp的drivers目录下面,并把PM中的所有驱动编译成debug版的,就可以看到完整的系统电源管理的message。
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

19
 
我将电池驱动里得
C:\WINCE500\PLATFORM\ZYLONITE_MHL\SRC\DRIVERS\BATTDRVR\PDD
ds2781.cpp
的下列函数的内容注释掉,之后就可以在enable use battery时可以正常进入suspend了.
这些函数5s钟掉用一次.我再接着查这些函数调用相关的地方是不是,禁止了suspend.
BOOL DS2781::GetBatteryLifePercent(BYTE *pLifePercent)
BOOL DS2781::GetBatteryVoltage(DWORD *pVoltage)
BOOL DS2781::GetBatteryCurrent(INT *pCurrent)
BOOL DS2781::GetBatteryTemperature(DWORD *pTemperature)

 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

20
 
这不是关键,你的系统不进Suspend,个人感觉肯定是有一个事件一直在重复发送,你可以想办法找出这个事件来,你也可以修改PM,不让它处理这个事件
因为有可能这个事件是系统需要的,那你就不能关掉它
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表