主要内容

选择生成方法和配置生成过程

代码生成器支持从Simulink生成的金宝app构建(编译和链接)代码的这些方法金宝app®模型:

  • 工具链-生成makefile并支持自定义工具链的构建过程。金宝app这种方法:

    • 使用工具链信息对象提供对构建过程的控制。您可以使用MATLAB脚本定义这些对象。

    • 金宝app支持模型参考,SIL, PIL。

    • 金宝app支持金宝appSimulink Coder™,嵌入式编码器®,MATLAB®编码器

  • 模板makefile.-使用模板生成文件和指定的工具链的构建过程。这种方法:

    • 可选地使用工具链信息对象。

    • 金宝app支持模型参考,SIL, PIL。

    • 金宝app支持金宝app仿真软件编码器和嵌入式编码。

你可以使用系统目标文件配置参数以选择模型的构建过程。当你设置系统目标文件:

  • ert.tlcert_shrlib.tlcGRT.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

查看型号是否已升级:

  1. 如果工具链构建配置配置参数已指定,则型号已升级。

    如果makefile配置参数如生成makefile使命令,模板makefile.,则该模型尚未升级。

首先创建模型的工作副本文件>另存为.此操作保留了原始模型和配置参数,以供参考。

尝试使用upgrade Advisor升级模型:

  1. 建模选项卡,评估和管理部分中,选择升级顾问

  2. 在升级顾问中,选择检查和更新模型以使用工具链方法构建生成的代码并点击运行这个检查

  3. 执行建议的操作并/或单击更新模型

当您不能使用upgrade Advisor升级模型时,以下一个或多个参数不会设置为默认值,如下所示:

  • 编译器优化级别- - - - - -优化关闭(更快的构建)

  • 生成makefile-启用

  • 模板makefile.-系统目标文件特定的模板生成文件

  • 使命令- - - - - -make_rtw不带参数

有时,一个模型不能升级。尝试以下步骤:

  • 如果生成makefile禁用时,此情况无法升级。但是,您可以尝试启用它,并尝试使用Upgrade Advisor升级模型。

  • 如果编译器优化级别被设定为优化(更快的运行)

    1. 编译器优化级别优化关闭(更快的构建)

    2. 使用Upgrade Advisor升级模型。

    3. 构建配置快速跑

  • 如果编译器优化级别被设定为自定义

    1. 复制自定义编译器优化标志转换为文本文件。

    2. 编译器优化级别优化关闭(更快的构建)

    3. 使用Upgrade Advisor升级模型。

    4. 构建配置指定

    5. 要执行相同的优化,请编辑编译器选项。

  • 如果模板makefile.使用自定义的模板生成文件,这种情况下无法升级。但是,您可以尝试以下方法:

    1. 更新模板makefile.为系统目标文件使用默认的makefile。

      请注意

      要获得默认的makefile名称,请更改系统目标文件,点击应用,将其更改回来,然后单击应用一次。

    2. 使用Upgrade Advisor升级模型。

    3. 如果模板生成文件包含构建工具选项,如编译器优化标志,则设置构建配置指定并更新选项。

    4. 如果模板生成文件使用自定义构建工具,则创建并注册自定义工具链,如自定义工具链登记.然后,设置工具链参数以使用自定义工具链。

      请注意

      注册自定义工具链后,进行更新工具链使用自定义工具链。

    5. 如果模板生成文件包含自定义规则和逻辑,则不能将这些自定义应用于升级的模型。

模板Makefile的方法

系统目标文件设置为薄层色谱使用模板生成文件方法的文件,软件显示编译器优化级别生成makefile使命令,模板makefile.参数。

指定是否生成Makefile

生成makefile选项指定构建过程是否为模型生成生成文件。默认情况下,构建过程生成一个makefile。通过清除禁止生成makefile,例如支持不基于makefile的自定义构建处理金宝app生成makefile.清除该参数时:

指定制作命令

每个基于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.tmfert_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.tmfert_vcx64.tmf作为模板生成文件。

拷贝文件(fullfile (matlabroot,“工具箱”“编码器”...'编译'“tmf”“ert_vcx64.tmf”),...“ert_copy.tmf”

在模板makefile中,即ert_copy.tmf,编辑TOOLCHAIN_NAME宏。

TOOLCHAIN_NAME =TMF构建的最小工具链

将工具链与模板制作文件相关联。

  1. 运行工具链定义文件,它生成ToolchainInfo对象,tc

    tc = minimalToolchainForTMF;

  2. 保存ToolchainInfo对象指向MAT文件。

    保存(“tcMinimal”“tc”

  3. 注册工具链环球套票。TargetRegistry

    1. 将此代码放入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)。平台={电脑(“拱”)};结束

    2. 将文件保存在当前工作文件夹中或在MATLAB搜索路径上的文件夹中。

    3. 重置TargetRegistry

      RTW.TargetRegistry.getInstance (“重置”);

将模板makefile与您的模型关联起来并构建模型。

set_param (模型、“TemplateMakefile”、“ert_copy.tmf”);slbuild (模型);

为代码生成指定TLC

目标语言编译器(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来编译生成的代码。编译完成后,软件创建并保存源文件和配置数据的校验和。

如果在构建模型时,以前构建的校验和可用:

  1. 该软件使用校验和来确定源文件和配置数据是否与以前的构建版本不同。

  2. 如果软件检测到差异,则:

    • 重新生成makefile。

    • 重新编译生成的代码。

如果构建过程使用模板makefile,你可以通过将以下文本添加到模板makefile中来禁用校验和:

DO_NOT_USE_CHECKSUMS = 1
在这种情况下,软件使用文件时间戳来确定是否应该重新编译生成的代码。

相关的话题