EtherCAT IGH 的下载和编译

EtherCAT IGH 的下载和编译

1、源码下载地址说明

EtherCAT 官方下载网站

EtherCAT 官方git下载网站

2、编译前一点小说明:

  • 刚学习的时候,看到很多人说在看 EtherCAT IGH 的文档的时候说 EtherCAT IGH 只支持 2.6 和 3.x 的内核。这句话在 《EtherCAT IGH 1.52.pdf》中的 <1.1 Feature Summary> 提到了这么一句话 Designed as a kernel module for Linux 2.6 / 3.x,但是不知道是不是一直没有更新过来,还是有一些其他的原因,这句话应该是有问题的。经过测试其实是没有这个限制的,我现在在 Ubuntu 22.04, 内核版本为 5.15.0的系统上面都编译安装成功了。

  • 目前(2022.10.18)最新的EtherCAT 版本应该是 v1.5.2 。当内核的版本超过 4.15.x的时候,编译会出错。因为从4.15开始内核timer使用方式更改[1]。这个后面在常见的编译错误中还会提到。

3、编译和安装

其实在下载的源代码中的根目录中有一个文件 INSTALL,这个文件讲的就是如何安装 EtherCAT IGH。

3.1 编译配置

前面的一些操作会因为下载的源代码来源不一样有一些区别。

  • 下载的压缩包
tar -xjf ethercat-1.5.2.tar.bz2
cd ethercat-1.5.2
  • 下载的git repo
cd ethercat
# 这个是用来生成配置文件的
./bootstrap 

后面的操作基本就是一样的了。

注意:这里的配置每个人都可以设置的不一样,而在EtherCAT IGH 也提供了很多的编译选项供用户选择。

./configure --enable-8139too=no 

3.2 安装

make all modules
sudo make modules_install install
sudo depmod

或者

make
make modules
sudo make install
sudo make modules_install
sudo depmod

3.3 配置主站

1、安装完成后,会在/opt/目录下生成一个etherlab/文件夹,让看一下这个文件夹内有些什么,发现包含一些库文件和配置文件等。

@:~$ cd /opt/etherlab/
@:/opt/etherlab$ ls
bin  etc  include  lib  sbin

2、配置网络设备信息


cd /etc
sudo mkdir sysconfig
sudo cp /opt/etherlab/etc/sysconfig/ethercat /etc/sysconfig
sudo cp /opt/etherlab/etc/init.d/ethercat /etc/init.d
sudo cp /opt/etherlab/etc/ethercat.conf /etc

使用ifconfig命令获取到网卡的mac地址。

@:~$ ifconfig
enp2s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 98:23:a6:89:57:de 

从上面的可以看到网卡地址为: 98:23:a6:89:57:de
修改下面这两个文件中的 MASTER0_DEVICE 和 DEVICE_MODULES的数值。

sudo gedit /etc/sysconfig/ethercat
sudo gedit /usr/local/etc/sysconfig/ethercat

修改如下
MASTER0_DEVICE=“98:29:a6:56:57:ce”
DEVICE_MODULES=“generic”

如果是专用的网卡的话,那么DEVICE_MODULES的数值可以是这些值8139too, e100, e1000, e1000e, r8169, generic, ccat, igb。*generic 一般是用来指代通用网卡的。

3、配置用户态库

cd /etc/udev/rules.d
#新建一个ethercat的rule文件
sudo gedit 99-ethercat.rules
  • 向文件中添加下面内容:
    KERNEL==“EtherCAT[0-9]”, MODE=“0777”

下面这个不执行好像也可以

保存后退出,然后执行

sudo udevadm control --reload-rules 

4、配置实时权限

sudo gedit /etc/security/limits.conf
  • 在该文件的最下方按照如下格式添加一行:
    <username> hard rtprio 99

  • 比如说改成这个样子: #username hard rtprio 99

4、运行主站以及添加命令行工具

1、运行主站

@:~$ sudo /etc/init.d/ethercat start
Starting EtherCAT master 1.6.0-rc1  done

如果安装没有问题,会出现下面的提示:
Starting EtherCAT master 1.5.2 done

就说明是安装成功了的。

2、 停止主站

@:~$ sudo /etc/init.d/ethercat stop
Shutting down EtherCAT master 1.6.0-rc1  done

3、添加命令行工具

vim ~/.bashrc

在其中添加如下代码:
PATH=$PATH:/opt/etherlab/bin

然后执行

source ~/.bashrc

最后就可以愉快的使用 EtherCAT 提供的方便的命令行工具了。

5、编译可能遇到的问题

1、下面这个博主写的比较好,记录了一些常见的编译 EtherCAT IGH 会遇到的问题。
linux5.4内核搭建igh主站第二次尝试

2、下面这个博主写的比较好,主要是这个博客的评论里面记录了一些其他人在编译 EtherCAT IGH 会遇到的问题以及博主的解决方法。
Linux下IGH Ethercat Master安装

3、checking for kernal for 8139too driver… configure error

这个是因为8139too网卡在当前kenel下不支持,解决办法:将对应的报错驱动禁用掉就可以了。

./configure --enable-8139too=no 

6、启动主站的时候可能遇到的问题

1、ERROR: could not insert ‘ec_master’: Invalid argument

@:~$ sudo /etc/init.d/ethercat start
Starting EtherCAT master 1.6.0-rc1 modprobe: ERROR: could not insert 'ec_master': Invalid argument failed.

如果没有按照3.3 配置主站 中的2、配置网络设备信息 重新修改这两个文件中的内容,那么在启动主站的时候就会报这个错误。

2、Starting EtherCAT master 1.6.0-rc1 modprobe: FATAL:

@:~$ sudo /etc/init.d/ethercat start
Starting EtherCAT master 1.6.0-rc1 modprobe: FATAL: Module ec_master not found in directory /lib/modules/5.15.0-43-generic
 failed

这个错误应该是在编译之后没有运行 depmod 导致的。在编译的那个文件目录下面运行下面这句话即可。

sudo depmod

3、Starting EtherCAT master 1.5.2 ERROR: modinfo: could not find module ec_e1000 done

如果是报这种问题,一般都是因为 configure的时候有没有加选项–enable-e1000,把这个选项加上去就好了。

7、修改源代码之后如何重新编译

有的时候我们在调试的时候,可能会去修改源代码,增加一些调试信息。那么我们在修改源代码之后如何重新编译呢?

  • 在不修改编译配置的情况下,基本上按照 ### 3.2 安装 的说明重新编译安装即可.
  • 然后按照3.3 配置主站 中的2、配置网络设备信息 重新修改这两个文件中的内容,也可能只要修改其中一个文件即可。

8、参考引用

感谢下面各位大佬的文章。

  • 4
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独坐寒江边

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值