一種高效率的定時(shí)器管理模塊設計
摘要:首先說(shuō)明常見(jiàn)定時(shí)器管理方案的優(yōu)缺點(diǎn),然后針對通信協(xié)議的特點(diǎn),設計了一種高效率的定時(shí)器管理模塊。該模塊通過(guò)使用一個(gè)輔助定時(shí)器,大大減少了定時(shí)器中斷處理的時(shí)間開(kāi)銷(xiāo)。
關(guān)鍵詞:軟件定時(shí)器;相對定時(shí)器;定時(shí)器管理;通信協(xié)議
引言
定時(shí)器是通信協(xié)議正常運行的基本要素之一,主要用于各種定時(shí)和幀重傳的任務(wù)。通信協(xié)議在單片機系統上實(shí)現所使用的定時(shí)器,定時(shí)精度要求不高,但數量要求比較大。由于硬件資源有限,不可能為每一個(gè)單獨任務(wù)分配一個(gè)硬件定時(shí)器,只能通過(guò)單個(gè)硬件定時(shí)器模擬多個(gè)軟件定時(shí)器的方法,來(lái)滿(mǎn)足協(xié)議中的定時(shí)應用需要。
用一定的數據結構將這些軟件定時(shí)器組織起來(lái),并提供統一的調用接口,稱(chēng)為“定時(shí)器管理”。目前定時(shí)器管理主要有2種實(shí)現方法:
①靜態(tài)數組法。將定時(shí)器節點(diǎn)存儲在數組中。優(yōu)點(diǎn)是邏輯簡(jiǎn)單,占用ROM較少。但這種方案有明顯的缺點(diǎn):當硬件定時(shí)器中斷發(fā)生時(shí),要對所有定時(shí)器節點(diǎn)進(jìn)行減法操作,時(shí)間開(kāi)銷(xiāo)很大,且時(shí)延不確定(與定時(shí)器數目相關(guān))。
②delta鏈表法。按照定時(shí)器的定時(shí)值升序排列,形成鏈表。后一個(gè)定時(shí)器的定時(shí)值是前面所有定時(shí)器的值加上本節點(diǎn)的值。這樣,在每次的時(shí)鐘中斷處理中,只需對第1個(gè)定時(shí)器節點(diǎn)進(jìn)行減法操作,大大減少了時(shí)間開(kāi)銷(xiāo)。但是,該方案邏輯復雜,ROM用量大.需要頻繁分配回收內存,容易形成內存碎片。
1 定時(shí)器管理模塊的設計
定時(shí)器管理模塊的設計基于靜態(tài)數組法。使用一個(gè)定時(shí)器節點(diǎn)數組來(lái)保存所有的定時(shí)請求,數組的每一項代表一個(gè)可用的定時(shí)器節點(diǎn)。每一個(gè)定時(shí)器節點(diǎn)都有一個(gè)狀態(tài)項,表示該定時(shí)器正處于空閑、使用或溢出狀態(tài)。定時(shí)器的定時(shí)值和定時(shí)器超時(shí)后要發(fā)送的消息也存儲在定時(shí)器節點(diǎn)中,從而實(shí)現用一個(gè)硬件定時(shí)器為用戶(hù)提供多個(gè)軟件定時(shí)器。
為了解決中斷處理時(shí)間開(kāi)銷(xiāo)大的問(wèn)題,在模塊中引入一個(gè)輔助定時(shí)器,輔助定時(shí)器的值總是等于所有定時(shí)器節點(diǎn)中的最小定時(shí)值。在硬件定時(shí)器中斷處理中,僅對輔助定時(shí)器進(jìn)行減法操作,從而大大縮短了中斷處理的時(shí)間。設計原理如圖1所示。
評論