<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 基于開(kāi)源軟件構建先進(jìn)的嵌入式電源管理

基于開(kāi)源軟件構建先進(jìn)的嵌入式電源管理

作者:北京麥克泰軟件技術(shù)有限公司 何小慶 時(shí)間:2008-11-03 來(lái)源:今日電子 收藏

  電源管理(或者說(shuō)能耗管理)是芯片設計、制造工藝、系統設計和軟件都在為之努力的研究課題,大家力求在各個(gè)環(huán)節盡可能的減少靜態(tài)和動(dòng)態(tài)的電源消耗。傳統的控制電壓的調節方式和管理待機模式依然是多數電子設備正在采用的,還將繼續延續下去,但是隨著(zhù)包括智能手機、導航和無(wú)線(xiàn)傳感網(wǎng)絡(luò )裝置,這些對電量消耗極大且永遠在線(xiàn)的設備的市場(chǎng)規模的迅速增加,電源管理已經(jīng)成為整個(gè)電子設計正在面臨的重要課題。市場(chǎng)研究機構isuppli首席分析師Jordan Selburn說(shuō):“功耗已經(jīng)成為電子產(chǎn)品設計的首要考慮。”

本文引用地址:http://dyxdggzs.com/article/89156.htm

  Linux操作系統已經(jīng)證明是在嵌入式系統,尤其是消費電子產(chǎn)品中大量使用的一個(gè)嵌入式操作系統。它因為豐富的特性、完善的功能、最新的硬件支持和無(wú)版稅的商業(yè)模式得到包括半導體公司、設計公司和設備制造商的認可。對于消費電子產(chǎn)品中的Linux 技術(shù),除了進(jìn)一步優(yōu)化性能、壓縮尺寸、提高可靠性外,構建一個(gè)完善和富有彈性的電源管理系統已經(jīng)成為越來(lái)越緊要的項目和要求,也將成為L(cháng)inux取代傳統RTOS、WinCE/mobile、Symbian,占據消費電子首席開(kāi)源軟件(OS)地位的重要殺手锏。

Linux電源管理質(zhì)量服務(wù)

  目前已經(jīng)發(fā)表的Linux版本是2.6.24和2.6.25,這兩個(gè)版本包含了下面幾個(gè)和嵌入式相關(guān)的技術(shù)。LTTng(LinuxTrace工具);電源管理質(zhì)量服務(wù)(PM QoS,也稱(chēng)為QoSPM);Kpagemap——一個(gè)在userspace的應用,可以更詳盡的測量到內存消耗的情況;Latency measurement API——一個(gè)延遲測量API,也是LatencyTOP的基礎,這個(gè)工具的姐妹組合是叫做powerTop的電量分析軟件,這是一個(gè)很有用的電源管理工具,可以分析出每個(gè)具體的應用對電量的消耗情況。最近商業(yè)的嵌入式Linux公司Montavista把它移植到mobilinux5.0產(chǎn)品里支持ARM結構;Smack——一個(gè)簡(jiǎn)單的訪(fǎng)問(wèn)控制的安全模塊,值得嘗試在嵌入式系統中使用。

  這里重點(diǎn)討論PM QoS,構建PM QoS的目的是通過(guò)提供硬件之間可以訪(fǎng)問(wèn)的機制,讓?xiě)迷谟行阅苄枰臅r(shí)候可以給出電源管理的資源信息,在實(shí)現上,它是構建了一個(gè)新的內核結構以完成需要延遲和吞吐性能的驅動(dòng)程序、系統和應用之間的通信。

  PM QoS目前發(fā)布的版本里有三個(gè)參數(pm_qos_params.c):cpu_dma_lantency、network_latency和network_throughput。使用pm_qos_init()在內核里可以增加新的參數,在userspace應用使用PM QoS就好像是驅動(dòng)文件的一個(gè)特性。打開(kāi)驅動(dòng)文件,改變如延遲參數等值,寫(xiě)入文件后,關(guān)閉文件就意味取消了對內核的請求,可以自動(dòng)保護避免因為可能發(fā)生宕機而損壞內核系統。

  在內核API中有請求(requirement)、告知(notifier)等接口,讓需要有延遲和吞吐性能要求的驅動(dòng)代表這些參數。典型的應用包括目前Intel開(kāi)源實(shí)驗室開(kāi)發(fā)的一個(gè)帶有PM_QoS的無(wú)線(xiàn)網(wǎng)卡的驅動(dòng)(IW14965)。這個(gè)無(wú)線(xiàn)芯片有六個(gè)電源配置點(diǎn),它們可以影響天線(xiàn)的功率,設置進(jìn)入無(wú)線(xiàn)休眠的速度和無(wú)線(xiàn)AP站點(diǎn)之間的距離等參數,這個(gè)應用使用PM QoS的延遲參數就很適合,目前這個(gè)驅動(dòng)的工作還是和驅動(dòng)相關(guān),通過(guò)sysfs掛接,驅動(dòng)只需要簡(jiǎn)單的注冊并告知需要改變網(wǎng)絡(luò )延遲參數的要求,然后切換到它希望的電源管理層。

  PM QoS目前主要有三個(gè)方面的應用。第一是CPU的空閑管理,這可以用在如音頻、硬盤(pán)、USB和顯示等耗電大和動(dòng)作相對需要延遲的部件上。例如,圖像不需要高分辨率,那就可以關(guān)閉硬件的加速功能,而硬件加速要打開(kāi)是有延遲的,設置合適延遲可以達到在不影響使用的前提下節省電量的目的。第二是WiFi應用。第三是千兆以太網(wǎng),PM QoS可以幫助控制網(wǎng)絡(luò )的延遲和帶寬的需求,以達到在可用的前提下省電的目的。例如,網(wǎng)絡(luò )瀏覽器大約可以設置成2s延遲,郵件客戶(hù)端0.5s的網(wǎng)絡(luò )延遲。PM QoS目前還很初步,現在主要應用是網(wǎng)絡(luò )和互聯(lián)網(wǎng)終端,相信進(jìn)入Linux內核后未來(lái)支持PM QoS的驅動(dòng)程序和應用將會(huì )越來(lái)越多,對于嵌入式系統裝置的電源管理是一個(gè)選擇。

