标准的Linux内核只达到了软实时的要求,需要linux内核具有硬实时的功,通常情况下实时系统都是在嵌入式设备上跑,是针对那种复杂算法且实时性要求较高的底层控制使用,如果单片机能实现,当然更好,毕竟实际工程要考虑成本嘛!机器人的通讯频率1KHZ,在Ubuntu下控制机器人时需要响应速度低于1ms,否则机器人数据丢失,机器人可能会停止工作,因此需要安装实时内核
Ubuntu系统18.04
原内核4.15.2-20geneic
目标内核5.4.193-rt
igh版本1.5.2
失败多次总结:如果要装igh最新版本,linux3.* 4.*版内核不一定成功,应该要配套5.x。
igh版本决定rt版本,rt只要能装进Ubuntu就行,Ubuntu版本不重要。
我用的一套下载包Ubuntu+RT-Preempt+IGH安装整合包-Linux文档类资源-优快云文库。
看参考博文:再按我的总结
Ubuntu 20.04安装RT-PREEMPT实时内核补丁看他个锤子的博客-优快云博客ubuntu 实时补丁
<-备忘录-> preempt_rt安装 - 知乎 (zhihu.com)
两个桌面解压,移动patch到linux-5.4.193
mv linux-5.4.193 /usr/src
cd linux-5.4.193
sudo patch -p1 <patch-4.16.18-rt12.patch
sudo make mrproper
sudo cp /boot/config-4.15.0-45-generic .config
sudo apt-get install libncurses5-dev
sudo apt-get install bison
sudo apt-get install flex
sudo make menuconfig
Preemption Model (Voluntary Kernel Preemption(Desktop))
—[x] Fully Preemptible Kernel(RT)
Device Drivers
—[] staging drivers
sudo make -j8 #按照线程数,设置编译线程
sudo apt-get install rt-tests
sudo cyclictest -t 8 -p 80 -n
sudo make modules_install -j8
sudo make install
cd /boot
ls
sudo gedit /etc/default/grub
GRUB_TIMEOUT=2
#GRUB_HIDDEN_TIMEOUT_QUIET=true 显示倒计时
update-grub
重启电脑
esc 高级模式
uname -r
sudo cyclictest -t 8 -p 80 -n
Ethercat系列--IGH ethercat master在linux4.x环境下的编译安装_中华田园巨龙的博客-优快云博客
桌面解压
mv ethercat /usr/src
或
mkdir ec_igh
cd ec_igh
git clone https://gitlab.com/etherlab.org/ethercat.git
sudo apt install autoconf automake libtool net-tools
cd /usr/src/ethercat
sudo ./bootstrap
sudo ./configure --enable-cycles --enable-hrtimer --enable-8139too=no
sudo make
sudo make modules
sudo make install
sudo make modules_install
sudo depmod
sudo ln -fs /usr/local/etc/init.d/ethercat /etc/init.d/
sudo mkdir /etc/sysconfig
sudo ln -fs /usr/local/etc/sysconfig/ethercat /etc/sysconfig/
sudo -i
gedit /etc/sysconfig/ethercat
MASTER0_DEVICE=”00:0c:29:b4:aa:66” #注:此为ifconfig命令显示的网卡地址,安装时应该为自己的
DEVICE_MODULES=”generic” #注:设置网卡为默认generic,如果有问题请修改为其他
ethercat
sudo /etc/init.d/ethercat start
以前失败情况
执行make modules出现了如下报警
make[1]: 进入目录“/usr/src/linux-4.16.18” make[3]: * 没有规则可制作目标“/usr/src/ec_igh/ethercat/devices/generic.o”,由“/usr/src/ec_igh/ethercat/devices/ec_generic.o” 需求。 停止。 scripts/Makefile.build:583: recipe for target '/usr/src/ec_igh/ethercat/devices' failed make[2]: * [/usr/src/ec_igh/ethercat/devices] Error 2 Makefile:1561: recipe for target 'module/usr/src/ec_igh/ethercat' failed make[1]: * [module/usr/src/ec_igh/ethercat] Error 2 make[1]: 离开目录“/usr/src/linux-4.16.18” Makefile:933: recipe for target 'modules' failed make: * [modules] Error 2
版本不匹配
Ubuntu16 按博主的.deb安装,开机efi is no enable 不会