Hi Thomas,
I understand that you are configuring code generation with Embedded Coder for C output and want to clarify how the Code interface packaging and Code Mappings Editor settings interact, and whether 'Simulink.Signal' and 'Simulink.Parameter' objects remain necessary. Based on the Embedded Coder documentation, here’s a detailed breakdown:
1. Code interface packaging (Configuration Parameters > Code Generation > Interface)
This setting indeed controls the nature of the generated function interface:
- Nonreusable function (default for C) creates a void-to-void interface and relies on static, globally accessible model data structures.
- Reusable function generates reentrant code that accepts a model data structure (e.g., 'model_M') as an argument, enabling multiple instances, so the interface differs significantly.
2. ‘Pass root-level I/O’ setting (only applicable with Reusable function)
Yes, when 'Reusable function' is selected, the 'Pass root-level I/O' as option determines whether root-level inports/outports are passed individually or packaged within a structure (part of model data). That decision affects the function prototype.
3. Individual Element Code Mappings vs. Default Code Mappings
- Default Code Mappings (Configuration Parameters > Code Interface > Default Code Mappings) provide global defaults for how data and functions are packaged in generated code (storage class, headers, etc.).
- Individual Element Code Mappings allow fine-grained customization on a per-port, parameter, or signal basis adjusting naming, storage class, and code location.
4. Purpose of the Code Mappings Editor
The Code Mappings Editor is not just a modern alternative it’s the primary interface for configuring how each individual element (inport, outport, parameter, signal, etc.) appears in the generated code. It lets you control properties like visibility ('public', 'private'), storage class, naming, and header placement. In short:
- Global options set the overall interface style.
- Code Mappings Editor enables element-level control.
5. 'Simulink.Signal' and 'Simulink.Parameter' objects
- Even with element mappings, data objects like 'Simulink.Parameter' and 'Simulink.Signal' allow you to define properties such as storage classes, tuning settings, and visualization.
- These objects help organize data definitions and support certain mapping configurations in the Code Mappings Editor, especially when you rely on storage classes defined in an Embedded Coder Dictionary.
Fore more information regarding 'Simulink.Signal' and 'Simulink.Parameter' objects, you can refer to the following documentation links: