【原创】RK3588/RK3576/RK3568/RK3562平台 IgH EthercAT主站编译安装及测试

本文记录EtherCAT主站典型编译配置流程,基于RK3562创龙ubuntu SDK描述,3506,3568、3576、3588编译仅SDK路径和上的差别,其他流程一致,整体流程也可用于其他平台。

igh主站编译安装说明

1. 文件及环境说明

  1. 文件说明:

igh编译安装说明.pdf:安装说明

etherlab.tar.xz:ethercat主站源码,包含rk stmmac 4.19、5.10 和 6.1内核驱动,适用于瑞芯微rk35系列3588/3568/3576/3562/3506/3528/系列、rv1106/1108/1126/1126B,rk1808、rk322x/3308/3328/3366/3399 等soc自带MAC, 非免费,有需要请私信

  1. 源码包说明:

igh主站git仓库,是一个完整的git仓库仓库里有两个分支。

image-20250914110611203

etherlab官方主站从2013年1.5.2版本起~2021年没有维护,但该时间段内有一个非官方版本的分支一直维护,功能比较全面。虽然2021年开始官方重新维护,当前版本1.6.7,但功能、支持的os、从站启动速度等方面不如非官方维护版本,这需要自行选择使用哪个版本。

  • stable-1.6分支:etherlab官方主站 v1.6.7,rk stmmac 5.10驱动为motorcortex分支开发后合入该分支。

  • master分支 :motorcortex维护的非官方版本,这个版本motorcortex一直维护至今,笔者再次基础上开发包含完整的rk stmmac 4.19驱动开发git提交记录,若需要看stmmac驱动开发过程,请切到该分支,使用gitk查看4.19记录,5.10与其类似。

    git checkout motorcortex
    

注意:两个分支主站的用户态库不兼容,不能混用,需要库和主站一一对应!!

内核方面,preempt-RT、xenomai、普通liunx均可。

  1. 本文档目录说明(根据创龙tl3562 ubuntu SDK描述,实际情况修改)
  • rk3562内核源码目录:/home/wsg1100/TL3562-EVM/rk3562-ubuntu20.04-sdk-v1.2/kernel
  • 主站源码目录:/home/wsg1100/TL3562-EVM/rk3562-ubuntu20.04-sdk-v1.2/etherlab
  • 示例安装路径为:/home/wsg1100/TL3562-EVM/rk3562-ubuntu20.04-sdk-v1.2/out
  • 交叉编译工具路径为/home/wsg1100/TL3562-EVM/rk3562-ubuntu20.04-sdk-v1.2/sysroots/x86_64-linux/bin/gcc-linaro-10.2.1-2021.01-x86_64_aarch64-linux-gnubin/
SDK_DIR="/home/wsg1100/TL3562-EVM/rk3562-ubuntu20.04-sdk-v1.2/"
KERNEL_SRC="$SDK_DIR/kernel"
XENOMAI_SRC="$SDK_DIR/xenomai" #若有
ETHERLAB_SRC="$SDK_DIR/etherlab"
INSTALL_OUTDIR="$SDK_DIR/out"

文中的使用的交叉编译工具链是aarch64-linux-gnu-, 若不是,需自行修改2.1节的环境变量配置,或者为每个工具链创建一个aarch64-linux-gnu-的软连接,如下。

image-20250930183643074

每次新打开终端输入以下内容,配置交叉编译环境变量

TOOLS_PATH=$SDK_DIR/sysroots/x86_64-linux/bin/gcc-linaro-10.2.1-2021.01-x86_64_aarch64-linux-gnu/bin
CROSS_PATH=$TOOLS_PATH/bin
export PATH=$TOOLS_PATH:$CROSS_PATH:$PATH
export CC=aarch64-linux-gnu-gcc
export CXX=aarch64-linux-gnu-g++
export AR=aarch64-linux-gnu-ar
export OBJCOPY=aarch64-linux-gnu-objcopy
export NM=aarch64-linux-gnu-nm
export STRIP=aarch64-linux-gnu-strip
export CROSS_COMPILE=aarch64-linux-gnu-
export CROSS_COMPILE_APPS=aarch64-linux-gnu-
export CROSS_COMPILE_HOST=aarch64-linux-gnu
export ARCH=arm64

提示:上面的配置中增加了CROSS_COMPILE 、CROSS_COMPILE_HOST、ARCH定义,后续交叉编译命令无需添加该环境变量。

