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

电子说

1.4w人已加入

描述

前  言

本文档主要演示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文件夹,具体说明如下。

开发板

表 1

IgH EtherCAT简介

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

开发板

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

开发板

图 2

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

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

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

将评估板上电启动进入文件系统,执行如下命令,分别替换内核镜像和内核模块至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

开发板

图 4 Linux-RT内核

案例测试

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

开发板

图 5

开发板

图 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

备注:若使用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_ethercatimagesnand"目录下的ethercat-stable-1.5-gcd0d17d.tar.gz压缩包。请将其拷贝至评估板文件系统任意目录下,执行如下命令解压得到_install文件夹。

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

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

开发板

图 8

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

Target#ifconfig

开发板

图 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

执行如下命令,拷贝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

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

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

开发板图 12

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

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

开发板

图 13

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

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

开发板图 14

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

Target#ps aux | grep ksoftirq

开发板

图 15

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

Target#chrt -f -p 10 9

Target#chrt -f -p 10 20

开发板图 16

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

Target#chrt -p 9

Target#chrt -p 20

开发板

图 17

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

Target#./igh_ethercat_dc_motor --help

开发板

图 18

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

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

开发板

图 19

开发板

图 20

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

开发板

图 21

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

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

开发板

图 22

开发板

图 23

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

开发板

图 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_ethercatsrc"目录下的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

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

Host#sudo apt-get install autoconf

Host#sudo apt-get install libtool

开发板

图 26

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

Host#sudo gedit /etc/profile

开发板图 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

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

Host#source /etc/profile

开发板图 29

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

Host#cd EtherCAT/

Host#vim configure.ac

Host#vim lib/Makefile.am

开发板

图 30

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

#PKG_PROG_PKG_CONFIG //添加注释符

#PKG_INSTALLDIR() //添加注释符

开发板

图 31 configure.ac

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

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

开发板

图 32 Makefile.am

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

Host#./bootstrap

开发板

图 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

开发板

图 35

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

Host#make

开发板

图 36

开发板

图 37

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

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

开发板

图 38

开发板

图 39

开发板

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

Host#make instal

开发板

图 40

开发板

图 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

igh_ethercat_dc_motor案例编译

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

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

Host#vim Makefile

开发板

图 43

开发板

图 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

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

审核编辑 黄宇

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分