前言:给Ubuntu添加Xenomai实时补丁是为了使igh ethercat 1.5.2主站获得更好的响应及实时性,虽然在这期间也遇到一些问题,但由于一些大佬以及相关文档的帮助下,整体还是没有遇到太大的问题,为此,我将自己的心得整理出来。

一、准备工作及系统环境

系统环境及内核版本:32位Ubuntu14.04.5、4.4.0
添加实时补丁的内核版本:3.14.44
实时补丁Xenomai版本:xenomai-2.6.5

二、软件及系统获取

(1) 获取Ubuntu14.04.5系统
下载网址:http://mirrors.163.com/ubuntu-releases/14.04/ubuntu-14.04.5-desktop-i386.iso

(2) 获取3.14.44版本的内核
下载网址:https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.44.tar.xz

(3) 获取实时补丁Xenomai
下载网址:http://git.xenomai.org/xenomai-2.6.git/

####三、操作步骤
(1) 配置并安装Xenomai实时补丁源码
① 解压xenomai-2.6.5.tar.bz2

tar -vxf xenomai-2.6.5.tar.bz2

② 进入xenomai源码

cd xenomai-2.6.5

③ 安装xenomai所需的软件依赖环境

sudo apt-get install devscripts devscripts debhelper dh-kpatches findutils autotools-dev autoconf automake libtool

④ 配置xenomai

–prefix xenomai的安装目录默认的是/usr/xenomai
–enable-debug 使能调试符号-g默认的是不使能
-enable-smp 使能xenomai库对SMP的支持 ,假如客户端的应用运行在支持SMP的内核上一定要使能。
–with-atomic-ops= 这个是个选择使用何种方式进行原子访问操作:假如–with-atomic-ops=builtins 则选择使用GCC的嵌入的部件,比如 _sync*()等函数;假如–with-atomic-ops=ad-hoc则选择使用xenomai方式实现。假如用户没有指定的话,编译的时候除非GCC是过时的,否则默认选择–with-atomic-ops=builtins
–enable-x86-sep 使能x86sep指令
–enable-x86-tsc 使能x86的tsc
–enable-arm-tsc 使能arm 的tsc,为了提高时钟精确度,一般选择使能
–enable-arm-quirks 使能一些arm片上系统特殊特性,目前支持sa1100和xscale3。

以上为所有可选的配置,我目前所使用的配置如下,其他的没进行测试。

./configure  --enable-x86-sep

⑤ 编译和安装

make
make install

(2) 修改3.14.44内核及打实时补丁
① 安装编译内核所需要的依赖文件

sudo apt-get install kernel-package libncurses-dev fakeroot zlib1g-dev

② 解压3.14.44内核源码包

xz -d linux-3.14.44.tar.xz
tar -vxf linux-3.14.44.tar

③ 进入内核目录

cd linux-3.14.44/

④ 给3.14.44内核打实时补丁

../xenomai-2.6.5/scripts/prepare-kernel.sh  --arch=amd64 --linux=. --adeos=../xenomai-2.6.5/ksrc/arch/x86/patches/ipipe-core-3.14.44-x86-12.patch

⑤ 将原先内核的配置拷贝到当前目录下并适当的修改

cp /boot/config-$(uname -r)  ./
sudo vim config-$(uname -r) 后将 CONFIG_CC_STACKPROTECTOR=y、CONFIG_CC_STACKPROTECTOR=y、CONFIG_CC_STACKPROTECTOR_REGULAR=y注释掉

⑥ 配置内核选项

make menuconfig

以下为我用的配置选项

