This proposal has been approved and the Eclipse p3com project has been created.
Visit the project page for the latest information and development.

Eclipse p3com

Friday, October 21, 2022 - 05:46 by Jakub Sosnovec
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Project
Parent Project
Proposal State
Created
Background

The automotive megatrends of autonomous driving; connected services and electrification continue to drive complexity and cost of developing, validating and integrating new features into the vehicle. The software-defined vehicle paradigm promises to solve this by adopting new EE architectures and bringing new software and networking technologies into the vehicle. One essential challenge for new software defined vehicle architectures is to allow applications to seamlessly and efficiently exchange data, regardless of their location in the vehicle network and the interface connecting them.

The software layer that deals with the problems around data sharing, message transfers and synchronization is called middleware. There exist a number of open-source as well as commercial middleware solutions, with various data models, strenghts and weaknesses. Among those are the Eclipse projects Eclipse Cyclone DDS and Eclipse Mosquitto, the Robot Operating System (ROS2), or various RPC libraries such as gRPC. Not to forget the set of AUTOSAR standards based on the SOME/IP protocol, with its ara::com API.

All of the mentioned projects primarily use the ethernet technology with a IP-based networking stack for the actual data transfer layer. Additionally, some of them implement an optional shared-memory mechanism to avoid the overhead of the networking stack and instead leverage the OS-provided shared memory segments mapped into multiple processes.

However, there are other technologies for data sharing, with superior throughput. These may be more platform-specific, with less standard software enablement, for example PCI Express (PCIe) or on-chip "inter-core-cluster" communication (shared memory between multiple independent core subsystems).

Scope

Eclipse P3COM develops an SDV middleware component enabling to fully leverage platform-specific interfaces and achieve maximum throughput and minimal latency through a convenient and modern high-level API while exploiting full HW capabilities.

The Eclipse P3COM project doesn’t aim to implement a new middleware library. Rather, it is implemented as an extension of the Eclipse iceoryx project, in the form of a new "gateway" application which serves to forward (or mirror) the shared-memory communication (on a single processor) over a particular set of transport layers (such as PCIe or UDP) to other processors and the Eclipse iceoryx applications running there. In other words, the gateway transparently simulates that all applications using Eclipse iceoryx on different processors see each other as if they were on a single processor.

It aims to have a modular "transport layer" architecture to allow an easy addition of different technologies, since they would typically be platform- and vendor-specific. Besides the generic, transport independent gateway, the scope includes vendor-specific PCIe and "inter-core-cluster shared memory" transport layers as well as transports for standard network protocols (UDP and TCP).

Description

Eclipse p3com enables arbitrary communication interfaces through a convenient and modern high level API while exploiting full HW capabilities.

Eclipse "p3com" stands for:

  • Pluggable
  • Portable
  • Publish/subscribe communication

It is pluggable because it provides a modular transport layer architecture and integrates transparently into existing middleware projects using the Eclipse iceoryx API which is already well established and incorporated into multiple libraries such as Eclipse Cyclone DDS.

Eclipse p3com is portable, because it supports Linux operating system as well as FreeRTOS real-time operating system for hard real-time processors.

Finally, Eclipse p3com primarily supports the publish/subscribe communication model and benefits from the recently introduced request/response model in Eclipse iceoryx.

Why Here?

Eclipse p3com provides a unique gateway architecture that allows to support any HW I/F on any level of operating system. This allows to relocate SW components across any level of device and therefore provides high level of flexibility for system designer.

Building on top of Eclipse Iceoryx, Eclipse p3com is developed according to automotive standards (MISRA/HIS, test coverage) and can provide safety features like transparent transport layer swap, in case one transport is broken (e.g., switch from PCIe to enet as a fall back).

NXP joined as a member of Eclipse SDV and hopes to foster partnership with other consortium members through Eclipse P3COM project contribution. At the same time the project may result in direct collaboration on engineering level with 3rd parties. The idea of supporting PCIe and other transports through a high level middleware was born through an actual use case and we want to see how it resonates with the community.

Future Work

- Create Eclipse P3COM data feeder for KUKSA.val

- Add CAN and NodeJS bridge

- Target MISRA compliance for use in automotive environment

Project Scheduling

Q1 2023: Initial contribution supporting Linux & FreeRTOS runtime including examples for gateway transport layer implementation

Q2 2023: Improved maturity through higher test coverage

Q3 2023: Additional platform support

Initial Contribution

The initial contribution will consist of a modular gateway implementation based on Eclipse iceoryx. It will implement multiple features:

  • Generic dynamic discovery system for sharing initialized user subscribers between instances of the gateway running on different devices.
    • Takes use of the iceoryx introspection services and transport layer broadcast.
  • Well-documented transport layer API for easy addition of new transport layers.
  • Configurability of preferred transport layers (if multiple are available).
  • Configurability of iceoryx services which should be forwarded over mutliple transport layers (e.g., communication between two devices which dont share a transport layer over a third device acting as an intermediate).
  • PCIe transport layer for the BlueBox 3 platform with high-throughput DMA integration.
  • UDP and TCP transport layers based on the open-source ASIO library.
  • Guide on how to build and use the Eclipse P3COM gateway, with examples.
  • Guide on how to run the Eclipse P3COM gateway with Cyclone DDS.
  • Guide on how to run the Eclipse P3COM gateway and iceoryx on a FreeRTOS-based platform.
Source Repository Type