LinuxCNC 2.8.4下编译IGH ethercat-1.5.2

LinuxCNC为官方ISO安装版,基于Debian 10 buster操作系统,内核版本4.19.0-21-rt-amd64,节省了编译preempt rt 实时内核的工作。

IGH默认必须是root用户,才能执行相关指令,以下操作均在root用户下,不是sudo,而是注销普通用户,以root身份登录系统。

官方网站下载IGH源码http://www.etherlab.org/download/ethercat/ethercat-1.5.2.tar.bz2,解压后目录为ethercat-1.5.2 。

编译IGH需要操作系统的内核源码,而系统默认是没有内核源码的,可以从Debian官网下载对应的源码:http://ftp.cn.debian.org/debian/pool/main/l/linux/linux-headers-4.19.0-21-rt-amd64_4.19.249-2_amd64.deb

执行以下命令安装源码,源码会被安装到/usr/src目录下:

sudo apt install ./linux-headers-4.19.0-21-rt-amd64_4.19.249-2_amd64.deb

执行以下命令编译IGH:

cd ethercat-1.5.2
./configure --enable-8139too=no --enable-wildcards=yes
make
make modules
make install
make modules_install

configure命令无需要指令内核源码位置,编译程序默认使用当前运行内核,并自动去/usr/src目录下寻找相应的内核源码。

执行make modules时,会出现多个错误,皆因版本问题,ethercat-1.5.2发布于2012年,默认支持linux内核版本为2.6 ,所以需要修改多处源码,以下为所有需要修改的地方:

/devices/generic.c 152行,增加一个参数NET_NAME_UNKNOWN

dev->netdev = alloc_netdev(sizeof(ec_gen_device_t *), &null,NET_NAME_UNKNOWN, ether_setup);

/devices/generic.c 210行,增加一个参数&init_net

ret = sock_create_kern(&init_net,PF_PACKET, SOCK_RAW, htons(ETH_P_ETHERCAT),

/examples/mini/mini.c 495行至498行,全部注释掉,因为4.19内核已经没有init_timer了,改为timer_setup

    // init_timer(&timer);
    // timer.function = cyclic_task;
    // timer.expires = jiffies + 10;
    // add_timer(&timer);
    timer_setup(&timer, cyclic_task, 0);
    timer.expires = jiffies + 10;

同时修改回调函数cyclic_task

void cyclic_task(struct timer_list *t)

/master/cdev.c 87行,加上强制类型转换

.fault = (int (*)(struct vm_fault *))eccdev_vma_fault

/master/cdev.c 277行,将virtual_address改为address

" offset = %lu, page = %p\n", vmf->address, offset, page);

/master/master.c 1637行,报错信息为error: variable has incomplete type 'struct sched_param'   ,增加头文件

#include <linux/version.h>
#include <uapi/linux/sched/types.h>         // struct sched_param
#include <linux/sched/types.h>                   // sched_setscheduler

/master/ethernet.c 151行,在name, 后增加 NET_NAME_UNKNOWN参数

if (!(eoe->dev = alloc_netdev(sizeof(ec_eoe_t *), name,  NET_NAME_UNKNOWN, ether_setup))) {

做完以上修改,我这里就可以成功安装IGH了,安装目录位于/opt/etherlab 。

配置动态库路径

vim /etc/ld.so.conf

另起一行,增加 /opt/etherlab/lib,保存后退出,再执行

ldconfig

配置服务

cd /opt/etherlab
mkdir /etc/sysconfig/
cp etc/sysconfig/ethercat /etc/sysconfig/
ln -s /opt/etherlab/etc/init.d/ethercat /etc/init.d/
depmod

配置网卡,debian默认没有ifconfig工具,但是ip工具,可以使用ip address命令查看网卡MAC地址,打开配置文件

vim /etc/sysconfig/ethercat
//修改以下两项
MASTER0_DEVICE="xx:xx:xx:xx:xx:xx"
DEVICE_MODULES="generic"

增加设备权限

echo KERNEL==\"EtherCAT[0-9]*\", MODE=\"0664\" > /etc/udev/rules.d/99-EtherCAT.rules

启动服务,如果成功会出现提示: Starting EtherCAT master 1.5.2 done

/etc/init.d/ethercat start

增加命令行工具

vim ~/.bashrc

在其中添加路径

PATH=$PATH:/opt/etherlab/bin

执行source ~/.bashrc 或重启命令行工具,这样就可以使用ethercat命令了,比如

ethercat master

可以查看主站信息,其它指令的使用可以参考文档ethercat-1.5.2.pdf,文档可从IGH官网下载。

开机自启动ethercat主站,注意必须是root用户,否则无法自启动。所有应用程序->设置->会话和启动,切换到 应用程序自启动 页,添加, 名称、描述 自定义,命令

/etc/init.d/ethercat start

至此,全部工作完成。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装linuxcnc-ethercat中间件需要以下步骤: 1. 首先,确保你的系统已经安装了Ubuntu操作系统,并且已经更新到最新版本。你可以使用终端输入以下命令来更新系统:sudo apt update 2. 接下来需要从官方仓库中安装EtherCAT Master软件包。打开终端,输入以下命令进行安装: sudo apt-get install ethercat-hg 3. 安装完成后,你需要检查安装是否成功。在终端中输入以下命令来查看EtherCAT Master的版本: ethercat --version 4. 确认EtherCAT Master已经成功安装后,你需要下载并安装linuxcnc-ethercat中间件。你可以从官方GitHub仓库中下载安装包。打开终端,输入以下命令来下载安装包: git clone https://github.com/LinuxCNC/linuxcnc-ethercat.git 5. 下载完成后,进入下载的文件夹。在终端中输入以下命令来进入文件夹: cd linuxcnc-ethercat 6. 进入文件夹后,你可以使用以下命令进行编译安装: ./autogen.sh ./configure make sudo make install 7. 编译和安装过程可能需要一些时间,取决于你的系统性能和网络速度。等待编译和安装完成后,你就成功安装了linuxcnc-ethercat中间件。 在安装完成后,你可以使用linuxcnc-ethercat中间件来进行以太网CAT总线驱动和控制。你可以根据具体的使用需求,在配置文件中进行相应的配置和设置。记得在使用前,根据你的硬件配置进行适当的调整和修改。 希望以上回答对你有所帮助!如果还有其他问题,请随时向我提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值