Main Content

Limitations and Tips

The following limitations apply to AUTOSAR code generation.

Generate Code Only Check Box

If you do not select the Generate code only check box, the software produces an error message when you build the model. The message states that you can build an executable with the AUTOSAR system target file only if you:

  • Configure the model to create a software-in-the-loop (SIL) or processor-in-the-loop (PIL) block

  • Run the model in SIL or PIL simulation mode

  • Provide a custom template makefile

AUTOSAR Compiler Abstraction Macros (Classic Platform)

The software does not generate AUTOSAR compiler abstraction macros for data or functions arising from the following:

  • Model blocks

  • Stateflow®

  • MATLAB® Coder™

  • Shared utility functions

  • Custom storage classes

  • Local or temporary variables

Preservation of Bus Element Dimensions in Exported ARXML and Code

Bus element dimensions are preserved in the exported ARXML and generated code when a model is configured with the property Array layout set to Row-major. Previously, if a model contained a Simulink.Bus data type that had a multidimensional array Simulink.BusElement, the exported ARXML and generated code flattened the bus element to a one-dimensional array. Now, the generated code and exported ARXML preserves the dimensionality as expected.

Loop Unrolling Threshold Optimization

AUTOSAR code generation supports optimizations, such as Loop unrolling threshold (Simulink Coder), for improving the performance of the generated code. The circumstances under which these optimizations are implemented in the generated code can vary across releases and targets.

C++11 Style Scoped Enum Classes Generated for AUTOSAR Adaptive Applications

To facilitate easier integration, by default the generated C++ code for AUTOSAR adaptive models emit C++ 11 style scoped enum class data types in the generated code. You can view this data type definition in the header file for enumerations located in the aragen/stub folder of the build folder. This data type definition is standardized and validated prior to code generation.

The following table shows a comparison of a scoped enum class definition versus the previously generated code behavior for a dynamic enumeration:

Simulink.defineIntEnumType('BasicColors', ...
{'Red','Green','Blue'},...
[0;1;2],...
'DataScope','Auto',...
'StorageType','uint8')

Generated Enumeration Definition in Header File

Previous Behavior (C++03)Current Default Behavior (C++11)
#ifndef IMPL_TYPE_BASICCOLORS_H_
#define IMPL_TYPE_BASICCOLORS_H_
#include <cstdint>
  
using BasicColors = uint8_t;
 
const BasicColors Red = 0;
const BasicColors Green = 1;
const BasicColors Blue = 2;
  
#endif   //IMPL_TYPE_BASICCOLORS_H_
#ifndef IMPL_TYPE_BASICCOLORS_H_
#define IMPL_TYPE_BASICCOLORS_H_
#include <cstdint>
  
enum class BasicColors : uint8_t {
    Red = 0, 
    Green = 1,
    Blue = 2
};
  
#endif   //IMPL_TYPE_BASICCOLORS_H_

The default behavior is determined by the default Language standard for a model set to C++11(ISO). If you configure this setting so that a model to generates C++ 03, then the generated code emits the previous code definition behavior and may not compile if used with a third-party ara generator.

AUTOSAR Code Generation Complex Number Support

AUTOSAR code generation supports complex numbers inside software components, but it does not support complex signals at the model interface level. For more information regarding this code generation setting, see Support: complex numbers (Embedded Coder).