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