新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于Linux的便攜嵌入式設(shè)備電源管理解決方案

基于Linux的便攜嵌入式設(shè)備電源管理解決方案

作者: 時間:2012-04-05 來源:網(wǎng)絡(luò) 收藏

前 言

隨著各種便攜嵌入式設(shè)備性能的日益提高,功能日益豐富,其電源緊張的問題也日益突出,國內(nèi)新推出的某些具有PDA等多種功能的智能電話在密集使用下只能維持半天,多數(shù)攝像機和數(shù)碼相機在一次充電后都只有一個小時左右的累積工作時間。Linux作為一個開放源代碼的操作系統(tǒng),擁有非常豐富的軟件資源和平臺支持,這使得嵌入式系統(tǒng)開發(fā)的周期大大縮短,越來越多的商用和通用嵌入式系統(tǒng)都采用Linux作為軟件平臺。因此有必要對機制進(jìn)行深入研究。

Linux內(nèi)核機制分析

Linux作為一個強大而成熟的操作系統(tǒng),本身提供了一套從用戶空間到系統(tǒng)空間的,由上而下的軟件機制。

電源管理子系統(tǒng)

Linux內(nèi)核實現(xiàn)了一個電源管理子系統(tǒng)用于統(tǒng)一管理每個設(shè)備。源代碼pm.h和pm.c中定義和實現(xiàn)了主要的接口函數(shù)。如表1所示。

  
通過這些接口函數(shù)就可以將自己的硬件設(shè)備納入電源管理子系統(tǒng)使其成為系統(tǒng)電源管理的一部分。這需要在編寫設(shè)備驅(qū)動程序的時候完成下面的工作:

(1)在初始化驅(qū)動時,使用pm_ register對設(shè)備的每個實例( instance)進(jìn)行注冊;在清除驅(qū)動時使用pm_unregister來取消設(shè)備的注冊。
(2)在對硬件進(jìn)行操作之前調(diào)用pm_access (這樣會保證設(shè)備已被喚醒并且處于ready狀態(tài)) 。
(3)編寫自己的pm _callback函數(shù)。開發(fā)人員應(yīng)該在設(shè)備或系統(tǒng)進(jìn)入suspend狀態(tài)時保留設(shè)備和系統(tǒng)的上下文到安全的地方,并在設(shè)備或系統(tǒng)re -sume時恢復(fù)其上下文,使之能夠繼續(xù)運行,編寫pm_callback函數(shù)是驅(qū)動實現(xiàn)設(shè)備電源管理的重點。
(4)當(dāng)設(shè)備不在被使用的時候調(diào)用pm_dev_idle函數(shù),這個操作是可選的,可以增強設(shè)備idle狀態(tài)的監(jiān)測能力。

電源管理設(shè)備

將設(shè)備加入到電源管理子系統(tǒng)后,該設(shè)備就已經(jīng)有了處理電源管理請求的能力,但是系統(tǒng)的電源管理行為并不會主動發(fā)生。因此還需要一個電源管理設(shè)備來接受用戶請求,產(chǎn)生電源管理行為。這里所指的設(shè)備并不是一個真實的硬件設(shè)備,而是一個在空間里接受用戶控制的虛擬設(shè)備,它可以是一個簡單的字符型設(shè)備。有了這個設(shè)備,就可以方便的實現(xiàn)來自于用戶空間的電源管理請求和方案。Linux電源管理行為過程如圖1所示。


上一頁 1 2 3 4 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