一種利用實(shí)時(shí)時(shí)鐘降低嵌入式系統(tǒng)功耗的方法
在ECOS系統(tǒng)的實(shí)時(shí)時(shí)鐘類(lèi)中增加一個(gè)變量pre_hardware_count用于記錄上一次讀取的硬件計(jì)數(shù)器的值。當(dāng)每次系統(tǒng)API讀取tick時(shí),當(dāng)前硬件計(jì)數(shù)器的值與上一次讀取時(shí)硬件計(jì)數(shù)器的值的差值就是兩次讀取之間已經(jīng)過(guò)去的tick數(shù)。當(dāng)實(shí)時(shí)時(shí)鐘產(chǎn)生中斷時(shí),即硬件計(jì)數(shù)器計(jì)到0,將此變量清零。這樣,就可以保證每次讀取系統(tǒng)tick 時(shí),能得到一個(gè)準(zhǔn)確的系統(tǒng)tick值。當(dāng)有任務(wù)要主動(dòng)延時(shí)一段時(shí)間,即調(diào)用系統(tǒng)delay API時(shí)。
ECOS的API函數(shù)會(huì)計(jì)算出該任務(wù)的delay時(shí)間點(diǎn),然后將該任務(wù)掛入系統(tǒng)delay隊(duì)列。然后遍歷系統(tǒng)delay隊(duì)列,找出隊(duì)列中的最小delay時(shí)間點(diǎn),把該delay時(shí)間點(diǎn)對(duì)應(yīng)的delay時(shí)間寫(xiě)入GPT,讓GPT來(lái)控制delay時(shí)間。delay時(shí)間到后,GPT會(huì)產(chǎn)生中斷,ECOS將中斷處理程序分為兩部分,ISR和DSR。在ISR中將硬件計(jì)數(shù)器設(shè)為最大值。然后在DSR中增加系統(tǒng)tick,將超時(shí)的任務(wù)重新掛入就緒隊(duì)列,并且再次找出系統(tǒng)delay隊(duì)列上的最小delay時(shí)間點(diǎn),寫(xiě)入硬件計(jì)數(shù)器。
如果系統(tǒng)delay隊(duì)列為空,則不對(duì)硬件計(jì)數(shù)器再進(jìn)行操作,保持ISR 中寫(xiě)入的最大值。最后ECOS會(huì)運(yùn)行調(diào)度器,如果超時(shí)的任務(wù)具有最高優(yōu)先級(jí),那么它就會(huì)得到運(yùn)行,也就是醒過(guò)來(lái)。這樣也就可以保證系統(tǒng)delay的準(zhǔn)確性與及時(shí)性。下圖是修改后實(shí)時(shí)時(shí)鐘后系統(tǒng)tick, delay以及調(diào)度器相關(guān)的流程圖。
下圖是修改后實(shí)時(shí)時(shí)鐘后系統(tǒng)tick, delay以及調(diào)度器相關(guān)的流程圖。
圖1. 實(shí)時(shí)時(shí)鐘修改流程圖
下面是在飛思卡爾公司i.mx51上的實(shí)驗(yàn)數(shù)據(jù)。
可以看出,修改了時(shí)間片調(diào)度和實(shí)時(shí)時(shí)鐘后,不論ARM工作在哪個(gè)電壓點(diǎn),系統(tǒng)IDLE時(shí)的功耗降低了差不多10倍。因此,延長(zhǎng)實(shí)時(shí)時(shí)鐘中斷間隔能極大的降低系統(tǒng)功耗。
4.其他系統(tǒng)的類(lèi)似方法
當(dāng)前流行的嵌入式操作系統(tǒng)Linux和WinCE也都在討論修改系統(tǒng)實(shí)時(shí)時(shí)鐘中斷方式以求降低系統(tǒng)功耗。對(duì)于Linux系統(tǒng),有一個(gè)Less Watts項(xiàng)目,實(shí)現(xiàn)tickless idle,即無(wú)tick的idle,其實(shí)就是修改實(shí)時(shí)時(shí)鐘的中斷方式。WinCE則提供了可變系統(tǒng)時(shí)鐘節(jié)拍Variable Tick Scheduler,在進(jìn)入idle狀態(tài)前改變系統(tǒng)時(shí)鐘節(jié)拍,這樣在預(yù)期的時(shí)間段里,idle狀態(tài)不會(huì)被無(wú)謂的系統(tǒng)時(shí)鐘中斷喚醒。
5.結(jié)論
可以看出,通過(guò)修改實(shí)時(shí)時(shí)鐘中斷方式,可以使CPU在idle狀態(tài)下長(zhǎng)時(shí)間處于低功耗模式,極大的降低系統(tǒng)功耗。而且當(dāng)前流行的嵌入式操作系統(tǒng)都在積極的探討此方法。相信今后這項(xiàng)功能會(huì)成為嵌入式操作系統(tǒng)必備的一個(gè)功能。
評(píng)論