新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于VxWorks下的多重定時器設計

        基于VxWorks下的多重定時器設計

        作者: 時間:2011-11-22 來源:網絡 收藏

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


        以上程序中通過sysClkRateSet(100)將最小延時單位tick修改成10 ms,它是幾個定時時間(30 ms、40 ms、60ms)的最大公約數。通過抓包軟件Ethereal抓包,查看發送時間。以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。但是如果時鐘頻率太高,會造成系統在時鐘中斷處理方面開銷太大,影響系統的任務調度,最好通過實驗選用較為合適的時鐘頻率。這里選用sysClkRate-Set(200)。


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


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 通海县| 永兴县| 柳江县| 吴江市| 秦皇岛市| 渭南市| 克什克腾旗| 霍州市| 江永县| 定远县| 教育| 辰溪县| 布尔津县| 漳浦县| 宁德市| 淄博市| 邵阳县| 山丹县| 油尖旺区| 若羌县| 海原县| 蒲江县| 夏津县| 鱼台县| 遂川县| 山东| 于田县| 济南市| 三江| 汕头市| 喀喇| 定陶县| 三原县| 南靖县| 咸阳市| 乌拉特前旗| 泸定县| 白银市| 西丰县| 闸北区| 安阳市|