Why Eclipse Iceoryx Uses Helix QAC
A modern car contains over 100 million lines of code. And, self-driving cars must process up to 10GB/s of sensor data, to make real-time, safety-critical decisions. All of those millions of lines of code and gigabytes of data must be processed efficiently and effectively to reduce the risk of malfunctions and errors.
For that reason, it’s important that automotive software developers have safe inter-process communication for autonomous cars. That is why Eclipse Iceoryx was developed. And, why Eclipse Iceoryx chose to use Helix QAC to help ensure that autonomous vehicle software is safe and high quality.
Read along or jump ahead to the section that interests you the most:
- What Is Middleware?
- What Is Eclipse Iceoryx?
- How Does Eclipse Iceoryx Impact ISO 26262?
- Rely on Helix QAC for Eclipse Iceoryx Compliance
➡️ Helix QAC Makes Middleware Easy
What Is Middleware?
In self-driving car software development, the term “middleware” is often used to describe the software that glues together the sensors, algorithms, and actuator controllers.
It is a challenge to design middleware with the capability to transfer large amounts of data between concurrently operating sensors and processing units whilst meeting tight latency and run-time requirements.
To effectively handle this challenge, the performance capabilities of the middleware must be optimized by removing any unnecessary copy operations as well as task or process wait time while maintaining data integrity.
What Is Eclipse Iceoryx?
A traditional middleware works by creating separate copies of sensor data to be provided to each consuming algorithm. This means that the occurrences of latency and runtime will increase in proportion to the amount of data that is being provided.
The Eclipse Iceoryx open source project aims to solve this challenge. It is part of the OpenADx initiative, which was started by Bosch, Microsoft, and other software industry leaders in an effort to create a seamless toolchain for autonomous driving development through open collaboration.
Eclipse Iceoryx is a middleware with a zero-copy shared memory approach which is optimized for the huge data inter-process-communication. Written in modern C++, Eclipse Iceoryx combines a shared memory Inter-Process Communication (IPC) approach with a publish/subscribe architecture, service discovery, and lock-free algorithms. This unique design results in a middleware that eliminates data transfer performance bottlenecks.
You can read an excellent description of its design on the Eclipse community site.
How Does Eclipse Iceoryx Impact ISO 26262?
ISO 26262 is a functional safety standard that is essential to the automotive industry, as it is critical for automotive product development to comply with its requirements. A key component of ISO 26262 is the Automotive Safety Integrity Levels (ASIL).
Eclipse Iceoryx was created to specifically target ISO 26262 ASIL-D compliance. In order to help achieve this highest level of software integrity, it is necessary to run static code analysis on the code to check for potential defects that could lead to safety issues.
The developers of Eclipse Iceoryx have chosen Helix QAC for C++ to check their code against the MISRA C++, AUTOSAR, and CERT C++ coding guidelines.
The static analysis results are uploaded to an instance of the Helix QAC dashboard, so they can be monitored and shared with contributors to the project.
In this way, it is easy to locate and find coding defects and keep the codebase on track for the ISO 26262 compliance that will be essential for the software to run as part of a road-going vehicle.
Rely on Helix QAC for Eclipse Iceoryx Compliance
Perforce static code analyzers — including Helix QAC — are relied upon by all the world’s top 10 automotive suppliers to help them develop the complex embedded software that performs safety-critical functions in the cars that many of us drive.
Helix QAC helps to ensure that code is safe and secure, reliable, and compliant. And, it makes applying a coding standard — like MISRA or AUTOSAR — easy and simple.