博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ltp-ddt realtime_cpu_load涉及的cyclictest 交叉编译
阅读量:4677 次
发布时间:2019-06-09

本文共 2497 字,大约阅读时间需要 8 分钟。

Cyclictest 是 rt-tests 下的一个测试工具,也是rt-tests 下使用最广泛的测试工具,一般主要用来测试使用内核的延迟,从而判断内核的实时性。
 
1.下载源码
git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
一直没法连接上。
转而手动下载
https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/snapshot/rt-tests-1.3.tar.gz
解压:tar -zxvf rt-tests-1.3.tar.gz
 
2.交叉编译
make CROSS_COMPILE=arm-linux-gnueabihf-
 
error:
In file included from src/cyclictest/cyclictest.c:39:0:
src/cyclictest/rt_numa.h:29:10: fatal error: numa.h: No such file or directory
 
解决方案,安装依赖包:
apt-get install libnuma-dev export PATH=/opt/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin:$PATH make CROSS_COMPILE=arm-linux-gnueabihf- make install DESTDIR=. 一开始没有
export PATH=/opt/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin:$PATH
编译出来的结果在psoc上执行报./cyclictest: cannot execute binary file: Exec format error
后来找到原因,which arm-linux-gnueabihf-gcc
/opt/petalinux/tools/linux-i386/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-gcc
所以是i386的,当然无法执行。
make报错impossible constraint in 'asm'
src/queuelat/queuelat.c: In function ‘main_loop’:
src/queuelat/queuelat.c:269:8: error: impossible constraint in ‘asm’
        asm volatile("cpuid; rdtsc" : EAX_EDX_RET(val, low, high));
        ^~~
src/queuelat/queuelat.c:269:8: error: impossible constraint in ‘asm’
        asm volatile("cpuid; rdtsc" : EAX_EDX_RET(val, low, high));
        ^~~
经查发现是src/queuelat/queuelat.c 269行
asm volatile("cpuid; rdtsc" : EAX_EDX_RET(val, low, high));
cpuid; rdtsc是x86汇编,替换为“NOP” arm汇编就不会报错了。 目前先将这一行//注释掉
make CROSS_COMPILE=arm-linux-gnueabihf-还是用的cc vi Makefile VERSION = 1.3 CC?=$(CROSS_COMPILE)gcc AR?=$(CROSS_COMPILE)ar 将这两条#注释掉 然后在后面的目标中加入@echo $(OBJDIR)/%.o: %.c | $(OBJDIR)     @echo $(CC)     $(CC) -D VERSION=$(VERSION) -c $< $(CFLAGS) $(CPPFLAGS) -o $@ 打印出CC就是cc已经定义了。 CC C语言编译程序。默认命令是“cc”。 再来看?= 还有一个比较有用的操作符是“?=”,先看示例: FOO ?= bar 其含义是,如果FOO没有被定义过,那么变量FOO的值就是“bar”,如果FOO先前被定义过,那么这条语将什么也不做,其等价于: ifeq ($(origin FOO), undefined) FOO = bar endif 所以CC就是cc 于是将
 
 
VERSION = 1.3 CC?=$(CROSS_COMPILE)gcc AR?=$(CROSS_COMPILE)ar
改为
 
 
VERSION = 1.3 CC?=$(CROSS_COMPILE)gcc AR?=$(CROSS_COMPILE)ar
CC=/opt/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
AR=/opt/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar
export PATH=/opt/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin:$PATH make make install DESTDIR=.
另外发现一个问题,
run_cyclictest $latency -S -p98 -m -n -q -D 2m
有一个参数-n 
VERSION = 1.3中并没有这个参数 于是又下载了v1.0确实有-n

转载于:https://www.cnblogs.com/idyllcheung/p/10985973.html

你可能感兴趣的文章
【C++】const在不同位置修饰指针变量
查看>>
github新项目挂历模式
查看>>
编写jquery插件
查看>>
敏捷开发笔记
查看>>
神秘海域:顶级工作室“顽皮狗”成长史(下)
查看>>
C++指针、引用知多少?
查看>>
services 系统服务的启动、停止、卸载
查看>>
css实现背景图片模糊
查看>>
多线程如何确定线程数
查看>>
UGUI RectTransform
查看>>
学前班
查看>>
手把手教您扩展虚拟内存
查看>>
android-samples-mvp
查看>>
oracle 11g r2安装
查看>>
关于自关联1
查看>>
存储控制器、MMU、flash控制器介绍
查看>>
hdu-1814(2-sat)
查看>>
自我反省
查看>>
反射,得到Type引用的三种方式
查看>>
pl sql练习(2)
查看>>