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。分析以下場景:
此誤差分析正好符合測試結果±8μs。