新聞中心

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

        VxWorks下的多重定時器設計

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

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 缙云县| 阜宁县| 永年县| 修武县| 宁津县| 锡林浩特市| 衡南县| 武山县| 留坝县| 盐城市| 新泰市| 任丘市| 沧州市| 深州市| 盘锦市| 鹤岗市| 休宁县| 湘潭市| 青川县| 邵武市| 霍林郭勒市| 安庆市| 芜湖县| 手游| 莆田市| 宁海县| 沧源| 北海市| 孟州市| 天峻县| 江永县| 伊金霍洛旗| 临洮县| 漳平市| 大渡口区| 清苑县| 石狮市| 兴国县| 南华县| 昌江| 葫芦岛市|