main content

为模型编译独立可执行文件或模型引用目标 -凯发k8网页登录

为模型编译独立可执行文件或模型引用目标

说明

示例

slbuild(model) 使用当前配置参数设置从指定模型编译独立的 simulink® coder™ 二进制可执行文件。如果未加载模型,则在启动编译过程之前,slbuild 会加载模型。

slbuild(model,buildspec) 根据指定的代码生成操作,基于模型编译独立的 simulink coder 二进制可执行文件。

示例

slbuild(model,name,value) 根据一个或多个名称-值参数指定的模型,编译一个独立的 simulink coder 二进制可执行文件。

示例

blockhandle = slbuild(subsystem) 使用您的模型的当前配置参数设置,生成子系统代码并编译一个 simulink coder 二进制可执行文件。如果所选系统目标文件创建了一个 s-function 模块,该函数将返回自动生成的 s-function 包装器的非空模块句柄。在运行命令之前,必须打开或加载父模型。

示例

blockhandle = slbuild(subsystem,'mode','exportfunctioncalls') 从子系统生成代码,其中包括可以导出为外部应用程序代码的函数调用。此命令需要 embedded coder®。如果创建模块配置参数设置为 “sil”,该函数在 sil 模式下返回一个 model 模块的句柄。然后,您可以使用 model 模块进行数值等效性测试。

示例

blockhandle = slbuild(subsystem,name,value) 生成子系统代码,并根据一个或多个名称-值参数的指定编译一个 simulink coder 二进制可执行文件。

示例

为模型 rtwdemo_rtwintro 生成 c 代码。

slbuild('rtwdemo_rtwintro')
% same operation as ...
% slbuild('rtwdemo_rtwintro','standalonecodertarget') 

对于一般实时 (grt) 目标,代码生成器生成以下代码文件并将它们放在文件夹 rtwdemo_rtwintro_grt_rtwslprj/grt/_sharedutils 中。

模型文件共享文件接口文件其他文件

rtwdemo_rtwintro.c

rtwdemo_rtwintro.h

rtwdemo_rtwintro_private.h

rtwdemo_rtwintrotypes.h

rtwtypes.h

multiword_types.h

builtin_typeid_types.h

rtmodel.h

如果应用以下模型配置参数设置,代码生成器将生成其他结果。

参数设置结果
代码生成 > 仅生成代码窗格处于清除状态可执行文件 rtwdemo_rtwintro.exe
代码生成 > 报告 > 创建代码生成报告处于选中状态报告随即显示,为您提供有关下列各项的信息和链接:生成的代码文件,子系统和代码接口报告,入口函数、输入端口、输出端口、接口参数和数据存储

此示例说明如何使用 slbuild 为两个模型 sldemo_mdlref_depgraphrtwdemo_counter 生成可执行代码。sldemo_mdlref_depgraph 是引用模型的顶层模型。该示例还说明如何并行编译引用模型。

创建一个本地文件夹。

if exist(fullfile('.','mytempfolder'),'dir')
    rmdir('mytempfolder','s')
end
mkdir mytempfolder
cd mytempfolder

将引用模型的 sldemo_mdlref_depgraph 复制到该本地文件夹。

src_dir = fullfile(matlabroot, ...
                   'toolbox', ...
                   'simulink', ...
                   'simdemos', ...
                   'simfeatures', ...
                   'modelreference');
copyfile(fullfile(src_dir, ...
                  'sldemo_mdlref_depgraph.slx'), ...
                  '.');

启用 sldemo_mdlref_depgraph 引用的模型的并行编译。

load_system('sldemo_mdlref_depgraph')
set_param('sldemo_mdlref_depgraph', ...
'enableparallelmodelreferencebuilds', 'on');

为并行编译引用模型初始化 matlab® 工作进程。

set_param('sldemo_mdlref_depgraph', ...
          'parallelmodelreferencematlabworkerinit', ...
          'copy base workspace');

编译模型。

slbuild({'sldemo_mdlref_depgraph', 'rtwdemo_counter'})

mytempfolder 中,编译过程创建独立的可执行文件 sldemo_mdlref_depgraph.exertwdemo_counter.exe

对于每个模型,命令行窗口会在编译过程中显示编译摘要。

为模型 topmodelcode 生成代码和编译可执行文件,它引用模型 referencemodelcode 而不管模型校验和与参数设置如何。

openexample('simulinkcoder/filepackagingmodelscodeanddataexample',...
    'supportingfile','topmodelcode');
slbuild('topmodelcode','standalonecodertarget',...
    'forcetopmodelbuild',true)

为模型 rtwdemo_rtwintro 中的子系统 amplifier 生成 c 代码。

rtwdemo_rtwintro
slbuild('rtwdemo_rtwintro/amplifier')

代码生成器在 amplifier_grt_rtwslprj/grt/_sharedutils 文件夹中生成代码文件。

在您的当前工作文件夹中,编译过程会创建一个可执行文件 (amplifier.exe)。

要将函数调用导出为外部应用程序代码,请从函数调用子系统编译可执行文件。

rtwdemo_exporting_functions
set_param('rtwdemo_exporting_functions','gencodeonly','off');
slbuild('rtwdemo_exporting_functions/rtwdemo_subsystem','mode','exportfunctioncalls')

可执行文件 rtwdemo_subsystem.exe 出现在您的工作文件夹中。

从一个函数调用子系统创建一个 model 模块,您可以用它来测试从模型中生成的代码。

在模型 rtwdemo_exporting_functions 中打开子系统 rtwdemo_subsystem

代码生成 > 验证 > 高级参数 > 创建模块配置参数设置为 “sil”。

创建 model 模块。

mysilblockhandle = slbuild('rtwdemo_exporting_functions/rtwdemo_subsystem',...
'mode','exportfunctioncalls')

