linux之xenomai的安装配置

一. 准备工作

本文主要以使用xenomai3的dovetail作为样例,并且运行x86平台上,所以需要准备如下工作:

  1. 一台安装ubuntu20.04的x86工控机
  2. linux-dovetail-v5.15.y-dovetail
  3. xenomai-3.2

二. 配置内核

1. 进入到xenomai-3.2,在控制台中执行:

./scripts/bootstrap
./scripts/prepare-kernel.sh --arch=x86_64 --linux=<linux-dovetail-v5.15.y-dovetail的路径>

2. 进入到linux-dovetail-v5.15.y-dovetail文件夹,在控制台执行:

cp /boot/config-$(uname -r) .config
make menuconfig

 找到下面的选项,并执行相应的操作:

* General setup
​ 	--> Local version - append to kernel release: -xenomai(起个区分内核的名字)
        --> Timers subsystem
​ 		---> High Resolution Timer Support [*](默认)

​* Pocessor type and features
	​ --> Processor family
		​ ---> Core 2/newer Xeon (if “cat /proc/cpuinfo | grep family” 
                                returns 6, otherwise set as Generic otherwise)
         --> Multi-core scheduler support [](关闭)
         --> Enable Maximum number of SMP Processors and NUMA Nodes [](可选)


* Xenomai/cobalt
	​ --> Sizes and static limits
		​ ---> Number of registry slots  (512 --> 4096)
		​ ---> Size of system heap (Kb)  (4096 --> 4096)
		​ ---> Size of private heap (Kb) (256 --> 256)
		​ ---> Size of shared heap (Kb)  (256 --> 256)
		​ ---> Maximum number of POSIX timers per process (256 --> 512)
	​ --> Drivers
                ---> Real-time IPC drivers [*] (双击空格选定为*)(可选)
                        ---> RTIPC protocol family <M>(默认)
                            ---> XDDP cross-domain datagram protocol [*](默认)
                            ---> IDDP intra-domain datagram protocol [*](默认)
                            ---> Number of IDDP communication ports  (32) (默认)
                            ---> Buffer protocol [*](默认)
                            ---> Number of BUFP communication ports (32) (默认)
		​ ---> RTnet
			​ ---> RTnet, TCP/IP socket interface (Enable)
				​ ----> Drivers
					​ -----> New intel(R) PRO/1000 PCIe(Gigabit) [M](模块)
					​ -----> Realtek 8169(Gigabit) [M](模块)
					​ -----> Loopback [M](默认)
				​ ----> Add-Ons
					​ -----> Real-Time Capturing Support [M](模块)
	
* Power management and ACPI options
	​ --> CPU Frequency scaling
	​ 	---> CPU Frequency scaling [](关闭)
	​ --> ACPI (Advanced Configuration and Power Interface) Support
	​ 	---> Processor [](关闭)
	​ --> CPU Idle
		​ ---> CPU idle PM support [](关闭)

* Memory Management Options
	​ ---> Transparent Hugepage Support [](关闭)
	​ ---> Allow for memory compaction [](关闭)
	​ ---> Contiguous Memory Allocation [](关闭)
	 ---> Page Migration [](关闭)

​* Device Drivers
      --> Unisys visorbus driver [](关闭)  

除以上提到的配置外 , 下面这些选项配合内核参数也会对xenomai实时性进行增强:

  • CONFIG_NO_HZ_FULL = y、CONFIG_RCU_NOCB_CPU=y、RCU_KTHREAD_PRIO=0
  • CONFIG_MIGRATION=n、CONFIG_MCORE2=y[x86]、CONFIG_PREEMPT=y、ACPI_PROCESSOR =n[x86]、CONFIG_CPU_FREQ =n、CONFIG_CPU_IDLE =n

如果要安装IGH,建议同时关闭下面三个选项: 

Power management and ACPI options

         --> Suspend to RAM and standby [] (建议关闭)
         --> Hibernation (aka 'suspend to disk') [] (建议关闭)
         --> Device power management core functionality [] (建议关闭)

【注意】由于这几个选项会影响IGH网卡驱动的PM(电源管理),当系统自动挂起或者用户主动挂起系统时可能会导致IGH网卡驱动出问题甚至系统崩溃。

 三. 编译安装

3.1 编译内核

sudo make -j4 bzImage
sudo make modules

 3.2 安装模块

sudo make INSTALL_MOD_STRIP=1 modules_install

3.3 安装内核

sudo cp arch/x86_64/boot/bzImage /boot/vmlinuz-5.15.151-xenomai
sudo cp .config /boot/config-5.15.151-xenomai
sudo cp System.map /boot/System.map-5.15.151-xenomai
cd /lib/modules/5.15.151-xenomai
sudo update-initramfs -c -k 5.15.151-xenomai

3.4 配置grub

sudo vim /etc/default/grub

GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.151-xenomai"

GRUB_TIMEOUT=5

sudo update-grub

3.5 编译遇到的问题

1. canonical-certs.pem

  • 问题描述

make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'.  Stop.
make: *** [Makefile:1868: certs] Error 2

  •  解决问题
vim .config

 从.config文件找到如下两行:

  • CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
  • CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem"

