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

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

3天内不再提示

瑞芯微RK3506开发板Ethercat主站适配开发详细攻略,实测微秒级抖动延迟!

触觉智能 2025-05-09 15:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

IgH EtherCAT总线


IgH EtherCAT是运行于Linux系统的开源EtherCAT主站程序,IgH EtherCAT主站通过构建Linux字符设备, 应用程序通过对字符设备的访问实现与EtherCAT主站模块的通信

IgH EtherCAT开发包配套EtherCAT工具,可提供各种可在Linux用户层运行的命令,可直接实现对从站的访问和设置,如设置从站地址、显示总线配置、显示PDO数据、读写SDO参数等。具体详情可以查看IgH的官网进行了解。

wKgZPGgds8eAAT0cAAh-aVA0bMY184.png

本文基于触觉智能RK3506星闪开发板演示Ethercat主站开发,其配套RK3506核心板(3核A7+M0多核异构),100%全国产,峰值功耗低至0.65W。

EtherCAT IgH软件环境


  • EtherCAT整体介绍

EtherCAT整体分为四个部分,包含:实时Linux内核、用户态、驱动以及EtherCAT应用。触觉智能RK3506开发板提供EtherCAT预编译的bin文件:

wKgZPGgds-CAREcqAAFKLSo5R_k412.png


  • 实时Linux内核

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补丁。


  • 用户态

用户态中主要是两个文件,ethercatlibethercat.so,一个是EtherCAT IgH的调试工具,一个是EtherCAT。

IgH的动态库,用来提供用户层接口。用户态部分访问以下链接:

https://gitlab.com/etherlab.org/ethercat/-/tree/master?r ef_type=heads下载IgH的源代码,编译后会生成ethercat二进制文件libethercat.so和一些example等等。用户态部分也可以使用预编译好的EtherCAT IgH二进制文件libethercat.so,如下所示:

wKgZPGgds-2AZ-BhAAG45sP4qlY511.png


  • 驱动

驱动部分主要是ec_master.ko和一些瑞芯微RK优化后的ko文件。

wKgZO2gds_SAVJgTAAQS143r36Q539.png
  • EtherCAT IgH应用部分

EtherCAT IgH应用部分需要根据实际使用的伺服驱动器来实现,该部分无法通用的, 触觉智能提供如下测试组件:

EtherCAT IgH软件编译和部署


以下将根据实时Linux内核、用户态、驱动以及EtherCAT应用四个部分进行讲解。

  • 编译内核

步骤一:打上Preempt-RT补丁,内核方案选择Preempt-RT内核方案,参考文档打上补丁:SDK/docs/Patches/Real-Time-Performance/README.md

要特别注意的是:发布的驱动部分SDK/external/rk_ethercat_release和内核头文件强相关,请确认内核的commit

要和SDK/external/rk_ethercat_release/driver/redmine中描述的一样,再打入Preempt-RT补丁。

步聚二:修改RK3506 Linux 6.1内核

diff --git a/arch/arm/configs/rk3506_defconfig b/arch/arm/configs/rk3506_defconfig index e6d3ba608a77..3029973ade8c 100644 --- a/arch/arm/configs/rk3506_defconfig +++ b/arch/arm/configs/rk3506_defconfig @@ -2,6 +2,7 @@ CONFIG_KERNEL_XZ=y CONFIG_DEFAULT_HOSTNAME="localhost" CONFIG_SYSVIPC=y +CONFIG_NO_HZ_FULL=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_PREEMPT=y @@ -119,12 +120,13 @@ CONFIG_NETDEVICES=y # CONFIG_NET_VENDOR_SOLARFLARE is not set # CONFIG_NET_VENDOR_SMSC is not set # CONFIG_NET_VENDOR_SOCIONEXT is not set -CONFIG_STMMAC_ETH=y +CONFIG_STMMAC_ETH=m # CONFIG_DWMAC_GENERIC is not set # CONFIG_NET_VENDOR_SYNOPSYS is not set # CONFIG_NET_VENDOR_VIA is not set # CONFIG_NET_VENDOR_WIZNET is not set # CONFIG_NET_VENDOR_XILINX is not set +CONFIG_PHYLIB=y CONFIG_MOTORCOMM_PHY=y CONFIG_PPP=y # CONFIG_WLAN is not set

