硬实时RTlinux系统配置

  • 4. 配置RTLinux
    • 4.1 配置Patch
    • 4.2 配置RTLinux内核
    • 4.3. 编译Rtlinux内核
    • 4.4 制作initramfs启动引导:
  • 5. 大功告成,启动运行RTlinux
  • 6. 测试RTLinux
    • 6.1 编译安装 RT-tests
    • 6.2 执行测试程序
  • 7. 深入探讨下RTLinux
    • 原理: RTLinux将内核变成完全抢占式
    • 所谓的实时调度策略
  • 博主热门文章推荐:


书接上篇: 硬实时RTLinux安装配置详解 (一):准备工作

4. 配置RTLinux

4.1 配置Patch

准备工作做完后,就开始配置RTLinux,
首先需要生成Patch,cd到usr/src/rt-preempt-linux/目录下:

  • 将patch 复制到linux内核目录下:cp patch-4.19.1-rt2.patch linux-4.19.1

然后进入内核源码目录:usr/src/rt-preempt-linux/linux-4.19.1

  • 给linux内核配置RT patch:(打Patch)
    patch -p1 < patch-4.19.1-rt2.patch

4.2 配置RTLinux内核

继续在usr/src/rt-preempt-linux/linux-4.19.1中,

  • 执行make mrproper 或make clean 在编译前清除一下环境
  • 拷贝/boot文件夹下与当前内核版本匹配的config文件到内核源码目录,并命名为.config:
  • 执行make menuconfig 图形化配置内核

弹出menu配置窗口:

进入到“General setup”

  • 在"Preemption Model"中选择“Fully Preemptible Kernel(Real-Time)”

  • 输入空格选择Fully Preemptible Kernel,

因为Linux内核采用标准Unix技术使得内核是不可抢占的,采用固定时间片调度,通过该设置使得内核能够实现完全抢占

  • 回到上一层,进入”Device Drivers”中,去掉“Staging drivers”

    输入N反选

  • General setup -> Timers subsystem,选中“High resolution timer
    support”,
    使用高精度Timer, 可以提高RTLinux实时性

  • “Processor type and features” ->“Timer frequency”选1000 HZ

    Linux默认Timer是100Hz,这里设置提升Timer为1000Hz (否则RTlinux实时性测试会很差)

  • 检测.config里如果有如下CONFIG_SYSTEM_TRUSTED_KEYS配置,需要注释掉,否则会连接证书校验报错
    通过gedit或mousepad,编辑.config文件:

4.3. 编译Rtlinux内核

  • 上面步骤完成后,在内核源码目录下,执行make编译内核

新版本Make同样也会进行make module
编译过程会比较费时,根据电脑性能不同大约需要1-3个小时左右。

  • 等待make结束


如果make过程报错,原因大多是依赖包安装不全,可以根据报错信息对依赖包进行安装)

  • make成功后,执行make install
  • 之后执行Make modules_install 安装各模块

4.4 制作initramfs启动引导:

还没算完,需要制作initramfs 才能引导RTlinux 内核启动
cd /boot ,在/boot目录下:

  • 执行mkinitramfs -k -o initrd.img-4.19.1-rt2 4.19.1-rt2

5. 大功告成,启动运行RTlinux

上述步骤全部正确完成后,重启会弹出选择4.19.1-rt2版本,既编译的RTlinux内核版本的硬实时linux操作系统(Grab已自动配置)


启动后,查看内核版本,既为RTlinux硬实时操作系统内核的linux :

  • uname -a

    同时查看boot config,确认目前这个内核已是实时内核配置
  • cat /boot/config-4.19.1-rt2 | grep CONFIG_PREEMPT_RT

接下来就可以在RTLinux上实现应用开发啦

6. 测试RTLinux

6.1 编译安装 RT-tests

使用RT-tests对RTLinux的实时性进行性能测试:

rt-tests包已经可以直接apt安装了:
apt-get install rt-tests


或者获取source 自己make:

apt-get source rt-tests

更改makefile prefix为安装目录