Linux內核的動(dòng)態(tài)電壓和電流控制接口

  前面已經(jīng)提到半導體器件的功耗是兩個(gè)部分組成,一是靜態(tài)功耗,一是動(dòng)態(tài)功耗。靜態(tài)功耗主要來(lái)自待機狀態(tài)的泄漏電流,相比而言動(dòng)態(tài)功耗更大,例如,音視頻播放中頻率和電壓的增加會(huì )讓電量將成線(xiàn)形增長(cháng),動(dòng)態(tài)功耗也是電源管理要解決的主要問(wèn)題,解決動(dòng)態(tài)功耗的方法有幾種,如IBM和Montavista合作開(kāi)發(fā)DPM項目(現用在Montavista Mobilinux 5.0 產(chǎn)品中)和TI OMAP3430的Linux電源管理,自Wolfson微電子的Liam Girdwood最近介紹了一種稱(chēng)為校準器(regulator)的動(dòng)態(tài)電壓和電流控制的方法,很有參考意義和實(shí)際使用價(jià)值。


1 校準器的基本概念

  所謂校準器實(shí)際是在軟件控制下把輸入的電源調節精心輸出。例如電壓的控制,輸入時(shí)5V 輸出是1.8V;電流的限制,最大20mA;簡(jiǎn)單的切換和電源的開(kāi)關(guān)等,如圖1所示。

 
圖1 校準器

  電源域是一組校準器,設備組成、輸入可能是校準器,開(kāi)關(guān)也許是電源域,電源域可以級聯(lián),電源約束可以和電源域配合以保護硬件。例如一個(gè)Internet Tablet/PMP,它由CPU、NOR Flash、音頻編解碼器、觸摸屏、LCD控制器、USB、WiFi 等其他外設組成,如圖2所示。

 
圖2 Internet Tablet/PMP系統結構

  為了實(shí)現上面的構想,需要在內核里建立一個(gè)校準器構架,目的就是設計一個(gè)可以控制電壓和電流的標準內核接口以節省電能,從而盡可能的延長(cháng)電池的供應。這個(gè)內核的架構分為四個(gè)部分:針對設備驅動(dòng)的消費接口(consumer)、校準器驅動(dòng)的接口、系統配置的接口和面向應用sysfs的userspace接口。

2 Consumer的API

regulator = regulator_get(dev, “Vcc”);

  其中,dev 是設備“Vcc”一個(gè)字符串代表,校準器(regulator)然后返回一個(gè)指針,也是regulator_put(regulator)使用的。

  打開(kāi)和關(guān)閉校準器(regulator)API如下。

int regulator_enable(regulator);
int regulator_disable(regulator);


3 電壓的API

  消費者可以申請提供給它們的電壓,如下所示。

int regulator_set_voltage(regulator, int min_uV, int max_uV);

  在改變電壓前要檢查約束,如下所示。

regulator_set_voltage(regulator,100000,150000)

  電壓值下面的設置改變如下所示。

int regulator_get_voltage)struct regulator *regulator);


4 電流的API

  電流的API也是類(lèi)似,需要指出的是,校準器的方法并不一定是最高的效率,效率和加載(如加載10mA電流)、操作模式都有關(guān)系,通過(guò)下面的API可以改變模式設置。

