一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Windows Mobile的系統(tǒng)電源狀態(tài)和電源管理策略

454398 ? 來源:博客園 ? 作者:Jason's Scribble ? 2020-10-05 17:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本篇將以Windows Mobile為例介紹Windows CE電源管理的實現(xiàn),大體上,Windows Mobile分為Pocket PC和Smartphone兩種版本。這兩者之間的主要區(qū)別在于觸摸屏和電源模型,Smartphone采用的是“Always On”模型。為了說清楚它們的區(qū)別,我們就先從系統(tǒng)電源狀態(tài)說起吧(這里有些系統(tǒng)電源狀態(tài)是從WM5開始才有的)。

1. Windows Mobile的系統(tǒng)電源狀態(tài)

On:用戶與系統(tǒng)交互時的狀態(tài);

BacklightOff:在一段時間內(nèi)(默認15秒),如果一直沒有用戶操作(比如按下某個鍵或者觸摸屏幕),就關(guān)閉背光,這時其他的設(shè)備都沒變化。這個timeout值可以通過控制面板進行設(shè)置;

UserIdle:這個狀態(tài)只在Smartphone中被使用。經(jīng)過一段稍長的時間,如果一直沒有用戶操作,就關(guān)閉背光和LCD。這個timeout值可以通過控制面板進行設(shè)置;

ScreenOff:一般由某些程序指定,才進入這個狀態(tài)。比如音樂播放器程序,當(dāng)你聽音樂時按下某個鍵可以將屏幕關(guān)閉。PocketPC和Smartphone都使用這個狀態(tài),它與UserIdle的不同在于,ScreenOff意味著“用戶主動關(guān)閉了顯示,只有當(dāng)他按下電源鍵時才重新顯示”,而UserIdle意味著“用戶有段時間沒操作了,那么我們可以關(guān)閉屏幕來省電”,所以在UserIdle時,隨便按下Smartphone的哪個鍵都會啟動顯示;

Suspend:這是PocketPC的睡眠模式,幾乎所有設(shè)備都被關(guān)閉,直到某個硬件設(shè)備觸發(fā)中斷才將系統(tǒng)喚醒,這個timeout值可以通過控制面板進行設(shè)置(默認為3分鐘);

Resuming:這是PocketPC被喚醒后的狀態(tài),這時屏幕是關(guān)閉的,并啟動一個15秒的計時器,在這段時間內(nèi)決定接下來進入哪個狀態(tài),如果計時器超時則重新回到睡眠狀態(tài);

Unattended:這個狀態(tài)只在PocketPC中被使用,用戶對其不會有所察覺。有些程序,如ActiveSync每5分鐘會喚醒系統(tǒng)進行同步,同步完成后再讓系統(tǒng)繼續(xù)睡眠,這段時間不希望打擾用戶,即程序在后臺執(zhí)行。

可以通過注冊表查看系統(tǒng)電源狀態(tài)對應(yīng)的具體設(shè)備的電源狀態(tài),[HLM\System\CurrentControlSet\Control\Power\State]。

現(xiàn)在我們知道,Smartphone沒有真正的睡眠模式,即使它會在一段時間后關(guān)閉背光和屏幕,但它并沒有睡著,只是休息一下眼睛罷了,它的大腦和四肢仍在正常工作。PocketPC所采用的模型比Smartphone要復(fù)雜的多,你可以按下電源鍵讓系統(tǒng)睡眠,在必要時,也可以喚醒系統(tǒng)做一些工作然后再繼續(xù)睡眠。如果你在Smartphone上運行一個桌面精靈之類的程序,她為了引起你的注意,長時間的蹦啊跳啊,不管白天還是黑夜,可想而知,你的待機時間將......

