rtThread移植etherCAT主站记录

开源主站主要就SOEM和IGH两种,IGH只支持linux,SOME支持linux和rtThread,最新版本是SOEM1.4。可以到github或Gitee下载SOEM,移植EtherCAT之前,首先把Nuvoton驱动跑起来。

SOEM移植主要是三个文件 osal.c,oshw.c和nicdrv.c:

osal.c 主要是微秒及的延时和定时函数;
oshw.c 主要是网络端和本机端数据的大小端转换;
nicdrv.c 主要是网络数据收发。

1,移植osal.c:主要内容是实现osal_usleep和osal_gettimeofday两个函数。

我开始思路是自定义一个定时器用于EtherCAT,当时用了Timer4。等实现差不多了,发现系统时钟用的是Timer5,很多地方功能重复。最终和系统共用Timer5,省了个Timer。改动过的相关代码,osal_timer_init这个初始化函数要在启动EhterCAT功能之前调用。

#include <osal.h>
#include <time.h>
#include <sys/time.h>
 
 
#include <rtthread.h>
#include <rtdevice.h>
 
#include "NuMicro.h"
#include "drv_sys.h"
 
 
static rt_uint32_t us_ticks;
 
void osal_timer_init(void)
{
	rt_uint32_t cmp = ETIMER_GetCompareData(5
### 移植和配置EtherCAT主站 #### 选择合适的EtherCAT主站库 对于Linux环境下的应用,igh EtherCAT Master是一个广泛使用的选项[^2]。该库不仅具有良好的实时性能,而且被多个工业控制系统所采纳。 #### 准备开发环境 确保目标机器安装有必要的编译工具链和支持包。通常这包括但不限于`gcc`, `make`, 和内核头文件等基础组件。对于基于Debian/Ubuntu系统的设备而言,可以通过如下命令来获取这些依赖项: ```bash sudo apt-get update && sudo apt-get install build-essential linux-headers-$(uname -r) ``` #### 获取并构建igh EtherCAT Master源码 从官方GitHub仓库克隆最新版本的igh EtherCAT项目到本地计算机上,并按照README文档中的指示完成编译过程。如果是在ARM架构(如树莓派)或其他非标准平台上工作,则可能还需要额外调整Makefile以适应特定硬件特性[^1]。 #### 配置网络接口用于EtherCAT通讯 为了让Linux能够通过指定网口发送和接收EtherCAT帧数据,在启动应用程序之前需先设置好相应的参数。一般情况下只需简单地禁用IPv4协议栈即可满足需求;具体做法可以参照下面的例子执行相应指令: ```bash sudo ip link set eth0 down sudo ip addr flush dev eth0 sudo ethtool -K eth0 tx off sg off tso off gso off gro off lro off sudo ip link set eth0 up ``` 这里假设使用的是名为eth0的物理端口作为传输介质,请根据实际情况替换名称。 #### 编写控制逻辑程序并与实际设备交互 最后一步就是利用API函数编写自定义的应用层代码去管理各个slave节点的状态变化、读取传感器反馈信息或是下发动作指令给执行机构等等。这部分内容高度依赖于具体的业务场景而定,因此建议开发者仔细阅读官方提供的编程指南以及参考样例工程来进行实践探索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒听雪落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值