2.xenomai库编译安装说明(若基于xenomai)

2.1 环境变量配置

详见上节,后面不在赘述

提示:每次打开终端,或者切换到超级用户都需要新执行该命令激活交叉编译环境,sudo属于临时提权,不会继承当前用户的环境变量,所以在需要超级权限的时候切换到root用户,避免使用sudo。

提示:上面已经增加了CROSS_COMPILE 、CROSS_COMPILE_HOST、ARCH定义,后续交叉编译命令无需添加该环境变量。

2.2 配置xenomai编译选项

#切换到xenomai源码目录
cd ${XENOMAI_SRC}

#配置xenomai
./scripts/bootstrap
./configure --host=${CROSS_COMPILE_HOST} --enable-smp --enable-async-cancel --enable-assert --enable-pshared --enable-tls --enable-dlopen-libs  --enable-lores-clock
  • --host 指定交叉编译工具host
  • --enable-smp 启用smp
  • --enable-async-cancel 启用异步取消线程,若不启用,xenomai线程只能在系统调用中取消,当编写的xenomai程序存在bug时可能无法手动停止
  • --enable-assert 启用assert
  • --enable-pshared 启用xenomai进程间通信支持
  • --enable-tls 启用线程tls
  • --enable-dlopen-libs 允许通过dlopen()动态加载xenomai库
  • --enable-lores-clock vxwork接口需要,若不使用vxworks接口可忽略

2.3 编译安装

后面编译ethercat主站时需要用到xenomai库,这里统一安装到临时目录 SDK/out/lib_install

#创建临时目录
LIB_INSTALL_OUTDIR=${INSTALL_OUTDIR}/libxenomai
mkdir -p ${LIB_INSTALL_OUTDIR}

#编译
make -j$(nproc)

#安装到指定临时目录
make -j$(nproc) DESTDIR=${LIB_INSTALL_OUTDIR} install

2.4 更新到根文件系统

将临时安装目录打包到板子进行更新。

# 打包xenomai库安装目录
cd ${INSTALL_OUTDIR}
tar -capvf rk3562-libxenomai-v3.3.1.tar.gz -C ${LIB_INSTALL_OUTDIR} .

将打包的库压缩包拷贝到板子根文件系统,然后解压到板子根目录,注意解压参数。

tar -xpvf  rk3562-libxenomai-v3.3.1.tar.gz -C /  --dereference

若要直接安装到rootfs.img烧录镜像,请将rootfs解压,然后安装过程直接指定安装到rootfs目录(需要root权限)再打包为镜像,详见创龙文档TL3562-EVM-B(Ubuntu20.04)_V1.2\3-用户手册\《3-1-Ubuntu系统使用手册.pdf》5 rootfs 根文件系统操作说明 更新 update.img 系统镜像  小结自行完成。

提示:板子内置的是完整的ubuntu系统,包含gcc,也可将xenomai源码拷贝到开发板,在开发板中直接配置编译安装。

3. EtherCAT库编译安装说明

编译前通用过操作:

#配置交叉编译环境变量

#进入ethercat目录
cd ${ETHERLAB_SRC}

#配置主站
./bootstrap
#清理
make distclean

3.1 基于xenomai配置(若有)

#配置
./configure --host=${CROSS_COMPILE_HOST} --with-linux-dir=${KERNEL_SRC}  --prefix=/usr/local --with-xenomai-dir="${INSTALL_OUTDIR}/libxenomai/usr/xenomai" --enable-rtdm --enable-dwmac-rk --disable-8139too --enable-kernel --disable-hrtimer --disable-eoe --disable-generic --enable-wildcards

xenomai参数说明,分为3方面:

  • 编译环境
    • --host: 指定交叉编译工具
    • --with-linux-dir: Linux内核源码目录,使用绝对路径
    • --prefix: 指定实际板子安装目录,这里指定为/usr/local
    • --with-xenomai-dir: xenomai应用安装库路径,用来来编译链接xenomai环境的igh库。
  • 主站功能配置
    • --enable-kernel: 编译内核模块默认启用该选项
    • --enable-rtmutex: 使用rtmutex否则使用sem,(sem没有onwer不具备优先级倒置)
    • --disable-eoe:禁用主站EoE功能(有需要自行开启)
    • --enable-wildcards:启用从站vendor ID / product code严格匹配(有需要自行关闭)
    • --enable-rtdm: 启用xenomai RTDM设备,若不启用,xenomai应用程序操作主站是通过非实时路径,无法保证实时性
  • 网卡驱动选择
    • --enable-dwmac-rk: 编译stmmac-rk网卡驱动
    • --disable-8139too: 禁止编译8139too网卡驱动,否则会报错
    • --disable-generic: 禁用generic驱动

