硬实时RTLinux安装配置详解 (二):编译运行RTLinux
硬实时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相关推荐
- 硬实时RTLinux安装配置详解 (一):准备工作
更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,一起学习探讨软硬件技术知识经验,关注就有海量学习资料免费领哦: 硬实时RTlinux系统配置 1. Linux内核下载 2. 下载与Linu ...
- 虚拟化工具Xen的安装配置详解
上一篇介绍了虚拟化的基础知识:这里来介绍具体的虚拟化工具的配置使用: 一.Xen的安装配置详解: 1.配置yum源 http://mirrors.163.com/centos/6.5/xen4/x86 ...
- zabbix安装配置详解(一)
zabbix安装配置详解(一) 一.nginx安装 1.必要软件准备: 为了支持rewrite功能,我们需要安装pcre: #yum install pcre-* 需要ssl的支持,如果不需要ssl支 ...
- lvs keepalived 安装配置详解【转】
lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...
- redis cluster 集群 安装 配置 详解
redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...
- Python3 环境搭建、pycharm安装配置详解、新建Python项目(新手小白版Windows系统)
Python3 环境搭建 .pycharm安装配置详解 window系统上环境搭建: 一.环境搭建,下载Python (Python 3.8为例) 二.pycharm的下载与安装 window系统上环 ...
- 使用LVS实现负载均衡原理及安装配置详解
使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均 ...
- SharePoint2007安装图文详解二:安装AD(活动目录)及DNS
在上一篇SharePoint2007安装图文详解一:安装IIS及相关组件中已经介绍了IIS及相关组件的安装,本篇将详细介绍AD(活动目录)的安装. 打开"管理您的服务器",点击&q ...
- 深入分析redis cluster 集群安装配置详解
Redis 集群是一个提供在多个Redis间节点间共享数据的程序集.redis3.0以前,只支持主从同步的,如果主的挂了,写入就成问题了.3.0出来后就可以很好帮我们解决这个问题. 目前redis 3 ...
最新文章
- hadoop大数据平台架构之DKhadoop详解
- 设计模式(Design Pattern)
- wxWidgets:wxSpinCtrlDouble类用法
- Properties作为Map集合的使用
- 93. Restore IP Addresses
- openfeign使用_Feign使用基于配置服务发现
- Linux系统编程——线程池
- 发卡源码php免签约,2021亲测响应式PHP个人自动发卡源码-AZ发卡网源码 对接免签约易支付...
- 开源GIS(二十)——CAD数据添加属性转GIS数据
- Entity Framework 4.1 CodeFirst实例
- basemap库安装教程
- html中title属性和alt属性的区别
- 微信防封域名处理 淘客类 检测域名是否被封
- 刚入职的程序员小白你该如何提升自己?(新手看)
- zabbix 官网提供的监控 postgresql 的模板
- 情人节撩妹装逼小方法,一学就会
- 嵌入式Linux之我行——C+CGI+Ajax在S3C244
- html 漂浮浏览器,HTML5浏览器嵌入窗口程序解决方案 | Hoverlees#39; Blog
- GSMA公布2018世界移动大会-上海的最新进展
- 楼氏硅麦SPH0641LM4H-1
热门文章
- SpringBoot banner图样
- 服务器物理内存如何卸载,win7电脑物理内存过高怎么清理
- 零基础入门金融风控之贷款违约预测挑战赛-task01
- 《机器学习实战:基于Scikit-Learn、Keras和TensorFlow第2版》-学习笔记(9):无监督学习技术
- Arch Linux折腾记
- 计算机网络 一种自上而下的方法,计算机网络-自上而下-和-自下而上-两种教学方法比较分析.pdf...
- 力扣(506.539)补8.22
- Android源码-高质量开发库
- Web前端开发之网站制作流程详细讲解
- 安卓手机软件开发_这款安卓神器,让你下片更轻松!千万别滥用