* General setup--> Local version - append to kernel release: -xenomai-2.6.5--> Timers subsystem--> High Resolution Timer Support (Verify you have HRT ON)
* Real-time sub-system--> Xenomai (Enable)--> Nucleus (Enable)
* Power management and ACPI options--> Run-time PM core functionality (Disable)--> ACPI (Advanced Configuration and Power Interface) Support--> Processor (Disable)--> CPU Frequency scaling--> CPU Frequency scaling (Disable)--> CPU idle--> CPU idle PM support (Disable)
* Pocessor type and features--> Processor family--> Core 2/newer Xeon (if \"cat /proc/cpuinfo | grep family\" 返回值 6, 选择 Generic otherwise)--> SMT (Hyperthreading) scheduler support (Disable)--> Preemption Model--> Voluntary Kernel Preemption (Desktop)* Device Driver-->GPIO Support--> Intel EG20T PCH/LAPIS Semiconductor***(Disable)-->USB Support--> USB Gadget Support (Disable)-->stagging drivers--> Data Aquisation Support(comedi) (Disable)

⑦ 编译内核,大概需要2小时的时间

CONCURRENCY_LEVEL=$(nproc) make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers

⑧ 安装内核

cd ..
sudo dpkg -i linux-*.deb

(3) 配置GRUB内核引导
① 修改和添加grub配置

sudo vim /etc/default/grub 后 更改grub配置如下:
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.i915_enable_rc6=0 i915.powersave=0 noapic xeno_nucleus.xenomai_gid=1234 xenomai.allowed_group=1234"

② 更新grub配置

sudo update-grub

③ 重启

sudo reboot

备注:重启时选择带有实时内核补丁的内核进行启动Ubuntu系统,启动后可使用命令uname -r,即可看到Ubuntu已经加载了带有实时内核补丁的内核。


参考文章:https://github.com/ART-robot/ethercat_install#xenomai
参考文章:https://blog.csdn.net/allforyouz/article/details/78713453

Ethercat解析(三)之Ubuntu添加Xenomai实时内核补丁相关推荐

  1. linux内核4.0,新闻|Linux内核4.0功能:实时内核补丁,支持PS3

    Linux Torvalds 在Linux内核邮件列表里发布了Linux内核新的稳定版. Linux 4.0,代号为'Hurr durr I'm a sheep',带来了一小系列新硬件支持,驱动改进, ...

  2. Ubuntu18.04实时内核补丁(realtime kernel,Preempt_rt)的安装

    本人系统内核版本 Linux 5.4.0-72-generic,安装了个5.6.19的内核补丁 1.下载有Preempt支持的内核,我下载的是5.6.19版本的内核 下载地址为清华源,https:// ...

  3. 硬实时RTLinux?为Linux打实时preempt_rt补丁

    开发环境为vm-ware创建的ubuntu 20.04虚拟机,4G内存,80G硬盘,4核处理器. 一.准备工作 1.内核与补丁下载: 下载与Linux系统相近版本的内核源码(Linux系统版本可通过 ...

  4. Ethercat解析(四)之搭建RTAI实时内核(Ubuntu12.04)

    一.环境 系统:Ubuntu12.04 i386(请注意,amd64暂时不支持该实时内核) 实时补丁:linux-image-3.4-9-rtai-686-pae 二.获取 下载地址: http:// ...

  5. Ethercat解析(一)之获取、编译、安装(Ubuntu14.04)

    前言:EtherCAT(以太网控制自动化技术)是一个开放架构,以以太网为基础的现场总线系统,其名称的CAT为控制自动化技术(Control Automation Technology)字首的缩写.Et ...

  6. Ubuntu实时内核安装Igh主站安装配置

    一.准备工作 系统:Ubuntu 20.04.2 LTS 内核版本:Linux 5.4.28 目标内核:linux-5.4.28-rt19 需要的Linux内核和补丁资源以及IGH主站都在以下链接中 ...

  7. Ethercat解析(二)之获取、编译、安装(debian7)

    EtherCAT解析之 – -- 获取.编译.安装(debian7) 说明:EtherCAT(以太网控制自动化技术)是一个开放架构,以以太网为基础的现场总线系统,其名称的CAT为控制自动化技术(Con ...

  8. 学习:EtherCAT总线三种同步模式分析

    EtherCAT总线三种同步模式分析 一. 分布式时钟作用 使所有EtherCAT设备使用相同的系统时间,从而控制各设备任务的同步执行. 二. 名词解析 1. 现场总线高速数据传递:即主站周期的向从站 ...

  9. UBUNTU添加开机自动启动程序方法

    UBUNTU添加开机自动启动程序方法 1. 开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init.init根据配置 文件继续引导过程,启动其它进程.通常情 ...

最新文章

  1. 转发:某些函数需要将其一个或多个实参连同类型不变地转发给其他函数
  2. mac  安装brew时报错的问题及解决方式
  3. SQL盲注工具BBQSQL
  4. 通过源码分析MyBatis的缓存
  5. nginx php默认首页,iis、apache、nginx设置默认首页index.html方法图解 电脑维修技术网...
  6. SpringSecurity使用自定义认证页面
  7. 全备份失败后,如何手工清除exchange日志文件,附微软KB
  8. 图像特征提取与描述_角点特征02:SIFT算法+SURF算法
  9. Linux学习之旅(二)Linux文档操作
  10. python自动搜索最佳超参数之GridSearchCV函数
  11. unhandled exception in MSDEV.EXE(DEVSHL.DLL) :0xC0000005
  12. JDK1.8 使用 ODBC 连接数据库的方法
  13. 需求分析模板_如何进行培训需求分析?
  14. HTML页面布局适配不同分辨率
  15. node启动服务报错Error: listen EADDRNOTAVAIL 192.168.1.137:8023
  16. 中奖率的三种常用算法
  17. 本地部署iOS应用OTA安装 Go + Goland详细实现步骤
  18. 6.OSI七层模型及交换机工作原理及VLAN(虚拟局域网)及VTP(vlan同步技术)
  19. gcc -shared -o libJava.so Java.o ./libdemo.a
  20. Java后端Cookie工具类(设置Cookie有效时间、得到Cookie的域名等方法)

热门文章

  1. element 怎么把数据写到日历表上_数据集 | 地理空间数据云30m的DEM爬取
  2. NOIP2018最终成绩(一等奖名单)
  3. 临时生成oracle快照,oracle 11g dataguard 使用快照实现临时读写
  4. linux内核那些事之 VMA Gap
  5. Ubuntu 在终端下使用命令行打开pdf文件
  6. tf.assign() 更新ref通过给它重新赋值
  7. [有限元] Ansys Workbench 实现 Edge 的分段 Pressure 的方法:SpaceClaim 中使用分割面
  8. [工程测量]工程测量个人期中复习笔记
  9. TCP,UDP学习总结
  10. python中除法 / 和// 区别 以及np.divide,np.true_divide,np.floor_divide方法区别