步骤三:编译出实时内核最后根据rt-linux README.md,生成实时性内核。

  • EtherCAT IgH应用部分

EtherCAT IgH应用部分需要根据具体的伺服器来编写,需要使用上面用户态编译出来的EtherCAT IgH工具获取一些伺服驱动器的配置信息,然后完成应用代码的开发。具体可添加触觉智能客服 微 信13423856106,获取EtherCAT IgH应用部分开发指导。

EtherCAT IgH工具介绍

使用ethercat --help命令可以查看EtherCAT IgH工具,这些工具可以查看与主站连接的从站的各种信息, 可以有助于主站应用程序的编写,下面介绍几种常用的命令和参数的使用,其中[]中为必选参数, <>为 可选参数。

  • c语言的形式输出pdo信息(ethercat cstruct)EtherCAT IgH应用部分

/* Master 0, Slave 0 * Vendor ID: 0x00000a79 * Product code: 0x00002000 * Revision number: 0x00000001 */ ec_pdo_entry_info_t slave_0_pdo_entries[] = { {0x603f, 0x00, 16}, /* ErrorCode */ {0x6041, 0x00, 16}, /* StatusWord */ {0x6064, 0x00, 32}, /* Position actual value */ {0x60fd, 0x00, 32}, /* Digital inputs */ {0x6061, 0x00, 8}, /* Modes of operation display */ {0x6040, 0x00, 16}, /* ControlWord */ {0x6060, 0x00, 8}, /* Modes of operation */ {0x607a, 0x00, 32}, /* Target position */ {0x6081, 0x00, 32}, /* Profile velocity */ {0x6099, 0x01, 32}, /* Search Switch */ {0x6099, 0x02, 32}, /* Search Zero */ {0x6040, 0x00, 16}, {0x607a, 0x00, 32}, {0x60ff, 0x00, 32}, {0x6060, 0x00, 8}, {0x0000, 0x00, 8}, /* Gap */ {0x6041, 0x00, 16}, {0x6064, 0x00, 32}, {0x606c, 0x00, 32}, {0x6061, 0x00, 8}, {0x0000, 0x00, 8}, /* Gap */ }; ec_pdo_info_t slave_0_pdos[] = { {0x1a01, 5, slave_0_pdo_entries + 0}, /* TxPDO 2 */ {0x1601, 6, slave_0_pdo_entries + 5}, /* RxPDO 2 */ {0x1600, 5, slave_0_pdo_entries + 11}, {0x1a00, 5, slave_0_pdo_entries + 16}, }; ec_sync_info_t slave_0_syncs[] = { {0, EC_DIR_OUTPUT, 2, slave_0_pdos + 0, EC_WD_DISABLE}, {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE}, {2, EC_DIR_OUTPUT, 1, slave_0_pdos + 2, EC_WD_ENABLE}, {3, EC_DIR_INPUT, 1, slave_0_pdos + 3, EC_WD_DISABLE}, {0xff} }; 0 0:0 PREOP + 0x000001dd:0x10305070

  • 输出pdo信息(ethercatpdos)

