1. 程式人生 > >SylixOS定時器測試誤差分析

SylixOS定時器測試誤差分析

接收 下場 分享 小時 add 場景 情況 images 定時器

  • 測試模型
    1.1 測試流程
    技術分享圖片
    圖 1.1 運行流程
    如圖 1.1所示為測試代碼運行流程,通過GPIO拉高到拉低的時間來判斷定時器的精準度。
    1.2 測試方法
    1.2.1 測試模型
    利用ZYNQ內部私有定時器,設置定時時間250μs並綁定中斷。在中斷服務程序中拉高GPIO,下一次進入中斷服務程序時拉低GPIO並且發送二進制信號量。在應用程序中創建高優先級任務接收二進制信號量並且模擬負載,創建10個中優先級任務模擬負載,連接示波器測量時間。
    1.2.2 測試幹擾項
  • 其他不同優先級的中斷;
  • 其他負載程序;
  • 二進制信號量;
    1.3 測試結果
    程序運行時會產生如圖 1.2所示波形。
    技術分享圖片
    圖 1.2 正常波形
    使用示波器抓波功能,如圖 1.3圖 1.4所示抓取電平拉低與拉高的時間間隔,經過12小時抓取小於242μs的的波形未出現,經過12小時抓取大於258μs的波形未出現。
    技術分享圖片
    圖 1.3 抓取小於242μs波形
    技術分享圖片
    圖 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。
  • SylixOS定時器測試誤差分析