基于VxWorks操作系統的通用定時(shí)器設計

本文引用地址:http://dyxdggzs.com/article/246739.htm
中斷處理任務(wù)TimerSvrTask()主要用來(lái)處理已經(jīng)到時(shí)的節點(diǎn)。該任務(wù)生成后等待同步信號量,如果獲得該信號量,則從傳遞來(lái)的第一個(gè)節點(diǎn)開(kāi)始遍歷所有timeLeft為0的節點(diǎn),然后執行節點(diǎn)對應的函數或者釋放節點(diǎn)對應的信號量,最后再根據到時(shí)節點(diǎn)的timerType判斷:若該定時(shí)節點(diǎn)為單次則把該節點(diǎn)設為不可用;若該定時(shí)節點(diǎn)為周期性的,則先將該節點(diǎn)從鏈表中取出,重新初始化剩余時(shí)間后再次插入鏈表中的恰當位置。
需要說(shuō)明的是,基于輔助時(shí)鐘的通用定時(shí)器需要CPU的一個(gè)時(shí)鐘資源,且輔助時(shí)鐘的使用會(huì )和調試工具SpyChart沖突,使用時(shí)應特別注意。
3 數據訪(fǎng)問(wèn)的防沖突考慮
由于定時(shí)節點(diǎn)鏈表以及程序中用到的其它全局變量相對所有的任務(wù)都是共享數據,因此為保持數據使用的一致性,需要加以保護,以防止多個(gè)任務(wù)對共享數據的使用沖突。對于有輔助時(shí)鐘中斷服務(wù)程序參與的數據,例如鏈表,其他任務(wù)在對鏈表操作前需要先禁止中斷,操作完畢后再允許中斷,以防出現中斷與任務(wù)的不一致問(wèn)題;對于輔助時(shí)鐘中斷服務(wù)程序不參與的數據,各任務(wù)對它的訪(fǎng)問(wèn)采用互斥信號量方式即可。
4 結束語(yǔ)
當前,基于輔助時(shí)鐘的通用定時(shí)器已在某無(wú)人機發(fā)射裝置中的強實(shí)時(shí)命令傳遞、通訊數據幀收發(fā)以及目標系統狀態(tài)監控方面得到了應用,滿(mǎn)足了毫秒級的單次和周期交叉定時(shí)要求,效果良好。該定時(shí)器機制對所用接口進(jìn)行了封裝,使其具有了較好的繼承性和擴展性,為今后此類(lèi)系統中的精確定時(shí)需求提供了方便。
評論