系统:Ubuntu 20.04.2 LTS
内核版本:Linux 5.4.28
目标内核:linux-5.4.28-rt19
需要的Linux内核和补丁资源以及IGH主站都在以下链接中
链接:百度网盘 请输入提取码 提取码:5ciu
==注:以下资源最好都放在Download中
sudo apt-get install -y build-essential kernel-package libncurses5-dev
依赖安装选择一定要选择图示那一项
#创建rt_linux_build
mkdir rt_linux_build
#改变目录到rt_linux_build
cd ~/rt_linux_build
#复制linux-5.4.28.tar.gz到lrt_linux_build
cp ~/Downloads/linux-5.4.28.tar.gz ./
#复制patch-5.4.28-rt19.patch.gz到rt_linux_build
cp ~/Downloads/patch-5.4.28-rt19.patch.gz ./
#解压linux-5.4.28.tar.gz到rt_linux_build
tar zxvf linux-5.4.28.tar.gz
#解压patch-5.4.28-rt19.patch.gz到rt_linux_build
gzip -d patch-5.4.28-rt19.patch.gz
#复制patch-5.4.28-rt19.patch到linux-5.4.28
cp patch-5.4.28-rt19.patch ./linux-5.4.28
#到linux-5.4.28目录
cd linux-5.4.28
#打补丁
patch -p1 < patch-5.4.28-rt19.patch
sudo make menuconfig
配置内核的时候有可能报错,那是因为有些配置没有安装,执行下面指令之后,在执行配置内核指令就行了
sudo su
yum install bison
yum install flex
进入内核配置界面,配置如下
General setup —> Preemption Model —> Fully Preemptible Kernel(Real-Time)
Kernel hacking —> Memory Debugging —> Check for stack overflows not selected
第二步操作可能没有,如果没有第二步就不做配置
接下来就save 然后按ESC直到退出就行
CONCURRENCY_LEVEL=$(nproc) make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers
编译时间长短根据电脑性能而定。编译过程中容易遇到’debian/stamp/bulid/kernel' failed make:的问题,解决方法如下:
sudo gedit .config
找到下面内容修改为:
CONFIG_SYSTEM_TRUSTED_KEYS=""
然后安装OpenSSL开发包,运行下面指令
sudo apt-get install libssl-dev
接下来就静静等待编译通过就好
cd ..
sudo dpkg -i linux-headers-5.4.28-rt19_5.4.28-rt19-10.00.Custom_amd64.deb linux-image-5.4.28-rt19_5.4.28-rt19-10.00.Custom_amd64.deb
sudo update-grub
sudo reboot
开机之后查看内核版本:
uname -a
我的版本为Linux fje-Inspiron-7560 5.4.28-rt19,只要出现了5.4.28-rt19就表示配置成功
安装cyclictest实时测试软件
sudo apt-get install rt-tests
#查看cyclictest版本
cyclictest -version
#输入测试指令:
sudo cyclictest -t 5 -p 80 -s
测试指令可能会报错:FATAL: invalid cpu passed to numa_node_of_cpu(4),这表示软件版本低了,去官网下载最新版本就行,要是不想下载也可以不测试实时性,反正肯定是实时内核编译通过了
首先可以在主目录中创建一个IGH文件夹,将etherlabmaster-code-334.zip放入其中,解压,然后进入文件夹打开终端进行安装编译
sudo apt-get install autoconf autogen libtool
#生成configure脚本
./bootstrap
./configure --enable-cycles --enable-8139too=no
#编译
make -j$(nproc) all modules
#安装
sudo su
make modules_install install
depmod
ln -s /usr/local/etc/init.d/ethercat /etc/init.d/ethercat
mkdir /etc/sysconfig
cp /usr/local/etc/sysconfig/ethercat /etc/sysconfig/ethercat
修改ethercat设备权限
cd /etc/udev/rules.d
#新建一个ethercat的rule文件
sudo gedit 99-ethercat.rules
#向文件中添加下面内容
KERNEL=="EtherCAT[0-9]", MODE="0777"
sudo gedit /etc/security/limits.conf
#在该文件的最下方按照格式添加
hard rtprio 99
就像这样
#查找MAC地址
ifconfig
eth0 Link encap:以太网 硬件地址 00:0c:29:33:48:56
inet 地址:192.168.244.129 广播:192.168.244.255 掩码:255.255.255.0
inet6 地址: fe80::20c:29ff:fe33:4856/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:60 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:107 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:13255 (13.2 KB) 发送字节:15164 (15.1 KB)
lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 跃点数:1
接收数据包:130 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:130 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1
接收字节:8851 (8.8 KB) 发送字节:8851 (8.8 KB)
其中00:0c:29:33:48:56就是要查找的MAC地址
#修改/etc/sysconfig/ethercat的两处位置
MASTER0_DEVICE="00:0c:29:33:48:56"
DEVICE_MODULES="generic"
保存关闭
sudo depmod
#开启主站
sudo /etc/init.d/ethercat start
#显示主站状态
ethercat master
#显示从站设备
ethercat slaves
#关闭主站
sudo /etc/init.d/ethercat stop
具体测试结果如下,其中扫描到了4个从站