并将其修改成:

  • CONFIG_SYSTEM_TRUSTED_KEYS=""
  • CONFIG_SYSTEM_REVOCATION_KEYS=""

四. 增强实时性

4.1 优化内核参数

sudo vim /etc/default/grub

 修改GRUB_CMDLINE_LINUX:

GRUB_CMDLINE_LINUX="audit=0 isolcpus=0 xenomai.supported_cpus=0x01 nohz_full=0 rcu_nocbs=0 irqaffinity=1,2,3 rcu_nocb_poll=1024 rcupdate.rcu_cpu_stall_suppress=1 acpi_irq_nobalance numa_balancing=disable cpufreq.off=1 nosmap nosmt  nohalt  noirqbalance hugepages=1024  i915.enable_rc6=0 i915.enable_dc=0 i915.disable_power_well=0  i915.enable_execlists=0  nmi_watchdog=0 nosoftlockup processor.max_cstate=0 intel.max_cstate=0 processor_idle.max_cstate=0 intel_idle.max_cstate=0 clocksource=tsc tsc=reliable nmi_watchdog=0 nosoftlockup intel_pstate=disable idle=poll mce=ignore_ce hpet=disable clocksource=tsc tsc=reliable nohz=off"

还有一些其他的内核参数也可以加上:

  • xenomai.smi_mask=1 xenomai.smi=detect

4.2 优化BIOS

BISO选项设置选项作用
Boot performance modeMax Non-turbo Performance可以使CPU运行在固定的始终频率下面,从而提供更稳定、更可预测的结果
Intel SpeedStepdisable是一个动态电源管理技术,也是一种节能技术,在禁用的情况下,CPU会按照最高频率和电压运行,避免CPU降频对实时性的影响
Intel Speed Shift Technologydisable是一种动态调整CPU频率和电压的技术,目的是提供更快的响应时间和更高的性能效率,可以根据负载的变化动态调整CPU频率和电压,对于实时性来说,开启后会引入更多不确定性
C-StatesdisableCPU节能技术,运行在CPU空闲或者低负载的情况下,降低功耗
Gfs RC6disable一种Intel的节能技术,可以降低图形核心的电源消耗,从而减少整个系统的功耗。如果在实时性操作中需要使用到图形,可以将这个功能禁用
GPU Frequency300MHZ是图形处理器的工作频率,在实时操作系统中,这个频率过高会影响系统响应时间的不确定性和抖动。
Intel VMXdisable虚拟化技术,对于实时系统来说关闭虚拟化配置可以避免资源抢占,从而优化实时系统的性能
VT-ddisable虚拟化技术,对于实时系统来说关闭虚拟化配置可以避免资源抢占,从而优化实时系统的性能
PCI Express Clock Gatingdisable关闭PCIe的时钟,降低系统开销
DMI Link ASPM Controldisable控制计算机主板上DMI电源的管理技术,达到节能降温效果
SATA Aggressive LPM Supportdisable一种SATA硬件设备电源管理技术,通过降低设备在空闲时的电源消耗,达到节能和降温的效果。为了保证SATA技术在实时任务中的活跃状态,我们将其关闭
ACPI Sleep StateSuspend Disabled一种电源管理技术,用于控制计算机在空闲时进入休眠状态,以节约电源和延长硬件寿命
Native ASPMdisable也是一种电源管理技术,这里也关闭,避免设备进入休眠状态
PCH Cross Throttlingdisable用于控制系统中多个设备共享PCIe根节点时的分配分配,当多个设备同时向根节点发送数据的时候,PCH Cross Throttling可以通过降低每个设备的带宽,来保证整体带宽的均衡分配,避免任何一个设备的带宽占用过度。
SA GVFixed High在Intel处理器中将System Agent的电压固定在一个高水平上,SA控制Intel处理器中的处理器内存、控制器和IO,设置为Fixed High有助于提升内存处理器的性能和稳定性,避免低压对实时性产生的影响
DVMT pre-Allocated64M用于在启动时为显存预先分配一定的内存空间,以提升显卡的性能和稳定性,如果配置的过高,会导致系统内存资源不足,从而导致实时任务拿到的内存资源不足,影响实时任务
Enable Hibernationdisable关闭休眠模式
USB Legacy Supportdisable关闭对旧USB系统的支持,如果实时任务中没有用到,则可以关闭来减少资源浪费
HD Audiodisable这是一个用于提供高质量的数字音频体验,如果实时任务中没有用到,则可以关闭减少带宽和处理器资源的浪费
ACPI D3Cold Supportdisable是一种将整个系统进入一种低功耗状态的技术,降低能源消耗和设备寿命
Low Power S0 idle Capabilitydisable也是一种低功耗的技术,直接关闭
Page Close idle Timeoutdisable是内核中用于节能的一种机制,当系统空闲时,关闭不使用的页面,从而节省能源并提高系统启动时的性能。这个机制需要定期扫描页面,关闭不使用的页面,所以会占用系统资源

五. 注意

Nvidia/Ati Drivers are NOT supported (creates a lot of interruptions that breaks the real-time constraints). Please consider removing the dedicated graphic card and use the integrated graphics (Intel HD graphics). 

有利于提高xenomai/PREEMPT-RT 实时性的一些配置建议

实时性优化的一些参数设置

  • 15
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值