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