陈工-创龙科技 发表于 2025-8-4 16:32:05

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

前言本文档主要演示TLT113-EVM评估板基于IgH EtherCAT控制伺服电机。本文档适用开发环境:Windows开发环境:Windows 7 64bit、Windows 10 64bitLinux开发环境:Ubuntu18.04.4 64bit虚拟机:VMware15.5.5U-Boot:U-Boot-2018.07Kernel:Linux-RT-5.4.61LinuxSDK: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文件夹,具体说明如下。
https://file1.elecfans.com/web3/M00/27/C5/wKgZO2iQYZSAD15FAAArCSNwzQo585.png
IgH EtherCAT简介IgH EtherCAT为运行于Linux系统的免费开源EtherCAT主站程序,框架如下所示。
https://file1.elecfans.com/web3/M00/27/B5/wKgZPGiQYZ2AJujzAAFLASU3li4860.png图 1
IgH EtherCAT主站通过构建Linux字符设备,应用程序通过对字符设备的访问实现与EtherCAT主站模块的通信。IgH EtherCAT开发包提供EtherCAT工具,该工具提供各种可在Linux用户层运行的命令,可直接实现对从站的访问和设置,如设置从站地址、显示总线配置、显示PDO数据、读写SDO参数等。IgH EtherCAT官网:https://www.etherlab.org/en/ethercat。案例说明案例功能:EtherCAT通讯周期时间为1ms,控制伺服电机正转和反转,并通过串口循环打印EtherCAT通讯周期时间的最大值和最小值。
[*]正转:伺服电机目标速度从0加速到10000,当达到10000速度后,控制伺服电机减速至0,循环运行。
[*]反转:伺服电机目标速度从0加速到-10000,当达到-10000速度后,控制伺服电机减速至0,循环运行。

https://file1.elecfans.com/web3/M00/27/C5/wKgZO2iQYaaAawCqAACJBUuhKHM771.png图 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.gzTarget# cd ..Target# dd if=boot.fex of=/dev/mmcblk0p4Target# cp modules/5.4.61-rt37-gb1bd4aa /lib/modules/ -rTarget# syncTarget# reboot
https://file1.elecfans.com/web3/M00/27/C5/wKgZO2iQYbGAMV0GAAAmjJFXR-w208.png图 3https://file1.elecfans.com/web3/M00/27/B5/wKgZPGiQYbGAWGb7AAAdG7ynXeg036.png图 4 Linux-RT内核
案例测试请按下图所示使用网线连接评估板ETH0(RGMII)网口和伺服驱动器A的IN网口,将伺服驱动器A的OUT网口使用网线连接至伺服驱动器B的IN网口。
https://file1.elecfans.com/web3/M00/27/C5/wKgZO2iQYcWAZu2zABZz8RdSXSY377.png图 5https://file1.elecfans.com/web3/M00/27/B5/wKgZPGiQYcSABLr2AAkJCTEqOy0981.png图 6

