0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何移植EtherCAT Igh--基于米尔RK3576开发板

米尔电子 2025-09-26 08:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微 RK3576开发板)的板端移植EtherCAT Igh方案的开发测试。摘自优秀创作者-EPTmachine

50f9941e-9a6c-11f0-8ce9-92fbcf53809c.jpg

米尔基于瑞芯微RK3576开发板


EtherCAT IgH需要保证高实时性,Preempt-RT是一种针对实时性能进行了优化的Linux内核。与普通的Linux内核相比,Preempt-RT具有以下优势:

  1. 实时性能: Preempt-RT提供了更可靠和更精确的实时性能。它采用了一些实时调度策略和机制,使得任务能够按照严格的时间要求执行,从而适用于需要高度可预测性和低延迟的应用场景,如工业自动化机器人控制等。
  2. 硬实时能力: Preempt-RT具有硬实时能力,即能够确保任务在规定的时间内完成,而不会受到其他任务或中断的干扰。这对于需要严格的时间限制的应用非常重要,如航空航天、医疗设备等领域。
  3. 任务调度: Preempt-RT使用了更加高效和优化的任务调度算法,如基于优先级的实时调度算法,以确保高优先级任务能够及时响应并完成,而低优先级任务不会影响到实时任务的执行。
  4. 中断处理: Preempt-RT针对中断处理进行了优化,使得中断的响应时间更短,能够更快地响应外部事件。
  5. 内核定时器: Preempt-RT提供了更精确和可配置的内核定时器,使得可以实现微秒级的定时精度,适用于对时间要求极高的应用场景。
  6. 实时扩展: Preempt-RT提供了一些实时扩展机制,使得用户能够方便地对内核进行定制和扩展,以满足特定应用的需求。总的来说,Preempt-RT在实时性能、可靠性和精度方面比普通的Linux内核更加优秀,因此在对实时性能要求较高的应用场景中被广泛使用。瑞芯微提供配套SDK的Preempt-RT补丁。

1、Linux PREEMPT_RT补丁

Linux Kernel应用补丁的指令格式如下

patch -p1 < path/to/patch-x.y.z

Rockchip SDK中的doc/Real-Time-Performance目录下有相关的实时内核补丁。

5121009e-9a6c-11f0-8ce9-92fbcf53809c.png

MYD3576使用的内核版本为6.1.75,将文件夹中的Kernel-6.1下的补丁应用到内核配置中。

cd/path/to/kernel-6.1/

patch中存在重定义问题

51327810-9a6c-11f0-8ce9-92fbcf53809c.png

  • serial8250_set_IER(struct uart_8250_port *up,int ier) 函数重定义
  • serial8250_console_write_atomic()函数重定义
  • serial8250_console_putchar_locked(struct uart_port *port,unsigned char ch) 函数重定义
  • serial8250_console_write_atomic*() 函数重定义
  • serial8250_console_setup 中 变量up重定义

修改以上几处的代码,注释掉其中和补丁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的安装路径。

2、EtherCAT IGH编译和安装

下载EtherCAT IGH的代码

51574910-9a6c-11f0-8ce9-92fbcf53809c.png

下载的代码压缩包为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

将该脚本以系统变量的形式存储起来,便于导入

exportMYD3576_BUILDROOT=$MYD3576_ENV/buildroot/output/rockchip_rk3576/host/environment-setupsource$MYD3576_BUILDROOT

执行以下指令完成代码、模块的编译和输出

makemakemodulessudomakeinstall

首先安装编译结果的ec_generic.ko(位于devices文件夹中)和ec_master.ko(位于master文件夹中)模块,执行下列指令查看内核的版本信息。

uname-s -r -vLinux6.1.75-rt16 #1SMP PREEMPT Mon May2620:57:18CST2025

在开发板的/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

