首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—IgH EtherCAT主站开发案例

国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—IgH EtherCAT主站开发案例

原创
作者头像
创龙科技Tronlong
发布2025-08-04 16:18:01
发布2025-08-04 16:18:01
1130
举报

前 言

本文档主要演示TLT113-EVM评估板基于IgH EtherCAT控制伺服电机。本文档适用开发环境:

Windows开发环境:Windows 7 64bit、Windows 10 64bit

Linux开发环境:Ubuntu18.04.4 64bit

虚拟机:VMware15.5.5

U-Boot:U-Boot-2018.07

Kernel:Linux-RT-5.4.61

LinuxSDK:T113_Tina5.0-V1.0(Linux)

IgH EtherCAT:ethercat-stable-1.5-gcd0d17d-20210723

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

伺服电机:台达ECMA-C10401GS

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

IgH EtherCAT简介

IgH EtherCAT为运行于Linux系统的免费开源EtherCAT主站程序,框架如下所示。

图 1
图 1

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,循环运行。
图 2
图 2

本案例需基于Linux-RT系统测试,请按如下方法切换为Linux-RT系统。

我司提供经验证的Linux-RT内核镜像文件和内核模块,位于产品资料“4-软件资料\Demo\igh_ethercat_dc_motor\driver\nand\”目录下,请将nand目录下的Linux-RT内核镜像文件和内核模块拷贝至评估板Linux系统启动卡任意目录。

备注:若使用eMMC配置评估板,内核镜像文件和内核模块,位于产品资料“4-软件资料\Demo\igh_ethercat_dc_motor\driver\emmc\”目录下。

将评估板上电启动进入文件系统,执行如下命令,分别替换内核镜像和内核模块至Linux系统启动卡,评估板重启生效。

备注:若使用eMMC配置评估板,需修改Linux系统启动卡对应设备节点为"/dev/mmcblk1p4"。

Target# cd nand/modules/

Target# tar -xf 5.4.61-rt37-gb1bd4aa.tar.gz

Target# cd ..

Target# dd if=boot.fex of=/dev/mmcblk0p4

Target# cp modules/5.4.61-rt37-gb1bd4aa /lib/modules/ -r

Target# sync

Target# reboot

图 3
图 3
图 4 Linux-RT内核
图 4 Linux-RT内核

案例测试

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

图 5
图 5
图 6
图 6

评估板上电启动后,在U-Boot倒计时结束之前按下空格键进入U-Boot命令行模式,执行如下命令配置U-Boot环境变量,隔离CPU1,提高CPU1核心线程运行的实时性。

U-Boot=> setenv setargs_sd setenv bootargs clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${sd_root} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1

U-Boot=> setenv setargs_nand_ubi setenv bootargs ubi.mtd=${mtd_name} clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${nand_root} rootfstype=${rootfstype} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1

U-Boot=> saveenv

U-Boot=> reset

图 7
图 7

备注:若使用eMMC配置评估板,请执行如下命令配置U-Boot环境变量。

U-Boot=> setenv setargs_emmc setenv bootargs clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${emmc_root} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1

U-Boot=> setenv setargs_sd setenv bootargs clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${sd_root} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1

U-Boot=> saveenv

U-Boot=> reset

为便于测试,我司提供的经验证的IgH EtherCAT主站程序为案例"igh_ethercat\images\nand\"目录下的ethercat-stable-1.5-gcd0d17d.tar.gz压缩包。请将其拷贝至评估板文件系统任意目录下,执行如下命令解压得到_install文件夹。

备注:若使用eMMC配置评估板,路径为"igh_ethercat\images\emmc\"目录下。

Target# tar -zxf ethercat-stable-1.5-gcd0d17d.tar.gz

图 8
图 8

执行如下命令,查询评估板网卡物理地址。

Target# ifconfig

图 9
图 9

执行如下命令,加载驱动模块,命令中"F2:96:91:7F:03:D7"为评估板网卡物理地址,请根据实际情况修改。

Target# insmod -f /root/_install/modules/ec_master.ko main_devices=F2:96:91:7F:03:D7

图 10
图 10

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

Target# mkdir /etc/sysconfig

Target# cp _install/etc/sysconfig/ethercat /etc/sysconfig

Target# cp /root/_install/modules/ec_master.ko /lib/modules/5.4.61-rt37-gb1bd4aa/ //模块驱动名称可通过"uname -r"查看

Target# depmod -a

图 11
图 11

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

Target# /root/_install/etc/init.d/ethercat start

图 12
图 12

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

Target# insmod -f /root/_install/modules/ec_generic.ko

图 13
图 13

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

Target# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/_install/lib

图 14
图 14

以太网驱动在传输以太网帧时使用到ksoftirq软中断,若ksoftirq软中断不能及时响应,将会影响测试实时性。执行如下命令,查看ksoftirq pid,可看到运行在CPU0上的ksoftirq pid为9,运行在CPU1上的ksoftirq pid为20。

