WINCE下的关机,休眠和唤醒

daigua04 2009-02-28 10:15:31
各位英雄:
我的平台是PXA270+WINCE5.0,核心电源芯片是LP3971SQ,外设包括USB,SDRAM,SD卡,百兆网络,音频等,有几个关于电源管理的问题想请教:

1、如果想实现软关机,就像普通PC上的开始菜单里的关机按钮,能不能在WINCE系统的开始菜单里增加关机选项?因为目前的选项只有挂起。

2、硬件外接电源(比如220V输入,中间经过变压)时,如果需要实现软关机功能,且电源没有拔掉,这样也能关机吗?实现过程是?

3、系统休眠时,我们需要做的工作包括电源管理器的PDD层实现,OAL层的几个重要函数(OEMPowerOff等),请问系统休眠时一般怎么处理外设的电源状态?比如音频芯片的工作电源。或者说一般的外设要不要参与电源管理(目标是节省电量)?如果要参与,要实现的工作包括哪些?是不是只需要修改驱动程序中的_PowerUp和_PowerDown?

4、休眠时,外设一般都处于什么状态?
...全文
1082 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xgia7 2010-08-03
  • 打赏
  • 举报
回复
先介绍几个方法:
《1》 KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);
《2》PowerOffSystem()
《3》 SetCleanRebootFlag();
return KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);
以上3个方法的功能分别是:重新启动,关闭电源,硬启动
---------------------------------------------------------------------------------------------
#include <winioctl.h>//重启命令用到的
#define CTL_CODE( DeviceType, Function, Method, Access ) ( ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) )
#define FILE_DEVICE_HAL 0x00000101
#define METHOD_BUFFERED 0
#define FILE_ANY_ACCESS 0
#define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
---------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------
extern "C" __declspec(dllimport) BOOL KernelIoControl(
DWORD dwIoControlCode,
LPVOID lpInBuf,
DWORD nInBufSize,
LPVOID lpOutBuf,
DWORD nOutBufSize,
LPDWORD lpBytesReturned);
---------------------------------------------------------------------------------------------
然后在程序中调用下面的这个函数来实现重新启动的功能
bool af = KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);
guo100136017 2010-04-26
  • 打赏
  • 举报
回复
遇到了相同的问题,想在菜单中软关机
chen89506624 2010-04-09
  • 打赏
  • 举报
回复
遇到了相同的问题,想在菜单中软关机
gooogleman 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 LinHanLao 的回复:]
To hzdysymbol:
请问你说的“长按Power键关机”,这个“关机”是不是要CPU支持才行?
软件可以实现这种彻底的“关机”吗?
[/Quote]

其实就是关掉电源芯片,ARM没有了电源,自然会关机了。
yashi 2009-03-24
  • 打赏
  • 举报
回复
1、如果想实现软关机,就像普通PC上的开始菜单里的关机按钮,能不能在WINCE系统的开始菜单里增加关机选项?因为目前的选项只有挂起。

可以呀。你修改shell的源代码就可以。

2、硬件外接电源(比如220V输入,中间经过变压)时,如果需要实现软关机功能,且电源没有拔掉,这样也能关机吗?实现过程是?

这需要硬件上先实现,而且必须是软件可控的实现方法。最简单的当然是用一个单片机。

3、系统休眠时,我们需要做的工作包括电源管理器的PDD层实现,OAL层的几个重要函数(OEMPowerOff等),请问系统休眠时一般怎么处理外设的电源状态?比如音频芯片的工作电源。或者说一般的外设要不要参与电源管理(目标是节省电量)?如果要参与,要实现的工作包括哪些?是不是只需要修改驱动程序中的_PowerUp和_PowerDown?

当然是该关的就关掉,省电呀。驱动中的powerup和powerdown肯定要修改,但不够,还需要在其它地方配置一下IO口。

4、休眠时,外设一般都处于什么状态?

当然是完全断电状态。
xumercury 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gooogleman 的回复:]
我考虑处理的办法是要一个MCU然后让MCU控制ARM的供电,然后通过软件控制mcu。这样可以软件关机

——这个没有必要吧。直接用2440 的GPIO出来控制不就OK了
[/Quote]
也可以。。但是供电是外部的。。除非2440做了电源的开关管理。这样就可以了
gooogleman 2009-03-24
  • 打赏
  • 举报
