前  言

本文档主要演示NXP i.MX 8M Mini工业开发板基于IgH EtherCAT控制伺服电机。
 
演示板卡是创龙科技的TLIMX8-EVM工业开发板,它是基于NXP i.MX 8M Mini的四核ARM Cortex-A53 + 单核ARM Cortex-M4异构多核处理器设计的高性能评估板,由核心板和评估底板组成。ARM Cortex-A53(64-bit)主处理单元主频高达1.6GHz,ARM Cortex-M4实时处理单元主频高达400MHz。处理器采用14nm最新工艺,支持1080P60 H.264视频硬件编解码、1080P60 H.265视频硬件解码、GPU图形加速器。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
 
评估板接口资源丰富,引出MIPI CAMERA、MIPI/LVDS LCD、HDMI OUT、LINE IN/OUT、PCIe、FlexSPI、USB、RS485、RS232、千兆网口、百兆网口等接口,板载WIFI模块,支持Mini-PCIe 4G模块,可选配外壳直接应用于工业现场,方便用户快速进行产品方案评估与技术预研。
 

本文档适用开发环境:

(1)        Windows开发环境:Windows 7 64bit、Windows 10 64bit

(2)        Linux开发环境:Ubuntu 18.04.4 64bit

(3)        虚拟机:VMware15.1.0

(4)        Linux SDK:5.4.70_2.3.0

(5)        Kernel:linux-5.4.70-xenomai-g8d94618-v1.0

(6)        IgH EtherCAT:ethercat-stable-1.5-gcd0d17d-20210723

(7)        Xenomai:xenomai-v3.1.1-g8b2052e

(8)        伺服驱动器:台达ASD-A2-0121-E

(9)        伺服电机:台达ECMA-C10401GS

我司提供的IgH EtherCAT主站开发案例位于产品资料“4-软件资料\Demo\igh_ethercat_dc_motor\”目录下,主要包含igh_ethercat、kernel-xenomai、xenomai等文件夹,具体说明如下。

表 1

案例目录

目录说明

bin

存放igh_ethercat_dc_motor应用程序镜像

src

存放igh_ethercat_dc_motor应用程序源码

igh_ethercat

存放IgH EtherCAT开发包源码和镜像,该开发包可用于生成EtherCAT驱动和igh_ethercat_dc_motor应用程序所需要的头文件、链接库文件

kernel-xenomai

存放案例配套的linux-5.4.70内核(已打xenomai实时补丁)源码和镜像

xenomai

存放xenomai开发包源码和镜像,该开发包可用于生成测试Linux系统实时性的工具和链接库

 

1         
IgH EtherCAT简介

IgH EtherCAT为运行于Linux系统的免费开源EtherCAT主站程序,框架如下所示,官方文档:https://www.etherlab.org/download/ethercat/ethercat-1.5.2.pdf

 

1
 

IgH EtherCAT主站通过构建Linux字符设备,应用程序通过对字符设备的访问实现与EtherCAT主站模块的通信。

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

IgH EtherCAT官网:https://www.etherlab.org/en/ethercat

2         
案例说明

案例功能:控制伺服电机正转和反转。

(1)       
正转:伺服电机目标速度从0加速到10000,当达到10000速度后,控制伺服电机减速至0,循环运行。

(2)       
反转:伺服电机目标速度从0加速到-10000,当达到-10000速度后,控制伺服电机减速至0,循环运行。


2

为便于测试,我司提供已验证的基于Xenomai编译生成的内核镜像文件和设备树镜像文件,位于案例"igh_ethercat_dc_motor\kernel-xenomai\images\linux-5.4.70-xenomai-g8d94618-v1.0\"目录下,请替换至Linux系统启动卡BOOT分区下。同时将linux-5.4.70-xenomai-g8d94618-v1.0目录下的module驱动压缩包5.4.70-g8d94618.tar.gz,解压至Linux系统启动卡rootfs分区"lib/modules/"目录下。

