【ZYNQ】手把手教学-Linux安装EtherCAT的IGH主站
安装EtherCAT IGH主站的作用如下
1.开放源码的EtherCAT Master实现:
IGH EtherCAT Master(基于EtherCAT协议的开放源代码实现)是一个常用的EtherCAT主站软件,它支持与多种EtherCAT从站设备的通信。安装EtherCAT IGH主站可以为Linux系统提供与EtherCAT网络交互的能力。
2.支持多种硬件平台:
IGH主站可以支持多种硬件平台,包含工业PC、嵌入式系统等。EtherCAT协议的特点是可以与不同的硬件配置兼容,因此,IGH主站广泛应用于多种工业控制应用中。
3.与实时操作系统兼容:
EtherCAT主站要求实时性的支持,而在Linux系统上,实时性可以通过一些补丁和工具(例如RT-Preempt补丁)得到增强。EtherCAT IGH主站能够与Linux系统中的实时调度配合工作,保证实时性和高效的通讯。
嵌入式Linux安装IGH主站教程
1.下载IGH源码
首先新建一个文件夹,这里在用户目录下新建一个eth0目录

输入如下命令安装IGH源码
git clone http://gitlab.com/etherlab.org/ethercat.git

2.配置IGH源码
进入ethercat目录,输入./bootstrap执行自动化初始化脚本生成构建和配置所需的文件 configure 脚本
cd ethercat
./bootstrap

执行生成的configure脚本文件构建makefile
./configure --prefix=/home/sqd/eth0/ethercat/etherlab --with-linux-dir=/home/sqd/workspace/kernel1126/atk-zynq-linux-xlnx --enable-8139too=no --enable-generic=yes CC=arm-xilinx-linux-gnueabi-gcc --host=arm-xilinx-linux-gnueabi
#--prefix指定了项目安装目录
#--with-linux-dir指定 Linux 内核的目录路径
#CC指定了交叉编译器
#--host指定了目标平台的架构和工具链
接下来可能会有一系列的报错,让我们沉下心来一个一个解决

出现上述错误,我们就得去看看config.log排查问题
第一个问题如下:

-V和-qversion编译器没有这个选项,按照提示将分别全局替换成-v和--version,问题解决
第二个问题如下:

找不到一些库文件,例如Scrt1.o,定位这些文件看看在哪里

发现Scrt1.o文件存在,但不存在报错的那个目录里,说明路径错误,打印编译器路径发现不存在说明指向错误,我们需要显示说明sysroot的值可以将第一个搜索到的目录添加到配置命令中
./configure --prefix=/home/sqd/eth0/ethercat/etherlab --with-linux-dir=/home/sqd/workspace/kernel1126/atk-zynq-linux-xlnx --enable-8139too=no --enable-generic=yes CC="arm-xilinx-linux-gnueabi-gcc --sysroot=/opt/petalinux/2020.2/sysroots/cortexa9t2hf-neon-xilinx-linux-gnueabi" --host=arm-xilinx-linux-gnueabi
发现此报错解决
第三个问题如下:

可以看出a.out 使用了 VFP 寄存器参数:这意味着 a.out 文件使用了硬件浮点指令,可能通过编译选项指定了 -mfpu=vfp 或类似的选项。/tmp/ccgXVLnP.o 不使用 VFP:这个目标文件没有启用 VFP,可能是在编译时没有指定相应的浮点硬件支持选项。因此我们需要指定硬浮点(-mfloat-abi=hard 和 -mfpu=vfp)会使用 VFP 寄存器进行浮点计算。添加此选项到配置命令中
./configure --prefix=/home/sqd/eth0/ethercat/etherlab --with-linux-dir=/home/sqd/workspace/kernel1126/atk-zynq-linux-xlnx --enable-8139too=no --enable-generic=yes CC="arm-xilinx-linux-gnueabi-gcc --sysroot=/opt/petalinux/2020.2/sysroots/cortexa9t2hf-neon-xilinx-linux-gnueabi -mfpu=vfp -mfloat-abi=hard" --host=arm-xilinx-linux-gnueabi
此报错解决。可以看出基本都是编译器链的问题,其他问题也大都都是这个原因,一一排查即可。
配置成功后显示如下界面

3.编译IGH源码
依次执行下面命令
make
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- modules
按照网上大多数教程接着会执行下面命令
sudo make install
但可能会出现下面的错误

原因是编译器的相关环境变量在用户空间设置的只会在用户空间生效,有没有一种办法又能使用root权限又能保存用户空间的环境变量呢,目前能想到的也就是像上文问题的解决办法一样,在命令中添加选项,我们找到arm-xilinx-linux-gnueabi-ranlib所在目录

将该目录添加到PATH中
sudo PATH=$PATH:/opt/petalinux/2020.2/sysroots/x86_64-petalinux-linux/usr/bin/ make install
发现编译成功!
4.安装IGH主站
一开始我们指定的安装目录为--prefix=/home/sqd/eth0/ethercat/etherlab,找到这个文件目录将该文件目录下的文件分别复制到开发板的系统目录中(有些采用软链接的方式但容易报错),另外将devices/ec_generic.ko和master/ec_master.ko一起复制到开发板的/lib/modules/5.4.0-rt5-xilinx-v2020.2目录下,然后依次执行下面命令
depmod
echo KERNEL==\"EtherCAT[0-9]*\", MODE=\"0664\" > /etc/udev/rules.d/99-EtherCAT.rules
modprobe ec_master main_devices=00:0A:35:00:1E:53 #ifconfig查看MAC地址
CTRl+C打断后,执行主站启动命令
/etc/init.d/ethercat start
完整过程如下

最后安装通用网卡驱动,进入到/lib/modules/5.4.0-rt5-xilinx-v2020.2目录下执行
insmod ec_generic.ko

注:ubuntu安装IGH也有相关教程,有需要的朋友评论区艾特我发资料。
更多推荐
所有评论(0)