创建自定义代码生成目标
代码生成顾问根据您指定的目标审查您的模型。如果预定义的效率、可追溯性、安全预防和调试目标不满足您的需求,您可以创建自定义目标。
创建自定义目标:
创建一个目标,并为这个新目标添加参数和检查。
在现有目标的基础上创建目标,然后在新目标中添加、修改和删除参数和检查。
在自定义目标中指定参数
创建自定义目标时,指定代码生成Advisor查看的配置参数的值。可以使用以下方法:
addParam
-添加参数并指定代码生成顾问查看的值根据代码生成目标检查模型配置设置.modifyInheritedParam
-修改代码生成顾问查看的继承参数值根据代码生成目标检查模型配置设置.removeInheritedParam
-删除基于现有目标的新目标的继承参数。在选择多个目标时,如果另一个所选目标包含此参数,则代码生成顾问将在中查看参数值根据代码生成目标检查模型配置设置.
在自定义目标中指定检查
目标包括根据代码生成目标检查模型配置设置默认为勾选。创建自定义目标时,可以指定与自定义目标关联的其他检查列表。可以使用以下方法:
addCheck
-向代码生成顾问添加检查。当您选择自定义目标时,代码生成顾问将显示检查,除非您指定了具有更高优先级的其他目标,排除了检查。例如,向Code Generation Advisor添加一个检查,以便在自动模型检查过程中包含一个自定义检查。
excludeCheck
-从代码生成顾问中排除检查。当您选择多个目标时,如果您指定一个附加目标,其中包含此检查作为更高优先级的目标,则代码生成顾问将显示此检查。例如,当检查需要很长时间处理时,从代码生成顾问中排除检查。
removeInheritedCheck
-删除基于现有目标的新目标的继承检查。当选择多个目标时,如果另一个所选目标包含此复选,则“代码生成顾问”将显示该复选。例如,当检查需要很长时间来处理,但检查对另一个目标很重要时,删除继承的检查,而不是排除该检查。
确定现有目标中的检查和参数
当您将新目标建立在现有目标的基础上时,您可以确定现有目标包含哪些检查和参数。代码生成顾问包含每个目标中的检查列表。
例如,效率
目标包括您可以在代码生成顾问中看到的检查。
打开
rtwdemo_rtwecintro
模型。指定一个基于ert的目标。
在C代码选项卡上,单击C/ c++代码顾问.
在System Selector窗口中,选择您想要检查的模型或子系统,然后单击好吧.
在“代码生成顾问”中代码生成目标窗格中,选择代码生成目标。当您选择目标时,在左侧窗格中,代码生成顾问更新它在您的模型上运行的检查列表。对于本例,选择
执行效率
.在可用的目标,双击执行效率
.执行效率
被添加到选定目标-优先级.
属性的检查在左侧窗格中,代码生成顾问列出了执行效率
目标。第一次检查,根据代码生成目标检查模型配置设置,列出目标指定的参数和值。中的参数列表和推荐值执行效率
目标。要查看参数和值列表:
运行根据代码生成目标检查模型配置设置.
点击修改参数.
重新运行检查。
在检查结果中,代码生成顾问显示参数列表和建议值执行效率
目标。
创建自定义目标的步骤
创建一个自定义目标:
创建一个
sl_customization.m
文件。在单个文件中指定自定义目标
sl_customization.m
文件或软件产生错误。即使你有不止一个问题,这个问题也是正确的sl_customization.m
你的MATLAB文件®路径。除了
文件夹,不要放置matlabroot
/工作sl_customization.m
文件在您的MATLAB根文件夹或其子文件夹。否则,软件将忽略文件指定的自定义。
创建一个
sl_customization
函数,该函数只接受一个参数。当软件调用该函数时,此参数的值是Simulink金宝app®定制的经理。函数中:要创建代码生成目标的句柄,请使用
ObjectiveCustomizer
构造函数。要为自定义目标注册回调函数,请使用
ObjectiveCustomizer.addCallbackObjFcn
方法。要添加调用以执行回调函数,请使用
ObjectiveCustomizer.callbackFcn
方法。
例如:
函数sl_customization (cm)目标自定义回调objCustomizer = cm.ObjectiveCustomizer;index = objCustomizer.addCallbackObjFcn(@ addobjects);objCustomizer.callbackFcn{指数}();结束
创建一个MATLAB回调函数:
属性创建代码生成目标对象
rtw.codegenObjectives.Objective
构造函数。属性为每个目标添加、修改和删除配置参数
addParam
,modifyInheritedParam
,removeInheritedParam
方法。方法对每个目标包括和排除检查
addCheck
,excludeCheck
,removeInheritedCheck
方法。方法注册目标
注册
方法。
下面的示例展示了如何创建目标
减少内存示例
.减少内存示例
包括代码生成顾问审查的五个参数和三个检查。函数addObjectives创建自定义目标obj = rtw. codegengoals . objective (“ex_ram_1”);setObjectiveName (obj,“减少内存示例”);为目标添加参数addParam (obj,“DefaultParameterBehavior”,“内联”);addParam (obj,“BooleanDataType”,“上”);addParam (obj,“OptimizeBlockIOStorage”,“上”);addParam (obj,“EnhancedBackFolding”,“上”);addParam (obj,“BooleansAsBitfields”,“上”);为目标添加额外的检查代码生成顾问自动包含“检查模型”%配置针对代码生成目标的设置%的目标。addCheck (obj,“mathworks.design.UnconnectedLinesPorts”);addCheck (obj,“mathworks.design.Update”);%注册目标注册(obj);结束
下面的示例向您展示如何创建目标
我的追溯性示例
基于现有的可追溯目标。自定义目标修改、删除和添加代码生成顾问检查的参数。它还从代码生成顾问中添加和删除检查。函数addObjectives从现有目标创建自定义目标obj = rtw. codegengoals . objective (“ex_my_trace_1”,“可追溯性”);setObjectiveName (obj,“我的追溯例子”);修改目标中的参数modifyInheritedParam (obj,“GenerateTraceReportSf”,“关闭”);removeInheritedParam (obj,“ConditionallyExecuteInputs”);addParam (obj,“MatFileLogging”,“上”);在目标中修改检查addCheck (obj,“mathworks.codegen.SWEnvironmentSpec”);removeInheritedCheck (obj,“mathworks.codegen.CodeInstrumentation”);%注册目标注册(obj);结束
如果您以前打开了代码生成Advisor,请关闭从中打开代码生成Advisor的模型。
刷新定制管理器。在MATLAB命令行中,输入
sl_refresh_customizations
.打开您的模型并检查新的目标。