5167984c-9a6c-11f0-8ce9-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    6122

    浏览量

    113317
  • ethercat
    +关注

    关注

    19

    文章

    1373

    浏览量

    43355
  • 米尔电子
    +关注

    关注

    1

    文章

    179

    浏览量

    1005
  • rk3576
    +关注

    关注

    1

    文章

    228

    浏览量

    1371
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于RK3576开发板的WDT看门狗使用说明

    RK3576开发板的WDT使用说明
    的头像 发表于 05-06 17:15 1012次阅读
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b>的WDT看门狗使用说明

    基于RK3576开发板的PWN使用说明

    RK3576开发板使用PWN教程及Demo
    的头像 发表于 05-07 14:07 1924次阅读
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b>的PWN使用说明

    基于RK3576开发板的RTC使用说明

    文章主要展示RK3576开发板的RTC信息和快速上手例程
    的头像 发表于 05-07 15:04 1789次阅读
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b>的RTC使用说明

    基于RK3576开发板的人脸识别算法

    RK3576开发板展示人脸识别算法例程和API说明
    的头像 发表于 05-07 16:48 2484次阅读
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b>的人脸识别算法

    如何在RK3576开发板端编译OpenCV并搭建应用

    本文将介绍基于米尔电子MYD-LR3576开发板米尔基于瑞芯微RK3576开发板)的
    的头像 发表于 08-08 08:04 3308次阅读
    如何在<b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b>上<b class='flag-5'>板</b>端编译OpenCV并搭建应用

    米尔RK3576开发板评测】带你初步了解米尔RK3576这块开发板

    这几天刚收到米尔邮寄过来的米尔RK3576开发板,收到板子的拆箱的第一感觉就是惊艳。巴掌大小的一块开发板上集成度非常高,布线很合理,元件布局
    发表于 12-18 20:35

    米尔RK3576开发板评测】+项目名称【米尔RK3576开发板评测】一个视频和你共同认识一下米尔RK3576开发板

    收到米尔RK3576开发板后,也对米尔RK3576开发板进行了了解,
    发表于 12-18 20:50

    米尔RK3576开发板评测】+项目名称值得购买的米尔RK3576开发板

    米尔依然是核心加扩展板的模式,我拿到手的开发板,核心已经通过LGA贴片,焊好了。 开发板做工很好,布线细致工整。
    发表于 01-08 22:59

    米尔RK3576开发板免费体验】3、移植EtherCAT Igh

    发送到开发板上即可。需要传输的文件包括以下几项 /sbin/ethercatctl /lib/* /etc/* /bin/* 修改/sbin/ethercatctl中的指向/bin/ethercat
    发表于 07-21 10:35

    【作品合集】米尔RK3576开发板测评

    输出 【米尔RK3576开发板免费体验】3、移植EtherCAT Igh
    发表于 09-11 10:19

    如何米尔RK3576开发板移植EtherCAT Igh

    本文将介绍基于米尔电子MYD-LR3576开发板米尔基于瑞芯微 RK3576开发板)的
    发表于 09-26 16:02

    米尔RK3576开发板特惠活动!

    近日,米尔电子发布基于瑞芯微RK3576核心开发板RK3576作为国产热门处理器,其高性能数据处理能力、领先的AI智能分析、强大的扩展
    的头像 发表于 11-12 01:00 1981次阅读
    <b class='flag-5'>米尔</b><b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b>特惠活动!

    有奖丨米尔 瑞芯微RK3576开发板免费试用

    米尔与瑞芯微合作发布的新品基于瑞芯微RK3576应用处理器的MYD-LR3576开发板免费试用活动来啦~~米尔提供了7块价值849元的MYD
    的头像 发表于 11-12 01:00 1247次阅读
    有奖丨<b class='flag-5'>米尔</b> 瑞芯微<b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b>免费试用

    追加名额丨米尔瑞芯微RK3576开发板有奖试用

    米尔与瑞芯微合作发布的新品基于瑞芯微RK3576应用处理器的MYD-LR3576开发板免费试用活动加码啦~~米尔追加了2块价值849元的MY
    的头像 发表于 11-22 01:00 1029次阅读
    追加名额丨<b class='flag-5'>米尔</b>瑞芯微<b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b>有奖试用

    人脸疲劳检测应用-米尔基于RK3576核心/开发板

    本文将介绍基于米尔电子MYD-LR3576开发板米尔基于瑞芯微RK3576开发板)的人脸疲劳检
    的头像 发表于 12-20 08:06 1359次阅读
    人脸疲劳检测应用-<b class='flag-5'>米尔</b>基于<b class='flag-5'>RK3576</b>核心<b class='flag-5'>板</b>/<b class='flag-5'>开发板</b>