regulator_set_optimum_mode(requlator,10000);//10mA

5 校準器的驅動(dòng)和系統配置

  在實(shí)際使用校準器之前,需要按照下面的結構寫(xiě)校準器的驅動(dòng)程序,然后注冊后通知給消費者使用。

struct regulator_ops {
 /* get/set regulator voltage */
 int (*set_voltage)(struct regulator_cdev *, int uV);
 int (*get_voltage)(struct regulator_cdev *);
 /* get/set regulator current */
 int (*set_current)(struct regulator_cdev *, int uA);
 int (*get_current)(struct regulator_cdev *);
 /* enable/disable regulator */
 int (*enable)(struct regulator_cdev *);
 int (*disable)(struct regulator_cdev *);
 int (*is_enabled)(struct regulator_cdev *);
 /* get/set regulator operating mode (defined in regulator.h) */
 int (*set_mode)(struct regulator_cdev *, unsigned int mode);
 unsigned int (*get_mode)(struct regulator_cdev *);
 /* get most efficient regulator operating mode for load */
 unsigned int (*get_optimum_mode)(struct regulator_cdev *, int input_uV,
 int output_uV, int load_uA);
};

  完成了校準器驅動(dòng)程序之后,下一步就是系統設置(machine specific),即匹配如電壓、LDO1和NAND等關(guān)系。
regulator_set_supply(“LDO1”,dev, “Vcc”)

  對于userspace,校準器的使用是通過(guò)sysfs,但是目前所有的包括電壓、電流、操作模式、限制等信息多只是只讀信息,應該是非常適合象powerTop這樣工具的使用。

6 應用

  校準器的典型的應用包括如下:CPUfreq——CPU頻率的調節;CPU idle——CPU空閑模式控制;LCD背光調節——通過(guò)電流控制LED燈的亮度達到控制LCD背光的目的;音頻單元——如FM收音機在MP3使用的時(shí)候應該是關(guān)閉的,麥克風(fēng)使用的時(shí)候,揚聲器的放大器應該是關(guān)閉的;NAND/NOR存儲器是耗電大戶(hù),根據不同操作方式(讀/寫(xiě)、擦除等)優(yōu)化操作模式(控制電流)達到節省電量的要求。同其他電源管理的方法比較,校準器方法具有一定的硬件獨立和抽象性,簡(jiǎn)單實(shí)用,原理上可以適合任何有電源管理芯片支持嵌入式系統電源管理,目前已經(jīng)移植到Freescale MC13783、Wolfson WM8350/8400等幾個(gè)集成度很高的電源管理器件上了.

基于構件的面向CPU的電源管理技術(shù)

  無(wú)論是PM_QoS、控制電壓和電流的校準器方法,還是許許多多半導體公司支持自己CPU和電源管理芯片的Linux BSP電源管理部分,都還沒(méi)有一個(gè)構建在更高層面的構件級嵌入式系統電源解決方案和商業(yè)產(chǎn)品。雖然包括CELF(消費和嵌入式Linux 論壇)和Intel主導的Mobile &Internet Linux項目都設立了專(zhuān)門(mén)的電源管理計劃(power manager project),但是顯然距離人們的要求和實(shí)際的應用還太遠了。

  Montavista在過(guò)去和IBM合作開(kāi)發(fā)DPM(動(dòng)態(tài)電源管理)技術(shù)的基礎上,最近在專(zhuān)門(mén)針對手機、互聯(lián)網(wǎng)移動(dòng)終端、PMP/PDN等便攜消費電子設備的mobilinux5.0上提出技術(shù)的構件方法。Montavista的構件方式主要是針對以先進(jìn)的多媒體應用處理器為核心的新一代嵌入式系統,比如Freescale的MX31、TI OMAP2430/3430為核心的系統級電源管理,它包含下面幾個(gè)主要的部分。

1 動(dòng)態(tài)的電壓和頻率調節

  正如前面提到的,電壓和頻率的提升將會(huì )讓功耗線(xiàn)性增加,按照設計需要和應用的指令將電壓和頻率調節到合適的操作點(diǎn)可以大大降低功耗的有效方法。要想實(shí)現動(dòng)態(tài)的電壓和頻率調節(DVFS),在內核里CPUrefs子系統是關(guān)鍵的部件,如圖3所示。


