專利名稱:一種移動(dòng)設(shè)備的電源動(dòng)態(tài)管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動(dòng)設(shè)備電源管理領(lǐng)域,特別涉及一種基于電源動(dòng)態(tài)管理 的移動(dòng)設(shè)備及電源動(dòng)態(tài)管理方法。
背景技術(shù):
現(xiàn)代社會(huì)中,隨著科學(xué)技術(shù)的不斷進(jìn)步,越來(lái)越多的人們已經(jīng)開(kāi)始使用移 動(dòng)設(shè)備,而對(duì)于眾多的移動(dòng)設(shè)備來(lái)說(shuō),電源的供給是必不可少的。因此電源管 理是移動(dòng)設(shè)備上的重要課題,在現(xiàn)有技術(shù)中,各類嵌入式搡作系統(tǒng)平臺(tái)均在某
種程度上支持動(dòng)態(tài)電源管理(DPM, Dynamic Power Management )。
現(xiàn)以MontaVista公司的MontaVista Linux系統(tǒng)和Microsoft公司的 Windows Mobile系統(tǒng)為例進(jìn)行介紹。MontaVista Linux系統(tǒng)是MontaVista 公司對(duì)Linux內(nèi)核針對(duì)移動(dòng)設(shè)備做了一定裁剪和完善的Linux版本,也是移動(dòng) 設(shè)備上使用較為廣泛的Linux系統(tǒng)。MontaVista系統(tǒng)把系統(tǒng)按照不同的參數(shù) 分為不同的操作點(diǎn)(0perationPoint), —個(gè)操作點(diǎn)對(duì)應(yīng)一種功耗和性能的固 定的參數(shù)搭配,比如Core電壓1. lv, CPU頻率13MHz, SRAM timing CAS2, 由不同的策略(Policy)把一組操作點(diǎn)映射成一個(gè)操作狀態(tài)(Operation State),系統(tǒng)初始化時(shí),必須創(chuàng)建一些搡作點(diǎn),策略,和操作狀態(tài),運(yùn)行過(guò)程 中,系統(tǒng)的DMP框架負(fù)責(zé)管理Policy和在不同的操作狀態(tài)間切換。在 MontaVista中,驅(qū)動(dòng)必須響應(yīng)PM—SUSPEND和PM_RESUME請(qǐng)求。
而Window Mobile是Microsoft公司的以WinCE為內(nèi)核,并作一定裁剪 和完善的移動(dòng)設(shè)備操作系統(tǒng)。Windows Mobile在WinCE4. 0后引入了專門(mén)的電 源管理程序,這個(gè)電源管理程序代替了以前散見(jiàn)于GWES(圖形、窗口、事件 子系統(tǒng))的函數(shù),定義了一系列的電源管理狀態(tài)D0、 Dl、 D2、 D3。應(yīng)用程序 可以接收系統(tǒng)電源管理狀態(tài)的改變的通知,可以請(qǐng)求改變電源管理狀態(tài),并可 以阻止系統(tǒng)關(guān)閉電源。在Windows Mobile中,驅(qū)動(dòng)必須響應(yīng)I0CTL—POWER-SET
5請(qǐng)求,并改變?cè)O(shè)備狀態(tài)。
以上的這兩種技術(shù)都在某種程度上以一定的靈活性和可擴(kuò)展性改善了移
動(dòng)設(shè)備的電源管理,但是,應(yīng)用程序和驅(qū)動(dòng)程序仍然在DPM中承擔(dān)比較重要的
責(zé)任,開(kāi)發(fā)人員也需要對(duì)系統(tǒng)使用的策略和機(jī)制有較為深入的了解才能最大限
度的節(jié)省功耗。舉例而言,在Windows Mobile上,當(dāng)某個(gè)設(shè)備響應(yīng)電源管理 程序的10CTL-P0WER-SET請(qǐng)求時(shí),必須記錄自己的電源管理狀態(tài),在狀態(tài)改變 的過(guò)程中,也必須維護(hù)自己的狀態(tài)。在MontaVista中,應(yīng)用程序在使用設(shè)備 前必須查詢?cè)O(shè)備電源管理狀態(tài),如果已經(jīng)關(guān)閉,則需要開(kāi)啟電源。另外,二者 都過(guò)于依賴應(yīng)用程序進(jìn)行電源管理,希望應(yīng)用程序能主動(dòng)關(guān)閉特定設(shè)備的電源 (比如請(qǐng)求電源管理狀態(tài)變更,或者改變策略),此舉固然加大了應(yīng)用程序的 靈活性,但也加大了開(kāi)發(fā)人員的負(fù)擔(dān)。
隨著計(jì)算機(jī)技術(shù)的發(fā)展,代理機(jī)制被廣泛使用。代理機(jī)制在計(jì)算機(jī)領(lǐng)域應(yīng) 用的基本思想是,客戶端(這個(gè)客戶端是廣義的,泛指任何使用某項(xiàng)服務(wù)的程 序)對(duì)服務(wù)端發(fā)出的調(diào)用被代理攔截,經(jīng)過(guò)特定處理后發(fā)送到服務(wù)端,服務(wù)端 返回的結(jié)果也被代理攔截,經(jīng)過(guò)處理后發(fā)送到原始客戶端。這個(gè)攔截過(guò)程實(shí)現(xiàn) 了額外的功能,使得使用服務(wù)端所必需的某些額外操作得一向客戶端屏蔽。從 而簡(jiǎn)化了客戶端的編程,提高開(kāi)發(fā)效率。
比如,在COM的遠(yuǎn)程接口調(diào)用中,客戶端調(diào)用非本地接口時(shí)和本地接口并
無(wú)差別,系統(tǒng)自動(dòng)處理接口參數(shù)的列集和散集,客戶調(diào)用實(shí)質(zhì)上發(fā)送到其代理, 這個(gè)代理對(duì)象把參數(shù)列集處理(即按照特定規(guī)律封裝數(shù)據(jù)),并發(fā)送到遠(yuǎn)程接 口的代理,這個(gè)遠(yuǎn)程代理把接口方法散集處理(即按照特定規(guī)律解包數(shù)據(jù)), 然后調(diào)用真正的接口方法。這個(gè)過(guò)程對(duì)客戶端而言是透明的,簡(jiǎn)化了客戶端的 編程,否則客戶端將不得不使用原始的套接字(Socket),將不得不自行處理 應(yīng)用層協(xié)議,即傳遞數(shù)據(jù)的語(yǔ)義,以供雙方分辨接口調(diào)用的參數(shù)。不得不處理 容錯(cuò),連接關(guān)閉和緩存等一系列問(wèn)題。同理,在JAVA平臺(tái)的RMI (遠(yuǎn)程方法 調(diào)用)中,在C0RBA的接口調(diào)用中,以及任何嚴(yán)肅的分布式計(jì)算環(huán)境中,都有 類似的機(jī)制。
總之,代理機(jī)制可以有效的減少客戶端的開(kāi)發(fā)負(fù)擔(dān),自行攔截客戶端的調(diào) 用,并作處理,使得某些系統(tǒng)必要的工作對(duì)使用者透明。鑒于以上內(nèi)容,有必要提供一種移動(dòng)設(shè)備的電源動(dòng)態(tài)管理方法,其通過(guò)釆用代理機(jī)制,實(shí)現(xiàn) 在不損失性能的前提下盡可能優(yōu)化系統(tǒng)功耗。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于電源動(dòng)態(tài)管理的移動(dòng)設(shè)備及電源動(dòng)態(tài)管 理方法,實(shí)現(xiàn)移動(dòng)設(shè)備功耗的降低。
一方面,本發(fā)明提供一種移動(dòng)設(shè)備的電源動(dòng)態(tài)管理方法,其基于所述 移動(dòng)設(shè)備的控制系統(tǒng),所述管理方法釆用代理機(jī)制對(duì)所述移動(dòng)設(shè)備進(jìn)行電
源動(dòng)態(tài)管理,包括以下步驟
a、 為需要代理的驅(qū)動(dòng)對(duì)象創(chuàng)建并注冊(cè)對(duì)應(yīng)的代理對(duì)象,以通過(guò)所述代 理對(duì)象為對(duì)應(yīng)的驅(qū)動(dòng)對(duì)象進(jìn)行代理;
b、 通過(guò)所述代理對(duì)象監(jiān)控并攔截向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)起的功耗請(qǐng)求事
件;
c、 判斷所述代理對(duì)象的電源管理狀態(tài)是否適以響應(yīng)所述功耗請(qǐng)求事 件若判斷結(jié)果為適以響應(yīng),則將所述功耗請(qǐng)求事件發(fā)送至對(duì)應(yīng)的驅(qū)動(dòng)對(duì) 象并在其完成響應(yīng)后轉(zhuǎn)到下述步驟d;若判斷結(jié)果為不適以響應(yīng),則轉(zhuǎn)到 下述步驟e;
d、 需要功耗調(diào)低時(shí),向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào)低請(qǐng)求,在功耗調(diào) 低請(qǐng)求發(fā)送成功后更改代理對(duì)象自身的電源管理狀態(tài),隨后轉(zhuǎn)到上述步驟 b;不需要功耗調(diào)低時(shí),則直接轉(zhuǎn)到上述步驟b;
e、 需要功耗調(diào)高時(shí),向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào)高請(qǐng)求,在功耗調(diào) 高請(qǐng)求發(fā)送成功后更改代理對(duì)象自身的電源管理狀態(tài),隨后轉(zhuǎn)到上述步驟 c;若所述功耗調(diào)高請(qǐng)求發(fā)送失敗,則轉(zhuǎn)到上述步驟b。
所述步驟e進(jìn)一步包括
el、在對(duì)應(yīng)的驅(qū)動(dòng)對(duì)象響應(yīng)完所述發(fā)送的功耗請(qǐng)求事件后,判斷所述 代理對(duì)象的電源管理狀態(tài)是否需要向功耗更低的方向調(diào)整;
e2、若需要調(diào)整,則啟動(dòng)定時(shí)器;若不需要調(diào)整,則轉(zhuǎn)到所述步驟b;
e3、若有新的功耗請(qǐng)求事件在定時(shí)器計(jì)時(shí)過(guò)程中向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā) 起時(shí),則轉(zhuǎn)到上述步驟c;若沒(méi)有新的功耗請(qǐng)求事件在定時(shí)器計(jì)時(shí)過(guò)程中
7向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)起,則在定時(shí)器到時(shí)時(shí)向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào) 低請(qǐng)求,在功耗調(diào)低請(qǐng)求發(fā)送成功后更改代理對(duì)象自身的電源管理狀態(tài),
隨后轉(zhuǎn)到上述步驟b。
所述驅(qū)動(dòng)對(duì)象為所述移動(dòng)設(shè)備的驅(qū)動(dòng)程序。
所述需要代理的驅(qū)動(dòng)對(duì)象為所述移動(dòng)設(shè)備的涉及功耗的驅(qū)動(dòng)程序。 所述功耗請(qǐng)求事件包括讀或?qū)憯?shù)據(jù)事件、控制請(qǐng)求事件、用戶通知事
件、操作系統(tǒng)的線程調(diào)度事件、用戶的鎖屏或解鎖通知事件中的一種或幾種。
另一方面,本發(fā)明提供一種基于電源動(dòng)態(tài)管理的移動(dòng)設(shè)備,包括基于 所述移動(dòng)設(shè)備控制平臺(tái)的控制單元,所述控制單元甩以控制所述移動(dòng)設(shè)備 的各單元采用代理機(jī)制對(duì)所述移動(dòng)設(shè)備進(jìn)行電源動(dòng)態(tài)管理,所述移動(dòng)設(shè)備
還包括
注冊(cè)單元,用以為所述移動(dòng)設(shè)備需要代理的驅(qū)動(dòng)對(duì)象創(chuàng)建并注冊(cè)對(duì)應(yīng) 的代理對(duì)象;
監(jiān)控單元,用以通過(guò)所述代理對(duì)象監(jiān)控并攔截向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)起 的功耗請(qǐng)求事件;
識(shí)別單元,用以判斷所述代理對(duì)象的電源管理狀態(tài)是否適以響應(yīng)所述 功耗請(qǐng)求事件若判斷結(jié)果為適以響應(yīng),則將所述功耗請(qǐng)求事件發(fā)送至對(duì) 應(yīng)的驅(qū)動(dòng)對(duì)象;若判斷結(jié)果為不適以響應(yīng),則所述控制單元啟動(dòng)所述監(jiān)控 單元繼續(xù)監(jiān)控;
功耗調(diào)低單元,所述控制單元在所述識(shí)別單元將所述功耗請(qǐng)求事件發(fā) 送至對(duì)應(yīng)的驅(qū)動(dòng)對(duì)象并在其完成響應(yīng)后啟動(dòng)所述功耗調(diào)低單元,用以向?qū)?應(yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào)低請(qǐng)求,在功耗調(diào)低請(qǐng)求發(fā)送成功后更改代理對(duì) 象自身的電源管理狀態(tài),隨后啟動(dòng)所述監(jiān)控單元繼續(xù)監(jiān)控;
功耗調(diào)高單元,所述控制單元在所述識(shí)別單元判斷所述代理對(duì)象的電
源管理狀態(tài)不適以響應(yīng)所述功耗請(qǐng)求事件時(shí)啟動(dòng)所述功耗調(diào)高單元,用以 在需要功耗調(diào)高時(shí),向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào)高請(qǐng)求,在功耗調(diào)高請(qǐng) 求發(fā)送成功后更改代理對(duì)象自身的電源管理狀態(tài),隨后啟動(dòng)所述識(shí)別單元 工作;若所述功耗調(diào)高請(qǐng)求發(fā)送失敗,則啟動(dòng)所述監(jiān)控單元工作。
8所述功耗調(diào)高單元進(jìn)一步包括以下工作內(nèi)容
在對(duì)應(yīng)的驅(qū)動(dòng)對(duì)象響應(yīng)完所述發(fā)送的功耗請(qǐng)求事件后,判斷所迷代理 對(duì)象的電源管理狀態(tài)是否需要向功耗更低的方向調(diào)整;
若需要調(diào)整,則啟動(dòng)定時(shí)器;若不需要調(diào)整,則啟動(dòng)所述監(jiān)控單元工
作;
若有新的功耗請(qǐng)求事件在定時(shí)器計(jì)時(shí)過(guò)程中向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)起 時(shí),則啟動(dòng)所述識(shí)別單元工作;若沒(méi)有新的功耗請(qǐng)求事件在定時(shí)器計(jì)時(shí)過(guò) 程中向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)起,則在定時(shí)器到時(shí)時(shí)向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功 耗調(diào)低請(qǐng)求,在功耗調(diào)低請(qǐng)求發(fā)送成功后更改代理對(duì)象自身的電源管理狀 態(tài),隨后啟動(dòng)所述監(jiān)控單元工作。
所述驅(qū)動(dòng)對(duì)象為所述移動(dòng)設(shè)備的驅(qū)動(dòng)程序。
所述需要代理的驅(qū)動(dòng)對(duì)象為所述移動(dòng)設(shè)備的涉及功耗的驅(qū)動(dòng)程序。
所述功耗請(qǐng)求事件包括讀或?qū)憯?shù)據(jù)事件、控制請(qǐng)求事件、用戶通知事 件、搡作系統(tǒng)的線程調(diào)度事件、用戶的鎖屏或解鎖通知事件中的一種或幾 種。
釆用本發(fā)明所述的一種基于電源動(dòng)態(tài)管理的移動(dòng)設(shè)備及電源動(dòng)態(tài)管理 方法,由于其采用了代理機(jī)制,攔截了對(duì)驅(qū)動(dòng)對(duì)象的接口訪問(wèn)并結(jié)合事件 通知,整體上監(jiān)控了驅(qū)動(dòng)對(duì)象的使用情況,并可以自動(dòng)記錄設(shè)備的功耗狀 態(tài),自動(dòng)切換設(shè)備的功耗狀態(tài),使設(shè)備對(duì)使用者來(lái)說(shuō)始終可用,對(duì)系統(tǒng)來(lái) 說(shuō)則隨時(shí)可以自動(dòng)關(guān)閉,使得驅(qū)動(dòng)程序開(kāi)發(fā)人員減少了設(shè)備狀態(tài)維護(hù)的麻 煩,另外僅僅需要響應(yīng)特定的電源管理請(qǐng)求,也使得應(yīng)用程序開(kāi)發(fā)人員減 少了査詢?cè)O(shè)備電源狀態(tài)的麻煩,只需要實(shí)現(xiàn)特定的業(yè)務(wù)邏輯,從而提高了 系統(tǒng)開(kāi)發(fā)效率;同時(shí)由于驅(qū)動(dòng)對(duì)象會(huì)被代理對(duì)象及時(shí)關(guān)閉電源,所以節(jié)省 了不必要的電源,延長(zhǎng)了待機(jī)時(shí)間,在不損失性能的前提下盡可能優(yōu)化系 統(tǒng)的功耗,而且系統(tǒng)工作性能穩(wěn)定可靠,適用范圍較為廣泛,給人們的工 作和生活都帶來(lái)了很大的便利。
圖l是本發(fā)明所述方法的流程9圖2為本發(fā)明 一實(shí)施例的移動(dòng)設(shè)備系統(tǒng)架構(gòu)示意圖3為本發(fā)明一實(shí)施例中代理對(duì)象的第一種狀態(tài)機(jī)示意圖4為本發(fā)明一實(shí)施例中代理對(duì)象的第二種狀態(tài)機(jī)示意圖5為本發(fā)明一實(shí)施例中代理對(duì)象的第三種狀態(tài)機(jī)示意圖6為使用和未使用代理機(jī)制的電源動(dòng)態(tài)管理方案的功耗對(duì)比示意
圖7為使用和未使用代理機(jī)制的電源動(dòng)態(tài)管理方案的CPU性能對(duì)比示意圖。
具體實(shí)施例方式
下面結(jié)合附圖和實(shí)施例進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案。
參照?qǐng)D1,圖1顯示了一種移動(dòng)設(shè)備的電源動(dòng)態(tài)管理方法100,其基于
所述移動(dòng)設(shè)備的控制系統(tǒng),所述管理方法采用代理機(jī)制對(duì)所述移動(dòng)設(shè)備進(jìn)
行電源動(dòng)態(tài)管理,包括以下步驟
101、 創(chuàng)建并注冊(cè)驅(qū)動(dòng)對(duì)象對(duì)應(yīng)的代理對(duì)象。為需要代理的驅(qū)動(dòng)對(duì)象創(chuàng) 建并注冊(cè)對(duì)應(yīng)的代理對(duì)象,以通過(guò)所述代理對(duì)象為對(duì)應(yīng)的驅(qū)動(dòng)對(duì)象進(jìn)行代 理。作為一實(shí)施例,所述驅(qū)動(dòng)對(duì)象為所述移動(dòng)設(shè)備的驅(qū)動(dòng)程序,所述需要 代理的驅(qū)動(dòng)對(duì)象為所述移動(dòng)設(shè)備的涉及功耗的驅(qū)動(dòng)程序。
102、 通過(guò)所述代理對(duì)象監(jiān)控并攔截向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)起的功耗請(qǐng)求 事件。作為一實(shí)施例,所述功耗請(qǐng)求事件包括讀或?qū)憯?shù)據(jù)事件、控制請(qǐng)求 事件、用戶通知事件、搡作系統(tǒng)的線程調(diào)度事件、用戶的鎖屏或解鎖通知 事件中的一種或幾種。
103、 判斷所述代理對(duì)象的電源管理狀態(tài)是否適以響應(yīng)所述功耗請(qǐng)求事 件。若判斷結(jié)果為適以響應(yīng),則將所述功耗請(qǐng)求事件發(fā)送至對(duì)應(yīng)的驅(qū)動(dòng)對(duì) 象并在其完成響應(yīng)后轉(zhuǎn)到下述步驟104;若判斷結(jié)果為不適以響應(yīng),則轉(zhuǎn) 到下述步驟105。
104、 進(jìn)行功耗調(diào)低。需要功耗調(diào)低時(shí),向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào) 低請(qǐng)求,在功耗調(diào)低請(qǐng)求發(fā)送成功后更改代理對(duì)象自身的電源管理狀態(tài), 隨后轉(zhuǎn)到上述步驟102;不需要功耗調(diào)低時(shí),則直接轉(zhuǎn)到上述步驟102。
10105、進(jìn)行功耗調(diào)高。需要功耗調(diào)高時(shí),向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào) 高請(qǐng)求,在功耗調(diào)高請(qǐng)求發(fā)送成功后更改代理對(duì)象自身的電源管理狀態(tài),
隨后轉(zhuǎn)到上述步驟103;若所述功耗調(diào)高請(qǐng)求發(fā)送失敗,則轉(zhuǎn)到上述步驟 102。
本發(fā)明所述方法應(yīng)用之移動(dòng)設(shè)備包括存儲(chǔ)裝置和中央處理器(Central Processing Unit, CPU),所述存儲(chǔ)裝置和中央處理器雖未于圖中示出, 但本領(lǐng)域技術(shù)人員毫無(wú)疑義的知曉所述移動(dòng)設(shè)備包括所述存儲(chǔ)裝置和中央 處理器,應(yīng)當(dāng)亳無(wú)疑義的知曉所述存儲(chǔ)設(shè)備可用于存儲(chǔ)任意適合的可被導(dǎo) 入或?qū)С龅臄?shù)據(jù)(包括任意適合的程序代碼段),且應(yīng)當(dāng)知曉所述中夾處 理器用于數(shù)據(jù)的運(yùn)算和處理(例如運(yùn)行搡作系統(tǒng),執(zhí)行任意適合的程序 等)。在本實(shí)施例中,所述存儲(chǔ)裝置用于存儲(chǔ)一搡作系統(tǒng)及電源動(dòng)態(tài)管理 程序,所述中央處理器用于在運(yùn)行該搡作系統(tǒng)后,讀取并執(zhí)行該電源動(dòng)態(tài) 管理程序。
參見(jiàn)圖2,對(duì)于本發(fā)明的基于代理機(jī)制的動(dòng)態(tài)電源管理技術(shù),主要由 DPM程序,驅(qū)動(dòng)對(duì)象,驅(qū)動(dòng)對(duì)象的代理對(duì)象及應(yīng)用程序(實(shí)際指驅(qū)動(dòng)對(duì)象 使用者,也包括其他系統(tǒng)服務(wù),下文提及應(yīng)用程序,均符合此涵義)以及 搡作系統(tǒng)內(nèi)核共同來(lái)實(shí)現(xiàn)。驅(qū)動(dòng)對(duì)象實(shí)現(xiàn)特定的io請(qǐng)求和電源管理請(qǐng)求 (Power—Request),代理對(duì)象攔截應(yīng)用程序?qū)︱?qū)動(dòng)對(duì)象的調(diào)用,按照特定 策略處理后向驅(qū)動(dòng)對(duì)象轉(zhuǎn)交方法調(diào)用,在調(diào)用結(jié)東后,也按照特定策略處 理調(diào)用結(jié)果,在此過(guò)程中實(shí)現(xiàn)對(duì)設(shè)備使用的監(jiān)控,自動(dòng)完成電源管理狀態(tài) 的維護(hù)和切換。
所述移動(dòng)設(shè)備中包括動(dòng)態(tài)電源管理功能模塊和設(shè)備驅(qū)動(dòng)功能模塊(動(dòng) 態(tài)電源管理功能模塊作為本發(fā)明所述移動(dòng)設(shè)備的控制單元),其中,所述 的方法包括以下步驟
(1) 移動(dòng)設(shè)備系統(tǒng)進(jìn)行初始化操作;
(2) 所述的動(dòng)態(tài)電源管理功能模塊根據(jù)設(shè)備驅(qū)動(dòng)功能模塊進(jìn)行代理對(duì) 象創(chuàng)建和初始化搡作,包括以下步驟
(a)所述的動(dòng)態(tài)電源管理功能模塊截獲所述的設(shè)備驅(qū)動(dòng)功能模塊 的接口注冊(cè)請(qǐng)求;(b) 所述的動(dòng)態(tài)電源管理功能模塊判斷所述的設(shè)備驅(qū)動(dòng)功能模塊 是否需要代理,包括以下步驟
(i) 對(duì)所述的設(shè)備驅(qū)動(dòng)功能模塊的類型進(jìn)行判斷;
(ii) 如果該設(shè)備驅(qū)動(dòng)功能模塊為外部物理設(shè)備的驅(qū)動(dòng)功能
模塊,則返回需要代理的判斷結(jié)果;
(iii) 如果該設(shè)備驅(qū)動(dòng)功能模塊為與功耗無(wú)關(guān)的驅(qū)動(dòng)程序或 者偽驅(qū)動(dòng)程序,則返回不需要代理的判斷結(jié)果;
(c) 如果需要代理,則所述的動(dòng)態(tài)電源管理功能模塊創(chuàng)建對(duì)應(yīng)的 代理對(duì)象,包括以下步驟
(i) 所述的動(dòng)態(tài)電源管理功能模塊根據(jù)所述的設(shè)備驅(qū)動(dòng)功能 模塊的接口和該設(shè)備驅(qū)動(dòng)模塊的名稱創(chuàng)建相應(yīng)的代理對(duì)象;
(ii) 所述的動(dòng)態(tài)電源管理功能模塊使用該設(shè)備驅(qū)動(dòng)功能模 塊的名稱來(lái)注冊(cè)該對(duì)應(yīng)的代理對(duì)象;
(d)所述的動(dòng)態(tài)電源管理功能模塊對(duì)所述的代理對(duì)象進(jìn)行初始 化操作,包括以下步驟
(i )所述的動(dòng)態(tài)電源管理功能模塊初始化該代理對(duì)象的初始
電源管理狀態(tài);
(ii)所述的動(dòng)態(tài)電源管理功能模塊初始化該代理對(duì)象的定
時(shí)器定時(shí)間隔;
(3) 所述的動(dòng)態(tài)電源管理功能模塊將功耗請(qǐng)求事件送至所創(chuàng)建的相應(yīng) 代理對(duì)象,其中該功耗請(qǐng)求事件可以為讀或?qū)憯?shù)據(jù)事件、控制請(qǐng)求事件、 用戶通知事件、操作系統(tǒng)的線程調(diào)度事件或者用戶的鎖屏或解鎖通知事件;
(4) 所述的代理對(duì)象根據(jù)該功耗請(qǐng)求事件進(jìn)行電源管理狀態(tài)調(diào)整操 作,并向設(shè)備驅(qū)動(dòng)功能模塊發(fā)送功耗調(diào)整請(qǐng)求,包括以下步驟
(a) 所述的代理對(duì)象接收所述的功耗請(qǐng)求事件;
(b) 代理對(duì)象判斷當(dāng)前的電源管理狀態(tài)是否適合響應(yīng)此功耗請(qǐng)求
事件;
(c) 如果適合,則轉(zhuǎn)發(fā)該功耗請(qǐng)求事件,并進(jìn)行功耗調(diào)低處理操 作,包括以下步驟
12(U代理對(duì)象判斷當(dāng)前的電源管理狀態(tài)是否需要向功耗更低
的方向調(diào)整;
(ii) 如果需要,則啟動(dòng)定時(shí)器,反之,則返回前述步驟(a); (iii )如果有新的功耗請(qǐng)求事件到達(dá),則返回上前步驟(b);
(iv) 如果定時(shí)器達(dá)到系統(tǒng)預(yù)設(shè)的超時(shí)時(shí)間,則該代理對(duì)象 向設(shè)備驅(qū)動(dòng)功能模塊發(fā)送功耗調(diào)低請(qǐng)求;
(v) 如果發(fā)送成功,則該代理對(duì)象更改當(dāng)前自身的電源管理 狀態(tài),并返回上述步驟(a);
(vi) 如果發(fā)送失敗,則返回上述步驟(a);
(d)如果不合適,則進(jìn)行功耗調(diào)高處理操作,包括以下步驟 (i)該代理對(duì)象向設(shè)備驅(qū)動(dòng)功能模塊發(fā)送功耗調(diào)高請(qǐng)求; (n)如果發(fā)送成功,則該代理對(duì)象更改當(dāng)前自身的電源管 理狀態(tài),并返回上述步驟(a);
(iii) 如果發(fā)送失敗,則返回上述步驟(a); (5)所述的設(shè)備驅(qū)動(dòng)功能模塊根據(jù)所述的功耗調(diào)整請(qǐng)求對(duì)設(shè)備的電源
管理狀態(tài)進(jìn)行物理轉(zhuǎn)換。
其中,本發(fā)明主要是關(guān)于移動(dòng)設(shè)備上的電源管理技術(shù),特別是關(guān)于嵌 入式搡作系統(tǒng)上對(duì)移動(dòng)設(shè)備上CPU,及各個(gè)典型外設(shè)如LCD、 Audio Codec
等的動(dòng)態(tài)電源管理技術(shù)。本發(fā)明的方法的核心是代理機(jī)制,在代理的基礎(chǔ) 上,可以自動(dòng)維護(hù)設(shè)備電源狀態(tài),可以自動(dòng)切換電源狀態(tài),實(shí)現(xiàn)外設(shè)電源 管理狀態(tài)的自適應(yīng)管理。
上述的驅(qū)動(dòng)對(duì)象應(yīng)該至少具有以下功能特點(diǎn)
(1) 實(shí)現(xiàn)系統(tǒng)驅(qū)動(dòng)接口方法,可以響應(yīng)正常的10請(qǐng)求,典型的比如 讀數(shù)據(jù),寫(xiě)數(shù)據(jù),控制請(qǐng)求,即10方法(Read/Write/10 Control)。
(2) 在實(shí)現(xiàn)驅(qū)動(dòng)的接口方法同時(shí),額外響應(yīng)電源管理請(qǐng)求,以物理的
轉(zhuǎn)換設(shè)備電源管理狀態(tài),典型的比如掛起設(shè)備,恢復(fù)設(shè)備請(qǐng)求,即 Power — Request(Powcr-Suspend、 Power— Resume)等。
u)驅(qū)動(dòng)對(duì)象需使用某種系統(tǒng)提供的方法發(fā)布自己的接口,以使得應(yīng) 用程序或其他系統(tǒng)服務(wù)找到驅(qū)動(dòng)對(duì)象。
13上述代理對(duì)象應(yīng)該至少具有以下功能特點(diǎn)
(1) 實(shí)現(xiàn)與驅(qū)動(dòng)對(duì)象相同的系統(tǒng)驅(qū)動(dòng)接口方法(但不能響應(yīng)
Power_Request),可以響應(yīng)正常的IO請(qǐng)求,但不是真正操作物理設(shè)備以 響應(yīng)此請(qǐng)求,而可以使用轉(zhuǎn)交或者別的方法響應(yīng)此請(qǐng)求。
(2) —個(gè)定時(shí)器句柄,以在代理對(duì)象訪問(wèn)結(jié)束后激發(fā)定時(shí)策略。
(3) 設(shè)備電源管理狀態(tài),以記錄,轉(zhuǎn)換,維護(hù)狀態(tài)機(jī)。
(4) 接收通知的方法,以便于處理非接口方法調(diào)用但使用外設(shè)的情況。
(5) 驅(qū)動(dòng)對(duì)象的指針或者句柄,便于轉(zhuǎn)發(fā)調(diào)用請(qǐng)求。 上述的DPM程序應(yīng)該至少具有以下功能特點(diǎn)
(1)維護(hù)代理對(duì)象列表,使得代理對(duì)象可以被管理和控制。 (2 )實(shí)現(xiàn)系統(tǒng)驅(qū)動(dòng)接口方法,使得系統(tǒng)其他服務(wù)或者應(yīng)用程序可以管 理,訪問(wèn)電源管理程序。
注意,實(shí)現(xiàn)驅(qū)動(dòng)接口方法是非限定性的,目的只是提供其他服務(wù)或者 應(yīng)用程序訪問(wèn)的方法。
上述應(yīng)用程序應(yīng)該至少具有以下功能特點(diǎn)
(1) 發(fā)現(xiàn)特定驅(qū)動(dòng)對(duì)象接口服務(wù)的能力。典型的如根據(jù)約定服務(wù)名, 使用系統(tǒng)提供的服務(wù)接口查找例程發(fā)現(xiàn)其感興趣的接口服務(wù)。
(2) 使用特定驅(qū)動(dòng)對(duì)象接口服務(wù)的能力。典型的如設(shè)定緩沖區(qū)大小,
設(shè)定控制器參數(shù),設(shè)定io請(qǐng)求包相關(guān)數(shù)據(jù)項(xiàng)等。
上述的內(nèi)核應(yīng)該至少具有以下功能特點(diǎn)
(1) 提供注冊(cè)服務(wù)接口的方法。
(2) 提供掛接到注冊(cè)服務(wù)接口方法的回調(diào)機(jī)制。
(3) 提供查找服務(wù)接口的方法。
在實(shí)際使用當(dāng)中,基于代理機(jī)制的動(dòng)態(tài)電源管理方法的實(shí)現(xiàn)步驟如下: l、 驅(qū)動(dòng)對(duì)象
步驟l 一一實(shí)現(xiàn)系統(tǒng)為驅(qū)動(dòng)程序規(guī)定的接口方法。 步驟2 — —在某個(gè)接口方法(比如Control方法)中實(shí)現(xiàn) Power—Request請(qǐng)求。
步驟3 —一使用搡作系統(tǒng)提供的發(fā)布構(gòu)件對(duì)象的方法發(fā)布自己。
142、代理對(duì)象(參照?qǐng)D3):
步驟l 一一等待其他系統(tǒng)服務(wù)或者應(yīng)用程序(以下統(tǒng)稱客戶端)對(duì) 驅(qū)動(dòng)接口的請(qǐng)求。
步驟2 —一判斷代理對(duì)象的電源管理狀態(tài)是否合適響應(yīng)此IO請(qǐng)求。 步驟3 —一狀態(tài)合適響應(yīng)此請(qǐng)求,轉(zhuǎn)發(fā)I0請(qǐng)求。不合適轉(zhuǎn)后續(xù)步驟9。
步驟4 一一判斷代理對(duì)象的電源管理狀態(tài)是否需要向功耗更低方向 調(diào)整。
步驟5 _—需要調(diào)整,則啟動(dòng)定時(shí)策略。不需要調(diào)整,返回上述步驟1。
步驟6 —一新的請(qǐng)求到達(dá),返回上述步驟2。
步驟7——定時(shí)到達(dá),給驅(qū)動(dòng)對(duì)象發(fā)送Power —Request,請(qǐng)求調(diào)低功 耗。如果成功,更改自身電源管理狀態(tài)。
步驟8 —一停止定時(shí)策略。返回上述步驟l。
步驟9一一給驅(qū)動(dòng)對(duì)象發(fā)送Power-Request,請(qǐng)求調(diào)高功耗。如果成 功,更改自身電源管理狀態(tài),轉(zhuǎn)步驟2。如果失敗,返回上步驟l。
上述所給出的步驟僅僅是一個(gè)典型設(shè)備的實(shí)施步驟,根據(jù)實(shí)際情況, 允許適當(dāng)?shù)淖兓?。舉例而言,移動(dòng)設(shè)備上LCD的使用往往既和其接口調(diào)用
方法有關(guān),也和用戶輸入事件相關(guān),可以參考上述步驟給出其代理對(duì)象的
實(shí)現(xiàn)步驟如下(參照?qǐng)D4):
步驟l _一等待其他系統(tǒng)服務(wù)或者應(yīng)用程序(以下統(tǒng)稱客戶端)對(duì)
驅(qū)動(dòng)接口的請(qǐng)求和用戶事件通知(如按鍵事件或觸屏事件)。
步驟2 -—判斷代理對(duì)象的電源管理狀態(tài)是否合適響應(yīng)此IO請(qǐng)求。 步驟3 —一狀態(tài)合適響應(yīng)此請(qǐng)求,轉(zhuǎn)發(fā)I0請(qǐng)求。不合適轉(zhuǎn)步驟9。 步驟4 一一判斷代理對(duì)象的電源管理狀態(tài)是否需要向功耗更低方向調(diào)整。
步驟5 —一需要調(diào)整,則啟動(dòng)定時(shí)策略。不需要調(diào)整,轉(zhuǎn)步驟l。
步驟6 —一新的請(qǐng)求或者用戶事件通知到達(dá),回步驟2。
步驟7——定時(shí)到達(dá),給驅(qū)動(dòng)對(duì)象發(fā)送Power-Request,請(qǐng)求調(diào)低功耗。如果成功,更改自身電源管理狀態(tài)。
步驟8 —一停止定時(shí)策略。轉(zhuǎn)步驟l。
步驟9——給驅(qū)動(dòng)對(duì)象發(fā)送Power —Request,請(qǐng)求調(diào)高功耗。如果成功,更改自身電源管理狀態(tài),轉(zhuǎn)步驟2。如果失敗,轉(zhuǎn)步驟l。
而對(duì)于CPU也可視為一個(gè)特珠的設(shè)備,雖然其無(wú)10方法的調(diào)用,但一樣存在多個(gè)功耗狀態(tài)的轉(zhuǎn)換,可以使用代理對(duì)象封裝。不同的是其關(guān)注的事件或者請(qǐng)求不一樣而已,CPU的代理對(duì)象典型的關(guān)注搡作系統(tǒng)的Idle線程被調(diào)度事件,用戶的鎖屏和解鎖通知等,CPU的驅(qū)動(dòng)對(duì)象往往和具體CPU的電源管理架構(gòu)和狀態(tài)有關(guān),根據(jù)其能力不同有不同的實(shí)現(xiàn),具體請(qǐng)參閱圖5所示。
同時(shí),上述所給的步驟僅僅涉及驅(qū)動(dòng)對(duì)象的代理和必要的自動(dòng)管理機(jī)制的使用(如定時(shí)機(jī)制和事件機(jī)制),并不限制其所涉代理對(duì)象具體電源管理狀態(tài)的多寡和其具體實(shí)現(xiàn)以及與其他DPM策略的整合。比如某些CPU芯片的低功耗狀態(tài)可能比較多,而某些CPU芯片則可以根據(jù)其使用狀況(如利用率、IO吞吐量、Cache缺失率等)動(dòng)態(tài)調(diào)頻調(diào)壓,均可以被整合進(jìn)基
于代理機(jī)制的動(dòng)態(tài)電源管理技術(shù)。
而且,在所述圖3至圖5中的各個(gè)狀態(tài)機(jī)僅供示意使用,與實(shí)際實(shí)現(xiàn)中不保證一致,實(shí)際上,在實(shí)際實(shí)現(xiàn)中,僅僅一個(gè)Suspend狀態(tài)往往是不
夠的,某些設(shè)備可能有多個(gè)低功耗狀態(tài)。3、 DPM程序
步驟l 一一截獲驅(qū)動(dòng)對(duì)象注冊(cè)(發(fā)布)接口請(qǐng)求。步驟2 —一判斷對(duì)象是否需要代理。
步驟3 —一需要代理,則根據(jù)驅(qū)動(dòng)對(duì)象接口和驅(qū)動(dòng)對(duì)象名創(chuàng)建代理對(duì)象并使用驅(qū)動(dòng)對(duì)象名注冊(cè)代理對(duì)象,實(shí)現(xiàn)代理。不需要?jiǎng)t轉(zhuǎn)步驟l。步驟4 一一初始化代理對(duì)象,包括初始電源管理狀態(tài),定時(shí)器定時(shí)
間隔等。
步驟5 —一接受用戶請(qǐng)求,事件通知,根據(jù)所掌握的代理對(duì)象處理或者轉(zhuǎn)發(fā)。
下面對(duì)驅(qū)動(dòng)對(duì)象、代理對(duì)象、DPM程序及應(yīng)用程序進(jìn)行進(jìn)一步的說(shuō)明。
16驅(qū)動(dòng)對(duì)象
步驟l:驅(qū)動(dòng)程序需實(shí)現(xiàn)特定OS上的系統(tǒng)驅(qū)動(dòng)接口,以響應(yīng)I0請(qǐng)求。以audio驅(qū)動(dòng)為例,Read方法返回錄音數(shù)據(jù),Write方法寫(xiě)入待播放
的音頻數(shù)據(jù),Control方法設(shè)置采用率,聲道數(shù)等參數(shù)。Audio驅(qū)動(dòng)實(shí)現(xiàn)上
述3個(gè)方法響應(yīng)應(yīng)用程序或其他系統(tǒng)服務(wù)的10調(diào)用。
步驟2:在10 Control方法中,實(shí)現(xiàn)幾個(gè)約定的控制字響應(yīng)
Power_Request請(qǐng)求。
步驟2. 1步驟2. 2步驟2. 3步驟2. 4
控制字為1000,則使外設(shè)芯片進(jìn)入Suspend狀態(tài)??刂谱譃?001,則使外設(shè)芯片從Suspend狀態(tài)恢復(fù)正常??刂谱譃?002,則使外設(shè)芯片進(jìn)入PowerOff狀態(tài)??刂谱譃?003,則是外設(shè)芯片從PowerOff狀態(tài)回復(fù)正常。步驟3:調(diào)用系統(tǒng)方法發(fā)布驅(qū)動(dòng)接口,不同的系統(tǒng)有不同的實(shí)現(xiàn),對(duì)某些系統(tǒng)而言,就是簡(jiǎn)單的名字約定。代理對(duì)象
一個(gè)代理對(duì)象具有如下的結(jié)構(gòu)
CVirtualDevice (訓(xùn)T DeviceID, IObject * pObject);void InitDevPowerMode肌ONG mode);//rename this api later,void KeepSpecif iedMode肌ONG mode, B00L KeepOn); / /disable timerpolicy
void SetChangeModelnterval肌ONG interval) 5
ECODE ChangeMode(DeviceMode mode);
EC0DE ChangeMode ();
ECODE SetMode肌ONG mode);
ECODE SetPowerMode肌ONG mode);
void UpdatelnputLastUse ();//event handler
void RestartTimcr ();
void RestartTimer (int Interval);
U,G GetLef tlnterval ();
ECODE ChangeModcByStep()5
17void SetChangeModeCalIBack (TimerCal1BackProc proc);
unsigned long
int
BOOL
BOOL
BOOL
BOOLstop timer.
TimerCal1BackProc
unsigned longbetween mode change
PowerState;//tag
hTimer;//timer handleKeepOrr'//disable timer policycIgnoreControl;//ignore Control callIgnoreRead;//ignore Read callIgnoreTimer;// suspend device will not
ChangeModeCa1IBack;ModeChangelnterva1;//interval
RealDevice *piRealdev; //Physical Object
int DeviceIDj
unsigned long SpecifiedMode;// default power mode of ProxyObject
PowerState有如下幾個(gè)狀態(tài)
DevicePowerOff、 DeviceSuspend、 DeviceVeryLowPower、DeviceLowPower、 DevicePowerOn。
步驟l:等待客戶端對(duì)驅(qū)動(dòng)接口的請(qǐng)求。
步驟2:根據(jù)PowerState判斷代理對(duì)象的電源管理狀態(tài)是否合適響應(yīng)此IO請(qǐng)求, 一般而言,如果PowerState是PowerOn狀態(tài),則認(rèn)為可以響應(yīng),否則不可以。但驅(qū)動(dòng)程序可以通過(guò)IgnoreControl等標(biāo)志設(shè)定哪些調(diào)用可以忽略。
步驟3:可以響應(yīng),轉(zhuǎn)發(fā)I0請(qǐng)求。否則轉(zhuǎn)步驟9。
步驟4: IO請(qǐng)求完成,判斷代理對(duì)象的電源管理狀態(tài)是否需要向功耗更低方向調(diào)整。 一般而言,如果PowerState不是Power0ff狀態(tài),則認(rèn)為需要向下調(diào)整。步驟5:需要調(diào)整,則調(diào)用RestartTimer()函數(shù)啟動(dòng)定時(shí)策略。不需要調(diào)整,回步驟l。
步驟6:新的請(qǐng)求到達(dá),回步驟2。
步驟7:定時(shí)到達(dá),調(diào)用SetMode函數(shù)給驅(qū)動(dòng)對(duì)象發(fā)送Power—Request(1000號(hào)或者1002號(hào)控制字),請(qǐng)求調(diào)低功耗。如果成功,更改自身電源管理狀態(tài)。
步驟8:停止定時(shí)策略?;夭襟El。
步驟9:調(diào)用SetMode函數(shù)給驅(qū)動(dòng)對(duì)象發(fā)送Power—Request ( 1001號(hào)或者1003號(hào)控制字,視當(dāng)前PowerSUte而定),請(qǐng)求調(diào)高功粍。如果成功,更改自身電源管理狀態(tài),轉(zhuǎn)步驟2。如果失敗,回步驟l。
DPM程序
步驟l:驅(qū)動(dòng)對(duì)象發(fā)布接口時(shí),截獲其調(diào)用,方法是注冊(cè)回調(diào)函數(shù)。此函數(shù)被調(diào)用時(shí)回調(diào)函數(shù)也被回調(diào)。
步驟2:判斷對(duì)象是否需要代理 一般而言,只有物理的,具體的外設(shè)驅(qū)動(dòng)需要被代理,而與功耗無(wú)涉的驅(qū)動(dòng)程序,偽驅(qū)動(dòng)程序(即實(shí)現(xiàn)系統(tǒng)驅(qū)動(dòng)接口,以提供某些特殊服務(wù))則不需要。
步驟3:代理驅(qū)動(dòng)對(duì)象,方法因系統(tǒng)而異,對(duì)于支持對(duì)象機(jī)制的系統(tǒng),可以返回同名對(duì)象,對(duì)應(yīng)用程序透明。對(duì)于不支持對(duì)象機(jī)制的系統(tǒng),則根據(jù)特定服務(wù)名約定。
步驟4:初始化代理對(duì)象,包括初始電源管理狀態(tài),定時(shí)器定時(shí)間隔等,直接使用代理對(duì)象指針即可完成。
步驟5:接受用戶請(qǐng)求,事件通知,根據(jù)所掌握的代理對(duì)象處理或者轉(zhuǎn)發(fā),比如鎖屏事件,按鍵事件,觸屏事件需要相應(yīng)調(diào)用CPU和LCD的代理對(duì)象處理。
應(yīng)用程序
步驟h查找系統(tǒng)服務(wù),方法因系統(tǒng)而異,對(duì)于支持對(duì)象機(jī)制的系統(tǒng),可以根據(jù)特定名字查找服務(wù)。對(duì)于不支持對(duì)象機(jī)制的系統(tǒng),則直接調(diào)用特定的服務(wù)(即代理對(duì)象和物理對(duì)象使用不同的函數(shù)方法名)。
此步驟與DPM程序的步驟3即實(shí)現(xiàn)了驅(qū)動(dòng)對(duì)象的代理。此時(shí)應(yīng)用程序
19使用的接口實(shí)質(zhì)上驅(qū)動(dòng)對(duì)象的代理對(duì)象。
步驟2:使用系統(tǒng)服務(wù)。此步驟和未使用基于代理的電源管理技術(shù)時(shí)
沒(méi)有任何差別,此處不再詳述。
由于本發(fā)明的方法中使用了代理機(jī)制,攔截對(duì)驅(qū)動(dòng)對(duì)象的接口訪問(wèn)并結(jié)合事件通知,整體上監(jiān)控了驅(qū)動(dòng)對(duì)象的使用情況,可以自動(dòng)記錄設(shè)備的
功耗狀態(tài),自動(dòng)切換設(shè)備的功耗狀態(tài),使設(shè)備對(duì)使用者而言始終可用,對(duì)系統(tǒng)而言隨時(shí)自動(dòng)關(guān)閉,對(duì)驅(qū)動(dòng)開(kāi)發(fā)人員而言減少設(shè)備狀態(tài)維護(hù)的麻煩而僅僅需要響應(yīng)特定的電源管理請(qǐng)求,對(duì)應(yīng)用開(kāi)發(fā)人員而言減少查詢?cè)O(shè)備電源狀態(tài)的麻煩而僅僅需要實(shí)現(xiàn)特定的業(yè)務(wù)邏輯。
總之,對(duì)最終用戶而言,由于驅(qū)動(dòng)對(duì)象會(huì)被代理對(duì)象及時(shí)關(guān)閉電源,所以節(jié)省了不必要的電源,延長(zhǎng)了待機(jī)時(shí)間,對(duì)應(yīng)用和驅(qū)動(dòng)開(kāi)發(fā)人員而言,由于只關(guān)心設(shè)備本身業(yè)務(wù)邏輯而非系統(tǒng)電源管理狀態(tài),提高了開(kāi)發(fā)效率。
對(duì)于后一點(diǎn),作為本發(fā)明的主要貢獻(xiàn),不難理解,因代理對(duì)象的使用對(duì)其使用者是透明的,電源管理的引入對(duì)應(yīng)用開(kāi)發(fā)者無(wú)任何額外要求,對(duì)驅(qū)動(dòng)開(kāi)發(fā)者僅僅多了幾個(gè)必要的請(qǐng)求。對(duì)于前一點(diǎn),提升功耗表現(xiàn)和不損性能則并非顯而易見(jiàn),以下以圖表說(shuō)明。
參閱圖6所示,其描述了在移動(dòng)設(shè)備的典型應(yīng)用場(chǎng)景下,本發(fā)明的方
案的一種實(shí)現(xiàn)和未使用本方案的功耗對(duì)比(空白柱為使用本發(fā)明方案的功
耗,條紋柱為未使用本發(fā)明方案的功耗),測(cè)試儀器使用Agilent高精度電源。得出的結(jié)論是本方案在所有場(chǎng)合下都略有勝出,說(shuō)明,由于驅(qū)動(dòng)對(duì)象會(huì)被代理對(duì)象及時(shí)關(guān)閉電源,本方案在功耗提升方面是有效的。
參閱圖7所示,其中描述了使用代理機(jī)制和不使用代理機(jī)制下某些典型應(yīng)用所耗用的CPU時(shí)間(空白柱為使用本發(fā)明方案的耗用時(shí)間,條紋柱為未使用本發(fā)明方案的耗用時(shí)間),也即性能表現(xiàn)。我們使用CPU使用率衡量性能,即使用同一應(yīng)用同一場(chǎng)景在不同情況下對(duì)CPU的耗用情況來(lái)判斷性能損耗情況。可以看出,在引入代理機(jī)制后,CPU的使用率略有下降,但下降幅度非常小,可以接受。
另一方面,本發(fā)明還提供的一種基于電源動(dòng)態(tài)管理的移動(dòng)設(shè)備,包括基于所述移動(dòng)設(shè)備控制平臺(tái)的控制單元,所述控制單元用以控制所述移動(dòng)
20設(shè)備的各單元釆用代理機(jī)制對(duì)所述移動(dòng)設(shè)備進(jìn)行電源動(dòng)態(tài)管理,所述移動(dòng)設(shè)備還包括
注冊(cè)單元,用以為所述移動(dòng)設(shè)備需要代理的驅(qū)動(dòng)對(duì)象創(chuàng)建并注冊(cè)對(duì)應(yīng)的代理對(duì)象;作為一實(shí)施例,所述驅(qū)動(dòng)對(duì)象為所述移動(dòng)設(shè)備的驅(qū)動(dòng)程序,所述需要代理的驅(qū)動(dòng)對(duì)象為所述移動(dòng)設(shè)備的涉及功耗的驅(qū)動(dòng)程序。
監(jiān)控單元,用以通過(guò)所述代理對(duì)象監(jiān)控并攔截向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)起
的功耗請(qǐng)求事件;作為一實(shí)施例,所述功耗請(qǐng)求事件包括讀或?qū)憯?shù)據(jù)事件、
控制請(qǐng)求事件、用戶通知事件、操作系統(tǒng)的線程調(diào)度事件、用戶的鎖屏或解鎖通知事#'中的一種或幾種。
識(shí)別單元,用以判斷所述代理對(duì)象的電源管理狀態(tài)是否適以響應(yīng)所述
功耗請(qǐng)求事件若判斷結(jié)果為適以響應(yīng),則將所述功耗請(qǐng)求事件發(fā)送至對(duì)應(yīng)的驅(qū)動(dòng)'對(duì)象;若判斷結(jié)果為不適以響應(yīng),則所述控制單元啟動(dòng)所述監(jiān)控單元繼續(xù)監(jiān)控;
功耗調(diào)低單元,所述控制單元在所述識(shí)別單元將所述功耗請(qǐng)求事件發(fā)送至對(duì)應(yīng)的驅(qū)動(dòng)對(duì)象并在其完成響應(yīng)后啟動(dòng)所述功耗調(diào)低單元,用以向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào)低請(qǐng)求,在功耗調(diào)低請(qǐng)求發(fā)送成功后更改代理對(duì)象自身的電源管理狀態(tài),隨后啟動(dòng)所述監(jiān)控單元繼續(xù)監(jiān)控;
功耗調(diào)高單元,所述控制單元在所述識(shí)別單元判斷所述代理對(duì)象的電源管理狀態(tài)不適以響應(yīng)所述功耗請(qǐng)求事件時(shí)啟動(dòng)所述功耗調(diào)高單元,用以在需要功耗調(diào)高時(shí),向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào)高請(qǐng)求,在功耗調(diào)高請(qǐng)求發(fā)送成功后更改代理對(duì)象自身的電源管理狀態(tài),隨后啟動(dòng)所述識(shí)別單元工作;若所述功耗調(diào)高請(qǐng)求發(fā)送失敗,則啟動(dòng)所述監(jiān)控單元工作。
需要指出的是,本發(fā)明所述的一種基于電源動(dòng)態(tài)管理的移動(dòng)設(shè)備與本發(fā)明所述的一種移動(dòng)設(shè)備的電源動(dòng)態(tài)管理方法100在原理和實(shí)施例上是相
同或類似的,故重復(fù)部分不再贅述。
本技術(shù)領(lǐng)域中的普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,以上的實(shí)施例僅是用來(lái)說(shuō)明本發(fā)明,而并非用作為對(duì)本發(fā)明的限定,只要在本發(fā)明的實(shí)質(zhì)精神范圍內(nèi),對(duì)以上實(shí)施例的變化、變型都將落在本發(fā)明的權(quán)利要求書(shū)范圍內(nèi)。
2權(quán)利要求
1、一種移動(dòng)設(shè)備的電源動(dòng)態(tài)管理方法,其基于所述移動(dòng)設(shè)備的控制系統(tǒng),其特征在于,所述管理方法采用代理機(jī)制對(duì)所述移動(dòng)設(shè)備進(jìn)行電源動(dòng)態(tài)管理,包括以下步驟a、為需要代理的驅(qū)動(dòng)對(duì)象創(chuàng)建并注冊(cè)對(duì)應(yīng)的代理對(duì)象,以通過(guò)所述代理對(duì)象為對(duì)應(yīng)的驅(qū)動(dòng)對(duì)象進(jìn)行代理;b、通過(guò)所述代理對(duì)象監(jiān)控并攔截向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)起的功耗請(qǐng)求事件;c、判斷所述代理對(duì)象的電源管理狀態(tài)是否適以響應(yīng)所述功耗請(qǐng)求事件若判斷結(jié)果為適以響應(yīng),則將所述功耗請(qǐng)求事件發(fā)送至對(duì)應(yīng)的驅(qū)動(dòng)對(duì)象并在其完成響應(yīng)后轉(zhuǎn)到下述步驟d;若判斷結(jié)果為不適以響應(yīng),則轉(zhuǎn)到下述步驟e;d、需要功耗調(diào)低時(shí),向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào)低請(qǐng)求,在功耗調(diào)低請(qǐng)求發(fā)送成功后更改代理對(duì)象自身的電源管理狀態(tài),隨后轉(zhuǎn)到上述步驟b;不需要功耗調(diào)低時(shí),則直接轉(zhuǎn)到上述步驟b;e、需要功耗調(diào)高時(shí),向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào)高請(qǐng)求,在功耗調(diào)高請(qǐng)求發(fā)送成功后更改代理對(duì)象自身的電源管理狀態(tài),隨后轉(zhuǎn)到上述步驟c;若所述功耗調(diào)高請(qǐng)求發(fā)送失敗,則轉(zhuǎn)到上述步驟b。
2、 如權(quán)利要求l所述的電源動(dòng)態(tài)管理方法,其特征在于,所述步驟e 進(jìn)一步包括el、在對(duì)應(yīng)的驅(qū)動(dòng)對(duì)象響應(yīng)完所述發(fā)送的功耗請(qǐng)求事件后,判斷所述 代理對(duì)象的電源管理狀態(tài)是否需要向功耗更低的方向調(diào)整;e2、若需要調(diào)整,則啟動(dòng)定時(shí)器;若不需要調(diào)整,則轉(zhuǎn)到所述步驟b;e3、若有新的功耗請(qǐng)求事件在定時(shí)器計(jì)時(shí)過(guò)程中向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā) 起時(shí),則轉(zhuǎn)到上述步驟c;若沒(méi)有新的功耗請(qǐng)求事件在定時(shí)器計(jì)時(shí)過(guò)程中 向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)起,則在定時(shí)器到時(shí)時(shí)向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào) 低請(qǐng)求,在功耗調(diào)低請(qǐng)求發(fā)送成功后更改代理對(duì)象自身的電源管理狀態(tài), 隨后轉(zhuǎn)到上述步驟b。
3、 如權(quán)利要求2所述的電源動(dòng)態(tài)管理方法,其特征在于,所述驅(qū)動(dòng)對(duì) 象為所述移動(dòng)設(shè)備的驅(qū)動(dòng)程序。
4、 如權(quán)利要求3所述的電源動(dòng)態(tài)管理方法,其特征在于,所述需要代理的驅(qū)動(dòng)對(duì)象為所述移動(dòng)設(shè)備的涉及功耗的驅(qū)動(dòng)程序。
5、 如權(quán)利要求1至4中任一項(xiàng)所述的電源動(dòng)態(tài)管理方法,其特征在于, 所述功耗請(qǐng)求事件包括讀或?qū)憯?shù)據(jù)事件、控制請(qǐng)求事件、用戶通知事件、 操作系統(tǒng)的線程調(diào)度事件、用戶的鎖屏或解鎖通知事件中的一種或幾種。
6、 一種基于電源動(dòng)態(tài)管理的移動(dòng)設(shè)備,包括基于所述移動(dòng)設(shè)備控制平 臺(tái)的控制單元,其特征在于,所述控制單元用以控制所述移動(dòng)設(shè)備的各單 元采用代理機(jī)制對(duì)所述移動(dòng)設(shè)備進(jìn)行電源動(dòng)態(tài)管理,所述移動(dòng)設(shè)備還包括注冊(cè)單元,用以為所述移動(dòng)設(shè)備需要代理的驅(qū)動(dòng)對(duì)象創(chuàng)建并注冊(cè)對(duì)應(yīng) 的代理對(duì)象;監(jiān)控單元,用以通過(guò)所述代理對(duì)象監(jiān)控并攔截向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)起的功耗請(qǐng)求事件;識(shí)別單元,用以判斷所述代理對(duì)象的電源管理狀態(tài)是否適以響應(yīng)所述功耗請(qǐng)求事件若判斷結(jié)果為適以響應(yīng),則將所述功耗請(qǐng)求事件發(fā)送至對(duì) 應(yīng)的驅(qū)動(dòng)對(duì)象;若判斷結(jié)果為不適以響應(yīng),則所述控制單元啟動(dòng)所述監(jiān)控 單元繼續(xù)監(jiān)控;功耗調(diào)低單元,所述控制單元在所述識(shí)別單元將所述功耗請(qǐng)求事件發(fā) 送至對(duì)應(yīng)的驅(qū)動(dòng)對(duì)象并在其完成響應(yīng)后啟動(dòng)所述功耗調(diào)低單元,用以向?qū)?應(yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào)低請(qǐng)求,在功耗調(diào)低請(qǐng)求發(fā)送成功后更改代理對(duì) 象自身的電源管理狀態(tài),隨后啟動(dòng)所述監(jiān)控單元繼續(xù)監(jiān)控;功耗調(diào)高單元,所述控制單元在所述識(shí)別單元判斷所述代理對(duì)象的電 源管理狀態(tài)不適以響應(yīng)所述功耗請(qǐng)求事件時(shí)啟動(dòng)所述功耗調(diào)高單元,用以 在需要功耗調(diào)高時(shí),向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功耗調(diào)高請(qǐng)求,在功耗調(diào)高請(qǐng) 求發(fā)送成功后更改代理對(duì)象自身的電源管理狀態(tài),隨后啟動(dòng)所述識(shí)別單元 工作;若所述功耗調(diào)高請(qǐng)求發(fā)送失敗,則啟動(dòng)所述監(jiān)控單元工作。
7、 如權(quán)利要求6所述的移動(dòng)設(shè)備,其特征在于,所述功耗調(diào)高單元進(jìn)一步包括以下工作內(nèi)容在對(duì)應(yīng)的驅(qū)動(dòng)對(duì)象響應(yīng)完所述發(fā)送的功耗請(qǐng)求事件后,判斷所述代理 對(duì)象的電源管理狀態(tài)是否需要向功耗更低的方向調(diào)整;若需要調(diào)整,則啟動(dòng)定時(shí)器;若不需要調(diào)整,則啟動(dòng)所述監(jiān)控單元工作;若有新的功耗請(qǐng)求事件在定時(shí)器計(jì)時(shí)過(guò)程中向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)起 時(shí),則啟動(dòng)所述識(shí)別單元工作;若沒(méi)有新的功耗請(qǐng)求事件在定時(shí)器計(jì)時(shí)過(guò) 程中向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)起,則在定時(shí)器到時(shí)時(shí)向?qū)?yīng)的驅(qū)動(dòng)對(duì)象發(fā)送功 耗調(diào)低請(qǐng)求,在功耗調(diào)低請(qǐng)求發(fā)送成功后更改代理對(duì)象自身的電源管理狀 態(tài),隨后啟動(dòng)所述監(jiān)控單元工作。
8、 如權(quán)利要求7所述的移動(dòng)設(shè)備,其特征在于,所述驅(qū)動(dòng)對(duì)象為所述移動(dòng)設(shè)備的驅(qū)動(dòng)程序。
9、 如權(quán)利要求8所述的移動(dòng)設(shè)備,其特征在于,所述需要代理的驅(qū)動(dòng)對(duì)象為所述移動(dòng)設(shè)備的涉及功耗的驅(qū)動(dòng)程序。
10、 如權(quán)利要求6至9中任一項(xiàng)所述的移動(dòng)設(shè)備,其特征在于,所述功耗請(qǐng)求事件包括讀或?qū)憯?shù)據(jù)事件、控制請(qǐng)求事件、用戶通知事件、操作系 統(tǒng)的線程調(diào)度事件、用戶的鎖屏或解鎖通知事件中的一種或幾種。
全文摘要
本發(fā)明揭示了一種基于電源動(dòng)態(tài)管理的移動(dòng)設(shè)備及電源動(dòng)態(tài)管理方法,由于其采用了代理機(jī)制,攔截了對(duì)驅(qū)動(dòng)對(duì)象的接口訪問(wèn)并結(jié)合事件通知,整體上監(jiān)控了驅(qū)動(dòng)對(duì)象的使用情況,并可以自動(dòng)記錄設(shè)備的功耗狀態(tài),自動(dòng)切換設(shè)備的功耗狀態(tài),使設(shè)備對(duì)使用者來(lái)說(shuō)始終可用,對(duì)系統(tǒng)來(lái)說(shuō)則隨時(shí)可以自動(dòng)關(guān)閉,減少了驅(qū)動(dòng)程序開(kāi)發(fā)人員設(shè)備狀態(tài)維護(hù)及查詢?cè)O(shè)備電源狀態(tài)的麻煩;同時(shí)由于驅(qū)動(dòng)對(duì)象會(huì)被代理對(duì)象及時(shí)關(guān)閉電源,所以節(jié)省了不必要的電源,延長(zhǎng)了待機(jī)時(shí)間,在不損失性能的前提下盡可能優(yōu)化系統(tǒng)的功耗,而且系統(tǒng)工作性能穩(wěn)定可靠,適用范圍較為廣泛,給人們的工作和生活都帶來(lái)了很大的便利。
文檔編號(hào)G06F1/32GK101661325SQ200910056190
公開(kāi)日2010年3月3日 申請(qǐng)日期2009年8月10日 優(yōu)先權(quán)日2009年8月10日
發(fā)明者彪 王 申請(qǐng)人:上海聞泰電子科技有限公司