SM0: PhysAddr 0x1000, DefaultSize 128, ControlRegister 0x26, Enable 1 RxPDO 0x1a01 "TxPDO 2" PDO entry 0x603f:00, 16 bit, "ErrorCode" PDO entry 0x6041:00, 16 bit, "StatusWord" PDO entry 0x6064:00, 32 bit, "Position actual value" PDO entry 0x60fd:00, 32 bit, "Digital inputs" PDO entry 0x6061:00, 8 bit, "Modes of operation display" RxPDO 0x1601 "RxPDO 2" PDO entry 0x6040:00, 16 bit, "ControlWord" PDO entry 0x6060:00, 8 bit, "Modes of operation" PDO entry 0x607a:00, 32 bit, "Target position" PDO entry 0x6081:00, 32 bit, "Profile velocity" PDO entry 0x6099:01, 32 bit, "Search Switch" PDO entry 0x6099:02, 32 bit, "Search Zero" SM1: PhysAddr 0x1100, DefaultSize 128, ControlRegister 0x22, Enable 1 SM2: PhysAddr 0x1200, DefaultSize 12, ControlRegister 0x64, Enable 1 RxPDO 0x1600 "" PDO entry 0x6040:00, 16 bit, "" PDO entry 0x607a:00, 32 bit, "" PDO entry 0x60ff:00, 32 bit, "" PDO entry 0x6060:00, 8 bit, "" PDO entry 0x0000:00, 8 bit, "Gap" SM3: PhysAddr 0x1300, DefaultSize 19, ControlRegister 0x20, Enable 1 TxPDO 0x1a00 "" PDO entry 0x6041:00, 16 bit, "" PDO entry 0x6064:00, 32 bit, "" PDO entry 0x606c:00, 32 bit, "" PDO entry 0x6061:00, 8 bit, "" PDO entry 0x0000:00, 8 bit, "Gap"

#设置别名地址(下面的例子代表设置位置0的别名修改为1) ethercat alias -p 0 0 #设置别名地址(下面的例子代表别名0的别名修改为1) ethercat alias -a 0 1

Ethercat IgH主站性能测试结论

触觉智能RK3506开发板1ms控制周期内,性能数据如下:

wKgZPGgdtLeANcZ4AABz-hXzRCw034.png

