树莓派 IgH EtherCAT主站搭建

前言

记录一下如何利用树莓派3B+搭建EtherCAT主站的过程。

目前已有EherCAT主站主要包括:
TwinCAT 3 EtherCATAcontis EtherCATIgHEtherCAT(开源)
SOEM EtherCAT(开源)KPA EtherCATRSW-ECAT Master EtherCAT

其中Acontis EtherCAT主站是在window平台下的,也是目前应用最广泛的,但是收费。在这里我们选择免费开源的IgH_EtherCAT

树莓派实时内核搭建

  • 为了确保以下编译正常,需要在树莓派中提前安装以下软件:
sudo apt install git bc bison flex libssl-dev make
  • 在完成上述软件的安装后,我们还需要下载树莓派实时内核源码(因为Linux本身不具备实时性,不知道这样还要不要打Xenomai实时补丁,懂得小伙伴可以告知一下), 目前github上关于rt-kernel的源码有两个版本rpi-4.14.y-rtrpi-4.19.y-rt。在这里我们选择rpi-4.14.y-rt

  • 下载树莓派实时内核rpi-4.14.y-rt版本。

git clone --depth=1 --branch rpi-4.14.y-rt https://github.com/raspberrypi/linux
  • 在下载完成后会在当前目录生成一个Linux的文件夹,执行以下命令:
cd linux
KERNEL=kernel7
make bcm2709_defconfig
  • 完成后,继续执行以下命令(编译内核需要花费较长的时间,大家耐心等待一波,大概2个小时左右吧,树莓派还挺烫的):
make -j4 zImage modules dtbs
sudo make modules_install
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
sudo cp arch/arm/boot/zImage /boot/$KERNEL.img
  • 最后重启,同时查询一下内核版本,
sudo reboot
uname -a
  • 如果不出意外,应该可以得到如下图片,可以看到当前的版本变为了4.14.91-rt49-v7+
    :在这里插入图片描述

igH_EtherCAT主站搭建

  • 下载igH_EtherCAT源码,同时确保当前版本为stable-1.5
git clone https://gitlab.com/etherlab.org/ethercat.git
cd ethercat
git checkout stable-1.5

接下来就是关键啦~
首先在ethercat文件夹下创建 etherlab文件(用于存放编译出来的驱动文件)

cd ethercat/
mkdir etherlab

执行如下命令:

./bootstrap 

树莓派 IgH EtherCAT主站搭建_第1张图片
然后执行以下配置命令:

./configure --prefix=/home/pi/ethercat/etherlab --with-linux-dir=/usr/src/linux --enable-8139too=no --enable-generic=yes CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf

需要注意的是

/home/pi/ethercat/etherlab
/usr/src/linux
分别是存放IgH_EtherCAT编译后的驱动文件和Linux源码的位置,你需要找到你自己的路径。

之前只是完成了一下配置,下面开始编译IgH_EtherCAT源码,编译通过会对应生成ethercat、devices/ec_generic.koethercat/master/ec_master.ko

sudo make -j4
sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules
sudo make install

如果编译后出现以下问题:
在这里插入图片描述
则在当前目录下创建touch ~/ethercat/master/soe_errors.c文件即可。

编译完成后,在etherlab目录下创建modules文件夹,并将复制ethercat/devices/ec_generic.koethercat/master/ec_master.ko 复制到etherlab/modules

mkdir -p ~/ethercat/etherlab/modules
cp devices/ec_generic.ko etherlab/modules/
cp master/ec_master.ko etherlab/modules/

最后的结果图如下:树莓派 IgH EtherCAT主站搭建_第2张图片

将IgH_EtherCAT布置到树莓派3B+上

sudo cp -r etherlab/ /opt  
sudo ln -fs /opt/etherlab/etc/init.d/ethercat /etc/init.d/
sudo ln -fs /opt/etherlab/bin/ethercat /usr/local/bin/
sudo mkdir /etc/sysconfig
sudo ln -fs /opt/etherlab/etc/sysconfig/ethercat /etc/sysconfig/
sudo su
sudo echo KERNEL==\"EtherCAT[0-9]*\", MODE=\"0664\" > /etc/udev/rules.d/99-EtherCAT.rules
exit
sudo cp /opt/etherlab/modules/ec_master.ko /lib/modules/4.14.91-rt49-v7+
depmod
  • 获取树莓派MAC地址
ifconfig

树莓派 IgH EtherCAT主站搭建_第3张图片

  • 配置rules,创建设备号
vi /etc/sysconfig/ethercat
MASTER0_DEVICE=”b8:27:eb:7d:26:a2”
DEVICE_MODULES=”generic”
  • 安装通用网卡驱动
insmod /opt/etherlab/modules/ec_generic.ko
  • 开启主站(到这就完成啦~)
  sudo /etc/init.d/ethercat start

在这里插入图片描述

当然我们还可以添加命令行工具,如下:

sudo gedit ~/.bashrc
添加:PATH=$PATH:/opt/etherlab/bin
source ~/.bashrc

最后可以得到如下效果图:
树莓派 IgH EtherCAT主站搭建_第4张图片

参考资料

https://blog.csdn.net/longwoo1012/article/details/105824429
https://blog.csdn.net/jueyisan/article/details/101013705
https://blog.csdn.net/weijiancheng999/article/details/106885053
https://www.raspberrypi.com/documentation/computers/linux_kernel.html

你可能感兴趣的:(EtherCAT,linux,嵌入式硬件,arm,ethercat)