3.2 普通linux或preempt-rt

生成configure配置脚本后进行配置。

./configure --host=${CROSS_COMPILE_HOST} --with-linux-dir=${KERNEL_SRC}  --prefix=/usr/local --enable-dwmac-rk --disable-8139too --enable-kernel --disable-hrtimer --disable-eoe --disable-generic --enable-wildcards

参数说明,分为3方面:

  • 编译环境
    • --host: 指定交叉编译工具
    • --with-linux-dir: Linux内核源码目录,使用绝对路径
    • --prefix: 指定实际板子安装目录,这里指定为/usr/local
  • 主站功能配置
    • --enable-kernel: 编译内核模块默认启用该选项
    • --enable-rtmutex: 使用rtmutex,否则使用sem(sem没有onwer不具备优先级倒置)
    • --disable-eoe:禁用主站EoE功能(有需要自行开启)
  • 网卡驱动选择
    • --enable-dwmac-rk: 编译stmmac-rk网卡驱动
    • --disable-8139too: 禁止编译8139too网卡驱动,否则会报错
    • --disable-generic: 禁用generic驱动

3.3 编译安装

若基于xenomai编译主站,ethercat主站编译依赖xenomai环境,如果我们直接编译会遇到如下错误。

image-20250914153427532

因为xenomai编译需要特殊的编译参数,这些参数来自于xeno-config输出,xeno-config生成的参数是xenomai运行系统中的绝对路径,但是我们是交叉编译,这些路径中没有xenomai相关库和头文件。

解决方式是,第一次编译前,在主机上建立一个软连接,链接到安装到${LIB_INSTALL_OUTDIR}路径下的xenomai。

sudo ln -s ${INSTALL_OUTDIR}/libxenomai/usr/xenomai /usr/xenomai

image-20250914154059566

接下面继续编译即可。

#创建临时目录
LIB_INSTALL_OUTDIR=${INSTALL_OUTDIR}/libethercat
mkdir -p ${LIB_INSTALL_OUTDIR}

#编译
make -j$(nproc)

#安装到指定临时目录
make -j$(nproc) DESTDIR=${LIB_INSTALL_OUTDIR} install

3.3 更新到根文件系统

将临时安装目录打包到板子进行更新。

# 打包
cd ${INSTALL_OUTDIR}
tar -capvf rk3562-libethercat_1.6.7.tar.gz -C ${LIB_INSTALL_OUTDIR} .

将打包的库压缩包拷贝到板子根文件系统,然后解压到板子根目录,注意解压参数。

tar -xpvf  rk3562-libethercat_1.6.7.tar.gz -C /  --dereference

若要直接安装到rootfs.img烧录镜像,请将rootfs解压,然后安装过程直接指定安装到rootfs目录(需要root权限)再打包为镜像,详见创龙文档TL3562-EVM-B(Ubuntu20.04)_V1.2\3-用户手册\《3-1-Ubuntu系统使用手册.pdf》5 rootfs 根文件系统操作说明 更新 update.img 系统镜像  小结自行完成。

提示:板子内置的是完整的ubuntu系统,包含gcc,也可将xenomai源码拷贝到开发板,在开发板中直接配置编译安装。

4. 内核编译安装说明

4.1 配置内核编译选项

配置内核,找到内核自带驱动,修改为编译成模块:

cd $KERNEL_SRC
make menuconfig
Symbol: STMMAC_ETH [=m]
Type  : tristate 
Prompt: STMicroelectronics 10/100/1000/EQOS Ethernet driver 
Location:                                                                                     -> Device Drivers
		-> Network device support (NETDEVICES [=y])
            -> Ethernet driver support (ETHERNET [=y])
				-> STMicroelectronics devices (NET_VENDOR_STMICRO [=y])  


如果使用的是preempt-rt内核,还要使能PREEMPT-RT(xenomai不用):

配置完毕后,选<Save>,按 Enter 键保存配置选项。然后选中<Exit>,按 Enter 键退出。执行如下命令, 保存配置选项至 defconfig 文件,再将 defconfig 文件内容覆盖至rockchip_linux_defconfig 文件。