代码生成器会在一个临时模型中生成 model 模块。model 模块的配置如下:

  • 模型名称设置为包含原始子系统内容的新模型的名称。

  • 仿真模式设置为“软件在环 (sil)”。

您可以将模块添加到提供测试向量或激励输入的环境或测试框架模型中。然后,您可以运行执行 sil 测试的仿真,并验证 model 模块产生的结果与原始子系统相同。

输入参数

如果将模型名称指定为句柄或字符向量,则编译过程会创建一个独立的可执行文件或模型引用目标。

如果通过句柄或字符向量的元胞数组指定多个模型,编译过程会对元胞数组中的每个模型应用 buildspec

示例: gcs

要从中生成代码或编译可执行文件的子系统的名称,指定为表示子系统名称或完整模块路径的句柄或字符向量。

您可以通过由句柄或字符向量组成的元胞数组来指定多个子系统

示例: 'rtwdemo_exporting_functions/rtwdemo_subsystem'

buildspec 指示代码生成器对模型和编译过程执行所选的编译操作:

  • 遵循“配置参数”对话框的模型引用窗格上 参数的设置。

  • 仅当您编译模型引用 simulink coder 目标时,才需要 simulink coder 许可证;如果您仅编译模型引用仿真目标,则不需要许可证。

buildspec 参数必须是以下项之一。

buildspec编译操作

'standalonecodertarget'

使用当前模型配置设置为指定模型编译独立的 simulink coder 二进制可执行文件。它还为引用模型编译模型引用代码生成器目标。

如果指定的模型还未加载,则在启动编译过程之前,slbuild 会加载它。

'modelreferencesimtarget'

编译模型引用仿真目标(不需要 simulink coder 许可证)。

'modelreferencecodertarget'

编译模型引用 simulink coder 目标。

'cleantopmodel'

清理出足够的模型编译区域以便在执行下一个编译时触发顶层模型代码的重新生成。

示例: 'modelreferencesimtarget'

名称-值参数

将可选的参数对组指定为 name1=value1,...,namen=valuen,其中 name 是参数名称,value 是对应的值。名称-值参数必须出现在其他参数后,但参数对组的顺序无关紧要。

在 r2021a 之前,使用逗号分隔每个名称和值,并用引号将 name 引起来。

示例: 'updatethismodelreferencetarget','force'

模型引用生成的条件重新编译选项,指定为由 'updatethismodelreferencetarget''force''ifoutofdateorstructuralchange''ifoutofdate' 组成的以逗号分隔的对组。

此选项仅适用于指定的模型,不适用于指定模型引用的任何模型。

'updatethismodelreferencetarget' 值等效的重新编译选项重新编译操作

'force'

始终

无条件重新编译该模型。

'ifoutofdateorstructuralchange'

如果检测到任何变化

如果构建过程检测到任何更改,将重新编译模型。

'ifoutofdate'

如果检测到已知依存关系的任何变化

如果构建过程检测到此模型的已知依赖关系中发生任何更改,将重新编译模型。

有关不同重新编译选项的详细信息,请参阅

示例: 'updatethismodelreferencetarget','force'

依存关系

要使用此选项,请将 buildspec 设置为 'modelreferencesimtarget''modelreferencecodertarget'

数据类型: char | string

强制编译模型层次结构的顶层模型的选项,指定为由 'forcetopmodelbuild'truefalse 组成的以逗号分隔的对组。

将值设置为 true 会指示代码生成器生成代码并为模型层次结构的顶层模型编译可执行文件,而不考虑模型校验和与参数设置。

示例: 'forcetopmodelbuild',true

依存关系

要使用此选项,请将 buildspec 设置为 'standalonecodertarget'

数据类型: logical

如果未指定值,代码生成窗格中的仅生成代码 (gencodeonly) 选项将控制编译过程行为。

如果指定值,该参数将覆盖代码生成窗格中的仅生成代码 (gencodeonly) 选项:

  • true - 仅生成代码。

  • false - 生成代码并编译可执行文件。

  • 'exportfunctioncalls' - 如果您有 embedded coder,将从其中包含可导出为外部应用程序代码的函数调用的 subsystem 生成代码。

  • 'normal' - 不导出函数调用。

为指定的子系统命名导出的函数。

示例: slbuild(subsystem,'mode','exportfunctioncalls','exportfunctionfilename', fcnname)

显示编译信息的选项,指定为由 'openbuildstatusautomatically'truefalse 组成的以逗号分隔的对组。

要在“编译状态”窗口中显示编译信息,请指定 true。默认值为 false。有关使用状态窗口的详细信息,请参阅monitor parallel building of referenced models (simulink coder)

“编译状态”窗口支持引用模型层次结构的并行编译。不要使用“编译状态”窗口进行串行编译。

依存关系

要使用此选项,请将 buildspec 设置为 'standalonecodertarget'

数据类型: logical

指定是否生成经过混淆处理的 c 代码:

  • true - 生成经过混淆处理的 c 代码,您可以将其与第三方共享,从而降低涉及知识产权问题的可能性。

  • false - 不对生成的 c 代码进行混淆处理。

用于编译模型引用仿真目标的选项,指定为由 'includemodelreferencesimulationtargets'truefalse 组成的以逗号分隔的对组。

依存关系

要使用此选项,请将 buildspec 设置为 'standalonecodertarget'

数据类型: logical

输出参数

自动生成的 s-function 包装器模块或 model 模块的模块句柄。

扩展功能

版本历史记录

在 r2006a 之前推出

另请参阅

(simulink coder) | (simulink coder)

主题

  • (simulink coder)
  • (simulink coder)
  • (simulink coder)
  • (embedded coder)
  • (embedded coder)
网站地图