一種基于SEP0611的電源管理驅動(dòng)設計方案實(shí)現
return 0;
這段代碼主要實(shí)現:
(1) 使能音頻設備時(shí)鐘;初始化音頻相關(guān)的GPIO口;恢復音頻設備硬件寄存器。
(2) 調用resume_console函數釋放控制臺信號量以喚醒控制臺。
(3) 調用suspend_ops-》end.
其次suspend_finish函數完成與suspend_prepare函數相逆的操作:
(1) 喚醒進(jìn)程,通過(guò)thaw_processses函數實(shí)現。
(2) 執行pm_notifier_call_chain函數,該函數調用notifier_call_chain函數來(lái)通知事件(完成喚醒)的到達。
(3) 從全局變量恢復控制臺。
至此,系統完成喚醒,且系統中所有的設備驅動(dòng)能正常工作。
驅動(dòng)驗證
1、驗證環(huán)境和方法
驅動(dòng)驗證在江蘇東大集成電路有限公司生產(chǎn)的功耗測試板上進(jìn)行,該測試板編號為:SEUIC東集PCB602_DEMO0611,生產(chǎn)日期為 2011.05.13.測試時(shí):CPU運行在800MHz,AHB總線(xiàn)運行在180MHz,DDR運行在400MHz;測試板采用4路LDO供電,4路分別為core、arm、ddr_phy、cpu_io.測試方法為:1) 用萬(wàn)用表的毫安檔測試電流,每測一路,要將該路的0Ω電阻吹掉,將萬(wàn)用表串入電路,同時(shí)保證其他路的0Ω電阻連接。2)通過(guò)操作linux操作系統中 sysfs文件系統提供的接口讓測試板進(jìn)入休眠,即是在終端輸入命令:echo mem 》 sys/power/state.3) 通過(guò)電源鍵(或RTC定時(shí)中斷)喚醒系統,喚醒后驗證設備驅動(dòng)功能。
2、驗證結果
測試的0Ω電阻上的電流值如表1所示。b-s(mA)列代表系統休眠之前某電阻上的電流值;i-s(mA)列代表系統休眠之時(shí)某電阻上的電流值;a- s(mA)列代表系統完成喚醒時(shí)某電阻上的電流值;最后一列除了包含了上面提到了4路外,還包含DDR顆粒(ddr_mem)和外設(io)這兩路。
表1 各0Ω電阻上的電流值
phy、cpu_io這四路的電流下降為0,因為這4路電壓都為0,而此時(shí)DDR顆粒和外設上分別有14mA和17mA的電流。在測量各路電流的同時(shí),還采用穩壓源供電,測試了板級總電流:系統休眠之前的板級總電流為287mA,休眠之時(shí)為23mA,完成喚醒時(shí)為284mA.
在系統完成喚醒后,測試了系統中所有設備驅動(dòng)的工作情況:系統中的包括TIMER、CPU這樣的系統設備工作正常;系統中的外設驅動(dòng)包括UART、LCDC、I2C、I2S、SDIO、NAND、USB等都能正常工作。
結論
由于在系統休眠時(shí)4路LDO的掉電和除常開(kāi)區外各路時(shí)鐘的切斷,系統休眠的電流降到了23mA.這個(gè)數值為系統運行時(shí)的8%,大大降低了系統的功耗。目前的休眠電流主要消耗在DDR顆粒和外部io上,這都有改進(jìn)的空間,例如:可以通過(guò)配置DDR控制器優(yōu)化DDR時(shí)序、打開(kāi)DDR的低功耗模式;采用具有更低功耗的DDR3顆粒;可以檢查整板電路,是否在測試板休眠時(shí)有回路導致電流泄漏;可以檢查io電路,等等??傮w來(lái)說(shuō),本設計實(shí)現了SEP0611處理器板級的休眠和喚醒、所有設備驅動(dòng)的休眠和喚醒;完成了電源管理驅動(dòng)的設計;并在功耗測試板上驗證了驅動(dòng)的正確性。這對以后管理、降低SEP0611平臺的整板功耗有重要意義,對其他平臺下的電源管理驅動(dòng)也有一定的借鑒意義。
評論