基于全志T507-H的Linux-RT + Igh EtherCAT主站案例分享
本文将为各位工程师演示全志T507-H工业评估板(TLT507-EVM)基于IgH EtherCAT控制伺服电机方法,生动说明Linux-RT + Igh EtherCAT的强大之处!
同时,我们对于T3/A40i、T113-i、RK3568、RK3588J、AM62x、AM64x、NXP i.MX 8M Plus等平台也提供了开源EtherCAT主站IgH案例。
Linux-RT系统的优势
- 内核开源、免费、功能完善。
- RT PREEMPT补丁,使Linux内核成为硬实时操作系统,无需完整的内核重写。
- 既有实时性,又有相同的开发生态系统(包括相同工具链、文件系统和安装方法,以及相同的POSIX API等),实现产品快速上市的期望。
Linux-RT实时性测试(Cyclictest工具)
Cyclictest常用于实时系统的基准测试,是评估实时系统相对性能的最常用工具之一。Cyclictest反复测量并精确统计线程的实际唤醒时间,以提供有关系统的延迟信息。它可测量由硬件、固件和操作系统引起的实时系统的延迟。
基于全志T507-H(硬件平台:创龙科技TLT507-EVM评估板),按照创龙科技提供的案例用户手册进行操作,使用Cyclictest程序测试系统实时性,得出如下测试结果。
对比测试数据,可看到基于Linux-RT-4.9.170内核的系统的延时更加稳定,最大延时更低,系统实时性更佳。
Linux-RT性能测试
基于全志T507-H(硬件平台:创龙科技TLT507-EVM评估板),按照创龙科技提供的案例用户手册进行操作,测试分别在CPU空载、满负荷(运行stress压力测试工具)、隔离CPU核心的情况下,得出如下测试结果。
备注:测试数据与实际测试环境有关,仅供参考。
CPU空载状态测试,CPU0、CPU1核心Max Latencies值最大,为69us,CPU3核心的Max Latencies值最小,为66us。
CPU满负荷状态测试,CPU0核心Max Latencies值最大,为88us,CPU3核心的Max Latencies值最小,为64us。
隔离CPU核心状态测试,CPU0核心Max Latencies值最大,为73us,隔离CPU3核心的Max Latencies值最小,为41us。
测试结果如下表所示:
| Max Latencies | ||
| 最小值 | 最大值 | |
| CPU空载状态 | 66us(CPU3) | 69us(CPU0、CPU1) |
| CPU满负荷状态 | 64us(CPU3) | 88us(CPU0) |
| 隔离CPU核心状态 | 41us(CPU3) | 73us(CPU0) |
根据CPU空载、CPU满负荷、隔离CPU核心三种状态的测试结果可知:当程序指定至隔离的CPU3核心上运行时,Linux系统延迟最低,可有效提高系统实时性。故推荐对实时性要求较高的程序(功能)指定至T507-H隔离的CPU核心运行。
T507-H的典型应用领域
基于全志T507-H的Linux-RT + IgH EtherCAT主站演示
下文主要介绍基于全志T507-H(硬件平台:创龙科技TLT507-EVM评估板)案例,按照创龙科技提供的案例用户手册进行操作得出测试结果。
本次演示的开发环境:
Windows开发环境:Windows 7 64bit、Windows 10 64bit
Linux开发环境:Ubuntu18.04.4 64bit
虚拟机:VMware16.2.5
U-Boot:U-Boot 2018
Kernel:Linux-RT-4.9.170
LinuxSDK:LinuxSDK-[版本号].tar.gz(基于全志官方V2.0_20220618)
IgH EtherCAT:ethercat-stable-1.5-gcd0d17d-20210723
伺服驱动器:台达ASD-A2-0121-E
伺服电机:台达ECMA-C10401GS
*硬件平台:TLT507-EVM评估板(基于全志T507-H)
IgH EtherCAT简介
IgH EtherCAT为运行于Linux系统的免费开源EtherCAT主站程序,框架如下所示,官方文档:https://www.etherlab.org/download/ethercat/ethercat-1.5.2.pdf。
IgH EtherCAT主站通过构建Linux字符设备,应用程序通过对字符设备的访问实现与EtherCAT主站模块的通信。
IgH EtherCAT开发包提供EtherCAT工具,该工具提供各种可在Linux用户层运行的命令,可直接实现对从站的访问和设置,如设置从站地址、显示总线配置、显示PDO数据、读写SDO参数等。
IgH EtherCAT官网:https://www.etherlab.org/en/ethercat。
案例说明
案例功能:EtherCAT通讯周期时间为1ms,控制伺服电机正转和反转,并通过串口循环打印EtherCAT通讯周期时间的最大值和最小值。
(1)正转:伺服电机目标速度从0加速到10000,当达到10000速度后,控制伺服电机减速至0,循环运行。
(2)反转:伺服电机目标速度从0加速到-10000,当达到-10000速度后,控制伺服电机减速至0,循环运行。

