一種嵌入式基帶系統(tǒng)定時器裝置的研究
①在操作系統(tǒng)定時器鏈表中,所有定時器按照剩余超時時間順序排列。
②系統(tǒng)默認低精度硬件定時器為主定時器,主定時器始終開啟,每個周期長度為TL。
③主定時器超時后,系統(tǒng)定時器處理函數(shù)檢查定時鏈表,若滿足超時條件則啟動該定時超時函數(shù),同時對所有定時器剩余超時時間進行減TL操作。
④若鏈表頭定時器不滿足超時時間,則僅對所有定時器減TL操作。
⑤若鏈表定時器剩余超時時間小于TL,即該定時器為TH高精度要求定時器。此時,根據(jù)該高精度定時器的剩余超時時間TH,設(shè)置啟動高精度硬件定時器(即輔定時器)。
⑥輔定時器在TH時間后超時,觸發(fā)輔定時器超時函數(shù)。
系統(tǒng)中若存在連續(xù)多個TH定時器,則依據(jù)超時順序依次設(shè)置輔定時器,完成對連續(xù)多個TH定時器定時激活操作。
本方案將定時器精度較低的主定時器作為系統(tǒng)準硬件定時器。為提高系統(tǒng)時鐘,當軟件定時器剩余超時時間小于主定時器最小時間片時,才啟動定時精度較高的輔定時器,為定時精度高的軟件定時器提高硬件定時。這樣有效地減少了硬件定時器的無效中斷次數(shù),提高了系統(tǒng)效率。定時器原理圖如圖1所示。
2.2 實現(xiàn)流程
設(shè)置一個主定時器和一個輔定時器,則將主定時器作為系統(tǒng)的基準定時器。如果主定時器每次超時,則對軟件定時器鏈表中的軟件定時器剩余超時時間長度進行修改,將軟件定時器超時時間長度減去主定時器最小時間片長度,作為該軟件定時器的剩余超時時間長度。
如果剩余超時時間長度不大于0,則觸發(fā)滿足超時條件的軟件定時器定時中斷。如果軟件定時器剩余超時時間長度小于主定時器最小時間片,則設(shè)置輔定時器定時長度為剩余超時時間長度最小的軟件定時器的剩余超時時間長度,此時啟動輔定時器。主定時器流程如圖2所示。本文引用地址:http://www.ex-cimer.com/article/148228.htm
如果輔定時器超時,則將對軟件定時器鏈表中的軟件定時器剩余超時時間長度進行修改。將軟件定時器剩余超時時間長度減去輔定時器定時長度,作為該軟件定時器剩余超時時間長度。如果超時時間長度不大于0,則觸發(fā)滿足條件的軟件定時器定時中斷。如果軟件定時器剩余超時時間長度小于主定時器最小時間片,則設(shè)置輔定時器定時長度為剩余超時時間長度最小的軟件定時器的剩余超時時間長度;否則,關(guān)閉輔定時器。輔定時器流程如圖3所示。
評論