前言:
在工業級的應用上,對於實時性的要求十分嚴格,就如我當前公司中,開發的是工業級機器人,
未收到同步幀,則認爲通信出現異常,於是將機器人停止。
所以實時線程的執行時間變得尤其嚴格,在打完實時補丁後,怎麼對實時性進行測試也成
爲重要的一環,本文就採用開源的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)