LinuCNC与EtherCAT学习笔记(4)——基于Xenomai3.1的IgH EtherCAT Master安装

 系列文章目录

第一章 LinuxCNC与EtherCAT

第二章 安装LinuxCNC

 第三章 IgH EtherCAT Master安装


目录

 系列文章目录

前言

一、准备工作

1、文件下载

2、依赖下载

3、解压文件

二、内核编辑

1、导入内核

2、配置内核

3、编译内核映像、模组

        3.1、错误1:没有规则可制作目标“../../certs/debian-uefi-certs.pem

三、安装内核

四、允许非root用户

五、配置GRUB

 六、安装库

七、更新环境变量

八、测试

 九、安装IgH

总结

参考链接


前言

        由于需求变更,转为使用Xenomai实时内核配合IgH EtherCAT Master进行工作。下面将记录自己的安装过程。


一、准备工作

1、文件下载

        需要下载3个文件,分别是Linux内核源码、Xenomai 3.1源码和ipipe-core补丁。

        笔者原安装系统LinuxCNC官网镜像,其内核如下,为配合Xenomai,笔者选择更换内核,更换为linux-4.19.196。小版本之间的差别对于Xenomai影响未知,欢迎各位讨论。

Linux debian 4.19.0-17-rt-amd64 #1 SMP PREEMPT RT Debian 4.19.194-2 (2021-06-21) x86_64 GNU/Linux

        Linux内核下载地址:Index of /kernel/linux/kernel/v4.x/

        Xenomai 3.1 源码下载地址:Index of /downloads/xenomai/stable

        ipipe补丁下载地址:Index of /downloads/ipipe/v4.x/x86

        笔者这里选择linux-4.19.196.tar.gzxenomai-3.1.tar.bz2ipipe-core-4.19.196-cip53-x86-19.patch

2、依赖下载

sudo apt-get install gcc git libncurses5-dev make flex bison libssl-dev libelf-dev automake

3、解压文件

        如果是默认下载目录,进入/home/用户名/下载(或Downloads),解压前面下载的两个压缩包。

tar -xvf linux-4.19.196.tar.gz
tar -xvf xenomai-3.1.tar.bz2

         解压后文件保存到指定文件夹

sudo mkdir ~/xenomai
sudo cp -r linux-4.19.196 ~/xenomai
sudo cp -r xenomai-3.1 ~/xenomai

二、内核编辑

1、导入内核

        将xenomai导入待编译的内核中

cd ~/xenomai/linux-4.19.196
../xenomai-3.1/scripts/prepare-kernel.sh --linux=~/xenomai/linux-4.19.196 --arch=x86_64 --ipipe=ipipe-core-4.9.196-cip53-x86-19.patch

2、配置内核

sudo make menuconfig

        内核配置参考如下

* General setup
​     --> Local version - append to kernel release: -xenomai-3.1(起个区分内核的名字)
    --> 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 [](关闭)
 
 
* 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
        ​ ---> 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 [](关闭)
 

3、编译内核映像、模组

sudo make -j4 bzImage
sudo make modules
sudo make INSTALL_MOD_STRIP=1 modules_install

        3.1、错误1:没有规则可制作目标“../../certs/debian-uefi-certs.pem

        在编译过程中,我遇到的错误为:

“………没有规则可制作目标“../../certs/debian-uefi-certs.pem”,由“certs/x509_certificate_list” 需求……”

         解决方法为:

sudo vim .config

         输入

/CONFIG_SYSTEM_TRUSTED_KEYS

 设置CONFIG_SYSTEM_TRUSTED_KEYS=""


三、安装内核

        写到这里时,笔者已经有点弄混了安装内核和上面编译内核的一些步骤,如有遗漏错误,敬请谅解。其中有一段过程是需要进行2小时的。

        将内核编译源码路径(~/xenomai/linux-4.19.196)下的.config文件拷贝到/boot路径下,并重命名,其尾缀为第5步中“Local version”设置的内核名字(xenomai-3.1):

sudo cp ~/xenomai/linux-4.19.196/.config /boot
sudo mv /boot/.config /boot/config-xenomai-3.1

        将内核编译源码中的bzImage拷贝被到/boot下并重命名,尾缀同上: 

sudo cp ~/xenomai/linux-4.19.196/arch/x86_64/boot/bzImage /boot
sudo mv /boot/bzImage /boot/vmlinux-4.19.196-xenomai

        将内核编译源码中的System.map拷贝被到/boot下并重命名,尾缀同上:

sudo cp ~/xenomai/linux-4.19.196/System.map /boot
sudo mv /boot/System.map /boot/System.map-4.19.196-xenomai

        生成/boot/initrd.img-5.10.76-xenomai文件:

cd /lib/modules/4.19.196-xenomai-3.1
sudo update-initramfs -c -k 4.19.196-xenomai-3.1

四、允许非root用户

sudo addgroup xenomai --gid 1234
sudo addgroup root xenomai
sudo usermod -a -G xenomai $USER

五、配置GRUB

sudo gedit  /etc/default/grub

        具体配置如下

GRUB_DEFAULT="Advanced options for Debian>Debian, with Linux 4.19.196-xenomai"

GRUB_TIMEOUT=10

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash xenomai.allowed_group=1234"

        更新grub