备注:如需使用由内核源码重新编译生成的内核镜像文件、设备树文件和modules驱动,请参考Linux系统使用手册将编译的module驱动安装至Linux系统启动卡中,默认安装后module驱动目录为5.4.70。

 

3

3         
案例测试

请按下图所示使用网线连接评估板RGMII ETH网口和伺服驱动器A的IN网口,将伺服驱动器A的OUT网口使用网线连接至伺服驱动器B的IN网口。

 

4
 
 

5

为便于测试,我司提供的经验证的IgH EtherCAT主站程序为案例"igh_ethercat_dc_motor\igh_ethercat\images\ethercat-stable-1.5-gcd0d17d-20210723\"目录下的ethercat-stable-1.5-gcd0d17d-20210723.tar.gz压缩包,在Ubuntu下解压即可得到IgH EtherCAT主站程序文件夹。

将IgH EtherCAT主站程序文件夹整个拷贝至评估板文件系统,执行如下命令查询评估板网卡物理地址。本次测试将IgH EtherCAT主站程序文件夹命名为__install。

Target#        ifconfig


6

执行如下命令,加载驱动模块。

Target#       insmod
/home/root/EtherCAT/__install/modules/ec_master.ko main_devices=ce:bb:9d:3b:d3:6b


7
 

执行如下命令,拷贝EtherCAT主站相关文件至评估板文件系统。

Target#        cp /home/root/EtherCAT/__install/etc/sysconfig/ethercat
/etc/sysconfig

Target#        cp /home/root/EtherCAT/__install/modules/ec_master.ko
/lib/modules/5.4.70-g8d94618      //模块驱动名称可通过"uname -r"查看

Target#        depmod        //同步模块依赖关系


8

执行如下命令,启动EtherCAT主站。

Target#        /home/root/EtherCAT/__install/etc/init.d/ethercat start


9

执行如下命令,加载ec_generic.ko驱动文件。

Target#        insmod /home/root/EtherCAT/__install/modules/ec_generic.ko


10

执行如下命令,添加IgH动态链接库路径。

Target#        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/root/EtherCAT/__install/lib

v


11

将案例igh_ethercat_dc_motor可执行文件拷贝至评估板文件系统,执行如下命令查看参数信息。

Target#        ./igh_ethercat_dc_motor --help


12
 

执行如下命令,控制两台伺服电机同时正转。

Target#        ./igh_ethercat_dc_motor -d 0

 
 

13
 
 

14

按下"Ctrl + C",停止运行程序。


15

执行如下命令,控制两台伺服电机同时反转。

Target#        ./igh_ethercat_dc_motor -d 1

 

16
 
 

17

按下"Ctrl + C",停止运行程序。

 

18
 

参数解析:

(1)       
latency:等待唤醒时间(ns)。

(2)       
period:EtherCAT通讯周期时间(ns)。

(3)       
exec:接收和发送EtherCAT数据时间(ns)。

备注说明:

(1)       
使用评估板千兆网口测试时,需设置EtherCAT通讯周期时间为1.1ms,即将igh_ethercat_dc_motor.c中的FREQUENCY配置为900(如下图所示)。如设置EtherCAT通讯周期时间为1ms时,会出现数据丢失的问题,原因在于IMX8官方千兆网口驱动兼容性不够完善,NXP官方正计划修复此问题。


19

(2)       
使用评估板USB2 ETH百兆网口,设置EtherCAT通讯周期为1ms测试正常。

(3)       
为获得更高的实时性能,亦可通过PCIe接口外扩IgH EtherCAT专用集成网卡进行测试,IgH EtherCAT支持外扩集成网卡如下所示。


20

4         
案例编译

4.1     
IgH EtherCAT主站程序编译

