嵌入式系統的低功耗軟件設計
部分接口函數詳細代碼設計
由于通過(guò)控制各個(gè)模塊的時(shí)鐘頻率以及電源開(kāi)關(guān)可以達到省電效果,比如說(shuō)SD存儲器的開(kāi)關(guān),不用SD存儲器的時(shí)候就可以關(guān)掉,或是不需要高速存取的時(shí)候,就可以把SD存儲器的頻率降低,以求省電。下面以L(fǎng)CD模塊的代碼為例來(lái)說(shuō)明LCD省電的詳細思路。其他模塊的代碼設計思想與其一致,這里不再贅述。
#define POWER_SAVING_TIME (60*1000) // 間隔時(shí)間
#define LCD_CONTROLLER_POWER 0x22400000 //LCD控制寄存器的地址
extern unsigned int System_Time; //全局變量存儲系統時(shí)間
unsigned int Last_Keystroke_Time; //最后的觸發(fā)事件的時(shí)間
void Sys_SetAlarm(unsigned int T); //設置當前任務(wù)時(shí)間
void User_Press_A_Key(void) //當有外部事件觸發(fā)將調用此函數
{ if(*(unsigned int *)(LCD_CONTROLLER_POWER) == 0) {
*(unsigned int *)(LCD_CONTROLLER_POWER) = 1;
}
}
Void User_Input_Task(void) //當有觸發(fā)事件到來(lái)執行該函數
{
static unsigned int previous_key_time;
previous_key_time = Last_Keystroke_Time;
while(1) {
Sys_SetAlarm(POWER_SAVING_TIME);
if(previous_key_time == Last_Keystroke_Time) {
/*一分鐘內沒(méi)有任何外部事件觸發(fā),將關(guān)閉LCD */
*(unsigned int *)(LCD_CONTROLLER_POWER) = 0;
}
else
previous_key_time = Last_Keystroke_Time;
}
}
省電性能測試總結
圖5 整個(gè)多媒體芯片系統的轉化流程示意圖
嵌入式系統目前在多個(gè)行業(yè)得到廣泛應用,低功耗是其性能指標之一?;诠膶?shí)現設計硬件平臺后,低功耗實(shí)現主要從軟件方面來(lái)解決。本文基于嵌入式系統特征及其功能實(shí)現,采用程序優(yōu)化技術(shù)來(lái)降低功耗。經(jīng)過(guò)測試,整合多媒體芯片的無(wú)線(xiàn)終端平均功耗下降了50%。其中在正常待機時(shí),電流為400mA左右,而在睡眠時(shí)降到了200mA左右;如果應用深度睡眠(關(guān)閉SC6600、QCP1880和所有設備,維持一個(gè)32kHz的時(shí)鐘)電流甚至可以降到10~20mA,完全滿(mǎn)足長(cháng)時(shí)間待機。實(shí)驗表明,利用本軟件構架,可以對無(wú)線(xiàn)終端實(shí)行之有效的省電管理?,F已用于諸多無(wú)線(xiàn)移動(dòng)多媒體終端項目(智能電話(huà)等),效果理想。由于限于篇幅,不再贅述。
評論