评估板上电启动后,在U-Boot倒计时结束之前按下空格键进入U-Boot命令行模式,执行如下命令配置U-Boot环境变量,隔离CPU1,提高CPU1核心线程运行的实时性。U-Boot=> setenv setargs_sd setenvbootargs 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=1U-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=1U-Boot=> saveenvU-Boot=> resethttps://file1.elecfans.com/web3/M00/26/FE/wKgZO2iJg0OALZrAAABMNrMzXfI431.png图 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=1isolcpus=1U-Boot=> setenv setargs_sd setenvbootargs 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=1isolcpus=1U-Boot=> saveenvU-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.gzhttps://file1.elecfans.com/web3/M00/27/B5/wKgZPGiQYheAYv00AAAbUMfJu5M689.png图 8
执行如下命令,查询评估板网卡物理地址。Target# ifconfighttps://file1.elecfans.com/web3/M00/27/C5/wKgZO2iQYjeAH7BmAABZ4b2rq-c508.png图 9
执行如下命令,加载驱动模块,命令中"F2:96:91:7F:03:D7"为评估板网卡物理地址,请根据实际情况修改。Target# insmod -f /root/_install/modules/ec_master.ko main_devices=F2:96:91:7F:03:D7https://file1.elecfans.com/web3/M00/27/B5/wKgZPGiQYkCAI4GAAAAiORZzc3Q673.png图 10
执行如下命令,拷贝EtherCAT主站相关文件至评估板文件系统。Target# mkdir /etc/sysconfigTarget# cp _install/etc/sysconfig/ethercat /etc/sysconfigTarget# cp /root/_install/modules/ec_master.ko /lib/modules/5.4.61-rt37-gb1bd4aa/ //模块驱动名称可通过"uname -r"查看Target# depmod -ahttps://file1.elecfans.com/web3/M00/27/B5/wKgZPGiQYkmAO7S-AAAR0i_wjuM208.png图 11
执行如下命令,启动EtherCAT主站。Target# /root/_install/etc/init.d/ethercat starthttps://file1.elecfans.com/web3/M00/27/C5/wKgZO2iQYlCAVEd0AAANAf9WEMo958.png图 12
执行如下命令,加载ec_generic.ko驱动文件。Target# insmod -f /root/_install/modules/ec_generic.kohttps://file1.elecfans.com/web3/M00/27/C5/wKgZO2iQYliANEcqAAA9R-9oHtI993.png图 13
执行如下命令,添加IgH动态链接库路径。Target# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/_install/libhttps://file1.elecfans.com/web3/M00/27/B5/wKgZPGiQYmKAbQBvAAAJsvCgHi8922.png图 14
以太网驱动在传输以太网帧时使用到ksoftirq软中断,若ksoftirq软中断不能及时响应,将会影响测试实时性。执行如下命令,查看ksoftirq pid,可看到运行在CPU0上的ksoftirq pid为9,运行在CPU1上的ksoftirq pid为20。
Target# ps aux | grep ksoftirqhttps://file1.elecfans.com/web3/M00/27/C5/wKgZO2iQYm6ANx2xAAATpXi1NI0244.png图 15
执行如下命令,更改ksoftirq软中断调度策略及优先级。设置中断调度策略为SCHED_FIFO,优先级为10。Target# chrt -f -p 10 9Target# chrt -f -p 10 20https://file1.elecfans.com/web3/M00/27/B5/wKgZPGiQY1uAVjzbAAAGq-yFCHg757.png图 16
执行如下命令查询设置结果,打印下图所示信息,表示设置成功。Target# chrt -p 9Target# chrt -p 20https://file1.elecfans.com/web3/M00/27/C5/wKgZO2iQY2qACl1zAAAYHaUQ5mE119.png图 17
将案例bin目录下的igh_ethercat_dc_motor可执行文件拷贝至评估板文件系统,执行如下命令查看参数信息。Target# ./igh_ethercat_dc_motor --helphttps://file1.elecfans.com/web3/M00/27/B5/wKgZPGiQY3SAVtLCAAAcfeuYywY318.png图 18
执行如下命令,在CPU1核心上运行程序,控制两台伺服电机同时正转。Target# taskset -c 1 ./igh_ethercat_dc_motor -d 0https://file1.elecfans.com/web3/M00/27/B5/wKgZPGiQY42AS6vTAAEJzv5EHj4653.png图 19
https://file1.elecfans.com/web3/M00/27/C5/wKgZO2iQY42AMxlvAACvNmkR5vc782.png图 20
按下"Ctrl + C",停止运行程序。https://file1.elecfans.com/web3/M00/27/C5/wKgZO2iQY6iAO9YNAAB4Sgy-ZhM201.png图 21
执行如下命令,在CPU1核心上运行程序,控制两台伺服电机同时反转。Target# taskset -c 1 ./igh_ethercat_dc_motor -d 1https://file1.elecfans.com/web3/M00/27/C5/wKgZO2iQY7CAHLbZAAELPLGSRQg551.png图 22
https://file1.elecfans.com/web3/M00/27/C5/wKgZO2iQY7iANgNcAACwPKqJnLQ837.png图 23
按下"Ctrl + C",停止运行程序。https://file1.elecfans.com/web3/M00/27/C6/wKgZO2iQY8GABn3tAABwOmzSZSc625.png图 24
参数解析:
[*]latency:等待唤醒时间(ns)。
[*]period:EtherCAT通讯周期时间(ns)。
[*]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--[版本号].tar.gz拷贝至Ubuntu工作目录,执行如下命令进行解压。Host# mkdir EtherCATHost# tar -zxf ethercat-stable-1.5-gcd0d17d-20210723.tar.gz -C EtherCAT/https://file1.elecfans.com/web3/M00/27/B6/wKgZPGiQY8iAQ7qNAABrIoul6J0128.png图 25
执行如下命令,安装编译所需的软件。Host# sudo apt-get install autoconfHost# sudo apt-get install libtoolhttps://file1.elecfans.com/web3/M00/27/C6/wKgZO2iQY86ARJNRAAH224_IyuM684.png图 26
执行如下命令,配置交叉编译工具链。Host# sudo gedit /etc/profile