触觉智能RK3506星闪开发板,仅188元,点赞本文购送套餐优惠券如需选购,马云家 搜索触觉智能官方企业店

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

    关注

    25

    文章

    6121

    浏览量

    113136
  • 瑞芯微
    +关注

    关注

    27

    文章

    699

    浏览量

    53451
  • EtherCAT总线
    +关注

    关注

    5

    文章

    90

    浏览量

    5904
  • RK3506
    +关注

    关注

    0

    文章

    82

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    米尔多核异构低功耗RK3506核心重磅发布

    近日,米尔电子发布MYC-YR3506核心开发板,基于国产新一代入门工业处理器
    发表于 05-16 17:20

    米尔基于RK3562与RK3506开发板有什么区别?

    后可直接在产品中应用。 具体来看,我这款开发板型号是基于RK3506J,512MB的内存和8GB的存储,支持工业
    发表于 07-11 09:32

    RK3506各型号该怎么选?全新工业芯片介绍 触觉智能出品

    RK3506各型号该怎么选?全新工业芯片介绍,还将推出与星闪技术相结合的RK3506星闪网关开发板
    的头像 发表于 12-25 10:27 2262次阅读
    <b class='flag-5'>RK3506</b>各型号该怎么选?<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>全新工业芯片介绍 触觉智能出品

    【技术简析】触觉智能RK3506 Linux星闪网关开发板有什么奥妙?

    在工业智能化与物联网深度融合的今天,深圳触觉智能推出首款搭载RK3506芯片的Linux星闪网关开发板,以“多核异构架构+星闪无线通信
    的头像 发表于 03-21 11:58 1306次阅读
    【技术简析】触觉智能<b class='flag-5'>RK3506</b> Linux星闪网关<b class='flag-5'>开发板</b>有什么奥妙?

    RK3506开发板之Qt应用开发手册(上) 深圳触觉智能出品,嵌入式方案商

    RK3506开发板必备攻略之Qt应用开发手册(
    的头像 发表于 04-28 17:16 1176次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>开发板</b>之Qt应用<b class='flag-5'>开发</b>手册(上) 深圳触觉智能出品,嵌入式方案商

    米尔基于RK3506核心开发板

    MYC-YR3506核心开发板新一代入门国产工业处理器RK3506,3核A7+单核M0多核异构RK
    发表于 05-15 16:00 10次下载

    有奖丨米尔 RK3506开发板免费试用

    米尔与合作发布的新品基于RK3506应用
    的头像 发表于 06-19 08:04 844次阅读
    有奖丨米尔 <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>开发板</b>免费试用

    RK3506开发板必备攻略之Qt应用开发手册(下),触觉智能工控嵌入式方案商

    本文基于触觉智能RK3506星闪开发板Buildroot系统进行演示,配套RK3506核心(3核A7+M0多核异构)宽温59元/工业
    的头像 发表于 06-19 17:49 728次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>开发板</b>必备<b class='flag-5'>攻略</b>之Qt应用<b class='flag-5'>开发</b>手册(下),触觉智能工控嵌入式方案商

    有奖丨米尔 RK3506开发板免费试用来啦!

    米尔与合作发布的新品基于RK3506应用
    的头像 发表于 07-10 08:03 634次阅读
    有奖丨米尔 <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>开发板</b>免费试用来啦!

    触觉智能RK3506开发板通过OpenHarmony 5.1 XTS认证,引领鸿蒙开发新标杆!

    触觉智能作为专业方案商与开源鸿蒙南向硬件厂家,旗下RK3506开发板及其核心(模组)通过
    的头像 发表于 08-14 23:49 1362次阅读
    触觉智能<b class='flag-5'>RK3506</b><b class='flag-5'>开发板</b>通过OpenHarmony 5.1 XTS认证,引领鸿蒙<b class='flag-5'>开发</b>新标杆!

    RK3506开发板Linux开发板极致性价比之选

    RK3506开发板Linux开发板极致性价比之选RK3
    的头像 发表于 09-11 16:26 2753次阅读
    <b class='flag-5'>RK3506</b><b class='flag-5'>开发板</b>Linux<b class='flag-5'>开发板</b>极致性价比之选

    RK3506开发板Xenomai内核RT-Linux实时性系统适配教程与性能实测实测仅7μs稳定延时

    本文基于触觉智能RK3506核心/开发板,介绍Xenomai内核RT-Linux实时性系统适配,并附性能实测。简介与
    的头像 发表于 09-18 14:21 855次阅读
    <b class='flag-5'>RK3506</b><b class='flag-5'>开发板</b>Xenomai内核RT-Linux实时性系统<b class='flag-5'>适配</b>教程与性能<b class='flag-5'>实测</b>,<b class='flag-5'>实测</b>仅7μs稳定延时

    RK3506核心/开发板DSM音频开发实战,关键知识点与实操案例必看攻略

    本文基于触觉智能RK3506核心/开发板,介绍DSM音频功能使用攻略。如需购买开发板可某宝搜索深圳触觉智能DSM简介DSMDSM(Delt
    的头像 发表于 09-30 17:41 2178次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b>核心<b class='flag-5'>板</b>/<b class='flag-5'>开发板</b>DSM音频<b class='flag-5'>开发</b>实战,关键知识点与实操案例必看<b class='flag-5'>攻略</b>!

    2025开发者大会万象奥科展出RK3506邮票孔核心

    2025开发者大会万象奥科展出RK3506邮票孔核心2025年7月17-18日,第九届
    的头像 发表于 10-10 14:10 1242次阅读
    2025<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>开发</b>者大会万象奥科展出<b class='flag-5'>RK3506</b>邮票孔核心<b class='flag-5'>板</b>

    RK3506核心/开发板SARADC模拟采集实战,软硬件实操必看攻略

    本文基于触觉智能RK3506核心/开发板,介绍SARADC采集模拟信号使用攻略,包括硬件、驱动层的修改。
    的头像 发表于 10-30 11:58 292次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b>核心<b class='flag-5'>板</b>/<b class='flag-5'>开发板</b>SARADC模拟采集实战,软硬件实操必看<b class='flag-5'>攻略</b>!