回复
我考虑处理的办法是要一个MCU然后让MCU控制ARM的供电,然后通过软件控制mcu。这样可以软件关机

——这个没有必要吧。直接用2440 的GPIO出来控制不就OK了
xumercury 2009-03-24
  • 打赏
  • 举报
回复
1、如果想实现软关机,就像普通PC上的开始菜单里的关机按钮,能不能在WINCE系统的开始菜单里增加关机选项?因为目前的选项只有挂起。

我考虑处理的办法是要一个MCU然后让MCU控制ARM的供电,然后通过软件控制mcu。这样可以软件关机

2、硬件外接电源(比如220V输入,中间经过变压)时,如果需要实现软关机功能,且电源没有拔掉,这样也能关机吗?实现过程是?

方法同上

3、系统休眠时,我们需要做的工作包括电源管理器的PDD层实现,OAL层的几个重要函数(OEMPowerOff等),请问系统休眠时一般怎么处理外设的电源状态?比如音频芯片的工作电源。或者说一般的外设要不要参与电源管理(目标是节省电量)?如果要参与,要实现的工作包括哪些?是不是只需要修改驱动程序中的_PowerUp和_PowerDown?

省电一般都是需要关掉你的外部设备,同时关掉背光,然后让OS suspend或者叫Standby。这样就可以了驱动层里的powerup是要加一些对外设的关闭和背光的关闭。

4、休眠时,外设一般都处于什么状态?

外设我们设定为关电源不工作的状态。省电嘛
wjf_zjut 2009-03-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hzdysymbol 的回复:]
1、如果想实现软关机,就像普通PC上的开始菜单里的关机按钮,能不能在WINCE系统的开始菜单里增加关机选项?因为目前的选项只有挂起。
要添加关机功能也应该可以吧,关键是需要修改MS的代码,何不用更简单的方法来实现呢,如长按Power键关机,短按休眠


2、硬件外接电源(比如220V输入,中间经过变压)时,如果需要实现软关机功能,且电源没有拔掉,这样也能关机吗?实现过程是?
跟拔不拔电源有关系吗?


3、系统休眠时,我…
[/Quote]
学习!
constantine 2009-03-02
  • 打赏
  • 举报
回复
1.2,跟我们的一样,硬件需要电源控制的电路,然后软件就是控制一下就好了。不用理会是否接了电源,关键在于是否有控制电路支持。
后面的没搞过。
LinHanLao 2009-03-02
  • 打赏
  • 举报
回复
To hzdysymbol:
请问你说的“长按Power键关机”,这个“关机”是不是要CPU支持才行?
软件可以实现这种彻底的“关机”吗?
hzdysymbol 2009-03-01
  • 打赏
  • 举报
回复
1、如果想实现软关机,就像普通PC上的开始菜单里的关机按钮,能不能在WINCE系统的开始菜单里增加关机选项?因为目前的选项只有挂起。
要添加关机功能也应该可以吧,关键是需要修改MS的代码,何不用更简单的方法来实现呢,如长按Power键关机,短按休眠


2、硬件外接电源(比如220V输入,中间经过变压)时,如果需要实现软关机功能,且电源没有拔掉,这样也能关机吗?实现过程是?
跟拔不拔电源有关系吗?


3、系统休眠时,我们需要做的工作包括电源管理器的PDD层实现,OAL层的几个重要函数(OEMPowerOff等),请问系统休眠时一般怎么处理外设的电源状态?比如音频芯片的工作电源。或者说一般的外设要不要参与电源管理(目标是节省电量)?如果要参与,要实现的工作包括哪些?是不是只需要修改驱动程序中的_PowerUp和_PowerDown?
Audio一般是断电的,当然也可以进省电模式,要看硬件和驱动是如何实现的
MS建议不在PowerUp和PowerDown中实现,而是通过驱动的四个POWER IOCTL来实现


4、休眠时,外设一般都处于什么状态?
一般都处于省电模式或断电模式,这要看驱动如何配置
xiaopi224 2009-03-01
  • 打赏
  • 举报
回复
关注

19,503

社区成员

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

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