https://file1.elecfans.com/web3/M00/27/C6/wKgZO2iQY9aAU_TIAAAWhgmMqMA701.png图 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 https://file1.elecfans.com/web3/M00/27/C6/wKgZO2iQY92AIdnpAADnHZAyfjs786.png图 28
执行如下命令,加载环境变量。Host# source /etc/profile
https://file1.elecfans.com/web3/M00/27/C6/wKgZO2iQY-iATwwSAAAhNlcixHY749.png图 29
进入解压目录,执行如下命令修改configure.ac和Makefile.am文件屏蔽pkg-config相关配置,以免影响正常编译。Host# cd EtherCAT/Host# vim configure.acHost# vim lib/Makefile.amhttps://file1.elecfans.com/web3/M00/27/C6/wKgZO2iQY-2AAvS7AAC_tRSm9dw864.png图 30
configure.ac文件修改内容如下:
#PKG_PROG_PKG_CONFIG //添加注释符#PKG_INSTALLDIR() //添加注释符https://file1.elecfans.com/web3/M00/27/B6/wKgZPGiQY_OAaPESAAAi-Ad1QOc346.png图 31 configure.ac
Makefile.am文件修改内容如下:
#pkgconfig_DATA = libethercat.pc //添加注释符https://file1.elecfans.com/web3/M00/27/C6/wKgZO2iQY_qAH0dVAABHcfGMrXE654.png图 32 Makefile.am
执行如下命令生成configure文件。Host# ./bootstraphttps://file1.elecfans.com/web3/M00/27/B6/wKgZPGiQZACABjN4AAGxOOgQ8bw096.png图 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
https://file1.elecfans.com/web3/M00/27/B6/wKgZPGiQZAmAS_1jAAIAJj1E6Xo982.png图 34https://file1.elecfans.com/web3/M00/27/C6/wKgZO2iQZAmAbl_qAADtA9pAhDI686.png图 35

执行如下命令,编译主站程序开发包。Host# makehttps://file1.elecfans.com/web3/M00/27/B6/wKgZPGiQZBmAM7OgAAHO5q4HipE637.png图 36https://file1.elecfans.com/web3/M00/27/B6/wKgZPGiQZBmAQrwgAAHYehnRSfg724.png图 37

执行如下命令,编译驱动。Host# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- moduleshttps://file1.elecfans.com/web3/M00/27/B6/wKgZPGiQZHaAVwIyA***XnuUfwqE445.png图 38https://file1.elecfans.com/web3/M00/27/C6/wKgZO2iQZHaALZt-AAHkgDPDjhc617.png图 39
执行如下命令,将生成的IgH EtherCAT主站程序安装至指定路径下。Host# make instalhttps://file1.elecfans.com/web3/M00/27/C6/wKgZO2iQZJuAAx8MAAIFq6aZnfM669.png图 40https://file1.elecfans.com/web3/M00/27/B6/wKgZPGiQZI-ANSdUAAInY7rDfpU679.png图 41

执行如下命令,将驱动文件拷贝至"_install/modules/"目录下。Host# mkdir -p _install/modulesHost# cp ./master/ec_master.ko ./_install/modules/Host# cp ./devices/ec_generic.ko ./_install/modules/https://file1.elecfans.com/web3/M00/27/C6/wKgZO2iQZKuAFKqHAAB2njX-ZPI652.png图 42
igh_ethercat_dc_motor案例编译igh_ethercat_dc_motor案例的编译需基于IgH EtherCAT主站程序,请先编译IgH EtherCAT主站程序。请将案例src源码目录拷贝至Ubuntu工作目录下,进入src目录执行如下命令修改Makefile相关内容为IgH EtherCAT主站程序对应目录,如下图所示。Host# vim Makefilehttps://file1.elecfans.com/web3/M00/27/B6/wKgZPGiQZLWAB93nAABYx--l_kc321.png图 43https://file1.elecfans.com/web3/M00/27/C6/wKgZO2iQZLWAUWhgAAD0Hg--f7c293.png图 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"。https://file1.elecfans.com/web3/M00/27/B6/wKgZPGiQZMSAMrMdAAEhWaC5Yu4739.png图 45
​由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!

页: [1]
查看完整版本: 国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—IgH EtherCAT主站开发案例