-
Notifications
You must be signed in to change notification settings - Fork 0
Manifest Structure and ARA Requirements
This page is the Adaptive-AUTOSAR doctrine behind Theia, and how Theia realizes it. The concepts here are canonical AUTOSAR; the realization column is Theia. For the concrete generation commands see Deployment-Manifest-Generation-and-Serialization.
Adaptive AUTOSAR is a standardized middleware/architecture for high-performance automotive ECUs. Unlike Classic AUTOSAR it does not fix a concrete design — it leaves freedom for development. The model is:
High-performance multi-core SoC + Automotive Ethernet + POSIX OS (PSE51) + Service-Oriented Architecture.
Key vocabulary:
- Adaptive Application (AA) — user-level component implementing project/ECU-specific functionality, running on top of ARA (the C++ APIs the platform exposes).
- Functional Cluster (FC) — a logical group of platform functionality, implemented as a library or a process.
- ARA — the collection of FC public C++ APIs exposed to AAs via headers/libraries.
Adaptive AUTOSAR has flexibility at development and deployment time but planned dynamics at runtime: the system integrator restricts dynamic behavior through the deployment manifest. The classic constraints:
- Pre-determined service discovery (no open-ended runtime discovery).
- Dynamic memory allocation restricted to the startup phase only.
- Fair scheduling supplementing priority-based scheduling.
- Fixed allocation of processes to CPU cores.
- Access to pre-existing files only.
- Constraints on Adaptive Platform API usage by applications.
- Authenticated code execution.
These are declared in the manifest and enforced by the runtime (primarily Execution Management) — not hard-coded.
A Manifest is a formal specification of configuration content, combined with the binaries it applies to, providing specific functionality. Adaptive AUTOSAR defines four categories:
| Manifest | Scope | Describes |
|---|---|---|
| Application Manifest | per-application | software-component / composition design, executable description, process design, startup config, SOA communication endpoints |
| Machine Manifest | per-machine (ECU/VM) | network interfaces, available hardware resources and machine states |
| Service Manifest | per-process | service-oriented communication bindings, transport endpoints, platform data types, service interface definitions |
| Execution Manifest | per-process | executable→process binding with timing/priority/resource attributes, startup config, inter-process dependencies and state relationships |
Together these answer: what processes exist, how they talk, and on what machine they live.
Execution Management (EM) is the control plane for the platform's own processes (Foundation/Service FCs) and the Adaptive Applications.
Startup sequence:
- The OS or hypervisor initializes the machine.
- The OS starts EM as the first Adaptive AUTOSAR process.
- EM starts the other FCs and AAs per the manifest, in dependency order.
- If configured, authenticated boot is performed along the way.
- EM reports each started process's state to PHM (Platform Health Management) for supervision.
EM tracks three nested levels of state, consumed by State Management. Each level is just a curated set of processes (plus lifecycle hooks) declared in the manifest.
| Level | Meaning | Examples |
|---|---|---|
| Machine Functional Group (FG) State | processes available in a given Machine State |
Startup, Running, Shutdown
|
| FG State | processes available in a Function-Group state requested by State Management |
Startup, Driving, Restart, Parking
|
| Process / Execution State | state of a single process |
Initializing, Running, Terminating
|
A manifest exists in two phases:
- Design phase — the manifest is ARXML (the primary AUTOSAR exchange medium: software, network topology, communication, configuration).
-
Deployment phase — the manifest takes deploy forms: JSON loaded by FCs at
runtime,
.confloaded by kernel modules, or generated.h/.cppincluded at build time.
The transformation from design manifest to deployment manifest is called SERIALIZATION (the ARXML → JSON step).
Theia maps these AUTOSAR concepts onto its own primitives:
| AUTOSAR concept | Theia realization |
|---|---|
| Execution Management | the supervisor (platform/supervisor/) — fork/exec, FG-state ownership, heartbeat watchdog. There is no separate exec process. |
| Design manifest (ARXML) | the .art model under system/ + services/ — the design-time source of truth |
| Serialization (ARXML → JSON) |
artheia generate-manifest emitting the four deploy manifests as JSON |
| The four deploy manifests | dist/manifest/<machine>/{machine,application,service,execution}.json |
| Service Manifest bindings | TIPC type/instance addresses declared on each .art node |
| Process / Execution State | the supervisor's per-child lifecycle state |
| PHM supervision | the supervisor's heartbeat watchdog |
| ARA C++ APIs | the GenServer / GenStateM / GenRunnable runtime base classes and RemoteRef / RemoteCodec
|
In short: the .art tree is the design manifest, generate-manifest is the
serialization step, the per-machine JSON files are the deploy manifests,
and the supervisor is EM. See
Deployment-Manifest-Generation-and-Serialization for the commands and
Architecture for the runtime.