sudo update-grub
sudo update-grub2

         重启电脑查看版本号

uname -a
dmesg | grep -i xenomai

六、安装库

        前面下载的xenomai源码并没有configure脚本和makefile,需要手动生成,在~/xenomai/xenomai-3.1 目录中使用 ./scripts/bootstrap命令。然后使用下面命令进行配置

cd ~/xenomai/xenomai-3.1
sudo ./scripts/bootstrap
sudo ./configure --with-pic --with-core=cobalt --enable-smp --disable-tls --enable-dlopen-libs --disable-clock-monotonic-raw
sudo make -j4
sudo make install

         配置中的参数解释:位置无关代码、使用cobalt微内核、对称多处理、线程本地存储、动态加载基于Xenomai的库、使用单调递增时间来计时。


七、更新环境变量

        笔者用的是zsh,因此最后两句指令是zshrc

echo '
### Xenomai
export XENOMAI_ROOT_DIR=/usr/xenomai
export XENOMAI_PATH=/usr/xenomai
export PATH=$PATH:$XENOMAI_PATH/bin:$XENOMAI_PATH/sbin
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$XENOMAI_PATH/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$XENOMAI_PATH/lib
export OROCOS_TARGET=xenomai
' >> ~/.xenomai_rc

echo 'source ~/.xenomai_rc' >> ~/.bashrc
source ~/.bashrc

        追加权限

sudo chmod -R 777 /dev/rtdm/memdev-private
sudo chmod -R 777 /dev/rtdm/memdev-shared

八、测试

sudo /usr/xenomai/bin/latency

测试会出现last_best为负的情况,可以用以下办法修复

sudo -s
echo 0>/proc/xenomai/latency
sudo /usr/xenomai/bin/latency

        运行一段时间后,记录下“last_best”的值,令“修改值”=这个值*1000

echo 修改值>/proc/xenomai/latency 

九、安装IgH

        可以参考笔者的另一篇安装IgH的文章

1、下载Igh EtherCAT master

git clone https://gitlab.com/etherlab.org/ethercat.git
cd ~
sudo cp -r ethercat ~/xenomai
cd ~/xenomai/ethercat

 2、编译

sudo ./bootstrap
sudo ./configure --with-module-dir=/lib/modules/4.19.196-xenomai-3.1 --enable-generic --enable-8139too=no --enable-cycles --enable-hrtimer --with-xenomai-dir=/usr/xenomai --prefix=/opt/etherlab
sudo make  #编译
sudo make modules  #编译模块
sudo make install  #安装
sudo make modules_install  #安装模块

3、配置

sudo mkdir /etc/sysconfig  #创建文件夹
sudo cp /opt/etherlab/etc/sysconfig/ethercat /etc/sysconfig/  #复制配置文件
sudo cp /opt/etherlab/etc/init.d/ethercat /etc/init.d/  #复制启动脚本
sudo chmod a+x /etc/init.d/ethercat
sudo update-rc.d ethercat defaults

        使能ethercat工具

sudo ln -s /opt/etherlab/bin/ethercat /usr/local/bin/ethercat

        配置用户权限

sudo gedit /etc/udev/rules.d/99-EtherCAT.rules

        输入下列内容  KERNEL=="EtherCAT[0-9]*", MODE="0664", GROUP="users" 

        把相关模块放进系统目录,如果使用通用网卡是这样的

sudo cp devices/ec_generic.ko /lib/modules/$(uname -r)
sudo cp master/ec_master.ko /lib/modules/$(uname -r)

        专用网卡参考该文Ubuntu18.04/20.04编译Linux5.10.76+Xenomai-3.2.1+IgH_看他个锤子的博客

        执行命令

sudo depmod

        查询网卡

sudo apt-get install net-tools
ifconfig

        配置网卡,修改这两个文件

sudo gedit /etc/sysconfig/ethercat
sudo gedit /opt/etherlab/etc/sysconfig/ethercat

        修改这两项

MASTER0_DEVICE=" ifconfig查询到的"
DEVICE_MODULES="generic "

4、启动主站

sudo /etc/init.d/ethercat start

        如果主站启动则安装成功

5、目前遇到问题

        每次重新启动电脑后,启动ethercat主站,都需要先用如下命令

sudo insmod /lib/modules/4.19.252-xenomai/ethercat/master/ec_master.ko

        然后才能使用/etc/init.d/ethercat start命令启动主站。

        而且/dev缺少了EtherCAT0的设备描述符,导致命令行工具指令失效。


总结

        安装过程中有许多问题,缺少记录,有遇到问题欢迎讨论。


参考链接

Ubuntu18.04/20.04编译Linux5.10.76+Xenomai-3.2.1+IgH_看他个锤子的博客-CSDN博客_igh xenomai叙述了Linux-5.10.76+Xenomai-v3.2.1+IgH的安装过程,根据参考资料,编译的源码可以在ubuntu20.04上使用。https://blog.csdn.net/qq_28882933/article/details/123626659?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166523635216782414930069%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=166523635216782414930069&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~times_rank-6-123626659-null-null.142%5Ev52%5Econtrol,201%5Ev3%5Econtrol_1&utm_term=Xenomai3%E3%80%821&spm=1018.2226.3001.4187

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值