Windows Mobile電源管理分析與實(shí)現(xiàn)
(6)配置PWER,PRER或PFER寄存器,以使能特定的喚醒源,這里設(shè)置RTC、來(lái)電RING中斷和電源鍵的喚醒;
(7)保存當(dāng)前處理器模式的狀態(tài)寄存器,保存MMU寄存器,保存Restlme的返回地址XllpRes-umePhase3,回寫Cache,配置CP14寄存器CR7,讓處理器進(jìn)入sleep模式。到此,PXA270進(jìn)入sleep模式,系統(tǒng)處于Suspend電源狀態(tài)。
2.1.3 Resume流程
總的說(shuō)來(lái),Resume流程與Suspend是相反的,處理器初始化之后,會(huì)載入Suspend之前保存在SDRAM中的各種狀態(tài)參數(shù),恢復(fù)之前狀態(tài),其流程簡(jiǎn)要介紹如下:
(1)當(dāng)已使能的喚醒事件發(fā)生時(shí)。處理器會(huì)從BootLoader啟動(dòng),進(jìn)行基本的硬件初始化之后。會(huì)判斷是Reset,還是sleep Resume,如果是后者,則會(huì)跳轉(zhuǎn)到Xllp_ResumePhase2A;
(2)在Xllp_ResumePhase2A中首先會(huì)將保存在PSPR中的參數(shù)取出,檢查無(wú)錯(cuò)誤后,重新配置好MMU,載入處理器狀態(tài)寄存器和堆棧,跳轉(zhuǎn)至XllpRe-sumePhase3;
(3)在XllpResumePhase3載入所在環(huán)境的處理器狀態(tài)寄存器,接著逐級(jí)返回至OEMPowerOff函數(shù),在OEMPowerOff函數(shù)中會(huì)獲得喚醒源,然后退出;
(4)此時(shí)系統(tǒng)由Power Manager置于Resuming狀態(tài),Power Manager 根據(jù)喚醒源判斷是否將系統(tǒng)置于ON,還是繼續(xù)Suspend。
此時(shí),系統(tǒng)狀態(tài)已經(jīng)恢復(fù)至睡眠之前,結(jié)束了Re-sume流程,完成對(duì)系統(tǒng)的喚醒。
2.2 設(shè)備驅(qū)動(dòng)電源管理的實(shí)現(xiàn)
除了對(duì)處理器的電源管理,Power Manager還有一個(gè)主要工作就是平臺(tái)上設(shè)備的電源管理。對(duì)于只有ON和OFF兩種電源狀態(tài)的設(shè)備,Power Manager通過(guò)DeviceIOControl在Suspend和Resuming時(shí)分別調(diào)用各設(shè)備驅(qū)動(dòng)中實(shí)現(xiàn)的PowerUp和PowerDown函數(shù),以開啟和關(guān)閉設(shè)備。在該平臺(tái)上大多數(shù)設(shè)備都屬于這種管理方式,包括LCD,Aladio Codec等,這些工作主要是在Wince流驅(qū)動(dòng)的IOControl中執(zhí)行一些開啟或者關(guān)閉處理器I/O電源的操作。
對(duì)于GSM和藍(lán)牙等較復(fù)雜的設(shè)備,需要能及時(shí)喚醒,如在系統(tǒng)Suspend來(lái)電時(shí),GSM模塊需快速喚醒并做出響應(yīng),因此這些設(shè)備也支持sleep等模式。在進(jìn)入Suspend會(huì)相應(yīng)調(diào)用這些設(shè)備驅(qū)動(dòng)的sleep函數(shù),進(jìn)入設(shè)備的省電模式,而在Resuming時(shí)也會(huì)調(diào)用對(duì)應(yīng)的退出sleep的函數(shù),以實(shí)現(xiàn)快速喚醒。
2.3 應(yīng)用程序電源管理的實(shí)現(xiàn)
在此以自己編寫的基于DirectDraw的照相程序?yàn)槔齺?lái)說(shuō)明應(yīng)用程序中電源管理的實(shí)現(xiàn)。
首先,在開啟照相程序時(shí),預(yù)覽一段時(shí)間沒(méi)有操作后,不希望按照定時(shí)器的值進(jìn)入Suspend,此時(shí)需定時(shí)修改SuspendTimeout,以阻止系統(tǒng)進(jìn)入睡眠狀態(tài)。具體做法是:?jiǎn)?dòng)一個(gè)30 s的定時(shí)器,每30 s調(diào)用一次SystemIdleTimerReset函數(shù)。另外,由于該照相程序是Overlay顯示效果,在進(jìn)入拍照程序后,如果按下電源鍵進(jìn)入Suspend狀態(tài),再喚醒時(shí)系統(tǒng)仍處于拍照程序,但是由于PXA270的LCDController沒(méi)有再次創(chuàng)建Overlay層,因此程序不能顯示圖像。從使用者的角度考慮,在系統(tǒng)Reume之后照相程序應(yīng)能恢復(fù)正常。做法如下:在程序中創(chuàng)建一個(gè)線程,用CreateMsgQueue創(chuàng)建一個(gè)消息隊(duì)列,調(diào)用RequestPowerNotifications申請(qǐng)獲得電源管理消息,然后調(diào)用WaitForSingleOb-ject等待通知,當(dāng)收到Suspend的消息時(shí),對(duì)程序窗口發(fā)送重新初始化Overlay的消息,在Resume后,程序會(huì)馬上執(zhí)行重新初始化的流程,照相程序恢復(fù)正常。本文引用地址:http://m.butianyuan.cn/article/181137.htm
3 數(shù)據(jù)分析
對(duì)系統(tǒng)運(yùn)行時(shí)幾個(gè)典型電源狀態(tài)的電流值做了測(cè)量,數(shù)據(jù)如表1所示。
4 結(jié) 語(yǔ)
對(duì)于1 200 mA/h的電池,該智能手機(jī)平臺(tái)能達(dá)到160 h左右的理論待機(jī)時(shí)間,以及3 h左右的通話時(shí)間。另外,睡眠及喚醒的響應(yīng)時(shí)間也在1 s左右,表明Power Manager達(dá)到了提高電池電源使用效率的目標(biāo),基本滿足實(shí)際應(yīng)用的需求。
評(píng)論