編譯RT-tests進行Linux實時性測試
阿新 • • 發佈:2018-12-07
前言:
在工業級的應用上,對於實時性的要求十分嚴格,就如我當前公司中,開發的是工業級機器人,
未收到同步幀,則認為通訊出現異常,於是將機器人停止。
所以實時執行緒的執行時間變得尤其嚴格,在打完實時補丁後,怎麼對實時性進行測試也成
為重要的一環,本文就採用開源的RT-tests來對系統的實時性進行測試。
關鍵字:
RT-tests 、RT-Linux
交叉編譯cyclictest(ARM平臺)
a) 下載rt_tests原始碼 git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git 切換分支: git checkout origin/stable/v1.0 b) 交叉編譯 修改Makefile中的編譯器 CC = arm-none-linux-gnueabi-gcc AR = arm-none-linux-gnueabi-ar 執行make指令 報錯: src/cyclictest/rt_numa.h:29:18: fatal error: numa.h: 沒有那個檔案或目錄 解決: 1)安裝apt-file 來找到依賴庫 apt-get install apt-file apt-file update #更新源 2)尋找 numa.h apt-file install numa.h 3) 安裝相應的庫 apt-get install libnuma-dev
交叉編譯cyclictest (i686平臺)
a) 下載rt_tests原始碼 git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git 切換分支: git checkout origin/stable/v1.0 b) 交叉編譯 修改Makefile中的編譯器 CC = gcc AR = ar CFLAGE 加上 -m32 執行make指令 c) 報錯找到不-lnuma lib 1,下載libnuma_dev ia86板的deb包 2,解壓出來,找到libnuma.a,複製到/rt-test/numa_ia86目錄下 3,修改Makefile LDFLAGS += -L../numa_ia86/ 4,編譯並通過
執行cyclictest程式進行實時性測試:
sudo cyclictest -t 5 -p 80 -n
註釋: 執行五個執行緒,執行緒優先順序為80,無限迴圈
cyclictest執行結果詳解
T: 0 序號為0的執行緒
P: 0 執行緒優先順序為0
C: 9397 計數器。執行緒的時間間隔每達到一次,計數器加1
I: 1000 時間間隔為1000微秒(us)
Min: 最小延時(us)
Act: 最近一次的延時(us)
Avg:平均延時(us)
Max: 最大延時(us)