如果要使用自定义系统目标文件构建具有引用模型的模型,则必须配置自定义系统目标文件以支持模型引用。金宝app
建立引用其他模型的模型:
使用从GRT或ERT系统目标文件派生的自定义系统目标文件。
自定义系统目标文件必须声明模型引用遵从性——请参阅声明模型参考合规性.
模板makefile必须定义支持模型引用的某些实体 - 请参阅金宝app在TMF中提供模型引用支持金宝app.
要为目标声明模型引用合规性,必须实现设置的回调函数ModelReferenceCompliant
,然后将回调函数安装到SelectCallback
场面的领域RTWGenettings.
系统目标文件中的结构。每当用户在系统目标文件浏览器中选择目标时,都会触发回调函数。例如,以下系统目标文件代码安装aSelectCallback
函数命名custom_select_callback_handler.
:
rtwgensettings。SelectCallback= 'custom_select_callback_handler(hDlg,hSrc)';
关于SelectCallback
函数(处理
那HSRC.
)致电回调API函数使用的私有数据。这些句柄仅限于系统目标文件回调函数中使用。他们应该在没有改变的情况下传递。
您的回调函数应该设置ModelReferenceCompliant
标志如下:
slconfiguisetval(HDLG,HSRC,'ModelReferenceComplant','On');slconfiguisetenabled(HDLG,HSRC,'ModelReferenceComplant',False);hSrc.refreshDialog;
如果您可能使用目标来构建包含大型模型引用层次结构的模型,请考虑将目标配置为支持并行构建,如中所述金宝app通过使用并行构建减少引用模型的构建时间.
要为并行构建配置目标,您的回调函数还必须设置ParMdlRefBuildCompliant
标志如下:
slConfigUISetVal(处理,hSrc ParMdlRefBuildCompliant ', '对');slConfigUISetEnabled(处理、hSrc ParMdlRefBuildCompliant,假);hSrc.refreshDialog;
有关系统目标文件回调API的更多信息,请参见slconfiguigetval.
那slConfigUISetEnabled
,slconfiguisetval.
函数引用页面。
要为模型引用配置模板makefile(tmf):
生成Makefile时,添加以下Make变量和令牌才能进行扩展:
modelrefs = |> modelrefs <|modellib = |> modellib <|modelref_link_libs = |> modelref_link_libs <|modelref_link_rspfile = |> modelref_link_rspfile_name <|相对_path_to_anchor = |>相对_path_to_anchor <|modelref_target_type = |> modelRef_target_type <|
下面的代码片段展示了如何为引用的模型展开makefile令牌。
ModelRefs = Modellib = Engine3200cc_rtwlib.a modelref_link_libs = modelref_link_rspfile =相对_path_to_anchor = ../ ... modelref_target_type = RTW
以下代码efterpt显示了为引用引用模型的顶部模型扩展了Makefile令牌。
ModelRefs = Engine3200CC传输Modellib = ModelRef_Link_Libs = Engine3200CC_RTWLIB.a传输_rtwlib.a modelRef_link_rspfile =相对_path_to_anchor = .. modelref_target_type = none
令牌 | 扩展到 |
---|---|
梅德菲斯 对于顶级模型 |
参考模型名称列表。 |
MODELLIB |
为模型生成的库的名称。 |
modelref_link_libs. 顶级模特的令牌 |
顶级模型链接的引用模型库列表。 |
modelref_link_rspfile. 顶级模特的令牌 |
顶部模型链接的响应文件的名称。此令牌仅适用于支持链接器响应文件的构建环境。金宝app有关其使用的示例,请参阅 . |
active_path_to_anchor. |
相对路径,从生成的makefile的位置,到MATLAB®工作文件夹。 |
MODELREF_TARGET_TYPE |
表示正在构建的目标类型。可能的值是
|
如果您配置目标以支持并行构建,则如讨论的所讨论的金宝app通过使用并行构建减少引用模型的构建时间,还必须将下列令牌定义添加到TMF中:
Start_dir = |> Start_dir <| master_anchor_dir = |> master_anchor_dir <|
令牌 | 扩展到 |
---|---|
START_DIR |
当前的工作文件夹(松材线虫病 )在构建开始时。 |
MASTER_ANCHOR_DIR |
当前的工作文件夹(松材线虫病 )在构建开始时。 |
添加active_path_to_anchor.
包括整体的路径包括
变量。
包括= -i。-i $(相对_path_to_anchor)$(add_includes)\ $(user_includes)$(shared_includes)
改变src
变量,以便它最初只列出通用模块。然后,按照下一步的描述,有条件地添加其他模块。例如,改变
$(MODEL).c $(MODULES) ert_main.c $(ADD_SRCS) $(EXT_SRC)
到目前为止
srcs = $(模块)
创建变量以定义makefile的最终目标。您可以删除可能存在用于定义最终目标的变量。例如,删除
程序= . . / $(模型)
然后用
ifeq ($ (MODELREF_TARGET_TYPE),环球套票产品= NONE) #高层模型(RELATIVE_PATH_TO_ANCHOR) /(模型)美元BIN_SETTING = (LD)美元(LDFLAGS) - o(产品)(SYSLIBS) BUILD_PRODUCT_TYPE =美元“可执行”# ERT建立目标src + =(模型). c ert_main.c美元(EXT_SRC) # GRT建立目标# src + = $(模型). c grt_main.c rt_sim.c (EXT_SRC)其他(解决)#美元被环球套票产品=$(MODELLIB) BUILD_PRODUCT_TYPE = "库" endif
注意
如果模板生成文件与工具链相关联,则删除$(型号).c
或者$(型号)。$(target_lang_ext)
从src
列表。
为Makefile的最终目标创建规则(替换现有最终目标规则)。例如:
ifeq ($(MODELREF_TARGET_TYPE),NONE) # Top model for RTW $(PRODUCT): $(OBJS) $(LIBS) $(MODELREF_LINK_LIBS) $(BIN_SETTING) $(LINK_OBJS) $(MODELREF_LINK_LIBS) $(LIBS) @echo "### # Created $(BUILD_PRODUCT_TYPE): $@" else # submodel for RTW $(PRODUCT):$(OBJS) $(LIBS) @rm -f $(MODELLIB) $(ar) ruvs $(MODELLIB) $(LINK_OBJS) @echo "### #创建的$(MODELLIB)"@echo "###已创建的$(BUILD_PRODUCT_TYPE): $@
创建规则以允许引用的模型编译驻留在MATLAB工作文件夹中的文件(松材线虫病
).
%.o: $ (RELATIVE_PATH_TO_ANCHOR) / % c $ (CC) - c (CFLAGS) <美元
注意
如果您正在使用一个没有变量的TMF梅德菲斯
,该文件可能已与以前的Simulink发布一起使用金宝app®软件。如果您希望TMF支持模型引用,请添加可变变量金宝app梅德菲斯
到make文件。
默认情况下,在系统目标文件中为基于tlc的自定义目标定义的配置选项的值必须在被引用的模型和它的父模型中相同。要放宽这个要求,包括ModelReferenceParameterCheck.
田野RTWOPTIONS.
定义配置选项的结构元素,并将字段的值设置为“关闭”
.例如:
RTWOPTIONS(2).prompt ='我的自定义参数';RTWOPTIONS(2).type ='checkbox';RTWOPTIONS(2).default ='ON';RTWOPTIONS(2).ModelreferenceParameterCheck ='ON';RTWOPTIONS(2).tlcvariable ='mytlcvariable';......
配置选项我的自定义参数可以在引用的模型及其父模型中不同。看自定义系统目标文件有关基于TLC的系统目标文件的信息,以及rtwoptions结构字段摘要查看RTWOPTIONS.
字段。
钩子文件是可选的TLC和MATLAB程序文件,该文件在构建过程的明确阶段中调用。钩子文件允许您自定义构建过程并在过程的各个阶段之间传达信息。
如果您正在调整您的自定义目标以使代码生成与模型引用特性兼容,请考虑在钩子文件中添加检查,以以不同于顶级模型的方式处理引用模型,以防止资源冲突。
例如,考虑添加以下支票给您的
:STF.
_make_rtw_hook.m文件
%检查是否这是一个引用模型mdlRefTargetType = get_param(codeGenModelName, ' ModelReferenceTargetType');isNotModelRefTarget = strcmp(mdlRefTargetType, ' NONE');% NONE, SIM,或RTW如果isNotModelRefTarget是特定于顶级模型的%代码,否则是特定于引用模型的%代码
您可能需要在TLC代码中进行类似的检查。
%if!ismodelreferenceTarget()%%代码特定于顶级型号%% %%代码,该代码特定于引用的模型%ENDIF