make savedefconfig

mv defconfig arch/arm64/configs/rockchip_linux_defconfig

4.3 编译内核镜像

执行如下命令,编译内核源码。

make -j$(nproc) tl3562-evm.img
cp boot.img ${INSTALL_OUTDIR}/

编译完成后,将生成内核镜像文件 boot.img

4.4 更新内核镜像

详见创龙文档TL3562-EVM-B(Ubuntu20.04)_V1.2\3-用户手册\《3-1-Ubuntu系统使用手册.pdf》6 系统镜像更新说明 小节,通过rk烧录工具、拷贝到板子后使用dd等方式烧录。

4.5 内核模块编译

对于未编译到内核的内核模块,需要拷贝到根文件系统,首先将其安装到临时文件夹,然后将文件夹打包拷贝到板子上解压即可。

4.5.1 安装内核模块

#创建安装目录
MODULES_INSTALL_OUTDIR=${INSTALL_OUTDIR}/modules_install
mkdir -p ${MODULES_INSTALL_OUTDIR}

#安装内核模块
make INSTALL_MOD_PATH=${MODULES_INSTALL_OUTDIR} modules_install INSTALL_MOD_STRIP=1

4.5.2 ethercat主站模块编译

编译ethercat主站内核内核模块,若没有配置主站,需先配置主站,然后进行编译,关于配置详见后文“ethercat库编译配置”小节。

#进入源码目录
cd ${ETHERLAB_SRC}

#若没有配置主站,需先配置主站,然后进行编译,关于配置详见本文“ethercat库编译配置”小节,否则直接编译
./bootstrap
./configure --host=${CROSS_COMPILE_HOST} --with-linux-dir=${KERNEL_SRC}  --prefix=/usr/local --with-xenomai-dir="${INSTALL_OUTDIR}/libxenomai/usr/xenomai" --enable-rtdm --enable-dwmac-rk --disable-8139too --enable-kernel --disable-hrtimer --disable-eoe --disable-generic --enable-wildcards

#编译 
make modules

#安装ethercat内核模块
make INSTALL_MOD_PATH=${MODULES_INSTALL_OUTDIR} modules_install INSTALL_MOD_STRIP=1

注意:INSTALL_MOD_PATH最好选择内核交叉编译时安装内核模块的路径,好处是安装过程会自动处理模块依赖,拷贝到板子后无需处理模块符号依赖。

2.5.3 更新内核模块

到此所有的内核模块编译安装完毕,将临时安装目录打包到板子进行更新。

# 打包
cd ${INSTALL_OUTDIR}
tar -capvf rk3562-kernel-modules.tar.gz -C ${MODULES_INSTALL_OUTDIR} .

将打包的内核模块modules.tar.gz拷贝到板子根文件系统,然后解压到板子根目录,注意解压参数

tar -xpvf  rk3562-kernel-modules.tar.gz -C /  --dereference

若要直接安装到rootfs.img烧录镜像,请将rootfs解压,然后安装过程直接指定安装到rootfs目录(需要root权限)再打包为镜像,详见创龙文档TL3562-EVM-B(Ubuntu20.04)_V1.2\3-用户手册\《3-1-Ubuntu系统使用手册.pdf》5 rootfs 根文件系统操作说明 更新 update.img 系统镜像  小结自行完成。

5. 安装后的环境配置

  1. 实时性能优化
  2. ethercat主站配置
  3. xenomai环境配置等

附1 igh用户库文件说明

上面已经将igh安装到文件系统/usr/local/(由主站配置的--prefix决定),各文件如下:

tree /usr/local/
.
├── bin
│   ├── ethercat      #ethercat 工具,用于主站状态查看、从站寄存器读写、调试等
│   └── ethercat_mbg  #ethercat 邮箱网关工具
├── etc
│   ├── ethercat.conf #网卡配置文件!!!!!
│   ├── init.d
│   │   └── ethercat  #init.d 启动脚本,早期Linux和嵌入式系统使用该方式
│   └── sysconfig
│       └── ethercat  #网卡配置文件,systemd使用,大部分linux发行版使用该方式
├── include
│   ├── ecrt.h
│   └── ectty.h
├── lib
│   ├── libethercat.a    #igh静态库
│   ├── libethercat.la
│   ├── libethercat.so -> libethercat.so.1.1.0  #igh 动态库,主要供ethercat工具、编译使用
│   ├── libethercat.so.1 -> libethercat.so.1.1.0
│   ├── libethercat.so.1.1.0
│   └── systemd
│       └── system
│           └── ethercat.service  #systemd 服务
└── sbin
    └── ethercatctl   #systemd服务执行脚本/usr/local/sbin/ethercatctl

