AUTOSAR EXP PlatformDesign
AUTOSAR EXP PlatformDesign
AUTOSAR EXP PlatformDesign
Disclaimer
This work (specification and/or software implementation) and the material contained
in it, as released by AUTOSAR, is for the purpose of information only. AUTOSAR
and the companies that have contributed to it shall not be liable for any use of the
work.
The material contained in this work is protected by copyright and other types of
intellectual property rights. The commercial exploitation of the material contained in
this work requires a license to such intellectual property rights.
This work may be utilized or reproduced without any modification, in any form or by
any means, for informational purposes only. For any other purpose, no part of the
work may be utilized or reproduced, in any form or by any means, without permission
in writing from the publisher.
The work has been developed for automotive applications only. It has neither been
developed, nor tested for non-automotive applications.
The word AUTOSAR and the AUTOSAR logo are registered trademarks.
Table of Contents
1 Introduction to this document .............................................................................. 6
1.1 Contents ....................................................................................................... 6
1.2 Prereads....................................................................................................... 6
1.3 Relationship to other AUTOSAR specifications ............................................ 6
2 Technical Scope and Approach ........................................................................... 7
2.1 Overview – landscape of intelligent ECUs .................................................... 7
2.2 Technology Drivers ...................................................................................... 7
2.3 Adaptive Platform – Characteristics ............................................................. 8
C++...................................................................................................................... 8
SOA ..................................................................................................................... 8
Parallel processing .............................................................................................. 9
Leveraging existing standard............................................................................... 9
Safety and security .............................................................................................. 9
Planned dynamics ............................................................................................. 10
Agile .................................................................................................................. 10
2.4 Integration of Classic, Adaptive and Non-AUTOSAR ECUs ....................... 10
2.5 Scope of specification ................................................................................ 12
3 Architecture ....................................................................................................... 13
3.1 Logical view ................................................................................................ 13
ARA ................................................................................................................... 13
Language binding, C++ Standard Library, and POSIX API ............................... 14
Application launch and shutdown ...................................................................... 14
Application interactions...................................................................................... 14
Non-standard interfaces .................................................................................... 15
3.2 Physical view .............................................................................................. 15
OS, processes, and threads .............................................................................. 15
Library-based or Service based Functional Cluster implementation .................. 16
Interaction between Functional Clusters............................................................ 16
Machine/hardware ............................................................................................. 16
4 Methodology and Manifest ................................................................................ 18
4.1 Manifest...................................................................................................... 18
4.2 Application Design...................................................................................... 20
4.3 Application Manifest ................................................................................... 20
4.4 Service Instance Manifest .......................................................................... 21
4.5 Machine Manifest ....................................................................................... 21
5 Operating System .............................................................................................. 23
5.1 Overview .................................................................................................... 23
5.2 POSIX ........................................................................................................ 23
5.3 Scheduling ................................................................................................. 24
5.4 Memory management ................................................................................ 24
5.5 Device management .................................................................................. 24
6 Execution Management ..................................................................................... 25
6.1 Overview .................................................................................................... 25
6.2 System Startup ........................................................................................... 25
6.3 Execution Management Responsibilities .................................................... 25
6.4 State Management ..................................................................................... 26
7 Communication Management............................................................................ 28
7.1 Overview .................................................................................................... 28
7.2 Service Oriented Communication ............................................................... 28
7.3 Language binding and Network binding ..................................................... 29
7.4 Generated Proxies and Skeletons of C++ Language Binding .................... 30
7.5 Static and dynamic configuration................................................................ 30
8 RESTful Communication ................................................................................... 32
8.1 Overview .................................................................................................... 32
8.2 Architecture ................................................................................................ 32
8.3 Components ............................................................................................... 33
9 Diagnostics ........................................................................................................ 34
9.1 Overview .................................................................................................... 34
9.2 Diagnostic communication sub-cluster ....................................................... 34
9.3 Event memory sub-cluster.......................................................................... 35
10 Persistency .................................................................................................... 37
10.1 Overview .................................................................................................... 37
10.2 Key-Value Storage ..................................................................................... 37
10.3 File-Proxy Storage...................................................................................... 37
11 Safety............................................................................................................. 39
11.1 Overview .................................................................................................... 39
11.2 Protection of information exchange (E2E-Protection)................................. 39
11.3 Platform Health Management ..................................................................... 40
11.4 C++ coding guidelines ................................................................................ 40
12 Security .......................................................................................................... 42
12.1 Overview .................................................................................................... 42
12.2 Identity and Access Management .............................................................. 42
12.3 Crypto and Key Management (Crypto Stack) ............................................. 45
Security Architecture ......................................................................................... 45
Key Management Architecture .......................................................................... 46
Remarks on API Extension................................................................................ 47
13 Update and Configuration Management ........................................................ 48
13.1 Overview .................................................................................................... 48
13.2 Software Package processing .................................................................... 48
13.3 Software information reporting...................................................................... 48
13.4 Software update consistency ......................................................................... 48
14 Time Synchronization .................................................................................... 49
14.1 Overview .................................................................................................... 49
14.2 Design ........................................................................................................ 49
14.3 Architecture ................................................................................................ 50
15 References .................................................................................................... 51
1.1 Contents
This specification describes the AUTOSAR Adaptive Platform (AP) design. The
purpose of this document is to provide an overview of AP, but is not to detail all the
elements of AP design. It is to provide the overall design of the AP and key concepts
for both AP users and AP implementers.
The document is organized as follows. It starts with Technical Scope and Approach
to provide some background of AP, followed by Architecture describing both logical
and physical views of AP. Independent chapters of Methodology and Manifest and all
Functional Clusters follow, which are the units of functionalities of AP, each
containing its overview and introductions to their key concepts.
The detailed specification and discussions on the explained concepts are defined in
the relevant RS, SWS, TR and EXP documents.
1.2 Prereads
This document is one of the high-level conceptual documents of AUTOSAR.
Useful pre-reads are [1] [2] [3].
Future vehicle functions, such as highly automated driving, will introduce highly
complex and computing resource demanding software into the vehicles and must
fulfill strict integrity and security requirements. Such software realizes functions, such
as environment perception and behavior planning, and integrates the vehicle into
external backend and infrastructure systems. The software in the vehicle needs to be
changed during the lifecycle of the vehicle, due to evolving external systems or
improved functionality.
The AUTOSAR Classic Platform (CP) standard addresses the needs of deeply-
embedded ECUs, while the needs of ECUs described above cannot be fulfilled well.
Therefore, AUTOSAR specifies a second software platform, the AUTOSAR
Adaptive Platform (AP). AP provides mainly high-performance computing and
communication mechanisms and offers flexible software configuration, e.g. to support
software update over-the-air. Features specifically defined for the CP, such as
access to electrical signals and automotive specific bus systems, can be integrated
into the AP, but is not in the focus of standardization.
these offer orders of magnitudes higher performance than the conventional MCUs.
The increasing number of cores overwhelms the design of CP, which was originally
designed for a single core MCU, though it can support multicore. Also, as the
computing power swells, the power efficiency is already becoming an issue even in
data centers, and it is in fact much more significant for these intelligent ECUs. From
semiconductor and processor technologies point of view, constrained by Pollack’s
Rule, it is physically not possible to increase the processor frequency endlessly and
the only way to scale the performance is to employ multiple (and many) cores and
execute in parallel. Also, it is known that the best performance-per-watt is achieved
by mix of different computing resources like manycore, co-processors, GPU, FPGA,
and accelerators. This is called heterogeneous computing – which is now being
exploited in HPC (High Performance Computing) - certainly overwhelms the scope of
CP by far.
It is also worthwhile to mention that there is a combined effect of both processors and
faster communications. As more processing elements are being combined in a single
chip like manycore processors, the communication between these processing
element is becoming orders of magnitude faster and efficient than legacy inter-ECU
communications. This has been made possible by new type of processor inter-
connect technologies such as Network-on-Chip (NoC). Such combined effects of
more processing power and faster communication within a chip also prompts the
need for a new platform that can scale over ever-increasing system requirements.
that uses one or more of the services depending on its needs. Often SOA exhibits
system-of-system characteristics, which AP also has. A service, for instance, may
reside on local ECU that the application runs, or it can be on a remote ECU, which is
also running another instance of AP. The application code is the same in both cases
– the communication infrastructure will take care of the difference providing the
transparent communication. Another way to look at this architecture is that of
distributed computing, communicating over some form of message passing. At large,
all these represent the same concept. This message passing, communication based
architecture can also benefit from the rise of fast and high-bandwidth communication
such as Ethernet.
Parallel processing
The distributed computing is inherently parallel. The SOA, as different applications
uses different set of services, shares this characteristic. The advancement or
manycore processors and heterogeneous computing that offer parallel processing
capability offers technological opportunities to harness the computing power to match
the inherent parallelism. Thus, the AP possesses the architectural capability to scale
its functionality and performance as the manycore-heterogeneous computing
technologies advance. Indeed, the hardware and platform interface specification are
only parts of the equation, and advancements in OS/hypervisor technologies and
development tools such as automatic parallelization tools are also critical, which are
to be fulfilled by AP provider and the industry/academic eco-system. The AP aims to
accommodate such technologies as well.
Leveraging existing standard
There is no point in re-inventing the wheels, especially when it comes to
specifications, not implementations. As with already described in C++, AP takes the
strategy of reusing and adapting the existing open standards, to facilitate the faster
development of the AP itself and benefiting from the eco-systems of existing
standards. It is therefore a critical focus in developing the AP specification not to
casually introduce a new replacement functionality that an existing standard already
offers. For instance, this means no new interfaces are casually introduced just
because an existing standard provides the functionality required but the interface
superficially is not easy to understand.
Safety and security
The systems that AP targets often require some level of safety and security, possibly
at its highest level. The introduction of new concepts and technologies should not
undermine such requirements although it is not trivial to achieve. To cope with the
challenge, AP combines architectural, functional, and procedural approaches. The
architecture is based on distributed computing based on SOA, which inherently
makes each component more independent and free of unintended interferences,
dedicated functionalities to assist achieving safety and security, and guidelines such
as C++ coding guideline, which facilitates the safe and secure usage of complex
language like C++, for example.
Planned dynamics
The AP supports incremental deployment of applications, where resources and
communications are managed dynamically to reduce the effort for software
development and integration, enabling short iteration cycles. Incremental deployment
also supports explorative software development phases.
For product delivery, AP allows the system integrator to carefully limit dynamic
behavior to reduce the risk of unwanted or adverse effects allowing safety
qualification. Dynamic behavior of an application will be limited by constraints stated
in the Application Manifest. The interplay of the manifests of several applications may
cause that already at design time. Nevertheless, at execution time dynamic allocation
of resources and communication paths are only possible in defined ways, within
configured ranges, for example.
Agile
Although not directly reflected in the platform functionalities, the AP aims to be
adaptive to different product development processes, especially agile based
processes. For agile based development, it is critical that the underlying architecture
of system is incrementally scalable, with the possibility of updating the system after
its deployment. The architecture of AP should allow this. As the proof of concept, the
AP specification itself and the demonstrator, the demonstrative implementation of
AP, are both developed with Scrum.
3 Architecture
The interface of Functional Clusters, either they are those of Adaptive Platform
Foundation or Adaptive Platform Services, are indifferent from AA point of view –
they just provide specified C++ interface, or any other language bindings AP may
support in future. There are indeed differences under the hood. Also, note that
underneath the ARA interface, including the libraries of ARA invoked in the AA
contexts, may use other interfaces than ARA to implement the specification of AP
and it is up to the design of AP implementation.
Be aware that Figure 3-1 AP architecture logical view contains Functional Clusters
that are not part of initial releases of AP, to provide a better idea of overall structure.
Further new Functional Clusters not shown here may well be added future releases
of AP.
Language binding, C++ Standard Library, and POSIX API
The language binding of these API is based on C++, and the C++ Standard library is
also available as part of ARA. Regarding the OS API, only PSE51 interface, a single-
process profile of POSIX standard is available as part of ARA. The PSE51 has been
selected to offer portability for existing POSIX applications, and to achieve freedom
of interference among applications.
Note that the C++ Standard Library contains many interfaces based on POSIX,
including multi-threading APIs. It is recommended not to mix the C++ Standard
library threading interface with the native PSE51 threading interface to avoid
complications. Unfortunately, the C++ Standard Library does not cover all the PSE51
functionalities, such as setting thread scheduling policy. In such cases, combined use
of both interfaces may be necessary.
Application launch and shutdown
Lifecycles of applications are managed by Execution Management (EM).
Loading/launching of application is managed by using the functionalities of EM, and it
needs appropriate configuration at system integration time or at runtime to launch an
application. In fact, all the Functional Clusters are applications from EM point of view,
and they are also launched in the same manner, except for EM itself. Figure 3-2
Applications illustrates different types of applications within and on AP.
Application interactions
Regarding interaction between AAs, PSE51 do not include IPC (Inter-Process-
Communication), so there is no direct interface to interact between AAs. The
Communication Management (CM) is the only explicit interface. CM also provides
Service Oriented Communication for both intra-machine and inter-machine, which
In summary, from the OS point of view, the AP and AA forms just a set of processes,
each containing one or multiple threads – there are no difference among these
processes, though it is up to the implementation of AP to offer any sort of partitioning.
These processes do interact with each other through IPC or any other OS
functionalities available. Note that AA processes, may not use IPC directly and can
only communicate via ARA.
A general guideline to select a design for Functional Cluster is that if it is only used
locally in an AP instance, the Library-based design is more appropriate, as it is
simpler and can be more efficient. If it is used from other AP instance in distributed
fashion, it is advised to employ the Service-based design, as the Communication
Management provides transparent communication regardless of the locations of the
client AA and Service. Functional Clusters belonging to Adaptive Platform
Foundation are “Library-based” and Adaptive Platform Services are “Service-based”
as the name rightly indicate.
On a hardware, there can be one or more Machines, and only a single instance of AP
runs on a machine. It is generally assumed that this ‘hardware’ includes a single chip,
hosting a single or multiple Machines. However, it is also possible that multiple chips
form a single Machine, if the AP implementation allows it.
4.1 Manifest
A Manifest represents a piece of AUTOSAR model description that is created to
support the configuration of an AUTOSAR AP product and which is uploaded to the
AUTOSAR AP product, potentially in combination with other artifacts (like binary files)
that contain executable code to which the Manifest applies.
The usage of a Manifest is limited to the AUTOSAR AP. This does not mean,
however, that all ARXML produced in a development project that targets the
AUTOSAR AP is automatically considered a Manifest.
In fact, the AUTOSAR AP is usually not exclusively used in a vehicle project.
A typical vehicle will most likely be also equipped with a number of ECUs developed
on the AUTOSAR CP and the system design for the entire vehicle will therefore have
to cover both – ECUs built on top of the AUTOSAR CP and ECUs created on top of
the AUTOSAR AP.
In principle, the term Manifest could be defined such that there is conceptually just
one "Manifest" and every deployment aspect would be handled in this context. This
does not seem appropriate because it became apparent that manifest-related model-
elements exist that are relevant in entirely different phases of a typical development
project.
This aspect is taken as the main motivation that next to the application design it is
necessary to subdivide the definition of the term Manifest in three different partitions:
Application Design This kind of description specifies all design-related aspects that
apply to the creation of application software for the AUTOSAR AP. It is not
necessarily required to be deployed to the adaptive platform machine, but the
application design aids the definition of the deployment of application software in the
Application Manifest and Service Instance Manifest.
Service Instance Manifest This kind of Manifest is used to specify how service-
oriented communication is configured in terms of the requirements of the underlying
transport protocols.
A Service Instance Manifest is bundled with the actual executable code that
implements the respective usage of service-oriented communication.
The temporal division between the definition (and usage) of different kinds of
Manifest leads to the conclusion that in most cases different physical files will be
used to store the content of the three kinds of Manifest.
In addition to the Application Design and the different kinds of Manifest the
AUTOSAR Methodology supports a System Design with the possibility to describe
Software Components of both AUTOSAR Platforms that will be used in a System in
one single model. The Software Components of the different AUTOSAR platforms
may communicate in the service-oriented way with each other. But it is also possible
to describe a mapping of Signals to Services to create a bridge between the service-
oriented communication and the signal-based communication.
The artifacts defined in the application design are independent from a specific
deployment of the application software and thus ease the reuse of application
implementations for different deployment scenarios.
5 Operating System
5.1 Overview
The Operating System is responsible for run-time resource management (including
time) for all Applications on the Adaptive Platform. Execution Management is
responsible for platform initialization and the start-up / shut-down of Applications,
working in cooperation with OS.
Adaptive Platform does not specify a new Operating System for highly performant
processors. Rather, it defines an execution context and Operating System Interface
(OSI) for use by Adaptive Applications.
The OSI specification contains application interfaces that are part of ARA, the
standard application interface of Adaptive Application. The OS itself may very well
provide other interfaces, such as creating processes, that are required by Execution
Management to start an Application. However, the interfaces providing such
functionality, among others, are not available as part of ARA and it is defined to be
platform implementation dependent.
The OSI provides both C and C++ interfaces. In case of a C program, the
application’s main source code business logic include C function calls defined in the
POSIX standard, namely PSE51 defined in IEEE1003.13 [1]. During compilation, the
compiler determines which C library from the platform’s operating system provides
these C functions and the application’s executable shall be linked against at runtime.
In case of a C++ program, application software component’s source code includes
function calls defined in the C++ Standard and its Standard C++ Library.
5.2 POSIX
There are several operating systems on the market, e.g. Linux, that provide POSIX
compliant interfaces. However, applications are required to use a more restricted API
to the operating systems as compared to the platform services and foundation.
The general assumption is that a user Application shall use PSE51 as OS interface
whereas platform Application may use full POSIX. In case more features are needed
on application level they will be taken from the POSIX standard and NOT newly
specified wherever possible.
5.3 Scheduling
The operating system provides multi-threading and multi-process support. The
standard scheduling policies are SCHED_FIFO and SCHED_RR, which are defined
by the POSIX standard. Other scheduling policies such as SCHED_DEADLINE or
any other operating system specific policies are allowed, with limitation that this may
not be portable across different AP implementations.
6 Execution Management
6.1 Overview
Execution Management is responsible for all aspects of system execution
management including platform initialization and startup / shutdown of Applications.
Execution Management works in conjunction with the Operating System to perform
run-time scheduling of Applications.
Machine States and Function Group States define the current set of running
Applications. They are significantly influenced by vehicle-wide events and modes.
Each Application declares in its Application Manifest in which States it shall be active.
• Application State
The Application State characterizes the internal lifecycle of any instance of an
Application Executable, i.e. process. Each process must report Application
State changes to Execution Management.
State Management
Arbitration of input data (e.g. state requests, events) to determine current target states
Execution Management
FG1:State1
initial state of
Function State Transition FG1:State2 State Transition FG1:State3
Group “FG1“
(example)
State Transitions
FG1 State managed by EM
Idle Starting
Terminated
(Application process
Execute Schedule Running Terminate Terminating process
Manifest created,
resources
references resources
freed
FG1:State2) allocated
Process Lifecycle
Process State managed by EM
Terminate() “waitpid”
ReportApplicationState ReportApplicationState
schedule (Terminating)
Start() (Running) process
terminated
Initializing Terminating
Running
application store data,
create process perform main Terminate
data free resources,
allocate functionality trigger
initialization exit
resources
optional
Application State
confirm
Application Process
7 Communication Management
7.1 Overview
The Communication Management is responsible for all aspects of communication
between applications in a distributed real-time embedded environment.
The concept behind is to abstract from the actual mechanisms to find and connect
communication partners such that implementers of application software can focus on
the specific purpose of their application.
Each application that provides services registers these services at the Service
Registry. To use a service a consuming application needs to find the requested
The Language binding defines how the methods, events and fields of a service are
translated into directly accessible identifiers by using convenient features of the
targeted programming language. Performance and type safety (as far as supported
by the target language) are the primary goals. Therefore, the Language Binding is
typically implemented by a source code generator that is fed by the service interface
definition.
Executable
Application layer
Proxy->setX(…) (type safe)
- analog to Rte_write_X ()
The Network Binding defines how the actual data of a configured service is serialized
and bound to a specific network. It can be implemented based on Communication
Management configuration (interface definition of the AUTOSAR meta model) either
by interpreting a generated service specific recipe or by directly generating the
serializing code itself.
Please note: the interface between Language Binding and Network Binding is
considered as a private interface inside Communication Management software.
Therefore, a normative specification defining this interface is currently out of scope.
Nevertheless, platform vendors are encouraged to define independently such an
interface for their software to allow for easy implementation of other Language
Bindings than C++ together with other Network Bindings inside their platform
implementation.
On the service implementation side, these generated classes are named Service
Provider Skeletons. On the client side, they are called Service Requester Proxies.
A platform implementation may be configured such that the generator creates mock-
up classes for easy development of client functionality when the respective server is
not yet available. The same mechanism can also be used for unit testing the client.
Whereas proxy classes can be used directly by the client the Service Provider
Skeletons for the C++ binding are just abstract base classes. A service
implementation shall derive from the generated base class and implement the
respective functionality.
The interfaces of ara::com can also provide proxies and skeletons for safety related
E2E protected communication. These interfaces are designed that compatibility to
the applications is assured independent whether E2E protection is switched on or off.
8 RESTful Communication
8.1 Overview
Both communication stacks, ara::com and ara::rest can establish communication
paths between Adaptive Applications. ara::rest is a framework to build RESTful APIs
as well as specific services on top of such an API. It does not define a specific API
out-of-the-box to construct directly RESTful services. This framework is modular, it
enables developers to access different layers involved in RESTful message
transactions directly. In contrast, the focus of ara::com is to provide a traditional
function call interface and to hide all details of the transactions beyond this point.
Another important difference is that ara::rest ensures interoperability with non-
AUTOSAR peers. For example, an ara::rest service can communicate with a mobile
HTTP/JSON client and vice versa.
8.2 Architecture
The Architecture of ara::rest is based on a modular design which supports
developers at the level of API as well as service design. The following diagram
illustrates its general design. It depicts how a service application is composed in
ara::rest.
8.3 Components
ara::rest comprises of the following set of components.
The routing concept provides a means to map requests (including request method
and URI) onto user-defined handler functions. Routing is the cornerstone to lift
abstraction from generic REST into a specific kind of RESTful API.
ara::rest provides so-called (network) endpoints for server and client communication
which both provide a comparable degrees of resource control. Both are designed to
provide fast and efficient communication capabilities on single as well as multi-core
systems.
The entire framework design is strictly geared towards maximal resource control. All
computations and allocations can be strictly controlled and customized to the precise
needs of an application (deployment).
9 Diagnostics
9.1 Overview
The Diagnostic Management realizes the ISO 14229-5 (UDSonIP) which is mainly
based on the ISO 14229-1 (UDS) and ISO 13400-2 (DoIP).
The supported Transport Layer is DoIP. Future Adaptive Platforms will support
further Transport Layers e.g. CAN. Maybe also customized Transport Layers are also
planned to be supported, because DoIP is typically not used as in-vehicle protocol.
The scope is to abstract the diagnostic protocol from Adaptive Applications. The
interfaces are harmonized with the Classic Platform (e.g. SetEventStatus) to allow an
easy change for Classic Platform developers.
Beside the pseudo parallel client handling of ISO 14229-1, the Diagnostic Manager
(DM) is extended to support a full parallel handling of different diagnostic clients. This
satisfies the demands of modern vehicle architectures including several diagnostic
clients (tester) for data collection, access from the backend, SOTA (Software Over-
the-Air) and finally the classic workshop and production use-cases.
The AAs interface, which DM uses to serve the diagnostic request, is an existing one,
which cannot be changed and was NOT developed with diagnostic needs in mind.
Adapting the existing interface in a way, which perfectly suits the diagnostic
requirements/expectations defined by the tester is not an option, since AA shall not
be changed.
The typical candidates for such use cases are UDS DataServices (RDBI), where
some information provided by an AA anyway like vehicle speed shall be made
accessible via UDS diagnostics.
The supported functionality and interface are like the Classic Platform. The
diagnostic monitor is represented as (Diagnostic-)Event which can be combined with
a DTC. The DTC can be assigned to PrimaryMemory (accessible via 19 02/04/06) or
to configurable UserMemories (accessible via 0x19 17/18/19). The DTC can store
Snapshot- and ExtendedDataRecords.
The operation cycle changes – important for the aging and readiness calculation –
need to be forwarded to the DM.
Same applies for the storage- and enable conditions – changes need to be forwarded
to DM. By enable conditions the general update of DTCs can be controlled e.g. to
disable all network related monitors within under voltage conditions. By storage
conditions the DTC cannot be stored in the DTC memory.
10 Persistency
10.1 Overview
Persistency offers mechanisms to Applications to store information in the non-volatile
memory of an Adaptive Platform. The data is available over boot and ignition cycles.
Persistency offers a library based approach to access the non-volatile memory.
The Persistency library takes storage location identifiers as parameters from the
application to address different storage locations.
Persistency offers encryption for stored data to make sure that sensitive data will be
encrypted before storing it on a physical device.
The keys need to be unique strings per Key-Value database and are defined by an
application using the methods provided by the Persistency library.
Adding serialization/storage support for AUTOSAR data types which are defined in
Application Design is planned.
A File-Proxy Port allows an application to access a storage location and create one
or multiple accessors in it. These accessors again are identified by unique keys in
string format.
To give a better impression of this mechanism, a comparison to a file system helps: a
File-Proxy Port can be understood as a filesystem directory in which an application is
allowed to create multiple files (accessors).
Since File-Proxy Storage is close to classical file system access, the API was
designed as subset of the well-known C++ std::iostream class with similar behavior.
11 Safety
11.1 Overview
Safety offers mechanisms to Adaptive Applications to protect the exchange of
information inside the vehicle and with the external world. This will include
mechanisms for inter- and intra-ECU communication. For this purpose, mechanisms
provided will allow fault detection if any corruption has occurred. No mechanisms will
be provided to guarantee the integrity of data.
In addition, Safety offers guidelines such as coding guidelines, which facilitate the
safe and secure usage of complex languages like C++.
For the other Functional Clusters (e.g. Execution Management) guidance on possible
safety implications will be provided and necessary enhancements will be integrated
into the corresponding Functional Clusters.
In general, Safety will provide concepts and documents that will support the
development of an Adaptive Platform as Safety Element out of context. For example,
there will be an overview of the provided safety features that will be supported by the
Adaptive Platform. Safety expectations of system integrators will be addressed and
so the development of safety cases will be supported.
In a first step, the focus will be on safety mechanisms for fail-safe systems, but it will
be extended to mechanisms for fail-operational systems in future.
publisher. On the subscriber side the E2E checked is invoked at the reception of the
data within the subscriber process.
For this release only the platform independent specification (RS) will be provided
within foundation.
Existing standards are incomplete, covering old C++ versions or not applicable for
critical/safety-related. In particular, MISRA C++:2008 does not cover C++11/14.
Multiple new language features required analysis of how useful they can be in
providing efficient implementations and how much risk is associated with the usage
of each feature.
Several other coding standards and resources are referenced in this document or
used as a basis of the rules in this document, like JSF, HIC, CERT and C++ Core
Guideline. Most of the rules are automatically enforceable by static analysis that can
be applicable without a manual code review. Style of code in a sense of naming
conventions, layout or indentation are not be covered by the document.
12 Security
12.1 Overview
The security service offers the adaptive platform the means to harden the system
e.g. by providing secure communication and an access management system.
The idea behind this framework is driven by the increasing need for security, as the
AUTOSAR Adaptive Platform needs a robust and well-defined trust relationship with
its applications. If an attacker compromises, an application it should not have any
impact on the Adaptive Platform itself and the attackers’ capabilities should be
restricted to the compromised applications capabilities. That is why applications
should only be able to access system resources or trigger actions that they are
supposed to. The IAM framework manages identities and access rights and can be
seen as a comprehensible mechanism to restrict access of applications to the
necessary minimum.
Scope of the IAM framework: The framework enforces access control between
apps and functional clusters of the Adaptive Platform at runtime. Not in scope is the
deployment/provisioning of AP applications, as the authentication of those
applications is not covered by the IAM framework.
The following table represents which parts of the IAM framework will be defined by
AUTOSAR and which parts are up to the developer implementation-wise.
warnings/error specification
messages that the
applications receive on
failed authorization.
Contents of the logging AUTOSAR Requirements (RS)
information. Specification
API for communication Not specified by -
between Functional AUTOSAR
clusters and the IAM
Manager.
API for activity logging. Not specified by -
AUTOSAR
The main interface of the IAM Framework is the “request for an access control
decision” which is directed from the PEP to the PDP of the implemented framework.
Applications must not have control over the PEP or PDP as this would jeopardize the
security concept behind IAM.
In addition to that, the IAM Framework can aid in the following aspects (not in scope
for R10/17):
To understand how the framework works, a few important notions must be defined in
advance. The following list describes the major IAM components. As a reference see
also ‘Terminology for Policy-Based Management’ in rfc3198
(https://tools.ietf.org/html/rfc3198).
Access Control Policy: This is an artefact which holds the information defining
the basis for access control decisions. The necessary information is being stored
in the application manifest files which are distributed during provisioning.
The high-level view on the architecture can be seen in Figure 12-1. The presented
architecture should be considered as an example on how the framework can be
applied. The concept behind this framework is flexible. For example, the policy
manager can also be located outside of the security manager. It is up to the
implementer to make adaptations if necessary.
The initial step in Figure 12-1 is the request. The application communicates with the
functional cluster (FC) and requests a certain action for which the FC needs the
authorization from the PDP inside the Security Manager. The FC calls its internal
PEP, where a request to the PDP is triggered in order to check if the application is
authorized to trigger the requested action. Upon receiving such a request, the PDP
checks the associated database for manifest files which contain information on the
desired request. It then evaluates weather the application is allowed to trigger the
requested action and communicates the results to the PEP. This construct works
because we assume that FCs inside the AUTOSAR stack are not compromised and
sufficiently isolated from the potentially compromised application. Finally, the PEP
enforces the decision it receives from the PDP and either permits or prohibits the
desired request.
Depending on application support, the API can also be used to protect session keys
and intermediate secrets when processing cryptographic protocols such as TLS and
SecOC.
Security Architecture
While AUTOSAR AP only defines the high-level Crypto Stack API exposed to
applications, this API is defined with a security architecture in mind that was
designed to meet above security and functional requirements.
In order to realize this layered security architecture, the Crypto Stack API not only
performs bulk crypto operations but also provides native support for:
(1) Operating with encrypted keys or key handles
(2) Managing keys securely despite possible application compromise
(3) Constraining application access to and allowed operations on keys
Significant new usages and interactions that require the introduction of new or
modified permission/policy validation logic should be tied to corresponding new key
usage policy flags. For example, alternative provisioning keys with different
ownership/permission checks can be introduced by adding a corresponding new key
usage policy and enforcing the new logic in all key management operations involving
those new keys.
13.1 Overview
One of the declared goals of Adaptive AUTOSAR is the ability to flexibly update the
software and its configuration through over-the-air updates. To support changes in
the software on an Adaptive Platform the Update and Configuration Manager(UCM)
provides an Adaptive Platform service that handles software update requests.
UCM is responsible for updating, installing, removing and keeping a record of the
software on an Adaptive Platform. Its role is similar to known package management
systems like dpkg or YUM in Linux, with additional functionality to ensure a safe and
secure way to update or modify software on the Adaptive Platform.
The data content of a Software Package can contain, for example, one or several
Adaptive Applications, kernel or firmware updates, or updated configuration and
calibration data.
UCM processes software packages based on the provided metadata and the
Adaptive Platform software information.
UCM provides an interface to read the installation result. In case of a failure during
the update process, UCM recovers the platform to a known functional state. An
example of a recoverable failure would be an interrupted update process due to a
power loss.
14 Time Synchronization
14.1 Overview
Time Synchronization (TS) between different applications and/or ECUs is of
paramount importance when correlation of different events across a distributed
system is needed, either to be able to track such events in time or to trigger them at
an accurate point in time.
For this reason, a Time Synchronization API is offered to the Application, so it can
retrieve the time information - synchronized with other Entities / ECUs.
14.2 Design
For the Adaptive Platform, the following three different technologies were considered
to fulfill all necessary Time Synchronization requirements:
Startup Behavior
Constructor Behavior (Initialization)
Normal Operation
Error Handling
Shutdown Behavior
Error Classification
Version Check
14.3 Architecture
The application will have access to a different specialized class implementation for
each Time Base Resource (TBR).
The TBRs are offered as a Resource in a similar way as Services are offered in the
ara::com design and therefore it is adopting the following architectural design
patterns of ara::com:
This architectural design puts the Time Synchronization design apparently in a frontal
conflict when talking about avoiding latencies, since the latter are inherently added by
the asynchronous behavior of the design pattern of the ara::com API.
15 References