Symbian OS高級開發內核篇之電源管理

在瞭解Symbian OS電源管理之前,先來看一下電源有哪些狀態。Symbian OS內核定義了三種電源狀態:

l        Off狀態,在這個狀態下所有的設備都關閉電源或處於非活動狀態,或者僅僅只有很微弱的電源消耗。這個狀態是由於用戶的行爲、應用程序的請求、UI進入非活動狀態或意外電源損耗的結果。另外系統進入睡眠狀態時,電源也是這種狀態。需要注意的是必須重啓系統電源纔會回到Active狀態,可以是冷啓動,也可以是熱啓動如果系統在睡眠時。

l        Standby狀態,一個較低的電源損耗狀態,由於關閉了系統很多資源如時鐘、外設、CPU及一些內部處理而進入此狀態。從此狀態可以很快切換到Active狀態。

l        Active狀態,及完全的活動狀態。

 

電源管理

Symbian OS系統內核提供了一個電源管理的框架,可以管理電源的狀態切換,內核端管理設備電源狀態,通過實現內核擴展接口來對手機上電源進行管理。內核端框架還爲設備驅動使用電源提供了接口。框架的用戶端接口在User Library中的電源相關的類給出,從而使得應用程序可以被通知、響應、改變電源的狀態。

 

下圖顯示了Symbian OS 中電源管理框架結構:

Symbian OS 電源管理結構圖

1 電源管理架構圖 (源:SDL

 

電源管理器模塊管理電源狀態的轉換;電源控制器是內核的一個擴展,它管理特定設備的電源,如芯片電源控制器,振盪器等;電源處理器是電源管理的設備驅動接口。

 

電源管理器(Power manager

 

電源管理器管理電源狀態的轉換,從上圖中可以看出,它協調外設和CPU的電源狀態變化,提供設備驅動和電源控制器之間的交互,它還管理與用戶端的交互。

 

電源管理器是DPowerManager類的一個實例化,這個對象是Symbian OS的私有對象,這個對象在系統初始化時創建,但直到電源控制器被創建和註冊後才被安裝。在這個對象安裝之前,Symbian OS用內建的缺省行爲來管理電源。

 

在用戶端的電源類,是一系列的靜態函數,允許用戶端請求從Standby Off 的狀態轉換,並允許用戶端請求喚醒事件通知。電源管理器對象是電源控制器對象和電源處理器對象的定位點(anchor point)。

 

電源控制器(Power Controller

 

電源控制器管理專用設備的電源,諸如芯片電源管理控制器,振盪器等。它是DPowerController類的一個實例,它是一個抽象類,需要從新實現。電源控制器需要註冊,註冊實際上就是在電源管理器對象中放一個指向電源控制器對象的指針。

 

電源控制器負責跟蹤喚醒事件,並通知電源管理器。

 

電源處理器(Power Handlers

 

DPowerHandler類爲設備驅動與電源管理器提供了接口,這是一個抽象類,需要物理設備驅動實現。DPowerHandler對象如何適配到驅動的對象模型中取決於設備驅動的設計,當這個對象創建後,驅動應該調用DPowerHandler::Add方法進行註冊,註冊成功後就可以收到電源狀態改變的通知了。

 

當請求電源狀態切換爲OffStandby時,電源管理器調用DPowerHandler::PowerDown方法,當請求電源切換到Active狀態時,電源管理器調用DPowerHandler::PowerUp方法。驅動程序必須在這兩個函數被調用後做出相應的響應。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章