新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > VxWorks下的多重定時器設計

VxWorks下的多重定時器設計

作者: 時間:2009-12-28 來源:網絡 收藏

3.2 主要實現代碼
一個三重的主要實現代碼如下:


以上程序中通過sysClkRateSet(100)將最小延時單位tick修改成10 ms,它是幾個定時時間(30 ms、40 ms、60ms)的最大公約數。通過抓包軟件Ethereal抓包,查看發(fā)送時間。以30 ms為例,抓包100次的平均定時時間在25 ms左右。出現這種情況的原因是,延時N個tick實際是延時(N-1)tick~N?tick。由于是等可能概率,則它的數學期望是(N+1/2)。對于tick為10 ms,30 ms即N=3,數學期望為25 ms。示意圖如圖4所示。

延時精度為1/N秒,N越大越精確。于是調用函數synClkRateSet(500),可以使定時的最大誤差不超過2 ms。但是如果時鐘頻率太高,會造成系統(tǒng)在時鐘中斷處理方面開銷太大,影響系統(tǒng)的任務調度,最好通過實驗選用較為合適的時鐘頻率。這里選用sysClkRate-Set(200)。


結 語
本文針對下UDP網絡通信中的可靠傳輸問題,提出了一個支持重傳和定時等待確認的協(xié)議,并利用系統(tǒng)提供的信號量同步、消息隊列和看門狗等多種機制,綜合了一種可擴展的三重。針對遇到的具體問題,筆者還進行了一定的優(yōu)化處理。這種定時器模型已在筆者所研究的項目中得到利用,驗證了其可行性和相對穩(wěn)定性。這種定時器模型并不完全適合所有環(huán)境,需要根據具體情況改進和優(yōu)化。


上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