Target# ps aux | grep ksoftirq

图 15
图 15

执行如下命令,更改ksoftirq软中断调度策略及优先级。设置中断调度策略为SCHED_FIFO,优先级为10。

Target# chrt -f -p 10 9

Target# chrt -f -p 10 20

图 16
图 16

执行如下命令查询设置结果,打印下图所示信息,表示设置成功。

Target# chrt -p 9

Target# chrt -p 20

图 17
图 17

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

Target# ./igh_ethercat_dc_motor --help

图 18
图 18

执行如下命令,在CPU1核心上运行程序,控制两台伺服电机同时正转。

Target# taskset -c 1 ./igh_ethercat_dc_motor -d 0

图 19
图 19
图 20
图 20

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

图 21
图 21

执行如下命令,在CPU1核心上运行程序,控制两台伺服电机同时反转。

Target# taskset -c 1 ./igh_ethercat_dc_motor -d 1

图 22
图 22
图23
图23

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

图 24
图 24

参数解析:

  1. latency:等待唤醒时间(ns)。
  2. period:EtherCAT通讯周期时间(ns)。
  3. exec:接收和发送EtherCAT数据时间(ns)。

案例编译

IgH EtherCAT主站程序编译

IgH EtherCAT主站程序的编译需依赖于基于Linux内核源码,请先参考《Linux系统使用手册》,配置内核选项为Linux-RT内核,编译LinuxSDK开发包,再编译IgH EtherCAT主站程序。

备注:若使用eMMC配置评估板,请参考《Linux系统使用手册》,在配置编译环境章节中配置评估板型号为"tlt113-evm-emmc",然后配置内核选项为Linux-RT内核,编译LinuxSDK开发包,再编译IgH EtherCAT主站程序。

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

Host# mkdir EtherCAT

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

图 25
图 25

执行如下命令,安装编译所需的软件。

Host# sudo apt-get install autoconf

Host# sudo apt-get install libtool

图 26
图 26

执行如下命令,配置交叉编译工具链。

Host# sudo gedit /etc/profile

图 27
图 27

在文件末尾添加如下内容:

备注:若使用eMMC配置评估板,请将路径"tlt113-evm-nand"修改为"tlt113-evm-emmc"。

export PATH=$PATH:/home/tronlong/T113/tina5.0_v1.0/out/t113_i/tlt113-evm-nand/buildroot/buildroot/host/usr/bin

图 28
图 28

执行如下命令,加载环境变量。

Host# source /etc/profile

图 29
图 29

进入解压目录,执行如下命令修改configure.ac和Makefile.am文件屏蔽pkg-config相关配置,以免影响正常编译。

Host# cd EtherCAT/

Host# vim configure.ac

Host# vim lib/Makefile.am

图 30
图 30

configure.ac文件修改内容如下:

#PKG_PROG_PKG_CONFIG //添加注释符

#PKG_INSTALLDIR() //添加注释符

图 31 configure.ac
图 31 configure.ac

Makefile.am文件修改内容如下:

#pkgconfig_DATA = libethercat.pc //添加注释符

图 32 Makefile.am
图 32 Makefile.am

执行如下命令生成configure文件。

Host# ./bootstrap

图 33
图 33

执行如下命令,进行环境配置。其中"/home/tronlong/T113/tina5.0_v1.0/out/kernel/build/"为内核源码实际路径。

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

Host# ./configure --prefix=/home/tronlong/EtherCAT/_install/ --with-linux-dir=/home/tronlong/T113/tina5.0_v1.0/out/kernel/build/ --enable-8139too=no --enable-generic=yes CC=arm-linux-gnueabi-gcc --host=arm-linux-gnueabi

图 34
图 34
图 35
图 35

执行如下命令,编译主站程序开发包。

Host# make

图 36
图 36
图 37
图 37

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

Host# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules

图 38
图 38
图 39
图 39

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

Host# make instal

图 40
图 40
图 41
图 41

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

Host# mkdir -p _install/modules

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

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

图 42
图 42

igh_ethercat_dc_motor案例编译

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

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

Host# vim Makefile

图 43
图 43
图 44
图 44

执行如下命令,进行案例编译。编译完成后,将在当前目录下生成可执行文件。

Host# CC=/home/tronlong/T113/tina5.0_v1.0/out/t113_i/tlt113-evm-nand/buildroot/buildroot/host/usr/bin/arm-linux-gnueabi-gcc make

备注:若使用eMMC配置评估板,请将路径"tlt113-evm-nand"修改为"tlt113-evm-emmc"。

图 45
图 45

​由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前 言
  • IgH EtherCAT简介
  • 案例说明
  • 案例测试
  • 案例编译
    • IgH EtherCAT主站程序编译
    • igh_ethercat_dc_motor案例编译
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档