附2 igh网卡配置

  1. 配置禁止网卡自动加载

经过以上步骤,当前板子中存在两个stmmac网卡驱动,一个是内核源码编译的,一个是ethercat主站编译的,为防止两个网卡自动加载,导致ethercat服务网卡加载失败,新建自动加载黑名单文件/etc/modprobe.d/dwmac_rockchip.conf,内容如下:

blacklist dwmac_rockchip
blacklist ec_dwmac_rockchip
  1. 设置EtherCAT主站驱动

按如下,ECAT网卡配置文件位于/usr/local/etc/ethercat.conf,修改如下:

#指定网卡,由于硬件不同MAC不同,所以这里统一使用"FF:FF:FF:FF:FF:FF"做默认匹配
MASTER0_DEVICE="FF:FF:FF:FF:FF:FF"
#指定网卡驱动
DEVICE_MODULES="dwmac_rockchip"

若使用双主站,按如下方式配置:

#指定网卡,由于硬件不同MAC不同,所以这里统一使用"FF:FF:FF:FF:FF:FF"做默认匹配,要使用实际的MAC也行,那每块板子都需要手动配置
MASTER0_DEVICE="FF:FF:FF:FF:FF:FF"
MASTER1_DEVICE="FF:FF:FF:FF:FF:FF"
#指定网卡驱动
DEVICE_MODULES="dwmac_rockchip"

附3 启动及开机自启动

1. 启动ethercat主站测试

完成以上步骤后,启动主站:

sudo ethercatctl start  #或者
sudo systemctl start ethercat.service

若有如下打印,说明环境设置成功。

pi@NanoPi-R6C:/usr/local/sbin$ dmesg | grep EtherCAT
[ 1415.034410] EtherCAT 0: Unregistered RTDM device EtherCAT0.
[ 1415.034669] EtherCAT: Master module cleaned up.
[ 1426.442436] EtherCAT: Master driver 1.5.2 unknown
[ 1426.442989] EtherCAT 0: Registered RTDM device EtherCAT0.
[ 1426.442996] EtherCAT: 1 master waiting for devices.
.....
[ 1489.916575] EtherCAT: Accepting 72:79:EC:56:32:E6 as main device for master 0.
....
[ 1490.121255] EtherCAT 0: Starting EtherCAT-IDLE thread.

2. 设置自动启动

这里以systemd为例,执行如下命令配置开机启动Etehrcat主站

sudo systemctl enable ethercat.service

linaro@RK356x-Tronlong:~$ sudo ethercat master
Master0
  Phase: Idle
  Active: no
  Slaves: 1
  Ethernet devices:
    Main: 7e:cc:c3:17:55:22 (attached)
      Link: UP
      Tx frames:   379317
      Tx bytes:    22786646
      Rx frames:   379316
      Rx bytes:    22786586
      Tx errors:   0
      Tx frame rate [1/s]:    285    285    285
      Tx rate [KByte/s]:     16.7   16.7   16.7
      Rx frame rate [1/s]:    285    285    285
      Rx rate [KByte/s]:     16.7   16.7   16.7
    Common:
      Tx frames:   379317
      Tx bytes:    22786646
      Rx frames:   379316
      Rx bytes:    22786586
      Lost frames: 0
      Tx frame rate [1/s]:    285    285    285
      Tx rate [KByte/s]:     16.7   16.7   16.7
      Rx frame rate [1/s]:    285    285    285
      Rx rate [KByte/s]:     16.7   16.7   16.7
      Loss rate [1/s]:          0      0      0
      Frame loss [%]:         0.0    0.0    0.0
  Distributed clocks:
    Reference clock:   Slave 0
    DC reference time: 0
    Application time:  0
                       2000-01-01 00:00:00.000000000

附4 测试对比

这里使用rk3562+两个汇川ethercat伺服驱动器进行测试,看看xenomai下分别使用原生的ec_generic驱动和专用igh驱动的区别,demo源码位于目录examples/igh_test下,编译安装后会随ethercat库安装到--prefix下的bin目录下。

1. 使用ec_generic驱动1ms周期

  1. 加载ec_generic驱动,这里直接使用命令进行