你可能會覺得PocketPC的“Sleep”模型比Smartphone的“Always On”模型要省電,其實恰恰相反。因為在系統(tǒng)睡眠的過程中,它需要通知所有的設(shè)備驅(qū)動,為了讓它們保存一些重要的信息并關(guān)閉相應(yīng)的硬件設(shè)備,在系統(tǒng)被喚醒時也需要通知它們恢復(fù)先前的工作。這個過程不僅耗時還可能會耗更多的電,因為一些設(shè)備在頻繁的狀態(tài)轉(zhuǎn)換過程中會消耗比較多的能量。這也就是為什么當(dāng)你收到一條短信時,睡眠狀態(tài)的PocketPC要花3到6秒的時間來處理,而Smartphone只需要幾個微秒:)

2. Windows Mobile的電源管理策略

我們可以用系統(tǒng)電源狀態(tài)機來簡單的描述Windows Mobile的電源管理策略,以PocketPC為例,系統(tǒng)電源狀態(tài)機如下圖所示:

系統(tǒng)內(nèi)部的電源管理器負責(zé)協(xié)調(diào)電源狀態(tài)的轉(zhuǎn)換,電源狀態(tài)的轉(zhuǎn)換主要由一下幾種方式觸發(fā):

計時器超時:SuspendTimeout和ResumingSuspendTimeout,分別對應(yīng)于第一節(jié)介紹Suspend和Resuming狀態(tài)時所提到的計時器。細說起來,它們每個又有兩個值,分別對應(yīng)著電源供電時和電池供電時的超時值,也就是注冊表[HLM\System\CurrentControlSet\Control\Power\Timeout]中的ACSuspendTimeout、BattSuspendTimeout、ACResumingSuspendTimeout、BattResumingSuspendTimeout;

系統(tǒng)調(diào)用:驅(qū)動程序或應(yīng)用程序通過相應(yīng)的API,請求進入某種電源狀態(tài)。這類API在前面的文章中已經(jīng)有所介紹,如SetSystemPowerState、SetPowerRequirement、DevicePowerNotify等;

平臺相關(guān)的系統(tǒng)調(diào)用:通過PowerPolicyNotify通知電源管理器發(fā)生了某個事件,它的實現(xiàn)比較靈活,驅(qū)動程序或應(yīng)用程序可以通過相應(yīng)的參數(shù)與電源管理器進行交互,比如PPN_POWERCHANGE、PPN_SUSPENDKEYPRESSED、PPN_UNATTENDEDMODE等,參見"pmpolicy.h";

直接訪問內(nèi)核對象:事件(Event)作為Windows CE系統(tǒng)的內(nèi)核對象,可以通過事件名稱在進程間共享,因此我們可以訪問電源管理器中的兩個事件,它們的名字分別是_T("PowerManager/ReloadActivityTimeouts")、_T("PowerManager/SystemIdleTimerReset")。如果你的程序需要動態(tài)修改那幾個計時器的時間長度,可以通過第一個事件通知電源管理器重新讀取注冊表中計時器的值,而第二個事件與SystemIdleTimerReset功能一樣,可以阻止系統(tǒng)進入睡眠狀態(tài)。

3. Windows Mobile電源管理相關(guān)API的應(yīng)用

最后,通過幾個應(yīng)用場景簡單介紹一下常用的電源管理相關(guān)的API的使用:

如果你在設(shè)計的是媒體播放器程序,不希望在播放電影時,系統(tǒng)自動轉(zhuǎn)入Suspend狀態(tài),這時可以每隔30秒調(diào)用一次SystemIdleTimerReset,它會幫你重置那個計時器;如果你還想同時保持背光,那么可以調(diào)用SetPowerRequirement(TEXT("BKL1:"), D0, POWER_NAME, NULL, 0);如果你提供一個按鈕允許用戶關(guān)閉屏幕,那么調(diào)用SetSystemPowerState(NULL, POWER_STATE_IDLE, 0);

