<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種利用實時時鐘降低嵌入式系統(tǒng)功耗的方法

          一種利用實時時鐘降低嵌入式系統(tǒng)功耗的方法

          作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

          在ECOS系統(tǒng)的類中增加一個變量pre_hardware_count用于記錄上一次讀取的硬件計數(shù)器的值。當(dāng)每次系統(tǒng)API讀取tick時,當(dāng)前硬件計數(shù)器的值與上一次讀取時硬件計數(shù)器的值的差值就是兩次讀取之間已經(jīng)過去的tick數(shù)。當(dāng)產(chǎn)生中斷時,即硬件計數(shù)器計到0,將此變量清零。這樣,就可以保證每次讀取系統(tǒng)tick 時,能得到一個準(zhǔn)確的系統(tǒng)tick值。當(dāng)有任務(wù)要主動延時一段時間,即調(diào)用系統(tǒng)delay API時。

          ECOS的API函數(shù)會計算出該任務(wù)的delay時間點,然后將該任務(wù)掛入系統(tǒng)delay隊列。然后遍歷系統(tǒng)delay隊列,找出隊列中的最小delay時間點,把該delay時間點對應(yīng)的delay時間寫入GPT,讓GPT來控制delay時間。delay時間到后,GPT會產(chǎn)生中斷,ECOS將中斷處理程序分為兩部分,ISR和DSR。在ISR中將硬件計數(shù)器設(shè)為最大值。然后在DSR中增加系統(tǒng)tick,將超時的任務(wù)重新掛入就緒隊列,并且再次找出系統(tǒng)delay隊列上的最小delay時間點,寫入硬件計數(shù)器。

          如果系統(tǒng)delay隊列為空,則不對硬件計數(shù)器再進(jìn)行操作,保持ISR 中寫入的最大值。最后ECOS會運行調(diào)度器,如果超時的任務(wù)具有最高優(yōu)先級,那么它就會得到運行,也就是醒過來。這樣也就可以保證系統(tǒng)delay的準(zhǔn)確性與及時性。下圖是修改后后系統(tǒng)tick, delay以及調(diào)度器相關(guān)的流程圖。

          下圖是修改后實時時鐘后系統(tǒng)tick, delay以及調(diào)度器相關(guān)的流程圖。

          流程圖

          圖1. 實時時鐘修改流程圖

          下面是在公司i.mx51上的實驗數(shù)據(jù)。

          飛思卡爾實驗表

          可以看出,修改了時間片調(diào)度和實時時鐘后,不論工作在哪個電壓點,系統(tǒng)IDLE時的功耗降低了差不多10倍。因此,延長實時時鐘中斷間隔能極大的降低系統(tǒng)功耗。

          4.其他系統(tǒng)的類似方法

          當(dāng)前流行的嵌入式操作系統(tǒng)Linux和WinCE也都在討論修改系統(tǒng)實時時鐘中斷方式以求降低系統(tǒng)功耗。對于Linux系統(tǒng),有一個Less Watts項目,實現(xiàn)tickless idle,即無tick的idle,其實就是修改實時時鐘的中斷方式。WinCE則提供了可變系統(tǒng)時鐘節(jié)拍Variable Tick Scheduler,在進(jìn)入idle狀態(tài)前改變系統(tǒng)時鐘節(jié)拍,這樣在預(yù)期的時間段里,idle狀態(tài)不會被無謂的系統(tǒng)時鐘中斷喚醒。

          5.結(jié)論

          可以看出,通過修改實時時鐘中斷方式,可以使CPU在idle狀態(tài)下長時間處于低功耗模式,極大的降低系統(tǒng)功耗。而且當(dāng)前流行的嵌入式操作系統(tǒng)都在積極的探討此方法。相信今后這項功能會成為嵌入式操作系統(tǒng)必備的一個功能。


          上一頁 1 2 下一頁

          關(guān)鍵詞: eCos 實時時鐘 飛思卡爾 ARM

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();