图8
为便于测试,我司提供已验证的基于Linux-RT编译生成的内核镜像文件和内核模块,位于产品资料“4-软件资料\Linux\Kernel\image\linux-4.9.170-[版本号]-[Git系列号]\”目录下。
请将Linux-RT内核镜像boot-rt.fex和Linux-RT内核配套的内核模块modules-rt目录下4.9.170-[版本号]-[Git系列号].tar.gz压缩包的拷贝至评估板文件系统目录下。
执行如下命令,将boot-rt.fex重命名为boot.fex,同时将内核模块压缩包解压。
Target#mv boot-rt.fex boot.fex
Target#tar -zxf 4.9.170-rt129-g4c65c66.tar.gz

执行如下命令替换内核镜像和内核模块,评估板重启生效。
备注:mmcblk1为Micro SD对应的设备节点,如需固化至eMMC,请将设备节点修改为mmcblk0。
Target#dd if=boot.fex of=/dev/mmcblk1p3 conv=fsync
Target#rm /lib/modules/* -rf
Target#cp $(uname -r) /lib/modules/ -r
Target#sync
Target#reboot
案例测试
请按下图所示使用网线连接评估板ETH0 RGMII网口和伺服驱动器A的IN网口,将伺服驱动器A的OUT网口使用网线连接至伺服驱动器B的IN网口。
为便于测试,我司提供的经验证的IgH EtherCAT主站程序为案例"igh_ethercat\images\"目录下的ethercat-stable-1.5-gcd0d17d.tar.gz压缩包,将其拷贝至评估板文件系统任意目录下。
执行如下命令,解压ethercat-stable-1.5-gcd0d17d.tar.gz压缩包将会得到_install文件夹。
Target#tar -zxf ethercat-stable-1.5-gcd0d17d.tar.gz
执行如下命令,并查询评估板网卡物理地址。
Target#ifconfig
执行如下命令,加载驱动模块。
Target#insmod -f /root/_install/modules/ec_master.ko main_devices=46:99:F6:AB:1F:19
执行如下命令,拷贝EtherCAT主站相关文件至评估板文件系统。
Target#mkdir /etc/sysconfig
Target#cp /root/_install/etc/sysconfig/ethercat /etc/sysconfig
Target#ls /lib/modules/$(uname -r)//查看是否已创建modules目录
Target#cp ./_install/modules/ec_master.ko /lib/modules/$(uname -r)
Target#depmod -a //同步模块依赖关系,同步过程中打印警告请忽略
执行如下命令,启动EtherCAT主站。
Target#/root/_install/etc/init.d/ethercat start
执行如下命令,加载ec_generic.ko驱动文件。
Target#insmod -f /root/_install/modules/ec_generic.ko
执行如下命令,添加IgH动态链接库路径。
Target#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/_install/lib
将案例bin目录下的igh_ethercat_dc_motor可执行文件拷贝至评估板文件系统,执行如下命令查看参数信息。
Target#./igh_ethercat_dc_motor --help
执行如下命令,控制两台伺服电机同时正转。
Target#./igh_ethercat_dc_motor -d 0
按下"Ctrl + C",停止运行程序。
执行如下命令,控制两台伺服电机同时反转。
Target#./igh_ethercat_dc_motor -d 1
按下"Ctrl + C",停止运行程序。
测试结果如下表所示:
|
工程环境 |
控制算法 |
点对点控制 x 2轴 |
|
|
循环周期 |
1ms |
||
|
测试结果 |
测试项 |
Min(us) |
Max(us) |
|
EtherCAT 任务调度抖动(period) |
-186 |
184 |
|
|
测试数据 |
EtherCAT任务调度抖动的区间为[-186us,184us] |
||
参数解析:
(1)latency:等待唤醒时间(ns)。
(2)period:EtherCAT通讯周期时间(ns)。
(3)exec:接收和发送EtherCAT数据时间(ns)。
基于全志T507-H的Linux-RT + Igh EtherCAT主站案例分享的更多相关文章
- 【实操填坑】在树莓派上编译 EtherCAT IgH Master 主站程序
官网下载地址:https://etherlab.org/download/ethercat/ (可list查看文件列表)https://etherlab.org/download/ethercat/ ...
- 基于全志H3芯片的ARM开发环境搭建
基于全志H3芯片的ARM开发环境搭建 最近买了个友善之臂的NanoPi M1板子,又在网上申请了个NanoPi NEO板子,这两个都是基于全志H3芯片的Crotex-A7四核ARM开发板,两个板子可以 ...
- 全志A33开发板Linux内核定时器编程
开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 Linux 内核定时器是内核 ...
- 全志A33平台编译linux(分色排版)V1.1
全志A33平台编译linux 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/13 10:41 版本:V1.1 (一)解压缩lichee备用 ...
- 全志A33平台编译linux(分色排版)sina33
全志A33平台编译linux 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/12 17:36 版本:V1.0 Xshell 5 (Buil ...
- 基于samba实现win7与linux之间共享文件_阳仔_新浪博客
基于samba实现win7与linux之间共享文件_阳仔_新浪博客 然后启动samba执行如下指令: /dev/init.d/smb start 至此完成全部配置.
- uboot的GPIO驱动分析--基于全志的A10芯片【转】
本文转载自:http://blog.csdn.net/lw2011cg/article/details/68954707 uboot的GPIO驱动分析--基于全志的A10芯片 转载至:http://b ...
- 【原创】EtherCAT主站IgH解析(一)--主站初始化、状态机与EtherCAT报文
目录 1 启动脚本 1.1 start 1.2 stop 2 主站实例创建 2.1 Master Phases 2.2 数据报与状态机 数据报 状态机 2.3 master状态机及数据报初始化 2.4 ...
- 基于Zynq平台的EtherCAT主站方案实现
作者:陈秋苑 谢晓锋 陈海焕 广州虹科电子科技有限公司 摘 要:EtherCAT 是开放的实时以太网通讯协议,由德国倍福自动化有限公司研发.EtherCAT 具有高性能.低成本.容易使用等特点,目前在 ...
- 《Linux命令学习手册》系列分享专栏
<Linux命令学习手册>系列分享专栏 <Linux命令学习手册>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/207 ...
随机推荐
- LocalDateTime 时间偏移量的处理
一.代码处理块 // 当前系统时间两年后的时间 LocalDateTime expirationTime = LocalDateTimeUtil.offset(LocalDateTime.now(), ...
- Splashtop远程桌面再次增强:支持4K视频流
远程桌面工具,主流的有10款总有,国内用的比较多的有teamviewer.Splashtop.向日葵等.几款软件各有千秋,其中Splashtop最大的特性就是快速.流畅.产品无敌,运营佛系,哈哈.下面 ...
- 【问题解决】java.lang.NoSuchMethodError错误
问题现象 近期本人负责的一个SpringBoot模块出现了java.lang.NoSuchMethodError报错,问题情况如下: A类提供了setJumpType(String type),B类调 ...
- JDK源码阅读-------自学笔记(三)(java.lang.String String用法和描述浅析)
一.源码特点 final约束,使得String不能被继承,内部其他也不能被继承 String用来表示字符串,或字符序列,序列即为数组 内建数组private final char value[];但是 ...
- 5GC 系统架构
目录 文章目录 目录 前文列表 4G/5G 核心网对比 4G/5G 核心网融合架构 5GC 架构 AMF 功能 SMF 功能 NSSF 功能 UPF 功能 AF.PCF & NEF 功能 BS ...
- 高效C#编程:通过智能线程池管理提升性能
前言 C#编程中,线程池(Thread Pool)是一个重要的概念,它允许开发者更有效地管理和利用系统资源.通过线程池,我们可以避免频繁地创建和销毁线程,从而减少系统开销并提高程序的响应速度和吞吐量. ...
- Python读Excel数据自动化填入日常办公的网页表单
前言 本篇内容,让你完全掌握Python是如何自动化办公的~ 一.环境准备 1.1 Python 3.7.0 1.2 Pycharm (Python 开发工具) 1.3 Selenium ...
- PHP 网络通信底层原理分析
一.引言 我们日常的程序开发大多数都是以业务为主,很少会接触到底层逻辑.对于我们程序员来说,了解程序的底层运行逻辑,更有助于提升我们对程序的理解.我相信大多数的人,每天基本上都是完成业务需求.当然,完 ...
- Winform程序在VS中打包成安装程序(带卸载)
场景 在VS中进行Winform开发时,可以直接在项目上右击选择生成 则会在项目的bin目录下直接生成exe等文件,此时将这个文件夹直接整个复制到别的地方就可以运行. 但是如果将其做成安装包安装的形式 ...
- linux系统重要文件和目录说明
系统信息相关文件 /etc/issue 记录操作系统版本 head /etc/issue /proc/cpuinfo 记录cpu信息 cat /proc/cpuinfo /proc/meminfo 记 ...