Building Block View¶
Fig. 3 presents the building blocks of the PELUX architecture.
The layers are:
Presentation contains the user interaction components and are considered to be project (OEM) specific, likely owned by the customer and are to be replaced and modified. In Presentation you will find the System UI, UI applications and UI components.
Platform Abstraction forms a formalized platform API for the presentation developers and are also considered to be project (OEM) specific. In the Qt case, Qt IVI from Qt Automotive Suite is part of this layer. For a HTML5 setup, this may be a server providing a REST API to the rest of the platform.
Applications implements end-user services with project (OEM) specific behavior. These components are commonly services, but can also be libraries, and are not generically reusable between projects. It's not unlikely that this layer contains commercial 3rd party software or legacy software provided by the OEM. Example: Media, Navigation and Phone.
Automotive Middleware contains middleware services or libraries. These components are automotive specific, but can still be reusable between projects. The components are configurable to fit the customer needs. Example: Life-Cycle Management, Persistent Storage Management, User Profile Management, Resource Management, Policy Management, Log and Error Handling.
Base Platform consists of generic and reusable services and libraries that are non-automotive specific. Example: System services and libraries like systemd, D-Bus.
Board Support consists of board specific code such as SoC specific code, kernel configuration, drivers, device trees, bootloaders. Even though PELUX supports many targets, components in this layer will likely need to be modified to fit the customer needs, especially to fulfill features like Secure Boot.
Software Development Kit (SDK) is a collection of artifacts aiding the development of software for the platform, e.g. applications and services. A specific type of SDK is the Application Development Kit (ADK) which is used for 3rd party application development.
The following dependency rules apply:
Components may have dependencies sideways or downwards.
The following general rules apply:
No components below the Platform Abstraction may have a dependency on Qt, unless it is a part of the Qt Automotive Suite or are specific to a given project that accepts Qt dependencies. Qt components are not considered as reusable, as their licenses are not accepted by e.g. GENIVI.