IgH EtherCAT主站程序的编译需依赖于基于Xemomai生成的内核,请参考Linux系统使用手册将案例"igh_ethercat_dc_motor\kernel-xenomai\src\"目录下的linux-5.4.70-xenomai-g8d94618-v1.0内核源码进行编译后,再编译IgH
EtherCAT主站程序。

请将案例"igh_ethercat_dc_motor\igh_ethercat\src\"目录下的IgH EtherCAT主站程序开发包ethercat-stable-1.5-gcd0d17d-20210723.tar.gz拷贝至Ubuntu工作目录,执行如下命令进行解压。

Host#    mkdir EtherCAT

Host#    tar -xvf ethercat-stable-1.5-gcd0d17d-20210723.tar.gz
-C EtherCAT/


21

进入解压目录,执行如下命令生成configure文件。

Host#    ./bootstrap


22

执行如下命令,加载SDK环境变量并进行配置。

Host#    source /home/tronlong/SDK/environment-setup-aarch64-poky-linux

Host#    mkdir
__install   //创建__install文件夹用于存放生成的文件

Host#    ./configure --prefix=/home/tronlong/EtherCAT/__install
--with-linux-dir=/home/tronlong/kernel-xenomai/ --enable-8139too=no
--enable-generic=yes --host=aarch64-poky-linux

备注:"/home/tronlong/kernel-xenomai/"为案例提供的内核源码目录。


23
 
 

24
 

执行如下命令,进行编译。

Host#    make

 
 

25
 
 

26
 

执行如下命令,编译驱动。

Host#    make modules

 

27
 
 

28

执行如下命令,将生成的IgH EtherCAT主站程序安装至指定路径下。

Host#    make install
systemdsystemunitdir=/home/tronlong/EtherCAT/__install


29


30

执行如下命令,将驱动文件拷贝至"__install/modules/"目录下。

Host#    mkdir
-p __install/modules

Host#    cp
./master/ec_master.ko ./__install/modules/

Host#    cp
./devices/ec_generic.ko ./__install/modules/

 

31

4.2     
igh_ethercat_dc_motor案例编译

igh_ethercat_dc_motor案例的编译需基于IgH EtherCAT主站程序,请先编译IgH EtherCAT主站程序。

请将案例"igh_ethercat_dc_motor\src\"目录拷贝至Ubuntu工作目录下,进入src目录执行如下命令修改Makefile相关内容为IgH EtherCAT主站程序对应目录。

Host#    vi Makefile


32
 
 

33

然后执行如下命令,加载SDK环境变量并进行编译。编译完成后,将在当前目录下生成可执行文件。

Host#    source /home/tronlong/SDK/environment-setup-aarch64-poky-linux

Host#    make


34

5         
关键代码

(1)       
创建EtherCAT Master。


35

(2)       
创建域。


36

(3)       
配置PDO。

 

37

(4)       
为域注册PDO条目。

 

38
 

(5)       
激活Master。


39

(6)       
修改当前进程优先级。


40

(7)       
进入循环周期任务。


41

(8)       
在周期任务中设置驱动器操作模式、加速度和减速度,分别发送0x6、0x7、0xF使驱动器处于ON状态。


42

(9)       
发送目标速度,转动电机。

 

43
 

6         
Xenomai简介

Xenomai是一个免费开源的Linux平台实时框架,通过使用与Linux内核并行运行的实时协同内核(real-time co-kernel)处理所有对时间要求严格的活动,例如处理中断和调度实时线程。Cobalt core比原生Linux与RT-Linux内核具有更高的优先级。

 

44
 
 

45
 

6.1   
编译说明

案例使用的Xenomai版本为3.1.1,开发包为案例"igh_ethercat_dc_motor\xenomai\src\"目录下的xenomai-v3.1.1-g8b2052e.tar.gz,将其拷贝至Ubuntu工作目录下,执行如下命令进行解压。

Host#    mkdir Xenomai

Host#    tar
-xvf xenomai-v3.1.1-g8b2052e.tar.gz
-C Xenomai/


