编译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)

你可能感兴趣的:(嵌入式,Linux内核)