基于WinCE驅(qū)動程序的電源管理研究與設(shè)計
0 引言
本文引用地址:http://butianyuan.cn/article/175098.htmW inCE 的兩種模型是本機的設(shè)備驅(qū)動程序和流接口的驅(qū)動 程對于通常的嵌入式電子設(shè)備, 尤其是不能長久地連接交流電源的嵌入式電子設(shè)備, 降低顯示設(shè)備的耗電一直是電源管理的主要任務(wù)。目前, 有許多類型的顯示設(shè)備, 但現(xiàn)代大多數(shù)產(chǎn)品都選用反射式薄膜晶體管 ( TFT ) 顯示加背光燈作為顯示設(shè)備。雖然在光線充足的情況下可以看清屏幕上的內(nèi)容, 但是考慮到閱讀的舒適度, 還是需要把背光燈打開。 基于 W indow s CE 的嵌入式系統(tǒng)終端通 常以電池供電。因此, 背光驅(qū)動電源管理的作用顯得尤為關(guān)鍵。如何減少目標系統(tǒng)的不必要的耗電, 延長其待機時間, 就成了 W indow s CE 操作系統(tǒng)電源管理設(shè)計與開發(fā)的一個重要內(nèi)容。
本文從WinCE 的流接口設(shè)備驅(qū)動程序出發(fā), 詳細介紹了基于 Window s CE 操作系統(tǒng)電源管理策 略和基本原理, 并且在WinCE 背光驅(qū)動中實現(xiàn)了電源管理的設(shè)計與開發(fā)。
1 Window CE 驅(qū)動程序架構(gòu)
目前,WinCE 提供了四種設(shè)備模型, 其中兩種是專門用于 WinCE 的模型,另外兩種模型來自其他操作系統(tǒng)?;赪inCE 的兩種模型是本機的設(shè)備驅(qū)動程序和流接口的驅(qū)動程序。兩種外部模型用于通用串行總線(USB) 和網(wǎng)絡(luò)驅(qū)動器接口標準(NDIS) 驅(qū)動程序。其中流接口驅(qū)動程序是為連接到基于WinCE 平臺的外圍設(shè)備而設(shè)計的, 這些外圍設(shè)備包括SD 卡、攝像頭、打印機等,其驅(qū)動模型如圖1 所示。本文基于S3C2440A 的ARM9 開發(fā)板上LCD 顯示屏的背光控制流接口驅(qū)動程序, 詳細分析WinCE 下背光驅(qū)動的電源管理開發(fā)實現(xiàn)流程。
圖1 Window s CE 流接口驅(qū)動模型
從圖1 可以看出, 外圍設(shè)備由設(shè)備驅(qū)動程序管理, 用戶應(yīng)用程序通過調(diào)用文件系統(tǒng)從而實現(xiàn)對外部物理設(shè)備的訪問, 流接口驅(qū)動程序通過把外圍設(shè)備表示為文件系統(tǒng)的一個特殊文件, 而使得應(yīng)用程序在使用外圍設(shè)備時就像打開、關(guān)閉一個文件一樣簡單。
2 Window CE 電源管理
2.1 電源管理架構(gòu)和電源管理器
電源管理的總體結(jié)構(gòu)如圖2 所示。電源管理器直接或者間接地與應(yīng)用程序和驅(qū)動程序交互。電源管理器與驅(qū)動程序主要通過驅(qū)動程序接口進行交互, 與應(yīng)用程序通過API 和提醒接口進行交互。其中, 電源管理器專門負責管理設(shè)備電源狀態(tài), 從而提高操作系統(tǒng)的整體電源效率, 并且與不支持電源管理的驅(qū)動程序相兼容。電源管理器在操作系統(tǒng)中的軟件實體是動態(tài)鏈接庫pm. dll, 它由設(shè)備管理器device. dll 加載到Windows CE 的內(nèi)核進程中運行。
圖2 電源管理架構(gòu)示意圖
使用電源管理器, 設(shè)備接收作為I/ O 控制代碼(IOCT L)形式的電源狀態(tài)變化的通知。使用IOCT L 管理電源可以區(qū)分設(shè)備的電源狀態(tài)與整個操作系統(tǒng)的電源狀態(tài)。這樣, 當操作系統(tǒng)正在運行時, 一些設(shè)備可以關(guān)閉自己的電源, 而當操作系統(tǒng)掛起時, 另外一些設(shè)備可以保持原有狀態(tài)。
2.2 Windows CE設(shè)備電源狀態(tài)和系統(tǒng)電源狀態(tài)
電源管理器期望所有被管理的設(shè)備都支持一個或者多個設(shè)備電源狀態(tài), 設(shè)備必須向電源管理器報告它們的電源消耗特征, 設(shè)備電源狀態(tài)通常需要在性能與電量消耗之間進行折中。
電源狀態(tài)包括系統(tǒng)電源狀態(tài)和設(shè)備電源狀態(tài)。設(shè)備管理器在由OEM 定義的系統(tǒng)電源狀態(tài)的范圍內(nèi)管理設(shè)備電源狀態(tài), 系統(tǒng)電源狀態(tài)對設(shè)備電源狀態(tài)施加了一個上界。
Window s CE 的設(shè)備電源狀態(tài)是操作系統(tǒng)的靜態(tài)的預(yù)定義電源狀態(tài)。外設(shè)的驅(qū)動程序從電源管理器處接收改變設(shè)備電源狀態(tài)的請求, 將它轉(zhuǎn)換成外設(shè)可以支持的電源狀態(tài), 并且負責最后實現(xiàn)在物理外設(shè)上的電源狀態(tài)改變。
Window s CE 提供5 種預(yù)定義的設(shè)備電源狀態(tài)。它們在注冊表中也有相對應(yīng)的鍵。如果以Dn 代表D0~ D4, 則n 的數(shù)字越小的電源狀態(tài)等級下外設(shè)的耗電量越大, 如表1 所列。
表1 設(shè)備電源狀態(tài)
Window s CE 操作系統(tǒng)的系統(tǒng)電源狀態(tài)與設(shè)備電源狀態(tài)性質(zhì)完全不同, 它不是靜態(tài)定義的, 而是由OEM 用戶根據(jù)需要自定義。OEM 用戶通過配置系統(tǒng)注冊表定義系統(tǒng)的電源狀態(tài),系統(tǒng)電源狀態(tài)的名稱被定義成注冊表項的名字。圖3 描述了Window s CE 支持4 種最典型的系統(tǒng)電源狀態(tài)的轉(zhuǎn)換。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論