insmod  /usr/lib/modules/`uname -r`/ethercat/master/ec_master.ko main_devices=FF:FF:FF:FF:FF:FF
modprobe dwmac_rockchip
modprobe ec_generic
  1. 启动测试程序

    dc_motion -c 3  -d 1 -t 1000000
    
    • -c 指定CPU 3
    • -d 1以主站作为参考时钟, 这里主要测试网络收发占整个周期的时间,所以以主站作为参考时钟,一般应以从站作为参考时钟,因为主站和从站的时钟源(晶振)之间有漂移,主站运行周期需要一定周期根据从站参考调整,需要一个调整算法,本程序未经测试,请自行研究!!!
    • -t 周期1ms

其中主站收发时间计时方式如下:

/*接收时间*/
t_receive_start = sys_time_ns();
ecrt_master_receive(master);
t_receive_end = sys_time_ns();
/*发送时间*/
t_send_start = sys_time_ns();
ecrt_master_send(master);
t_send_end = sys_time_ns();
  1. 经过6小时测试后结果如下:

Snipaste_2025-03-02_09-30-15(1)

  • period :周期任务实际周期
  • latency:预期唤醒时间与时间唤醒时间差
  • exec :运算、pdo处理、统计、打印等耗时
  • send :ecrt_master_send()耗时
  • receive :ecrt_master_receive()耗时

看这send 、receive 结果,你是不是觉得这结果还不错?注意!我们是从应用层面计算的收发调用的时间,至于调用ecrt_master_send()/ecrt_master_receive()后,报文什么时候被真正发送,和报文什么时候接收回来是由内核机制决定的,这个接口只是送、取ethercat报文的时间,不是网络收发软件层面消耗的所有时间。发出去的包,只要在1ms后,报文已经被接收回来就行,不妨碍下个周期计算发送即可,偶尔还是有帧未及时收回来的情况:

Snipaste_2025-03-02_12-33-58(1)

如果此时跑500us周期,帧未及时收回来的情况会更频繁,详细原因的见本博客其他文章。

Snipaste_2025-03-02_12-34-50(2)

所以,使用ec_generic驱动能跑,但是跑不好,xenomai能保证ethercat任务调度周期,但是保证不了网络包的收发实时性,网络包实时性涉及DC同步等等,在此不再赘述。

2. 使用ec_stmmac驱动125us周期

使用ec_stmmac我们就不跑1ms浪费时间了,直接跑125us周期.

  1. 加载ec_stmmac驱动,这里直接使用命令进行
insmod  /usr/lib/modules/`uname -r`/ethercat/master/ec_master.ko main_devices=FF:FF:FF:FF:FF:FF
modprobe ec_dwmac_rockchip
  1. 启动测试程序

    dc_motion -c 3  -d 1 -t 125000
    
    • -c 指定CPU 3
    • -d 1以主站作为参考时钟, 这里主要测试网络收发占整个周期的时间,所以以主站作为参考时钟,一般应以从站作为参考时钟,因为主站和从站的时钟源(晶振)之间有漂移,主站运行周期需要一定周期根据从站参考调整,需要一个调整算法,本程序未经测试,请自行研究!!!
    • -t 周期125us。注意这里基于xenomai测试,如果是PREEMPT-RT,系统本身抖动太大,会出现周期越界,125us周期不适用,建议500us及以上!!!

    Snipaste_2025-03-02_10-34-07(1)

  2. 经过2小时左右测试后结果如下:

Snipaste_2025-03-02_12-29-22(1)

这send 、receive 结果,这才是网络收发软件层面消耗的所有时间。

附5 其他

  1. 卸载ethercat驱动命令:rmmod ec_dwmac_rockchip ec_stmmac_platform ec_stmmac ec_master

  2. 加载内核自带驱动命令:modprobe dwmac_rockchip

  3. 卸载内核自带驱动命令:rmmod dwmac_rockchip stmmac_platform stmmac

  4. 关于etehrcat工具板子上运行报库版本`GLIBCXX_xxxx不匹配问题:

 /usr/lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by ethercat)

原因是使用了高版本的交叉编译工具链,但是板子上的glibc运行环境较低,切换为低版本交叉编译工具链重新编译ethercat库即可,内核模块不需要重新编译。若是板子上有gcc编译器,直接在板子上编译即可。

posted @ 2024-10-19 21:56  沐多  阅读(4513)  评论(10)    收藏  举报