LinuxCNC 2.8.4下编译IGH ethercat-1.5.2

该文详细介绍了如何在基于Debian10buster和4.19.0-21-rt-amd64内核的LinuxCNC系统中编译和安装IGH。首先,需要下载并安装内核头文件,然后对ethercat-1.5.2源码进行修改以适配新内核。接着,通过配置和编译步骤成功安装IGH,并将其设置为开机自启动服务。整个过程涉及到源码修改、动态库配置、服务配置以及设备权限等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

至此,全部工作完成。

<think>嗯,用户想了解在Ubuntu 24.04上安装LinuxCNC 2.8.4的步骤。我需要先确认几个关键点。首先,LinuxCNC的版本兼容性。因为Ubuntu 24.04是最新的LTS版本,而LinuxCNC 2.8.4可能还没有官方的支持,可能需要从源码编译或者使用第三方仓库。 然后,用户可能对LinuxCNC不熟悉,需要简要介绍一下这是什么。LinuxCNC是一个开源的数控机床控制软件,常用于工业控制和DIY CNC项目。安装它可能需要实时内核,因为实时性能对CNC控制至关重要。Ubuntu默认内核不是实时的,所以需要安装或编译实时内核,这可能是一个复杂的过程。 接下来,安装步骤的大致流程。可能需要添加LinuxCNC的仓库,安装依赖项,配置实时内核,然后安装软件本身。不过需要检查是否有适用于24.04的预编译包,否则可能需要从源码构建。另外,实时内核的安装可能会影响系统稳定性,需要提醒用户注意备份。 用户可能遇到的常见问题,比如实时内核安装失败,权限问题,或者硬件兼容性。需要给出解决这些问题的建议,比如检查内核配置,使用正确的用户组权限(比如将用户添加到linuxcnc组),以及测试实时性能的工具。 还需要考虑Ubuntu 24.04的软件源是否包含必要的依赖包,或者是否需要手动安装某些库文件。此外,编译过程中的错误处理,比如缺少开发包,可能需要安装build-essential或其他相关工具。 最后,安装完成后的配置步骤,比如启动LinuxCNC,加载示例配置,测试基本功能是否正常。可能还需要配置硬件接口,比如并口卡或USB控制器,确保它们与LinuxCNC兼容。 总结下来,步骤可能包括:1. 添加仓库和安装依赖;2. 安装实时内核;3. 安装LinuxCNC4. 配置用户权限和环境;5. 测试安装。同时需要提供注意事项和故障排除方法。</think>以下是在Ubuntu 24.04上安装LinuxCNC 2.8.4的详细步骤指南: ### 一、环境准备 1. 更新系统 ```bash sudo apt update && sudo apt upgrade -y ``` 2. 安装基础依赖 ```bash sudo apt install -y git build-essential autoconf libtool libreadline-dev \ libboost-dev libmodbus-dev libusb-1.0-0-dev python3-dev libxenomai-dev \ tk-dev bwidget libtk-img tclx ``` ### 二、实时内核安装(关键步骤) LinuxCNC需要实时内核支持,推荐使用PREEMPT_RT补丁: 1. 查看当前内核版本 ```bash uname -r ``` 2. 安装官方预编译实时内核(适用于Ubuntu 24.04) ```bash sudo apt install linux-image-rt-xxxx-generic linux-headers-rt-xxxx-generic ``` (需替换`xxxx`为实际内核版本号,建议先用`apt search linux-image-rt`查询可用版本) ### 三、安装LinuxCNC 2.8.4 推荐使用官方PPA进行安装: 1. 添加PPA仓库 ```bash sudo add-apt-repository ppa:linuxcnc/linuxcnc sudo apt update ``` 2. 安装主程序 ```bash sudo apt install linuxcnc ``` ### 四、权限配置 1. 添加用户到必要用户组 ```bash sudo usermod -a -G linuxcnc,plugdev $USER ``` 2. 重启系统使配置生效 ### 五、验证安装 1. 运行测试命令 ```bash linuxcnc ``` 2. 检查实时性能 ```bash sudo linuxcnctest ``` ### 六、常见问题处理 1. 实时内核未生效: - 检查启动菜单是否选择实时内核 - 执行`uname -v`查看是否包含`PREEMPT RT` 2. 硬件访问问题: ```bash sudo chmod 666 /dev/parport0 # 针对并口设备 ``` ### 七、开发版本编译(可选) 若需要最新开发版本: ```bash git clone https://github.com/LinuxCNC/linuxcnc.git cd linuxcnc ./autogen.sh ./configure --with-realtime=uspace make sudo make setuid ``` > **注意事项**: > 1. 建议在物理机上安装,虚拟机可能无法满足实时性要求 > 2. 安装前做好系统备份(可使用`timeshift`工具) > 3. 不同硬件配置可能需要额外驱动支持 安装完成后,可通过菜单栏启动LinuxCNC或直接执行`linuxcnc`命令。首次运行时建议选择`sim`配置进行模拟测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值