之后进行Make rt-test
(这一步如果报错numa.h:No such file,需要apt-get install libnuma-dev)

之后 make all即可

6.2 执行测试程序

安装完成后,通过cyclictest cmd开始测试:

cyclictest -t 5 -p 80 -n

  • 使用rt的内核:

  • 使用非rt的内核:

    上面图片跑在虚拟机上面的,所以实时性测试效果很差,但也能看出一些rt和非rt的实时性差距。

如果用真机测试,这些延时等参数会好很多,一般的AVG 在1-5us左右.

真机测试结果:

cyclictest cmd的参数介绍:

可参考Preempt_Test:
https://rt.wiki.kernel.org/index.php/Preemption_Test

git clone git://github.com/ghaskins/preempt-test.git

7. 深入探讨下RTLinux

原理: RTLinux将内核变成完全抢占式

主要通过:

  • 修改lock原语的实现,使得资源可以抢占
  • 修改使得被spinlock_t,
    rwlock_t等保护的临界区可以抢占,raw_spinlock_t, raw_rwlock_t等保留不能抢占的特性
  • 优先级继承priority inheritance的实现
  • 中断处理程序变成可被抢占的内核线程, 软中断被视为内核线程上下文, 就像用户空间的进程一样拥有一个task_struct。
  • 原本的linux定时器的API拥有了更高精度,使得用户空间POSIX timer也拥有了更高精度

RTLinux内核结构示意图:

所谓的实时调度策略

实时进程将得到优先调用,实时进程根据实时优先级决定调度权值,普通分时进程则通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,也就是曾经使用了cpu最少的进程将会得到优先调度。

实时任务按照可抢占优先级调度算法进行,就绪态的实时任务可以立即抢占非实时任务。

SCHED_FIFO:First Input First Output,优先级范围1-99(最大)
SCHED_FIFO一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃。

如果有相同优先级的实时进程(根据优先级计算的调度权值是一样的)已经准备好,FIFO时必须等待该进程主动放弃后才可以运行这个优先级相同的任务。
而RR可以让每个任务都执行一段时间。

可惜的是WindRiver 收购RTlinux后,很多资源都无法访问了,不过目前基本应用来说,已经足够了


博主热门文章推荐:

一篇读懂系列:

  • 一篇读懂无线充电技术(附方案选型及原理分析)
  • 一篇读懂:Android/iOS手机如何通过音频接口(耳机孔)与外设通信
  • 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

LoRa Mesh系列:

  • LoRa学习:LoRa关键参数(扩频因子,编码率,带宽)的设定及解释
  • LoRa学习:信道占用检测原理(CAD)
  • LoRa/FSK 无线频谱波形分析(频谱分析仪测试LoRa/FSK带宽、功率、频率误差等)

网络安全系列:

  • ATECC508A芯片开发笔记(一):初识加密芯片
  • SHA/HMAC/AES-CBC/CTR 算法执行效率及RAM消耗 测试结果
  • 常见加密/签名/哈希算法性能比较 (多平台 AES/DES, DH, ECDSA, RSA等)
  • AES加解密效率测试(纯软件AES128/256)–以嵌入式Cortex-M0与M3 平台为例

嵌入式开发系列:

  • 嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
  • IAR调试使用技巧汇总:数据断点、CallStack、设置堆栈、查看栈使用和栈深度、Memory、Set Next Statement等
  • Linux内核编译配置(Menuconfig)、制作文件系统 详细步骤
  • Android底层调用C代码(JNI实现)
  • 树莓派到手第一步:上电启动、安装中文字体、虚拟键盘、开启SSH等
  • Android/Linux设备有线&无线 双网共存(同时上内、外网)

AI / 机器学习系列:

  • AI: 机器学习必须懂的几个术语:Lable、Feature、Model…
  • AI:卷积神经网络CNN 解决过拟合的方法 (Overcome Overfitting)
  • AI: 什么是机器学习的数据清洗(Data Cleaning)
  • AI: 机器学习的模型是如何训练的?(在试错中学习)
  • 数据可视化:TensorboardX安装及使用(安装测试+实例演示)

