1. 程式人生 > >編譯RT-tests進行Linux實時性測試

編譯RT-tests進行Linux實時性測試

前言:

    在工業級的應用上,對於實時性的要求十分嚴格,就如我當前公司中,開發的是工業級機器人,
未收到同步幀,則認為通訊出現異常,於是將機器人停止。
   所以實時執行緒的執行時間變得尤其嚴格,在打完實時補丁後,怎麼對實時性進行測試也成
為重要的一環,本文就採用開源的RT-tests來對系統的實時性進行測試。

關鍵字:

RT-testsRT-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)