NUC980 DIY项目大挑战 - EtherCAT实现

RT-Thread物联网操作系统 2022-05-18 09:20:55

本文由RT-Thread论坛用户@lg28870983原创发布:https://club.rt-thread.org/ask/article/160414965e80294e.html


1.背景

最近计划DIY一个EtherCAT控制器,一直在看资料和选型,初步定了NUC980的方案,主要是看中NUC980的RAM比较大,采购还算方便(最近缺芯,大家都懂)。

选定硬件之后,NUC980跑什么系统呢?从以往经验来看,ARM9一般跑linux比较多,资源也好找,同时官方提供BSP。但这次任务有点特殊,EtherCAT对实时性要求比较高,linux不是最合适的。结合MCU开发经验,就准备上个RTOS,以前M3和M4的芯片,主要用FreeRTOS,最近也开始用RT-Thread。新唐官方也推出了NUC980的RT-Thread版BSP,对开发者非常友好,最终决定了NUC980+RT-Thread的方案。

刚好最近官方有个DIY项目官方活动,就报了名。
2.EtherCAT主站软件方案

EtherCAT本身还是比较复杂的,我们就不自己造轮子了,考虑用开源方案,毕竟硬件成本这么低,商用方案是真的用不起啊!
现在开源主站主要就两种,SOEM和IGH(相关的资料网上很多,这儿就不展开了),IGH只支持linux,所以只能选SOME,最新版本是SOEM1.4,本次移植就基于该版本。
3. 移植过程

3.1 RT-Thread 下载
本次移植基于最新发布的release4.1.0, 这个可以到github下载,最近Gitee也更新了。移植EtherCAT之前,首先把Nuvoton的BSP跑起来。这个参考官方的文档就可以了。

3.2 Some移植
下载soem-1.4.0,将整个目录放在rt-thread项目里,下图是我的目录,供参考
在some-1.4.0及其子目录中需要手工编辑SConscript脚本,这儿就不展开了。后续我把源码打包发上来。

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

Some已经给出了很多操作系统移植,我的移植是基于rtk,这个是嵌入式系统,和我们的开发环境最接近。

3.2.1 osal.c移植
主要内容是实现osal_usleep和osal_gettimeofday两个函数。
我开始思路是自定义一个定时器用于EtherCAT,当时用了Timer4。等实现差不多了,发现系统时钟用的是Timer5,很多地方功能重复。最终和系统共用Timer5,省了个Timer,代码也简化了不少。下面就是改动过的相关代码,osal_timer_init这个初始化函数要在启动EhterCAT功能之前调用。

.................

...全文
3050 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-嵌入式 发布问题, 以便更快地解决您的疑问
资源下载链接为: https://pan.quark.cn/s/ab6ed9424307 本文将详细介绍如何将RT-Thread实时操作系统移植到NUC980微控制器上,并实现对汇川科技IS620N EtherCAT从站控制器的驱动支持。项目名为“nuc980_rt_thread_soem_is620n”,涉及嵌入式系统开发中的关键领域,包括实时操作系统、工业通信协议和微控制器硬件接口。 NUC980是一款专为工业自动化和汽车电子设计的高性能32位ARM Cortex-M4F微控制器,具备强大的处理能力和丰富的外设接口,能够满足高实时性应用场景的需求。在本项目中,NUC980作为核心处理器,运行RT-Thread任务并控制IS620N EtherCAT从站。RT-Thread是一款开源、可裁剪的物联网实时操作系统,提供多任务调度、内存管理和网络通信等基础服务,适合资源受限的嵌入式设备。 移植RT-Thread到NUC980的步骤如下:首先进行初始化设置,包括堆栈配置、时钟源选择和中断向量表映射;其次开发硬件抽象层(HAL),编写NUC980的硬件驱动,如GPIO、定时器和串口等;接着移植RTOS内核,实现任务调度、信号量、互斥锁和消息队列等功能;然后为IS620N开发设备驱动,实现EtherCAT协议的底层操作,如PDO和SDO;最后创建应用层接口,方便应用程序与IS620N交互,控制电机等设备。 完成移植后,开发者可以利用RT-Thread的组件和中间件构建复杂系统,例如通过TCP/IP协议栈实现远程监控或使用GUI库创建人机界面。项目压缩包中的“nuc980-ethercat”文件可能包含移植过程中的源代码、配置文件、编译脚本和文档等资源,对学习和复现整个流程非常有帮助。开发者可以通过研究这些资料,了解如何将RT-Thread与工业通信协议结合,为类似应用场景提供参考。

904

社区成员

发帖
与我相关
我的任务
社区描述
在 RT-Thread 嵌入式开源社区,交流问题,我们一起学习技能,分享经验,发展职业前途,打造嵌入式开发者的乐园!
mcu开源 企业社区
社区管理员
  • RT-Thread物联网操作系统
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
RT-Thread物联网操作系统社区希望打造一个开发者学习交流的平台,在这里提供代码实例、应用案例、技术文档、开发技巧等。进官方交流群,欢迎加小师弟微信:rtthread2020

试试用AI创作助手写篇文章吧