To generate AUTOSAR-compliant C code and ARXML component descriptions from a model configured for the AUTOSAR Classic Platform:
In the Configuration Parameters dialog box, on the Code Generation > AUTOSAR Code Generation Options pane, configure AUTOSAR code generation parameters.
Configure AUTOSAR XML export options by using the AUTOSAR Dictionary or AUTOSAR property functions.
Build the model.
For import and export of ARXML files and generation of AUTOSAR-compliant C code, the software supports the following AUTOSAR Classic Platform schema versions.
|Schema Version Value||Schema Revisions Supported for Import||Export Schema Revision|
|4.1.1, 4.1.2, 4.1.3||4.1.3|
|4.0.1, 4.0.2, 4.0.3||4.0.3|
Selecting the AUTOSAR system target file for your model for the first time sets the
schema version parameter to the default value,
If you import ARXML files into Simulink®, the ARXML importer detects the schema version and sets the schema version
parameter in the model. For example, if you import ARXML files based on schema 4.3 revision
4.3.0 or 4.3.1, the importer sets the schema version parameter to
When you build an AUTOSAR model, the code generator exports ARXML descriptions and
generates C code that comply with the current schema version. For example, if
Generate XML file for schema
version (Embedded Coder) equals
4.3, export uses the
export schema revision listed above for schema 4.3, that is, revision 4.3.1.
Before exporting your AUTOSAR software component, check the selected schema version. If you need to change the selected schema version, use the model configuration parameter Generate XML file for schema version.
Set the AUTOSAR model configuration parameters to the same values for top and referenced models. This guideline applies to Generate XML file for schema version (Embedded Coder), Maximum SHORT-NAME length (Embedded Coder), Use AUTOSAR compiler abstraction macros (Embedded Coder), and Support root-level matrix I/O using one-dimensional arrays (Embedded Coder).
The AUTOSAR standard specifies that the maximum length of
XML elements is 128 characters.
To specify a maximum length for
SHORT-NAME elements exported by the
code generator, set the model configuration parameter Maximum
SHORT-NAME length (Embedded Coder) to an integer value between 32 and 128,
inclusive. The default is 128 characters.
Compilers for 16-bit platforms (for example, Cosmic and Metrowerks for S12X or Tasking for ST10) use special keywords to deal with the limited 16-bit addressing range. The location of data and code beyond the 64k border is selected explicitly by special keywords. However, if such keywords are used directly within the source code, then software must be ported separately for each microcontroller family. That is, the software is not platform-independent.
AUTOSAR specifies C macros to abstract compiler directives (near/far memory calls) in a platform-independent manner. These compiler directives, derived from the 16-bit platforms, enable better code efficiencies for 16-bit micro-controllers without separate porting of source code for each compiler. This approach allows your system integrator, rather than your software component implementer, to choose the location of data and code for each software component.
For more information on AUTOSAR compiler abstraction, see
To enable AUTOSAR compiler macro generation, select the model configuration parameter Use AUTOSAR compiler abstraction macros (Embedded Coder).
When you build the model, the software applies compiler abstraction macros to global data and function definitions in the generated code.
For data, the macros are in the following form:
type are data
memclass is a macro string
SWC is the software component identifier)
varname is the variable identifier
For functions (model and subsystem), the macros are in the following form:
type is the data type of the return argument
memclass is a macro string. This string can be either
for runnables (external
is the software component
If you do not select Use AUTOSAR compiler abstraction macros, the code generator produces the following code:
/* Block signals (auto storage) */ BlockIO rtB; /* Block states (auto storage) */ D_Work rtDWork; /* Model step function */ void Runnable_Step(void)
However, if you select Use AUTOSAR compiler abstraction macros, the code generator produces macros in the code:
/* Block signals (auto storage) */ VAR(BlockIO, SWC1_VAR) rtB; /* Block states (auto storage) */ VAR(D_Work, SWC1_VAR) rtDWork; /* Model step function */ FUNC(void, SWC1_CODE) Runnable_Step(void)
For an AUTOSAR component model with multidimensional arrays, if you set the model
configuration parameter Array layout (Simulink Coder) to
Row-major, you can preserve dimensions of multidimensional
arrays in the generated C code. Preserving array dimensions in the generated code can
enhance code integration.
If your application design requires
layout, you can configure ARXML export to support root-level matrix I/O. The software can
export ARXML descriptions that implement matrices as one-dimensional arrays.
By default, for
Column-major array layout, the software does
not allow matrix I/O at the root level. Building the model generates an error. To enable
root-level matrix I/O, select the model configuration parameter Support
root-level matrix I/O using one-dimensional arrays (Embedded Coder).
When Array layout is set to
Row-major, Support root-level matrix I/O using
one-dimensional arrays has no effect.
Examine the XML options that you configured by using the AUTOSAR Dictionary. If you have not yet configured them, see Configure AUTOSAR XML Options.
After configuring AUTOSAR code generation and XML options, generate code. To generate C code and export XML descriptions, build the component model.
The build process generates AUTOSAR-compliant C code and AUTOSAR XML descriptions to the model build folder. The exported XML files include:
One or more
based on whether you set Exported XML file packaging to
Single file or
If you imported ARXML files into Simulink, updated versions of the same files.
This table lists
that are generated based on the value of the Exported XML file
packaging option configured in the AUTOSAR Dictionary.
|Exported XML File Packaging Value||Exported File Name||By Default Contains...|
|AUTOSAR elements for software components, data types, implementation, interfaces, and timing.|
Software components, including:
This is the main ARXML file exported for the Simulink model. In addition to software components, the component file contains packageable elements that the exporter does not move to data type, implementation, interface, or timing files based on AUTOSAR element category.
Data types and related elements, including:
|Software component implementation, including code descriptors.|
|Interfaces, including S-R, C-S, M-S, NV, parameter, and trigger interfaces. The interfaces include type-specific elements, such as S-R data elements, C-S operations, port-based parameters, or triggers.|
|Timing model, including runnable execution order constraints.|
You can merge the AUTOSAR XML component descriptions back into an AUTOSAR authoring tool. The AUTOSAR component information is partitioned into separate files to facilitate merging. The partitioning attempts to minimize the number of merges that you must do. You do not need to merge the data type file into the authoring tool because data types are usually defined early in the design process. You must, however, merge the internal behavior file because this information is part of the model implementation.
To help support the round trip of AUTOSAR elements between an AUTOSAR authoring tool (AAT) and the Simulink model-based design environment, the code generator preserves AUTOSAR elements and their universal unique identifiers (UUIDs) across ARXML import and export. For more information, see Round-Trip Preservation of AUTOSAR XML File Structure and Element Information.
For an example of how to generate AUTOSAR-compliant C code and export AUTOSAR XML component descriptions from a Simulink model, see Generate AUTOSAR C Code and XML Descriptions.
Generate XML file for schema version (Embedded Coder) | Maximum SHORT-NAME length (Embedded Coder) | Support root-level matrix I/O using one-dimensional arrays (Embedded Coder) | Use AUTOSAR compiler abstraction macros (Embedded Coder)