硬实时RTLinux?为Linux打实时preempt_rt补丁
给Linux配置RT-patch
开发环境为vm-ware创建的ubuntu 20.04虚拟机,4G内存,80G硬盘,4核处理器。
一、准备工作
1.内核与补丁下载:
下载与Linux系统相近版本的内核源码(Linux系统版本可通过 uname -r 命令获取)
内核下载网站:https://mirrors.edge.kernel.org/pub/linux/kernel/
下载与内核源码对应版本的补丁
补丁下载网站: https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/
2.将下载的内核源码与补丁解压文件到对应的文件夹
已经提前在 /usr/src 文件夹下创建文件夹 rtlinux
3.准备内核编译环境
下载相应的资源包(后续编译过程报错,就根据报错内容继续安装)
apt-get -y update
apt-get install patch
apt-get install build-essential make gcc libncurses-dev libssl-dev libc6-dev libelf-dev bison dwarves zstd flex
二、配置RTLinux
1.将patch 复制到linux内核目录下
2.进入内核源码目录,给linux内核配置RT patch:(打补丁)
3.执行make clean 在编译前清除一下环境并拷贝与当前内核版本匹配的config文件到内核源码目录,并命名为.config
4. 执行make menuconfig 进行图形化内核配置
① "General setup" -> "Preemption Model" -> 选择 "Fully Preemptible Kernel(Real-Time)"
②"Device Drivers" -> 去掉"Staging drivers"(按空格)
③"Processor type and features" -> "Timer frequency" -> 选择"1000Hz "
5.编辑.config文件
删除或注释.config文件中CONFIG_SYSTEM_TRUSTED_KEYS与CONFIG_SYSTEM_REVOCATION_KEYS的配置参数
6.编译RTLinux内核(-jn表示n线程编译,n根据分配的处理器数量)
make -j4
At least two hours later!
7.进行各种install(如果没出错,80%概率已成功)
make modules_install -j4
make install
update-grub
三、校验结果
cd /boot
ls
查看/boot 目录下是否有生成的rt核心, 应该生成对应版本的config、System.map、initrd.img、vmlinuz文件。
重启后查看内核版本:
reboot
uname -r
内核版本已更新为 rt 版本。
四、启动设置(未成功)
如果重启后直接开机,没有出现选择内核的页面,则在进入系统后,执行下面的命令:
sudo gedit /etc/default/grub
GRUB_TIMEOUT=10 %超时时间,单位s
GRUB_DEFAULT="1>2" %1代表默认启动内核,2代表所启动内核位于列表中第2个(序号从0开始)
然后更新grub
sudo update-grub
五、运行测试
1.安装rt_test
sudo apt-get install rt-tests
2.运行测试(4个线程,线程优先级80,以ns显示时间)
sudo cyclictest -t 4 -p 80 -N
测试结果含义:
T: 0 序号为0的线程
P: 80 线程优先级为80
I: 1000 时间间隔为1000微秒(us)
C: ~ 计数器。线程的时间间隔每达到一次,计数器加1
Min: 最小延时(us)
Act: 最近一次的延时(us)
Avg: 平均延时(us)
Max: 最大延时(us)
参考:
硬实时RTLinux安装配置详解 (一):准备工作_HowieXue的博客-CSDN博客_rtlinux
硬实时RTLinux安装配置详解 (二):编译运行RTLinux_HowieXue的博客-CSDN博客_rtlinux
更多推荐
所有评论(0)