定制系统的目标文件
本节提供的结构信息系统目标文件,定制指南系统目标文件和一个基本的教程可以帮助你生产一个骨骼系统的目标文件。
与系统控制代码生成目标文件
系统目标文件控制代码生成阶段的构建过程。系统目标文件还允许你控制你的目标的演讲给最终用户。系统目标文件提供
定义的变量的基本构建过程,如的值
CodeFormat
TLC变量顶级的主要入口点薄层色谱程序生成的代码
目标信息显示系统中的目标文件浏览器
机制来定义目标特定的代码生成选项(和其他参数与构建过程)和显示它们的配置参数对话框
继承机制选择的另一个目标(如嵌入式实时(ERT)目标)
注意,尽管系统目标文件是一个目标语言编译器(TLC)文件,它包含嵌入式MATLAB®代码。在创建或修改一个系统目标文件之前,您应该获得一个工作的TLC和MATLAB语言的知识。目标语言编译器和脚本和函数描述的特性和TLC和MATLAB语言的语法。
在阅读这一节中,您可能想要参考提供的系统目标文件代码生成器。这些文件都存储在有针对性的文件夹下
(开放)。额外的文件存储在系统目标matlabroot
/ rtw / c
(开放)。matlabroot
/工具箱/ rtw /目标
系统目标文件命名约定和位置
系统目标文件必须位于一个文件夹在MATLAB路径显示为目标系统中的目标文件浏览器,在构建过程中调用。遵循系统目标文件的位置和命名约定和相关的目标文件中给出文件夹和文件命名约定。
系统目标文件结构
概述
本节是一个指南系统目标文件的结构和内容。下面的清单显示了系统的总体结构目标文件。请注意,这不是一个完整的代码清单系统的目标文件。清单由摘录的每个部分组成系统的目标文件。
% % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % %头评论部分% % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % % SYSTLC:实时目标% % TMF例子:my_target。tmf: make_rtw % %初始评论包含指令算法浏览器。% %文档、日期、版权和其它信息可能会效仿……% selectfile NULL_FILE……% % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % % % % TLC配置变量部分- - - - - - - - - - - - - - - - - - - - - - - - - - - - - % %分配代码格式,语言,目标类型。% % %分配CodeFormat = " Embedded-C " %分配TargetType =“RT”%分配语言= " C " % % % % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % % TLC程序入口点% % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % %调用入口点函数。%包括“codegenentry.tlc”%% %%---------------------------- %% (OPTIONAL) Generate Files for Build Process %%---------------------------- %include "mytarget_genfiles.tlc" %%---------------------------- %% RTW_OPTIONS Section %%---------------------------- /% BEGIN_RTW_OPTIONS %% Define rtwoptions structure array. This array defines target-specific %% code generation variables, and controls how they are displayed. rtwoptions(1).prompt = 'example code generation options'; ... rtwoptions(6).prompt = 'Show eliminated blocks'; rtwoptions(6).type = 'Checkbox'; ... %----------------------------------------% % Configure RTW code generation settings % %----------------------------------------% ... %%---------------------------- %% rtwgensettings Structure %%---------------------------- %% Define suffix text for naming build folder here. rtwgensettings.BuildDirSuffix = '_mytarget_rtw' %% Callback compatibility declaration rtwgensettings.Version = '1'; %% (OPTIONAL) target inheritance declaration rtwgensettings.DerivedFrom = 'ert.tlc'; %% (OPTIONAL) other rtwGenSettings fields... ... END_RTW_OPTIONS %/ %%---------------------------- %% targetComponentClass - MATHWORKS INTERNAL USE ONLY %% REMOVE NEXT SECTION FROM USER_DEFINED CUSTOM TARGETS %%---------------------------- /% BEGIN_CONFIGSET_TARGET_COMPONENT targetComponentClass = 'Simulink.ERTTargetCC'; END_CONFIGSET_TARGET_COMPONENT %/
如果你创建一个自定义目标基于现有系统目标文件,你必须删除targetComponentClass
部分(有界的指令BEGIN_CONFIGSET_TARGET_COMPONENT
和END_CONFIGSET_TARGET_COMPONENT
)。这部分是留给由MathWorks开发内部使用的目标。
头的评论
这些线的头文件格式化为TLC评论。他们提供了必要的信息系统目标文件浏览器和构建过程。请注意,您必须将浏览器评论的头文件,在其他评论或TLC语句。
评论的存在使代码生成器来检测系统的目标文件。当系统目标文件浏览器打开,代码生成器为薄层色谱扫描MATLAB路径文件格式化标题评论。评论中包含以下指令:
SYSTLC:在浏览器中出现的描述符。
TMF:命名模板的makefile (TMF)建造过程中使用。当目标被选中,这是显示在文件名模板makefile场的代码生成面板的配置参数对话框。
使:
使
命令构建过程中使用。当目标被选中时,该命令显示在使命令场的代码生成面板的配置参数对话框。
以下标题评论
。matlabroot
/ rtw / c / ert /ert.tlc
% % SYSTLC:嵌入式编码器TMF: ert_default_tmf: make_rtw % % SYSTLC:创建Visual C / c++解决方案文件为嵌入式编码\ % % TMF:环球套票。MSVCBuild: make_rtw。
每个评论最多只能包含两行。
如果你不指定TMF
场系统中目标文件,文件仍然是有效的。改变的值TemplateMakefile
参数,您可以使用指定的回调函数rtwgensettings.SelectCallback
。
您还可以使用指定的回调函数rtwgensettings.SelectCallback
改变外部模式参数的值,ExtMode
,ExtModeTransport
,ExtModeMexFile
,或ExtModeIntrfLevel
。
您可以指定超过一组的指令在评论标题。每一个这样的组织系统中显示为一个不同的目标配置目标文件浏览器。在上面的示例中,第一个两行代码指定的默认配置ERT目标。下两行指定一个配置,创建和构建微软®Visual c++®解决方案(. sln
)文件。下图显示了这些配置系统中出现目标文件浏览器。
看到创建一个自定义目标配置对于一个定制的头注释的例子。
薄层色谱配置变量
这部分的系统目标文件分配全球TLC变量与整体代码生成过程。
对于嵌入式目标,在大多数情况下,您应该使用全局TLC变量设置使用的ERT目标(ert.tlc
)。尤为重要,系统目标文件使用“Embedded-C”
值CodeFormat
TLC变量,并使用相应的rtwgensettings.DerivedFrom= 'ert.tlc'
在RTW_OPTIONS
薄层色谱的文件。验证的值分配给以下变量:
CodeFormat
:CodeFormat
TLC变量选择生成的代码功能。的“Embedded-C”
使用这个变量值ERT目标。你ERT-based应该指定目标“Embedded-C”
的价值CodeFormat
。这个选择是专为生产代码,最小的内存使用情况,静态内存分配和一个简化的接口生成的代码。其他值的信息
CodeFormat
TLC变量,看到不同产品的比较系统目标文件支持下载188bet金宝搏金宝app。语言
:唯一有效的值C
,使支持金宝appC
或c++
代码生成指定的配置参数TargetLang
。TargetType
:代码生成器将预处理器定义符号RT
和NRT
区分从实时仿真代码的代码。这些符号用于条件编译。的TargetType
变量决定RT
或NRT
定义。大多数的目标旨在生成实时代码。他们分配
TargetType
如下。%分配TargetType = " RT "
一些目标,如模型参考仿真目标,加速模拟目标,RSim目标,和功能目标,只能用于nonreal生成代码的时间。这样的目标分配
TargetType
如下。%分配TargetType = " NRT "
薄层色谱程序入口点和相关%包括
代码生成过程通常始于codegenentry.tlc
。系统目标文件调用codegenentry.tlc
如下。
%包括“codegenentry.tlc”
请注意
codegenentry.tlc
假设和低层TLC文件CodeFormat
,TargetType
,语言
已分配。包括之前设置这些变量codegenentry.tlc
。
如果你需要实现有针对性的代码生成功能,您应该包括薄层色谱文件mytarget_genfiles.tlc
目标文件在你的系统。这个文件提供了一种机制执行定制TLC代码调用之前和之后codegenentry.tlc
。这种机制的信息,请参阅
使用mytarget_genfiles.tlc定制的薄层色谱的一个示例代码执行后的主要入口点生成代码。
目标开发和构建过程构建过程的一般信息,其他信息构建过程定制挂钩。
自定义代码生成过程的另一种方法是调用底层函数(通常调用codegenentry.tlc
直接),包括自己的TLC函数在每个阶段的过程。这种方法应该谨慎对待。看到薄层色谱文件为更多的信息。
低级函数调用codegenentry.tlc
是
genmap.tlc
:块名称映射到相应的特定于语言的目标文件。commonsetup.tlc
:设置全局变量。commonentry.tlc
:开始生成代码的过程。
RTW_OPTIONS节
的RTW_OPTIONS
部分是有界的指令:
/ % BEGIN_RTW_OPTIONS。。。END_RTW_OPTIONS % /
的第一部分RTW_OPTIONS
部分定义了一个数组rtwoptions
结构。讨论了这种结构使用rtwoptions显示定制的目标选择。
的第二部分RTW_OPTIONS
部分定义rtwgensettings
,一个结构定义建立文件夹名称和代码生成过程的其他设置。看到rtwgensettings结构和有关信息。rtwgensettings
。
rtwgensettings结构
最后一部分定义了系统的目标文件rtwgensettings
结构。该结构存储信息写入
所使用的文件和构建过程。的模型
.rtwrtwgensettings
开发人员最感兴趣的目标
rtwgensettings.Version
:使用这个属性来启用rtwoptions
回调函数,并使用回调APIrtwgensettings.SelectCallback
。请注意
使用回调,你必须设置:
rtwgensettings.Version= '1';
上面的语句添加到环球套票代码生成配置设置部分系统的目标文件。
rtwgensettings.DerivedFrom
:这个结构字段定义了系统目标文件的选项被继承。看到继承目标选择。rtwgensettings.SelectCallback
:这个结构字段指定一个SelectCallback
函数。必须设置rtwgensettings.Version= '1';
或者你回调将被忽略。SelectCallback
与目标相关联,而不是任何的个人选择。的SelectCallback
功能当你触发:加载模型。
更新的配置设置配置参数对话框。
构建的模型。
的
SelectCallback
函数是用于设置(或禁用)配置参数特定于目标。下面的代码安装一个
SelectCallback
功能:rtwgensettings.SelectCallback= 'my_select_callback_handler(hDlg,hSrc)';
的参数
SelectCallback
函数(hSrc处理)
使用的是私有数据处理回调API函数。请注意
如果你开发了一个自定义的目标和你想要兼容模型引用,您必须实现
SelectCallback
函数声明模型参考兼容性。看到金宝app支持模型引用。rtwgensettings.ActivateCallback
:这个属性指定一个ActivateCallback
函数。的ActivateCallback
函数时触发激活配置集模型的变化。这可能发生在模型加载,并且当用户更改激活配置集。下面的代码安装一个
ActivateCallback
功能:rtwgensettings.ActivateCallback= 'my_activate_callback_handler(hDlg,hSrc)';
的参数
ActivateCallback
函数(hSrc处理)
使用的是私有数据处理回调API函数。rtwgensettings.PostApplyCallback
:这个属性指定一个PostApplyCallback
函数。的PostApplyCallback
当用户单击触发功能应用或好吧按钮编辑选项后配置参数对话框。的PostApplyCallback
函数被调用后,已经应用于配置设置的更改。下面的代码安装一个
PostApplyCallback
功能:rtwgensettings.PostApplyCallback= 'my_postapply_callback_handler(hDlg,hSrc)';
的参数
PostApplyCallback
函数(hSrc处理)
使用的是私有数据处理回调API函数。rtwgensettings.BuildDirSuffix
:大多数目标定义一个文件夹名称后缀识别建立文件夹创建的目标。在构建过程中定义附加后缀rtwgensettings.BuildDirSuffix
领域模型的名字建立文件夹的名称。例如,如果您定义的rtwgensettings.BuildDirSuffix
如下rtwgensettings.BuildDirSuffix= '_mytarget_rtw'
构建文件夹命名
。模型
_mytarget_rtw
额外的代码生成选项
配置生成的代码与薄层色谱代码生成变量描述了额外的关爱。最终用户的目标可以分配这些变量通过输入MATLAB命令的形式
set_param (modelName TLCOptions, -aVariable =瓦尔”);
(有关更多信息,请参见为代码生成指定TLC。)
然而,首选的方法是分配这些变量在系统目标文件使用语句的形式:
%分配变量=瓦尔
为了可读性,我们建议您添加这样的作业系统的部分目标文件后发表评论环球套票代码生成配置设置。
模型参考注意事项
看到金宝app支持模型引用对系统目标文件和其他重要信息修改您可能需要支持代码生成器模型引用特性。金宝app
定义和显示自定义目标的选择
使用rtwoptions显示定制的目标选择
你控制的选项来显示的代码生成面板配置参数对话框中通过定制rtwoptions
结构系统目标文件。
的字段rtwoptions
结构定义变量和相关的用户界面元素配置参数对话框中显示。使用rtwoptions
结构数组,您可以定义有针对性的选项对话框中显示和选择组织成目录。您还可以编写回调函数来指定如何处理这些选项。
当代码生成窗格打开时,rtwoptions
结构数组显示扫描和列出的选项。每个选项都表示为一个指定的用户界面元素(复选框,编辑字段、菜单或按钮),显示当前的选项值。
的用户界面元素可以启用或禁用(似乎变暗)状态。如果启用了一个选项,用户可以修改的选项值。如果一个选项被禁用,选择使用默认值,用户不能改变选项值。
您还可以使用rtwoptions
结构数组定义特殊NonUI元素,导致回调函数被执行,但不显示在代码生成窗格。看到NonUI元素。
的元素rtwoptions
结构数组分成组。每组的物品开始头元素的类型类别
。默认的一个领域类别
头文件必须包含一个计数剩余的元素类别。
的类别
头是选项显示在紧随其后代码生成窗格。每个类别的标题是紧随其后的是一个或多个选项定义元素。
每个类别列出的目标选择对应选项代码生成在配置参数对话框。
表rtwoptions结构字段汇总总结了的字段rtwoptions
结构。
例子rtwoptions结构。以下rtwoptions
结构是摘自一个例子系统目标文件,
。代码定义了一个matlabroot
/工具箱/ rtw / rtwdemos / rtwoptions_demo /usertarget.tlcrtwoptions
结构数组。第一个(头)元素的默认字段设置为4
指示元素的个数,按照标题。
rtwoptions (1)。提示= 'userPreferred target options (I)'; rtwoptions(1).type = 'Category'; rtwoptions(1).enable = 'on'; rtwoptions(1).default = 4; % number of items under this category % excluding this one. rtwoptions(1).popupstrings = ''; % At the first item, user has to rtwoptions(1).tlcvariable = ''; % initialize all supported fields rtwoptions(1).tooltip = ''; rtwoptions(1).callback = ''; rtwoptions(1).makevariable = ''; rtwoptions(2).prompt = 'Execution Mode'; rtwoptions(2).type = 'Popup'; rtwoptions(2).default = 'Real-Time'; rtwoptions(2).popupstrings = 'Real-Time|UserDefined'; rtwoptions(2).tlcvariable = 'tlcvariable1'; rtwoptions(2).tooltip = ['See this text as tooltip']; rtwoptions(3).prompt = 'Log Execution Time'; rtwoptions(3).type = 'Checkbox'; rtwoptions(3).default = 'on'; rtwoptions(3).tlcvariable = 'RL32LogTETModifier'; rtwoptions(3).tooltip = ['']; % no tooltip rtwoptions(4).prompt = 'Real-Time Interrupt Source'; rtwoptions(4).type = 'Popup'; rtwoptions(4).default = 'Timer'; rtwoptions(4).popupstrings = 'Timer|5|6|7|8|9|10|11|12|13|14|15'; rtwoptions(4).tlcvariable = 'tlcvariable3'; rtwoptions(4).callback = 'usertargetcallback(hDlg, hSrc, ''tlcvariable3'')'; rtwoptions(4).tooltip = ['']; rtwoptions(4).tooltip = ['See TLC file for how to use reserved '... ' keyword ''hDlg'', and ''hSrc''.']; ... rtwoptions(5).prompt = 'Signal Logging Buffer Size in Doubles'; rtwoptions(5).type = 'Edit'; rtwoptions(5).default = '100000'; rtwoptions(5).tlcvariable = 'tlcvariable2'; rtwoptions(5).tooltip = [''];
第一个元素添加一个userPreferred目标选项(我)窗格下代码生成在配置参数对话框。中定义的窗格显示选项rtwoptions (2)
,rtwoptions (3)
,rtwoptions (4)
,rtwoptions (5)
。
如果你想定义一个大量的选项,您可以定义多个类别
组织在一个系统目标文件。
注意rtwoptions
结构和回调是用MATLAB编写的代码,虽然他们是嵌入在一个薄层色谱文件。来验证你的语法rtwoptions
结构定义和代码,您可以执行的命令在MATLAB提示通过复制和粘贴到MATLAB命令窗口。
更多地了解usertarget.tlc
提供的示例调文件,看看示例系统与定制rtwoptions目标文件。更有针对性的例子rtwoptions
定义,请参阅
下的文件目标
.tlc
(开放)。matlabroot
/ rtw / c
rtwoptions结构字段汇总列表的字段rtwoptions
结构。
rtwoptions结构字段汇总
字段名 | 描述 |
---|---|
|
回调使用的例子,请参阅示例系统与定制rtwoptions目标文件。 |
|
不要使用
回调使用的例子,请参阅示例系统与定制rtwoptions目标文件。 |
|
选项(空的默认值 |
|
必须 |
|
模板makefile标记(如果有的话)的选择。的 |
modelReferenceParameterCheck |
指定的选项是否必须有相同的值引用模型及其母公司模型。如果这个字段是不明或有价值“上” 选项值必须相同。如果指定的字段和有价值“关闭” 可以不同的选项值。看到控制协议配置选项值。 |
|
元素不显示,但用于调用关闭或打开的回调。看到NonUI元素。 |
|
不要使用 回调使用的例子,请参阅示例系统与定制rtwoptions目标文件。 |
|
如果 “rt_ | _rt |没有的 |
|
标签选项。 |
|
TLC变量的名称与选择有关。 |
|
帮助文本时显示鼠标的项目。 |
|
类型的元素: |
NonUI元素。的元素rtwoptions
数组的类型NonUI
存在只调用回调。一个NonUI
元素没有在配置参数对话框中显示。您可以使用一个NonUI
元素如果你想执行一个回调没有关联到一个用户界面元素,当打开或关闭的对话框。见下一节,示例系统与定制rtwoptions目标文件了一个例子。
请注意
一个元素的默认值类型NonUI
或编辑
确定的值允许集元素。
如果默认值是
' 0 '
或' 1 '
:型
NonUI
,元素存储一个布尔值。型
编辑
的元素存储值类型int32
。
如果默认值包含一个整数以外
' 0 '
或' 1 '
的元素存储值类型int32
。如果不包含一个整数,默认值评估元素作为特征向量。
示例系统与定制rtwoptions目标文件
一个工作系统的目标文件,使用MATLAB文件回调函数,提供了一个如何使用的例子rtwoptions
结构来显示和处理自定义选项代码生成窗格。回调的例子是兼容的API。
目标文件的示例文件夹(开放):
matlabroot/工具箱/ rtw / rtwdemos / rtwoptions_demo
目标文件的示例包括:
usertarget.tlc
:系统目标文件的例子。这个文件演示了如何自定义菜单、复选框和编辑字段。该文件还演示了使用回调。usertargetcallback.m
菜单:MATLAB文件调用回调。
参考示例文件,阅读本部分。系统目标文件的例子中,usertarget.tlc
:说明使用rtwoptions
显示下面的自定义目标选项:
的执行模式菜单。
的记录执行时间复选框。
的实时中断源菜单。菜单执行外部文件中定义一个回调,
usertargetcallback.m
。TLC变量相关的菜单是通过回调,这显示菜单的当前值。编辑字段信号在双打日志缓冲区大小。
试着学习示例代码而相互作用中的例子目标选项配置参数对话框。与目标文件的例子中,
使
(开放你的工作目录。matlabroot
/工具箱/ rtw / rtwdemos / rtwoptions_demo打开一个模型,你的选择。
打开配置参数对话框并选择代码生成窗格。
点击浏览。系统目标文件浏览器打开。选择
usertarget.tlc
。然后单击好吧。观察到的代码生成窗格中包含一个自定义的子:userPreferred目标选项(我)。
当你与这类选项,打开和关闭配置参数对话框中,观察在MATLAB命令窗口中显示的消息。这些消息从代码在系统中目标文件打印,或从系统调用回调目标文件。
继承目标选择
ert.tlc
提供了一组基本的嵌入式编码®代码生成选项。如果你的目标是基于ert.tlc
通常,您的系统目标文件应该继承ERT中定义的选项。
使用rtwgensettings.DerivedFrom
字段rtwgensettings
结构定义的系统目标文件选项被继承。你应该定制目标转换为使用该机制如下。
设置rtwgensettings.DerivedFrom
字段值在下面的例子:
rtwgensettings.DerivedFrom= 'stf.tlc';
在哪里月31
是系统的目标文件选项的名称被继承。例如:
rtwgensettings.DerivedFrom= 'ert.tlc';
当配置参数对话框执行这行代码,它包含的选项stf.tlc
自动。如果stf.tlc
是MathWorks内部系统目标文件被转换为一个新的布局,对话框显示继承的选项使用新的布局。
处理不支持的选项。金宝app如果你的目标不支持继承的所有选项金宝appert.tlc
,你应该检测不受支持的选项设置和显示一个警告金宝app或错误消息。在某些情况下,如果用户选择了一个选项不支持你的目标,你可能需要中止构建过程。金宝app例如,如果你的目标不支持金宝app主程序生成一个例子不应该允许选择,构建过程继续,如果选项被选中。
即使你的目标可能不支持所有继承ERT选项,要求保留的ERT选项金宝app代码生成面板的配置参数对话框。不要简单地移除不支持的选项金宝apprtwoptions
结构系统中的目标文件。对话框中的选项必须扫描的代码生成器,它执行优化。
例如,您可能想要阻止用户关掉单输出/更新功能选择。似乎合理的从对话框中删除这个选项,只是分配TLC变量CombineOutputUpdateFcns
来在
。然而,如果选择是不包括在对话框中,代码生成器假定输出和更新功能不结合。生成更高效的代码。
定制您的系统目标文件的提示和技巧
介绍
以下部分包括信息技术来定制您的系统目标文件,包括:
如何调用自定义TLC代码从你的系统目标文件
支持多种开发环境的方法金宝app
考虑当你更新你的系统目标文件
要求和建议%包括
如果你需要实现有针对性的代码生成功能,我们建议您的系统目标文件包括薄层色谱文件mytarget_genfiles.tlc
。
一旦你的系统目标文件设置所需的TLC环境,你必须包括codegenentry.tlc
开始标准代码生成过程。
mytarget_genfiles.tlc
提供了一种机制来执行定制的TLC代码后,主要生成代码入口点。看到使用mytarget_genfiles.tlc。
使用mytarget_genfiles.tlc。mytarget_genfiles.tlc
(可选)是有用的作为一个中央文件的调用有针对性的TLC文件生成额外的文件作为你的目标构建过程的一部分。例如,你的目标可能为开发环境,创建sub-makefiles或项目文件或命令脚本调试器自动下载。
构建过程可以调用这些生成的文件直接从制造过程或之后创建可执行。这是完成了
机制,如中描述自定义构建过程与STF_make_rtw_hook文件。月31
_make_rtw_hook.m
下面的TLC代码显示了一个示例mytarget_genfiles.tlc
文件。
% selectfile NULL_FILE %分配ModelName = CompiledModel。名称% %创建脚本调试器%分配model_script_file = " % < ModelName >。cfg " %分配script_file = " debugger_script_template。tlc“%如果RTWVerbose % selectfile STDOUT # # #创建% < model_script_file > % selectfile NULL_FILE % endif %包括“% < script_file >“% openfile bld_file = " % < model_script_file >”% < CreateDebuggerScript () > % closefile bld_file
处理目标选项值的别名
本节描述效用函数,可用于检测并解决别名值或遗留值测试目标设备类型(用户指定的值时ProdHWDeviceType
)和代码替换库(CodeReplacementLibrary
)。
RTW.isHWDeviceTypeEq。测试如果两个目标设备类型值表示相同的硬件设备,调用以下函数:
结果= RTW.isHWDeviceTypeEq (类型1,类型2)
在哪里
和类型1
是特征向量包含目标设备类型值或别名。类型2
的RTW.isHWDeviceTypeEq
函数返回true,如果
和类型1
是特征向量代表相同的硬件设备。例如,下面的调用返回true:类型2
RTW.isHWDeviceTypeEq(“指定”、“通用- >自定义”)
目标设备的描述类型的选择ProdHWDeviceType
,看到命令行信息硬件实现面板参数设备供应商和设备类型。
RTW.resolveHWDeviceType。返回一个硬件设备的设备类型值,给定一个值可能别名或遗留值,调用以下函数:
结果= RTW.resolveHWDeviceType (类型)
在哪里
是一个特征向量包含一个目标设备类型值或别名。类型
的RTW.resolveHWDeviceType
函数返回的设备类型值的设备。例如,下面的调用都返回“通用- >自定义”
:
RTW.resolveHWDeviceType(“指定”)RTW.resolveHWDeviceType(通用- >自定义)
目标设备的描述类型的选择ProdHWDeviceType
,看到命令行信息硬件实现面板参数设备供应商和设备类型。
RTW.isTflEq。如果两个测试代码替换库(CRL)名称表示相同的CRL,调用以下函数:
结果= RTW.isTflEq (name1,name2)
在哪里
和name1
是特征向量包含CRL值或别名。name2
的RTW.isTflEq
函数返回true,如果
和name1
是特征向量代表相同的代码替换库。例如,下面的调用返回true:name2
RTW.isTflEq('GNU','GNU C99 extensions')
的描述CodeReplacementLibrary
参数,看到代码替换库。
RTW.resolveTflName。返回CRL值的代码替换库,给定一个值可能别名或遗留值,调用以下函数:
结果= RTW.resolveTflName (的名字)
在哪里
是一个特征向量包含CRL值或别名。的名字
的RTW.resolveTflName
函数返回的值引用的代码替换库。例如,下面的调用都返回“GNU C99扩展”
:
RTW.resolveTflName环球套票(GNU的)。resolveTflName('GNU C99 extensions')
的描述CodeReplacementLibrary
参数,看到代码替换库。
金宝app支持多种开发环境
你的目标可能需要支持多种开发环境(例如,两个或两金宝app个以上的交叉编译器)或多个代码生成模式(例如,生成一个二进制可执行文件和生成的项目文件编译器)。
这个需求的一个方法是实现多个目标文件系统。每个系统目标文件调用模板makefile的开发环境。这相当于提供两个独立的目标。
更新您的自定义系统目标文件
更新您的自定义系统目标文件可以加载选项值的影响模型,使用更新后的系统目标文件。如果禁用一个选项,更新系统目标文件使用该选项的默认值。如果一个模型有不同的价值选择,当你与更新的系统目标文件加载模型,从模型的价值被丢弃和系统目标文件使用默认值。
创建一个自定义目标配置
介绍
本教程可以补充例子目标指南中描述示例自定义目标。介绍和示例文件,先试着目标的例子。
本教程引导您通过创建一个ERT-based目标的过程,my_ert_target
。这个练习了几个任务,这是典型的用于创建一个定制的目标:
MATLAB建立目标文件夹和修改路径。
进行修改标准系统目标文件和TMF这样自定义目标系统中是可见的目标文件浏览器,继承了ERT选项,显示有针对性的选择,与默认的基于主机的编译器生成代码。
测试自定义目标的构建过程,使用一个简单的模型,其中包括一个内联函数。
在这个练习中,你执行一个操作,但骨骼,ERT-based目标。这个目标可能是有用的作为起点的完整实现一个定制的嵌入式目标。
my_ert_target概述
在下面几节中,您创建一个骨架的目标,my_ert_target
。目标继承和支持的标准选项ERT目标并显示额外的有金宝app针对性的选项(请参见配置参数对话框有针对性的选择my_ert_target)。
有针对性的选择my_ert_target
my_ert_target
金宝app支持toolchain-based构建、生成代码和可执行文件,在主机系统上运行。my_ert_target
使用低成本航空
编译器在Microsoft Windows®平台。选择编译器是现成的,分布式的代码生成器。在Microsoft Windows平台上,如果你使用不同的编译器,您可以设置低成本航空
暂时作为默认编译器通过MATLAB命令如下:
墨西哥人设置
软件显示链接支持编译器安装在您的计算机上。金宝app单击低成本航空
链接。
请注意
在Linux上®系统中,确保您已经安装了一个C编译器。如果是这样,你可以使用Linux文件夹语法来完成这个练习。
my_ert_target
还可以支持模板ma金宝appkefile-based构建。关于使用这个目标模板的更多信息makefile方法,明白了创建ERT-Based模板MakeFile。
您可以测试my_ert_target
用一个模型兼容ERT目标(见配置一个系统目标文件(嵌入式编码))。生成的程序操作相同ERT生成程序。
简化你的测试目标、测试targetmodel
,一个非常简单的固定步模型(见创建测试模型和功能)。中的功能块targetmodel
使用的源代码timestwo
例子中,并生成完全内联代码。看到s函数的例子和内联S-Functions与薄层色谱进行进一步的讨论timestwo
s函数的例子。
创建目标文件夹
创建文件夹来存储目标文件并将它们添加到MATLAB路径,建议约定(见后文件夹和文件命名约定)。您还创建一个文件夹来存储测试模型,功能,生成的代码。
这个示例假设您的目标和模型文件夹位于文件夹c: /工作
。不要把你的目标和模型文件夹内的MATLAB文件夹树(也就是说,在还是下
文件夹)。matlabroot
创建文件夹,让他们访问:
创建一个根文件夹目标,
my_ert_target
。从MATLAB命令窗口在Windows平台,输入:mkdir my_ert_target cd c: /工作
在目标根文件夹,创建一个文件夹来存储你的目标文件。
mkdir my_ert_target / my_ert_target
MATLAB将这些文件夹添加到您的路径。
目录c: /工作/ my_ert_target目录c: / / my_ert_target / my_ert_target工作
创建一个文件夹,
my_targetmodel
,存储测试模型、功能和生成的代码。mkdir my_targetmodel
创建ERT-Based工具链的系统目标文件
创建一个系统目标文件为目标通过复制和修改标准的ERT系统目标文件的目标。然后,验证系统目标文件通过查看系统中的新目标目标文件浏览器和配置参数对话框。
编辑系统目标文件。编辑系统目标文件,使用这些步骤:
改变你的工作目录中创建的文件夹创建目标文件夹。
cd c: / / my_ert_target / my_ert_target工作
地方的一个副本
在matlabroot
/ rtw / c / ert /ert.tlcc: / / my_ert_target / my_ert_target工作
并将它重命名为my_ert_target.tlc
。该文件ert.tlc
对ERT系统目标文件的目标。开放
my_ert_target.tlc
在文本编辑器中。定制系统的目标文件,替换头注释行指示,让你的系统目标文件系统中可见目标文件浏览器和TMF相关定义,
使
命令和外部模式接口文件(如果有的话)。关于这些指令的更多信息,见头的评论。更换标题注释
my_ert_target.tlc
使用以下标题评论。% % SYSTLC:我ERT-based目标TMF: my_ert_target_lcc。tmf: make_rtw
该文件
my_ert_target.tlc
继承了标准ERT选项,使用描述的机制继承目标选择。因此,现有的rtwoptions
结构定义是多余的。编辑RTW_OPTIONS部分,使其只包含以下代码。/ % BEGIN_RTW_OPTIONS % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % % % %配置RTW代码生成设置- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % rtwgensettings。BuildDirSuffix =“_ert_rtw”;END_RTW_OPTIONS % /
删除后的代码
RTW_OPTIONS
节中,分隔的指令BEGIN_CONFIGSET_TARGET_COMPONENT和END_CONFIGSET_TARGET_COMPONENT
。这段代码仅供内部使用MathWorks开发者。修改文件夹的后缀
rtwgenSettings
描述的结构按照约定rtwgensettings结构。设置后缀的特征向量
_my_ert_target
定制目标,改变线路rtwgensettings.BuildDirSuffix= '_ert_rtw'
来
rtwgensettings.BuildDirSuffix= '_my_ert_target_rtw'
修改
rtwgenSettings
结构从ERT继承选择目标并宣布14或更高版本兼容性中描述rtwgensettings结构。将下面的代码添加到rtwgenSettings
定义:rtwgensettings.DerivedFrom= 'ert.tlc'; rtwgensettings.Version = '1';
添加一个
rtwoptions
结构,定义了一个有针对性的选择类别后三个复选框BEGIN_RTW_OPTIONS
指令。下面的代码显示了完整的RTW_OPTIONS
部分,包括前面的rtwgenSettings
的变化。/ % BEGIN_RTW_OPTIONS rtwoptions (1)。提示=“我的目标选项”;rtwoptions (1)。类型= 'Category'; rtwoptions(1).enable = 'on'; rtwoptions(1).default = 3; % number of items under this category % excluding this one. rtwoptions(1).popupstrings = ''; rtwoptions(1).tlcvariable = ''; rtwoptions(1).tooltip = ''; rtwoptions(1).callback = ''; rtwoptions(1).makevariable = ''; rtwoptions(2).prompt = 'Demo option 1'; rtwoptions(2).type = 'Checkbox'; rtwoptions(2).default = 'off'; rtwoptions(2).tlcvariable = 'DummyOpt1'; rtwoptions(2).makevariable = ''; rtwoptions(2).tooltip = ['Demo option1 (non-functional)']; rtwoptions(2).callback = ''; rtwoptions(3).prompt = 'Demo option 2'; rtwoptions(3).type = 'Checkbox'; rtwoptions(3).default = 'off'; rtwoptions(3).tlcvariable = 'DummyOpt2'; rtwoptions(3).makevariable = ''; rtwoptions(3).tooltip = ['Demo option2 (non-functional)']; rtwoptions(3).callback = ''; rtwoptions(4).prompt = 'Demo option 3'; rtwoptions(4).type = 'Checkbox'; rtwoptions(4).default = 'off'; rtwoptions(4).tlcvariable = 'DummyOpt3'; rtwoptions(4).makevariable = ''; rtwoptions(4).tooltip = ['Demo option3 (non-functional)']; rtwoptions(4).callback = ''; %----------------------------------------% % Configure RTW code generation settings % %----------------------------------------% rtwgensettings.BuildDirSuffix = '_my_ert_target_rtw'; rtwgensettings.DerivedFrom = 'ert.tlc'; rtwgensettings.Version = '1'; rtwgensettings.SelectCallback = 'enableToolchainCompliant(hSrc, hDlg)'; %SelectCallback provides toolchain approach support, but requires custom function %Omit this SelectCallback if using the template makefile approach END_RTW_OPTIONS %/
保存您的更改
my_ert_target.tlc
并关闭该文件。
创建ToolchainCompliant函数。使用工具链,使构建的方法,您将创建一个对应的函数SelectCallback
附近的自定义系统目标文件。这个函数设置属性工具链。
处理函数enableToolchainCompliant (hSrc) %以下参数启用工具链合规。slConfigUISetVal(处理,hSrc UseToolchainInfoCompliant ', '对');slConfigUISetVal(处理,hSrc GenerateMakefile ', '对');%以下参数不需要工具链合规。%,但建议实践设置这些参数和%禁用默认值(如图所示)。slConfigUISetVal(处理,hSrc RTWCompilerOptimization ', '关闭');slConfigUISetVal(处理,hSrc MakeCommand ', ' make_rtw ');slConfigUISetEnabled(处理、hSrc RTWCompilerOptimization,假);slConfigUISetEnabled(处理、hSrc MakeCommand,假);hSrc.refreshDialog; end
请注意
如果您使用的是模板makefile方法,省略从您的系统调用函数使toolchain-compliance目标文件。相反,使用的信息创建ERT-Based模板MakeFile。
查看系统目标文件。在这一点上,您可以验证目标继承并显示ERT选项如下:
创建一个新的模型。
打开Model Explorer或配置参数对话框。
选择代码生成窗格。
点击浏览打开系统目标文件浏览器。
在文件浏览器中,滚动的列表找到新的目标,目标
my_ert_target.tlc
。(这个步骤假定您的MATLAB路径包含c: / / my_ert_target / my_ert_target工作
,正如前面创建目标文件夹。)选择
我的ERT-based目标
并点击好的。的代码生成面板现在显示的配置模型
my_ert_target.tlc
目标。的系统目标文件,语言,工具链,构建配置字段应该出现:选择我的目标选择窗格。目标显示中定义的三个复选框选项
rtwoptions
结构。选择代码生成面板和重新打开系统目标文件浏览器。
选择嵌入式编码目标(
ert.tlc
)。目标显示标准的ERT选项。关闭模式。你不需要保存它。
骨骼系统目标文件的目标完成。如果您正在使用工具链的方法,您可以调用你的目标的构建过程。
如果你喜欢使用makefile的模板方法,参考TMF,my_ert_target_lcc.tmf
系统中,目标文件头评论阻止你调用你的目标,直到TMF文件的构建过程。首先,您必须创建一个my_ert_target_lcc.tmf
文件。
创建ERT-Based模板MakeFile
如果您正在使用的工具链makefile的方法工具链的自定义目标,忽略的步骤适用于模板makefile的方法。(跳过这一节。)
如果您使用的是模板makefile的方法,按以下步骤,适用于一个模板makefile和省略从您的系统调用函数,使toolchain-compliance目标文件,这是中描述创建ERT-Based工具链的系统目标文件。
创建一个模板makefile为目标通过复制和修改提供ERT模板makefile。选择最适合你的目标模板makefile。这个示例使用ert_lcc64.tmf
,但您还可以使用ert_vcx64.tmf
或ert_unix.tmf
。
确保你的工作目录仍将你先前创建的目标文件夹创建目标文件夹。
c: / / my_ert_target / my_ert_target工作
地方的一个副本
在matlabroot
/工具箱/编码器/编译/ tmf / ert_lcc64.tmfc: / / my_ert_target / my_ert_target工作
重命名它my_ert_target_lcc.tmf
。该文件ert_lcc64.tmf
的ERT compiler-specific模板makefile LCC编译器。开放
my_ert_target_lcc.tmf
在文本编辑器中。改变
SYS_TARGET_FILE
参数文件参考.tlc
文件生成的使
文件。改变行SYS_TARGET_FILE =任何
来
SYS_TARGET_FILE = my_ert_target.tlc
将更改保存到
my_ert_target_lcc.tmf
并关闭该文件。
你的目标现在可以生成代码并构建一个基于主机的可执行文件。在下一节中,您将创建一个测试模型和测试构建过程使用my_ert_target
。
创建测试模型和功能
在本部分中,您构建一个简单的测试模型,供以后使用代码生成:
设置工作目录
c: / / my_targetmodel工作
。cd c: / / my_targetmodel工作
在本教程的其余部分,
my_targetmodel
被认为是工作文件夹。你的目标写入输出文件的代码生成过程建立文件夹内的工作文件夹。当内联代码生成的timestwo
s函数,构建过程看起来TLC实现的功能在工作文件夹。下面的C和TLC文件副本
timestwo
你的工作文件夹功能:matlabroot
/工具/模型/ s金宝appimdemos / simfeatures / src /timestwo.cmatlabroot
/工具/模型/ s金宝appimdemos / simfeatures / tlc_c /timestwo.tlc
构建
timestwo
MEX-file在c: / / my_targetmodel工作
。墨西哥人timestwo.c
创建以下模型,利用仿真软件的一个功能块金宝app®用户定义的函数库。在您的工作目录中保存模型
targetmodel
。双击功能块打开参数对话框。输入函数名
timestwo
。点击好吧。块现在绑定到timestwo
MEX-file。打开模型浏览器或配置参数对话框并选择解算器窗格。
设置解算器类型来
固定步
并点击应用。保存模型。
打开并运行一个模拟范围。验证
timestwo
由2.0 s函数乘以其输入。
保持targetmodel
模型打开使用在下一节中,你使用测试模型生成代码。
验证目标操作
在本节中,您配置targetmodel
为my_ert_target
定制目标,用目标来生成代码并构建一个可执行:
在配置参数对话框中,选择代码生成窗格。
点击浏览打开系统目标文件浏览器。
在浏览器中,选择
我的ERT-based目标
并点击好吧。现在的配置参数对话框显示代码生成面板的
my_ert_target
。选择代码生成>报告窗格中,选择创建代码生成报告选择。
点击应用并保存模型。配置的模型
my_ert_target
。构建的模型。如果构建成功,MATLAB命令窗口显示下面的消息。
# # #创建可执行文件:. . / targetmodel。exe # # #成功完成构建过程模型:targetmodel
你的工作包含的文件夹
targetmodel.exe
文件和建立文件夹,targetmodel_my_ert_target_rtw
和其他文件,其中包含生成的代码。工作文件夹还包含一个slprj
文件夹,内部使用的构建过程。代码生成器还创建一个代码生成报告。
查看生成的代码,C代码选项卡上,单击视图代码。在内容代码生成报告的窗格,点击
targetmodel.c
链接。在
targetmodel.c
定位模型的阶跃函数,targetmodel_step
。观察下面的代码。/ *功能块:< Root > / s函数* / / *输入乘以两个* / targetmodel_B。SFunction = targetmodel_B。SineWave * 2.0;
这段代码的存在证实了
my_ert_target
定制的目标产生了一个内联输出功能块的计算模型。