46

进入解压目录,执行如下命令在当前目录生成configure文件。

Host#    ./scripts/bootstrap


47

执行如下命令,加载SDK环境变量并进行配置,请确保已正确安装交叉编译工具。

Host#    source /home/tronlong/SDK/environment-setup-aarch64-poky-linux

Host#    ./configure --build=i686-pc-linux-gnu
--host=aarch64-poky-linux --disable-debug --enable-smp --with-core=cobalt

 

48
 
 

49

Host#    mkdir
__install   //创建__install文件夹用于存放生成的文件

Host#    make
DESTDIR=/home/tronlong/Xenomai/__install
install


50

编译完成后,将在__install目录下生成usr文件夹。

 

51

6.2   
测试说明

为便于测试,我司提供的经验证的Xenomai测试程序为案例"igh_ethercat_dc_motor\xenomai\images\xenomai-v3.1.1-g8b2052e\"目录下xenomai-v3.1.1-g8b2052e.tar.gz压缩包,在Ubuntu下解压即可得到Xenomai测试程序文件夹。

请使用已替换内核的Linux系统启动卡启动评估板,将Xenomai测试程序文件夹整个拷贝至评估板文件系统,执行如下命令拷贝Xenomai相关文件和设置动态链接库。本次测试将Xenomai测试程序文件夹命名为__install。

Target#        cp -r Xenomai/__install/usr/xenomai/ /usr/

Target#        export LD_LIBRARY_PATH=/usr/xenomai/lib:$LD_LIBRARY_PATH


52

Xenomai的测试工具均位于"/usr/xenomai/bin/"目录下,可调用对应测试工具进行测试。


53

使用Cyclictest工具进行实时性能基准测试。

Target#        echo 0
> /proc/xenomai/latency

Target#        /usr/xenomai/demo/cyclictest
-t5 -p98 -m -n

 

54
 
表 2 Cyclictest测试结果说明

参数

解析

T(Thread)

线程索引和线程ID

P(Priority)

线程的优先级

I(Interval)

延迟,测量线程的预期唤醒周期

C(Count)

测量延迟的次数

Min(Minimum)

测量的最小延迟(单位us)

Act(Actual)

最近一次测量的延迟(单位us)

Avg(Average)

平均延时(单位us)

Max(Maximum)

测量的最大延迟(单位us)

如果你还想了解更多嵌入式应用的相关知识,欢迎关注Tronlong创龙科技~

