4829|7

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于PXA270+wince5.0自动suspend的问题 [复制链接]

我的平台是PXA270+wince5.0,现在遇到一个问题请大家帮忙。
关于休眠和唤醒,我现在用按键做休眠和唤醒没有问题,但是如果我让系统自动休眠,则用按键唤醒回来就会出错。
经过对比串口信息,发现,系统自动的休眠并没有进入suspend状态,而是idle状态。而我在idle状态下按键唤醒,系统却认为我的按键的目的是要进入suspend,所以出错。

  1. //系统自动进入idle状态
  2. PWM: PBT_TRANSITION to system power state [Flags: 0x0]: 'systemidle'
  3. PWM: Power State Flags:0x0
  4. PWM: set backlight to D4
  5. ……………………………………
  6. //执行OEMPowerOff
  7. ======+OEMPowerOff()!!======
  8. ……………………………………
  9. ======-XllpPmSleepCLevelProcessing()======
  10. //按下唤醒按键

  11. ======+BSPPowerON()======
  12. ……………………
  13. ======PWB_PowerUp()======

  14. PWM: PBT_TRANSITION to system power state [Flags: 0x200000]: 'suspend'
  15. PWM: POWER_STATE_SUSPEND
  16. PWM: Waiting for PM state transition notification
  17. //出错,data abort
  18. Data Abort: Thread=83f638ec Proc=8042f0a0 'device.exe'
  19. AKY=00000005 PC=027d2b24(battdrvr.dll+0x00002b24) RA=027d24c8(battdrvr.dll+0x000024c8) BVA=06420000 FSR=000004f6
复制代码

一开始以为是battery驱动的问题,但是如果用按键做休眠和唤醒就没有问题,是否说明battery驱动是OK呢?
请大家帮忙看看,如何让系统自动能够进入suspend状态?
谢谢!
此帖出自WindowsCE论坛

最新回复

谢谢大家的回答,是我搞错了,系统应该是进入和suspend状态,出错是驱动的问题。非常感谢,此贴结贴。  详情 回复 发表于 2009-1-15 22:20
点赞 关注
 

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
关于系统自动休眠的流程,请高手指点一下,非常感谢。
此帖出自WindowsCE论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
问题可能并不像我一楼所说,但是我想知道如何让系统直接进入suspend,而不是sysidle。谢谢
此帖出自WindowsCE论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
“系统却认为我的按键的目的是要进入suspend”,这个不是“系统认为”的,系统可没这么智能。

这是“睡眠唤醒”按键驱动中实现的,发现按下后,根据当前状态,判断需要进入什么状态,然后向系统提交相应的电源管理事件,系统才会照做。

也就是说,在这个驱动中,首先要判断当前处于什么状态下,然后再处理。只要处于非全速工作模式(RUN)下(suspend, idle),就唤醒。
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
除非你自己定制Power management,这样可以让系统直接进入Suspend,不然默认的系统先是进UserIdle,然后SystemIdle,然后才会进suspend
另外你把Power Button按下后处理的代码贴出来看看,调用不同的函数进suspend处理的过程是不一样的,现在一般是用SetSystemPowerState来做状态切换

另外你的Battery驱动应该是有问题的,不然不管怎么样状态切换,都不应该会出Data Abort的异常
此帖出自WindowsCE论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

6
 
我在按键按下的时候发送了SetSystemPowerState(NULL, POWER_STATE_SUSPEND, 0),所以系统知道我按下按键就会进入suspend状态。在wince的控制面板中的power页面,可以设置系统多长时间进入useridle,systemidle,和suspend状态,但是我设置之后,到时间后系统会进入useridle和systemidle状态,然后就会poweroff,并不会进入suspend状态。这是我感到比较奇怪的地方,不知道是哪里出了问题。
此帖出自WindowsCE论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
你看一下你的BSP里面off.c文件里面的函数OEMPoweroff,看它最后调用的CPU进入的是什么状态?
我估计你进的是Deep Sleep Mode,而不是Sleep Mode?
另外你怎么判断系统是进了poweroff而不是suspend呢?量一下CPU的PWR_ENpin的电压
此帖出自WindowsCE论坛
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢大家的回答,是我搞错了,系统应该是进入和suspend状态,出错是驱动的问题。非常感谢,此贴结贴。
此帖出自WindowsCE论坛
 
 
 

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

随便看看
查找数据手册?

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