This project is a set of C-applications and scripts used to showcase different Ethernet-TSN features in Linux on specific Intel IOTG platform/software.
These serve as a practical example for those interested in developing TSN-capable software.
This project introduces three applications, each with their own set of examples:
-
TSQ - Time Synchronization Quality Measurement
- tsq1 showcases the nanosecond-precision time synchronization between platforms using pulse-per-second (PPS) output & auxiliary timestamping (AUX_TS) input pins.
-
TXRX-TSN - AF_PACKET & AF_XDP socket-based application
- vs1 showcases the bounded low-latency transmission/reception achievable via AF_PACKET & AF_XDP standard linux socket interfaces, while leveraging various device-specific Ethernet-TSN features.
-
OPCUA-SERVER - AF_PACKET & AF_XDP OPCUA-based application
- opcua-pkt1 showcases the bounded low-latency transmission/reception achievable via AF_PACKET over libopen62541 (an OPC-UA-based library) APIs, while leveraging various device-specific Ethernet-TSN features over a single-ethernet connection. This application uses JSON files as an input.
- opcua-pkt2 & opcua-xdp2 showcases the bounded low-latency transmission/reception achievable via AF_PACKET & AF_XDP over libopen62541 (an OPC-UA-based library) APIs, while leveraging various device-specific Ethernet-TSN features over two ethernet connection. This application uses JSON files as an input and require platforms with at least 2 Ethernet-TSN ports (e.g. EHL).
- opcua-pkt3 & opcua-xdp3 is the same as opcua-*2 but with iperf3 background traffic.
Currently supported hardwares are:
- Intel Atom XXX (formerly Elkhart Lake) with its integrated Ethernet controller
- Intel Core XXX (formerly Tiger Lake UP3) with its integrated Ethernet controller
This project is optimized to run on the supported hardware list and their respective bundled softwares (IFWI, BSP, preempt-rt kernel) which has been optimized for each platform's capabilities.
List of dependencies in DEPENDENCIES.md
-
This project only serves to demonstrate TSN functionality and its usage on supported platforms and their environments.
-
This project is not for intended for production use.
-
This project is intended to be used with specific platforms and bsp, other hardware/software combinations YMMV
-
Users are responsible for their own products' functionality and performance.
If you see an issue, include these details in your issue submission:
- Hardware setup (Platform, Ethernet controller/NIC)
- Dependency version, refer to DEPENDENCIES.md
- OS or Linux distribution
- Linux kernel version
- Problem statement
- Steps to reproduce
- Images/Screenshots
Refer to CONTRIBUTING.md
Refer to LICENSE.md