EtherCAT Master Software auf Linux
- EtherCAT und Linux
- acontis EC-Master EtherCAT MainDevice Stack für Linux
- Architektur 1: Linux Netzwerk Treiber basierend auf RAW sockets (SOCK_RAW)
- Architektur 2: acontis Echtzeit Treiber
- Architektur 3: acontis Echtzeit Treiber mit Linux Device Support
- Architektur 4: Linux Netzwerk Treiber basierend auf XDP sockets (AF_XDP)
- Architektur 5: Linux Netzwerk Treiber basierend auf DPDK (Data Plane Development Kit)
- Echtzeit Ethernet Treiber (Link Layers)
- Kernel Versionen und Distributionen
- Mehr Informationen
EtherCAT und Linux
Heute ist EtherCAT eine der weltweit beliebtesten Echtzeit-Ethernet-Lösungen. Die EtherCAT Technology Group (ETG) ist dafür verantwortlich, die EtherCAT-Technologie für alle potenziellen Nutzer offen zu halten. Die ETG ist die Feldbus-Organisation mit der weltweit größten Mitgliederzahl. Die Liste der Mitglieder finden Sie auf ihrer Homepage.
Während auf x86-PCs nach wie vor Microsoft© Windows© das dominierende Betriebssystem ist, sind die in Embedded-Systemen verwendeten Betriebssysteme viel zahlreicher und vielfältiger. In den letzten Jahren, in denen High-End-Mikrocontroller auf ARM-Basis immer komplexer geworden sind, hat sich diese Diversifizierung deutlich verringert, und heute ist Echtzeit-Linux das mit Abstand beliebteste Echtzeitbetriebssystem (RTOS) für solche eingebetteten MCUs. Sehen Sie hier auch, wie sich die Verwendung von Betriebssystemen für EtherCAT-Kunden von acontis verändert hat.
Angesichts dieser Trends ist es klar, dass der Betrieb eines EtherCAT-Masters unter Linux in vielen Anwendungen unverzichtbar geworden ist, aber die Verwendung von Linux bringt einige Herausforderungen mit sich, die bewältigt werden müssen. Während bei der Verwendung der patentierten EtherCAT-Technologie Überlegungen zur GPL (GNU General Public License) anzustellen sind, ist die Leistung nach wie vor die wichtigste technische Herausforderung.
acontis EC-Master EtherCAT Master Stack für Linux
Die Softwarearchitektur des EtherCAT-Master-Stacks von acontis wurde vom OSADL (Open Source Automation Development Lab) als konform mit den GPL-Regeln zugelassen, da die gesamte Software im Benutzermodus läuft und somit keine Patentkonflikte auftreten. Darüber hinaus garantiert diese Architektur in Verbindung mit Echtzeit-Benutzermodus-Treibern die höchstmögliche deterministische Echtzeitleistung.
Die EtherCAT-Master-Software EC-Master unterstützt die Linux-Architekturen x86, x64, ARM, AArch64/ARM64 und PowerPC. Ergänzt durch die Unterstützung vieler verschiedener CPUs und Ethernet-Controller bietet acontis sofort einsatzbereite Linux-EtherCAT-Lösungen für viele verschiedene Controller.
Aufgrund seiner Skalierbarkeit und seines modularen Aufbaus kann EC-Master sowohl auf Low-End-Systemen wie einem Cortex-M7-Controller als auch auf High-End-CPUs wie Intel® Core™-i7 laufen.
Der Master-Code ist so konzipiert, dass er ausschließlich im Linux-User-Space läuft. Dies ermöglicht einen schnellen und komfortablen Entwicklungsprozess und entspricht zudem der GNU General Public License (GPL). Um die extrem schnellen Aktualisierungsraten (kurze Zykluszeiten) zu erreichen, für die EtherCAT bekannt ist, erfordert die Implementierung keine blockierenden Kernel-Funktionen (APIs) im zyklischen Teil.
Architektur 1: Linux Network Driver basierend auf RAW Sockets (SOCK_RAW)
Der EC-Master-Stack kommuniziert mit den SubDevice-Geräten, indem er EtherCAT-Frames über einen Standard-Ethernet-Netzwerkadapter (MAC) sendet und empfängt. Das Linux-Betriebssystem enthält Netzwerktreiber für die verschiedenen Adapter unterschiedlicher Hersteller. Diese Linux-Netzwerktreiber können von einer Anwendung wie dem EC-Master-Stack über eine abstrahierte, unabhängige Raw-Socket-Schnittstelle namens SOCK_RAW zum Senden und Empfangen von Frames verwendet werden, obwohl die Leistung möglicherweise schlecht ist und Echtzeitanforderungen in der Regel nicht eingehalten werden können, da der Linux-Netzwerkstack und der Treibercode nicht für zyklische Hochleistungsoperationen optimiert sind.
Da die Raw-Socket-Schnittstelle in der Regel im Kernel jeder Linux-Distribution verfügbar ist, unterstützt die im Lieferumfang von EC-Master enthaltene vorkompilierte Demo-Anwendung (EcMasterDemo) SOCK_RAW und kann daher zur Bewertung der allgemeinen Funktionalität der EC-Master-Bibliothek verwendet werden, ohne dass Dateien für das Host-System kompiliert werden müssen.
Bei bestimmten SubDevice-Geräten, wie z. B. solchen, die verteilte Uhren implementieren und nutzen, müssen Echtzeitbeschränkungen eingehalten werden. In diesem Fall ist die Raw-Socket-Option höchstwahrscheinlich nicht in der Lage, Frames schnell genug zu senden und zu empfangen, sodass die EtherCAT-Geräte nicht korrekt funktionieren. Daher sollte SOCK_RAW nur für erste Evaluierungszwecke verwendet und durch den acontis-Echtzeittreiber ersetzt werden, wie unten erläutert.
Architektur 2: acontis Echtzeit Treiber
Der acontis Echtzeit-Treiber ersetzt den Standard-Linux-Ethernet-Netzwerkadaptertreiber (MAC) für die Echtzeit-EtherCAT-Nutzung. Der Treiber läuft im User Space und steuert den MAC direkt für einen leistungsstarken zyklischen Betrieb. Der Treiber erfordert direkten Zugriff auf den MAC, was durch das Kernel-Modul „atemsys“ ermöglicht wird, das unter GPL verfügbar ist. Das Kernel-Modul „atemsys“ muss kompiliert werden, damit es mit dem laufenden Kernel kompatibel ist. Informationen zum Kompilieren des Kernel-Moduls finden Sie in der Dokumentation Ihrer Linux-Distribution. Zusätzlich enthält acontis eine Build-Anleitung für Yocto Linux.
Der Echtzeittreiber ist nicht unter der GPL verfügbar und muss von acontis lizenziert werden. Er benötigt das atemsys-Kernelmodul, das auf dem Linux-Zielsystem geladen sein muss, um ausgeführt werden zu können. Sobald dies geschehen ist, erhält der Treiber Zugriff auf die MAC-Hardware und kann sehr schnell Frames senden und empfangen, da er den Linux-Netzwerkstack vollständig umgeht. Beachten Sie, dass es nicht möglich ist, den Standard-Linux-Netzwerkadaptertreiber gleichzeitig auf derselben Schnittstelle wie den acontis-Echtzeittreiber zu verwenden. Es ist erforderlich, die Netzwerkadapterinstanz zu entbinden, indem Sie den Treiber aus dem System entfernen und die Instanz mithilfe des virtuellen sys-fs entbinden oder, bei Verwendung eines eingebetteten Systems, den Linux-Device-Tree ändern.
atemsys wird mit EC-Master ausgeliefert und bei einer Aktualisierung von EC-Master ebenfalls aktualisiert.
Architektur 3: acontis Echtzeit Treiber mit Linux Device Support
Das Linux-Betriebssystem stellt Treiber für die meisten gängigen Ethernet-Controller und die zugehörigen physikalischen Transceiver (PHY) bereit. Die herstellerspezifische PHY-Schaltung wird von einem dedizierten Kernel-Treiber verwaltet.
Um diese Infrastruktur nutzen zu können, muss das acontis-Kernelmodul atemsys als offizieller Treiber für den Ethernet-Controller in den Linux-Gerätebaum aufgenommen werden. Dadurch kann atemsys mit Linux-Treibern interagieren.
Je nach Hardwarearchitektur kann atemsys den Linux-Treibern Zugriff auf den MDIO-Bus gewähren oder MDIO-Operationen von Linux-Treibern anfordern.
Die PHY-„OS-Treiber”-Funktionalität wird ausschließlich über den Linux-Gerätebaum konfiguriert und erfordert keine zusätzliche Konfiguration auf Anwendungsebene.
Architektur 4: Linux Netzwerk Treiber basierend auf XDP sockets (AF_XDP)
Bei diesem Ansatz kommuniziert der EC-Master-Stack mit den SubDevices, indem er EtherCAT-Frames über den Linux-XDP-Kernel-Treiber sendet und empfängt, der den Ethernet-Netzwerkadapter (MAC) steuert.
Der Linux-Kernel enthält verschiedene Netzwerktreiber für unterschiedliche Adaptertypen. Der Linux-Netzwerktreiber kann über eine abstrahierte, vom Netzwerkkartentyp unabhängige Schnittstelle namens AF_XDP zum Senden und Empfangen von Frames verwendet werden. Die XDP-Sockets-Schnittstelle bietet im Vergleich zu RAW-Sockets eine bessere Leistung, jedoch muss das Linux-Betriebssystem dafür ausgelegt und entsprechend konfiguriert sein:
- Der Kernel muss mindestens V5.3 oder neuer sein.
- Der Netzwerktreiber muss XDP-Unterstützung (DRV-Modus) bieten und auf dem neuesten Stand sein.
- CONFIG_XDP_SOCKETS muss in der Kernelkonfiguration aktiviert sein.
- Erforderliche Komponenten: libxdp und libbpf
Architektur 5: Linux Netzwerk Treiber basierend auf DPDK (Data Plane Development Kit)
Bei diesem Ansatz kommuniziert der EC-Master-Stack mit den SubDevices, indem er EtherCAT-Frames über das Data Plane Development Kit (DPDK) sendet und empfängt, das den Ethernet-Netzwerkadapter (MAC) steuert. Das Data Plane Development Kit (DPDK) ist ein Projekt der Linux Foundation, das aus Bibliotheken besteht, um die Paketverarbeitungs-Workloads zu beschleunigen, die auf einer Vielzahl von CPU-Architekturen laufen.
Der Echtzeit-Ethernet-Treiber emlldpdk von acontis verwendet DPDK-Bibliotheken mit einem optimierten Paketverarbeitungspfad für die schnelle Übertragung von EtherCAT-Frames. Die Bibliothek librte_eal stellt die grundlegende API für DPDK bereit, erleichtert den Zugriff auf Hardware-Ressourcen wie Speicher, Timer und Protokolle und wird hauptsächlich während der Initialisierung verwendet. Die Bibliothek librte_mbuf verwaltet Paketpuffer, die für die Paketübertragung und den Paketempfang entscheidend sind. Die Bibliothek librte_ethdev bietet eine API zum Konfigurieren und Abfragen von Ethernet-Geräten. Sie unterstützt verschiedene Vorgänge, darunter das Senden und Empfangen von Paketen.
Die Systemanforderungen und die Kernelkonfiguration für die Verwendung von DPDK unter Linux finden Sie hier. Der Kernel muss mindestens V5.1 oder neuer sein.
DPDK verwendet nicht die Standard-Linux-Ethernet-Treiber, sondern stellt eigene Treiber für eine Vielzahl verschiedener Ethernet-Controller bereit, darunter Intel Gigabit, NXP ENETFEC usw. Die vollständige Liste finden Sie hier.
Ausführliche Anweisungen zur Verwendung des Echtzeit-Ethernet-Treibers emlldpdk finden Sie in der Benutzerdokumentation.
Echtzeit Ethernet Treiber (Link Layers)
- Linux network driver (emllSockRaw): x86, x64, ARM, AArch64, PPC
- Intel Pro/100 (emllI8255x): x86
- Intel Pro/1000 (emllIntelGbe): 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
Kernel Versionen und Distributionen
Der EC-Master kann mit jeder aktuellen Linux-Distribution verwendet werden, die die Kompilierung benutzerdefinierter Kernel-Module unterstützt, wie Ubuntu, Debian usw. Das Kernel-Modul atemsys unterstützt ältere Kernel-Versionen bis hinunter zu 2.6.18. Insbesondere Laufwerke benötigen in der Regel Echtzeitunterstützung, die von der Hardware und dem Kernel (CONFIG_PREEMPT_RT oder Xenomai) unterstützt werden muss.
Mehr Informationen
- EtherCAT Master Main Page
- Features Overview
- Linux Kernel Module atemsys
- EC-Master vs Open Source
- Data sheets und Evaluierungsversionen sind in der download area verfügbar.