rtlinux linux实时补丁,(九)RTLinux补丁以及cyclictest

RT-Preempt Patch是在Linux社区kernel的基础上,加上相关的补丁,以使得Linux满足硬实时的需求。

一、向内核打RT-Linux补丁

1、下载内核补丁包

下载与自己内核相应的补丁包,以下是下载网址:https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/

这里有各种内核版本的补丁包。

bb033ec4260c61b98b5e385fafebf271.png

我用的内核版本是4.6.0的,因此找到4.6的目录下找对应的版本

af09a536f74a69de4952799f0774aec1.png

哎?这里还没有,older里面看看,果然这才是4.6最全的。选择一个下载。

cc05f684f1e4fd2b725728640bb4af0c.png

2、打补丁

将补丁包解压到源码目录下

75253267b427ca25e26128dc43ce18ac.png

打开终端,输入以下命令打入补丁:

xzcat ../patch-4.6-rt19.patch.xz | patch -p1

或者

patch -p(n) < [补丁包路径]patch_name

n=0时,从当前目录查找文件(夹)(直接使用补丁文件里指定的路径)

n=1时,忽略掉第一层目录,从当前目录查找(去掉补丁文件指定路径最左的第一个斜杠及前面的所有内容)

校验

编译内核后,上电启动系统,uname -a命令查看 有 RT 字样内核替换成功

打出补丁

patch -p1 -R < ../patch_name

二、编译RT-test进行Linux实时性测试(cortex9,arm7)

1、下载

git clone git:// git.kernel.org / pub / scm / utils / rt-tests / rt-tests.git

cd rt-tests

git checkout stable / v1.0

2、安装库

直接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

3、编译arm平台的cyclictest

直接make的话编译出的二进制文件是x86_64的,在zynq7平台将无法执行。在网上也看别人博客说修改makefile文件中的编译器选项,我修改之后编译的仍然是x86_64的。无奈之下,只得将cyclictest源文件拿出来单独编译。

4、在yocto下用poky_sdk,autotool编译

4.1 新建文件夹cyclictest

4.2 在上面下载的rt-tests中找到以下文件,复制到cyclictest文件夹下。

915f2605158c244f04f48378b3deef44.png

4.3 创建空的README文件,这是GNU编码标准所要求的:

touch README

4.4 使用autoscan生成一个configure.scan辅助编写configure.ac

3e823b773747cb697779083e6e70dce0.png

4.5 创建configure.ac文件

AC_INIT(cyclictest, 2.69)

AM_INIT_AUTOMAKE

AC_CONFIG_HEADERS(config.h)

AM_PROG_CC_C_O

AC_PROG_INSTALL

AC_OUTPUT([Makefile])

2.69 就是从4.4步骤得来的。

4.6 创建Makefile.am文件

bin_PROGRAMS = cyclictest

cyclictest_SOURCES = cyclictest.c error.c rt-utils.c rt-sched.c

4.7 修改cyclictest.c,rt-utils.c文件

在头文件声明前增加       #define _GNU_SOURCE   #define __USE_GNU

因为要使用GNU的编译器,但是在编译的时候却发现一直报错,找不到features.h里面的定义,因此需手动在头文件声明之前加上以上内容。

5、获取跨工具链环境设置文件

source /home/jf-yt/poky_sdk/environment-setup-cortexa9hf-neon-poky-linux-gnueabi

6、创建configure脚本: 使用该autoreconf命令生成configure脚本。

autoreconf

该autoreconf工具将正在运行的其他自动工具,如护理 aclocal, autoconf和 automake。

注意:

如果出现错误的 configure.ac,它 autoreconf运行时,指示丢失的文件,使用“-i”选项,从而确保丢失的辅助文件复制到构建主机。

7、交叉编译项目:此命令使用交叉编译器编译项目。该 CONFIGURE_FLAGS 环境变量为GNU配置的最小参数:

$ ./configure $ {CONFIGURE_FLAGS}

8、修改Makefile文件

在CC = ....加入 -lpthread -lrt,分别链接线程库和rt库。

3b0b96dd6dead55170650c8de3f1636d.png

9、编译

make

10、验证二进制文件,运行该命令将打印可以运行二进制文件的体系结构。此体系结构应与已安装的跨工具链支持的体系结构相同。

$ file ./cyclictest

输出如下

./cyclictest: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=c5d2416a3e22086474128ba1377e142b542a5353, not stripped

果然是ARM架构的,基本可以用了。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值