减少不可重用的子系统函数中的全局变量
全局变量会增加内存需求并降低执行速度。为了减少不可重用子系统的全局 RAM,您可以生成一个通过参量而不是全局变量传递数据的函数接口。Subsystem 模块参数函数接口提供了此选项。要比较函数接口选项的输出,请为具有 void-void 接口的子系统生成一个函数,然后生成一个带有参量的函数。
生成 void-void 函数
默认情况下,当您将 Subsystem 模块配置为不可重用函数时,它会生成 void-void 接口。
打开示例模型
RollAxisAutopilot。openExample('RollAxisAutopilot');右键点击子系统
RollAngleReference。从列表中选择模块参数(子系统)。在“模块参数”对话框中,确认选中了视为原子单元复选框。
点击代码生成选项卡并将代码接口打包参数设置为不可重用函数。
函数接口参数已设置为
void_void。点击应用和确定。
对于其他子系统
HeadingMode和BasicRollMode,重复步骤 2-6。为
RollAxisAutopilot生成代码和静态代码度量报告。该模型配置为生成代码生成报告并自动打开报告。有关详细信息,请参阅Generate Static Code Metrics Report for Simulink Model。
在代码生成报告中,在 RollAxisAutopilot.c 中,子系统 RollAngleReference 的生成代码包含一个 void-void 函数定义:
static void RollAngleReference(void)
{
...
}
void_void 选项,全局变量的字节数为 47。

接下来,使用 Allow arguments (Optimized) 选项生成相同的函数来比较结果。
生成带参量的函数
为了减少全局 RAM,提高 ROM 使用率和执行速度,生成一个允许参量的函数:
打开
RollAngleReference的 Subsystem 模块参数对话框。点击代码生成选项卡。将函数接口参数设置为允许参量 (优化)。
点击应用和确定。
对于其他子系统
HeadingMode和BasicRollMode,重复步骤 2 和 3。为
RollAxisAutopilot生成代码和静态代码度量报告。
在代码生成报告中,在 RollAxisAutopilot.c 中,子系统 RollAngleReference 的生成代码现在具有参量:
static real32_T RollAngleReference(real32_T rtu_Phi,...
boolean_T rtu_AP_Eng,...
real32_T rtu_Turn_Knob)
{
...
}
Allow arguments 选项后,全局变量的总字节数现在为 39 字节。

在某些情况下,生成优化代码时,代码生成器可能不会生成具有参量的函数。要生成具有参量的可预测函数接口,请将函数接口设置为允许参量 (匹配图形接口)。