硬实时RTLinux安装配置详解 (二):编译运行RTLinux相关推荐

  1. 硬实时RTLinux安装配置详解 (一):准备工作

    更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,一起学习探讨软硬件技术知识经验,关注就有海量学习资料免费领哦: 硬实时RTlinux系统配置 1. Linux内核下载 2. 下载与Linu ...

  2. 虚拟化工具Xen的安装配置详解

    上一篇介绍了虚拟化的基础知识:这里来介绍具体的虚拟化工具的配置使用: 一.Xen的安装配置详解: 1.配置yum源 http://mirrors.163.com/centos/6.5/xen4/x86 ...

  3. zabbix安装配置详解(一)

    zabbix安装配置详解(一) 一.nginx安装 1.必要软件准备: 为了支持rewrite功能,我们需要安装pcre: #yum install pcre-* 需要ssl的支持,如果不需要ssl支 ...

  4. lvs keepalived 安装配置详解【转】

    lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...

  5. redis cluster 集群 安装 配置 详解

    redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...

  6. Python3 环境搭建、pycharm安装配置详解、新建Python项目(新手小白版Windows系统)

    Python3 环境搭建 .pycharm安装配置详解 window系统上环境搭建: 一.环境搭建,下载Python (Python 3.8为例) 二.pycharm的下载与安装 window系统上环 ...

  7. 使用LVS实现负载均衡原理及安装配置详解

    使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均 ...

  8. SharePoint2007安装图文详解二:安装AD(活动目录)及DNS

    在上一篇SharePoint2007安装图文详解一:安装IIS及相关组件中已经介绍了IIS及相关组件的安装,本篇将详细介绍AD(活动目录)的安装. 打开"管理您的服务器",点击&q ...

  9. 深入分析redis cluster 集群安装配置详解

    Redis 集群是一个提供在多个Redis间节点间共享数据的程序集.redis3.0以前,只支持主从同步的,如果主的挂了,写入就成问题了.3.0出来后就可以很好帮我们解决这个问题. 目前redis 3 ...

最新文章

  1. hadoop大数据平台架构之DKhadoop详解
  2. 设计模式(Design Pattern)
  3. wxWidgets:wxSpinCtrlDouble类用法
  4. Properties作为Map集合的使用
  5. 93. Restore IP Addresses
  6. openfeign使用_Feign使用基于配置服务发现
  7. Linux系统编程——线程池
  8. 发卡源码php免签约,2021亲测响应式PHP个人自动发卡源码-AZ发卡网源码 对接免签约易支付...
  9. 开源GIS(二十)——CAD数据添加属性转GIS数据
  10. Entity Framework 4.1 CodeFirst实例
  11. basemap库安装教程
  12. html中title属性和alt属性的区别
  13. 微信防封域名处理 淘客类 检测域名是否被封
  14. 刚入职的程序员小白你该如何提升自己?(新手看)
  15. zabbix 官网提供的监控 postgresql 的模板
  16. 情人节撩妹装逼小方法,一学就会
  17. 嵌入式Linux之我行——C+CGI+Ajax在S3C244
  18. html 漂浮浏览器,HTML5浏览器嵌入窗口程序解决方案 | Hoverlees#39; Blog
  19. GSMA公布2018世界移动大会-上海的最新进展
  20. 楼氏硅麦SPH0641LM4H-1

热门文章

  1. SpringBoot banner图样
  2. 服务器物理内存如何卸载,win7电脑物理内存过高怎么清理
  3. 零基础入门金融风控之贷款违约预测挑战赛-task01
  4. 《机器学习实战:基于Scikit-Learn、Keras和TensorFlow第2版》-学习笔记(9):无监督学习技术
  5. Arch Linux折腾记
  6. 计算机网络 一种自上而下的方法,计算机网络-自上而下-和-自下而上-两种教学方法比较分析.pdf...
  7. 力扣(506.539)补8.22
  8. Android源码-高质量开发库
  9. Web前端开发之网站制作流程详细讲解
  10. 安卓手机软件开发_这款安卓神器,让你下片更轻松!千万别滥用