Linux上的EtherCAT主站软件

EtherCAT和Linux

今天, EtherCAT EtherCAT已经成为世界上最主流的实时以太网解决方案之一。EtherCAT技术组织 (ETG) 是负责维护EtherCAT技术向所有潜在用户开放。 ETG是世界上拥有最多成员的现场总线组织。 会员名单 可以在其主页上找到。

在x86 PC上,最主要的操作系统仍然是微软 Microsoft(c) Windows(c),而嵌入式系统中使用的操作系统更加多样化。在过去的几年里,基于ARM的高端微控制器变得越来越复杂,这样一来操作系统的多样性已经大大降低了 -- 实时Linux已经是这类MCU最流行的实时操作系统(RTOS)。这里也可以看到acontis的EtherCAT客户对操作系统的使用发生了怎样的变化

考虑到上述事实,很明显在Linux上运行EtherCAT主站已经成为许多客户应用程序的首选。使用Linux会带来一些必须克服的挑战。除了使用有专利保护的EtherCAT技术时可能会出现GPL的问题外,性能也是关键的技术挑战。  

acontis EC-Master EtherCAT Linux主站协议栈

acontis EtherCAT主站协议栈软件体系结构已被  OSADL 认证符合GPL规范,因为所有软件都在用户模式下运行,因此不会出现专利冲突。此外,该体系结构与用户模式的实时驱动程序一起保证了最高的实时性能。

EtherCAT主站软件EC-Master支持x86、x64、ARM、AArch64和PowerPC的Linux体系架构。通过支持许多不同的CPU和以太网卡,acontis为许多控制器提供Linux EtherCAT解决方案的货架产品。

由于其可扩展性和模块化设计,EC Master可以运行在Cortex-M7控制器的低端系统上,也可以运行在高端CPU上,如Intel® Core™-i7。

主站代码设计只在Linux用户空间中运行。这使得开发过程快速、方便,并且符合GNU通用公共许可证(GPL)。为了获得更高的刷新率(更短的循环周期),在周期循环部分的实现中要求不能加入阻塞的内核功能(API)。

Linux网卡驱动结构

EC-Master主站协议栈通过标准以太网卡(MAC)发送和接收EtherCAT帧与从站进行通信。Linux系统为不同类型的网卡提供了不同的网络驱动程序。尽管由于Linux包含的网络协议栈和未针对高性能循环操作进行优化的驱动程序代码,性能可能很差,并且通常不能保证实时性能。但是EC-Master仍然可以通过网络适配器的独立SOCK_RAW接口作为Linux网络驱动程序收发数据。由于SOCK_RAW通常在每个Linux发行版的内核上都可用,因此可以使用预编译的EcMasterDemo来评估EC-Master的通用功能,而无需编译任何指定目标平台的文件。对于分布式从站,例如实现分布式时钟,必须保持实时性能。在这种情况下,SockRaw很可能无法及时发送和接收帧,EtherCAT从站将拒绝该操作。因此,SOCK_RAW只适用于初期评估目的,后续仍要替换为acontis实时驱动程序,如下所述。

acontis 实时驱动架构

acontis实时驱动程序取代标准的Linux以太网网卡(MAC)驱动程序,用于实时EtherCAT通信。驱动程序运行在用户空间,可以实现高性能的循环操作直接管理MAC。它需要通过一个叫做atemsys 并且符合GPL的内核模块直接访问MAC。必须重新编译atemsys内核模块以匹配运行的目标内核。内核模块编译的方法可以在Linux发行版的文档中找到。另外还包括了一个yocto linux的构建方法。

实时驱动程序不受GPL限制,所以需要有授权。它需要在Linux目标上加载atemsys才能运行。Atemsys模块加载后,获得对MAC 硬件的访问授权,这样它可以通过完全绕过Linux网络协议栈并快速地发送和接收数据帧。标准的Linux网络适配器驱动程序不能与acontis实时驱动程序在设备上同时运行。因此,需要通过删除驱动程序的操作来解除操作系统对网卡的绑定,使用虚拟sys-fs解除实例绑定,或者在嵌入式设备的情况下通过修改Linux设备树来解除绑定。

atemsys随EC-Master一起提供,如果EC-Master包含较新版本,也会随之更新。

Architecture 3: acontis Real-time Driver with Linux Device Support

The Linux operating system provides drivers for most common Ethernet controllers and the related physical transceivers (PHY). The manufacturer specific PHY circuit is handled by an dedicated kernel driver.
To make use of this infrastructure, the acontis kernel module atemsys has to be included in the Linux device tree as an official driver for the Ethernet controller. As a result atemsys can interact with Linux drivers.
Depending on the hardware architecture, atemsys can grants access to the MDIO bus to the Linux drivers, or request MDIO operations by Linux drivers.
The PHY “OS Driver” functionality is configured exclusively through the Linux device tree and doesn’t required any additional configuration at the application level.

实时网卡驱动 (Link Layers)

  • Linux network driver (emllSockRaw): x86, x64, ARM, AArch64, PPC
  • Intel Pro/100 (emllI8255x): x86
  • Intel Pro/1000 (emllI8254x): x86, x64, ARM, AArch64
  • Intel Cyclone V (emllDW3504): ARM
  • Realtek 100MBit (emllRTL8139): x86
  • Realtek Gigabit (emllRTL8169): x86, x64, ARM, AArch64
  • Texas Instruments AM33xx, AM43xx, AM57xx (emllCPSW): ARM
  • Texas Instruments AM33xx, AM57xx (emllICSS): ARM
  • NXP TSEC/eTSEC controller, LS1021A (emllETSEC): ARM, PPC
  • NXP i.MX6, i.MX7, i.MX8 (emllFslFec): ARM
  • Renesas RZ/G1E (emllSHEth): ARM
  • Xilinx Zynq-7000 , UltraScale (emllGEM): ARM, AArch64
  • Beckhoff CCAT (emllCCAT): x86, x64, ARM
  • Nvidia, Jetson TX2 (emllI8254x): AArch64
  • STMicroelectronics STM32MP1 (emllDW3504): ARM

内核版本和发行版

EC-Master可以与任何支持自定义内核模块编译的Linux发行版一起使用,比如Ubuntu、Debian等。atemsys内核模块支持旧版本内核,最低至2.6.18。通常需要由实时驱动支持特定的硬件和内核(CONFIG_PREEMPT_RT或Xenomai)。

More Information