如果你在設(shè)計的是天氣預(yù)報程序,需要每天早上6點在線更新天氣信息,這時可以調(diào)用CeRunAppAtTime,系統(tǒng)到時會被RTC中斷喚醒,還記得前面提到的那個15秒的計時器嗎,這時你的程序應(yīng)該在15秒內(nèi)請求進入Unattended狀態(tài),否則系統(tǒng)將重新回到睡眠狀態(tài)。在處理更新的過程中,還是應(yīng)該每隔30秒調(diào)用一次SystemIdleTimerReset,在處理完更新后,應(yīng)該再次調(diào)用CeRunAppAtTime,并放棄Unattended狀態(tài)。請注意,在電源管理器的實現(xiàn)代碼中,用了一個引用計數(shù)的變量(gdwUnattendedModeRequests)統(tǒng)計所有對Unattended狀態(tài)的請求,所以PowerPolicyNotify(PPN_UNATTENDEDMODE, TRUE);和PowerPolicyNotify(PPN_UNATTENDEDMODE, FALSE);要成對出現(xiàn),否則系統(tǒng)將無法回到睡眠狀態(tài)。

如果你要開發(fā)一個監(jiān)控電池狀態(tài)的程序,首先應(yīng)該創(chuàng)建一個接收狀態(tài)通知的線程,在這個線程里調(diào)用RequestPowerNotifications,這個函數(shù)的第一個參數(shù)是一個消息隊列的句柄,所以必須先創(chuàng)建一個消息隊列(CreateMsgQueue),第二個參數(shù)是你希望得到的通知類型,這里要用到的是PBT_POWERSTATUSCHANGE|PBT_POWERINFOCHANGE,然后線程就可以等待通知了(WaitForSingleObject),一旦有通知到來,線程通過ReadMsgQueue讀取消息的內(nèi)容,再做些更新UI的工作。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 電源管理
    +關(guān)注

    關(guān)注

    117

    文章

    6440

    瀏覽量

    146164
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3614

    瀏覽量

    91451
  • 計時器
    +關(guān)注

    關(guān)注

    1

    文章

    432

    瀏覽量

    33769
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    多通道電源管理芯片在分布式能源系統(tǒng)中的優(yōu)化策略

    摘要: 隨著分布式能源系統(tǒng)的廣泛應(yīng)用,對電源管理芯片的性能要求日益提升。本文深入探討了多通道電源管理芯片在分布式能源
    的頭像 發(fā)表于 05-16 15:22 ?231次閱讀

    ?Xyber-BMS?(智能電源管理系統(tǒng))解析

    Xyber-BMS(智能電源管理系統(tǒng)) 是一種結(jié)合先進算法、傳感器技術(shù)和物聯(lián)網(wǎng)(IoT)的電源管理解決方案,旨在優(yōu)化能源使用效率、延長電池壽
    的頭像 發(fā)表于 03-18 11:01 ?989次閱讀

    淺談電力光伏混合儲能系統(tǒng)的能量策略研究

    本文提出了一種針對電源系統(tǒng)的靈活電源管理策略,可以在含有電池轉(zhuǎn)換器和光伏逆變器的系統(tǒng)中*效地使用
    的頭像 發(fā)表于 03-07 13:55 ?455次閱讀
    淺談電力光伏混合儲能<b class='flag-5'>系統(tǒng)</b>的能量<b class='flag-5'>策略</b>研究

    源碼開放 智能監(jiān)測電源管理教程寶典!

    源碼開放,今天我們學(xué)習(xí)的是電源管理系統(tǒng)的核心功能模塊,手把手教你如何通過不同的技術(shù)手段實現(xiàn)有效的電源管理。
    的頭像 發(fā)表于 12-11 09:26 ?657次閱讀
    源碼開放  智能監(jiān)測<b class='flag-5'>電源</b><b class='flag-5'>管理</b>教程寶典!

    使用PWM實現(xiàn)電源管理策略

    PWM(脈沖寬度調(diào)制)是一種廣泛應(yīng)用于電子設(shè)備中實現(xiàn)電壓調(diào)節(jié)和功率控制的技術(shù),它通過改變信號的脈沖寬度來模擬輸出不同的電壓幅值,從而高效控制設(shè)備的工作狀態(tài)。在電源管理中,PWM技術(shù)發(fā)揮
    的頭像 發(fā)表于 11-18 16:23 ?1223次閱讀

    芯片設(shè)計進階之SOC電源管理系統(tǒng)介紹

    供電系統(tǒng)和內(nèi)部電源管理單元如下圖所示: PMIC(Power management IC): 電源管理集成電路,主要特點是高集
    的頭像 發(fā)表于 11-16 09:24 ?2845次閱讀
    芯片設(shè)計進階之SOC<b class='flag-5'>電源</b><b class='flag-5'>管理</b><b class='flag-5'>系統(tǒng)</b>介紹

    ZVS技術(shù)在電源管理系統(tǒng)中的應(yīng)用

    電源管理系統(tǒng)在現(xiàn)代電子設(shè)備中扮演著至關(guān)重要的角色,它負責(zé)將輸入的電能高效地轉(zhuǎn)換為設(shè)備所需的電能形式,并確保設(shè)備的穩(wěn)定運行。隨著科技的進步和電子設(shè)備性能的提升,對電源
    的頭像 發(fā)表于 10-10 10:21 ?2322次閱讀

    電源監(jiān)控電路-電源管理芯片

    電源管理芯片(Power Management Integrated Circuits,簡稱PMIC)在電子設(shè)備系統(tǒng)中扮演著至關(guān)重要的角色,負責(zé)電能的變換、分配、檢測及其他電能管理的職
    發(fā)表于 09-29 15:48

    TPS2576x/TPS2577x-Q1拉電流電源策略管理

    電子發(fā)燒友網(wǎng)站提供《TPS2576x/TPS2577x-Q1拉電流電源策略管理.pdf》資料免費下載
    發(fā)表于 09-27 10:58 ?0次下載
    TPS2576x/TPS2577x-Q1拉電流<b class='flag-5'>電源</b><b class='flag-5'>策略</b><b class='flag-5'>管理</b>

    物聯(lián)網(wǎng)系統(tǒng)中不間斷供電電源_UPS電源管理模塊詳解

    01 物聯(lián)網(wǎng)系統(tǒng)中為什么要使用UPS電源管理模塊 在物聯(lián)網(wǎng)系統(tǒng)中,使用UPS(Uninterruptible Power Supply,不間斷電源
    的頭像 發(fā)表于 09-26 12:08 ?1959次閱讀
    物聯(lián)網(wǎng)<b class='flag-5'>系統(tǒng)</b>中不間斷供電<b class='flag-5'>電源</b>_UPS<b class='flag-5'>電源</b><b class='flag-5'>管理</b>模塊詳解

    pmu電源管理芯片和DCDC區(qū)別

    電源管理芯片(Power Management Unit, PMU)和直流-直流轉(zhuǎn)換器(DC-DC Converter)是電子系統(tǒng)中用于電源管理
    的頭像 發(fā)表于 09-23 09:56 ?3135次閱讀

    電源管理電路作用是什么原理

    電源管理電路是電子系統(tǒng)中至關(guān)重要的組成部分,它負責(zé)為系統(tǒng)中的各個部分提供穩(wěn)定、可靠的電力。電源管理
    的頭像 發(fā)表于 09-20 09:59 ?1186次閱讀

    智能電源管理技術(shù)

    智能電源管理系統(tǒng)是實現(xiàn)平臺溫度和SSD總功耗之間可接受的平衡所必需的。盡管形狀因素定義了SSD的最大功率,但主機可以使用電源狀態(tài)來更改SSD
    的頭像 發(fā)表于 08-14 09:03 ?671次閱讀

    電源管理芯片怎么測好壞

    電源管理芯片(Power Management Integrated Circuit,簡稱PMIC)是電子設(shè)備中非常重要的組成部分,它負責(zé)對電源進行管理和控制,以確保電子設(shè)備的正常運行
    的頭像 發(fā)表于 08-02 09:23 ?3962次閱讀

    電源管理芯片壞了會怎么樣

    電源管理芯片(Power Management Integrated Circuit,簡稱PMIC)是現(xiàn)代電子設(shè)備中不可或缺的一個組件。它負責(zé)管理設(shè)備的電源供應(yīng),確保設(shè)備在各種工作
    的頭像 發(fā)表于 08-02 09:20 ?2635次閱讀