SylixOS定時器測試誤差分析

  • 測試模型
    1.1 測試流程
    SylixOS定時器測試誤差分析
    圖 1.1 運行流程
    如圖 1.1所示爲測試代碼運行流程,通過GPIO拉高到拉低的時間來判斷定時器的精準度。
    1.2 測試方法
    1.2.1 測試模型
    利用ZYNQ內部私有定時器,設置定時時間250μs並綁定中斷。在中斷服務程序中拉高GPIO,下一次進入中斷服務程序時拉低GPIO並且發送二進制信號量。在應用程序中創建高優先級任務接收二進制信號量並且模擬負載,創建10箇中優先級任務模擬負載,連接示波器測量時間。
    1.2.2 測試干擾項
  • 其他不同優先級的中斷;
  • 其他負載程序;
  • 二進制信號量;
    1.3 測試結果
    程序運行時會產生如圖 1.2所示波形。
    SylixOS定時器測試誤差分析
    圖 1.2 正常波形
    使用示波器抓波功能,如圖 1.3圖 1.4所示抓取電平拉低與拉高的時間間隔,經過12小時抓取小於242μs的的波形未出現,經過12小時抓取大於258μs的波形未出現。
    SylixOS定時器測試誤差分析
    圖 1.3 抓取小於242μs波形
    SylixOS定時器測試誤差分析
    圖 1.4 抓取大於258μs波形
    測試結果可以看到誤差範圍在242μs到258μs之間,所以誤差大小爲±8μs。
  • 誤差分析
    從程序運行流程來看,到達定時時間250μs後:
    ○1中斷產生;
    ○2響應中斷服務程序;
    ○3拉GPIO;
    (一) 如果到達250μs定時時間時,中斷產生之前發生系統關中斷,則中斷無法響應;SylixOS最大關中斷時間7μs;此時則可能產生誤差;
    (二) SylixOS中斷響應時間平均3.6μs,最小2.9μs,最大4.1μs。分析以下場景:
  • 第一次中斷產生之前發生系統關中斷情況,接着中斷以最慢4.1μs時間響應,拉低GPIO;第二次中斷產生前沒有發生系統關中斷情況,以最快2.9μs時間響應中斷拉高GPIO;這個場景時間會比正常時間少7μs+1μs左右;
  • 第一次中斷產生前沒有發生系統關中斷情況,接着以最快2.9μs時間響應中斷,拉低GPIO;第二次中斷產生之前發生系統關中斷情況並且以最慢4.1μs時間響應中斷拉高GPIO;這個場景時間會比正常時間多7μs+1μs左右;
    此誤差分析正好符合測試結果±8μs。
  • 發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章