代码生成器支持从Simulink生成的金宝app构建(编译和链接)代码的这些方法金宝app®模型:
工具链-生成makefile并支持自定义工具链的构建过程。金宝app这种方法:
使用工具链信息对象提供对构建过程的控制。您可以使用MATLAB脚本定义这些对象。
金宝app支持模型参考,SIL, PIL。
金宝app支持金宝appSimulink Coder™,嵌入式编码器®,MATLAB®编码器.
模板makefile.-使用模板生成文件和指定的工具链的构建过程。这种方法:
可选地使用工具链信息对象。
金宝app支持模型参考,SIL, PIL。
金宝app支持金宝app仿真软件编码器和嵌入式编码。
你可以使用系统目标文件配置参数以选择模型的构建过程。当你设置系统目标文件:
ert.tlc
,ert_shrlib.tlc
,GRT.TLC.
,或任何与工具链兼容的系统目标文件,构建过程使用工具链的方法默认情况下。
任何非工具链兼容的系统目标文件,构建过程都会使用模板makefile的方法(嵌入式编码).
你可以使用这个命令从工具链方式切换到模板生成文件方式:
set_param (模型, 'make_rtw TMF=1')
工具链设置出现在构建过程当您设置系统目标文件:
GRT.TLC.- - - - - -Generic Real-Time Target
ert.tlc - 嵌入式编码器
(需要嵌入式编码器产品)
ert_shrlib.tlc- - - - - -Embedded Coder (host-based shared library target)
(需要嵌入式编码器)
任何工具链兼容的系统目标文件(如果基于ert,则需要嵌入式编码器)
有关符合工具链的系统目标文件的更多信息,请参见金宝app支持自定义目标的工具链方法.
的工具链设置包括以下配置参数:
请注意
以下使用模板makefile方法的系统目标文件与使用工具链方法的系统目标文件具有相同的名称但不同的描述:
ert.tlc- - - - - -Create Visual C/C++ Solution File for Embedded Coder
grt.tlc - 为Simulink编码器创建Visual C / C ++解决方案文件金宝app
为避免混淆,请单击浏览选择系统目标文件并查看每个文件的描述。
当您打开在R2013b之前创建的使用以下系统目标文件的模型时,软件将尝试升级该模型。升级将配置从使用模板生成文件设置更改为使用工具链设置:
ert.tlc - 嵌入式编码器
ert_shrlib.tlc- - - - - -Embedded Coder (host-based shared library target)
GRT.TLC.- - - - - -Generic Real-Time Target
请注意
要使用自定义系统目标文件升级模型以使用工具链方法,请参阅金宝app支持自定义目标的工具链方法.
有些模型配置参数值阻止软件升级模型以使用工具链设置。以下说明向您展示了完成升级过程的方法。
考虑升级模型并使用Toolchain Build方法。不需要这样做。您可以从未升级的模型继续生成代码。
请注意
本软件不升级使用以下系统目标文件的型号:
ert.tlc- - - - - -Create Visual C/C++ Solution File for Embedded Coder
grt.tlc - 为Simulink编码器创建Visual C / C ++解决方案文件金宝app
查看型号是否已升级:
如果工具链和构建配置配置参数已指定,则型号已升级。
如果makefile配置参数如生成makefile,使命令,模板makefile.,则该模型尚未升级。
首先创建模型的工作副本文件>另存为.此操作保留了原始模型和配置参数,以供参考。
尝试使用upgrade Advisor升级模型:
在建模选项卡,评估和管理部分中,选择升级顾问.
在升级顾问中,选择检查和更新模型以使用工具链方法构建生成的代码并点击运行这个检查.
执行建议的操作并/或单击更新模型.
当您不能使用upgrade Advisor升级模型时,以下一个或多个参数不会设置为默认值,如下所示:
编译器优化级别- - - - - -优化关闭(更快的构建)
生成makefile-启用
模板makefile.-系统目标文件特定的模板生成文件
使命令- - - - - -make_rtw
不带参数
有时,一个模型不能升级。尝试以下步骤:
如果生成makefile禁用时,此情况无法升级。但是,您可以尝试启用它,并尝试使用Upgrade Advisor升级模型。
如果编译器优化级别被设定为优化(更快的运行)
:
集编译器优化级别是优化关闭(更快的构建)
.
使用Upgrade Advisor升级模型。
集构建配置来快速跑
.
如果编译器优化级别被设定为自定义
:
复制自定义编译器优化标志转换为文本文件。
集编译器优化级别来优化关闭(更快的构建)
.
使用Upgrade Advisor升级模型。
集构建配置来指定
.
要执行相同的优化,请编辑编译器选项。
如果模板makefile.使用自定义的模板生成文件,这种情况下无法升级。但是,您可以尝试以下方法:
更新模板makefile.为系统目标文件使用默认的makefile。
请注意
要获得默认的makefile名称,请更改系统目标文件,点击应用,将其更改回来,然后单击应用一次。
使用Upgrade Advisor升级模型。
如果模板生成文件包含构建工具选项,如编译器优化标志,则设置构建配置来指定
并更新选项。
如果模板生成文件使用自定义构建工具,则创建并注册自定义工具链,如自定义工具链登记.然后,设置工具链参数以使用自定义工具链。
请注意
注册自定义工具链后,进行更新工具链使用自定义工具链。
如果模板生成文件包含自定义规则和逻辑,则不能将这些自定义应用于升级的模型。
当系统目标文件设置为薄层色谱
使用模板生成文件方法的文件,软件显示编译器优化级别,生成makefile,使命令,模板makefile.参数。
的生成makefile选项指定构建过程是否为模型生成生成文件。默认情况下,构建过程生成一个makefile。通过清除禁止生成makefile,例如支持不基于makefile的自定义构建处理金宝app生成makefile.清除该参数时:
的使命令和模板makefile.选择是不可用的。
使用用户定义的命令设置post代码生成生成处理,如自定义后代码生成生成处理.
每个基于makefile的模板目标文件都有一个相关联的使
命令。代码生成器使用这个内部的MATLAB命令来控制构建过程。命令出现在使命令字段并在启动构建时运行。
大多数系统目标文件使用默认命令,make_rtw
.第三方系统目标文件可以提供其他文件使
命令。请参阅供应商提供的文档。
除了名字使
命令中提供生成文件选项使命令字段。这些选项可能包括特定于编译器的选项、路径和其他参数。当构建流程调用使
工具,这些选项传递给使
命令行,将它们添加到传递给编译器的总体标志中。
模板制作文件和制作选项列出了使命令每个支持的编译器可以使用的选项。金宝app
的模板makefile.Field有以下功能:
如果您使用系统目标文件浏览器选择了一个系统目标文件,该字段将显示一个MATLAB语言文件的名称,该文件为您的开发环境选择了一个模板生成文件。例如,在模型配置参数:代码生成,模板makefile.字段显示grt_default_tmf.
,指示构建流程调用grt_default_tmf.m
.
模板制作文件和制作选项详细描述构建过程选择模板生成文件所依据的逻辑。
或者,您可以显式输入特定模板makefile(包括扩展名)的名称,或者在此字段中返回模板makefile的MATLAB语言文件。如果使用的系统目标文件没有出现在系统目标文件浏览器中,请使用此方法。例如,如果您已经为自定义系统目标文件编写了自己的模板makefile,那么可以使用这种方法。
如果您指定了自己的模板makefile,请确保包含文件扩展名。如果省略该扩展名,构建过程将尝试查找并执行具有该扩展名的文件.m
(即MATLAB语言文件)。模板制作文件(或返回模板制作文件的MATLAB语言文件)必须在MATLAB路径上。要确定文件是否在MATLAB路径上,请在MATLAB命令窗口中输入以下命令:
哪一个tmf_filename
为模板生成文件构建过程指定工具链。这个示例提供了一个最小工具链的定义,并展示了如何将工具链与模板生成文件(该模板生成文件是副本)关联起来ert_unix.tmf
或ert_vcx64.tmf
.
将此代码用于工具链定义文件。
函数tc = minimalToolchainForTMF%创建工具链对象tc = coder.make.ToolchainInfo (“名字”,“TMF构建的最小工具链”);指定链接器需要响应文件而不是%包括链接器命令行上的所有对象文件模块tc.addAttribute (“RequiresCommandFile”,真正的);如果ispc objExt =“.obj”;其他的objExt =' . o ';结束%指定C编译器使用的源文件和目标文件扩展名工具= tc.getBuildTool (C编译器的);tool.setFileExtension (“源”,“c”);tool.setFileExtension (“头”,'。H');tool.setFileExtension (“对象”, objExt);%指定c++编译器使用的源文件和目标文件扩展名工具= tc.getBuildTool (c++编译器的);tool.setFileExtension (“源”,. cpp的);tool.setFileExtension (“头”,. hpp的);tool.setFileExtension (“对象”, objExt);
使用ert_unix.tmf
或ert_vcx64.tmf
作为模板生成文件。
拷贝文件(fullfile (matlabroot,“工具箱”,“编码器”,...'编译',“tmf”,“ert_vcx64.tmf”),...“ert_copy.tmf”)
在模板makefile中,即ert_copy.tmf
,编辑TOOLCHAIN_NAME
宏。
TOOLCHAIN_NAME =TMF构建的最小工具链
将工具链与模板制作文件相关联。
运行工具链定义文件,它生成ToolchainInfo
对象,tc
.
tc = minimalToolchainForTMF;
保存ToolchainInfo
对象指向MAT文件。
保存(“tcMinimal”,“tc”)
注册工具链环球套票。TargetRegistry
.
将此代码放入rtwTargetInfo.m
文件。
函数rtwTargetInfo (tr) tr.registerTargetInfo (@loc_createToolchain);结束函数config = loc_createToolchain config(1) = coder.make.ToolchainInfoRegistry;配置(1)。Name =“TMF构建的最小工具链”;配置(1)。文件Name =fullfile(fileparts(mfilename(' fullpath ')),...“tcMinimal.mat”);配置(1)。TargetHWDeviceType = {'*'};配置(1)。平台={电脑(“拱”)};结束
将文件保存在当前工作文件夹中或在MATLAB搜索路径上的文件夹中。
重置TargetRegistry
.
RTW.TargetRegistry.getInstance (“重置”);
将模板makefile与您的模型关联起来并构建模型。
set_param (模型、“TemplateMakefile”、“ert_copy.tmf”);slbuild (模型);
目标语言编译器(TLC)是代码生成器的一个组成部分。它使您能够自定义生成的代码。通过自定义,您可以生成特定于平台的代码,或者您可以在执行速度、代码大小或与您喜欢维护的现有方法的兼容性方面合并自己的算法更改。有关更多信息,请参见目标语言编译器概述.
为代码生成指定的TLC选项出现在生成的HTML代码生成报告的摘要部分。
请注意
指定TLC命令行选项不会在make命令行中添加标记。
您可以使用模型参数指定用于代码生成的目标语言编译器(TLC)命令行选项和参数TLCOptions
在一个set_param
函数调用。例如,
>> set_param(gcs,'tlcoptions',' - p0 -awarnnonsaturatedblocks = 0')
TLC选项的一些常见用途包括:
-aVarName = 1
声明一个TLC变量和/或给它赋值
": \工作
指定包含路径
- v
获取TLC处理的详细输出(例如,调试时)
当你用GenerateMakefile
设置为“上”
和GenCodeOnly
设置为“关闭”
,该软件生成一个makefile,并运行该makefile来编译生成的代码。编译完成后,软件创建并保存源文件和配置数据的校验和。
如果在构建模型时,以前构建的校验和可用:
该软件使用校验和来确定源文件和配置数据是否与以前的构建版本不同。
如果软件检测到差异,则:
重新生成makefile。
重新编译生成的代码。
如果构建过程使用模板makefile,你可以通过将以下文本添加到模板makefile中来禁用校验和:
DO_NOT_USE_CHECKSUMS = 1