内存使用量
通过生成的代码优化 RAM、ROM 和堆栈空间的使用
可以通过以下方法控制内存消耗:指定代码生成器将变量定义为局部变量或全局变量,以及指定数据如何传递给子系统函数。修改配置设置以减少用于存储数据的内存量。
代码生成器通过合并控制流构造、删除不影响计算结果的模块的无效代码路径和代码来减少 ROM 消耗。您可以通过删除可能不需要的代码(如初始化代码、重置和禁用函数以及防御性代码)来进一步减少 ROM 消耗。
对象
函数
主题
定义局部变量或全局变量
- Customize Stack Space Allocation
Control the maximum allowable stack size to provide some control over whether data is defined locally or globally in the generated code. - Reduce Memory Usage for Signals
Enable parameters that provide the capability to reuse memory allocated for signals. - Enable and Reuse Local Block Outputs in Generated Code
Where possible, the code generator declares block outputs as local variables, so that it can potentially reuse these variables. - 在生成的代码中重用全局模块输出
代码生成器尝试重用全局变量。 - 优化全局变量使用
选择全局变量引用优化来满足您的内存使用量和执行速度要求。 - Optimize Generated Code by Passing Reusable Subsystem Outputs as Individual Arguments
The code generator eliminates data copies from local variables back to global block I/O structures by passing reusable subsystem outputs as individual arguments instead of as a pointer to a structure stored in global memory. - Reduce Global Variables in Nonreusable Subsystem Functions
To reduce global RAM for a nonreusable subsystem, generate a function interface that passes data through arguments instead of global variables. - Reduce Memory Usage for Models Containing Referenced Models
Reduce RAM usage for a referenced model by generating optimized code that reuses buffers or generates reusable temporary buffers to hold referenced model outputs.
减小代码大小
- Remove Zero-Initialization Code
Control whether to initialize internal data (blocks states and block outputs) and external data (root inports and outports whose value is zero) in the generated code. - Remove Reset and Disable Functions from the Generated Code
Remove unreachable (dead-code) instances of the reset and disable functions from the generated code for ERT-based systems that include model referencing hierarchies. - Inline Invariant Signals
Use the numerical values of invariant signals instead of their symbolic names in the generated code. - Inline Numeric Values of Block Parameters
Reduce global RAM usage by inlining the literal numeric values of block parameters. - Optimize Generated Code by Consolidating Redundant If-Else Statements
The code generator optimizes the generated code by combiningif-else
statements that share the same condition. - Eliminate Dead Code Paths in Generated Code
The code generator eliminates dead (that is, unused) code paths from the generated code. - Optimize Generated Code by Combining Multiple for Constructs
The code generator uses data dependency analysis to combinefor
constructs to reduce static code size and runtime branching. - Control Generation of Initialization Code for Local Variables Set to Zero
By default, the code generator does not explicitly initialize local variables to zero.
减少用于存储数据的内存量
- Reuse Buffers of Different Sizes and Dimensions
Reuse buffers for matrices that have different sizes and shapes. - Reduce Memory Usage for Boolean and State Configuration Variables
Reduce the amount of memory that stores state configuration variables andBoolean
variables. - 优化时间计数器的内存使用量
优化代码生成器为经过时间计数器分配的内存。 - Optimize Generated Code Using Boolean Data for Logical Signals
The code generator optimizes the generated code by storing logical signals asBoolean
data types. - Optimize Generated Code by Packing Boolean Data into Bitfields
The code generator reduces RAM consumption by packing boolean data into 1-bit bitfields. - Vector Operation Optimization
The code generator reduces stack memory by replacing temporary local arrays with local variables. - Specify Single-Precision Data Type for Embedded Application
Generate code whose floating-point data types are only single precision, for example, for targeting a single-precision processor. - Generate Efficient Code by Specifying Data Types for Block Parameters
To generate more efficient code, match parameter data types with signal data types or store parameters in smaller data types. - Control Operator Type in Generated Code
Generate code with Logical or Bitwise Operators or a combination of both operators.
分析堆栈使用量
- Stack Usage Profiling for Code Generated from Simulink Models
Determine size of stack memory that is required to run generated code.