IgH EtherCAT主站开发案例分享——基于NXP i.MX 8M Mini的更多相关文章

  1. 基于FPGA的光口通信开发案例|基于Kintex-7 FPGA SFP+光口的10G UDP网络通信开发案例

    前言 自著名华人物理学家高锟先生提出"光传输理论",实用化的光纤传输产品始于1976年,经历了PDH→SDH→DWDM→ASON→MSTP的发展历程.本世纪初期,ASON/OADM ...

  2. 「含源码」关于NXP IMX8 Mini的图形开发指南(GPU)案例分享!

    前言 Graphical Demo框架提供了对平台相关依赖的抽象.Graphical应用的通用封装,如模型加载.纹理加载.着色器编译等,以及其它一些通用的应用逻辑处理的封装,使得使用框架的开发人员(以 ...

  3. 基于Zynq平台的EtherCAT主站方案实现

    作者:陈秋苑 谢晓锋 陈海焕 广州虹科电子科技有限公司 摘 要:EtherCAT 是开放的实时以太网通讯协议,由德国倍福自动化有限公司研发.EtherCAT 具有高性能.低成本.容易使用等特点,目前在 ...

  4. 【实操填坑】在树莓派上编译 EtherCAT IgH Master 主站程序

    官网下载地址:https://etherlab.org/download/ethercat/  (可list查看文件列表)https://etherlab.org/download/ethercat/ ...

  5. 【案例分享】SpreadJS金融行业应用实践,开发基于Web Excel的指标补录平台

    SpreadJS作为一款基于 HTML5 的纯前端电子表格控件,以“高速低耗.高度类似Excel.可无限扩展”为产品特色,提供移动跨平台和浏览器支持,可同时满足 .NET.Java.App 等应用程序 ...

  6. 使用Jquery+EasyUI 进行框架项目开发案例讲解之四 组织机构管理源码分享

    http://www.cnblogs.com/huyong/p/3404647.html 在上三篇文章  <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享> ...

  7. 使用Jquery+EasyUI 进行框架项目开发案例讲解之三---角色管理源码分享

    使用Jquery+EasyUI 进行框架项目开发案例讲解之三 角色管理源码分享    在上两篇文章  <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享> ...

  8. 使用Jquery+EasyUI 进行框架项目开发案例讲解之二---用户管理源码分享

    使用Jquery+EasyUI 进行框架项目开发案例讲解之二 用户管理源码分享   在上一篇文章<使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享>我们分享 ...

  9. 【推荐】使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享

    使用Jquery+EasyUI 进行框架项目开发案例讲解之一 员工管理源码分享   在开始讲解之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery的U ...

  10. 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享

    使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery ...

随机推荐

  1. iOS中atomic修饰符的底层实现

    在iOS中,atomic表示一个类的属性getter/setter具有原子性.那么iOS底层是如何保证这种原子性的呢? 我们有一个类A,它有一个属性X具有atomic: @property (atom ...

  2. DNS(1) -- DNS服务及dns资源类型

    目录 1.1 DNS服务概述 1.2 DNS域名结构 1.3 DNS解析原理 1.3.1 DNS查询类型 1.3.2 解析答案 1.4 DNS资源记录类型 1.1 DNS服务概述 DNS(Domain ...

  3. 教你如何破解虚拟机root密码

    一.开机时按e键,即可进入grub编辑界面,光标选择第一条,e表示进入编辑模式. 当机器开机出现如图1所示的kernel菜单后,按e键. 二.将光标移动到以linux开头的行,对图2中标注的位置进行修 ...

  4. uiautomator2使用方法

    一.设备连接 1.usb单设备连接 d = u2.connect() 2.usb多设备连接 d = u2.connect("90bf8faf") # 多台设备填写device即可 ...

  5. 适用于任何设备的屏幕共享应用程序 – Mirroring360

    Mirroring360 适用于 Windows.Mac.iOS.Android 和 Chromebook 设备的屏幕镜像和屏幕共享,非常适合商务和教育! 屏幕共享应用程序可以帮助增强业务专业人员,讲 ...

  6. ETSI GS MEC 013,UE 位置 API

    目录 文章目录 目录 版本 功能理解 Relation with OMA APIs Relation with OMA API for Zonal Presence Relation with OMA ...

  7. 继承与ER图

    会员是用户吗? 实体与集合 er图叫实体联系图.什么是实体?是现实中存在的事物个体,用户背后是实际存在的单个人. 对象->实体 类->实体的集合 er图描述的是实体间的联系 会员是真实存在 ...

  8. 一款功能强大的Python工具,一键打包神器,一次编写、多平台运行!

    1.项目介绍 Briefcase是一个功能强大的工具,主要用于将Python项目转化为多种平台的独立本地应用.它支持多种安装格式,使得Python项目能够轻松打包并部署到不同的操作系统和设备上,如ma ...

  9. CF437E The Child and Polygon

    The Child and Polygon 题解 这世界这么大,遇到了这个奇奇怪怪的题. 这道题其实可以很自然的联想到卡特兰数. 在卡特兰数的计数中,有这么一个意义:\(C_n\) 表示把有 \(n+ ...

  10. Adobe软件资源 PS PR AE等等

    整理了一波Adobe软件,19年20年21年Mac版本的都有,关注Rand_cs即可领取