AUTOSAR TPS ECUConfiguration
AUTOSAR TPS ECUConfiguration
AUTOSAR TPS ECUConfiguration
AUTOSAR CP R22-11
Specification of ECU
Document Title Configuration
Document Owner AUTOSAR
Document Responsibility AUTOSAR
Document Identification No 87
AUTOSAR
2006-05-16 2.0 Initial Release
Administration
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 intel-
lectual 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.
Contents
1 Introduction 15
1.1 Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.2 Document Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3 Binding Times of Constraints . . . . . . . . . . . . . . . . . . . . . . . 20
1.4 Requirements Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2 Configuration Metamodel 23
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2 ECU Configuration Template Structure . . . . . . . . . . . . . . . . . . 23
2.3 ECU Configuration Parameter Definition Metamodel . . . . . . . . . . 27
2.3.1 ECU Configuration Parameter Definition top-level structure . 27
2.3.1.1 Usage of the Admin Data . . . . . . . . . . . . . . . 29
2.3.1.2 Life Cycle definition . . . . . . . . . . . . . . . . . . . 30
2.3.1.3 Documentation Support . . . . . . . . . . . . . . . . 32
2.3.2 ECU Configuration Module Definition . . . . . . . . . . . . . 34
2.3.3 Container Definition . . . . . . . . . . . . . . . . . . . . . . . 38
2.3.3.1 Choice Container Definition . . . . . . . . . . . . . . 43
2.3.4 Common Configuration Elements . . . . . . . . . . . . . . . 46
2.3.4.1 Variant Handling . . . . . . . . . . . . . . . . . . . . 46
2.3.4.2 Configuration Multiplicity . . . . . . . . . . . . . . . . 46
2.3.4.3 Common Configuration Attributes . . . . . . . . . . . 50
2.3.5 Parameter Definition . . . . . . . . . . . . . . . . . . . . . . . 57
2.3.5.1 Boolean Type . . . . . . . . . . . . . . . . . . . . . . 60
2.3.5.2 Integer Type . . . . . . . . . . . . . . . . . . . . . . . 62
2.3.5.3 Float Type . . . . . . . . . . . . . . . . . . . . . . . . 63
2.3.5.4 String Parameter . . . . . . . . . . . . . . . . . . . . 65
2.3.5.5 Linker Symbol Parameter . . . . . . . . . . . . . . . 66
2.3.5.6 Function Name Parameter . . . . . . . . . . . . . . . 68
2.3.5.7 Enumeration Parameter . . . . . . . . . . . . . . . . 68
2.3.5.8 Enumeration Literal Definition . . . . . . . . . . . . . 69
2.3.5.9 AddInfo . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.3.6 References in Parameter Definition . . . . . . . . . . . . . . 71
2.3.6.1 Reference . . . . . . . . . . . . . . . . . . . . . . . . 74
2.3.6.2 Choice Reference . . . . . . . . . . . . . . . . . . . 76
2.3.6.3 Foreign Reference . . . . . . . . . . . . . . . . . . . 77
2.3.6.4 Instance Reference . . . . . . . . . . . . . . . . . . . 78
2.3.6.5 Symbolic Name Reference . . . . . . . . . . . . . . 81
2.3.6.6 Uri Reference . . . . . . . . . . . . . . . . . . . . . . 83
2.3.7 Derived Parameter Specification . . . . . . . . . . . . . . . . 89
2.3.7.1 Derived Parameter Calculation Formula . . . . . . . 90
2.3.7.2 Restrictions on Configuration Class of Derived Pa-
rameters . . . . . . . . . . . . . . . . . . . . . . . . . 101
2.3.8 Existence dependence of ECUC Parameter Definition elements101
2.3.9 Validation conditions . . . . . . . . . . . . . . . . . . . . . . . 105
C Glossary 250
References
[1] Methodology for Classic Platform
AUTOSAR_TR_Methodology
[2] System Template
AUTOSAR_TPS_SystemTemplate
[3] Glossary
AUTOSAR_TR_Glossary
[4] Standardization Template
AUTOSAR_TPS_StandardizationTemplate
[5] Requirements on ECU Configuration
AUTOSAR_RS_ECUConfiguration
[6] Generic Structure Template
AUTOSAR_TPS_GenericStructureTemplate
[7] AUTOSAR XML Schema Production Rules
AUTOSAR_TPS_XMLSchemaProductionRules
[8] Specification of ECU Configuration Parameters (XML)
AUTOSAR_MOD_ECUConfigurationParameters
[9] Meta Model
AUTOSAR_MMOD_MetaModel
[10] IEEE standard for radix-independent floating-point arithmetic
(ANSI/IEEE Std 854-1987)
[11] Meta Model-generated XML Schema
AUTOSAR_MMOD_XMLSchema
[12] Software Component Template
AUTOSAR_TPS_SoftwareComponentTemplate
[13] List of Basic Software Modules
AUTOSAR_TR_BSWModuleList
[14] Layered Software Architecture
AUTOSAR_EXP_LayeredSoftwareArchitecture
[15] Software Process Engineering Meta-Model Specification
http://www.omg.org/spec/SPEM/2.0/
1 Introduction
According to the AUTOSAR Methodology (see figure 1.1) the configuration process is
a major part of the ECU software integration that is represented by the activity Inter-
grate Software for ECU.
Develop an Abstract
BSW Standard Package System Description
1 1..*
«output»
«input» «input»
0..1 1..*
«input» Develop a
VFB System
0..* Description
0..*
System 0..1 Abstract System
Constraint Description
Description
«input» «input» «output»
0..*
0..*
«input»
«input»
«output»
ECU Extract
1..* Delivered
BSW Module 1..* 1
Delivered Bundle Atomic
«input» Software
«input» «input» Components
Integrate Software
for ECU
«output»
The configuration process of an ECU starts with the splitting of the System Description
into several descriptions, whereas each contains all information about one single ECU.
In figure 1.1 the artifact System Description is hidden in the activity Develop
System. The creation of an Ecu Extract is described in detail in the System Tem-
plate specification [2].
The Ecu Extract and the BSW Module Delivered Bundle are the inputs for the
ECU configuration step. This is also visible in figure 1.2 where the ECU configuration
is described by the activities Prepare ECU Configuration and Configure BSW
and RTE.
A detailed description about this activities is given in the AUTOSAR Methodology [1],
chapter 2.7.
«input»
1
1
ECU BSW Module
ECU Extract Prepare ECU Configuration «output»
Configuration Data
Configuration Values Source Code
«input» «output»
1..* 1 «input»
«output»
1
1
Within the ECU Configuration process each single module of the AUTOSAR Architec-
ture can be configured for the special needs of this ECU. Because of a quite complex
AUTOSAR Architecture, modules and interdependencies between the modules, tool-
support is required: AUTOSAR ECU Configuration Editor(s).
The tool strategy and tooling details for the ECU Configuration are out of scope of this
specification. Nevertheless tools need the knowledge about ECU Configuration Pa-
rameters and their constraints such as configuration class, value range, multiplicities
etc. This description is the input for the tools. The description of configuration param-
eters is called ECU Configuration Parameter Definition and described in detail in this
specification (chapter 2.3).
To make sure, that all tools are using the same output-format within the configured
values of the parameters, the ECU Configuration Value description is also part of this
specification and described in detail later on (chapter 2.4). The ECU Configuration
Value description may be on one hand the input format for other configuration tools
(within a tool-chain of several configuration editors) and on the other hand it is the basis
of generators. The configured parameters are generated into ECU executables. This
is the last step of the configuration process and again out of scope of this specification.
1.1 Abbreviations
This section describes abbreviations that are specific to the ECU Configuration Speci-
fication and that are not part of the official AUTOSAR Glossary [3].
Following abbreviations are mentioned that are specifically used in this specification:
Abbreviation meaning
ECUC ECU Configuration
ECUC Value descrip- ECU Configuration Value Description
tion
ECUC ParamDef ECU Configuration Parameter Definition
ECUC Value ECU Configuration Value
StMD Standardized Module Definition
VSMD Vendor Specific Module Definition
4
Requirement Description Satisfied by
[RS_ECUC_00080] Variable value [TPS_ECUC_02142]
[RS_ECUC_00082] Variable lower and upper [TPS_ECUC_02110] [TPS_ECUC_06009]
multiplicity in ECU Configuration [TPS_ECUC_06010] [TPS_ECUC_06013]
Parameter definition [TPS_ECUC_06016]
[RS_ECUC_00083] Variable default value in ECU [TPS_ECUC_02111] [TPS_ECUC_02112]
Configuration Parameter definition [TPS_ECUC_02114] [TPS_ECUC_02115]
[RS_ECUC_00084] Variable min and max ranges in [TPS_ECUC_02116] [TPS_ECUC_02117]
ECU Configuration Parameter
definition
[RS_ECUC_00086] The TPS_ECUConfiguration shall [TPS_ECUC_06001] [TPS_ECUC_08011]
provide naming conventions for
public symbols.
2 Configuration Metamodel
2.1 Introduction
AUTOSAR exchange formats are specified using a metamodel based approach. The
metamodel for the configuration of ECU artifacts uses an universal description lan-
guage so that it is possible to specify different kinds of configuration aspects. This
is important as it is possible to describe AUTOSAR-standardized and vendor-specific
ECU Configuration Parameters with the same set of language elements. This eases
the development of tools and introduces the possibility to standardize vendor-specific
ECU Configuration Parameters at a later point in time.
In general the configuration language uses containers and actual parameters. Contain-
ers are used to group corresponding parameters. Parameters hold the relevant values
that configure the specific parts of an ECU. Due to the flexibility that has to be achieved
by the configuration language the configuration description is divided into two parts:
• ECU Configuration Parameter Definition
• ECU Configuration Values
A detailed description of these two parts and their relationships is presented in the
following sections.
XML XML
ECU Configuration ECU
Parameter Configuration
Definition Value description
ECU
Configuration
Editor(s)
For the ECU Configuration editors there are basically two possible approaches how to
implement these definitions. Either the ECU Configuration Parameter Definition is read
and interpreted directly from the XML file or the defined structures are hard-coded into
the tool1 .
For the development of the ECU Configuration Parameter Definition and the ECU Con-
figuration Value description a model-based approach has been chosen which already
has been used during the development of other AUTOSAR template formats.
The main approach is to use a subset of UML to graphically model the desired enti-
ties and their relationships. Then, in a generation step, the actual XML formats are
automatically generated out of the model.
[TPS_ECUC_02000] Modeling of ECU Configuration Value and ECU Configura-
tion Parameter Definition metamodels d The modeling of the ECU Configuration
Value and ECU Configuration Parameter Definition metamodels is done according to
the Generic Structure Template [6].c(RS_ECUC_00065)
Please note that the Generic Structure Template [6] contains some fundamental infras-
tructure meta-classes and common patterns and provides details about:
• Autosar Top level structure,
• Commonly used metaclasses and primitives
• Variant Handling
• Documentation
[TPS_ECUC_02001] Transformation of the ECU Configuration Value and ECU
Configuration Parameter Definition metamodels to schema definitions d The
transformation of the ECU Configuration Value and ECU Configuration Parameter Def-
inition metamodels to schema definitions is done according to the XML Schema Pro-
duction Rules [7].c(RS_ECUC_00049, RS_ECUC_00066)
Because of these transformation rules there is a given discrepancy between the UML
model and the generated XML-Schema names. This also affects this document. The
1
The advantage of using the interpreter is that changes on the ECU Configuration Parameter Defini-
tion are directly available in the tool. But the hard-coded approach allows for more custom user support
in the tool
major descriptions will be based on the UML model notations (figures and tables),
although the corresponding XML notation might be given for reference purposes.
In this section the application of the modeling approach for the ECU Configuration is
described.
AUTOSAR uses the UML metamodel (M2-level) to describe the classes and objects
that may be used in an AUTOSAR-compliant system. These metamodel elements
may be used in an application model (M1-level) to describe the content of a real vehi-
cle. ECU Configuration is a part of the AUTOSAR standard so the elements of ECU
Configuration Description shall be described in the UML metamodel at M2-level. The
(M2) metamodel has therefore been populated with UML descriptions from which ECU
Configuration Parameter models may be built.
With M2 definitions in place, it is possible to create AUTOSAR-conforming models
of real application ECU Configuration Parameters (an ECU Configuration Parameter
Definition Model) at M1-level. Certain aspects of real application configurations are
already defined: BSW Modules have standard interfaces and configuration require-
ments. These ’real’ configuration parameters have therefore already been modeled
at M1-level for each defined BSW Module. These are described in detail in the SWS
documents.
XML has been chosen as the technology that will be used by AUTOSAR-compliant
tools in order to define and share information during an AUTOSAR-compliant system
development. It shall therefore be possible to transform the UML Configuration Pa-
rameter Definition Model (M1-level) into an XML Configuration Parameter Definition so
that it may be used by ECU Configuration tools. This is the way that the tool gets a
definition of exactly which ECU Configuration Parameters are available and how they
may be configured. The XML Schema Production Rules [7] describes how the UML
metamodel (M2-level) may be transformed into a schema that describes the format of
XML to contain model elements.
This same formalization is also true for the ECU Configuration Parameter Definition
Metamodel elements on M2-level: the XML Schema Production Rules dictate how
ECU Configuration Parameter Definition elements will generate a schema to hold ECU
Configuration Parameter Model (M1-level) elements in an XML ECU Configuration Pa-
rameter Definition, that can then be interpreted by ECU Configuration tools.
ECU Configuration editors allow a system designer to set ECU Configuration Parame-
ter Values for their particular application. The actual values are then stored in an ECU
Configuration Value description that conforms to the template described in the UML.
An ECU Configuration Value description is an XML file that conforms to an AUTOSAR
schema called an ECU Configuration Value Template. The template in turn is an
AUTOSAR standard defined by placing ECU Configuration Value Template elements
into the UML Meta-Model (M2-level) such that the schema (the ECU Configuration
Value Template) can be generated (using the Formalization Guide rules).
There are three different parts involved in the development of the ECU Configuration:
UML models, Schema and XML content files. The overview is shown in figure 2.2.
ECU
Configuration
Editor(s)
The following section describes one way to define ECU Configuration Parameter defi-
nitions. Other ways of defining and maintaining of ECU Configuration Parameter defi-
nitions are also possible.
The ECU Configuration Parameter Definition Model is used to specify the ECU Con-
figuration Parameter Definition. This is done using object diagrams (this is the M1
level of metamodeling) with special semantics defined in section 2.3. What kind of
UML elements are allowed in the ECU Configuration Parameter Definition Model is de-
fined in the ECU Configuration Parameter Definition Metamodel which is conforming to
the Generic Structure Template [6]. The definition is done using UML class diagrams
(which is done on M2 level of metamodeling).
Out of the ECU Configuration Parameter Definition Metamodel a schema 2 is generated
and the generated ECU Configuration Parameter Definition XML file has to conform to
this schema. Vendor-specific ECU Configuration Parameter Definitions need to con-
form to this schema as well.
The ECU Configuration Value XML file needs to conform to the ECU Configuration
Value Template schema which itself is generated out of the ECU Configuration Value
Metamodel specified in UML class diagrams as well.
In the next section the ECU Configuration Parameter Definition Metamodel and its
application toward the ECU Configuration Parameter Definition Model is described.
In the following figures and tables the names from the UML model are shown. In the
generated XML-Schema the names may differ based on the XML Schema Production
Rules [7]. For instance, the attribute shortName will become SHORT-NAME in the
XML-Schema.
2
Whether a DTD or an XML-Schema is used is not relevant for this explanation and is left to the
formalization strategy defined in [7].
The definition of each Software Module’s3 configuration has at the top level the struc-
ture shown in figure 2.3. For an overview of the complete ECU Configuration top level
structure please refer to chapter 2.4.1.
PackageableElement
ARElement
AtpBlueprint AtpBlueprint
AtpBlueprintable +module AtpBlueprintable
EcucDefinitionCollection EcucDefinitionElement
0..*
EcucModuleDef
+refinedModuleDef 0..1
«atpUriDef»
«atpSplitable»
+container 0..*
EcucDefinitionElement
EcucContainerDef
3
A Software Module might be Basic Software, RTE, Application Software Component or Complex
Driver; see AUTOSAR Glossary [3]. The approach of Ecu configuration may be applied to non-
standardized AUTOSAR Software modules (Application Software Component or Complex Driver) using
the Vendor Specific Module Definition.
Example 2.1
<ADMIN-DATA>
<DOC-REVISIONS>
<DOC-REVISION>
<REVISION-LABEL>optional_file_revision</REVISION-LABEL>
<ISSUED-BY>AUTOSAR_or_VendorShortName</ISSUED-BY>
<DATE>optional_file_date</DATE>
</DOC-REVISION>
</DOC-REVISIONS>
</ADMIN-DATA>
Example 2.2
<ECUC-MODULE-DEF>
<SHORT-NAME>Rte</SHORT-NAME>
<DESC>
<L-2 L="EN">Configuration Parameter Definition of the RTE</L-2>
</DESC>
<ADMIN-DATA>
<DOC-REVISIONS>
<DOC-REVISION>
<REVISION-LABEL>4.2.1</REVISION-LABEL>
<ISSUED-BY>AUTOSAR</ISSUED-BY>
<DATE>2014-10-31</DATE>
</DOC-REVISION>
<DOC-REVISION>
<REVISION-LABEL>15.3.0</REVISION-LABEL>
<!--predecessor -->
<REVISION-LABEL-P-1>2.1.1</REVISION-LABEL-P-1>
<ISSUED-BY>VendorX</ISSUED-BY>
<DATE>2007-06-21T09:30:00+01:00</DATE>
</DOC-REVISION>
</DOC-REVISIONS>
</ADMIN-DATA>
<LOWER-MULTIPLICITY>0</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<CONTAINERS>
<!-- ... -->
</CONTAINERS>
</ECUC-MODULE-DEF>
AUTOSAR provides support for life cycle handling, defined in the Generic Structure
Template [6]. A standardized usage of this approach is defined in the Standardization
Template [4].
For the definition of ECU Configuration Parameters there is support in the MetaModel
to annotate the life cycle state of each EcucDefinitionElement. For the annotation
the following tagged value pairs can be used (see example 2.3):
• atp.Status
• atp.StatusComment
• atp.StatusRevisionBegin
Example 2.3
<LIFE-CYCLE-INFO-SET>
<SHORT-NAME>AUTOSARParameterDefinition</SHORT-NAME>
<DEFAULT-LC-STATE-REF DEST="LIFE-CYCLE-STATE">/AUTOSAR/GeneralDefinitions
/LifeCycleStateDefinitionGroups/AutosarLifeCycleStates/valid</DEFAULT-
LC-STATE-REF>
<DEFAULT-PERIOD-BEGIN>
<AR-RELEASE-VERSION>4.1.1</AR-RELEASE-VERSION>
</DEFAULT-PERIOD-BEGIN>
<LIFE-CYCLE-INFOS>
<LIFE-CYCLE-INFO>
<LC-OBJECT-REF DEST="ECUC-DEFINITION-ELEMENT">/AUTOSAR/EcucDefs/EcuC/
EcucConfigSet/EcucPduCollection/Pdu/SysTPduToFrameMappingRef</LC-
OBJECT-REF>
<LC-STATE-REF DEST="LIFE-CYCLE-STATE">/AUTOSAR/GeneralDefinitions/
LifeCycleStateDefinitionGroups/AutosarLifeCycleStates/obsolete</LC
-STATE-REF>
<PERIOD-BEGIN>
<AR-RELEASE-VERSION>4.1.1</AR-RELEASE-VERSION>
</PERIOD-BEGIN>
<REMARK>
<P>
<L-1 L="EN">obsolete since R4.1.1</L-1>
</P>
</REMARK>
<USE-INSTEAD-REFS>
<USE-INSTEAD-REF DEST="ECUC-DEFINITION-ELEMENT">/AUTOSAR/EcucDefs/
EcuC/EcucConfigSet/EcucPduCollection/Pdu/
SysTPduToFrameTriggeringRef</USE-INSTEAD-REF>
<USE-INSTEAD-REF DEST="ECUC-DEFINITION-ELEMENT">/AUTOSAR/EcucDefs/
EcuC/EcucConfigSet/EcucPduCollection/Pdu/
SysTPduToPduTriggeringRef</USE-INSTEAD-REF>
</USE-INSTEAD-REFS>
</LIFE-CYCLE-INFO>
</LIFE-CYCLE-INFOS>
<USED-LIFE-CYCLE-STATE-DEFINITION-GROUP-REF DEST="LIFE-CYCLE-STATE-
DEFINITION-GROUP">/AUTOSAR/GeneralDefinitions/
LifeCycleStateDefinitionGroups/AutosarLifeCycleStates</USED-LIFE-CYCLE
-STATE-DEFINITION-GROUP-REF>
</LIFE-CYCLE-INFO-SET>
Please note that in the current StMD only the atp.Status values “valid”, “obsolete” and
“draft” are used.
Example 2.4
<ECUC-MODULE-DEF>
<SHORT-NAME>Adc</SHORT-NAME>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>AdcHwUnit</SHORT-NAME>
<DESC>
<L-2 L="EN">This container contains the Driver configuration (
parameters) depending on grouping of channels</L-2>
</DESC>
<INTRODUCTION>
<P>
<L-1 L="EN">This container could contain HW specific parameters
which are not defined in the Standardized Module Definition.
They shall be added in the Vendor Specific Module Definition.<
/L-1>
</P>
</INTRODUCTION>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY-INFINITE>true</UPPER-MULTIPLICITY-INFINITE>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
Example 2.5 shows the usage of the Documentation element to describe elements
like chapters, lists, tables and figures. For details on this description means please
refer to the AUTOSAR Generic Structure Template [6].
Example 2.5
<DOCUMENTATION>
<SHORT-NAME>Adc_AddInfo</SHORT-NAME>
<CONTEXTS>
<DOCUMENTATION-CONTEXT>
<SHORT-NAME>AUTOSAR_Adc</SHORT-NAME>
<IDENTIFIABLE-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EcucDefs/Adc</
IDENTIFIABLE-REF>
</DOCUMENTATION-CONTEXT>
</CONTEXTS>
<DOCUMENTATION-CONTENT>
<CHAPTER>
<SHORT-NAME>Introduction</SHORT-NAME>
<P><L-1 L="EN">The ADC module initializes and controls the internal
Analogue Digital Converter Unit(s) of the microcontroller. It
provides services to start and stop a conversion respectively to
enable and disable the trigger source for a conversion.</L-1></P>
<P><L-1 L="EN">The consistency of the group channel results can be
obtained with the following methods on the application side:</L-1>
</P>
<LIST>
<ITEM>
<P><L-1 L="EN">Using group notification mechanism</L-1></P>
</ITEM>
<ITEM>
<P><L-1 L="EN">Polling via API function Adc_GetGroupStatus</L-1><
/P>
</ITEM>
</LIST>
<TABLE>
<TGROUP COLS="2">
<THEAD>
<ROW>
<ENTRY>
<P><L-1 L="EN">column1</L-1></P>
</ENTRY>
<ENTRY>
<P><L-1 L="EN">column2</L-1></P>
</ENTRY>
</ROW>
</THEAD>
<TBODY>
<ROW>
<ENTRY>
<P><L-1 L="EN">element11</L-1></P>
</ENTRY>
<ENTRY>
<P><L-1 L="EN">element12</L-1></P>
</ENTRY>
</ROW>
<ROW>
<ENTRY>
<P><L-1 L="EN">element21</L-1></P>
</ENTRY>
<ENTRY>
<P><L-1 L="EN">element22</L-1></P>
</ENTRY>
</ROW>
</TBODY>
</TGROUP>
</TABLE>
</CHAPTER>
</DOCUMENTATION-CONTENT>
</DOCUMENTATION>
Class EcucModuleDef
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Used as the top-level element for configuration definition for Software Modules, including BSW and RTE
as well as ECU Infrastructure.
Tags:atp.recommendedPackage=EcucModuleDefs
Base ARElement, ARObject, AtpBlueprint, AtpBlueprintable, AtpDefinition, CollectableElement, Ecuc
DefinitionElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
apiServicePrefix CIdentifier 0..1 attr For modules where several instances of the VSMD can
be defined the apiServicePrefix defines the API
namespace of the derived instances, e.g. Cdd, Xfrm
(ComXf, SomeIpXf, E2EXf).
container EcucContainerDef * aggr Aggregates the top-level container definitions of this
specific module definition.
Stereotypes: atpSplitable
Tags:
atp.Splitkey=container.shortName
xml.sequenceOffset=11
postBuildVariant Boolean 0..1 attr Indicates if a module supports different post-build variants
Support (previously known as post-build selectable configuration
sets). TRUE means yes, FALSE means no.
refinedModule EcucModuleDef 0..1 ref Optional reference from the Vendor Specific Module
Def Definition to the Standardized Module Definition it refines.
In case this EcucModuleDef has the category
STANDARDIZED_MODULE_DEFINITION this reference
shall not be provided. In case this EcucModuleDef has
the category VENDOR_SPECIFIC_MODULE_
DEFINITION this reference is mandatory.
Stereotypes: atpUriDef
supported EcucConfiguration * attr Specifies which ConfigurationVariants are supported by
ConfigVariant VariantEnum this software module. This attribute is optional if the Ecuc
ModuleDef has the category STANDARDIZED_
MODULE_DEFINITION. If the category attribute of the
EcucModuleDef is set to VENDOR_SPECIFIC_
MODULE_DEFINITION then this attribute is mandatory.
5
Note that post-build variants were previously known as post-build selectable configuration sets.
category Meaning
VENDOR_SPECIFIC_ The EcucModuleDef class is used to describe Vendor Specific Module
MODULE_DEFINITION Definition
Example 2.6
<AR-PACKAGE>
<SHORT-NAME>EcucDefs</SHORT-NAME>
<ELEMENTS>
<ECUC-DEFINITION-COLLECTION>
<SHORT-NAME>AUTOSARParameterDefinition</SHORT-NAME>
<MODULE-REFS>
<MODULE-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EcucDefs/Rte</
MODULE-REF>
<!-- Further references to module definitions -->
</MODULE-REFS>
</ECUC-DEFINITION-COLLECTION>
<ECUC-MODULE-DEF>
<SHORT-NAME>Rte</SHORT-NAME>
<DESC>
<L-2 L="EN">Configuration Parameter Definition of the RTE</L-2>
</DESC>
<LOWER-MULTIPLICITY>0</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<POST-BUILD-VARIANT-SUPPORT>false</POST-BUILD-VARIANT-SUPPORT>
<SUPPORTED-CONFIG-VARIANTS>
<SUPPORTED-CONFIG-VARIANT>VARIANT-PRE-COMPILE</SUPPORTED-CONFIG
-VARIANT>
</SUPPORTED-CONFIG-VARIANTS>
<CONTAINERS>
<!-- ... -->
</CONTAINERS>
</ECUC-MODULE-DEF>
</ELEMENTS>
</AR-PACKAGE>
In the next sections the structure of containers, individual parameters and references
is introduced.
There are two specializations of a container definition. The abstract class EcucCon-
tainerDef is used to gather the common features (see figure 2.5).
PreconfiguredConfiguration
RecommendedConfiguration
VariantPreCompile EcucContainerDef
EcucMultiplicityConfigurationClass
VariantLinkTime +multiplicityConfigClass
+ origin: String [0..1]
VariantPostBuild
+ postBuildVariantMultiplicity: Boolean [0..1] 0..*
+ requiresIndex: Boolean [0..1]
+subContainer 0..*
EcucCommonAttributes
«atpSplitable» EcucParameterDef
6
Note that post-build variants were previously known as post-build selectable configuration sets.
4
Class EcucParamConfContainerDef
reference EcucAbstractReference * aggr The references defined within the EcucParamConf
Def ContainerDef.
Stereotypes: atpSplitable
Tags:atp.Splitkey=reference.shortName
subContainer EcucContainerDef * aggr The containers defined within the EcucParamConf
ContainerDef.
Stereotypes: atpSplitable
Tags:atp.Splitkey=subContainer.shortName
In the XML outtake in example 2.7 only the relevant part from figure 2.6 is shown, not
including the EcucDefinitionCollection7 . The corresponding ECU Configuration
Value description XML file extract is shown in example 2.32.
Example 2.7
<ECUC-MODULE-DEF>
<SHORT-NAME>Rte</SHORT-NAME>
<LOWER-MULTIPLICITY>0</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<POST-BUILD-VARIANT-SUPPORT>false</POST-BUILD-VARIANT-SUPPORT>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>RteGeneration</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
</ECUC-PARAM-CONF-CONTAINER-DEF>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>SwComponentInstance</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY-INFINITE>true</UPPER-MULTIPLICITY-INFINITE>
<MULTIPLICITY-CONFIG-CLASSES>
7
Note that in the figures of ECU Configuration Parameter Definition modeled in UML the in-
finite upper multiplicity is shown as upperMultiplicity = * resulting in <UPPER-MULTIPLICITY-
INFINITE>true</UPPER-MULTIPLICITY-INFINITE>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-LINK-TIME</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-POST-BUILD</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-PRE-COMPILE</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
</MULTIPLICITY-CONFIG-CLASSES>
<POST-BUILD-VARIANT-MULTIPLICITY>false</POST-BUILD-VARIANT-
MULTIPLICITY>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
lowerMultiplicity = 0
upperMultiplicity = *
+subContainer +subContainer
ComGwSource: ComGwDestination:
EcucChoiceContainerDef EcucChoiceContainerDef
lowerMultiplicity = 1
upperMultiplicity = *
+choice +choice
ComGwSignal:
EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
+choice +choice
ComGwSourceDescription: ComGwDestinationDescription:
EcucParamConfContainerDef EcucParamConfContainerDef
upperMultiplicity = 1 upperMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0
Figure 2.7: Example of an object diagram for two choice container definitions
Example 2.8
<ECUC-MODULE-DEF>
<SHORT-NAME>Com</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<POST-BUILD-VARIANT-SUPPORT>true</POST-BUILD-VARIANT-SUPPORT>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ComGwMapping</SHORT-NAME>
<LOWER-MULTIPLICITY>0</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY-INFINITE>true</UPPER-MULTIPLICITY-INFINITE>
<MULTIPLICITY-CONFIG-CLASSES>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>LINK</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-LINK-TIME</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>POST-BUILD</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-POST-BUILD</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-PRE-COMPILE</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
</MULTIPLICITY-CONFIG-CLASSES>
<POST-BUILD-VARIANT-MULTIPLICITY>true</POST-BUILD-VARIANT-
MULTIPLICITY>
<SUB-CONTAINERS>
<ECUC-CHOICE-CONTAINER-DEF>
<SHORT-NAME>ComGwSource</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<CHOICES>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ComGwSignal</SHORT-NAME>
<!-- ... -->
</ECUC-PARAM-CONF-CONTAINER-DEF>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ComGwSourceDescription</SHORT-NAME>
<!-- ... -->
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CHOICES>
</ECUC-CHOICE-CONTAINER-DEF>
<ECUC-CHOICE-CONTAINER-DEF>
<SHORT-NAME>ComGwDestination</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY-INFINITE>true</UPPER-MULTIPLICITY-INFINITE>
<MULTIPLICITY-CONFIG-CLASSES>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>LINK</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-LINK-TIME</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>POST-BUILD</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-POST-BUILD</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-PRE-COMPILE</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
</MULTIPLICITY-CONFIG-CLASSES>
<POST-BUILD-VARIANT-MULTIPLICITY>true</POST-BUILD-VARIANT-
MULTIPLICITY>
<CHOICES>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ComGwSignal</SHORT-NAME>
The containers from the example, which the choice is from, will of course have to be
specified in more detail in an actual definition file.
Variant Handling has been introduced to AUTOSAR in a generic way. The major spec-
ification can be found in the AUTOSAR Generic Structure Template [6]. Every element
which is subject to variability shall have the stereotype <<atpVariation>> set.
Variant Handling is used in both areas of ECU Configuration, the ECU Configuration
Parameter Definition and ECU Configuration Value description. In this specification
the semantics of variant handling are specified at the actual location where they occur
individually.
8
Note that in the figures of ECU Configuration Parameter Definition modeled in UML the infinite upper
multiplicity is shown as upperMultiplicity = *
4
Class EcucDefinitionElement (abstract)
upperMultiplicity Boolean 0..1 attr To express an infinite number of occurrences of this
Infinite element this attribute has to be set to true.
If upperMultiplicityInfinite is set than upperMultiplicity shall
not be used.
atpVariation: [RS_ECUC_00082]
Stereotypes: atpVariation
Tags:
vh.latestBindingTime=codeGenerationTime
xml.sequenceOffset=130
Enumeration EcucScopeEnum
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Possible scope settings for a configuration element.
Aggregated by EcucDefinitionElement.scope
Literal Description
ECU An element may be shared with other modules.
Tags:atp.EnumerationLiteralIndex=0
local An element is only be applicable for the module it is defined in.
Tags:atp.EnumerationLiteralIndex=1
Several attributes are available on both, parameters and references. These common
attributes are shown in figure 2.8.
«enumeration» AtpDefinition
Identifiable +trace 0..*
EcucConfigurationClassEnum
EcucDefinitionElement
PublishedInformation MultilanguageReferrable
PreCompile + scope: EcucScopeEnum [0..1] +relatedTraceItem Traceable
Link «atpVariation» «atpUriDef» 0..1
PostBuild + lowerMultiplicity: PositiveInteger [0..1]
+ upperMultiplicity: PositiveInteger [0..1]
+ upperMultiplicityInfinite: Boolean [0..1]
«enumeration»
EcucConfigurationVariantEnum
EcucMultiplicityConfigurationClass
PreconfiguredConfiguration
+multiplicityConfigClass
RecommendedConfiguration EcucCommonAttributes
VariantPreCompile 0..*
VariantLinkTime + origin: String [0..1]
VariantPostBuild + postBuildVariantMultiplicity: Boolean [0..1]
+ postBuildVariantValue: Boolean [0..1]
+ requiresIndex: Boolean [0..1] +valueConfigClass EcucValueConfigurationClass
0..*
EcucParameterDef
EcucAbstractReferenceDef EcucAbstractConfigurationClass
+ symbolicNameValue: Boolean [0..1]
+ withAuto: Boolean [0..1] + withAuto: Boolean [0..1] + configClass: EcucConfigurationClassEnum [0..1]
+ configVariant: EcucConfigurationVariantEnum [0..1]
Example 2.9
<ECUC-INTEGER-PARAM-DEF>
<SHORT-NAME>ClockRate</SHORT-NAME>
<ORIGIN>AUTOSAR_ECUC</ORIGIN>
</ECUC-INTEGER-PARAM-DEF>
<ECUC-BOOLEAN-PARAM-DEF>
<SHORT-NAME>VendorExtensionEnabled</SHORT-NAME>
<ORIGIN>VendorXYZ_v1.3</ORIGIN>
</ECUC-BOOLEAN-PARAM-DEF>
In example 2.9 two parameters are defined, one which belongs to the AUTOSAR stan-
dard and one which is introduced by the module vendor in a specific version of his own
ECU Configuration tools.
Class EcucValueConfigurationClass
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Specifies the ValueConfigurationClass of a parameter/reference for each ConfigurationVariant of the
EcucModuleDef.
Base ARObject, EcucAbstractConfigurationClass
Aggregated by EcucCommonAttributes.valueConfigClass
Attribute Type Mult. Kind Note
– – – – –
Table 2.13: EcucValueConfigurationClass
Class EcucMultiplicityConfigurationClass
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Specifies the MultiplicityConfigurationClass of a parameter/reference or a container for each
ConfigurationVariant of the EcucModuleDef.
Base ARObject, EcucAbstractConfigurationClass
Aggregated by EcucCommonAttributes.multiplicityConfigClass, EcucContainerDef .multiplicityConfigClass
Attribute Type Mult. Kind Note
– – – – –
Table 2.14: EcucMultiplicityConfigurationClass
Enumeration EcucConfigurationClassEnum
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Possible configuration classes for the AUTOSAR configuration parameters.
Aggregated by EcucAbstractConfigurationClass.configClass
Literal Description
Link Link Time: parts of configuration are delivered from another object code file
Tags:atp.EnumerationLiteralIndex=0
PostBuild PostBuildTime: after compilation a configuration parameter can be changed.
Tags:atp.EnumerationLiteralIndex=1
PreCompile PreCompile Time: after compilation a configuration parameter can not be changed any more.
Tags:atp.EnumerationLiteralIndex=2
5
4
Enumeration EcucConfigurationClassEnum
Published PublishedInformation is used to specify the fact that certain information is fixed even before the
Information pre-compile stage.
Tags:atp.EnumerationLiteralIndex=3
Enumeration EcucConfigurationVariantEnum
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Specifies the possible Configuration Variants used for AUTOSAR BSW Modules.
Aggregated by EcucAbstractConfigurationClass.configVariant, EcucModuleConfigurationValues.implementation
ConfigVariant, EcucModuleDef.supportedConfigVariant
Literal Description
Preconfigured Preconfigured (i.e. fixed) configuration which cannot be changed.
Configuration
Tags:atp.EnumerationLiteralIndex=0
Recommended Recommended configuration for a module.
Configuration
Tags:atp.EnumerationLiteralIndex=1
VariantLinkTime Specifies that the BSW Module implementation may use PreCompileTime and LinkTime configuration
parameters.
Tags:atp.EnumerationLiteralIndex=2
VariantPostBuild Specifies that the BSW Module implementation may use PreCompileTime, LinkTime and PostBuild
configuration parameters.
Tags:atp.EnumerationLiteralIndex=3
VariantPreCompile Specifies that the BSW Module implementation uses only PreCompileTime configuration parameters.
Tags:atp.EnumerationLiteralIndex=6
Example 2.10
<ECUC-INTEGER-PARAM-DEF>
<SHORT-NAME>SignalSize</SHORT-NAME>
<MULTIPLICITY-CONFIG-CLASSES>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-PRE-COMPILE</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-LINK-TIME</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>POST-BUILD</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-POST-BUILD</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
</MULTIPLICITY-CONFIG-CLASSES>
<POST-BUILD-VARIANT-MULTIPLICITY>true</POST-BUILD-VARIANT-MULTIPLICITY>
<POST-BUILD-VARIANT-VALUE>true</POST-BUILD-VARIANT-VALUE>
<VALUE-CONFIG-CLASSES>
<ECUC-VALUE-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-PRE-COMPILE</CONFIG-VARIANT>
</ECUC-VALUE-CONFIGURATION-CLASS>
<ECUC-VALUE-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-LINK-TIME</CONFIG-VARIANT>
</ECUC-VALUE-CONFIGURATION-CLASS>
<ECUC-VALUE-CONFIGURATION-CLASS>
<CONFIG-CLASS>POST-BUILD</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-POST-BUILD</CONFIG-VARIANT>
</ECUC-VALUE-CONFIGURATION-CLASS>
</VALUE-CONFIG-CLASSES>
</ECUC-INTEGER-PARAM-DEF>
The configuration tools are now able to derive the configuration class of each configu-
ration parameter and reference from the ECU Configuration Parameter Definition XML
file [8].
12
Note that post-build variants were previously known as post-build selectable configuration sets.
+defaultValue 0..1
«atpVariation» «atpVariation»
+ defaultValue: Boolean [0..1]A + defaultValue: Float [0..1] «atpSplitable»
+ max: Limit [0..1]
+ min: Limit [0..1]
+literal 0..*
Identifiable
EcucIntegerParamDef EcucEnumerationLiteralDef
«atpVariation»
«atpVariation» + origin: String [0..1]
EcucAbstractStringParamDef
+ defaultValue: UnlimitedInteger [0..1]
+ max: UnlimitedInteger [0..1] + defaultValue: VerbatimString [0..1]
+ min: UnlimitedInteger [0..1] + maxLength: PositiveInteger [0..1]
+ minLength: PositiveInteger [0..1]
+ regularExpression: RegularExpression [0..1]
«primitive»
VerbatimString
«primitive»
+ blueprintValue: String [0..1] RegularExpression
+ xmlSpace: XmlSpaceEnum [0..1]
tags
xml.xsd.customType = VERBATIM-STRING
xml.xsd.type = string
xml.xsd.whiteSpace = preserve EcucMultilineStringParamDef EcucLinkerSymbolDef
EcucStringParamDef EcucFunctionNameDef
4
Class EcucParameterDef (abstract)
withAuto Boolean 0..1 attr Specifies whether it shall be allowed on the value side to
specify this parameter value as "AUTO".
If withAuto is "true" it shall be possible to set the "isAuto
Value" attribute of the respective parameter to "true". This
means that the actual value will not be considered during
ECU Configuration but will be (re-)calculated by the code
generator and stored in the value attribute afterwards.
These implicit updated values might require a
re-generation of other modules which reference these
values.
If withAuto is "false" it shall not be possible to set the "is
AutoValue" attribute of the respective parameter to "true".
If withAuto is not present the default is "false".
defaultValue = MyPimInitValuesLightMaster
RteGenerationMode:
EcucEnumerationParamDef
+literal +literal
CompatibilityMode: VendorMode:
EcucEnumerationLiteralDef EcucEnumerationLiteralDef
This parameter can also be used for other ’boolean’-type configuration parameters with
the semantic of:
• ON / OFF
• ENABLE / DISABLE
• 1 / 0
even if the ECU Configuration Values are restricted as described in
[TPS_ECUC_02127].
Please note that the representation of an boolean parameter value or an attribute which
supports atpVariation as true / false already requires the processing of the
BooleanLiteral true /false by the formula processor.
On the ECU Configuration Value description side boolean parameter values are repre-
sented as EcucNumericalParamValues (see chapter 2.4.4.2). The attribute "value"
in the EcucNumericalParamValue supports atpVariation and therefore the
BooleanLiteral true /false is supported by the formula language as well. Please note
that true evaluates to 1 and false to 0 (see [6] for more details).
[TPS_ECUC_02111] Variable default value in EcucBooleanParamDef d The at-
tribute defaultValue of EcucBooleanParamDef is subject to variant handling. The
value can be computed using the variant handling mechanism.c(RS_ECUC_00083)
Class EcucBooleanParamDef
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Configuration parameter type for Boolean. Allowed values are true and false.
Base ARObject, AtpDefinition, EcucCommonAttributes, EcucDefinitionElement, EcucParameterDef ,
Identifiable, MultilanguageReferrable, Referrable
Aggregated by EcucDestinationUriPolicy.parameter, EcucParamConfContainerDef.parameter
Attribute Type Mult. Kind Note
defaultValue Boolean 0..1 attr Default value of the boolean configuration parameter.
atpVariation: [RS_ECUC_00083]
Stereotypes: atpVariation
Tags:vh.latestBindingTime=codeGenerationTime
Example 2.11 shows the ECUC Parameter definition XML file. The corresponding
ECUC Value description XML file extract is shown in example 2.37.
Example 2.11
<ECUC-INTEGER-PARAM-DEF>
<SHORT-NAME>PositionInTask</SHORT-NAME>
<DEFAULT-VALUE>0</DEFAULT-VALUE>
<MAX>255</MAX>
<MIN>0</MIN>
</ECUC-INTEGER-PARAM-DEF>
13
The min and max values are defined optional, however in the ’Vendor Specific Module Definition’
these values are mandatory.
4
Class EcucIntegerParamDef
Attribute Type Mult. Kind Note
defaultValue UnlimitedInteger 0..1 attr Default value of the integer configuration parameter.
atpVariation: [RS_ECUC_00083]
Stereotypes: atpVariation
Tags:vh.latestBindingTime=codeGenerationTime
max UnlimitedInteger 0..1 attr Max value allowed for the parameter defined.
atpVariation: [RS_ECUC_00084]
Stereotypes: atpVariation
Tags:vh.latestBindingTime=codeGenerationTime
min UnlimitedInteger 0..1 attr Min value allowed for the parameter defined.
atpVariation: [RS_ECUC_00084]
Stereotypes: atpVariation
Tags:vh.latestBindingTime=codeGenerationTime
Example 2.12 shows the ECUC Parameter definition XML file. The corresponding
ECUC Value description XML file extract is shown in example 2.38.
Example 2.12
<ECUC-INTEGER-PARAM-DEF>
<SHORT-NAME>PositionInTask</SHORT-NAME>
<DEFAULT-VALUE>0</DEFAULT-VALUE>
<MAX>255</MAX>
<MIN>0</MIN>
</ECUC-INTEGER-PARAM-DEF>
14
The min and max values are defined optional, however in the ’Vendor Specific Module Definition’
these values are mandatory.
Example 2.13
<ECUC-FLOAT-PARAM-DEF>
<SHORT-NAME>SchedulingPeriod</SHORT-NAME>
<ORIGIN>AUTOSAR_ECUC</ORIGIN>
<DEFAULT-VALUE>NaN</DEFAULT-VALUE>
<MAX INTERVAL-TYPE="CLOSED">80</MAX>
<MIN INTERVAL-TYPE="OPEN">0</MIN>
</ECUC-FLOAT-PARAM-DEF>
Example 2.14 shows the ECUC Parameter definition XML file. The corresponding
ECUC Value description XML file extract is shown in example 2.34.
Example 2.14
<ECUC-LINKER-SYMBOL-DEF>
<SHORT-NAME>RtePimInitializationSymbol</SHORT-NAME>
<ECUC-LINKER-SYMBOL-DEF-VARIANTS>
<ECUC-LINKER-SYMBOL-DEF-CONDITIONAL>
<DEFAULT-VALUE>MyPimInitValuesLightMaster</DEFAULT-VALUE>
</ECUC-LINKER-SYMBOL-DEF-CONDITIONAL>
</ECUC-LINKER-SYMBOL-DEF-VARIANTS>
</ECUC-LINKER-SYMBOL-DEF>
Example 2.15 shows the ECUC Parameter definition XML file. The corresponding
ECUC Value description XML file extract is shown in example 2.35.
Example 2.15
<ECUC-FUNCTION-NAME-DEF>
<SHORT-NAME>EepJobEndNotification</SHORT-NAME>
<ECUC-FUNCTION-NAME-DEF-VARIANTS>
<ECUC-FUNCTION-NAME-DEF-CONDITIONAL>
<DEFAULT-VALUE>Eep_JobEndNotification</DEFAULT-VALUE>
</ECUC-FUNCTION-NAME-DEF-CONDITIONAL>
</ECUC-FUNCTION-NAME-DEF-VARIANTS>
</ECUC-FUNCTION-NAME-DEF>
Class EcucEnumerationParamDef
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Configuration parameter type for Enumeration.
Base ARObject, AtpDefinition, EcucCommonAttributes, EcucDefinitionElement, EcucParameterDef ,
Identifiable, MultilanguageReferrable, Referrable
Aggregated by EcucDestinationUriPolicy.parameter, EcucParamConfContainerDef.parameter
Attribute Type Mult. Kind Note
defaultValue Identifier 0..1 attr Default value of the enumeration configuration parameter.
This string needs to be one of the literals specified for this
enumeration.
literal EcucEnumerationLiteral * aggr Aggregation on the literals used to define this
Def enumeration parameter. This aggregation is optional if the
surrounding EcucModuleDef has the category
STANDARDIZED_MODULE_DEFINITION. If the
category attribute of the EcucModuleDef is set to
VENDOR_SPECIFIC_MODULE_DEFINITION then this
aggregation is mandatory.
Stereotypes: atpSplitable
Tags:atp.Splitkey=literal.shortName
Example 2.16 shows the ECUC Parameter definition XML file. The corresponding
ECUC Value description XML file extract is shown in example 2.36.
Example 2.16
<ECUC-ENUMERATION-PARAM-DEF>
<SHORT-NAME>RteGenerationMode</SHORT-NAME>
<LITERALS>
<ECUC-ENUMERATION-LITERAL-DEF>
<SHORT-NAME>CompatibilityMode</SHORT-NAME>
<LONG-NAME>
<L-4 L="EN">Generate in Compatibility Mode</L-4>
</LONG-NAME>
</ECUC-ENUMERATION-LITERAL-DEF>
<ECUC-ENUMERATION-LITERAL-DEF>
<SHORT-NAME>VendorMode</SHORT-NAME>
<LONG-NAME>
<L-4 L="EN">Generate in Vendor Mode</L-4>
</LONG-NAME>
</ECUC-ENUMERATION-LITERAL-DEF>
</LITERALS>
</ECUC-ENUMERATION-PARAM-DEF>
2.3.5.9 AddInfo
Example 2.17 shows the ECUC Parameter definition XML file. The corresponding
ECUC Value description XML file extract is shown in example 2.40.
Example 2.17
<ECUC-ADD-INFO-PARAM-DEF>
<SHORT-NAME>DiagnosticTesterMessage</SHORT-NAME>
</ECUC-ADD-INFO-PARAM-DEF>
There are five kinds of references available for the definition of configuration parame-
ters referring to other entities.
• Reference to other configuration containers within the ECU Configuration Value
description (see section 2.3.6.1).
• A choice in the referenced configuration container can be specified and the ECU
Configuration Value description has the freedom (with restrictions) to choose to
which target type the reference is pointing to (see section 2.3.6.2).
• Entities outside the ECU Configuration Value description can be referenced when
they have been specified in a different AUTOSAR Template (see section 2.3.6.3).
• Entities outside the ECU Configuration Value description can be referenced using
the instanceRef semantics defined in the Generic Structure Template [6] (see
section 2.3.6.4).
• Reference to a destination that is specified via destinationUri (see section
2.3.6.6).
+reference 0..*
EcucAbstractExternalReferenceDef
«atpSplitable»
«atpUriDef» «atpUriDef»
«atpUriDef»
+destination 0..* +destination 0..1
ARElement
EcucChoiceContainerDef AtpBlueprint
«atpSplitable»
AtpBlueprintable
EcucDestinationUriDefSet
«atpSplitable»
+choice 0..*
EcucParamConfContainerDef
4
Class EcucAbstractInternalReferenceDef (abstract)
Base ARObject, AtpDefinition, EcucAbstractReferenceDef , EcucCommonAttributes, EcucDefinitionElement,
Identifiable, MultilanguageReferrable, Referrable
Subclasses EcucChoiceReferenceDef, EcucReferenceDef, EcucUriReferenceDef
Aggregated by EcucDestinationUriPolicy.reference, EcucParamConfContainerDef.reference
Attribute Type Mult. Kind Note
requires Boolean 0..1 attr If this attribute is set to true the implementation of the
SymbolicName reference is done using a Symbolic Name defined by the
Value referenced container according to TPS_ECUC_02108.
2.3.6.1 Reference
Class EcucReferenceDef
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Specify references within the ECU Configuration Description between parameter containers.
Base ARObject, AtpDefinition, EcucAbstractInternalReferenceDef , EcucAbstractReferenceDef , EcucCommon
Attributes, EcucDefinitionElement, Identifiable, MultilanguageReferrable, Referrable
Aggregated by EcucDestinationUriPolicy.reference, EcucParamConfContainerDef.reference
Attribute Type Mult. Kind Note
destination EcucContainerDef 0..1 ref Exactly one reference to a parameter container is allowed
as destination.
Stereotypes: atpUriDef
The role name at the EcucReferenceDef has to be reference and the role name
at the referenced container has to be destination (see figure 2.12 for an example).
OsApplication: OsAppScheduleTableRef: OsScheduleTable:
EcucParamConfContainerDef +reference EcucReferenceDef +destination EcucParamConfContainerDef
In the example in figure 2.12 the ’OsApplication’ is defined to contain references to the
’OsScheduleTable’. The references are called ’OsAppScheduleTableRef’ and there
can be several such references in the actual ECU Configuration Value description doc-
ument. For the multiplicity of references the multiplicity definition on the EcucRef-
erenceDef are relevant (in the example the lowerMultiplicity is ’0’ and the
upperMultiplicity is ’*’). The multiplicity of the referenced container is not con-
sidered for references.
In the ECU Configuration Parameter Definition XML file the destination has to be
identified unambiguously because the names of configuration parameters are not re-
quired to be unique throughout the whole ECU Configuration Parameter Definition. So
there might be a parameter defined in the CAN-Driver with the same name as one
parameter defined in the ADC-Driver. For this reason the containment hierarchy of
the referenced configuration parameter has to be denoted in the definition XML file,
as shown in example 2.18. In this example the referenced parameter will be found in
the definition of the Os module directly in the AUTOSARParameterDefinition. The
corresponding ECUC Value description XML file extract is shown in example 2.41.
Example 2.18
<ECUC-REFERENCE-DEF>
<SHORT-NAME>OsAppScheduleTableRef</SHORT-NAME>
<DESTINATION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Os/OsScheduleTable</DESTINATION-REF>
</ECUC-REFERENCE-DEF>
All the available choices are connected via associations with the role name destina-
tion at the referenced object (see example in figure 2.13).
PortPin:
EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
+reference
PortPinMode:
EcucChoiceReferenceDef
upperMultiplicity = 1
lowerMultiplicity = 1
upperMultiplicity = * upperMultiplicity = *
lowerMultiplicity = 1 lowerMultiplicity = 1
In this example an actual instance of the ’PortPinMode’ container can reference one
of the three defined containers. Once again the multiplicity is defined by the Ecuc-
ChoiceReferenceDef (here the default ’1’ for lower and upper) and the multiplicities
of the referenced containers are not relevant for choice references.
Example 2.19
<ECUC-CHOICE-REFERENCE-DEF>
<SHORT-NAME>PortPinMode</SHORT-NAME>
<DESTINATION-REFS>
<DESTINATION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/EcucDefs
/Can/CanDrvCanController</DESTINATION-REF>
<DESTINATION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/EcucDefs
/Adc/AdcChannel</DESTINATION-REF>
<DESTINATION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/EcucDefs
/Spi/SpiCsDirect</DESTINATION-REF>
</DESTINATION-REFS>
</ECUC-CHOICE-REFERENCE-DEF>
In the ECU Configuration Value description the actual choice will be taken and there
will be only one reference destination left15 .
AUTOSAR Templates’ metamodel, it is sufficient to provide only the actual class name
of the referenced class in the destinationType, as shown in example 2.20.c()
[TPS_ECUC_06088] Specification of the destinationType format in a Ecuc-
ForeignReferenceDef dThe string entered as destinationType shall have the
name of a M2 class defined in the metamodel [9] under ’M2:: AUTOSAR Templates’ as
it is represented in the XML-Schema [11] and the referenced class needs to be derived
(directly or indirectly) from Identifiable. In the generated Parameter Definition
XML file [8] the XML-Schema name shall be used.c()
System template
+reference FibexElement
FrameMapping: SystemFrame:
EcucParamConfContainerDef EcucForeignReferenceDef CoreCommunication::Frame
Example 2.20
<ECUC-FOREIGN-REFERENCE-DEF>
<SHORT-NAME>SystemFrame</SHORT-NAME>
<DESTINATION-TYPE>FRAME</DESTINATION-TYPE>
</ECUC-FOREIGN-REFERENCE-DEF>
16
For a detailed description of the instanceRef concept please refer to the Generic Structure Tem-
plate [6]
SW-COMPONENT-PROTOTYPE R-PORT-PROTOTYPE
Class EcucInstanceReferenceDef
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Specify a reference to an XML description of an entity described in another AUTOSAR template using
the INSTANCE REFERENCE semantics.
Base ARObject, AtpDefinition, EcucAbstractExternalReferenceDef , EcucAbstractReferenceDef , Ecuc
CommonAttributes, EcucDefinitionElement, Identifiable, MultilanguageReferrable, Referrable
Aggregated by EcucDestinationUriPolicy.reference, EcucParamConfContainerDef.reference
Attribute Type Mult. Kind Note
destination String 0..1 attr The context in the AUTOSAR Metamodel to which’ this
Context reference is allowed to point to.
destinationType String 0..1 attr The type in the AUTOSAR Metamodel to which’ instance
this reference is allowed to point to.
AtpPrototype ARElement
SwComponentPrototype type AtpBlueprint
AtpBlueprintable
«isOfType» 0..1 AtpType
{redefines SwComponentType
atpType}
«atpVariation,atpSplitable»
port 0..*
AtpBlueprintable
AtpPrototype
PortPrototype
AbstractProvidedPortPrototype AbstractRequiredPortPrototype
«isOfType» «isOfType»
0..1 «isOfType» 0..1
{redefines 0..1 {redefines
providedInterface providedRequiredInterface {redefines atpType} requiredInterface atpType}
atpType}
ARElement
AtpBlueprint
AtpBlueprintable
AtpType
PortInterface
DataInterface
dataElement AutosarDataPrototype
SenderReceiverInterface
VariableDataPrototype
0..*
VariableDataPrototoypeRef: EcucInstanceReferenceDef
SenderReceiverMapping: reference
EcucParamConfContainerDef destinationType = VARIABLE-DATA-PROTOTYPE
destinationContext = SW-COMPONENT-PROTOTYPE* PORT-PROTOTYPE
Example 2.21
<ECUC-INSTANCE-REFERENCE-DEF>
<SHORT-NAME>VariableDataPrototypeRef</SHORT-NAME>
<DESTINATION-CONTEXT>SW-COMPONENT-PROTOTYPE* PORT-PROTOTYPE</DESTINATION-
CONTEXT>
<DESTINATION-TYPE>VARIABLE-DATA-PROTOTYPE</DESTINATION-TYPE>
</ECUC-INSTANCE-REFERENCE-DEF>
In the example definition shown in figure 2.16 the CorTst module can contain a CorT-
stDemEventParameterRefs. Those errors need to be defined in the Dem module.
And only the Dem module is able to define actual numbers associated with these errors
when all errors have been specified and collected in the Dem module. Those asso-
ciated values can be stored in the DemEventId parameter which belongs to each
DemEventParameter.
For an example how this is used in the ECU Configuration Value description refer to
section 2.4.5.2. The corresponding ECUC Value description XML file extract is shown
in example 2.45.
CorTst: EcucModuleDef CorTstDemEventParameterRefs: CORTST_E_CORE_FAILURE:
+container
EcucParamConfContainerDef +reference EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1 lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 upperMultiplicity = 1
requiresSymbolicNameValue = true
Dem: EcucModuleDef
upperMultiplicity = 1
lowerMultiplicity = 0
+container +destination
Example 2.22
<ECUC-MODULE-DEF>
<SHORT-NAME>CorTst</SHORT-NAME>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>CorTstDemEventParameterRefs</SHORT-NAME>
<LOWER-MULTIPLICITY>0</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<REFERENCES>
<ECUC-REFERENCE-DEF>
<SHORT-NAME>CORTST_E_CORE_FAILURE</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<REQUIRES-SYMBOLIC-NAME-VALUE>true</REQUIRES-SYMBOLIC-NAME-VALUE>
<DESTINATION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Dem/DemEventParameter</DESTINATION-REF>
</ECUC-REFERENCE-DEF>
</REFERENCES>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
<ECUC-MODULE-DEF>
<SHORT-NAME>Dem</SHORT-NAME>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>DemEventParameter</SHORT-NAME>
<LOWER-MULTIPLICITY>0</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY-INFINITE>true</UPPER-MULTIPLICITY-INFINITE>
<PARAMETERS>
<ECUC-INTEGER-PARAM-DEF>
<SHORT-NAME>DemEventId</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<SYMBOLIC-NAME-VALUE>true</SYMBOLIC-NAME-VALUE>
</ECUC-INTEGER-PARAM-DEF>
</PARAMETERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
Class EcucDestinationUriDefSet
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note This class represents a list of EcucDestinationUriDefs.
Tags:atp.recommendedPackage=EcucDestinationUriDefSets
Base ARElement, ARObject, AtpBlueprint, AtpBlueprintable, CollectableElement, Identifiable, Multilanguage
Referrable, PackageableElement, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
destinationUri EcucDestinationUriDef * aggr This is one particular EcucDestinationUriDef.
Def
Table 2.37: EcucDestinationUriDefSet
Class EcucDestinationUriDef
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Description of an EcucDestinationUriDef that is used as target of EcucUriReferenceDefs.
Base ARObject, Identifiable, MultilanguageReferrable, Referrable
Aggregated by EcucDestinationUriDefSet.destinationUriDef
Attribute Type Mult. Kind Note
destinationUri EcucDestinationUri 0..1 aggr Description of the targeted EcucContainerDef.
Policy Policy
+destinationUriPolicy
0..1
EcucDestinationUriPolicy EcucDefinitionElement
+ destinationUriNestingContract: EcucDestinationUriNestingContractEnum [0..1] EcucContainerDef
+container
+ origin: String [0..1]
0..* + postBuildVariantMultiplicity: Boolean [0..1]
+ requiresIndex: Boolean [0..1]
EcucCommonAttributes
+parameter EcucParameterDef
EcucCommonAttributes
EcucAbstractReferenceDef
+reference
+ withAuto: Boolean [0..1]
0..*
«enumeration»
EcucDestinationUriNestingContractEnum
targetContainer
leafOfTargetContainer
vertexOfTargetContainer
Enumeration EcucDestinationUriNestingContractEnum
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note EcucDestinationUriNestingContractEnum is used to determine what is qualified by the Ecuc
DestinationUriPolicy.
Aggregated by EcucDestinationUriPolicy.destinationUriNestingContract
Literal Description
leafOfTarget EcucDestinationUriPolicy describes elements (subContainers, Parameters, References) that are
Container directly owned by the target container.
Tags:atp.EnumerationLiteralIndex=0
targetContainer EcucDestinationUriPolicy describes the target container of EcucUriReferenceDef.
Tags:atp.EnumerationLiteralIndex=1
vertexOfTarget EcucDestinationUriPolicy describes elements (subContainers, Parameters, References) of the target
Container container which can be defined in arbitrary nested subContainer structure.
Tags:atp.EnumerationLiteralIndex=2
Example 2.23
<AR-PACKAGES>
<AR-PACKAGE>
<SHORT-NAME>EcucModuleDefs</SHORT-NAME>
<ELEMENTS>
<ECUC-MODULE-DEF>
<SHORT-NAME>UriTarget</SHORT-NAME>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>UriReferableContainer</SHORT-NAME>
<DESTINATION-URI-REFS>
<DESTINATION-URI-REF DEST="ECUC-DESTINATION-URI-DEF">/
Example/UriSetA/Uri1</DESTINATION-URI-REF>
</DESTINATION-URI-REFS>
<PARAMETERS>
<ECUC-INTEGER-PARAM-DEF>
<SHORT-NAME>InterestingParam1</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<MAX>255</MAX>
<MIN>1</MIN>
</ECUC-INTEGER-PARAM-DEF>
</PARAMETERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
<ECUC-MODULE-DEF>
<SHORT-NAME>UriRef</SHORT-NAME>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>Container1</SHORT-NAME>
<REFERENCES>
<ECUC-URI-REFERENCE-DEF>
<SHORT-NAME>UriRef_Uri1</SHORT-NAME>
<DESTINATION-URI-REF DEST="ECUC-DESTINATION-URI-DEF">
/Example/UriSetA/Uri1</DESTINATION-URI-REF>
</ECUC-URI-REFERENCE-DEF>
</REFERENCES>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
</ELEMENTS>
</AR-PACKAGE>
<AR-PACKAGE>
<SHORT-NAME>EcucDestinationUriDefSet</SHORT-NAME>
<ELEMENTS>
<ECUC-DESTINATION-URI-DEF-SET>
<SHORT-NAME>UriSetA</SHORT-NAME>
<DESTINATION-URI-DEFS>
<ECUC-DESTINATION-URI-DEF>
<SHORT-NAME>Uri1</SHORT-NAME>
<DESTINATION-URI-POLICY>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>UriReferableContainer</SHORT-NAME>
<PARAMETERS>
<ECUC-INTEGER-PARAM-DEF>
<SHORT-NAME>InterestingParam1</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<MAX>255</MAX>
<MIN>1</MIN>
</ECUC-INTEGER-PARAM-DEF>
</PARAMETERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
<DESTINATION-URI-NESTING-CONTRACT>TARGET-CONTAINER</
DESTINATION-URI-NESTING-CONTRACT>
</DESTINATION-URI-POLICY>
</ECUC-DESTINATION-URI-DEF>
</DESTINATION-URI-DEFS>
</ECUC-DESTINATION-URI-DEF-SET>
</ELEMENTS>
</AR-PACKAGE>
</AR-PACKAGES>
The parameter definitions introduced in the previous sections are meant to define con-
figuration parameter types regardless how the actual values will be captured. But since
the ECU Configuration is dependent on lots of other input information many values for
the configuration of the BSW and the RTE can be taken over or calculated from other
values already available in the description (e.g. the System Extract or the Software-
Component description) or other sections of the ECU Configuration. Such configura-
tion parameters are called Derived Configuration Parameters.
EcucContainerDef
EcucParamConfContainerDef
«atpSplitable»
+parameter 0..*
EcucCommonAttributes
EcucParameterDef
Paginateable
+derivation 0..1
+informalFormula MlFormula
EcucDerivationSpecification
0..1
+calculationFormula FormulaExpression
0..1 «atpMixedString»
EcucParameterDerivationFormula
+ecucQuery 0..*
+ecucQuery
Identifiable
0..1
EcucQuery
{subsets
atpReference}
0..1 +ecucQueryString
{subsets
+ecucQueryExpression 0..1 atpStringReference}
«atpMixedString»
EcucQueryExpression
AtpDefinition
+configElementDefGlobal
Identifiable
«atpUriDef» EcucDefinitionElement
0..1
+ scope: EcucScopeEnum [0..1]
«atpVariation»
+configElementDefLocal + lowerMultiplicity: PositiveInteger [0..1]
+ upperMultiplicity: PositiveInteger [0..1]
«atpUriDef» 0..1 + upperMultiplicityInfinite: Boolean [0..1]
Class EcucDerivationSpecification
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Allows to define configuration items that are calculated based on the value of
• other parameter values
• elements (attributes/classes) defined in other AUTOSAR templates such as System template
and SW component template
Base ARObject
Aggregated by EcucParameterDef .derivation
Attribute Type Mult. Kind Note
calculation EcucParameter 0..1 aggr Definition of the formula used to calculate the value of the
Formula DerivationFormula configuration element.
ecucQuery EcucQuery * aggr Query to the ECU Configuration Description.
informalFormula MlFormula 0..1 aggr Informal description of the derivation used to calculate the
value of the configuration element.
The informal Calculation Formula (MlFormula) can be used for the same purpose.
But here, the rules how the derived values are computed are not defined. Different
representations can be used to specify such an informal computational rule. More
details can be found in MSRSW. Although the MlFormula is informal there can be
some programming language syntax and semantics interpreted.
To derive Configuration Parameter values with the formal calculation formula one or
several EcucQuerys can be defined. An EcucQuery is Identifiable and aggre-
gates one EcucQueryExpression. The EcucQueryExpression defines a query
to the ECU Configuration Value description and outputs the result as a numerical value.
Four functions are currently supported by the EcucQueryExpression: count, value,
deref and refvalue. Due the atpMixedString nature of the EcucQueryExpres-
sion several function keywords mixed with several local and global references17 can
be defined within an EcucQueryExpression.
Class EcucQuery
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Defines a query to the ECUC Description.
Base ARObject, Identifiable, MultilanguageReferrable, Referrable
Aggregated by EcucConditionSpecification.ecucQuery, EcucDerivationSpecification.ecucQuery, EcucValidation
Condition.ecucQuery
Attribute Type Mult. Kind Note
ecucQuery EcucQueryExpression 0..1 aggr This is the EcucQuery used in the calculation formula or
Expression the condition formula.
17
configElementDefLocal, configElementDefGlobal
4
Class <<atpMixedString>> EcucQueryExpression
Aggregated by EcucQuery.ecucQueryExpression
Attribute Type Mult. Kind Note
configElement EcucDefinitionElement 0..1 ref The EcucQueryExpression points to an EcucDefinition
DefGlobal Element that is used to find an element in the Ecuc
Description. In order to find the right element in the Ecuc
Description a search is necessary. If the complete Ecuc
Description needs to be searched this global reference
shall be used. Due to the "mixedString" nature of the
EcucQueryExpression several references to Ecuc
DefintionElements can be used in one EcucQuery
Expression.
Stereotypes: atpUriDef
configElement EcucDefinitionElement 0..1 ref The EcucQueryExpression points to an EcucDefinition
DefLocal Element that is used to find an element in the Ecuc
Description. In order to find the right element in the Ecuc
Description a search is necessary. If the search is
executed inside of the same module that contains the
EcucQuery this local reference shall be used. Due to the
"mixedString" nature of the EcucQueryExpression several
references to EcucDefintionElements can be used in one
EcucQueryExpression.
Stereotypes: atpUriDef
18
The deref function shall only be applied to element sets which are guaranteed to contain only up to
1 element.
19
The value function shall only be applied to element sets which are guaranteed to contain only up to
1 element.
[TPS_ECUC_06029] Output of the count function in case the input parameter set
is empty dThe count function returns zero if the input parameter set is empty.c()
In order to find the referenced element in the ECUC Value description the reference
to the EcucDefinitionElement needs to be traced. If the complete ECUC Value
description needs to be searched a global reference (configElementDefGlobal)
shall be used. If the search is executed inside of the same module a local reference (
configElementDefLocal) is sufficient.
The following section shows the EcucQueryExpression syntax:
ecuQueryExpr : (valueExpr|stringValueExpr|valueAtExpr|stringValueAtExpr|countExpr);
valueExpr : ’value(’(derefExpr | refValueExpr) ’)’;
stringValueExpr : ’strValue(’(derefExpr | refValueExpr) ’)’;
valueAtExpr : ’valueAt(’(derefExpr | refValueExpr) ’,’ index ’)’
stringValueAtExpr : ’strValueAt(’(derefExpr | refValueExpr) ’,’ index ’)’
countExpr : ’count(’(derefExpr | refValueExpr) ’)’;
refValueExpr : ’refvalue(’ refExpr ’)’;
derefExpr : ’deref(’(derefExpr| refValueExpr) ’,’ refString ’)’;
refExpr : (localRef | globalRef);
localRef : ’<CONFIG-ELEMENT-DEF-LOCAL-REF DEST="’ NCName* ’">’
refString ’</CONFIG-ELEMENT-DEF-LOCAL-REF>’;
globalRef : ’<CONFIG-ELEMENT-DEF-GLOBAL-REF DEST="’ NCName* ’">’
refString ’</CONFIG-ELEMENT-DEF-GLOBAL-REF>’;
refString : ’/’NCName(’/’NCName)*;
index: ’0’ | (’1’..’9’)(’0’..’9’)*;
NCName : (Letter) (Letter | (’0’..’9’) | ’_’)*;
Figure 2.19 shows a COM Gateway example where the CheckConsistency boolean
parameter is calculated. This parameter checks the length of the Source Signal and
compares it with the length of the Destination Signal. If the length of both signals is
equal this parameter is set to true, otherwise to false. An XML extract from an ECUC
Parameter Definition file is is shown in example 2.24.
ComConfig: EcucParamConfContainerDef
+subContainer
+subContainer +subContainer
ComGwSource: ComGwDestination:
EcucChoiceContainerDef EcucChoiceContainerDef
upperMultiplicity = *
lowerMultiplicity = 1
+choice +choice
+parameter
+reference
The CalculationFormula compares both values and determines the value for the
CheckConsistency parameter. The corresponding ECUC Value description XML file
extract is shown in example 2.24.
Example 2.24
<ECUC-MODULE-DEF>
<SHORT-NAME>Com</SHORT-NAME>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ComConfig</SHORT-NAME>
<SUB-CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ComGwMapping</SHORT-NAME>
<PARAMETERS>
<ECUC-BOOLEAN-PARAM-DEF>
<SHORT-NAME>CheckConsistency</SHORT-NAME>
<DERIVATION>
<CALCULATION-FORMULA>
(<ECUC-QUERY-REF DEST="ECUC-QUERY">getSourceSignalLength</ECUC-QUERY-REF>
==
<ECUC-QUERY-REF DEST="ECUC-QUERY">
getDestinationSignalLength</ECUC-QUERY-REF>)
</CALCULATION-FORMULA>
<ECUC-QUERYS>
<ECUC-QUERY>
<SHORT-NAME>getSourceSignalLength</SHORT-NAME>
<ECUC-QUERY-EXPRESSION>
value(
deref(
deref(
refvalue(<CONFIG-ELEMENT-DEF-LOCAL-REF DEST="ECUC-REFERENCE-DEF">/AUTOSAR/
EcucDefs/Com/ComConfig/ComGwMapping/ComGwSource/ComGwSignal/
ComGwSignalRef</CONFIG-ELEMENT-DEF-LOCAL-REF>),
/AUTOSAR/EcucDefs/Com/ComConfig/ComGwMapping/ComGwSource/ComGwSignal/
ComGwSignalRef),
/ComBitSize)
)
</ECUC-QUERY-EXPRESSION>
</ECUC-QUERY>
<ECUC-QUERY>
<SHORT-NAME>getDestinationSignalLength</SHORT-NAME>
<ECUC-QUERY-EXPRESSION>
value(
deref(
deref(
refvalue(<CONFIG-ELEMENT-DEF-LOCAL-REF DEST="ECUC-REFERENCE-DEF">/AUTOSAR/
EcucDefs/Com/ComConfig/ComGwMapping/ComGwDestination/ComGwSignal/
ComGwSignalRef</CONFIG-ELEMENT-DEF-LOCAL-REF>),
/AUTOSAR/EcucDefs/Com/ComConfig/ComGwMapping/ComGwDestination/ComGwSignal/
ComGwSignalRef),
/ComBitSize)
)
</ECUC-QUERY-EXPRESSION>
</ECUC-QUERY>
</ECUC-QUERYS>
</DERIVATION>
</ECUC-BOOLEAN-PARAM-DEF>
</PARAMETERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</SUB-CONTAINERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
The next example 2.25 shows the usage of the count operation. Within the COM mod-
ule an Integer Parameter countNoOfCanDrv is introduced which counts the available
CanDrv modules. To cover all CanDrv modules a global reference is used.
Example 2.25
<ECUC-MODULE-DEF>
<SHORT-NAME>Com</SHORT-NAME>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ComConfig</SHORT-NAME>
<PARAMETERS>
<ECUC-INTEGER-PARAM-DEF>
<SHORT-NAME>numberOfCanDrivers</SHORT-NAME>
<DERIVATION>
<CALCULATION-FORMULA>
<ECUC-QUERY-REF DEST="ECUC-QUERY">countNoOfCanDrv</ECUC-QUERY
-REF>
</CALCULATION-FORMULA>
<ECUC-QUERYS>
<ECUC-QUERY>
<SHORT-NAME>countNoOfCanDrv</SHORT-NAME>
<ECUC-QUERY-EXPRESSION>
count(
refvalue(<CONFIG-ELEMENT-DEF-GLOBAL-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/
EcucDefs/Can</CONFIG-ELEMENT-DEF-GLOBAL-REF>)
)
</ECUC-QUERY-EXPRESSION>
</ECUC-QUERY>
</ECUC-QUERYS>
</DERIVATION>
</ECUC-INTEGER-PARAM-DEF>
</PARAMETERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
A third example 2.20 shows a reference into the System Description. The referenced
ComSignal contains a ForeignReference into the System Template (SystemTem-
plateSystemSignalRef). The searched startPosition attribute is defined in the Sys-
tem Template and describes a bitposition of a SystemSignal within a PDU.
To get the value of this attribute three deref functions are used. The first deref func-
tion provides the ComSignal. The second deref function provides the ISignalToP-
duMapping element of the System Description and the third deref function returns
the startPosition attribute of the ISignalToPduMapping element. The attribute
value is provided by the value function and is used in the calculation formula.
ComConfig: EcucParamConfContainerDef
+subContainer
ComGwMapping: EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
+subContainer +subContainer
+choice +choice
System Description Template
ComGwSignal: EcucParamConfContainerDef +reference ComGwSignalRef:
EcucReferenceDef
Identifiable
ISignalToIPduMapping
Example 2.26
<ECUC-MODULE-DEF>
<SHORT-NAME>Com</SHORT-NAME>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ComConfig</SHORT-NAME>
<SUB-CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ComGwMapping</SHORT-NAME>
<PARAMETERS>
<ECUC-INTEGER-PARAM-DEF>
<SHORT-NAME>startPositionBits</SHORT-NAME>
<DERIVATION>
<CALCULATION-FORMULA>
<ECUC-QUERY-REF DEST="ECUC-QUERY">
getSourceSignalStartPosition</ECUC-QUERY-REF>* 8
</CALCULATION-FORMULA>
<ECUC-QUERYS>
<ECUC-QUERY>
<SHORT-NAME>getSourceSignalStartPosition</SHORT-NAME>
<ECUC-QUERY-EXPRESSION>
value(
deref(
deref(
deref(
refvalue(<CONFIG-ELEMENT-DEF-LOCAL-REF DEST="ECUC-REFERENCE-DEF">/AUTOSAR/
EcucDefs/Com/ComConfig/ComGwMapping/ComGwSource/ComGwSignal/
ComGwSignalRef</CONFIG-ELEMENT-DEF-LOCAL-REF>),
/AUTOSAR/EcucDefs/Com/ComConfig/ComGwMapping/ComGwSource/ComGwSignal/
ComGwSignalRef),
/SystemTemplateSystemSignalRef),
/SystemTemplateSystemSignalRef),
/startPosition)
)
</ECUC-QUERY-EXPRESSION>
</ECUC-QUERY>
</ECUC-QUERYS>
</DERIVATION>
</ECUC-INTEGER-PARAM-DEF>
</PARAMETERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</SUB-CONTAINERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
ECUC Parameter Values can be calculated from other parameter values that are avail-
able in other sections of the ECU Configuration. Such derived configuration parameters
are described in detail in chapter 2.3.7. But also the existence of a ECUC Container,
Parameter and Reference definition elements can depend on the setting of ECUC Pa-
rameter Values. Such it is for example possible to define parameters that are only
considered if a specific switch parameter is set to a certain value. Otherwise these
parameters are ignored.
Identifiable AtpDefinition
EcucEnumerationLiteralDef Identifiable +configElementDefLocal
EcucDefinitionElement «atpMixedString»
+ origin: String [0..1] 0..1 «atpUriDef» EcucQueryExpression
+ scope: EcucScopeEnum [0..1]
«atpVariation» +configElementDefGlobal
+ lowerMultiplicity: PositiveInteger [0..1] «atpUriDef»
0..1
+ upperMultiplicity: PositiveInteger [0..1] +ecucQueryExpression 0..1
+ upperMultiplicityInfinite: Boolean [0..1]
+ecucCond 0..1
+ecucCond 0..1
Identifiable
EcucConditionSpecification
+ecucQuery EcucQuery
0..*
Class EcucConditionSpecification
Package M2::AUTOSARTemplates::ECUCParameterDefTemplate
Note Allows to define existence dependencies based on the value of parameter values.
Base ARObject
Aggregated by EcucDefinitionElement.ecucCond, EcucEnumerationLiteralDef.ecucCond
Attribute Type Mult. Kind Note
condition EcucConditionFormula 0..1 aggr Definition of the formula used to define existence
Formula dependencies.
ecucQuery EcucQuery * aggr Query to the ECU Configuration Description.
informalFormula MlFormula 0..1 aggr Informal description of the condition used to to define
existence dependencies.
In the following example in figure 2.22 – taken from the Can Interface module – a
possible usage of the condition formula is shown.
CanIf: EcucModuleDef
upperMultiplicity = 1
lowerMultiplicity = 0
+container
defaultValue = True
+parameter CanIfSupportTTCAN:
EcucBooleanParamDef
defaultValue = FALSE
CanIfTTGeneral:
+subContainer
EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
The container CanIfPrivateCfg contains 2 parameters and one sub container. The
use case is to make the existance of the container CanIfTTGeneral dependent on
the value configured in the parameter CanIfSupportTTCAN. If the value of CanIf-
SupportTTCAN is set to true the container CanIfTTGeneral and its content shall
Example 2.27
<ECUC-MODULE-DEF>
<SHORT-NAME>CanIf</SHORT-NAME>
<LOWER-MULTIPLICITY>0</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>CanIfPrivateCfg</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<PARAMETERS>
<ECUC-BOOLEAN-PARAM-DEF>
<SHORT-NAME>CanIfPrivateDlcCheck</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<!-- ... -->
</ECUC-BOOLEAN-PARAM-DEF>
<ECUC-BOOLEAN-PARAM-DEF>
<SHORT-NAME>CanIfSupportTTCAN</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<DEFAULT-VALUE>false</DEFAULT-VALUE>
</ECUC-BOOLEAN-PARAM-DEF>
</PARAMETERS>
<SUB-CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>CanIfTTGeneral</SHORT-NAME>
<ECUC-COND>
<CONDITION-FORMULA>
<ECUC-QUERY-REF DEST="ECUC-QUERY">GetTTCanEnabled</ECUC-QUERY
-REF>
</CONDITION-FORMULA>
<ECUC-QUERYS>
<ECUC-QUERY>
<SHORT-NAME>GetTTCanEnabled</SHORT-NAME>
<ECUC-QUERY-EXPRESSION>
value(
refvalue(<CONFIG-ELEMENT-DEF-LOCAL-REF DEST="ECUC-BOOLEAN-PARAM-DEF">/
AUTOSAR/EcucDefs/CanIf/CanIfPrivateCfg/CanIfSupportTTCAN</CONFIG-
ELEMENT-DEF-LOCAL-REF>)
)
</ECUC-QUERY-EXPRESSION>
</ECUC-QUERY>
</ECUC-QUERYS>
</ECUC-COND>
<LOWER-MULTIPLICITY>0</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<PARAMETERS>
<!-- ... -->
</PARAMETERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</SUB-CONTAINERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
The condition formula is part of the CanIfTTGeneral container definition (see exam-
ple 2.27). The formula itself is pretty simple, it just returns the value of the EcucQuery
with the name GetTTCanEnabled.
The EcucQuery looks for an element in the ECU Configuration Value description
which matches the definition
(/AUTOSAR/EcucDefs/CanIf/CanIfPrivateCfg/CanIfSupportTTCAN)
in the local context using the refvalue function.
The EcucQuery then takes the value of the element and returns. Since the element is
of boolean type the result of the EcucQuery is already a boolean value which can be
processed by the condition formula.
AtpDefinition
Identifiable +configElementDefGlobal
EcucDefinitionElement «atpMixedString»
0..1 «atpUriDef»
+ scope: EcucScopeEnum [0..1] EcucQueryExpression
«atpVariation» +configElementDefLocal
+ lowerMultiplicity: PositiveInteger [0..1]
+ upperMultiplicity: PositiveInteger [0..1] 0..1 «atpUriDef»
+ upperMultiplicityInfinite: Boolean [0..1] +ecucQueryExpression 0..1
+ecucValidationCond 0..*
Identifiable
EcucValidationCondition
+ecucQueryString
0..1
{subsets
atpStringReference}
The ECU Configuration Parameter Definitions UML model may define an EcucCon-
tainerDef that is aggregated by different EcucParamConfContainerDefs in the
role subContainer. In case that the subContainer contains references then some
rules apply that are described in the following:
[TPS_ECUC_06089] Multiple aggregation of container trees that include refer-
ences to other subContainers in the same aggregated container tree dIn case an
+subContainer +subContainer
ContainerA: EcucParamConfContainerDef
<SHORT-NAME>ContainerA2Ref</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<SCOPE>LOCAL</SCOPE>
<DESTINATION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/
AUTOSAR/EcucDefs/ExampleModule/ContainerB/ContainerA/
ContainerA2</DESTINATION-REF>
</ECUC-REFERENCE-DEF>
</REFERENCES>
</ECUC-PARAM-CONF-CONTAINER-DEF>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ContainerA2</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</SUB-CONTAINERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</SUB-CONTAINERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ContainerC</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<SUB-CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ContainerA</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<SUB-CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ContainerA1</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<REFERENCES>
<ECUC-REFERENCE-DEF>
<SHORT-NAME>ContainerA2Ref</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<DESTINATION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/
AUTOSAR/EcucDefs/ExampleModule/ContainerC/ContainerA/
ContainerA2</DESTINATION-REF>
</ECUC-REFERENCE-DEF>
</REFERENCES>
</ECUC-PARAM-CONF-CONTAINER-DEF>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ContainerA2</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</SUB-CONTAINERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</SUB-CONTAINERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
Listing 2.1: Example for multiple aggregation of container trees in ECU Configuration
Definition ARXML file
The top-level entry point to an AUTOSAR ECU Configuration Value description is the
EcucValueCollection (see figure 2.25). Because of the inheritance from AREle-
ment the EcucValueCollection can be part of an AUTOSAR description like its
counterpart the EcucDefinitionCollection does. Please note that the Ecuc-
ValueCollection and the EcucDefinitionCollection are independent from
each other.
ECU Configuration Parameter Definition ECU Configuration Parameter Values
ARElement ARElement
ARElement
AtpBlueprint AtpStructureElement
EcucValueCollection +ecuExtract
AtpBlueprintable System
EcucDefinitionCollection 0..1
+ containerIPduHeaderByteOrder: ByteOrderEnum [0..1]
+ ecuExtractVersion: RevisionLabelString [0..1]
+ pncVectorLength: PositiveInteger [0..1]
+ pncVectorOffset: PositiveInteger [0..1]
«atpVariation,atpSplitable» + systemVersion: RevisionLabelString
+module 0..*
«atpVariation,atpSplitable»
+container 0..*
«atpSplitable»
+container 0..* EcucIndexableValue +subContainer 0..*
+definition Identifiable
EcucDefinitionElement «atpVariation,atpSplitable»
EcucContainerValue
EcucContainerDef 0..1
the following criteria: primary sorting criterion is the index. Values without an in-
dex are to be sorted after the values with index. Secondary sorting criterion is the
reference value (Base + reference).c()
[TPS_ECUC_06069] Sorting criteria for Parameters on the Values side d Param-
eters on the Values side which have the same definition shall be sorted according to
the following criteria: primary sorting criterion is the index. Parameter values without
an index shall be sorted based on parameter values: secondary sorting criterion is the
parameter value.c()
The index is defined in the EcucIndexableValue class. EcucParameterValue
and EcucAbstractReferenceValue inherit from EcucIndexableValue.
Class EcucIndexableValue (abstract)
Package M2::AUTOSARTemplates::ECUCDescriptionTemplate
Note Used to support the specification of ordering of parameter values.
Base ARObject
Subclasses EcucAbstractReferenceValue, EcucContainerValue, EcucParameterValue
Attribute Type Mult. Kind Note
index PositiveInteger 0..1 attr Used to support the specification of ordering of parameter
values.
Tags:xml.sequenceOffset=-5
4
Class EcucModuleConfigurationValues
Base ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, Packageable
Element, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
container EcucContainerValue * aggr Aggregates all containers that belong to this module
configuration.
atpVariation: [RS_ECUC_00078]
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=container.shortName, container.variation
Point.shortLabel
vh.latestBindingTime=postBuild
xml.sequenceOffset=10
definition EcucModuleDef 0..1 ref Reference to the definition of this EcucModule
ConfigurationValues element. Typically, this is a vendor
specific module configuration.
Tags:xml.sequenceOffset=-10
ecucDefEdition RevisionLabelString 0..1 attr This is the version info of the ModuleDef ECUC
Parameter definition to which this values conform to / are
based on.
For the Definition of ModuleDef ECUC Parameters the
AdminData shall be used to express the semantic
changes. The compatibility rules between the definition
and value revision labels is up to the module’s vendor.
implementation EcucConfiguration 0..1 attr Specifies the kind of deliverable this EcucModule
ConfigVariant VariantEnum ConfigurationValues element provides. If this element is
not used in a particular role (e.g. preconfigured
Configuration or recommendedConfiguration) then the
value shall be one of VariantPreCompile, VariantLink
Time, VariantPostBuild.
module BswImplementation 0..1 ref Referencing the BSW module description, which this
Description EcucModuleConfigurationValues element is configuring.
This is optional because the EcucModuleConfiguration
Values element is also used to configure the ECU
infrastructure (memory map) or Application SW-Cs.
However in case the EcucModuleConfigurationValues are
used to configure the module, the reference is mandatory
in order to fetch module specific "common" published
information.
postBuildVariant Boolean 0..1 attr Indicates whether a module implementation has or plans
Used to have (i.e., introduced at link or post-build time) new
post-build variation points. TRUE means yes, FALSE
means no. If the attribute is not defined, FALSE
semantics shall be assumed.
Table 2.50: EcucModuleConfigurationValues
ARElement
AtpStructureElement
System
+ecuExtract 0..1
ARElement ARElement
AtpBlueprint EcucValueCollection
AtpBlueprintable
EcucDefinitionCollection
«atpUriDef»
«atpVariation,atpSplitable»
+refinedModuleDef
0..1 +module 0..* +ecucValue 0..*
ARElement ARElement
AtpBlueprint EcucModuleConfigurationValues
AtpBlueprintable
EcucDefinitionElement + ecucDefEdition: RevisionLabelString [0..1]
EcucModuleDef + implementationConfigVariant: EcucConfigurationVariantEnum [0..1]
+ postBuildVariantUsed: Boolean [0..1]
+ apiServicePrefix: CIdentifier [0..1]
+ postBuildVariantSupport: Boolean [0..1] +definition
+ supportedConfigVariant: EcucConfigurationVariantEnum [0..*]
0..1
+vendorSpecificModuleDef 0..*
+moduleDescription 0..1
Implementation
BswImplementation
Example 2.28
<AR-PACKAGE>
<SHORT-NAME>ECUC1</SHORT-NAME>
<ELEMENTS>
<ECUC-VALUE-COLLECTION>
<SHORT-NAME>Configuration</SHORT-NAME>
<ECU-EXTRACT-REF DEST="SYSTEM">/some_package/some_path/
theEcuExtractForEcuXY</ECU-EXTRACT-REF>
<ECUC-VALUES>
<ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL>
<ECUC-MODULE-CONFIGURATION-VALUES-REF DEST="ECUC-MODULE-
CONFIGURATION-VALUES">/ECUC/theRteConfig</ECUC-MODULE-
CONFIGURATION-VALUES-REF>
</ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL>
</ECUC-VALUES>
</ECUC-VALUE-COLLECTION>
<ECUC-MODULE-CONFIGURATION-VALUES>
<SHORT-NAME>theRteConfig</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EcucDefs/Rte</
DEFINITION-REF>
<IMPLEMENTATION-CONFIG-VARIANT>VARIANT-PRE-COMPILE</IMPLEMENTATION-
CONFIG-VARIANT>
<MODULE-DESCRIPTION-REF DEST="BSW-IMPLEMENTATION">/some_package/
some_path/theUsed_Rte_BSWModuleImplementation</MODULE-DESCRIPTION-
REF>
<CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>theGeneration</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Rte/RteGeneration</DEFINITION-REF>
<SUB-CONTAINERS>
<!-- ... -->
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
</CONTAINERS>
</ECUC-MODULE-CONFIGURATION-VALUES>
</ELEMENTS>
</AR-PACKAGE>
In the document Generic Structure Template [6] it is specified that the elements of an
aggregation are allowed to be split over several XML files if the relationship is marked
with the stereotype atpSplitable.
The stereotype atpSplitable has been introduced to support the delivery of
one module’s EcucModuleConfigurationValues in several XML files, see also
Autosar Methodology [1] chapter 2.7.8.3 and 2.7.8.4 for use-cases.
Each splitable property (attribute, aggregation, reference) need to be uniquely identifi-
able. This happens usually by shortName. The DEFINITION-REF can also be used.
For example, the EcucParameterValues of an EcucContainerValue are allowed
to be split over several XML files. Each EcucParameterValue is uniquely identifi-
able via the reference to the EcucParameterDef. More details can be found in the
Generic Structure Template [6].
In Example 2.29 a simple definition of a module’s configuration parameters is shown. It
just consists of one container which has two parameters, one parameter defined to be
PRE-COMPILE time configurable and the other parameter is POST-BUILD time config-
urable with respect to both their value and multiplicity. The values and the multiplicities
for these parameters are defined in different process steps and therefore two XML files
can be used to describe both values.
In example 2.30 the value for the PRE-COMPILE time parameter ComSignalLength
is specified, while in example 2.31 the POST-BUILD parameter’s ComSignalInit-
Value value is given.
The XML structure in both EcucModuleConfigurationValues XML files is equivalent with
respect to the packages and containers. In both XML files a container with the name
theSignal is defined. It is up to the configuration tool to merge the content of these
two files into one model. Also is the number of possible XML files not limited, so it
would be possible (although probably not reasonable) to put each parameter value into
one XML file.
Example 2.29
<ECUC-MODULE-DEF>
<SHORT-NAME>Com</SHORT-NAME>
<LOWER-MULTIPLICITY>0</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<POST-BUILD-VARIANT-SUPPORT>true</POST-BUILD-VARIANT-SUPPORT>
<SUPPORTED-CONFIG-VARIANTS>
<SUPPORTED-CONFIG-VARIANT>VARIANT-POST-BUILD</SUPPORTED-CONFIG-VARIANT>
</SUPPORTED-CONFIG-VARIANTS>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>ComSignal</SHORT-NAME>
<LOWER-MULTIPLICITY>0</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>*</UPPER-MULTIPLICITY>
<MULTIPLICITY-CONFIG-CLASSES>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>POST-BUILD</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-POST-BUILD</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
</MULTIPLICITY-CONFIG-CLASSES>
<POST-BUILD-VARIANT-MULTIPLICITY>true</POST-BUILD-VARIANT-
MULTIPLICITY>
<PARAMETERS>
<ECUC-INTEGER-PARAM-DEF>
<SHORT-NAME>ComSignalLength</SHORT-NAME>
<MULTIPLICITY-CONFIG-CLASSES>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-POST-BUILD</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
</MULTIPLICITY-CONFIG-CLASSES>
<ORIGIN>AUTOSAR_ECUC</ORIGIN>
<VALUE-CONFIG-CLASSES>
<ECUC-VALUE-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-POST-BUILD</CONFIG-VARIANT>
</ECUC-VALUE-CONFIGURATION-CLASS>
</VALUE-CONFIG-CLASSES>
</ECUC-INTEGER-PARAM-DEF>
<ECUC-INTEGER-PARAM-DEF>
<SHORT-NAME>ComSignalInitValue</SHORT-NAME>
<MULTIPLICITY-CONFIG-CLASSES>
<ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
<CONFIG-CLASS>POST-BUILD</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-POST-BUILD</CONFIG-VARIANT>
</ECUC-MULTIPLICITY-CONFIGURATION-CLASS>
</MULTIPLICITY-CONFIG-CLASSES>
<ORIGIN>AUTOSAR_ECUC</ORIGIN>
<VALUE-CONFIG-CLASSES>
<ECUC-VALUE-CONFIGURATION-CLASS>
<CONFIG-CLASS>POST-BUILD</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-POST-BUILD</CONFIG-VARIANT>
</ECUC-VALUE-CONFIGURATION-CLASS>
</VALUE-CONFIG-CLASSES>
</ECUC-INTEGER-PARAM-DEF>
</PARAMETERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
Example 2.30
<ECUC-MODULE-CONFIGURATION-VALUES>
<SHORT-NAME>theComConfig</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EcucDefs/Com</DEFINITION-
REF>
<IMPLEMENTATION-CONFIG-VARIANT>VARIANT-POST-BUILD</IMPLEMENTATION-CONFIG-
VARIANT>
<MODULE-DESCRIPTION-REF DEST="BSW-IMPLEMENTATION">/some_package/
theUsed_Com_BSWModuleImplementation</MODULE-DESCRIPTION-REF>
<CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>theSignal</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Com/ComSignal</DEFINITION-REF>
<PARAMETER-VALUES>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/AUTOSAR/EcucDefs/
Com/ComSignal/ComSignalLength</DEFINITION-REF>
<VALUE>2</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
</PARAMETER-VALUES>
</ECUC-CONTAINER-VALUE>
</CONTAINERS>
</ECUC-MODULE-CONFIGURATION-VALUES>
Example 2.31
<ECUC-MODULE-CONFIGURATION-VALUES>
<SHORT-NAME>theComConfig</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EcucDefs/Com</DEFINITION-
REF>
<IMPLEMENTATION-CONFIG-VARIANT>VARIANT-POST-BUILD</IMPLEMENTATION-CONFIG-
VARIANT>
<MODULE-DESCRIPTION-REF DEST="BSW-IMPLEMENTATION">/some_package/
theUsed_Com_BSWModuleImplementation</MODULE-DESCRIPTION-REF>
<CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>theSignal</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Com/ComSignal</DEFINITION-REF>
<PARAMETER-VALUES>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/AUTOSAR/EcucDefs/
Com/ComSignal/ComSignalInitValue</DEFINITION-REF>
<VALUE>0</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
</PARAMETER-VALUES>
</ECUC-CONTAINER-VALUE>
</CONTAINERS>
</ECUC-MODULE-CONFIGURATION-VALUES>
Symmetrically to the parameter container definition (see section 2.3.3) the parameter
container description is specified to group other containers, parameter values and ref-
erences. Figure 2.27 depicts the general structure of the configuration container Value
description and its association to the configuration definition. The dependencies reflect
the direct relationship between a EcucContainerValue and a EcucContainerDef
as well as a EcucParameterValue and a ParameterType.
ECU Configuration Parameter Definition ECU Configuration Parameter Values
+subContainer 0..*
«atpSplitable»
«atpVariation,atpSplitable»
«atpSplitable»
+parameter 0..* +parameterValue 0..*
EcucCommonAttributes
EcucParameterValue
EcucParameterDef
+definition
+ isAutoValue: Boolean [0..1]
+ symbolicNameValue: Boolean [0..1]
0..1
+ withAuto: Boolean [0..1]
21
including all EcucContainerDef’s decendants
Class EcucContainerValue
Package M2::AUTOSARTemplates::ECUCDescriptionTemplate
Note Represents a Container definition in the ECU Configuration Description.
Base ARObject, EcucIndexableValue, Identifiable, MultilanguageReferrable, Referrable
Aggregated by EcucContainerValue.subContainer, EcucModuleConfigurationValues.container
Attribute Type Mult. Kind Note
definition EcucContainerDef 0..1 ref Reference to the definition of this Container in the ECU
Configuration Parameter Definition.
Tags:xml.sequenceOffset=-10
parameterValue EcucParameterValue * aggr Aggregates all ECU Configuration Values within this
Container.
atpVariation: [RS_ECUC_00079]
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=parameterValue, parameterValue.variation
Point.shortLabel
vh.latestBindingTime=postBuild
referenceValue EcucAbstractReference * aggr Aggregates all References with this container.
Value
atpVariation: [RS_ECUC_00079]
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=referenceValue, referenceValue.variation
Point.shortLabel
vh.latestBindingTime=postBuild
subContainer EcucContainerValue * aggr Aggregates all sub-containers within this container.
atpVariation: [RS_ECUC_00078]
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=subContainer.shortName, sub
Container.variationPoint.shortLabel
vh.latestBindingTime=postBuild
Example 2.32
<ECUC-MODULE-CONFIGURATION-VALUES>
<SHORT-NAME>theRteConfig</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EcucDefs/Rte</DEFINITION-
REF>
<IMPLEMENTATION-CONFIG-VARIANT>VARIANT-PRE-COMPILE</IMPLEMENTATION-CONFIG
-VARIANT>
<MODULE-DESCRIPTION-REF DEST="BSW-IMPLEMENTATION">/some_package/some_path
/theUsed_Rte_BSWModuleImplementation</MODULE-DESCRIPTION-REF>
<CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>theGeneration</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Rte/RteGeneration</DEFINITION-REF>
<SUB-CONTAINERS>
<!-- ... -->
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>SwcInstance1</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Rte/SwComponentInstance</DEFINITION-REF>
<SUB-CONTAINERS>
<!-- ... -->
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>SwcInstance2</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Rte/SwComponentInstance</DEFINITION-REF>
<SUB-CONTAINERS>
<!-- ... -->
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
</CONTAINERS>
</ECUC-MODULE-CONFIGURATION-VALUES>
Example 2.33
<ECUC-MODULE-CONFIGURATION-VALUES>
<SHORT-NAME>myChoiceExample</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EcucDefs/Com</DEFINITION-
REF>
<CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>ComGwMapping001</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Com/ComGwMapping</DEFINITION-REF>
<SUB-CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myGwSource001</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-CHOICE-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Com/ComGwMapping/ComGwSource</DEFINITION-REF>
<SUB-CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myGwSource001_1</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR
/EcucDefs/Com/ComGwMapping/ComGwSource/ComGwSignal</
DEFINITION-REF>
<!--...-->
</ECUC-CONTAINER-VALUE>
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myGwDestination021</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-CHOICE-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Com/ComGwMapping/ComGwDestination</DEFINITION-REF>
<SUB-CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myGwDestination021a</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR
/EcucDefs/Com/ComGwMapping/ComGwDestination/ComGwSignal</
DEFINITION-REF>
<!--...-->
</ECUC-CONTAINER-VALUE>
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myGwDestination022</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-CHOICE-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Com/ComGwMapping/ComGwDestination</DEFINITION-REF>
<SUB-CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myGwDestination022a</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR
/EcucDefs/Com/ComGwMapping/ComGwDestination/
ComGwDestinationDescription</DEFINITION-REF>
<!--...-->
</ECUC-CONTAINER-VALUE>
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myGwDestination023</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-CHOICE-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Com/ComGwMapping/ComGwDestination</DEFINITION-REF>
<SUB-CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myGwDestination023a</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR
/EcucDefs/Com/ComGwMapping/ComGwDestination/ComGwSignal</
DEFINITION-REF>
<!--...-->
</ECUC-CONTAINER-VALUE>
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
</CONTAINERS>
</ECUC-MODULE-CONFIGURATION-VALUES>
In the ECU Configuration Parameter Definition exist individual elements for the differ-
ent types of parameters (e.g. Boolean, Integer, String, see section 2.3.5). On the
ECU Configuration Value description side this distinction is no longer needed, because
every parameter value element references the corresponding definition element and
therefore has its type bound.
However there is a different distinction for the parameter values based on the variant
handling implementation (see section 2.3.4.1) and the documentation support (see
section 2.3.5.9).
[TPS_ECUC_03006] EcucParameterValue is the base class for all parameter
values dAll metamodel classes specifying parameter values are derived from Ecuc-
ParameterValue.c()
ECU Configuration Parameter Definition ECU Configuration Parameter Values
EcucIndexableValue
«atpVariation,atpSplitable»
+subContainer 0..*
EcucCommonAttributes Identifiable
EcucParameterValue
EcucParameterDef +definition +parameterValue EcucContainerValue
+ isAutoValue: Boolean [0..1]
+ symbolicNameValue: Boolean [0..1] 0..1 0..*
«atpVariation,atpSplitable»
+ withAuto: Boolean [0..1]
+value 0..1
«atpMixed»
DocumentationBlock
Value specify an attribute value that stores the configuration value in XML-based
description.c()
[TPS_ECUC_03038] Assignment of an EcucParameterValue to the correspond-
ing EcucParameterDef dThe reference definition assigns the EcucParame-
terValue22 to the according EcucParameterDef it is providing the value for.c()
[TPS_ECUC_03009] A defaultValue that is specified in the ECU Configuration
Parameter Definition may be used as the initial value in the ECU Configuration
Value description dIf a defaultValue is specified in the ECU Configuration Param-
eter Definition that given value can be used as the initial value of the according
EcucParameterValue for the ECU Configuration Value description as explained by
[TPS_ECUC_01019].c()
[TPS_ECUC_08054] Semantic of an optional parameter that is not present in the
ECU Configuration Value description dThe semantic of an optional parameter that
is not present in the ECU Configuration Value description is that there is no parameter
value available, even if the ECU Parameter Definition provides a default value.c()
[TPS_ECUC_03034] Each parameter in an ECU Configuration Value description
shall have a value dIn a well-formed and completed ECU Configuration Value de-
scription each provided parameter needs to have a value specified even if it is just
copied from the defaultValue of the ECU Configuration Definition.c()
For further rules how a value can be provided if no defaultValue is specified in the
ECU Configuration Definition see section 4.2.
[TPS_ECUC_03010] Parameters that are declared as optional in the ECU Con-
figuration Definition may be left out in the ECU Configuration Value description
dIf an ECU Configuration Parameter has specified a lowerMultiplicity < 1 an
ECU Configuration Value may be left out in the ECU Configuration Value description
because of being treated as optional.c(RS_ECUC_00055)
Class EcucParameterValue (abstract)
Package M2::AUTOSARTemplates::ECUCDescriptionTemplate
Note Common class to all types of configuration values.
Base ARObject, EcucIndexableValue
Subclasses EcucAddInfoParamValue, EcucNumericalParamValue, EcucTextualParamValue
Aggregated by EcucContainerValue.parameterValue
Attribute Type Mult. Kind Note
annotation Annotation * aggr Possibility to provide additional notes while defining the
ECU Configuration Parameter Values. These are not
intended as documentation but are mere design notes.
Tags:xml.sequenceOffset=10
5
22
and all its sub-classes
4
Class EcucParameterValue (abstract)
definition EcucParameterDef 0..1 ref Reference to the definition of this EcucParameterValue
subclasses in the ECU Configuration Parameter
Definition.
Tags:xml.sequenceOffset=-10
isAutoValue Boolean 0..1 attr If withAuto is set to "true" for this parameter definition the
isAutoValue can be set to "true". If isAutoValue is set to
"true" the actual value will not be considered during ECU
Configuration but will be (re-)calculated by the code
generator and stored in the value attribute afterwards.
These implicit updated values might require a
re-generation of other modules which reference these
values.
If isAutoValue is not present the default is "false".
Tags:xml.sequenceOffset=20
For the storage of values of parameters which do not have a numerical representation
the element EcucTextualParamValue shall be used.
[TPS_ECUC_02126] Values for parameter types stored in the element EcucTex-
tualParamValue d Values for parameter types
• EcucEnumerationParamDef
• EcucAbstractStringParamDef and its sub-classes
shall be stored in the element EcucTextualParamValue.c()
The actual value is stored in the element value as VerbatimString and shall con-
form to the definition of the ECU Configuration Parameter Definition which is referenced
in the definition element. The restrictions on the textual representation specified
in section 2.3.5.4, section 2.3.5.5, section 2.3.5.6 and section 2.3.5.7 are applicable to
the corresponding value specifications.
In case the value of the EcucTextualParamValue shall be affected by the variant
handling, the existence of the individual alternative EcucTextualParamValue ele-
ments shall be made variant. The value element itself can not be affected by variant
handling.
Class EcucTextualParamValue
Package M2::AUTOSARTemplates::ECUCDescriptionTemplate
Note Holding a value which is not subject to variation.
Base ARObject, EcucIndexableValue, EcucParameterValue
Aggregated by EcucContainerValue.parameterValue
Attribute Type Mult. Kind Note
value VerbatimString 0..1 attr Value of the parameter, not subject to variant handling.
Example 2.34
<ECUC-TEXTUAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-LINKER-SYMBOL-DEF">/AUTOSAR/EcucDefs/Rte/
Resource/Pim/RtePimInitializationSymbol</DEFINITION-REF>
<VALUE>MyPimInitValuesLightMaster</VALUE>
</ECUC-TEXTUAL-PARAM-VALUE>
Example 2.35
<ECUC-TEXTUAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-FUNCTION-NAME-DEF">/AUTOSAR/EcucDefs/Eep/
EepInitConfiguration/EepJobEndNotification</DEFINITION-REF>
<VALUE>Eep_VendorXY_JobEndNotification</VALUE>
</ECUC-TEXTUAL-PARAM-VALUE>
Example 2.36
<ECUC-TEXTUAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">/AUTOSAR/EcucDefs/Rte/
RteGeneration/RteGenerationMode</DEFINITION-REF>
<VALUE>CompatibilityMode</VALUE>
</ECUC-TEXTUAL-PARAM-VALUE>
Example 2.37
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF">/AUTOSAR/EcucDefs/Rte/
RteGeneration/RTE_DEV_ERROR_DETECT</DEFINITION-REF>
<VALUE>1</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
Example 2.38
<ECUC-TEXTUAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-FUNCTION-NAME-DEF">/AUTOSAR/EcucDefs/Eep/
EepInitConfiguration/EepJobEndNotification</DEFINITION-REF>
<VALUE>Eep_VendorXY_JobEndNotification</VALUE>
</ECUC-TEXTUAL-PARAM-VALUE>
Example 2.39
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-FLOAT-PARAM-DEF">/AUTOSAR/EcucDefs/Rte/
RunnableEntityMapping/SchedulingPeriod</DEFINITION-REF>
<VALUE>74.8</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
The only type-specific distinction for the values is the ECU Configuration Parameter
Type EcucAddInfoParamDef (see section 2.3.5.9).
[TPS_ECUC_02123] The value of the parameter type EcucAddInfoParamDef d
The value of the parameter type EcucAddInfoParamDef shall be provided in the
element EcucAddInfoParamValue. This allows the usage of formated text (see
AUTOSAR Generic Structure Template [6] for further information).c()
Class EcucAddInfoParamValue
Package M2::AUTOSARTemplates::ECUCDescriptionTemplate
Note This parameter corresponds to EcucAddInfoParamDef.
Base ARObject, EcucIndexableValue, EcucParameterValue
Aggregated by EcucContainerValue.parameterValue
Attribute Type Mult. Kind Note
value DocumentationBlock 0..1 aggr Holds the content of the formated text.
Example 2.40
<ECUC-ADD-INFO-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-ADD-INFO-PARAM-DEF">/AUTOSAR/EcucDefs/Dcm/Dtc<
/DEFINITION-REF>
<VALUE>
<P>
<L-1 L="EN">Description of the Dtc 0815.</L-1>
</P>
</VALUE>
</ECUC-ADD-INFO-PARAM-VALUE>
Figure 2.29 depicts the ECU Configuration Metamodel to reference other description
elements.
ECU Configuration Parameter Definition ECU Configuration Parameter Values
MultilanguageReferrable
Identifiable
EcucCommonAttributes
+ category: CategoryString [0..1]
EcucAbstractReferenceDef + uuid: String [0..1]
+definition
+ withAuto: Boolean [0..1]
0..1
AtpFeature
+subContainer 0..*
EcucIndexableValue
EcucContainerValue «atpVariation,atpSplitable»
EcucAbstractInternalReferenceDef +value 0..1
EcucUriReferenceDef
EcucInstanceReferenceValue
EcucReferenceDef
EcucReferenceValue
EcucInstanceReferenceDef
EcucChoiceReferenceDef
+ destinationContext: String [0..1]
+ destinationType: String [0..1]
EcucForeignReferenceDef
23
and all its descendants
Example 2.41
<ECUC-REFERENCE-VALUE>
<DEFINITION-REF DEST="ECUC-REFERENCE-DEF">/AUTOSAR/EcucDefs/Os/
OsApplication/OsAppScheduleTableRef</DEFINITION-REF>
<VALUE-REF DEST="ECUC-CONTAINER-VALUE">/ECUC/myOs/myOsScheduleTable1</
VALUE-REF>
</ECUC-REFERENCE-VALUE>
Example 2.42
<ECUC-REFERENCE-VALUE>
<DEFINITION-REF DEST="ECUC-CHOICE-REFERENCE-DEF">/AUTOSAR/EcucDefs/Port/
PortPin/PortPinMode</DEFINITION-REF>
<VALUE-REF DEST="ECUC-CONTAINER-VALUE">/ECUC/mySpi/aSpiExternalDevice1</
VALUE-REF>
</ECUC-REFERENCE-VALUE>
Example 2.43
<ECUC-REFERENCE-VALUE>
<DEFINITION-REF DEST="ECUC-FOREIGN-REFERENCE-DEF">/AUTOSAR/EcucDefs/Rte/
Communication/FrameMapping/SystemFrame</DEFINITION-REF>
<VALUE-REF DEST="FRAME">/SystemDescription/SystemFrameNo42</VALUE-REF>
</ECUC-REFERENCE-VALUE>
Due to the formalization of prototypes in the AUTOSAR Templates (see [6]) the refer-
ence to the instance of a prototype needs to declare the complete context in which the
instance is residing.
[TPS_ECUC_03033] EcucInstanceReferenceValue provides the mechanism
to reference an instance of a prototype d The metamodel class EcucIn-
stanceReferenceValue provides the mechanism to reference to an actual in-
stance of a prototype. This is achieved by specifying a relation with the stereotype
<<instanceRef>>.c(RS_ECUC_00072)
In figure 2.30 the detailed modeling of the EcucInstanceReferenceValue
<<instanceRef>> is specified.
EcucAbstractReferenceValue
EcucInstanceReferenceValue
+value 0..1
AtpInstanceRef
AnyInstanceRef
Class EcucInstanceReferenceValue
Package M2::AUTOSARTemplates::ECUCDescriptionTemplate
Note InstanceReference representation in the ECU Configuration.
Base ARObject, EcucAbstractReferenceValue, EcucIndexableValue
Aggregated by EcucContainerValue.referenceValue
Attribute Type Mult. Kind Note
value AtpFeature 0..1 iref InstanceReference representation in the ECU
Configuration.
InstanceRef implemented by:AnyInstanceRef
Example 2.44
<ECUC-INSTANCE-REFERENCE-VALUE>
<DEFINITION-REF DEST="ECUC-INSTANCE-REFERENCE-DEF">/AUTOSAR/EcucDefs/Rte/
DataMappings/DataSRMapping/DataElementPrototypeRef</DEFINITION-REF>
<VALUE-IREF>
<CONTEXT-ELEMENT-REF DEST="SW-COMPONENT-PROTOTYPE">/DoorFR</CONTEXT-
ELEMENT-REF>
<CONTEXT-ELEMENT-REF DEST="R-PORT-PROTOTYPE">/DoorAntennaReceiver</
CONTEXT-ELEMENT-REF>
<TARGET-REF DEST="VARIABLE-DATA-PROTOTYPE">/AntennaStatus</TARGET-REF>
</VALUE-IREF>
</ECUC-INSTANCE-REFERENCE-VALUE>
Example 2.45
<ECUC-MODULE-CONFIGURATION-VALUES>
<SHORT-NAME>myCorTst</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EcucDefs/CorTst</
DEFINITION-REF>
<CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>Dem_PLL_lock_error</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/
EcucDefs/CorTst/CorTstDemEventParameterRefs</DEFINITION-REF>
<REFERENCE-VALUES>
<ECUC-REFERENCE-VALUE>
24
The one that is referenced to
<DEFINITION-REF DEST="ECUC-REFERENCE-DEF">/AUTOSAR/EcucDefs/
CorTst/CorTstDemEventParameterRefs/CORTST_E_CORE_FAILURE</
DEFINITION-REF>
<VALUE-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/ECUC/myDem/
CORTST_E_CORE_FAILURE_1</VALUE-REF>
</ECUC-REFERENCE-VALUE>
</REFERENCE-VALUES>
</ECUC-CONTAINER-VALUE>
</CONTAINERS>
</ECUC-MODULE-CONFIGURATION-VALUES>
...
#define DemConf_DemEventParameter_CORTST_E_CORE_FAILURE_1 17
...
Especially in case of production error reporting this pattern is used extensively: The
integrator has the freedom to call the DemEventParameter container name arbitrarily.
In general it is reasonable to name the DemEventParameter like the actual production
error (e.g. FLS_E_ERASE_FAILED), however there are use-cases where the same
production error shall be reported for several instances / channels individually, thus it
is required to distinguish between these different production error occurrences (e.g.
FRIF_E_NIT_CH_A_CLUSTER_1 where FRIF_E_NIT_CH_A is the production error
name and _CLUSTER_1 encodes one specific FlexRay cluster). This needs to be kept
in mind when accessing the production error symbolic name from the reporting module,
e.g. FrIf shall call:
Dem_SetEventStatus(DemConf_DemEventParameter_FRIF_E_NIT_CH_A_CLUSTER_1,
DEM_EVENT_STATUS_PASSED);
In figure 2.31 another example of a symbolic name value configuration setup is shown.
The example 2.46 shows a possible value description for this definition.
ComMPncComSignal: +reference ComMPncComSignalRef:
EcucParamConfContainerDef EcucReferenceDef
+destination
Example 2.46
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myComConfig</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Com/ComConfig</DEFINITION-REF>
<SUB-CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>PNC_02</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Com/ComConfig/ComSignal</DEFINITION-REF>
<PARAMETER-VALUES>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/AUTOSAR/
EcucDefs/Com/ComConfig/ComSignal/ComHandleId</DEFINITION-
REF>
<VALUE>231</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
</PARAMETER-VALUES>
</ECUC-CONTAINER-VALUE>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>Debuging_Sig5</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/
EcucDefs/Com/ComConfig/ComSignal</DEFINITION-REF>
<PARAMETER-VALUES>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/AUTOSAR/
EcucDefs/Com/ComConfig/ComSignal/ComHandleId</DEFINITION-
REF>
<VALUE>245</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
</PARAMETER-VALUES>
</ECUC-CONTAINER-VALUE>
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
This leads to the generation of the following definitions in the Com header file:
#define ComConf_ComSignal_PNC_02 231
Such that the other BSW Modules - which include the Com header file - can call the
Com module using these symbols:
ComM: Com_SendSignal(ComConf_ComSignal_PNC_02, value)
Dgb: Com_SendSignal(ComConf_ComSignal_Debuging_Sig5, value)
+container
IcuConfigSet: IcuConfigSet:
IcuConfigSet: EcucParamConfContainerDef EcucContainerValue EcucContainerValue
+subContainer
IcuChannel0: IcuChannel0:
EcucContainerValue EcucContainerValue
IcuChannel:
EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 1
IcuChannelId:
EcucNumericalParamValue
IcuChannelId: IcuChannelId:
EcucNumericalParamValue EcucNumericalParamValue value = 0
+parameter
value = 0 value = 0
IcuChannelId:
IcuChannelId:
EcucIntegerParamDef
EcucNumericalParamValue
min = 0
value = 1
max = 65535
symbolicNameValue = true :VariationPoint
:VariationPoint :VariationPoint
:VariationPoint
:PostBuildVariantCondition :PostBuildVariantCondition
value = 0 value = 1
:PostBuildVariantCriterion :PostBuildVariantCriterion
Figure 2.32: SymbolicNameValues and the generation of #defines: valid and invalid con-
figurations due to the existence of post-build variations
The valid example in figure 2.32 does lead to the following definition:
#define IcuConf_IcuChannel_IcuChannel0 0
The invalid example in figure 2.32 would possibly lead to the following definitions:
#define IcuConf_IcuChannel_IcuChannel0 0
#define IcuConf_IcuChannel_IcuChannel0 1
where a different value would be assigned to the same symbol. This is an invalid
configuration.
Example 2.33 and 2.34 shows a valid and an invalid configuration due to the hierarchi-
cal structure of the EcucParameterValues.
CanNmChannelConfig: EcucParamConfContainerDef
Channel_01: EcucContainerValue Channel_02: EcucContainerValue
upperMultiplicity = *
lowerMultiplicity = 1
+subContainer
lowerMultiplicity = 1
upperMultiplicity = *
+subContainer
+parameter
CanNmRxPduId: CanNmRxPduId:
CanNmRxPduId: EcucNumericalParamValue
EcucIntegerParamDef EcucNumericalParamValue
value = 1 value = 3
min = 0
max = 65535
symbolicNameValue = true
+parameter
+subContainer
Foo: Foo:
CanNmRxPdu:
EcucContainerValue EcucContainerValue
EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = *
+subContainer
lowerMultiplicity = 0
upperMultiplicity = 1
+parameter
CanNmRxPduId: CanNmRxPduId:
CanNmRxPduId: EcucNumericalParamValue EcucNumericalParamValue
EcucIntegerParamDef
value = 1 value = 3
min = 0
max = 65535
symbolicNameValue = true
+parameter
The valid example in figure 2.33 does lead to the following definition:
#define CanNmConf_CanNmRxPdu_Foo 1
#define CanNmConf_CanNmTxPdu_Bar 2
#define CanNmConf_CanNmRxPdu_Foo2 3
#define CanNmConf_CanNmTxPdu_Bar2 4
The invalid example in figure 2.34 would possibly lead to the following definitions:
#define CanNmConf_CanNmRxPdu_Foo 1
#define CanNmConf_CanNmTxPdu_Bar 2
#define CanNmConf_CanNmRxPdu_Foo 3
#define CanNmConf_CanNmTxPdu_Bar 4
where different values would be assigned to the same symbol. The value 1 would be
redefined to 3 and the value 2 would be redefined to 4. This is an invalid configuration.
CanDrv VendorY/CanDrv
CanDrv: MyCanVendorY
CanGeneral: Ygeneral
CanGeneral CanTrcvRef: /MyCanVendorY/Ytrcv
CavTrcvContainer: Ytrcv
CanGeneral
CanTrcvRef
CanTrcvRef
CanTrcvContainer
CanTrcvRef
CanTrcvContainer
DEST-REF
Refine
CanDrv: MyCanVendorY
CanDrv VendorY/CanDrv
CanGeneral: Ygeneral
CanGeneral
CanGeneral Refine
CanDrv: MyCanVendorZ
VendorZ/CanDrv CanGeneral: Zgeneral
CanGeneral
Example 2.47
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF">/AUTOSAR/EcucDefs/Com/
ComConfig/ComGwMapping/CheckConsistency</DEFINITION-REF>
<VALUE>1</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
2.4.7 Using Variant Handling to Cope with Several Binding Times in the ECU
Configuration Value Description
The goal of this feature is to provide modeling support to handle several binding times
of the ECU Configuration Value Description in one model. The idea is to
utilize Variant Handling approach to allow different values and/or different number
of instances of certain configuration parameters in different variation points bound at
post-build time (referred to as post-build variants). In order to achieve this, at least
one PostBuildVariantCriterion shall be declared in order to define a common
selecting element for different post-build variants. The variants are specified using
different PostBuildVariantCriterionValues. An example of one criterion with
two values is shown in 2.48:
Example 2.48
<POST-BUILD-VARIANT-CRITERION>
<SHORT-NAME>PostBuildConfigSet</SHORT-NAME>
</POST-BUILD-VARIANT-CRITERION>
<POST-BUILD-VARIANT-CRITERION-VALUE-SET>
<SHORT-NAME>PostBuildVariants</SHORT-NAME>
<POST-BUILD-VARIANT-CRITERION-VALUES>
<POST-BUILD-VARIANT-CRITERION-VALUE>
<VARIANT-CRITERION-REF DEST="POST-BUILD-VARIANT-CRITERION">/EcucDemo/
PostBuildConfigSet</VARIANT-CRITERION-REF>
<VALUE>1</VALUE>
</POST-BUILD-VARIANT-CRITERION-VALUE>
<POST-BUILD-VARIANT-CRITERION-VALUE>
<VARIANT-CRITERION-REF DEST="POST-BUILD-VARIANT-CRITERION">/EcucDemo/
PostBuildConfigSet</VARIANT-CRITERION-REF>
<VALUE>2</VALUE>
</POST-BUILD-VARIANT-CRITERION-VALUE>
</POST-BUILD-VARIANT-CRITERION-VALUES>
</POST-BUILD-VARIANT-CRITERION-VALUE-SET>
This section contains an example of how ECU configuration parameters with post-
BuildVariantValue and postBuildVariantMultiplicity attributes set to
true or false inside containers with postBuildVariantMultiplicity attribute
set to true / false can be configured using Variant Handling. As an example, a
part of the Adc module configuration parameters is taken (see Figure 2.37).
Adc: EcucModuleDef
+container AdcGeneral: +parameter
upperMultiplicity = 1 EcucParamConfContainerDef AdcDevErrorDetect:
lowerMultiplicity = 0 EcucBooleanParamDef
defaultValue = false
(from ADC)
AdcChannelId: EcucIntegerParamDef
AdcChannel: +parameter
EcucParamConfContainerDef min = 0
+container max = 1024
AdcChannelResolution: EcucIntegerParamDef
(from ADC) +parameter
upperMultiplicity = 1
lowerMultiplicity = 0
min = 1
+subContainer max = 63
(from ADC)
AdcHwUnit:
EcucParamConfContainerDef +subContainer
upperMultiplicity = * +parameter
AdcChannelLimitCheck: EcucBooleanParamDef
lowerMultiplicity = 1
lowerMultiplicity = 0
(from ADC) upperMultiplicity = 1
(from ADC)
(from ADC)
Example 2.49
<ECUC-MODULE-DEF UUID="ECUC:c03229fe-4dca-445e-a47c-1ae11e6c1832">
<SHORT-NAME>Adc</SHORT-NAME>
<LOWER-MULTIPLICITY>0</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<POST-BUILD-VARIANT-SUPPORT>true</POST-BUILD-VARIANT-SUPPORT>
<SUPPORTED-CONFIG-VARIANTS>
<SUPPORTED-CONFIG-VARIANT>VARIANT-POST-BUILD</SUPPORTED-CONFIG-VARIANT>
<SUPPORTED-CONFIG-VARIANT>VARIANT-PRE-COMPILE</SUPPORTED-CONFIG-VARIANT
>
</SUPPORTED-CONFIG-VARIANTS>
<CONTAINERS>
<!-- Container Definition: AdcConfigSet -->
<ECUC-PARAM-CONF-CONTAINER-DEF UUID="ECUC:fc6e0617-8c73-4b71-b09e-
dfb10b76e50d">
<SHORT-NAME>AdcConfigSet</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<SUB-CONTAINERS>
<!-- Container Definition: AdcHwUnit -->
<ECUC-PARAM-CONF-CONTAINER-DEF UUID="ECUC:c67e7c58-3daf-455b-a213
-95ae94b248d8">
<SHORT-NAME>AdcHwUnit</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY-INFINITE>true</UPPER-MULTIPLICITY-INFINITE>
<POST-BUILD-VARIANT-MULTIPLICITY>false</POST-BUILD-VARIANT-
MULTIPLICITY>
<PARAMETERS/>
<SUB-CONTAINERS>
<!-- Container Definition: AdcChannel -->
<ECUC-PARAM-CONF-CONTAINER-DEF UUID="ECUC:bfd7d43b-017d-4755-9
a41-2bf12e38403d">
<SHORT-NAME>AdcChannel</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY-INFINITE>true</UPPER-MULTIPLICITY-
INFINITE>
<POST-BUILD-VARIANT-MULTIPLICITY>true</POST-BUILD-VARIANT-
MULTIPLICITY>
<PARAMETERS>
<!-- PARAMETER DEFINITION: AdcChannelId -->
<ECUC-INTEGER-PARAM-DEF UUID="ECUC:482b876b-9787-4e46-875a
-559b7a1427f2">
<SHORT-NAME>AdcChannelId</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<ORIGIN>AUTOSAR_ECUC</ORIGIN>
<POST-BUILD-VARIANT-VALUE>true</POST-BUILD-VARIANT-VALUE>
<VALUE-CONFIG-CLASSES>
<ECUC-VALUE-CONFIGURATION-CLASS>
<CONFIG-CLASS>POST-BUILD</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-POST-BUILD</CONFIG-VARIANT>
</ECUC-VALUE-CONFIGURATION-CLASS>
<ECUC-VALUE-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-PRE-COMPILE</CONFIG-VARIANT>
</ECUC-VALUE-CONFIGURATION-CLASS>
</VALUE-CONFIG-CLASSES>
<SYMBOLIC-NAME-VALUE>false</SYMBOLIC-NAME-VALUE>
<MAX>1024</MAX>
<MIN>0</MIN>
</ECUC-INTEGER-PARAM-DEF>
<!-- PARAMETER DEFINITION: AdcChannelLimitCheck -->
<ECUC-BOOLEAN-PARAM-DEF UUID="ECUC:6c8938e0-f362-4cdc
-8711-6d4b429215b3">
<SHORT-NAME>AdcChannelLimitCheck</SHORT-NAME>
<DESC>
</ECUC-VALUE-CONFIGURATION-CLASS>
<ECUC-VALUE-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-PRE-COMPILE</CONFIG-VARIANT>
</ECUC-VALUE-CONFIGURATION-CLASS>
</VALUE-CONFIG-CLASSES>
<SYMBOLIC-NAME-VALUE>false</SYMBOLIC-NAME-VALUE>
<MAX>63</MAX>
<MIN>1</MIN>
</ECUC-INTEGER-PARAM-DEF>
</PARAMETERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</SUB-CONTAINERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</SUB-CONTAINERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
<!-- Container Definition: AdcGeneral -->
<ECUC-PARAM-CONF-CONTAINER-DEF UUID="ECUC:da0aaff6-3ed6-4a15-824e-
dc32f3a8bd93">
<SHORT-NAME>AdcGeneral</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<PARAMETERS>
<!-- PARAMETER DEFINITION: AdcDevErrorDetect -->
<ECUC-BOOLEAN-PARAM-DEF UUID="ECUC:db321b92-621a-4a62-8778-09
b8845d8f2c">
<SHORT-NAME>AdcDevErrorDetect</SHORT-NAME>
<LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
<UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
<ORIGIN>AUTOSAR_ECUC</ORIGIN>
<POST-BUILD-VARIANT-VALUE>false</POST-BUILD-VARIANT-VALUE>
<VALUE-CONFIG-CLASSES>
<ECUC-VALUE-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-POST-BUILD</CONFIG-VARIANT>
</ECUC-VALUE-CONFIGURATION-CLASS>
<ECUC-VALUE-CONFIGURATION-CLASS>
<CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
<CONFIG-VARIANT>VARIANT-PRE-COMPILE</CONFIG-VARIANT>
</ECUC-VALUE-CONFIGURATION-CLASS>
</VALUE-CONFIG-CLASSES>
<SYMBOLIC-NAME-VALUE>false</SYMBOLIC-NAME-VALUE>
</ECUC-BOOLEAN-PARAM-DEF>
</PARAMETERS>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
The parameters with fixed value in all post-build variants inside containers with fixed
number of instances are provided normally inside the container structure they are de-
fined in (see AdcDevErrorDetect parameter in Example 2.50).
Example 2.50
<ECUC-MODULE-CONFIGURATION-VALUES>
<SHORT-NAME>theAdc</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-MODULE-DEF">/EcucDemo/Adc</DEFINITION-REF>
<IMPLEMENTATION-CONFIG-VARIANT>VARIANT-POST-BUILD</IMPLEMENTATION-CONFIG-
VARIANT>
<CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myGeneralValue</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/EcucDemo/Adc/
AdcGeneral</DEFINITION-REF>
<PARAMETER-VALUES>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF">/EcucDemo/Adc/
AdcGeneral/AdcDevErrorDetect</DEFINITION-REF>
<VALUE>1</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
</PARAMETER-VALUES>
<SUB-CONTAINERS/>
</ECUC-CONTAINER-VALUE>
</CONTAINERS>
</ECUC-MODULE-CONFIGURATION-VALUES>
Similarly, the parameters with fixed value in all post-build variants inside containers
with possible different number of instances in different variants (i.e. postBuildVari-
antMultiplicity is set to true) also do not need to be duplicated in every variant.
Instead they should be defined only once which also guarantees that the value of these
parameters are the same in all variants (see AdcChannelLimitCheck parameter in
Example 2.51).
Example 2.51
<ECUC-MODULE-CONFIGURATION-VALUES>
<SHORT-NAME>theAdc</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-MODULE-DEF">/EcucDemo/Adc</DEFINITION-REF>
<CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myHwUnit</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/EcucDemo/Adc/
AdcConfigSet/AdcHwUnit</DEFINITION-REF>
<SUB-CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myChannel1</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/EcucDemo/
Adc/AdcConfigSet/AdcHwUnit/AdcChannel</DEFINITION-REF>
<PARAMETER-VALUES>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/EcucDemo/Adc/
AdcConfigSet/AdcHwUnit/AdcChannel/AdcChannelLimitCheck</
DEFINITION-REF>
<VALUE>0</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
</PARAMETER-VALUES>
</ECUC-CONTAINER-VALUE>
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
</CONTAINERS>
</ECUC-MODULE-CONFIGURATION-VALUES>
However for parameters which may have different value in different post-build variants
(i.e. postBuildVariantValue is set to true), the PostBuildVariantCrite-
rion shall be referenced in order to define the common selector. A specific value for
the selector is defined for each post-build variant to specify to which variant this param-
eter value is associated to (see AdcChannelResolution parameter in two post-build
variants, left and right, in Example 2.52)..
Example 2.52
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myHwUnit</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/EcucDemo/Adc/
AdcConfigSet/AdcHwUnit</DEFINITION-REF>
<SUB-CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myChannel1</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/EcucDemo/
Adc/AdcConfigSet/AdcHwUnit/AdcChannel</DEFINITION-REF>
<PARAMETER-VALUES>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">/EcucDemo/
Adc/AdcConfigSet/AdcHwUnit/AdcChannel/AdcChannelResolution
</DEFINITION-REF>
<VARIATION-POINT>
<POST-BUILD-VARIANT-CONDITIONS>
<POST-BUILD-VARIANT-CONDITION>
<MATCHING-CRITERION-REF DEST="POST-BUILD-VARIANT-
CRITERION">/EcucDemo/PostBuildConfigSet</MATCHING-
CRITERION-REF>
<VALUE>1</VALUE>
<!-- PostBuildFrontLeft -->
</POST-BUILD-VARIANT-CONDITION>
</POST-BUILD-VARIANT-CONDITIONS>
</VARIATION-POINT>
<VALUE>10</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">/EcucDemo/
Adc/AdcConfigSet/AdcHwUnit/AdcChannel/AdcChannelResolution
</DEFINITION-REF>
<VARIATION-POINT>
<POST-BUILD-VARIANT-CONDITIONS>
<POST-BUILD-VARIANT-CONDITION>
<MATCHING-CRITERION-REF DEST="POST-BUILD-VARIANT-
CRITERION">/EcucDemo/PostBuildConfigSet</MATCHING-
CRITERION-REF>
<VALUE>2</VALUE>
<!-- PostBuildFrontRight -->
</POST-BUILD-VARIANT-CONDITION>
</POST-BUILD-VARIANT-CONDITIONS>
</VARIATION-POINT>
<VALUE>40</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
</PARAMETER-VALUES>
</ECUC-CONTAINER-VALUE>
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
If one container shall be used in all post-build variants (e.g. because there are pre-
compile configurations pointing to this container), it shall not define a variation point
and thus indicate its "pre-compile" nature. In case a container exists only in some
post-build variants, it shall define a variation point. Also all included elements shall
then define the respective variation point (see AdcChannel container in Example
2.53).
Example 2.53
<ECUC-MODULE-CONFIGURATION-VALUES>
<SHORT-NAME>theAdc</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-MODULE-DEF">/EcucDemo/Adc</DEFINITION-REF>
<CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>myChannel5</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/EcucDemo/Adc/
AdcConfigSet/AdcHwUnit/AdcChannel</DEFINITION-REF>
<PARAMETER-VALUES>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/EcucDemo/Adc/
AdcConfigSet/AdcHwUnit/AdcChannel/AdcChannelLimitCheck</
DEFINITION-REF>
<VALUE>1</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/EcucDemo/Adc/
AdcConfigSet/AdcHwUnit/AdcChannel/AdcChannelId</DEFINITION-REF
>
<VALUE>5</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">/EcucDemo/Adc/
AdcConfigSet/AdcHwUnit/AdcChannel/AdcChannelResolution</
DEFINITION-REF>
<VARIATION-POINT>
<POST-BUILD-VARIANT-CONDITIONS>
<POST-BUILD-VARIANT-CONDITION>
<MATCHING-CRITERION-REF DEST="POST-BUILD-VARIANT-CRITERION"
>/EcucDemo/PostBuildConfigSet</MATCHING-CRITERION-REF>
<VALUE>2</VALUE>
<!-- PostBuildFrontRight -->
</POST-BUILD-VARIANT-CONDITION>
</POST-BUILD-VARIANT-CONDITIONS>
</VARIATION-POINT>
<VALUE>30</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
</PARAMETER-VALUES>
<VARIATION-POINT>
<POST-BUILD-VARIANT-CONDITIONS>
<POST-BUILD-VARIANT-CONDITION>
<MATCHING-CRITERION-REF DEST="POST-BUILD-VARIANT-CRITERION">/
EcucDemo/PostBuildConfigSet</MATCHING-CRITERION-REF>
<VALUE>2</VALUE>
<!-- PostBuildFrontRight -->
</POST-BUILD-VARIANT-CONDITION>
</POST-BUILD-VARIANT-CONDITIONS>
</VARIATION-POINT>
</ECUC-CONTAINER-VALUE>
</CONTAINERS>
</ECUC-MODULE-CONFIGURATION-VALUES>
1
The generation from the UML model is only one way to create the ECU Configuration Parameter
Definition XML file. ECUC Parameters can be defined by any other method as long as an AUTOSAR
conforming ECUC Parameter Definition XML file is created.
The configuration parameters are structured into containers which can hold parame-
ters, references and other containers. Beside the graphical visualization in UML dia-
grams, tables are used to specify the structure of the parameters.
In the following table one container is specified which holds two parameters and also
two additional containers as an example.
SWS Item [ECUC_MA_00001]
Container Name ContainerName
Parent Container aggregatingContainerName
Description Container description
Post-Build Variant Multiplicity true
Multiplicity Configuration Class Pre-compile time X VARIANT-PRE-COMPILE
Link time X VARIANT-LINK-TIME,
VARIANT-POST-BUILD
Post-build time –
Configuration Parameters
4
Description Parameter description
Multiplicity 0..1
Type EcucIntegerParamDef
Range 0 .. 64
Default value
Post-Build Variant Multiplicity true
Post-Build Variant Value true
Multiplicity Configuration Class Pre-compile time X VARIANT-PRE-COMPILE
Link time X VARIANT-LINK-TIME
Post-build time X VARIANT-POST-BUILD
Value Configuration Class Pre-compile time X VARIANT-PRE-COMPILE
Link time X VARIANT-LINK-TIME
Post-build time X VARIANT-POST-BUILD
Scope / Dependency scope: local
Included Containers
Container Name Multiplicity Scope / Dependency
Container1 0..1 Optional sub-container
Container2 0..* Optional sub-container
For a detailed description of the elements in the tables please refer to chapter 2.
The Application SW-Components are located at the top and can gain access to the
rest of the ECU and also to other ECUs only through the RTE.
AUTOSARParameterDefinition: EcucDefinitionCollection
+ BswM + EA + Arti
+ ComM + EEPROM + ArtiGeneric
+ EcuM + FEE + ArtiHardware
+ Flash + ArtiOs
+ Mem + ArtiRte
+ MemAcc + ArtiValues
+ MemoryInterface
+ Nvm
+ BndM
The RTE provides the encapsulation of communication and basic services to the Ap-
plication SW-Components, so it is possible to map the Application SW-Components
between different ECUs.
The Basic Software Modules are located below the RTE. The Basic Software itself is
divided into the subgroups: System Services, Memory, Communication and IO HW-
Abstraction. The Complex Drivers are also located below the RTE.
Among other, the Operating System (OS), the Watchdog manager and the Diagnostic
services are located in the System Services subgroup.
The Memory subgroup contains modules to provide access to the non-volatile memo-
ries, namely Flash and EEPROM.
In the Communication subgroup the whole AUTOSAR communication stack (COM-
Stack) is specified including the COM, Network Management and the communication
drivers.
The top-level structure of the AUTOSARParameterDefinition is shown in figure
3.2.
Included Modules
Module Name Multiplicity Scope / Dependency
Adc 0..1 Configuration of the Adc (Analog Digital Conversion) module.
Arti 0..1 The Arti Module serves as a superordinate container collecting
all information and parameters concerning ARTI.
BndM 0..1 Configuration of the BulkNvDataManager module.
BswM 0..1 Configuration of the BswM (Basic SW Mode Manager) module.
CV2x 0..* Configuration of the CV2x module (Cellular V2X Driver).
Can 0..* This container holds the configuration of a single CAN Driver.
CanIf 0..1 This container includes all necessary configuration
sub-containers according the CAN Interface configuration
structure.
CanNm 0..1 Configuration Parameters for the Can Nm module.
CanSM 0..1 Configuration of the CanSM module
CanTSyn 0..1 Configuration of the Synchronized Time-base Manager (StbM)
module with respect to global time handling on CAN.
CanTp 0..1 Configuration of the CanTp (CAN Transport Protocol) module.
CanTrcv 0..* Configuration of the CanTrcv (CAN Transceiver driver) module.
Cdd 0..* The CDD module describes the minimal requirements that are
necessary for the configuration of a CDD with respect to the
surrounding standardized BSW modules.
CnV2xM 0..* Configuration of the CnV2xM module.
CnV2xMsg 0..1 Configuration of the CnV2xMsg module.
CnV2xNet 0..1 Configuration of the CnV2xMsg module.
CnV2xSec 0..* Configuration of the CnV2xM module.
Com 0..1 Configuration of the AUTOSAR COM module.
ComM 0..1 Configuration of the ComM (Communications Manager) module.
CorTst 0..1 Configuration of the CorTst module.
Crc 0..1 Configuration of the Crc (Crc routines) module.
CryIf 0..1 Configuration of the Crypto Interface.
Crypto 0..* Configuration of the Crypto (CryptoDriver) module
Csm 0..1 Configuration of the Csm (CryptoServiceManager) module.
Dcm 0..1 Configuration of the Dcm (Diagnostic Communications Manager)
module.
5
4
Included Modules
Module Name Multiplicity Scope / Dependency
Dds 0..1 Configuration of the Dds module.
Dem 0..1 Configuration of the Dem (Diagnostic Event Manager) module.
Det 0..1 Det configuration includes the functions to be called at
notification. On one side the application functions are specified
and in general it can be decided whether Dlt shall be called at
each call of Det.
Dio 0..1 Configuration of the Dio (Digital IO) module.
Dlt 0..1 –
DoIP 0..1 Configuration of the DoIP (Diagnostic over IP) module.
Ea 0..1 Configuration of the Ea (EEPROM Abstraction) module. The
module shall abstract from the device specific addressing
scheme and segmentation and provide the upper layers with a
virtual addressing scheme and segmentation as well as a
’virtually’ unlimited number of erase cycles.
EcuC 0..1 Virtual module to collect ECU Configuration specific / global
configuration information.
EcuM 0..1 Configuration of the EcuM (ECU State Manager) module.
Eep 0..* Configuration of the Eep (internal or external EEPROM driver)
module. Its multiplicity describes the number of EEPROM drivers
present, so there will be one container for each EEPROM driver
in the ECUC template. When no EEPROM driver is present then
the multiplicity is 0.
Eth 0..* Configuration of the Eth (Ethernet Driver) module.
EthIf 0..1 Configuration of the EthIf (Ethernet Interface) module.
EthSM 0..1 Configuration of the Ethernet State Manager
EthSwt 0..* Configuration of the EthSwt (Ethernet Switch Driver) module.
EthTSyn 0..1 Configuration of the Synchronized Time-base Manager (StbM)
module with respect to global time handling on Ethernet.
EthTrcv 0..* Configuration of Ethernet Transceiver Driver module
Fee 0..1 Configuration of the Fee (Flash EEPROM Emulation) module.
FiM 0..1 Configuration of the FiM (Function Inhibition Manager) module.
Fls 0..* Configuration of the Fls (internal or external flash driver) module.
Its multiplicity describes the number of flash drivers present, so
there will be one container for each flash driver in the ECUC
template. When no flash driver is present then the multiplicity is
0.
FlsTst 0..1 –
Fr 0..* Configuration of the Fr (FlexRay driver) module.
FrArTp 0..1 Configuration of the FrArTp (FlexRay Transport Protocol)
module.
FrIf 0..1 Configuration of the FrIf (FlexRay Interface) module.
FrNm 0..1 The Flexray Nm module
FrSM 0..1 Configuration of the FlexRay State Manager
FrTSyn 0..1 This represents the specific configuration variant for the TSyn on
Flexray.
FrTp 0..1 Configuration of the FlexRay Transport Protocol module
according to ISO 10681-2.
FrTrcv 0..* Configuration of the FrTrcv (FlexRay Transceiver driver) module.
Gpt 0..1 Configuration of the Gpt (General Purpose Timer) module.
HTTMS 0..1 Configuration of the Hardware Test Management start up and
shutdown (HTMSS) module.
5
4
Included Modules
Module Name Multiplicity Scope / Dependency
IKE 0..1 Description for the Internet Key Exchange.
Icu 0..1 Configuration of the Icu (Input Capture Unit) module.
IdsM 0..1 –
IpduM 0..1 Configuration of the IpduM (Ipdu Multiplexer) module.
J1939Dcm 0..1 The SAE J1939 Dcm module
J1939Nm 0..1 Configuration of the J1939 Network Management module.
J1939Rm 0..1 Configuration of the J1939 Request Manager.
J1939Tp 0..1 Configuration of the J1939Tp (J1939 Transport Protocol) module.
KeyM 0..1 Configuration of the Mcu (Microcontroller Unit) module.
LdCom 0..1 Configuration of the AUTOSAR LdCom module.
Lin 0..* Configuration of the Lin (LIN driver) module.
LinIf 0..1 Configuration of the LinIf (LIN Interface) module.
LinSM 0..1 Configuration of the Lin State Manager module.
LinTp 0..1 Configuration of the LIN Transport Protocol.
LinTrcv 0..* Configuration of LIN Transceiver Driver module
Mcu 0..1 Configuration of the Mcu (Microcontroller Unit) module.
Mem 0..* Configuration of the Mem driver (internal or external memory
driver) module.
Its multiplicity describes the actual number of Mem drivers.
There will be one container for each Mem driver.
MemAcc 0..1 The MemAcc (Memory Access module) coordinates the memory
access by multiple users in order to avoid conflicts with this
shared memory resource.
The module abstracts from the memory device specific
addressing scheme and provides a logical addressing scheme to
the upper layer.
MemIf 0..1 Configuration of the MemIf (Memory Abstraction Interface)
module.
MemMap 0..1 Configuration of the Memory Mapping module.
Mirror 0..1 Configuration of the Bus Mirroring module.
Mka 1 Configuration of the MACsec Key Agreement module.
Nm 0..1 The Generic Network Management Interface module
NvM 0..1 Configuration of the NvM (NvRam Manager) module.
Ocu 0..1 Configuration of Ocu (Output Compare Unit) module.
Os 0..1 Configuration of the Os (Operating System) module.
PduR 0..1 Configuration of the PduR (PDU Router) module.
Port 0..1 Configuration of the Port module.
Pwm 0..* Configuration of Pwm (Pulse Width Modulation) module.
RamTst 0..1 Configuration of the RamTst module.
Rte 0..1 Configuration of the Rte (Runtime Environment) module.
Sd 0..1 Configuration of the Service Discovery module.
SecOC 0..1 Configuration of the SecOC (SecureOnboardCommunication)
module.
SoAd 0..1 Configuration of the SoAd (Socket Adaptor) module.
SomeIpTp 0..1 Configuration of the SomeIpTp module.
Spi 0..1 Configuration of the Spi (Serial Peripheral Interface) module.
5
4
Included Modules
Module Name Multiplicity Scope / Dependency
StbM 0..1 Configuration of the Synchronized Time-base Manager (StbM)
module.
SwCluC 0..1 Module to collect Software Cluster Connection specific
configuration information.
TcpIp 0..1 Configuration of the TcpIp (TCP/IP stack) module.
Tm 0..1 Configuration of the Time Service module.
UdpNm 0..1 –
V2xBtp 0..1 Configuration of the V2xBtp (Vehicle-2-X Basic Transport)
module.
V2xDM 1 Configuration of the V2XDM module
V2xFac 0..1 Configuration of the V2xFac module.
V2xGn 0..1 Configuration of the V2xGn (Vehicle-2-X Geo Networking)
module.
V2xM 0..1 Configuration of the V2xM (V2XManagement) module.
WEth 0..* Configuration of the WEth (Wireless Ethernet Driver) module.
WEthTrcv 0..* Configuration of Ethernet Transceiver Driver module
Wdg 0..* Configuration of the Wdg (Watchdog driver) module.
WdgIf 0..1 Configuration of the WdgIf (Watchdog Interface) module.
WdgM 0..1 Configuration of the WdgM (Watchdog Manager) module.
Xcp 0..1 Configuration of the XCP module
Xfrm 0..* –
Included Containers
Container Name Multiplicity Scope / Dependency
EcucConfigSet 0..1 This container contains the configuration parameters and sub
containers of the global PduCollection.
EcucHardware 0..1 Hardware definition of this Ecu.
EcucPartitionCollection 0..1 Collection of Partitions defined for this ECU.
EcucPostBuildVariants 0..1 Collection of toplevel PostBuildSelectable variants. The
PredefinedVariants linked inside this container will determine
how many PostBuildSelectableVariants exist. If this container
exist the name pattern for initialization of BSW modules will be
<Mip>_Config_<PredefinedVariant.shortName>. If this container
does not exist the name pattern for initialization of BSW modlues
will be <Mip>_Config.
EcucUnitGroupAssignment 0..1 Collection of UnitGroup references to support the generation of
ASAM MCD file.
EcucVariationResolver 0..1 Collection of PredefinedVariant elements containing definition of
values for SwSystemconst which shall be applied when resolving
the variability during ECU Configuration.
Included Containers
Container Name Multiplicity Scope / Dependency
EcucPduCollection 0..1 Collection of all Pdu objects flowing through the Com-Stack.
In order to allow the unique description and access to hardware resources the
EcucHardware has been introduced.
One section of the EcucHardware is concerned with the definition of computation
cores and the assignment of unique EcucCoreIds to these cores. Additionally it is
possible to refer to the Ecu Resource Template HwElement which represents the core
in hardware.
EcucHardware:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
EcucCoreId:
EcucCoreDefinition: EcucIntegerParamDef
+parameter
EcucParamConfContainerDef
min = 0
lowerMultiplicity = 0 max = 65535
upperMultiplicity = *
Ecu Resource Template
ARElement
EcucCoreHwRef: EcucForeignReferenceDef
HwDescriptionEntity
+reference
upperMultiplicity = 1 HwElement
lowerMultiplicity = 0
destinationType = HW-ELEMENT
Included Containers
Container Name Multiplicity Scope / Dependency
EcucCoreDefinition 0..* Definition of one Core on this Ecu.
4
Scope / Dependency
No Included Containers
EcucPartitionCollection: Identifiable
+container EcuC: EcucModuleDef
EcucParamConfContainerDef
EcuPartition
upperMultiplicity = 1
lowerMultiplicity = 0
lowerMultiplicity = 0 + execInUserMode: Boolean
upperMultiplicity = 1
+subContainer
PartitionCanBeRestarted:
+parameter
EcucBooleanParamDef
EcucDefaultBswPartition:
+parameter EcucBooleanParamDef
lowerMultiplicity = 0
upperMultiplicity = 1
ComMUserEcucPartitionRef: ComMUser:
+destination EcucReferenceDef +reference EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 upperMultiplicity = 65635
lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = 1 upperMultiplicity = 256
+reference
+reference
EcucPartitionSoftwareComponentInstanceRef:
EcucInstanceReferenceDef OsAppTaskRef: EcucReferenceDef
OsTask:
destinationType = SW-COMPONENT-PROTOTYPE EcucParamConfContainerDef +destination upperMultiplicity = *
upperMultiplicity = * lowerMultiplicity = 0
lowerMultiplicity = 0 upperMultiplicity = *
destinationContext = ROOT-SW-COMPOSITION-PROTOTYPE lowerMultiplicity = 0
AtpPrototype
SwComponentPrototype
Included Containers
Container Name Multiplicity Scope / Dependency
EcucPartition 0..* Definition of one Partition on this ECU. One Partition will be
implemented using one Os-Application.
4
Description Reference to the EcuPartition to define the link to the partition described in the System
description.
Tags: atp.Status=draft
Multiplicity 0..1
Type Foreign reference to ECU-PARTITION
Multiplicity Configuration Class Pre-compile time X All Variants
Link time –
Post-build time –
Value Configuration Class Pre-compile time X All Variants
Link time –
Post-build time –
Scope / Dependency scope: ECU
No Included Containers
The design principle is that after the creation of a partition the software (SWC) is
mapped to this partition. In the second step the BSW is configured and every member
of a partition (BSW) defines a reference to the EcucPartition element.
One example is the Os module: The Os-Application is used to implement one Partition,
therefore there shall be a reference from each Os-Application to one Partition which
specifies which partition this Os-Application is implementing.
Another example is the interaction of a SWC with the ComM: A SWC running in a
partition other than the BSW modules is requesting full communication at the ComM.
If now the partition which the SWC is running in will be stopped due to an partition
violation there is now an outstanding full communication request at the ComM which
will prohibit a network to be sent to sleep. With the provided configuration means it is
possible to implement counter measures for such use-cases.
The interaction between EcucPartition and EcucCoreDefinition is done via
the OsApplicationCoreRef of OsApplication.
EcucPartitionCollection: EcuC: EcucModuleDef
EcucParamConfContainerDef +container
upperMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1
+parameter PartitionCanBeRestarted:
EcucBooleanParamDef
EcucDefaultBswPartition:
+parameter EcucBooleanParamDef
lowerMultiplicity = 0
upperMultiplicity = 1
lowerMultiplicity = 0 upperMultiplicity = *
upperMultiplicity = 1 lowerMultiplicity = 0
+reference
SW Component Template
EcucPartitionSoftwareComponentInstanceRef:
EcucInstanceReferenceDef AtpPrototype
SwComponentPrototype
destinationType = SW-COMPONENT-PROTOTYPE
upperMultiplicity = *
lowerMultiplicity = 0
destinationContext = ROOT-SW-COMPOSITION-PROTOTYPE
+reference
For each post-build variant (post-build configuration set) there exists exactly one "top-
level" PredefinedVariant that is valid for all post-build capable BSW modules. This
means that every module which supports post-build variants (previously known as post-
build selectable configuration sets) will need to have configurations for every single
defined PredefinedVariant that is referenced by EcucPostBuildVariantRef.
EcuC: EcucModuleDef EcucPostBuildVariants:
EcucPostBuildVariantRef: EcucForeignReferenceDef
+container EcucParamConfContainerDef +reference
upperMultiplicity = 1
lowerMultiplicity = 0 destinationType = PREDEFINED-VARIANT
lowerMultiplicity = 0
upperMultiplicity = 1 lowerMultiplicity = 1
upperMultiplicity = *
+postBuildVariantCriterionValueSet 0..*
ARElement
PostBuildVariantCriterionValueSet
+postBuildVariantCriterionValue 0..*
PostBuildVariantCriterionValue
«atpVariation»
+ value: Integer
+variantCriterion 1
ARElement
AtpDefinition
PostBuildVariantCriterion
4
Description Reference to a PredefinedVariant that defines one toplevel postBuild configuration set
(covering all post-build capable BSW modules). PredefinedVariants that are referenced
here shall contain only PostBuildVariantCriterionValueSets.
Multiplicity 1..*
Type Foreign reference to PREDEFINED-VARIANT
Post-Build Variant Multiplicity false
Post-Build Variant Value false
Multiplicity Configuration Class Pre-compile time X All Variants
Link time –
Post-build time –
Value Configuration Class Pre-compile time X All Variants
Link time –
Post-build time –
Scope / Dependency
No Included Containers
In order to support the variant handling approach (see Generic Structure Template [6])
the already given values of system constants are specified in using the collection
SwSystemconstantValueSet. In the EcuC the applicable SwSystemconstant-
ValueSet elements are referenced indirectly via the PredefinedVariant collec-
tion.
EcuC: EcucModuleDef
upperMultiplicity = 1
lowerMultiplicity = 0
GenericStructureTemplate
+container
+includedVariant 0..*
EcucVariationResolver:
EcucParamConfContainerDef PredefinedVariantRef: EcucForeignReferenceDef ARElement
+reference
PredefinedVariant
lowerMultiplicity = 0 destinationType = PREDEFINED-VARIANT
upperMultiplicity = 1 lowerMultiplicity = 1
upperMultiplicity = *
+swSystemconstantValueSet 0..*
ARElement
SwSystemconstantValueSet
+swSystemconstantValue 0..*
SwSystemconstValue
«atpVariation»
+ value: Numerical
+swSystemconst 1
ARElement
AtpDefinition
SwSystemconst
4
Scope / Dependency
No Included Containers
To support the generation of ASAM MCD files UnitGroups may be selected in the
EcuC that are relevant for the MCD system. Please note that the EcucUnitGroupAs-
signment can be used to control the generation of the A2L file in a way that the units
used for calculation are replaced by application domain specific units.
EcuC: EcucModuleDef EcucUnitGroupAssignment:
upperMultiplicity = 1 +container EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1
+reference
EcucUnitGroupRef: EcucForeignReferenceDef
upperMultiplicity = *
lowerMultiplicity = 1
destinationType = UNIT-GROUP
ARElement
UnitGroup
4
Post-Build Variant Value false
Multiplicity Configuration Class Pre-compile time X All Variants
Link time –
Post-build time –
Value Configuration Class Pre-compile time X All Variants
Link time –
Post-build time –
Scope / Dependency
No Included Containers
In order to support the synchronization of Handle IDs (see section 3.4.1) two modules
need to be able to refer to the same Pdu object2 . Therefore a generic Pdu container
has been defined which does not belong to any module but is defined in the EcuC
module.
Since the Pdu flowing through the COM-Stack does not belong to an individual mod-
ule, the "virtual" module EcuC has been introduced in the ECU Configuration. This
module is used to collect configuration information not associated with any specific
standardized module.
The EcucPduCollection may contain several "global" Pdu objects as shown in fig-
ure 3.9. Each Pdu may either represent a FrameTriggering (for Pdus not going
through the Pdu Router: UserDefinedPdus, NmPdus and NPdus) or PduTrigger-
ing (for all other Pdus) belonging to the specific ECU from the AUTOSAR System
Description[2] (ECU Extract). Therefore there is an optional reference to ei-
ther FrameTriggering (SysTPduToFrameTriggeringRef) or PduTriggering
(SysTPduToPduTriggeringRef) element in the System Template. Either SysT-
PduToFrameTriggeringRef or SysTPduToPduTriggeringRef shall be used.
2
For the aspect of the configuration it does not matter what kind of Pdu it is, i.e. I-PDU, L-PDU or
N-PDU.
PduLengthTypeEnum:
+parameter EcucEnumerationParamDef +literal UINT32:
EcucEnumerationLiteralDef
+subContainer MetaDataType:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
+destination
+subContainer
System Template
SysTPduToFrameTriggeringRef:
EcucForeignReferenceDef Identifiable
+reference
upperMultiplicity = 1 FrameTriggering
lowerMultiplicity = 0
destinationType = FRAME-TRIGGERING
SysTPduToPduTriggeringRef:
EcucForeignReferenceDef Identifiable
+reference
lowerMultiplicity = 0 PduTriggering
upperMultiplicity = 1
destinationType = PDU-TRIGGERING
PduLength:
+parameter EcucIntegerParamDef
min = 0
max = 4294967295 J1939Requestable:
+parameter EcucBooleanParamDef
lowerMultiplicity = 0
DynamicLength: upperMultiplicity = 1
+parameter EcucBooleanParamDef
lowerMultiplicity = 0
upperMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 upperMultiplicity = *
+subContainer
EcucPduDedicatedPartitionRef: +destination
EcucPduDedicatedPartition: EcucReferenceDef
+reference
EcucParamConfContainerDef
lowerMultiplicity = 1
lowerMultiplicity = 0 upperMultiplicity = 1
upperMultiplicity = *
EcuC Values
+reference EcucPduDedicatedPartitionBswModuleRef:
EcucForeignReferenceDef ARElement
EcucModuleConfigurationValues
destinationType = ECUC-MODULE-CONFIGURATION-VALUES
lowerMultiplicity = 1
upperMultiplicity = 1
Included Containers
Container Name Multiplicity Scope / Dependency
MetaDataType 0..* Meta data serves to transport information through the AUTOSAR
layers. It is transported by the PduInfoType structure via a
separate pointer to a byte array alongside the length of and a
pointer to the payload of the PDU. This container defines the
content of the meta data.
Pdu 0..* One Pdu flowing through the COM-Stack. This Pdu is used by all
Com-Stack modules to agree on referencing the same Pdu.
4
Description Reference to the FrameTriggering from the SystemTemplate which this Pdu belongs to.
SysTPduToFrameTriggeringRef shall be used for UserDefinedPdus, NmPdus and
NPdus which are not going through the Pdu Router. This reference shall not be used if
SysTPduToPduTriggeringRef exists.
Multiplicity 0..1
Type Foreign reference to FRAME-TRIGGERING
Post-Build Variant Multiplicity true
Post-Build Variant Value true
Multiplicity Configuration Class Pre-compile time X VARIANT-PRE-COMPILE
Link time –
Post-build time X VARIANT-POST-BUILD
Value Configuration Class Pre-compile time X VARIANT-PRE-COMPILE
Link time –
Post-build time X VARIANT-POST-BUILD
Scope / Dependency dependency: SysTPduToFrameTriggeringRef shall be used for UserDefinedPdus, Nm
Pdus and NPdus which are not going through the Pdu Router. This reference shall not
be used if SysTPduToPduTriggeringRef exists.
Included Containers
Container Name Multiplicity Scope / Dependency
EcucPduDedicatedPartition 0..* Module specific container for Pdu to partition assignment.
4
Multiplicity Configuration Class Pre-compile time X All Variants
Link time –
Post-build time –
Configuration Parameters
No Included Containers
MetaDataType:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
+subContainer MetaDataItemLength:
EcucIntegerParamDef
MetaDataItem:
EcucParamConfContainerDef +parameter min = 1
max = 64
lowerMultiplicity = 1 lowerMultiplicity = 1
upperMultiplicity = * upperMultiplicity = 1
requiresIndex = true
+literal SOURCE_ADDRESS_16:
EcucEnumerationLiteralDef
+literal TARGET_ADDRESS_16:
EcucEnumerationLiteralDef
+literal ADDRESS_EXTENSION_8:
EcucEnumerationLiteralDef
+literal SOCKET_CONNECTION_ID_16:
EcucEnumerationLiteralDef
+literal LIN_NAD_8:
+parameter EcucEnumerationLiteralDef
+literal CAN_ID_32:
EcucEnumerationLiteralDef
+literal ETHERNET_MAC_64:
EcucEnumerationLiteralDef
+literal PRIORITY_16:
EcucEnumerationLiteralDef
+literal VLAN_16:
EcucEnumerationLiteralDef
+literal SDUTYPE_8:
EcucEnumerationLiteralDef
+literal ACCEPTANCEFIELD_32:
EcucEnumerationLiteralDef
4
Multiplicity Configuration Class Pre-compile time X All Variants
Link time –
Post-build time –
Configuration Parameters
Included Containers
Container Name Multiplicity Scope / Dependency
MetaDataItem 1..* The content of meta data in a Pdu consists of an ordered list of
meta data items. This container represents a meta data item that
is contained in meta data of a Pdu.
4
CAN_ID_32 CAN ID according to ISO 11898-2, either 29 bits
or 11 bits. Encoding according to Can_IdType.
Size: 32 bits.
ETHERNET_MAC_64 Ethernet MAC address. Size: 64 bits.
LIN_NAD_8 LIN node address as used in the LIN transport
protocol. Size: 8 bits.
PRIORITY_16 CAN XL Priority ID. Size: 16 bits.
PRIORITY_8 Priority field of SAE J1939 IDs, or Ethernet QoS
parameter. Size: 8 bits.
SDUTYPE_8 SDU type of CAN XL. Size: 8 bits.
SOCKET_CONNECTION_ID_16 SoAd socket connection ID. Size: 16 bits.
SOURCE_ADDRESS_16 Source address of CanTp, FrTp, or DoIP
transport protocol messages, or of SAE J1939
messages. Size: 16 bits.
TARGET_ADDRESS_16 Target address of CanTp, FrTp, or DoIP transport
protocol messages, or destination address of
SAE J1939 messages. Size: 16 bits.
VLAN_16 VLAN ID of Ethernet or VCID of CAN XL. Size:
16 bits.
Post-Build Variant Value false
Value Configuration Class Pre-compile time X All Variants
Link time –
Post-build time –
Scope / Dependency scope: local
No Included Containers
In figure 3.11 a detailed view of the COM-Stack modules and their interaction is shown.
There are several kinds of interactions between adjacent3 modules.
The API definitions in the COM-Stack utilize two concepts to achieve the interaction
between adjacent modules:
• Pointers to Pdu data buffer (the Pdu data buffer contains the actual communi-
cated information, depending on the actual layer the interaction happens)
• Handle IDs to identify to what Pdu the pointer is referring to.
A typical API call is for instance:
PduR_ComTransmit(PduIdType ComTxPduId, PduInfoType *PduInfoPtr)
Which BSW Module is actually providing the value of the Handle ID is specified in
the ECU Configuration Parameter Definition of the corresponding BSW Module (see
section 3.4.1.2 for details on the specification).
The choice of the value for a Handle ID is open to the implementation of the providing
module. There might be different strategies to optimize the Handle ID values and
3
Modules are called adjacent if they share an interface, so PduR and Com are adjacent, while PduR
and Can driver are not.
therefore the internal structures of the implementation may have an influence on the
choice of the values.
Also the Handle IDs can be chosen freely per module, so a Pdu might be sent from
Com to the PduR with the ID=5 and then the PduR transmits it further to the CanIf with
ID=19. In the configuration information of the PduR it has to be possible to conclude
that if a Pdu arrives from Com with ID=5 it has to be forwarded to the CanIf with ID=19.
It has to be guaranteed that each Pdu does have a unique handle ID within the scope
of the corresponding API. For example: The PduR gets transmission requests from
both, the Com and the Dcm modules. But there are also two distinct APIs defined for
those requests:
• PduR_ComTransmit(...)
• PduR_DcmTransmit(...)
Therefore the PduR can distinguish two Pdus, even when they have the same handle
ID but are requested via different APIs.
Another use-case in the COM-Stack only provides one API for all the callers: the inter-
face layer (CanIf, FrIf, LinIf).
• CanIf_Transmit(...)
Here it has to be guaranteed that each transmit request for a distinct Pdu does have a
unique handle ID.
The actual values of the handle IDs can only be assigned properly when the configu-
ration of one module is completed, since only then the internal data structures can be
defined.
In the next sections the patterns used to define and utilize Handle IDs are described.
Handle IDs are defined by the module providing the API and used by the module calling
the API. Handle IDs that are used in callback functions (e.g. Tx Confirmation functions
or Trigger Transmit functions) shall be defined by the upper layer module. In the upper
layer module the same HandleId shall be used for the Tx Confirmation and for the Trig-
ger Transmit callback functions. I.e. the module that receives a transmission request
can call the Tx confirmation callback with a different Handle Id than the transmission
request Handle Id. This is a difference to previous releases of AUTOSAR where the Tx
confirmation was called with the same Handle Id.
The ECU Configuration Value description (which holds the actual values of configu-
ration parameters) is structured according to the individual BSW Module instances.
Therefore the ECU Configuration Parameter Definition is also structured in this way.
lowerMultiplicity = 1
upperMultiplicity = 1
+subContainer
CanIfTxPduCanId:
CanIfTxPduCfg: EcucIntegerParamDef
EcucParamConfContainerDef +parameter min = 0
lowerMultiplicity = 0 max = 536870911
upperMultiplicity = * lowerMultiplicity = 0
upperMultiplicity = 1
+parameter CanIfTxPduId:
EcucIntegerParamDef
symbolicNameValue = true
min = 0
max = 4294967295
The configuration of the module CanIf may contain several CanIfTxPduConfig ob-
jects.
Each CanIfTxPduConfig object contains information on one Pdu which is coming
from an upper layer (e.g. PduR or Nm) and is going to some Can driver. In this
example the CanIfCanTxPduCanId and CanIfCanTxPduDlc are specified for each
to be transmitted Pdu. There is a similar structure needed for the receive use-case as
well.
Additionally the parameter CanIfCanTxPduId is specified. This integer parameter
will later hold the actual value for the handle ID. So the handle ID value is stored inside
the structure of the defining module.
Since the handle ID CanIfCanTxPduId is part of the container CanIfTxPduConfig
the semantics of the symbolic names can be applied.
The described example only applies for the communication between CanIf and Upper
Layer modules. CanDrv does not support the handle ID concept and indicates TxCon-
firmation using the PduId passed during Can_Write().
[TPS_ECUC_02106] Handle Id which needs to be shared between several mod-
ules d If a configuration parameter holds a handle Id which needs to be shared between
several modules it shall have the symbolicNameValue = true set.c()
Thus it is required that all handle Id values are accessible via a symbolic name refer-
ence (see section 3.4.1.4).
During the configuration of a module, information for each Pdu flowing through this
module is created (see again figure 3.12: CanIfTxPduConfig) which hold module-
specific configuration information. Now each of these "local" Pdu configurations needs
to be related to a "global" Pdu element (see section 3.3.6) representing information
flowing through the COM-Stack. This is done by introducing a EcucReferenceDef
from the "local" Pdu to the "global" Pdu.
In figure 3.13 this relationship is shown for the PduRDestPdu and the CanIfTxP-
duConfig.
+subContainer +reference +destination
PduRRoutingPaths: PduRDestPdu: PduRDestPduRef: Pdu:
EcucParamConfContainerDef EcucParamConfContainerDef EcucReferenceDef EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
lowerMultiplicity = 1 lowerMultiplicity = 0
upperMultiplicity = 1 upperMultiplicity = *
CanIfTxPduId:
+parameter EcucIntegerParamDef
symbolicNameValue = true
min = 0
max = 4294967295
There are two reasons why the "global" Pdu has been introduced and why all "local"
Pdus have to point to the "global" Pdu only.
• When doing the configuration of module PduR only the "global" Pdu needs to be
present, there is no need for the "local" Pdu in the CanIf to be present yet.
• The References are stored in the "local" Pdu structure, so changes applied do
only influence the structure of the changed module.
Taking the structure shown in figure 3.13 it is now possible to generate both modules.
The CanIf (automatic) configuration editor collects all "local" CanIfTxPduConfigs
and generates/stores the values for their handle ID in CanIfCanTxPduId. If the
CanIf needs to know where the Pdu transmit request is coming from it can follow the
PduIdRef to the "global" Pdu and then "query" all references pointing to that Pdu. By
following those references in reversed direction the transmitting module can be found.
The PduR generator has to know which handle ID to use for each Pdu that has to be
sent to the CanIf. To get the actual handle ID value the mechanism is the same in the
CanIf use-case: follow the "global" Pdu reference and "query" the modules pointing to
that "global" Pdu. Then find the module(s) type this Pdu is going to be transmitted to.
In case of a multicast there might be several modules to send the same Pdu to.
With this approach a high degree of decoupling has been achieved between the con-
figuration information of the involved modules. Even when modules are adjacent and
need to share information like handle ID, the references between the modules are al-
ways indirect using the "global" Pdu elements.
The usage of handle Ids together with symbolic names is targeting several use-cases
for the methodology of configuring adjacent modules. For the definition of possible
configuration approaches please refer to section A.1.1.
For the discussion of the Handle Id use-cases two basic approaches can be distin-
guished when dividing the methodology into the steps configuration editing and module
generation:
• Handle Ids assigned by the configuration editor
• Handle Ids assigned by the module generator
It is assumed that the configuration and generation of the whole stack is done using
different tools (possibly from different vendors) which might implement one of the two
approaches mentioned above.
In order to support the definition whether a parameter value shall be provided by the
user or whether it will be calculated by the editor / generator tooling the attribute
withAuto has been introduced to the EcucParameterDef (see section 2.3.5).
In requirement [TPS_ECUC_02106] it is required that all handle Ids are represented
as symbolicNameValue = true configuration parameters thus decoupling the value
from its usage.
In requirement [TPS_ECUC_02107] it is required that the assigned values are stored
in the XML (latest after module generation) so the assigned values are documented. In
case the assignment of values has to be performed at a later point in time again (with
updated input information) the non affected values can be preserved. It is also needed
to support debugging.
In requirement [TPS_ECUC_02108] it is required that the handle Id values are always
generated into the module’s header file. With this approach it is possible to freely
choose the configuration approach of the adjacent modules.
This approach has significant effect on the methodology due to the circular depen-
dencies between the adjacent modules( Com sends to the PduR using PduR handle
Ids, PduR indicates to Com using Com handle Ids). Therefore the configuration of all
adjacent modules has to be re-visited in case some handle Id changes happen. This
contributes to the approach that FIRST the configuration of the stack is performed and
SECOND the generation is triggered.
An example of this approach is provided below: By adding the attribute symbolic-
NameValue = true to the parameter holding the handle ID (in figure 3.13 this is the
parameter CanIfTxPduId) the code generator doing the CanIf will generate a #de-
fine in the CanIf_cfg.h file.
According to [TPS_ECUC_02108] the name of the symbol is composed of the mod-
ule abbreviation <MA> of the declaring BSW Module followed by the literal "Conf_"
followed by the shortName of the EcucParamConfContainerDef of the declaring mod-
ule followed by the shortName of the EcucContainerValue container which holds the
symbolicNameValue configuration parameter value. The value is the actual number
assigned to that handle ID.
For example in CanIf_cfg.h:
#define CanIfConf_CanIfTxPduCfg_Pdu_2345634_985 17
The benefit is that the generator of the PduR does not need to wait for the CanIf to
be configured completely and handle IDs are generated. If the CanIf publishes the
symbolic names for the handle IDs, the PduR can expect those symbolic names and
generate the PduR code using those symbolic names.
For example in PduR.c:
CanIf_Transmit( CanIfConf_CanIfTxPduCfg_Pdu_2345634_985, PduPtr
)
Therefore the PduR can be generated as soon as its own configuration is finished and
there is no need to wait for the CanIf to be finished completely. However, at least the
"local" Pdu in the CanIf has to be already created to allow this, because the name of
the symbol has to be fetched from this configuration.
Of course the PduR can only be compiled after the CanIf has been generated as well,
but with the utilization of the symbolic names together with handle IDs an even higher
degree of decoupling in the configuration process is achieved.
In this section several use-cases of the PduR are described from the configuration point
of view. The focus is on the interaction of the PduR configuration with the configuration
of the other COM-Stack modules. Therefore only some configuration parameters are
actually shown in these examples.
In the example in figure 3.14 a Pdu is sent from the Com module – via the Pdu Router
– to the Can Interface. Since this one Pdu is handed over through these layers there is
only need for one global Pdu object System_Pdu.
The Com module’s configuration points to the System_Pdu to indicate which Pdu shall
be sent. The actual Handle Id which has to be used in the API call will however be
SrcPduRef:
PduRRoutingPath: PduRSrcPdu: EcucReferenceValue
EcucContainerValue EcucContainerValue
HandleId:
EcucNumericalParamValue
value = 23
PduRDestPdu: DestPduRef:
EcucContainerValue EcucReferenceValue
CanIfTxPduConfig: PduIdRef:
EcucContainerValue EcucReferenceValue
CanIfCanTxPduId:
EcucNumericalParamValue
value = 6
In the example in figure 3.15 the reception use-case from the CanIf to the Com module
is configured. Here the Handle Ids are defined in the PduR and the Com module’s
configuration.
ComRxIPduHandleId:
EcucNumericalParamValue
value = 3
SrcPduRef:
PduRSrcPdu: EcucReferenceValue
EcucContainerValue
HandleId:
EcucNumericalParamValue
value = 17
CanIfCanRxPduId: PduIdRef:
EcucContainerValue EcucReferenceValue
In the example in figure 3.16 the gateway use-case is shown. Since there are two
Pdus involved there are two System_Pdu objects defined: one which is representing
the Can Pdu and one which represents the Fr Pdu. Via the references to these two
System_Pdu objects the gateway is configured.
SrcPduRef:
PduRRoutingPath: PduRSrcPdu: EcucReferenceValue
EcucContainerValue EcucContainerValue
HandleId:
EcucNumericalParamValue
value = 17
FrIfTxPdu: PduIdRef:
EcucContainerValue EcucReferenceValue
HandleId:
EcucNumericalParamValue
value = 2
For the configuration of the control path modules (e.g. Communication manager, state
managers, network managers) the respective channels are identified using a unique
Communication Channel ID approach. This is different than the configuration of the
Pdu Handle IDs of the COM-Stack (see section 3.4.1) where individual Pdu Handle
IDs are configured per module.
NmChannelConfig:
EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 1
(from NmChannelConfig)
+reference
NmComMChannelRef: EcucReferenceDef
requiresSymbolicNameValue = true
+destination
(from NmChannelConfig)
ComMChannel:
EcucParamConfContainerDef +destination
CanNmComMNetworkHandleRef:
lowerMultiplicity = 1 +destination EcucReferenceDef
upperMultiplicity = 256
requiresSymbolicNameValue = true
(from ComM)
(from CanNm)
CanSMComMNetworkHandleRef:
+parameter
EcucReferenceDef
ComMChannelId: requiresSymbolicNameValue = true
EcucIntegerParamDef
+reference
(from CanSM)
symbolicNameValue = true
max = 255
min = 0
CanSMManagerNetwork:
(from ComM)
EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = *
(from CanSM)
In figure 3.17 the ComMChannel defines a global communication channel and provides
the Communication Channel ID of this channel in the parameter value ComMChan-
nelId. Other modules using communication channels (e.g. Nm, CanSM, CanNm, ...)
refer to the ComMChannel and can utilize the Communication Channel ID in two ways:
• the module does not store the value of the Communication Channel ID itself but
always relies on the value provided by the ComM module (like shown for CanNm).
• the module replicates the value of the Communication Channel ID and requires
that the replicated id value is equal to the one provided by ComM module (like
shown for Nm and CanSM).
Both approaches are currently used in the COM-Stack configuration.
Included Containers
Container Name Multiplicity Scope / Dependency
CddComStackContribution 0..1 Contribution of COM Stack modules.
CddEcucPartitionInteraction 0..1 This optional container holds the partition interaction
configuration.
CddGeneral 0..1 Contains the general configuration parameters of the module.
CddGlobalTimeContribution 0..1 Contribution of Global Time modules.
CddEcucPartitionInteraction: EcucParamConfContainerDef
+container +parameter CddPartitionStoppedFunctionName:
lowerMultiplicity = 0 EcucFunctionNameDef
upperMultiplicity = 1
EcucPartition:
+reference
EcucParamConfContainerDef
CddEcucPartitionRef: +destination lowerMultiplicity = 0
EcucReferenceDef upperMultiplicity = *
CddGlobalTimeContribution:
+container EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
CddInstanceId:
CddGeneral: +parameter EcucIntegerParamDef
EcucParamConfContainerDef
min = 0
lowerMultiplicity = 0 max = 255
upperMultiplicity = 1 lowerMultiplicity = 1
+container upperMultiplicity = 1
CddModuleId:
+parameter
EcucIntegerParamDef
min = 255
max = 4095
defaultValue = 255
lowerMultiplicity = 0
upperMultiplicity = 1
No Included Containers
No Included Containers
Included Containers
Container Name Multiplicity Scope / Dependency
CddComIfUpperLayerContribution 0..1 Parameters that are necessary for the configuration of a
Complex Driver that serves as the UpperLayer of the Com
Interface module.
CddComMLowerLayerContribution 0..1 Parameters that are necessary for the configuration of a
Complex Driver that serves as the LowerLayer of the
Communication Manager module.
CddGenericNmLowerLayer 0..1 Parameters that are necessary for the configuration of a
Contribution Complex Driver that serves as the LowerLayer of the Generic
NM module.
CddJ1939RmContribution 0..1 Contribution of J1939Rm module
CddPduRLowerLayerContribution 0..1 Parameters that are necessary for the configuration of a
Complex Driver that serves as the LowerLayer of the Pdu Router
module.
CddPduRUpperLayerContribution 0..1 Parameters that are necessary for the configuration of a
Complex Driver that serves as the UpperLayer of the Pdu Router
module.
CddSoAdUpperLayerContribution 0..1 Parameters that are necessary for the configuration of a
Complex Driver that serves as the UpperLayer of the SoAd
module.
The following sections describe particular COM stack modules and the interaction with
Complex Drivers.
In the AUTOSAR COM Stack upper and lower layer Complex Drivers are allowed to
access the Pdu Router. In both cases the Pdus that are exchanged between the CDD
and the Pdu Router shall be configured. The contribution of the Complex Driver implies
a reference to the global Pdu and the definition of a HandleId. Figure 3.19 shows an
example of a Complex Driver between the CanIf and the PduR and one Complex Driver
above the PduR.
symbolicNameValue = true
lowerMultiplicity = 0
upperMultiplicity = 1
min = 0
max = 65535
lowerMultiplicity = 0
+subContainer upperMultiplicity = * CddPduRUpperLayerHandleId:
EcucIntegerParamDef
+parameter
symbolicNameValue = true
lowerMultiplicity = 0
upperMultiplicity = 1
min = 0
max = 65535
CddPduRLowerLayerPduRef: +destination
CddPduRLowerLayerContribution: CddPduRLowerLayerTxPdu: +reference
EcucReferenceDef
EcucParamConfContainerDef EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 +subContainer upperMultiplicity = * CddPduRLowerLayerHandleId:
EcucIntegerParamDef
+parameter
symbolicNameValue = true
lowerMultiplicity = 0
upperMultiplicity = 1
min = 0
max = 65535
+subContainer lowerMultiplicity = 0
upperMultiplicity = *
CddPduRLowerLayerHandleId:
EcucIntegerParamDef
+parameter
symbolicNameValue = true
lowerMultiplicity = 0
upperMultiplicity = 1
min = 0
max = 65535
CddComIfPduRef: +destination
+reference EcucReferenceDef
CddComIfUpperLayerContribution: CddComIfUpperLayerTxPdu:
EcucParamConfContainerDef EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 CddComIfHandleId:
+subContainer upperMultiplicity = *
EcucIntegerParamDef
+parameter
symbolicNameValue = true
lowerMultiplicity = 0
upperMultiplicity = 1
min = 0
max = 65535
CddComIfPduRef: +destination
+reference EcucReferenceDef
CddComIfUpperLayerRxPdu:
EcucParamConfContainerDef
lowerMultiplicity = 0
+subContainer upperMultiplicity = *
CddComIfHandleId:
EcucIntegerParamDef
+parameter
symbolicNameValue = true
lowerMultiplicity = 0
upperMultiplicity = 1
min = 0
max = 65535
CddPduRUpperLayerTxPdu: CddPduRApiType:
EcucParamConfContainerDef +parameter EcucEnumerationParamDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * upperMultiplicity = 1
CddPduRUpperLayerRxPdu:
EcucParamConfContainerDef +parameter
lowerMultiplicity = 0
upperMultiplicity = *
CddPduRLowerLayerTxPdu:
EcucParamConfContainerDef +parameter
lowerMultiplicity = 0
upperMultiplicity = * +literal IF:
EcucEnumerationLiteralDef
CddPduRLowerLayerRxPdu:
EcucParamConfContainerDef +parameter
+literal TP:
lowerMultiplicity = 0 EcucEnumerationLiteralDef
upperMultiplicity = *
CddSoAdUpperLayerTxPdu:
EcucParamConfContainerDef +parameter
upperMultiplicity = *
lowerMultiplicity = 0
CddSoAdUpperLayerRxPdu:
EcucParamConfContainerDef +parameter
upperMultiplicity = *
lowerMultiplicity = 0
Included Containers
Container Name Multiplicity Scope / Dependency
CddPduRUpperLayerRxPdu 0..* This container specifies Rx PDUs that are exchanged between
the CDD and the standardized BSW module.
CddPduRUpperLayerTxPdu 0..* This container specifies Tx PDUs that are exchanged between
the CDD and the standardized BSW module.
Included Containers
Container Name Multiplicity Scope / Dependency
CddPduRLowerLayerRxPdu 0..* This container specifies Rx PDUs that are exchanged between
the CDD and the standardized BSW module.
CddPduRLowerLayerTxPdu 0..* This container specifies Tx PDUs that are exchanged between
the CDD and the standardized BSW module.
No Included Containers
No Included Containers
4
Description This container specifies Tx PDUs that are exchanged between the CDD and the
standardized BSW module.
Configuration Parameters
No Included Containers
No Included Containers
A Complex Driver is not allowed to access the COM Stack modules FrDrv, CanDrv and
LinDrv. For these modules there is no more than one user. Therefore the lower layer
of the COM Stack Bus Interface modules (FrIf, LinIf, CanIf) is not regarded in the CDD
module. Upper layer Complex Drivers are allowed to access the interface of these
modules. Equal to the PduRContribution the CddComIfUpperLayerContribu-
tion of the Complex Driver implies a reference to the global Pdu and the definition of
a HandleId. Figure 3.20 shows the CDD contribution in the configuration model.
Note that the optional presence of the TxPdu and RxPdu does not influence the exis-
tence of the respective APIs in the Cdd.
SWS Item [ECUC_Cdd_00018]
Container Name CddComIfUpperLayerContribution
Parent Container CddComStackContribution
Description Parameters that are necessary for the configuration of a Complex Driver that serves as
the UpperLayer of the Com Interface module.
Configuration Parameters
Included Containers
Container Name Multiplicity Scope / Dependency
CddComIfUpperLayerRxPdu 0..* This container specifies Rx PDUs that are exchanged between
the CDD and the standardized BSW module.
CddComIfUpperLayerTxPdu 0..* This container specifies Tx PDUs that are exchanged between
the CDD and the standardized BSW module.
No Included Containers
No Included Containers
Complex Drivers are allowed to access the Communication Manager on the upper
layer. The contribution of the lower layer Complex Driver implies for each channel a
reference to to the unique handle to identify one certain network handle in the ComM
configuration.
CddComStackContribution: CddComMLowerLayerContribution: CddComMLowerLayerChannel:
EcucParamConfContainerDef +subContainer EcucParamConfContainerDef +subContainer EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = 1 upperMultiplicity = 1 upperMultiplicity = *
+reference
ComMChannel:
EcucParamConfContainerDef +destination CddComMLowerLayerChannelRef:
EcucReferenceDef
lowerMultiplicity = 1
upperMultiplicity = 256 requiresSymbolicNameValue = true
Included Containers
Container Name Multiplicity Scope / Dependency
CddComMLowerLayerChannel 1..* This container contains the network specific parameters.
No Included Containers
Complex Drivers are allowed to access the GenericNm module on the upper layer. The
contribution of the lower layer Complex Driver implies in each NmChannel configura-
tion a reference to the respective NM channel handle.
CddComStackContribution: CddGenericNmLowerLayerContribution: CddGenericNmLowerLayerChannel:
EcucParamConfContainerDef +subContainer EcucParamConfContainerDef +subContainer EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = 1 upperMultiplicity = 1 upperMultiplicity = *
+reference
ComMChannel:
+destination CddGenericNmComMNetworkHandleRef:
EcucParamConfContainerDef
EcucReferenceDef
lowerMultiplicity = 1
requiresSymbolicNameValue = true
upperMultiplicity = 256
Included Containers
Container Name Multiplicity Scope / Dependency
CddGenericNmLowerLayer 1..* NM Channel specific configuration parameters.
Channel
No Included Containers
Complex Drivers are allowed to access the SoAd module on the upper layer. The Pdus
that are exchanged between the CDD and the SoAd shall be configured. The contribu-
tion of the Complex Driver implies a reference to the global Pdu and the definition of a
HandleId. Figure 3.24 shows the CDD contribution in the configuration model.
CddComStackContribution:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1
+literal TP:
EcucEnumerationLiteralDef
+parameter
CddSoAdUpperLayerRxPdu:
EcucParamConfContainerDef +reference CddSoAdUpperLayerPduRef: +destination
EcucReferenceDef
upperMultiplicity = *
lowerMultiplicity = 0
+subContainer
CddSoAdUpperLayerHandleId:
EcucIntegerParamDef
+parameter symbolicNameValue = true
lowerMultiplicity = 1
upperMultiplicity = 1
min = 0
max = 65535
Included Containers
Container Name Multiplicity Scope / Dependency
CddSoAdUpperLayerRxPdu 0..* This container specifies Rx PDUs that are exchanged between
the CDD and the standardized BSW module.
CddSoAdUpperLayerTxPdu 0..* This container specifies Tx PDUs that are exchanged between
the CDD and the standardized BSW module.
No Included Containers
4
Description This container specifies Rx PDUs that are exchanged between the CDD and the
standardized BSW module.
Configuration Parameters
No Included Containers
3.5.6 J1939Rm
The J1939Rm provides a CDD interface with several callout functions. To be able to
generate a header file for a CDD that can in turn be included in J1939Rm to make the
callout prototypes available a J1939Rm CDD contribution is available.
SWS Item [ECUC_Cdd_00079]
Container Name CddJ1939RmContribution
Parent Container CddComStackContribution
Description Contribution of J1939Rm module
Configuration Parameters
No Included Containers
Complex Drivers, which implement Timebase Providers for Global Time Synchroniza-
tion, are allowed to access the StbM to manage the synchronized time-bases.
Figure 3.25 shows the CDD contribution in the configuration model.
StbMSynchronizedTimeBase:
Cdd: EcucModuleDef CddGlobalTimeContribution: EcucParamConfContainerDef
+container EcucParamConfContainerDef
lowerMultiplicity = 0
lowerMultiplicity = 1
upperMultiplicity = * lowerMultiplicity = 0 upperMultiplicity = *
upperMultiplicity = 1
+destination
CddSynSynchronizedTimeBaseRef:
+subContainer
EcucReferenceDef
+reference
CddGlobalTimeDomain: requiresSymbolicNameValue = true
EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = * CddGlobalTimeDomainId:
+parameter
EcucIntegerParamDef
min = 0
max = 31
+subContainer +subContainer
CddGlobalTimeMaster: CddGlobalTimeSlave:
CddGlobalTimeTxPeriod: EcucParamConfContainerDef EcucParamConfContainerDef
+parameter
EcucFloatParamDef
lowerMultiplicity = 0 lowerMultiplicity = 0
min = 0.0 upperMultiplicity = 1 upperMultiplicity = 1
+subContainer +subContainer
CddGlobalTimeMasterPdu: CddGlobalTimeSlavePdu:
EcucParamConfContainerDef EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 upperMultiplicity = 1
+reference +reference
CddGlobalTimeMasterPduRef: CddGlobalTimeSlavePduRef:
EcucReferenceDef EcucReferenceDef
+destination +destination
CddComIfUpperLayerTxPdu: CddComIfUpperLayerRxPdu:
EcucParamConfContainerDef EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * upperMultiplicity = *
Included Containers
Container Name Multiplicity Scope / Dependency
CddGlobalTimeDomain 1..* This represents the existence of a CDD global time domain. The
CddGlobalTimeContribution can administrate several global time
domains at the same time that in itself form a hierarchy of
domains and sub-domains.
Included Containers
Container Name Multiplicity Scope / Dependency
CddGlobalTimeMaster 0..1 Configuration of the global time master. Each global time domain
is required to have exactly one global time master. This master
may or may not exist on the configured ECU.
CddGlobalTimeSlave 0..1 Configuration of a global time slave. Each global time domain is
required to have at least one time slave. The configured ECU
may or may not represent a time slave.
Included Containers
Container Name Multiplicity Scope / Dependency
CddGlobalTimeMasterPdu 0..1 This container encloses the configuration of the PDU that is
supposed to contain the global time information.
Please note that the configuration of CddGlobalTimeMasterPdu
is optional and shall only be used for Complex Drivers that are
using Pdus for carrying timeSync information.
Included Containers
Container Name Multiplicity Scope / Dependency
CddGlobalTimeSlavePdu 0..1 This container encloses the configuration of the PDU that is
supposed to contain the global time information.
Please note that the configuration of CddGlobalTimeSlavePdu is
optional and shall only be used for Complex Drivers that are
using Pdus for carrying timeSync information.
4
Multiplicity 1
Type Reference to CddComIfUpperLayerTxPdu
Post-Build Variant Value false
Scope / Dependency scope: local
No Included Containers
No Included Containers
min = 0
Mcu: EcucModuleDef
max = INF
upperMultiplicity = 1
lowerMultiplicity = 0 +parameter
+container McuClockReferencePoint:
EcucParamConfContainerDef
McuModuleConfiguration: McuClockSettingConfig: +subContainer
EcucParamConfContainerDef EcucParamConfContainerDef upperMultiplicity = *
lowerMultiplicity = 1
lowerMultiplicity = 1 upperMultiplicity = *
upperMultiplicity = 1 +subContainer lowerMultiplicity = 1
McuClockSettingId:
+parameter EcucIntegerParamDef
symbolicNameValue = true
min = 0
max = 255
McuRamDefaultValue:
McuRamSectorSettingConf: EcucIntegerParamDef
EcucParamConfContainerDef +parameter
min = 0
upperMultiplicity = * max = 255
lowerMultiplicity = 0
McuRamSectionBaseAddress:
+parameter EcucIntegerParamDef
+subContainer
min = 0
max = 4294967295
McuRamSectionSize:
+parameter EcucIntegerParamDef
min = 0
max = 4294967295
McuRamSectionWriteSize:
+parameter EcucIntegerParamDef
min = 0
max = 4294967295
defaultValue = 8
No Included Containers
The ECU integrator and/or MCU configuration/generation tool need to derive from
those required output frequencies - together with other parameters such as input clock
frequency - how its internal settings for prescalers, muxes, etc. need to be configured.
The users of clock frequencies (e.g. CanDrv, LinDrv, PWM) define in their configu-
ration a reference to the container McuClockReferencePoint that allows them to
select which input clock they choose. In that container the modules generator will find
the frequency to use as input frequency (value of parameter McuClockReference-
PointFrequency). The users of clock frequencies might need to adjust the clock
further by setting local prescalers and dividers.
The configuration editor for the peripheral module (i.e. CanDrv configuration editor)
can support the integrator by only allowing a selection of those clock reference points
that can be connected physically to that peripheral.
The design guideline is that all settings until the MCU clock reference point are under
the responsibility of the MCU Driver (see figure 3.27). Further adjustments on the clock
frequency are under the responsibility of the specific user peripheral’s driver.
«performs»
«performs»
1 «input» «output»
1
Define Vendor Specific
AUTOSAR Standardized ECU Module Definition
Configuration Parameter Definition BSW Module Vendor-
Specific Configuration
Parameter Definition
Please note that also a pure VSMD which has no counterpart in the StMD is allowed to
exist. Vendor specific parameters/containers/references with no relationship to StMD
may also be available in a VSMD. Figure 4.2 shows an example with pure vendor
specific containers and references (marked with red color).
STMD VSMD
Refine
CanIf VendorX/CanIf
pure vendor specific reference
CanIfTrcvRef DEST-REF (2)
CanIfDriverRef
DEST-REF
CanIfDriverRef
Refine DEST-REF (1)
VendorY/CanDrv pure
CanDrv
vendor specific
reference definition
CanGeneral CanGeneral
CanDrvTrcvChannel
In example 4.1 the StMD of the two modules of figure 4.2 is defined.
Example 4.1
<AR-PACKAGE>
<SHORT-NAME>AUTOSAR</SHORT-NAME>
<AR-PACKAGES>
<AR-PACKAGE>
<SHORT-NAME>EcucDefs</SHORT-NAME>
<ELEMENTS>
<ECUC-MODULE-DEF>
<SHORT-NAME>CanIf</SHORT-NAME>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>CanIfDriver</SHORT-NAME>
<REFERENCES>
<ECUC-REFERENCE-DEF>
<SHORT-NAME>CanIfDriverRef</SHORT-NAME>
<DESTINATION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/
AUTOSAR/EcucDefs/CanDrv/CanGeneral</DESTINATION-REF>
</ECUC-REFERENCE-DEF>
</REFERENCES>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
<ECUC-MODULE-DEF>
<SHORT-NAME>CanDrv</SHORT-NAME>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>CanGeneral</SHORT-NAME>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
</ELEMENTS>
</AR-PACKAGE>
</AR-PACKAGES>
</AR-PACKAGE>
Example 4.2
<AR-PACKAGE>
<SHORT-NAME>VendorX</SHORT-NAME>
<ELEMENTS>
<ECUC-MODULE-DEF>
<SHORT-NAME>CanIf</SHORT-NAME>
<REFINED-MODULE-DEF-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EcucDefs/
CanIf</REFINED-MODULE-DEF-REF>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>CanIfDriver</SHORT-NAME>
<REFERENCES>
<ECUC-REFERENCE-DEF>
<SHORT-NAME>CanIfDriverRef</SHORT-NAME>
<DESTINATION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/
AUTOSAR/EcucDefs/CanDrv/CanGeneral</DESTINATION-REF>
</ECUC-REFERENCE-DEF>
<ECUC-REFERENCE-DEF>
<SHORT-NAME>CanIfDrvTrcvRef</SHORT-NAME>
<DESTINATION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/
VendorY/CanDrv/CanDrvTrcvChannel</DESTINATION-REF>
</ECUC-REFERENCE-DEF>
</REFERENCES>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
</ELEMENTS>
</AR-PACKAGE>
In Example 4.3 the VSMD of a CanIf implementation is shown. The implicitly refined
reference CanIfDriverRef still has the DESTINATION-REF in the VSMD pointing to
the standardized AUTOSAR short-name path.
Additionally the pure vendor specific reference CanIfTrcvRef has been introduced
which points to the vendor specific container CanDrvTrcvContainer using the
DESTINATION-REF with a fully qualified vendor specific short-name path.
Example 4.3
<AR-PACKAGE>
<SHORT-NAME>VendorY</SHORT-NAME>
<ELEMENTS>
<ECUC-MODULE-DEF>
<SHORT-NAME>CanDrv</SHORT-NAME>
<REFINED-MODULE-DEF-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EcucDefs/
CanDrv</REFINED-MODULE-DEF-REF>
<CONTAINERS>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>CanGeneral</SHORT-NAME>
</ECUC-PARAM-CONF-CONTAINER-DEF>
<ECUC-PARAM-CONF-CONTAINER-DEF>
<SHORT-NAME>CanTrcvChannel</SHORT-NAME>
</ECUC-PARAM-CONF-CONTAINER-DEF>
</CONTAINERS>
</ECUC-MODULE-DEF>
</ELEMENTS>
</AR-PACKAGE>
STMD counterpart. In this case the vendor specific short-name path (e.g. /Ven-
dorX/Can) shall not be used. Example 4.4 shows a DESTINATION-REF from the
CanIf module provided from VendorX to the CanDrv module provided by VendorY.
The DESTINATION-REF content is not changed from "/AUTOSAR/EcucDefs/..."
in the VSMD.c()
• [TPS_ECUC_06046] Vendor specific reference definition with no counter-
part in the STMD dA pure vendor specific reference definition (which has no
counterpart in the STMD) can refer either
– to a standardized container (has a counterpart in the STMD) or
– to a vendor specific container.
In either case it is possible to use the fully qualified vendor specific short-name
path for the DESTINATION-REF. Only for the first option (reference to standard-
ized container) it is alternatively possible to use the standardized AUTOSAR
short-name path.c()
Example 4.4
</ECUC-MODULE-DEF>
</ELEMENTS>
</AR-PACKAGE>
</AR-PACKAGES>
</AR-PACKAGE>
or the max value equals inf in the StMD the min/max values in the VSMD shall
be replaced with the actually supported min/max values for this implementation.c
()
• [TPS_ECUC_01009] Calculation of derived parameters in the StMD may
change in the VSMD dFor derived parameters defined in the StMD, the values
of the calculationFormula and calculationLanguage may change in the
VSMD.c()
• [TPS_ECUC_01011] Vendor specific choices in EcucChoiceContain-
erDefs dAdditional vendor specific choices (i.e. aggregated EcucParam-
ConfContainerDefs) may be added to EcucChoiceContainerDefs in the
VSMD.c(RS_ECUC_00002)
• [TPS_ECUC_01013] Vendor specific destinations in EcucChoiceRef-
erenceDefs dAdditional vendor specific references may be added for Ecuc-
ChoiceReferenceDefs in the VSMD.c(RS_ECUC_00002)
• [TPS_ECUC_01014] Addition of vendor specific parameter definitions, con-
tainer definitions and references dAdditional vendor specific parameter defini-
tions, container definitions and references shall be added to the VSMD according
to the alphabetical order.c(RS_ECUC_00002)
• [TPS_ECUC_01015] Origin attribute in vendor specific elements dThe ori-
gin attribute of vendor specific additional elements shall contain the name of the
vendor that defines the element.c(RS_ECUC_00002)
• [TPS_ECUC_02084] Addition of vendor specific EcucEnumerationLiter-
alDefs to an EcucEnumerationParamDef from the StMD dFor an EcucEnu-
merationParamDef from the StMD there can be additional EcucEnumera-
tionLiteralDefs added in the VSMD if the scope of the EcucEnumera-
tionParamDef is local.c()
• [TPS_ECUC_05002] Creation of VSMD from the StMD dInduce VSMD into the
StMD in a simplified manner, so that the configuration can be carried out without
any disarray.c(RS_ECUC_00002)
• [TPS_ECUC_05003] desc field of parameters in VSMD dThe desc in VSMD
can be used to specify detailed information about the respective parameter.c
(RS_ECUC_00002)
• [TPS_ECUC_02134] requiresIndex setting in the VSMD dThe re-
quiresIndex setting may be changed in the VSMD.c()
• [TPS_ECUC_02137] EcucValidationConditions from the StMD shall be
taken over to the VSMD. dIf the StMD defines any ecucValidationConds
they shall be taken to the VSMD.c()
1 5
Param A Param A
a=8
0..1 0..0
2 Param B 6
b=15
1..1
Param B
Container Container
1..1 3 7
Param C
c=16
0..255
Container
Param C 4 Param D
0..* c=8
1..1 8
d=2
9
e=5
Figure 4.3: Relation between standardized module definition and vendor specific module
definition
Example 4.5
<ECUC-INTEGER-PARAM-DEF>
<SHORT-NAME>ClockRate</SHORT-NAME>
<ORIGIN>AUTOSAR_ECUC</ORIGIN>
</ECUC-INTEGER-PARAM-DEF>
<ECUC-BOOLEAN-PARAM-DEF>
<SHORT-NAME>VendorExtensionEnabled</SHORT-NAME>
<ORIGIN>VendorXYZ_v1.3</ORIGIN>
</ECUC-BOOLEAN-PARAM-DEF>
Example 4.6
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/VendorXYZ/Mcu/McuGeneral/
ClockRate</DEFINITION-REF>
<VALUE>123</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF">/VendorXYZ/Mcu/McuGeneral/
VendorExtensionEnabled</DEFINITION-REF>
<VALUE>1</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
In case of a CDD module the configuration parameters for the VSMD of CDD do not
specify any configuration class. It is up to the implementor of the specific CDD to de-
fine the configuration class for all configuration parameters - standardized and vendor
specific ones.
«atpVariation,atpSplitable»
+ecucValue 0..*
ARElement ARElement
AtpBlueprint EcucModuleConfigurationValues
AtpBlueprintable +definition
EcucDefinitionElement + ecucDefEdition: RevisionLabelString [0..1]
0..1
EcucModuleDef + implementationConfigVariant: EcucConfigurationVariantEnum [0..1]
+ postBuildVariantUsed: Boolean [0..1]
+ apiServicePrefix: CIdentifier [0..1]
+ postBuildVariantSupport: Boolean [0..1]
+ supportedConfigVariant: EcucConfigurationVariantEnum [0..*]
+vendorSpecificModuleDef 0..*
+moduleDescription 0..1
Implementation
BswImplementation
.c
Configure Generate RTE
RTE RTE Code
.h
AUTOSAR AUTOSAR
RTE
RTE RTE
Header
Configuration Generator
Editor
.c
Configure Generate COM
COM COM Configuration
.XML Code
ECU
Configuration
.h
Values
AUTOSAR AUTOSAR
COM
COM COM
Configuration
Configuration Generator
Header
Editor
.c
Configure Generate OS OS
OS Configuration
Code
.h
AUTOSAR AUTOSAR
OS
OS OS
Configuration
Configuration Generator
Header
Editor
In the custom editors approach as shown in figure A.1, each BSW module is delivered
bundled with a custom configuration editor and a generator (E.g. in figure A.1 the
AUTOSAR RTE Configuration Editor and AUTOSAR RTE Generator).
These tools can be optimized to the particular task of configuring one BSW module and
would likely be quite powerful. The complex dependencies between the BSW module
configuration and other configuration items in the ECU Configuration Value de-
scription could be expressed and supported in the tool.
Each vendor of a BSW module would need to provide a tool. System and ECU engi-
neers would require a large number of tools to deal with the range of BSW modules.
Each tool would probably have an individual look and feel and this could increase the
training and experience required to become proficient.
.c
.XML .h
Configuration
DIO
Parameter
Configuration
Definition
Header
for DIO AUTOSAR
Generic
Generator
.c
Configure Generate SPI
SPI SPI Configuration
AUTOSAR
Generic
.XML Code
Configuration
Editor ECU
.XML Configuration .h
Values
Configuration SPI
Parameter Configuration
Definition Header
for ADC
.c
Configure Generate EEPROM
EEPROM EEPROM Configuration
Code
.XML .h
AUTOSAR
Configuration EEPROM
EEPROM
Parameter Configuration
Generator
Definition Header
for
Standardized API
EcuC1
COM Configuration
Plug-In
The tool framework as shown in figure A.3 is a cross between custom tools and generic
tools where dedicated configuration steps (OS, COM, MCAL, etc.) are integrated as
plug-ins into the common ECU Configuration framework.
The heart of the tool would be a framework that provides certain core services such
as importing and exporting data from standard file formats, maintaining standard in-
ternal data structures and providing an HMI to the user. This ensures that the ECU
Configuration Value description is read, interpreted and written in a defined
way.
The frame could also monitor and control the user / project work flow. It provides a low
initial tooling and training investment. The power of the approach would be the ability
to add plug-in modules that extend the core functionality.
These would allow very sophisticated features, potentially dedicated to one BSW mod-
ule, to be added by individual suppliers. Additionally, it would be possible to add generic
plug-ins that addressed a specific aspect of configuration across all BSW modules.
This approach relies upon a standard framework: multiple framework standards could
lead to high tool costs.
An example of this kind of tool is the LabVIEW test and measurement tool from National
Instruments and the Eclipse framework.
As stated before, the ECU Configuration Value description is the only con-
figuration source that stores the configuration parameters for all modules of an
AUTOSAR based ECU.
However, for several modules such as OS, existing configuration languages have al-
ready been established. Those languages probably will in future still be used for
non-AUTOSAR systems. Thus, modules that are used both for AUTOSAR and non-
AUTOSAR systems shall support different configuration languages in parallel.
This can be implemented in different ways, as shown in figure A.4.
AUTOSAR OSEK
OS to OS
OIL Generator
Rew riter
.XML .c
OIL file Generate
Extract OIL
ECU OSEK OIL
based OS OS
Configuration {xor}
Configuration
Values
Code
.h
Generate OS
OS
Configuration
Header
AUTOSAR
OS
Generator
In a fully AUTOSAR based approach, the generator reads in the ECU Configura-
tion Value Description and output the relevant source code directly in one step,
supported by a AUTOSAR OS Generator in the example given.
To support reuse of existing generator tools, this single step can be split into two
steps. Then the first activity is to extract all OS configuration information from
the ECU Configuration Value description using an AUTOSAR OS to OIL
Rewriter and to store it in the format used by the legacy tools (OIL file in the
example chosen).
The existing OSEK OS Generator may then read the intermediate format to gener-
ate the code. However, the intermediate format shall not be changed by any legacy
configuration tools, since those changes would possibly make the overall configuration
inconsistent, and since changes would be lost with the next generation of the interme-
diate format.
[TPS_ECUC_01025] Generate and extract activities are fully automatic dThus,
none of the activities (extract, generate) shall include any engineering step with deci-
sions taken by an engineer. They are fully automatic, since all input driving these steps
is included in the ECU Configuration Value Description.c()
To enable the extension of the existing ECU Extract towards a complete soft-
ware system in the ECU Configuration, the aggregation of SwComponentPro-
totype and SwConnector by CompositionSwComponentType is stereotyped
atpSplitable.
This is shown in figure B.2. Making these aggregations atpSplitable allows
the addition of AUTOSAR service component prototypes and connector prototypes to
the CompositionSwComponentType contained in the ECU extract during the ECU
integration without changing the artifacts which had been delivered as ECU extract.
ARElement
EcucValueCollection
+ecuExtract 0..1
ARElement
AtpStructureElement
System
«atpVariation,atpSplitable»
+rootSoftwareComposition 0..1
AtpPrototype
Identifiable
RootSwCompositionPrototype
«isOfType»
1
{redefines
+softwareComposition
atpType}
SwComponentType
CompositionSwComponentType
«atpVariation,atpSplitable» «atpVariation,atpSplitable»
+component 0..* +connector 0..*
AtpPrototype AtpStructureElement
SwComponentPrototype SwConnector
1
The needs of the Application SW-Components are defined in the SW-Component description in the
ServiceNeeds section.
C Glossary
Artifact This is a Work Product Definition that provides a description and definition for
tangible work product types. Artifacts may be composed of other artifacts ([15]).
At a high level, an artifact is represented as a single conceptual file.
AUTOSAR Tool This is a software tool which supports one or more tasks defined as
AUTOSAR tasks in the methodology. Depending on the supported tasks, an
AUTOSAR tool can act as an authoring tool, a converter tool, a processor tool or
as a combination of those (see separate definitions).
AUTOSAR Authoring Tool An AUTOSAR Tool used to create and modify AUTOSAR
XML Descriptions. Example: System Description Editor.
AUTOSAR Converter Tool An AUTOSAR Tool used to create AUTOSAR XML files by
converting information from other AUTOSAR XML files. Example: ECU Flattener
AUTOSAR Definition This is the definition of parameters which can have values. One
could say that the parameter values are Instances of the definitions. But in the
meta model hierarchy of AUTOSAR, definitions are also instances of the meta
model and therefore considered as a description. Examples for AUTOSAR def-
initions are: EcucParameterDef, PostBuildVariantCriterion, SwSys-
temconst.
AUTOSAR XML Description In AUTOSAR this means "filled Template". In fact an
AUTOSAR XML description is the XML representation of an AUTOSAR model.
The AUTOSAR XML description can consist of several files. Each individual file
represents an AUTOSAR partial model and shall validate successfully against the
AUTOSAR XML schema.
AUTOSAR Meta-Model This is an UML2.0 model that defines the language for de-
scribing AUTOSAR systems. The AUTOSAR meta-model is an UML represen-
tation of the AUTOSAR templates. UML2.0 class diagrams are used to describe
the attributes and their interrelationships. Stereotypes, UML tags and OCL ex-
pressions (object constraint language) are used for defining specific semantics
and constraints.
AUTOSAR Meta-Model Tool The AUTOSAR Meta-Model Tool is the tool that gener-
ates different views (class tables, list of constraints, diagrams, XML Schema etc.)
on the AUTOSAR meta-model.
AUTOSAR Model This is a representation of an AUTOSAR product. The AUTOSAR
model represents aspects suitable to the intended use according to the
AUTOSAR methodology.
Strictly speaking, this is an instance of the AUTOSAR meta-model. The infor-
mation contained in the AUTOSAR model can be anything that is representable
according to the AUTOSAR meta-model.
Profile Authoring Support Data Data that is used for efficient authoring of a profile.
E.g. list of referable constraints, meta-classes, meta-attributes or other reusable
model assets (blueprints)
Profile Authoring Tool A specialized AUTOSAR Tool which focuses on the authoring
of profiles for data exchange points. It e.g. provides support for the creation of
profiles from scratch, modification of existing profiles or composition of existing
profiles.
Profile Compatibility Checker Tool A specialized AUTOSAR Tool which focuses on
checking the compatibility of profiles for data exchange. Note that this compat-
ibility check includes manual compatibility checks by engineers and automated
assistance using more formal algorithms.
Profile Consistency Checker Tool A specialized AUTOSAR Tool which focuses on
checking the consistency of profiles.
Property A property is a structural feature of an object. As an example a “connector”
has the properties “receive port” and “send port”
Properties are made variant by the atpVariation.
Prototype This is the implementation of a role of a type within the definition of another
type. In other words a type may contain Prototypes that in turn are typed by
"Types". Each one of these prototypes becomes an instance when this type is
instantiated.
Type A type provides features that can appear in various roles of this type.
Value This is a particular value assigned to a “Definition”.
Variability Variability of a system is its quality to describe a set of variants. These
variants are characterized by variant specific property settings and / or selections.
As an example, such a system property selection manifests itself in a particular
“receive port” for a connection.
This is implemented using the atpVariation.
Variant A system variant is a concrete realization of a system, so that all its proper-
ties have been set respectively selected. The software system has no variability
anymore with respect to the binding time.
This is implemented using EvaluatedVariantSet.
Variation Binding A variant is the result of a variation binding process that resolves
the variability of the system by assigning particular values/selections to all the
system’s properties.
This is implemented by VariationPoint.
Variation Binding Time The variation binding time determines the step in the method-
ology at which the variability given by a set of variable properties is resolved.
D Change History
In the course of preparing AUTOSAR Release 4.0 some of the existing meta-model
elements have been renamed for a better clarity and consistency with respect to other
meta-mode elements.
Number Heading
[constr_3022] EcucModuleDef category restriction
[constr_3023] Usage of apiServicePrefix
Id Heading
Id Heading
[TPS_ECUC_01021] Values derived from the ECU extract of the system configuration.
[TPS_ECUC_02016] Configuration class of parameter and reference definitions
[TPS_ECUC_02019] Configuration class “PostBuild”
[TPS_ECUC_02056] Derivation of information from Link parameters
[TPS_ECUC_02057] Derivation of information from PostBuild parameters
[TPS_ECUC_02058] Derivation of information from PreCompile parameters
[TPS_ECUC_02097] Supported configuration variants in the StMD and the VSMD
[TPS_ECUC_02098] StMD Configuration variant "VariantPreCompile"
[TPS_ECUC_02099] StMD Configuration variant "VariantLinkTime"
[TPS_ECUC_02100] StMD Configuration variant "VariantPostBuild"
[TPS_ECUC_02101] EcucAbstractConfigurationClass usage
[TPS_ECUC_02102] Configuration class selection for parameters and references for supported
configuration variants
[TPS_ECUC_02139] Definition of configuration classes for all CDD configuration parameters and
references
[TPS_ECUC_06001] shortName of a VSMD module
[TPS_ECUC_06008] lowerMultiplicity and upperMultiplicity of elements in the VSMD
[TPS_ECUC_06046] Vendor specific reference definition with no counterpart in the STMD
Id Heading
[TPS_ECUC_02055] Derivation of information from AUTOSAR Templates
[TPS_ECUC_02076] “NOAffect” affection
[TPS_ECUC_02077] “PCAffectsLT” affection
[TPS_ECUC_02078] “PCAffectsPB” affection
[TPS_ECUC_02079] “PCAffectsLTAndPB” affection
[TPS_ECUC_02080] “LTAffectsPB” affection
[TPS_ECUC_02081] Parameters or references which are affected may be referenced with the
affected reference
[TPS_ECUC_02091] multipleConfigurationContainer approach
[TPS_ECUC_02092] multipleConfigurationContainer allows several EcucContainer-
Value elements in the ECU Configuration
[TPS_ECUC_02104] Valid configuration set names
[TPS_ECUC_02105] Uniqueness of configuration set names
[TPS_ECUC_02133] upperMultiplicity of a multipleConfigurationContainer
[TPS_ECUC_02140] Mandatory configuration of CddConfigSet for post build configured CDD
[TPS_ECUC_03042] Definition of multiple configuration sets
[TPS_ECUC_03043] Occurrence of multiple configuration containers in the ECUC Value descrip-
tion
[TPS_ECUC_03044] Name of the configuration set
[TPS_ECUC_03045] Parameter value description structure underneath the multiple configuration
container
[TPS_ECUC_03046] Values of pre-compile time and link time parameters in different configuration
sets
[TPS_ECUC_03047] EcucReferenceValue in multiple configuration sets
[TPS_ECUC_06050] supportedConfigVariants in the VSMD in case VariantPostBuild is
supported in the StMD
[TPS_ECUC_06051] ImplementationConfigClass of an EcucParameterDef or EcucAbstrac-
tReferenceDef in VSMD
[TPS_ECUC_06052] Supported configuration variants in the VSMD
[TPS_ECUC_06053] VSMD Configuration variant “VariantPreCompile”
[TPS_ECUC_06054] VSMD Configuration variant “VariantLinkTime”
[TPS_ECUC_06055] VSMD Configuration variant “VariantPostBuildLoadable”
[TPS_ECUC_06056] VSMD Configuration variant “VariantPostBuildSelectable”
[TPS_ECUC_08001] Configuration class of parameters and references within
postBuildChangeable containers.
Id Heading
[constr_3119] Necessary content of EcucDestinationUriDefs that are referenced by an Ecuc-
ContainerDef
[constr_3120] Applicable attributes when destinationUriNestingContract is set to tar-
getContainer
[constr_5015] Multiplicity of multiplicityConfigClass
[constr_5506] Applicability of postBuildVariantMultiplicity attribute
[constr_5507] Value of EcucContainerDef.postBuildVariantMultiplicity if post-
BuildVariantSupport is set to false
[constr_5508] Applicability of postBuildVariantMultiplicity attribute
[constr_5509] Value of postBuildVariantMultiplicity if postBuildVariantSupport is
set to false
[constr_5510] Value of postBuildVariantValue if postBuildVariantSupport is set to
false
[constr_5512] postBuildVariantValue attribute of symbolicNameValue parameters
[constr_5514] Applicability of the multiplicityConfigClass attribute
[constr_5520] valueConfigClass attribute of symbolicNameValue parameters
[constr_5521] multiplicityConfigClass attribute of symbolicNameValue parameters
[constr_5522] postBuildVariantMultiplicity attribute of symbolicNameValue parame-
ters
[constr_5523] Allowed configClasses for paired configVariants
Id Heading
[constr_3091] Multiplicity of valueConfigClass
[constr_3092] Usage of configVariant and configClass attributes
[constr_5500] Applicability of the multiplicityConfigClass attribute
[constr_5502] Introduction of new EcucParameterValues of type EcucFunctionNameDef at
post-build time
[constr_5504] Removing an instance of the EcucContainerDef at post-build time
Id Heading
Id Heading
[TPS_ECUC_08053] AUTOSAR release version in VSMD
[TPS_ECUC_08054] Semantic of an optional parameter that is not present in the ECU Configura-
tion Value description
Id Heading
[TPS_ECUC_01001] lowerMultiplicity and upperMultiplicity of modules in the VSMD
[TPS_ECUC_02072] Signed EcucIntegerParamDef value range
[TPS_ECUC_02108] Rule for the creation of #define symbols in the header file for parameters
with the symbolicNameValue set to TRUE
[TPS_ECUC_03027] EcucReferenceValue provides the mechanism to reference model ele-
ments that are Referrable
[TPS_ECUC_03033] EcucInstanceReferenceValue provides the mechanism to reference an
instance of a prototype
[TPS_ECUC_03034] Each parameter in an ECU Configuration Value description shall have a
value
[TPS_ECUC_06008] lowerMultiplicity and upperMultiplicity of elements in the VSMD
none
Id Heading
[constr_3200] Restriction on values of EcucDefinitionElement.relatedTraceItem in the
VSMD
[constr_3217] Symbolic name reference shall point only to containers with a symbolic name value
defined
Id Heading
[constr_3022] EcucModuleDef category restriction
[constr_3023] Usage of apiServicePrefix
[constr_5505] Configuration class of the elements of the EcucQueryExpression
[constr_5506] Applicability of postBuildVariantMultiplicity attribute
[constr_5507] Value of EcucContainerDef.postBuildVariantMultiplicity if post-
BuildVariantSupport is set to false
[constr_5509] Value of postBuildVariantMultiplicity if postBuildVariantSupport is
set to false
[constr_5510] Value of postBuildVariantValue if postBuildVariantSupport is set to
false
none
Id Heading
[TPS_ECUC_02145] Attribute requiresSymbolicNameValue
[TPS_ECUC_02146] Symbolic Name Reference properties
[TPS_ECUC_02147] Introducing new post build variants at post build configuration time
[TPS_ECUC_06082] Definition of interval type for EcucFloatParamDef.min and EcucFloat-
ParamDef.max
[TPS_ECUC_06083] Attribute EcucFloatParamDef.min.intervalType is not defined
[TPS_ECUC_06084] Attribute EcucFloatParamDef.max.intervalType is not defined
[TPS_ECUC_06085] Ordering of MetaDataItems of an MetaDataType
[TPS_ECUC_06086] Relevance of the order of MetaDataItems of an MetaDataType
Id Heading
[TPS_ECUC_08042] The value of the EcucModuleDef.postBuildVariantSupport attribute
in the VSMD in case it is set to true in the StMD
none
Id Heading
[constr_3228] EcucSymbolicNameReferenceDef presupposes requiresSymbolic-
NameValue set to true
[constr_3233] EcucModuleDef that relies on EcucCommonAttributes with valueConfig-
Class set to Link/PostBuild of another EcucModuleDef
[constr_3234] EcucModuleDef that relies on EcucCommonAttributes with multiplicity-
ConfigClass set to Link/PostBuild of another EcucModuleDef
[constr_3235] EcucModuleDef that relies on EcucContainerDefs with multiplicityCon-
figClass set to Link/PostBuild of another EcucModuleDef
[constr_3236] EcucModuleDef that relies on EcucCommonAttributes with postBuildVari-
antValue set to true of another EcucModuleDef
[constr_3237] EcucModuleDef that relies on EcucCommonAttributes with postBuildVari-
antMultiplicity set to true of another EcucModuleDef
[constr_3238] EcucModuleDef that relies on EcucContainerDef with postBuildVariant-
Multiplicity set to true of another EcucModuleDef
[constr_3307] ShortNames of PredefinedVariants referenced by EcucPostBuildVari-
antRefs
Id Heading
[constr_3217] Symbolic name reference shall point only to containers with a symbolic name value
defined
none
Number Heading
[TPS_ECUC_06087] INF and -INF allowed as defaultValue in EcucFloatParamDef
Table D.35: Added Traceables in 4.3.1
Number Heading
[TPS_ECUC_06074] Invalid configuration due to symbolic name values
Table D.36: Changed Traceables in 4.3.1
none
none
none
none
Number Heading
[TPS_ECUC_02148] Replacement for EcucSymbolicNameReferenceDef
Table D.37: Added Traceables in 4.4.0
Number Heading
[TPS_ECUC_02063] Parameters with symbolicNameValue = true
[TPS_ECUC_02147] Introducing new post build variants at post build configuration time
EcucReferenceValue describes EcucReferenceDefs, Ecuc-
[TPS_ECUC_03028] ChoiceReferenceDefs, and EcucForeignReferenceDefs in the Ecu
Configuration Value description
The shortName of the referenced container provides the symbolic name in
[TPS_ECUC_03037]
the implementation
Parameters without parameter definitions in the Ecuc Parameter Value de-
[TPS_ECUC_06012]
scription
Table D.38: Changed Traceables in 4.4.0
Number Heading
[TPS_ECUC_02032] EcucSymbolicNameReferenceDef properties
[TPS_ECUC_02145] Attribute requiresSymbolicNameValue
EcucSymbolicNameReferenceDef translates to a EcucReference-
[TPS_ECUC_03036]
Value in the ECU Configuration Value description
Table D.39: Deleted Traceables in 4.4.0
Number Heading
[constr_3449] Impact of postBuildVariantUsed value set to FALSE
[constr_3450] postBuildVariantUsed value in case of post build VariationPoints
EcucModuleConfigurationValues.postBuildVariantUsed value setting re-
[constr_3451]
striction in case postBuildVariantSupport is set to TRUE
EcucModuleConfigurationValues.postBuildVariantUsed value setting re-
[constr_3452]
striction in case postBuildVariantSupport is set to FALSE
Table D.40: Added Constraints in 4.4.0
none
Number Heading
EcucSymbolicNameReferenceDef presupposes requiresSymbolic-
[constr_3228]
NameValue set to true
Table D.41: Deleted Constraints in 4.4.0
Number Heading
Specification of the destinationType format in a EcucForeignRefer-
[TPS_ECUC_06088]
enceDef
Table D.42: Added Traceables in 19-11
Number Heading
[TPS_ECUC_01001] lowerMultiplicity and upperMultiplicity of modules in the VSMD
[TPS_ECUC_01005] Origin attribute of parameters in the VSMD that are taken over from the StMD
[TPS_ECUC_01007] min, max values of parameters in the VSMD
[TPS_ECUC_01025] Generate and extract activities are fully automatic
[TPS_ECUC_01035] UUID of elements in the VSMD that are taken over from the StMD
[TPS_ECUC_04004] Iterative development of the ECU Configuration Value description
Existence of a parameter in the Ecuc Parameter Value description in case the
[TPS_ECUC_06010]
lowerMultiplicity of the parameter definition is bigger than zero
[TPS_ECUC_06031] Interaction of Complex Driver with standardized AUTOSAR BSW modules
[TPS_ECUC_06032] Min and max values in EcucIntegerParamDef
[TPS_ECUC_06033] Min and max values in EcucFloatParamDef
Table D.43: Changed Traceables in 19-11
Number Heading
[TPS_ECUC_02148] Replacement for EcucSymbolicNameReferenceDef
[TPS_ECUC_06085] Ordering of MetaDataItems of an MetaDataType
Table D.44: Deleted Traceables in 19-11
Number Heading
[constr_5059] Ordering of MetaDataItems of a MetaDataType
Table D.45: Added Constraints in 19-11
none
none
Number Heading
[TPS_ECUC_02149] Existence of EcucDefinitionCollection.module
[TPS_ECUC_02150] Existence of EcucModuleDef.container
[TPS_ECUC_02151] Existence of EcucValueCollection.ecucValue
[TPS_ECUC_02152] EcucModuleConfigurationValues.container
Table D.46: Added Traceables in R20-11
none
Number Heading
[TPS_ECUC_02088] Configuration Editor shall display the content of the longName to users
ECU Configuration Editor shall be able to merge ECU Configuration
[TPS_ECUC_04002]
Value descriptions
[TPS_ECUC_04003] ECU Configuration Editor shall be able to work with subsets of parameters
ECU Configuration Editor shall be able to generate and import EcucModule-
[TPS_ECUC_04005]
ConfigurationValues
[TPS_ECUC_06071] ECU Configuration Editor shall be able to read parameter values in any order
The ECU Configuration Editor shall be able to work with arbitrary package
[TPS_ECUC_06073]
structures
Table D.47: Deleted Traceables in R20-11
Number Heading
[constr_3570] EcucDefinitionElement.lowerMultiplicity always required
[constr_3571] EcucCommonAttributes.origin always required
[constr_3572] EcucParameterDef.symbolicNameValue always required
[constr_3573] EcucAbstractConfigurationClass.configClass always required
[constr_3574] EcucAbstractConfigurationClass.configVariant always required
[constr_3575] EcucEnumerationLiteralDef.origin always required
[constr_3576] EcucInstanceReferenceDef.destinationContext always required
[constr_3577] EcucInstanceReferenceDef.destinationType always required
[constr_3578] EcucForeignReferenceDef.destinationType always required
[constr_3579] EcucReferenceDef.destination always required
[constr_3580] EcucUriReferenceDef.destinationUri always required
[constr_3581] EcucDestinationUriDefSet.destinationUriDef always required
[constr_3582] EcucDestinationUriDef.destinationUriPolicy always required
EcucDestinationUriPolicy.destinationUriNestingContract always re-
[constr_3583]
quired
[constr_3584] EcucQuery.ecucQueryExpression always required
[constr_3585] EcucConditionFormula.ecucQuery always required
[constr_3586] EcucConditionFormula.ecucQueryString always required
[constr_3587] EcucValidationCondition.validationFormula always required
[constr_3588] EcucValueCollection.ecuExtract always required
[constr_3589] EcucModuleConfigurationValues.ecucDefEdition always required
EcucModuleConfigurationValues.implementationConfigVariant al-
[constr_3590]
ways required
5
4
Number Heading
[constr_3591] EcucModuleConfigurationValues.definition always required
[constr_3592] EcucContainerValue.definition always required
[constr_3593] EcucParameterValue.definition always required
[constr_3594] EcucNumericalParamValue.value always required
[constr_3595] EcucTextualParamValue.value always required
[constr_3596] EcucAddInfoParamValue.value always required
[constr_3597] EcucAbstractReferenceValue.definition always required
[constr_3598] EcucInstanceReferenceValue.value always required
[constr_3599] EcucReferenceValue.value always required
[constr_5108] CddModuleId range restriction
Table D.48: Added Constraints in R20-11
none
none
none
Number Heading
[TPS_ECUC_06069] Sorting criteria for Parameters on the Values side
Table D.49: Changed Traceables in R21-11
Number Heading
[TPS_ECUC_02006] Container definition
[TPS_ECUC_02043] Each EcucContainerDef is Identifiable
Table D.50: Deleted Traceables in R21-11
none
Number Heading
[constr_5520] valueConfigClass attribute of symbolicNameValue parameters
Table D.51: Changed Constraints in R21-11
none
Number Heading
Multiple aggregation of container trees that include references to other
[TPS_ECUC_06089]
subContainers in the same aggregated container tree
Table D.52: Added Traceables in R22-11
Number Heading
Expression of optionality of containers, parameters and references in the
[TPS_ECUC_02009]
Ecuc Parameter Definition UML model
Rule for the creation of #define symbols in the header file for parameters
[TPS_ECUC_02108]
with the symbolicNameValue set to TRUE
[TPS_ECUC_06037] apiServicePrefix attribute for Complex Driver module and Xfrm module
Table D.53: Changed Traceables in R22-11
Number Heading
Existence of upperMultiplicityInfinite and upperMultiplicity
[TPS_ECUC_06017]
is mutually exclusive
Table D.54: Deleted Traceables in R22-11
Number Heading
Existence of upperMultiplicityInfinite and upperMultiplicity is
[constr_5325]
mutually exclusive
EcucDefinitionElement.upperMultiplicity or
[constr_5342]
EcucDefinitionElement.upperMultiplicityInfinite always required
Number Heading
[constr_3023] Usage of apiServicePrefix
Table D.56: Changed Constraints in R22-11
none
Class ARPackage
Package M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::ARPackage
Note AUTOSAR package, allowing to create top level packages to structure the contained ARElements.
ARPackages are open sets. This means that in a file based description system multiple files can be used
to partially describe the contents of a package.
This is an extended version of MSR’s SW-SYSTEM.
Base ARObject, AtpBlueprint, AtpBlueprintable, CollectableElement, Identifiable, MultilanguageReferrable,
Referrable
Aggregated by ARPackage.arPackage, AUTOSAR.arPackage
Attribute Type Mult. Kind Note
5
4
Class ARPackage
arPackage ARPackage * aggr This represents a sub package within an ARPackage,
thus allowing for an unlimited package hierarchy.
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=arPackage.shortName, arPackage.variation
Point.shortLabel
vh.latestBindingTime=blueprintDerivationTime
xml.sequenceOffset=30
element PackageableElement * aggr Elements that are part of this package
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=element.shortName, element.variation
Point.shortLabel
vh.latestBindingTime=systemDesignTime
xml.sequenceOffset=20
referenceBase ReferenceBase * aggr This denotes the reference bases for the package. This is
the basis for all relative references within the package.
The base needs to be selected according to the base
attribute within the references.
Stereotypes: atpSplitable
Tags:
atp.Splitkey=referenceBase.shortLabel
xml.sequenceOffset=10
Class AUTOSAR
Package M2::AUTOSARTemplates::AutosarTopLevelStructure
Note Root element of an AUTOSAR description, also the root element in corresponding XML documents.
Tags:xml.globalElement=true
Base ARObject
Attribute Type Mult. Kind Note
adminData AdminData 0..1 aggr This represents the administrative data of an Autosar file.
Tags:xml.sequenceOffset=10
arPackage ARPackage * aggr This is the top level package in an AUTOSAR model.
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=arPackage.shortName, arPackage.variation
Point.shortLabel
vh.latestBindingTime=blueprintDerivationTime
xml.sequenceOffset=30
fileInfo FileInfoComment 0..1 aggr This represents a possibility to provide a structured
Comment comment in an AUTOSAR file.
Stereotypes: atpStructuredComment
Tags:
xml.roleElement=true
xml.sequenceOffset=-10
xml.typeElement=false
introduction DocumentationBlock 0..1 aggr This represents an introduction on the Autosar file. It is
intended for example to represent disclaimers and legal
notes.
Tags:xml.sequenceOffset=20
Class AdminData
Package M2::MSR::AsamHdo::AdminData
Note AdminData represents the ability to express administrative information and custom extensions for an
element. This administration information is to be treated as meta-data such as revision id or state of the
file. There are basically the following kinds of meta-data
• The language and/or used languages.
• Revision information covering e.g. revision number, state, release date, changes. Note that this
information can be given in general as well as related to a particular company.
• Document meta-data specific for a company
Beside that a custom extension of model-data is possible by
• Special data
Base ARObject
Aggregated by AUTOSAR.adminData, Describable.adminData, Identifiable.adminData
Attribute Type Mult. Kind Note
docRevision DocRevision * aggr This allows to denote information about the current
(ordered) revision of the object.
Note that information about previous revisions can also
be logged here. The entries shall be sorted descendant
by date in order to reflect the history. Therefore the most
recent entry representing the current version is denoted
first.
Tags:
xml.roleElement=true
xml.roleWrapperElement=true
xml.sequenceOffset=50
xml.typeElement=false
xml.typeWrapperElement=false
language LEnum 0..1 attr This attribute specifies the master language of the
document or the document fragment. The master
language is the one in which the document is maintained
and from which the other languages are derived from. In
particular in case of inconsistencies, the information in
the master language is priority.
Tags:xml.sequenceOffset=20
sdg Sdg * aggr This property allows to keep special data which is not
represented by the standard model. It can be utilized to
keep e.g. tool specific data.
Stereotypes: atpSplitable
Tags:
atp.Splitkey=sdg
xml.roleElement=true
xml.roleWrapperElement=true
xml.sequenceOffset=60
xml.typeElement=false
xml.typeWrapperElement=false
usedLanguages MultiLanguagePlainText 0..1 aggr This property specifies the languages which are provided
in the document. Therefore it should only be specified in
the top level admin data. For each language provided in
the document there is one entry in MultilanguagePlain
Text. The content of each entry can be used for
illustration of the language. The used language itself
depends on the language attribute in the entry.
Tags:xml.sequenceOffset=30
Class AnyInstanceRef
Package M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::AnyInstanceRef
Note Describes a reference to any instance in an AUTOSAR model. This is the most generic form of an
instance ref. Refer to the superclass notes for more details.
Base ARObject, AtpInstanceRef
Aggregated by Collection.collectedInstance, Collection.sourceInstance, DocumentationContext.feature, EcucInstance
ReferenceValue.value, FlatInstanceDescriptor.ecuExtractReference, FlatInstanceDescriptor.upstream
Reference, RptContainer.byPassPoint, RptHook.rptArHook, ViewMap.firstElementInstance, ViewMap.
secondElementInstance
Attribute Type Mult. Kind Note
base AtpClassifier 1 ref This is the base from which navigation path begins.
Stereotypes: atpDerived
contextElement AtpFeature * ref This is one step in the navigation path specified by the
(ordered) instance ref.
target AtpFeature 1 ref This is the target of the instance ref.
Class AssemblySwConnector
Package M2::AUTOSARTemplates::SWComponentTemplate::Composition
Note AssemblySwConnectors are exclusively used to connect SwComponentPrototypes in the context of a
CompositionSwComponentType.
Base ARObject, AtpClassifier , AtpFeature, AtpStructureElement, Identifiable, MultilanguageReferrable,
Referrable, SwConnector
Aggregated by AtpClassifier .atpFeature, CompositionSwComponentType.connector
Attribute Type Mult. Kind Note
provider AbstractProvidedPort 0..1 iref Instance of providing port.
Prototype
InstanceRef implemented by:PPortInComposition
InstanceRef
requester AbstractRequiredPort 0..1 iref Instance of requiring port.
Prototype
InstanceRef implemented by:RPortInComposition
InstanceRef
Table E.6: AssemblySwConnector
Class BswImplementation
Package M2::AUTOSARTemplates::BswModuleTemplate::BswImplementation
Note Contains the implementation specific information in addition to the generic specification (BswModule
Description and BswBehavior). It is possible to have several different BswImplementations referring to
the same BswBehavior.
Tags:atp.recommendedPackage=BswImplementations
Base ARElement, ARObject, CollectableElement, Identifiable, Implementation, MultilanguageReferrable,
PackageableElement, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
arRelease RevisionLabelString 0..1 attr Version of the AUTOSAR Release on which this
Version implementation is based. The numbering contains three
levels (major, minor, revision) which are defined by
AUTOSAR.
5
4
Class BswImplementation
behavior BswInternalBehavior 0..1 ref The behavior of this implementation.
This relation is made as an association because
• it follows the pattern of the SWCT
• since ARElement cannot be splitted, but we want
supply the implementation later, the Bsw
Implementation is not aggregated in BswBehavior
preconfigured EcucModule * ref Reference to the set of preconfigured (i.e. fixed)
Configuration ConfigurationValues configuration values for this BswImplementation.
If the BswImplementation represents a cluster of several
modules, more than one EcucModuleConfigurationValues
element can be referred (at most one per module),
otherwise at most one such element can be referred.
Tags:xml.roleWrapperElement=true
recommended EcucModule * ref Reference to one or more sets of recommended
Configuration ConfigurationValues configuration values for this module or module cluster.
vendorApiInfix Identifier 0..1 attr In driver modules which can be instantiated several times
on a single ECU, SRS_BSW_00347 requires that the
names of files, APIs, published parameters and memory
allocation keywords are extended by the vendorId and a
vendor specific name. This parameter is used to specify
the vendor specific name. In total, the implementation
specific API name is generated as follows: <Module
Name>_<vendorId>_ <vendorApiInfix>_<API name from
SWS>.
E.g. assuming that the vendorId of the implementer is
123 and the implementer chose a vendorApiInfix of
"v11r456" an API name Can_Write defined in the SWS
will translate to Can_123_v11r456_Write.
This attribute is mandatory for all modules with upper
multiplicity > 1. It shall not be used for modules with
upper multiplicity =1.
See also SWS_BSW_00102.
vendorSpecific EcucModuleDef * ref Reference to
ModuleDef
• the vendor specific EcucModuleDef used in this
BswImplementation if it represents a single
module
• several EcucModuleDefs used in this Bsw
Implementation if it represents a cluster of
modules
• one or no EcucModuleDefs used in this Bsw
Implementation if it represents a library
Tags:xml.roleWrapperElement=true
Primitive CIdentifier
Package M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::PrimitiveTypes
Note This datatype represents a string, that follows the rules of C-identifiers.
Tags:
xml.xsd.customType=C-IDENTIFIER
xml.xsd.pattern=[a-zA-Z_][a-zA-Z0-9_]*
xml.xsd.type=string
5
4
Primitive CIdentifier
Attribute Type Mult. Kind Note
blueprintValue String 1 attr This represents a description that documents how the
value shall be defined when deriving objects from the
blueprint.
Tags:
atp.Status=draft
xml.attribute=true
namePattern String 0..1 attr This attribute represents a pattern which shall be used to
define the value of the identifier if the CIdentifier in
question is part of a blueprint.
For more details refer to TPS_StandardizationTemplate.
Tags:xml.attribute=true
Class CompositionSwComponentType
Package M2::AUTOSARTemplates::SWComponentTemplate::Composition
Note A CompositionSwComponentType aggregates SwComponentPrototypes (that in turn are typed by Sw
ComponentTypes) as well as SwConnectors for primarily connecting SwComponentPrototypes among
each others and towards the surface of the CompositionSwComponentType. By this means, hierarchical
structures of software-components can be created.
Tags:atp.recommendedPackage=SwComponentTypes
Base ARElement, ARObject, AtpBlueprint, AtpBlueprintable, AtpClassifier , AtpType, CollectableElement,
Identifiable, MultilanguageReferrable, PackageableElement, Referrable, SwComponentType
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
component SwComponent * aggr The instantiated components that are part of this
Prototype composition. The aggregation of SwComponentPrototype
is subject to variability with the purpose to support the
conditional existence of a SwComponentPrototype.
Please be aware: if the conditional existence of Sw
ComponentPrototypes is resolved post-build the
deselected SwComponentPrototypes are still contained in
the ECUs build but the instances are inactive in that they
are not scheduled by the RTE.
The aggregation is marked as atpSplitable in order to
allow the addition of service components to the ECU
extract during the ECU integration.
The use case for having 0 components owned by the
CompositionSwComponentType could be to deliver an
empty CompositionSwComponentType to e.g. a supplier
for filling the internal structure.
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=component.shortName, component.variation
Point.shortLabel
vh.latestBindingTime=postBuild
5
4
Class CompositionSwComponentType
connector SwConnector * aggr SwConnectors have the principal ability to establish a
connection among PortPrototypes. They can have many
roles in the context of a CompositionSwComponentType.
Details are refined by subclasses.
The aggregation of SwConnectors is subject to variability
with the purpose to support variant data flow.
The aggregation is marked as atpSplitable in order to
allow the extension of the ECU extract with AssemblySw
Connectors between ApplicationSwComponentTypes and
ServiceSwComponentTypes during the ECU integration.
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=connector.shortName, connector.variation
Point.shortLabel
vh.latestBindingTime=postBuild
constantValue ConstantSpecification * ref Reference to the ConstantSpecificationMapping to be
Mapping MappingSet applied for initValues of PPortComSpecs and RPortCom
Spec.
Stereotypes: atpSplitable
Tags:atp.Splitkey=constantValueMapping
dataType DataTypeMappingSet * ref Reference to the DataTypeMapping to be applied for the
Mapping used ApplicationDataTypes in PortInterfaces.
Background: when developing subsystems it may happen
that ApplicationDataTypes are used on the surface of
CompositionSwComponentTypes. In this case it would be
reasonable to be able to also provide the intended
mapping to the ImplementationDataTypes. However, this
mapping shall be informal and not technically binding for
the implementors mainly because the RTE generator is
not concerned about the CompositionSwComponent
Types.
Rationale: if the mapping of ApplicationDataTypes on the
delegated and inner PortPrototype matches then the
mapping to ImplementationDataTypes is not impacting
compatibility.
Stereotypes: atpSplitable
Tags:atp.Splitkey=dataTypeMapping
instantiation InstantiationRTEEvent * aggr This allows to define instantiation specific properties for
RTEEventProps Props RTE Events, in particular for instance specific scheduling.
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=instantiationRTEEventProps.shortLabel,
instantiationRTEEventProps.variationPoint.shortLabel
vh.latestBindingTime=codeGenerationTime
4
Class Describable (abstract)
Attribute Type Mult. Kind Note
adminData AdminData 0..1 aggr This represents the administrative data for the
describable object.
Stereotypes: atpSplitable
Tags:
atp.Splitkey=adminData
xml.sequenceOffset=-20
category CategoryString 0..1 attr The category is a keyword that specializes the semantics
of the Describable. It affects the expected existence of
attributes and the applicability of constraints.
Tags:xml.sequenceOffset=-50
desc MultiLanguageOverview 0..1 aggr This represents a general but brief (one paragraph)
Paragraph description what the object in question is about. It is only
one paragraph! Desc is intended to be collected into
overview tables. This property helps a human reader to
identify the object in question.
More elaborate documentation, (in particular how the
object is built or used) should go to "introduction".
Tags:xml.sequenceOffset=-60
introduction DocumentationBlock 0..1 aggr This represents more information about how the object in
question is built or is used. Therefore it is a
DocumentationBlock.
Tags:xml.sequenceOffset=-30
Class DocRevision
Package M2::MSR::AsamHdo::AdminData
Note This meta-class represents the ability to maintain information which relates to revision management of
documents or objects.
Base ARObject
Aggregated by AdminData.docRevision
Attribute Type Mult. Kind Note
date DateTime 1 attr This specifies the date and time, when the object in
question was released
Tags:xml.sequenceOffset=80
issuedBy String 0..1 attr This is the name of an individual or an organization who
issued the current revision of the document or document
fragment.
Tags:xml.sequenceOffset=60
modification Modification * aggr This property represents one particular modification in
comparison to its predecessor.
Tags:
xml.roleElement=true
xml.roleWrapperElement=true
xml.sequenceOffset=100
xml.typeElement=false
xml.typeWrapperElement=false
revisionLabel RevisionLabelString 0..1 attr This attribute represents the version number of the object.
Tags:xml.sequenceOffset=20
5
4
Class DocRevision
revisionLabelP1 RevisionLabelString 0..1 attr This attribute represents the version number of the first
predecessor of the object.
Tags:xml.sequenceOffset=30
revisionLabelP2 RevisionLabelString 0..1 attr This attribute represents the version number of the
second predecessor of the object.
This attribute is used if the object is the result of a merge
process in which two branches are merged in to one new
revision.
Tags:xml.sequenceOffset=40
state NameToken 0..1 attr The attribute state represents the current state of the
current file according to the configuration management
plan. It is a NameToken until possible states are
standardized.
Tags:xml.sequenceOffset=50
Class Documentation
Package M2::AUTOSARTemplates::GenericStructure::DocumentationOnM1
Note This meta-class represents the ability to handle a so called standalone documentation. Standalone
means, that such a documentation is not embedded in another ARElement or identifiable object. The
standalone documentation is an entity of its own which denotes its context by reference to other objects
and instances.
Tags:atp.recommendedPackage=Documentations
Base ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, Packageable
Element, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
context DocumentationContext * aggr This is the context of the particular documentation.
documentation PredefinedChapter 0..1 aggr This is the content of the documentation related to the
Content specified contexts.
Tags:xml.sequenceOffset=200
4
Class Frame (abstract)
pduToFrame PduToFrameMapping * aggr A frames layout as a sequence of Pdus.
Mapping
atpVariation: The content of a frame can be variable.
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=pduToFrameMapping.shortName, pduTo
FrameMapping.variationPoint.shortLabel
vh.latestBindingTime=postBuild
Class HwElement
Package M2::AUTOSARTemplates::EcuResourceTemplate
Note This represents the ability to describe Hardware Elements on an instance level. The particular types of
hardware are distinguished by the category. This category determines the applicable attributes. The
possible categories and attributes are defined in HwCategory.
Tags:atp.recommendedPackage=HwElements
Base ARElement, ARObject, CollectableElement, HwDescriptionEntity , Identifiable, MultilanguageReferrable,
PackageableElement, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
5
4
Class HwElement
hwElement HwElementConnector * aggr This represents one particular connection between two
Connection hardware elements.
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=hwElementConnection, hwElement
Connection.variationPoint.shortLabel
vh.latestBindingTime=systemDesignTime
xml.sequenceOffset=110
hwPinGroup HwPinGroup * aggr This aggregation is used to describe the connection
facilities of a hardware element. Note that hardware
element has no pins but only pingroups.
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=hwPinGroup.shortName, hwPin
Group.variationPoint.shortLabel
vh.latestBindingTime=systemDesignTime
xml.sequenceOffset=90
nestedElement HwElement * ref This association is used to establish hierarchies of hw
elements. Note that one particular HwElement can be
target of this association only once. I.e. multiple
instantiation of the same HwElement is not supported (at
any hierarchy level).
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=nestedElement.hwElement, nested
Element.variationPoint.shortLabel
vh.latestBindingTime=systemDesignTime
xml.sequenceOffset=70
4
Class Identifiable (abstract)
4
Assertion, FMFeatureMapCondition, FMFeatureMapElement, FMFeatureRelation, FMFeatureRestriction,
FMFeatureSelection, FlatInstanceDescriptor, FlexrayArTpNode, FlexrayTpConnectionControl, FlexrayTp
Node, FlexrayTpPduPool, FrameTriggering, GeneralParameter, GlobalTimeGateway, GlobalTimeMaster ,
GlobalTimeSlave, HeapUsage, HwAttributeDef, HwAttributeLiteralDef, HwPin, HwPinGroup, IPSecRule,
IPv6ExtHeaderFilterList, ISignalToIPduMapping, ISignalTriggering, IdentCaption, InternalTriggeringPoint,
J1939SharedAddressCluster, J1939TpNode, Keyword, LifeCycleState, LinScheduleTable, LinTpNode,
Linker, MacMulticastGroup, MacSecKayParticipant, McDataInstance, MemorySection, ModeDeclaration,
ModeDeclarationMapping, ModeSwitchPoint, NetworkEndpoint, NmCluster , NmEcu, NmNode, NvBlock
Descriptor, PackageableElement, ParameterAccess, PduActivationRoutingGroup, PduToFrameMapping,
PduTriggering, PerInstanceMemory, PhysicalChannel, PortElementToCommunicationResourceMapping,
PortGroup, PortInterfaceMapping, PossibleErrorReaction, ResourceConsumption, RootSwComposition
Prototype, RptComponent, RptContainer, RptExecutableEntity, RptExecutableEntityEvent, RptExecution
Context, RptProfile, RptServicePoint, RteEventInCompositionSeparation, RteEventInCompositionToOs
TaskProxyMapping, RteEventInSystemSeparation, RteEventInSystemToOsTaskProxyMapping,
RunnableEntityGroup, SdgAttribute, SdgClass, SecureCommunicationAuthenticationProps, Secure
CommunicationFreshnessProps, SecurityEventContextProps, ServerCallPoint, ServiceNeeds, Signal
ServiceTranslationElementProps, SignalServiceTranslationEventProps, SignalServiceTranslationProps,
SocketAddress, SomeipTpChannel, SpecElementReference, StackUsage, StaticSocketConnection,
StructuredReq, SwGenericAxisParamType, SwServiceArg, SwcServiceDependency, SwcToApplication
PartitionMapping, SwcToEcuMapping, SwcToImplMapping, SystemMapping, TDCpSoftwareCluster
Mapping, TDCpSoftwareClusterResourceMapping, TcpOptionFilterList, TimingClock , TimingClockSync
Accuracy, TimingCondition, TimingConstraint, TimingDescription, TimingExtensionResource, Timing
ModeInstance, TlsCryptoCipherSuite, TlsCryptoCipherSuiteProps, Topic1, TpAddress, TraceableTable,
TraceableText, TracedFailure, TransformationProps, TransformationTechnology, Trigger, VariableAccess,
VariationPointProxy, ViewMap, VlanConfig, WaitPoint
Attribute Type Mult. Kind Note
adminData AdminData 0..1 aggr This represents the administrative data for the identifiable
object.
Stereotypes: atpSplitable
Tags:
atp.Splitkey=adminData
xml.sequenceOffset=-40
annotation Annotation * aggr Possibility to provide additional notes while defining a
model element (e.g. the ECU Configuration Parameter
Values). These are not intended as documentation but
are mere design notes.
Tags:xml.sequenceOffset=-25
category CategoryString 0..1 attr The category is a keyword that specializes the semantics
of the Identifiable. It affects the expected existence of
attributes and the applicability of constraints.
Tags:xml.sequenceOffset=-50
desc MultiLanguageOverview 0..1 aggr This represents a general but brief (one paragraph)
Paragraph description what the object in question is about. It is only
one paragraph! Desc is intended to be collected into
overview tables. This property helps a human reader to
identify the object in question.
More elaborate documentation, (in particular how the
object is built or used) should go to "introduction".
Tags:xml.sequenceOffset=-60
introduction DocumentationBlock 0..1 aggr This represents more information about how the object in
question is built or is used. Therefore it is a
DocumentationBlock.
Tags:xml.sequenceOffset=-30
5
4
Class Identifiable (abstract)
uuid String 0..1 attr The purpose of this attribute is to provide a globally
unique identifier for an instance of a meta-class. The
values of this attribute should be globally unique strings
prefixed by the type of identifier. For example, to include a
DCE UUID as defined by The Open Group, the UUID
would be preceded by "DCE:". The values of this attribute
may be used to support merging of different AUTOSAR
models. The form of the UUID (Universally Unique
Identifier) is taken from a standard defined by the Open
Group (was Open Software Foundation). This standard is
widely used, including by Microsoft for COM (GUIDs) and
by many companies for DCE, which is based on CORBA.
The method for generating these 128-bit IDs is published
in the standard and the effectiveness and uniqueness of
the IDs is not in practice disputed. If the id namespace is
omitted, DCE is assumed. An example is
"DCE:2fac1234-31f8-11b4-a222-08002b34c003". The
uuid attribute has no semantic meaning for an AUTOSAR
model and there is no requirement for AUTOSAR tools to
manage the timestamp.
Tags:xml.attribute=true
Primitive Identifier
Package M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::PrimitiveTypes
Note An Identifier is a string with a number of constraints on its appearance, satisfying the requirements typical
programming languages define for their Identifiers.
This datatype represents a string, that can be used as a c-Identifier.
It shall start with a letter, may consist of letters, digits and underscores.
Tags:
xml.xsd.customType=IDENTIFIER
xml.xsd.maxLength=128
xml.xsd.pattern=[a-zA-Z][a-zA-Z0-9_]*
xml.xsd.type=string
Attribute Type Mult. Kind Note
blueprintValue String 0..1 attr This represents a description that documents how the
value shall be defined when deriving objects from the
blueprint.
Tags:
atp.Status=draft
xml.attribute=true
namePattern String 0..1 attr This attribute represents a pattern which shall be used to
define the value of the identifier if the identifier in question
is part of a blueprint.
For more details refer to TPS_StandardizationTemplate.
Tags:xml.attribute=true
Class ImplementationDataType
Package M2::AUTOSARTemplates::CommonStructure::ImplementationDataTypes
Note Describes a reusable data type on the implementation level. This will typically correspond to a typedef in
C-code.
Tags:atp.recommendedPackage=ImplementationDataTypes
Base ARElement, ARObject, AbstractImplementationDataType, AtpBlueprint, AtpBlueprintable, AtpClassifier ,
AtpType, AutosarDataType, CollectableElement, Identifiable, MultilanguageReferrable, Packageable
Element, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
dynamicArray String 0..1 attr Specifies the profile which the array will follow in case this
SizeProfile data type is a variable size array.
isStructWith Boolean 0..1 attr This attribute is only valid if the attribute category is set to
Optional STRUCTURE.
Element
If set to true, this attribute indicates that the
ImplementationDataType has been created with the
intention to define at least one element of the structure as
optional.
subElement ImplementationData * aggr Specifies an element of an array, struct, or union data
(ordered) TypeElement type.
The aggregation of ImplementionDataTypeElement is
subject to variability with the purpose to support the
conditional existence of elements inside a Implementation
DataType representing a structure.
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=subElement.shortName, sub
Element.variationPoint.shortLabel
vh.latestBindingTime=preCompileTime
symbolProps SymbolProps 0..1 aggr This represents the SymbolProps for the Implementation
DataType.
Stereotypes: atpSplitable
Tags:atp.Splitkey=symbolProps.shortName
typeEmitter NameToken 0..1 attr This attribute is used to control which part of the
AUTOSAR toolchain is supposed to trigger data type
definitions.
Table E.18: ImplementationDataType
Enumeration IntervalTypeEnum
Package M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::PrimitiveTypes
Note This enumerator specifies the type of an interval.
Aggregated by Limit.intervalType, LimitValueVariationPoint.intervalType
Literal Description
closed The area is limited by the value given. The value itself is included.
Tags:atp.EnumerationLiteralIndex=0
open The area is limited by the value given. The value itself is not included.
Tags:atp.EnumerationLiteralIndex=2
Primitive Limit
Package M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::PrimitiveTypes
Note This class represents the ability to express a numerical limit. Note that this is in fact a NumericalVariation
Point but has the additional attribute intervalType.
Tags:
xml.xsd.customType=LIMIT-VALUE
xml.xsd.pattern=(0[xX][0-9a-fA-F]+)|(0[0-7]+)|(0[bB][0-1]+)|(([+\-]?[1-9]
[0-9]+(\.[0-9]+)?|[+\-]?[0-9](\.[0-9]+)?)([eE]([+\-]?)[0-9]+)?)|\.0|INF|-INF|NaN
xml.xsd.type=string
Attribute Type Mult. Kind Note
intervalType IntervalTypeEnum 0..1 attr This specifies the type of the interval. If the attribute is
missing the interval shall be considered as "CLOSED".
Tags:xml.attribute=true
Class MlFormula
Package M2::MSR::Documentation::BlockElements::Formula
Note This meta-class represents the ability to express a formula in a documentation. The formula can be
expressed by various means. If more than one representation is available, they need to be consistent.
The rendering system can use the representation which is most appropriate.
Base ARObject, DocumentViewSelectable, Paginateable
Aggregated by DocumentationBlock.formula, EcucConditionSpecification.informalFormula, EcucDerivationSpecification.
informalFormula
Attribute Type Mult. Kind Note
formulaCaption Caption 0..1 aggr This element specifies the identification or heading of a
formula.
Tags:xml.sequenceOffset=20
genericMath MultiLanguagePlainText 0..1 aggr this rpresents the semantic and mathematical
descriptions which are processed by a math-processor.
Tags:xml.sequenceOffset=80
lGraphic LGraphic * aggr This represents a formula as an embedded figure.
Tags:
xml.roleWrapperElement=false
xml.sequenceOffset=30
texMath MultiLanguagePlainText 0..1 aggr this is the TeX representation of TeX formula. A TeX
formula can be processed by a TeX or a LaTeX processor.
Tags:xml.sequenceOffset=60
verbatim MultiLanguageVerbatim 0..1 aggr this represents a formula using only text and white-space.
It can be used to denote the formula in a kind of pseudo
code or whatever appears approprate.
Tags:xml.sequenceOffset=50
4
Class MultilanguageReferrable (abstract)
Attribute Type Mult. Kind Note
longName MultilanguageLong 0..1 aggr This specifies the long name of the object. Long name is
Name targeted to human readers and acts like a headline.
Class NPdu
Package M2::AUTOSARTemplates::SystemTemplate::Fibex::FibexCore::CoreCommunication
Note This is a Pdu of the Transport Layer. The main purpose of the TP Layer is to segment and reassemble
IPdus.
Tags:atp.recommendedPackage=Pdus
Base ARObject, CollectableElement, FibexElement, IPdu, Identifiable, MultilanguageReferrable, Packageable
Element, Pdu, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
– – – – –
Table E.23: NPdu
Class NmPdu
Package M2::AUTOSARTemplates::SystemTemplate::Fibex::FibexCore::CoreCommunication
Note Network Management Pdu
Tags:atp.recommendedPackage=Pdus
Base ARObject, CollectableElement, FibexElement, Identifiable, MultilanguageReferrable, Packageable
Element, Pdu, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
iSignalToIPdu ISignalToIPduMapping * aggr This optional aggregation is used to describe NmUser
Mapping Data that is transmitted in the NmPdu. The counting of
the startPosition starts at the beginning of the NmPdu
regardless whether Cbv or Nid are used.
nmData Boolean 0..1 attr Defines if the Pdu contains NM Data. If the NmPdu does
Information not aggregate any ISignalToIPduMappings it still may
contain UserData that is set via Nm_SetUserData(). If the
ISignalToIPduMapping exists then the nmDataInformation
attribute shall be ignored.
nmVote Boolean 0..1 attr Defines if the Pdu contains NM Vote information.
Information
unusedBit Integer 0..1 attr AUTOSAR COM is filling not used areas of an Pdu with
Pattern this bit-pattern. This attribute can only be used if the nm
DataInformation attribute is set to true.
Table E.24: NmPdu
4
Class <<atpMixedString>> NumericalValueVariationPoint
Base ARObject, AbstractNumericalVariationPoint, AttributeValueVariationPoint, FormulaExpression, Sw
SystemconstDependentFormula
Aggregated by VariationPointProxy.valueAccess
Attribute Type Mult. Kind Note
– – – – –
Table E.25: NumericalValueVariationPoint
Class PduTriggering
Package M2::AUTOSARTemplates::SystemTemplate::Fibex::FibexCore::CoreCommunication
Note The PduTriggering describes on which channel the IPdu is transmitted. The Pdu routing by the PduR is
only allowed for subclasses of IPdu.
Depending on its relation to entities such channels and clusters it can be unambiguously deduced
whether a fan-out is handled by the Pdu router or the Bus Interface.
If the fan-out is specified between different clusters it shall be handled by the Pdu Router. If the fan-out is
specified between different channels of the same cluster it shall be handled by the Bus Interface.
5
4
Class PduTriggering
Base ARObject, Identifiable, MultilanguageReferrable, Referrable
Aggregated by PhysicalChannel.pduTriggering
Attribute Type Mult. Kind Note
iPdu Pdu 1 ref Reference to the Pdu for which the PduTriggering is
defined. One I-Pdu can be triggered on different channels
(PduR fan-out). The Pdu routing by the PduR is only
allowed for subclasses of IPdu.
Nevertheless is the reference to the Pdu element
necessary since the PduTriggering element is also used
to specify the sending and receiving connections to Ecu
Ports.
iPduPort IPduPort * ref References to the IPduPort on every ECU of the system
which sends and/or receives the I-PDU.
References for both the sender and the receiver side
shall be included when the system is completely defined.
iSignal ISignalTriggering * ref This reference provides the relationship to the ISignal
Triggering Triggerings that are implemented by the PduTriggering.
The reference is optional since no ISignalTriggering can
be defined for DCM and Multiplexed Pdus.
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=iSignalTriggering.iSignalTriggering, iSignal
Triggering.variationPoint.shortLabel
vh.latestBindingTime=postBuild
secOcCrypto SecOcCryptoService 0..1 ref This reference identifies the crypto profile applicable to
Mapping Mapping the usage (send, receive) of the also referenced Secured
IPdu.
Obviously, this reference is only applicable if the
Pdutriggering also references a SecuredIPdu in the role i
Pdu.
triggerIPduSend TriggerIPduSend * aggr Defines the trigger for the Com_TriggerIPDUSend API
Condition Condition call. Only if all defined TriggerIPduSendConditions
evaluate to true (AND associated) the Com_Trigger
IPDUSend API shall be called.
4
Class PortPrototype (abstract)
modePort ModePortAnnotation * aggr Annotations on this mode port.
Annotation
nvDataPort NvDataPortAnnotation * aggr Annotations on this non voilatile data port.
Annotation
parameterPort ParameterPort * aggr Annotations on this parameter port.
Annotation Annotation
senderReceiver SenderReceiver * aggr Collection of annotations of this ports sender/receiver
Annotation Annotation communication.
triggerPort TriggerPortAnnotation * aggr Annotations on this trigger port.
Annotation
Table E.29: PortPrototype
Class PostBuildVariantCriterion
Package M2::AUTOSARTemplates::GenericStructure::VariantHandling
Note This class specifies one particular PostBuildVariantSelector.
Tags:atp.recommendedPackage=PostBuildVariantCriterions
Base ARElement, ARObject, AtpDefinition, CollectableElement, Identifiable, MultilanguageReferrable,
PackageableElement, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
compuMethod CompuMethod 1 ref The compuMethod specifies the possible values for the
variant criterion serving as an enumerator.
Class PostBuildVariantCriterionValue
Package M2::AUTOSARTemplates::GenericStructure::VariantHandling
Note This class specifies the value which shall be assigned to a particular variant criterion in order to bind the
variation point. If multiple criterion/value pairs are specified, they all shall match to bind the variation
point.
Base ARObject
Aggregated by PostBuildVariantCriterionValueSet.postBuildVariantCriterionValue
Attribute Type Mult. Kind Note
annotation Annotation * aggr This provides the ability to add information why the value
is set like it is.
Tags:xml.sequenceOffset=30
value Integer 1 attr This is the particular value of the post-build variant
criterion.
Stereotypes: atpVariation
Tags:
vh.latestBindingTime=preCompileTime
xml.sequenceOffset=20
variantCriterion PostBuildVariant 1 ref This association selects the variant criterion whose value
Criterion is specified.
Tags:xml.sequenceOffset=10
Class PredefinedVariant
Package M2::AUTOSARTemplates::GenericStructure::VariantHandling
Note This specifies one predefined variant. It is characterized by the union of all system constant values and
post-build variant criterion values aggregated within all referenced system constant value sets and post
build variant criterion value sets plus the value sets of the included variants.
Tags:atp.recommendedPackage=PredefinedVariants
Base ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, Packageable
Element, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
includedVariant PredefinedVariant * ref The associated variants are considered part of this
PredefinedVariant. This means the settings of the
included variants are included in the settings of the
referencing PredefinedVariant. Nevertheless the included
variants might be included in several predefined variants.
postBuildVariant PostBuildVariant * ref This is the postBuildVariantCriterionValueSet contributing
CriterionValue CriterionValueSet to the predefinded variant.
Set
sw SwSystemconstant * ref This ist the set of Systemconstant Values contributing to
Systemconstant ValueSet the predefined variant.
ValueSet
4
Class ServiceNeeds (abstract)
Subclasses BswMgrNeeds, ComMgrUserNeeds, CryptoKeyManagementNeeds, CryptoServiceJobNeeds, Crypto
ServiceNeeds, DiagnosticCapabilityElement, DltUserNeeds, DoIpServiceNeeds, EcuStateMgrUser
Needs, ErrorTracerNeeds, FunctionInhibitionAvailabilityNeeds, FunctionInhibitionNeeds, Global
SupervisionNeeds, HardwareTestNeeds, IdsMgrCustomTimestampNeeds, IdsMgrNeeds, IndicatorStatus
Needs, J1939DcmDm19Support, J1939RmIncomingRequestServiceNeeds, J1939RmOutgoingRequest
ServiceNeeds, NvBlockNeeds, SecureOnBoardCommunicationNeeds, SupervisedEntityCheckpoint
Needs, SupervisedEntityNeeds, SyncTimeBaseMgrUserNeeds, V2xDataManagerNeeds, V2xFacUser
Needs, V2xMUserNeeds, VendorSpecificServiceNeeds
Aggregated by BswServiceDependency.serviceNeeds, SwcServiceDependency.serviceNeeds
Attribute Type Mult. Kind Note
– – – – –
Table E.34: ServiceNeeds
Class ServiceSwComponentType
Package M2::AUTOSARTemplates::SWComponentTemplate::Components
Note ServiceSwComponentType is used for configuring services for a given ECU. Instances of this class are
only to be created in ECU Configuration phase for the specific purpose of the service configuration.
Tags:atp.recommendedPackage=SwComponentTypes
Base ARElement, ARObject, AtomicSwComponentType, AtpBlueprint, AtpBlueprintable, AtpClassifier , Atp
Type, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable, Sw
ComponentType
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
– – – – –
Table E.35: ServiceSwComponentType
Class SwComponentPrototype
Package M2::AUTOSARTemplates::SWComponentTemplate::Composition
Note Role of a software component within a composition.
Base ARObject, AtpFeature, AtpPrototype, Identifiable, MultilanguageReferrable, Referrable
Aggregated by AtpClassifier .atpFeature, CompositionSwComponentType.component
Attribute Type Mult. Kind Note
type SwComponentType 0..1 tref Type of the instance.
Stereotypes: isOfType
4
Class SwConnector (abstract)
mapping PortInterfaceMapping 0..1 ref Reference to a PortInterfaceMapping specifying the
mapping of unequal named PortInterface elements of the
two different PortInterfaces typing the two PortPrototypes
which are referenced by the ConnectorPrototype.
4
Class <<atpVariation>> SwDataDefProps
annotation Annotation * aggr This aggregation allows to add annotations (yellow pads
...) related to the current data object.
Tags:
xml.roleElement=true
xml.roleWrapperElement=true
xml.sequenceOffset=20
xml.typeElement=false
xml.typeWrapperElement=false
baseType SwBaseType 0..1 ref Base type associated with the containing data object.
Tags:xml.sequenceOffset=50
compuMethod CompuMethod 0..1 ref Computation method associated with the semantics of
this data object.
Tags:xml.sequenceOffset=180
dataConstr DataConstr 0..1 ref Data constraint for this data object.
Tags:xml.sequenceOffset=190
displayFormat DisplayFormatString 0..1 attr This property describes how a number is to be rendered
e.g. in documents or in a measurement and calibration
system.
Tags:xml.sequenceOffset=210
display DisplayPresentation 0..1 attr This attribute controls the presentation of the related data
Presentation Enum for measurement and calibration tools.
implementation AbstractImplementation 0..1 ref This association denotes the ImplementationDataType of
DataType DataType a data declaration via its aggregated SwDataDefProps. It
is used whenever a data declaration is not directly
referring to a base type. Especially
• redefinition of an ImplementationDataType via a
"typedef" to another ImplementationDatatype
• the target type of a pointer (see SwPointerTarget
Props), if it does not refer to a base type directly
• the data type of an array or record element within
an ImplementationDataType, if it does not refer to
a base type directly
• the data type of an SwServiceArg, if it does not
refer to a base type directly
Tags:xml.sequenceOffset=215
invalidValue ValueSpecification 0..1 aggr Optional value to express invalidity of the actual data
element.
Tags:xml.sequenceOffset=255
stepSize Float 0..1 attr This attribute can be used to define a value which is
added to or subtracted from the value of a DataPrototype
when using up/down keys while calibrating.
swAddrMethod SwAddrMethod 0..1 ref Addressing method related to this data object. Via an
association to the same SwAddrMethod it can be
specified that several DataPrototypes shall be located in
the same memory without already specifying the memory
section itself.
Tags:xml.sequenceOffset=30
5
4
Class <<atpVariation>> SwDataDefProps
swAlignment AlignmentType 0..1 attr The attribute describes the intended typical alignment of
the DataPrototype. If the attribute is not defined the
alignment is determined by the swBaseType size and the
memoryAllocationKeywordPolicy of the referenced Sw
AddrMethod.
Tags:xml.sequenceOffset=33
swBit SwBitRepresentation 0..1 aggr Description of the binary representation in case of a bit
Representation variable.
Tags:xml.sequenceOffset=60
swCalibration SwCalibrationAccess 0..1 attr Specifies the read or write access by MCD tools for this
Access Enum data object.
Tags:xml.sequenceOffset=70
swCalprmAxis SwCalprmAxisSet 0..1 aggr This specifies the properties of the axes in case of a
Set curve or map etc. This is mainly applicable to calibration
parameters.
Tags:xml.sequenceOffset=90
swComparison SwVariableRefProxy * aggr Variables used for comparison in an MCD process.
Variable
Tags:
xml.sequenceOffset=170
xml.typeElement=false
swData SwDataDependency 0..1 aggr Describes how the value of the data object has to be
Dependency calculated from the value of another data object (by the
MCD system).
Tags:xml.sequenceOffset=200
swHostVariable SwVariableRefProxy 0..1 aggr Contains a reference to a variable which serves as a
host-variable for a bit variable. Only applicable to bit
objects.
Tags:
xml.sequenceOffset=220
xml.typeElement=false
swImplPolicy SwImplPolicyEnum 0..1 attr Implementation policy for this data object.
Tags:xml.sequenceOffset=230
swIntended Numerical 0..1 attr The purpose of this element is to describe the requested
Resolution quantization of data objects early on in the design
process.
The resolution ultimately occurs via the conversion
formula present (compuMethod), which specifies the
transition from the physical world to the standardized
world (and vice-versa) (here, "the slope per bit" is present
implicitly in the conversion formula).
In the case of a development phase without a fixed
conversion formula, a pre-specification can occur through
swIntendedResolution.
The resolution is specified in the physical domain
according to the property "unit".
Tags:xml.sequenceOffset=240
swInterpolation Identifier 0..1 attr This is a keyword identifying the mathematical method to
Method be applied for interpolation. The keyword needs to be
related to the interpolation routine which needs to be
invoked.
Tags:xml.sequenceOffset=250
5
4
Class <<atpVariation>> SwDataDefProps
swIsVirtual Boolean 0..1 attr This element distinguishes virtual objects. Virtual objects
do not appear in the memory, their derivation is much
more dependent on other objects and hence they shall
have a swDataDependency .
Tags:xml.sequenceOffset=260
swPointerTarget SwPointerTargetProps 0..1 aggr Specifies that the containing data object is a pointer to
Props another data object.
Tags:xml.sequenceOffset=280
swRecord SwRecordLayout 0..1 ref Record layout for this data object.
Layout
Tags:xml.sequenceOffset=290
swRefresh MultidimensionalTime 0..1 aggr This element specifies the frequency in which the object
Timing involved shall be or is called or calculated. This timing
can be collected from the task in which write access
processes to the variable run. But this cannot be done by
the MCD system.
So this attribute can be used in an early phase to express
the desired refresh timing and later on to specify the real
refresh timing.
Tags:xml.sequenceOffset=300
swTextProps SwTextProps 0..1 aggr the specific properties if the data object is a text object.
Tags:xml.sequenceOffset=120
swValueBlock Numerical 0..1 attr This represents the size of a Value Block
Size
Stereotypes: atpVariation
Tags:
vh.latestBindingTime=preCompileTime
xml.sequenceOffset=80
swValueBlock Numerical * attr This attribute is used to specify the dimensions of a value
SizeMult block (VAL_BLK) for the case that that value block has
(ordered) more than one dimension.
The dimensions given in this attribute are ordered such
that the first entry represents the first dimension, the
second entry represents the second dimension, and so
on.
For one-dimensional value blocks the attribute swValue
BlockSize shall be used and this attribute shall not exist.
Stereotypes: atpVariation
Tags:vh.latestBindingTime=preCompileTime
unit Unit 0..1 ref Physical unit associated with the semantics of this data
object. This attribute applies if no compuMethod is
specified. If both units (this as well as via compuMethod)
are specified the units shall be compatible.
Tags:xml.sequenceOffset=350
valueAxisData ApplicationPrimitive 0..1 ref The referenced ApplicationPrimitiveDataType represents
Type DataType the primitive data type of the value axis within a
compound primitive (e.g. curve, map). It supersedes
CompuMethod, Unit, and BaseType.
Tags:xml.sequenceOffset=355
Class SwPointerTargetProps
Package M2::MSR::DataDictionary::DataDefProperties
Note This element defines, that the data object (which is specified by the aggregating element) contains a
reference to another data object or to a function in the CPU code. This corresponds to a pointer in the
C-language.
The attributes of this element describe the category and the detailed properties of the target which is
either a data description or a function signature.
Base ARObject
Aggregated by SwDataDefProps.swPointerTargetProps
Attribute Type Mult. Kind Note
functionPointer BswModuleEntry 0..1 ref The referenced BswModuleEntry serves as the signature
Signature of a function pointer definition. Primary use case: function
pointer passed as argument to other function.
Tags:xml.sequenceOffset=40
swDataDef SwDataDefProps 0..1 aggr The properties of the target data type.
Props
Stereotypes: atpSplitable
Tags:
atp.Splitkey=swDataDefProps
xml.sequenceOffset=30
targetCategory Identifier 0..1 attr This specifies the category of the target:
• In case of a data pointer, it shall specify the
category of the referenced data.
• In case of a function pointer, it could be used to
denote the category of the referenced Bsw
ModuleEntry.
Tags:xml.sequenceOffset=5
Class SwServiceArg
Package M2::MSR::DataDictionary::ServiceProcessTask
Note Specifies the properties of a data object exchanged during the call of an SwService, e.g. an argument or
a return value.
The SwServiceArg can also be used in the argument list of a C-macro. For this purpose the category
shall be set to "MACRO". A reference to implementationDataType can optional be added if the actual
argument has an implementationDataType.
Base ARObject, Identifiable, MultilanguageReferrable, Referrable
Aggregated by BswModuleEntry.argument, BswModuleEntry.returnType
Attribute Type Mult. Kind Note
direction ArgumentDirection 0..1 attr Specifies the direction of the data transfer. The direction
Enum shall indicate the direction of the actual information that is
being consumed by the caller and/or the callee, not the
direction of formal arguments in C.
The attribute is optional for backwards compatibility
reasons. For example, if a pointer is used to pass a
memory address for the expected result, the direction
shall be "out". If a pointer is used to pass a memory
address with content to be read by the callee, its direction
shall be "in".
Tags:xml.sequenceOffset=10
swArraysize ValueList 0..1 aggr This turns the argument of the service to an array.
Tags:xml.sequenceOffset=20
5
4
Class SwServiceArg
swDataDef SwDataDefProps 0..1 aggr Data properties of this SwServiceArg.
Props
Stereotypes: atpSplitable
Tags:
atp.Splitkey=swDataDefProps
xml.sequenceOffset=30
Class SwSystemconst
Package M2::MSR::DataDictionary::SystemConstant
Note This element defines a system constant which serves an input to select a particular variation point. In
particular a system constant serves as an operand of the binding function (swSyscond) in a Variation
point.
Note that the binding process can only happen if a value was assigned to to the referenced system
constants.
Tags:atp.recommendedPackage=SwSystemconsts
Base ARElement, ARObject, AtpDefinition, CollectableElement, Identifiable, MultilanguageReferrable,
PackageableElement, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
swDataDef SwDataDefProps 0..1 aggr This denotes the data definition properties of the system
Props constant. This supports to express the limits and
optionally a conversion within the internal to physical
values by a compu method.
Stereotypes: atpSplitable
Tags:
atp.Splitkey=swDataDefProps
xml.sequenceOffset=40
Class SwSystemconstantValueSet
Package M2::AUTOSARTemplates::GenericStructure::VariantHandling
Note This meta-class represents the ability to specify a set of system constant values.
Tags:atp.recommendedPackage=SwSystemconstantValueSets
Base ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, Packageable
Element, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
sw SwSystemconstValue * aggr This is one particular value of a system constant.
Systemconstant
Value
Table E.42: SwSystemconstantValueSet
Class SwTextProps
Package M2::MSR::DataDictionary::DataDefProperties
Note This meta-class expresses particular properties applicable to strings in variables or calibration
parameters.
5
4
Class SwTextProps
Base ARObject
Aggregated by SwDataDefProps.swTextProps
Attribute Type Mult. Kind Note
arraySize ArraySizeSemantics 0..1 attr This attribute controls the semantics of the arraysize for
Semantics Enum the array representing the string in an Implementation
DataType.
It is there to support a safe conversion between
ApplicationDatatype and ImplementationDatatype, even
for variable length strings as required e.g. for Support of
SAE J1939.
baseType SwBaseType 0..1 ref This is the base type of one character in the string. In
particular this baseType denotes the intended encoding of
the characters in the string on level of ApplicationData
Type.
Tags:xml.sequenceOffset=30
swFillCharacter Integer 0..1 attr Filler character for text parameter to pad up to the
maximum length swMaxTextSize.
The value will be interpreted according to the encoding
specified in the associated base type of the data object,
e.g. 0x30 (hex) represents the ASCII character zero as
filler character and 0 (dec) represents an end of string as
filler character.
The usage of the fill character depends on the arraySize
Semantics.
Tags:xml.sequenceOffset=40
swMaxTextSize Integer 0..1 attr Specifies the maximum text size in characters. Note the
size in bytes depends on the encoding in the
corresponding baseType.
Stereotypes: atpVariation
Tags:
vh.latestBindingTime=preCompileTime
xml.sequenceOffset=20
Class UnitGroup
Package M2::MSR::AsamHdo::Units
Note This meta-class represents the ability to specify a logical grouping of units.The category denotes the unit
system that the referenced units are associated to.
In this way, e.g. country-specific unit systems (CATEGORY="COUNTRY") can be defined as well as
specific unit systems for certain application domains.
In the same way a group of equivalent units, can be defined which are used in different countries, by
setting CATEGORY="EQUIV_UNITS". KmPerHour and MilesPerHour could such be combined to one
group named "vehicle_speed". The unit MeterPerSec would not belong to this group because it is
normally not used for vehicle speed. But all of the mentioned units could be combined to one group
named "speed".
Note that the UnitGroup does not ensure the physical compliance of the units. This is maintained by the
physical dimension.
Tags:atp.recommendedPackage=UnitGroups
Base ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, Packageable
Element, Referrable
Aggregated by ARPackage.element
5
4
Class UnitGroup
Attribute Type Mult. Kind Note
unit Unit * ref This represents one particular unit in the UnitGroup.
Tags:xml.sequenceOffset=20
Class UserDefinedPdu
Package M2::AUTOSARTemplates::SystemTemplate::Fibex::FibexCore::CoreCommunication
Note UserDefinedPdu allows to describe PDU-based communication over Complex Drivers. If a new BSW
module is added above the BusIf (e.g. a new Nm module) then this Pdu element shall be used to
describe the communication.
Tags:atp.recommendedPackage=Pdus
Base ARObject, CollectableElement, FibexElement, Identifiable, MultilanguageReferrable, Packageable
Element, Pdu, Referrable
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
cddType String 0..1 attr This attribute defines the CDD that transmits or receives
the UserDefinedIPdu. If several CDDs are defined this
attribute is used to distinguish between them.
Class VariationPoint
Package M2::AUTOSARTemplates::GenericStructure::VariantHandling
Note This meta-class represents the ability to express a "structural variation point". The container of the
variation point is part of the selected variant if swSyscond evaluates to true and each postBuildVariant
Criterion is fulfilled.
Base ARObject
5
4
Class VariationPoint
Attribute Type Mult. Kind Note
blueprint DocumentationBlock 0..1 aggr This represents a description that documents how the
Condition variation point shall be resolved when deriving objects
from the blueprint.
Note that variationPoints are not allowed within a
blueprintCondition.
Tags:xml.sequenceOffset=28
desc MultiLanguageOverview 0..1 aggr This allows to describe shortly the purpose of the
Paragraph variation point.
Tags:xml.sequenceOffset=20
formalBlueprint BlueprintGenerator 0..1 aggr This represents a description that documents how the
Generator variation point shall be resolved when deriving objects
from the blueprint by using ARMQL.
Note that variationPoints are not allowed within a formal
BlueprintGenerator.
Tags:
atp.Status=draft
xml.sequenceOffset=30
postBuildVariant PostBuildVariant * aggr This is the set of post build variant conditions which all
Condition Condition shall be fulfilled in order to (postbuild) bind the variation
point.
Tags:xml.sequenceOffset=40
sdg Sdg 0..1 aggr An optional special data group is attached to every
variation point. These data can be used by external
software systems to attach application specific data. For
example, a variant management system might add an
identifier, an URL or a specific classifier.
Tags:xml.sequenceOffset=50
shortLabel Identifier 0..1 attr This provides a name to the particular variation point to
support the RTE generator. It is necessary for supporting
splitable aggregations and if binding time is later than
codeGenerationTime, as well as some RTE conditions. It
needs to be unique with in the enclosing Identifiables with
the same ShortName.
Stereotypes: atpIdentityContributor
Tags:xml.sequenceOffset=10
swSyscond ConditionByFormula 0..1 aggr This condition acts as Binding Function for the Variation
Point. Note that the multiplicity is 0..1 in order to support
pure postBuild variants.
Tags:xml.sequenceOffset=30
Primitive VerbatimString
Package M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::PrimitiveTypes
Note This primitive represents a string in which white-space needs to be preserved.
Tags:
xml.xsd.customType=VERBATIM-STRING
xml.xsd.type=string
xml.xsd.whiteSpace=preserve
Attribute Type Mult. Kind Note
5
4
Primitive VerbatimString
blueprintValue String 0..1 attr This represents a description that documents how the
value shall be defined when deriving objects from the
blueprint.
Tags:
atp.Status=draft
xml.attribute=true
xmlSpace XmlSpaceEnum 0..1 attr This attribute is used to signal an intention that in that
element, white space should be preserved by
applications. It is defined according to xml:space as
declared by W3C.
Tags:
xml.attribute=true
xml.attributeRef=true
xml.name=space
xml.nsPrefix=xml
Table E.48: VerbatimString