| ||
EtherCAT IgH需要保证高实时性,Preempt-RT是一种针对实时性能进行了优化的Linux内核。与普通的Linux内核相比,Preempt-RT具有以下优势:
Linux Kernel应用补丁的指令格式如下
patch -p1 < path/to/patch-x.y.z
Rockchip SDK中的doc/Real-Time-Performance
目录下有相关的实时内核补丁。
MYD3576使用的内核版本为6.1.75,将文件夹中的Kernel-6.1下的补丁应用到内核配置中。
cd /path/to/kernel-6.1/
patch中存在重定义问题
修改以上几处的代码,注释掉其中和补丁patch添加的代码中不同的部分,避免编译过程中报错。
make -C /path/to/SDK/kernel/ -j9 CROSS_COMPILE=/path/to/SDK/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- ARCH=arm64 rockchip_linux_defconfig rk3576.config rockchip_linux_docker.config rockchip_rt.config
指令中/path/to/SDK
为SDK的安装路径。
下载EtherCAT IGH的代码
下载的代码压缩包为ethercat-stable-1.6.xxxx
,根据压缩包文件类型,将其解压得到ethercat igh的源代码。
参考官方使用手册《ethercat-doc.pdf》对源代码进行配置
./configure --prefix=$PWD/output --with-linux-dir=$MYD3576_ENV/kernel-6.1 --enable-generic=yes --host=aarch64-buildroot-linux
命令行中$PWD
为当前文件夹,$MYD3576_ENV
为米尔SDK的安装位置,--host
参数根据使用的工具链的编译器前缀进行调整。
导入Buildroot工具链的环境配置脚本
source $MYD3576_ENV/buildroot/output/rockchip_rk3576/host/environment-setup
将该脚本以系统变量的形式存储起来,便于导入
export MYD3576_BUILDROOT=$MYD3576_ENV/buildroot/output/rockchip_rk3576/host/environment-setup source $MYD3576_BUILDROOT
执行以下指令完成代码、模块的编译和输出
make make modules sudo make install
首先安装编译结果的ec_generic.ko(位于devices文件夹中)和ec_master.ko(位于master文件夹中)模块,执行下列指令查看内核的版本信息。
uname -s -r -v Linux 6.1.75-rt16 #1 SMP PREEMPT Mon May 26 20:57:18 CST 2025
在开发板的/lib/modules目录中创建内核版本文件,用于存放ec_generic.ko和ec_master.ko模块。
mkdir -p /lib/modules/6.1.75-rt16
output目录中包含运行可执行的二进制文件、库文件等,将其发送到开发板上即可。需要传输的文件包括以下几项
/sbin/ethercatctl /lib/* /etc/* /bin/*
修改/sbin/ethercatctl
中的指向/bin/ethercat
的文件路径变量。修改/etc/init.d/ethercat
中指向/sbin/ethercatctl
和/etc/sysconfig/ethercat
的文件路径变量。
修改/etc/ethercat.conf
中EtherCAT Master的MAC地址
完成上述配置,执行/etc/init.d/ethercat start