圖3 CPUrefs結構

  那么管理者(Governor)是按照什么情況改變操作點(diǎn)呢?性能要求、省電的要求、用戶(hù)的應用以及CPU的使用效率等條件都可以讓管理者改變操作模式。Mobilinux5.0提供了userspace機制充當管理者的工作,即應用可以改變操作點(diǎn)。

  在TI OMAP3中有一個(gè)稱(chēng)為SmartReflex的技術(shù),動(dòng)態(tài)調整VDD1和VDD2操作點(diǎn)電壓以適應芯片特性、溫度和電壓。SmartReflex技術(shù)有四個(gè)級別:0級——在工廠(chǎng)生產(chǎn)時(shí)優(yōu)化校準后設置的操作點(diǎn);1級——引導時(shí)優(yōu)化后校準確定的操作點(diǎn);2級——通過(guò)軟件循環(huán)實(shí)時(shí)優(yōu)化電壓點(diǎn)然后由CPU的中斷程序設置;3級——完全的硬件循環(huán)優(yōu)化電壓點(diǎn),無(wú)須CPU干預,是一種硬件控制“傻瓜”操作點(diǎn)改變方式。無(wú)論是mobilinux5.0還是TI 3430 Linux distribution都已經(jīng)支持DVFS和SmartReflex驅動(dòng)。

2 掛起和恢復

  在內核里,mobilinux5.0已經(jīng)提供支持掛起和恢復的驅動(dòng)程序的功能,新的驅動(dòng)必須要增加回調函數以響應系統休眠中關(guān)機和再次喚醒的動(dòng)作。

3 支持電源管理的驅動(dòng)程序

  每一個(gè)驅動(dòng)程序必須經(jīng)過(guò)重新的書(shū)寫(xiě)支持DVFS,即當操作點(diǎn)改變的時(shí)候,驅動(dòng)程序通過(guò)CPUrefs的告知作出響應。驅動(dòng)程序還必須正確處理系統的掛起和恢復事件。

4 CPU空閑調節

  由一個(gè)定義的處理器特定的空閑狀態(tài)點(diǎn)的CPUidle驅動(dòng)管理、內核的一個(gè)CPUidle 框架和管理者組成,如OMAP3430定義7個(gè)空閑狀態(tài)點(diǎn)。

5 應用設計策略

  包括手機在內的便攜式消費電子產(chǎn)品主要的能耗分布如圖4所示。


圖4 便攜電子產(chǎn)品能耗分布

  除了CPU外,其他主要的能耗大戶(hù)是LCD背光、NOR/NAND Flash/RAM存儲器、DC/DC轉換和音視頻放大器等,例如,MPEG4的播放就是一個(gè)能耗集中的應用。

  如何使用mobilinux5.0等已經(jīng)具備電源管理功能的商業(yè)嵌入式操作系統以使便攜電子產(chǎn)品能耗降低到最少?下面的方法是設計人員應該考慮的。

  ·實(shí)際測量的結果證明使用DVFS的方法是降低CPU運行時(shí)的能耗的關(guān)鍵。當然,如何讓管理者設置操作點(diǎn)和狀態(tài)轉移是要設計人員全盤(pán)考慮的。

  ·不要忽視CPU空閑狀態(tài)的能耗管理。mobilinux5.0的CPUrefs 和所有的驅動(dòng)都已經(jīng)支持空閑的調節(idle scaling),加上內核使用了動(dòng)態(tài)滴嗒時(shí)鐘(dynamic tick),改變了過(guò)去CPU無(wú)論是否運行都按照固定的時(shí)間喚醒的方法,大大節省能源。

  ·可延遲的定時(shí)器(deferrable timer)——它可以告訴內核某個(gè)定時(shí)器不需要在時(shí)限到的時(shí)候喚醒,這將可以降低能耗。

  ·PowerTop工具——前面已經(jīng)提到的這個(gè)工具已經(jīng)集成到mobilinux5.0 中,而且證明對于分析系統空閑狀態(tài)是一個(gè)非常有用的工具。

結語(yǔ)

  上面講了大量基于Linux的電源管理技術(shù)的實(shí)現方法,應該承認包括WinCE/Mobile、Symbian 等嵌入式操作系統的電源管理技術(shù)和操作系統結合的相對更加完整和容易使用,但是靈活性和開(kāi)放性比較起開(kāi)源的Linux要遜色的多。更加重要的是,電源管理是一個(gè)系統級的設計,而不僅僅是軟件設計,不斷追蹤技術(shù)發(fā)展的Linux電源管理將得到越來(lái)越多的設計人員的喜愛(ài),使用Linux操作系統優(yōu)化電源管理后電子產(chǎn)品將會(huì )更加省電和長(cháng)效。

參考資料:

[1] TI 公司,2008TI 亞洲技術(shù)研討會(huì )資料

[2] Montavista Mobilinux 5.0 DynamicPower Management user Guide

[3] Liam Girdwood ,Every Microamp is sacred - A dynamic voltage and current control interface for the Linux Kernel,

[4] Mark Gross, Power management quality of service and how you could use it in your embedded



關(guān)鍵詞: 嵌入式電源管理

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>