Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

比较各产品的系统目标文件支持

在您选择系统目标文件(例如 grt.tlc)时,所做选择将定义运行时环境和代码生成功能。确定符合您的代码生成工作流目标的系统目标文件功能。

代码生成器使用系统目标文件来生成用于在特定目标硬件或特定操作系统上执行的代码。系统目标文件调用其他运行时环境特定的文件。有关为目标硬件配置模型代码生成参数的详细信息,请参阅配置运行时环境选项

不同类型的系统目标文件支持选择相应的生成代码的功能。在系统目标文件中,CodeFormat TLC 变量的值和对应的 rtwgensettings.DerivedFrom 字段值标识系统目标文件类型和生成代码的功能。这些选择会在代码生成过程中的几个点应用代码生成控制决策。您的选择包括模型编译是否以及如何生成:

  • 特定数据结构体(例如,SimStructrtModel

  • 静态或动态内存分配代码

  • 为生成的模型函数调用接口

对于自定义系统目标文件开发,CodeFormat 值在不同的代码生成目标中会有所不同:

  • 如果系统目标文件不包含 CodeFormat TLC 变量的值,则对于一般实时目标 (GRT),默认值为 RealTime。对应的 rtwgensettings.DerivedFrom 字段值为 grt.tlc(默认值)。

  • 如果您正在开发自定义系统目标文件并且有 Embedded Coder 软件,则对于嵌入式实时目标 (ERT),请考虑将 CodeFormat TLC 变量值设置为 Embedded-C。对应的 rtwgensettings.DerivedFrom 字段值为 ert.tlc。与 GRT 系统目标文件相比,ERT 系统目标文件支持更多的生成代码功能。

此示例说明如何在 ert.tlc 中设置 CodeFormat TLC 变量的值以及对应的 rtwgensettings.DerivedFrom 字段值。

%assign CodeFormat = "Embedded-C"

/%
  BEGIN_RTW_OPTIONS
  rtwgensettings.DerivedFrom = 'ert.tlc';
  END_RTW_OPTIONS
%/

注释

使用 CodeFormat TLC 变量的值及其对应的 rtwgensettings.DerivedFrom 字段值来为模型生成代码。如果未显式选择值,将应用默认值。对于 rtwgensettings.DerivedFrom 字段,请使用 'ert.tlc''grt.tlc'。有关详细信息,请参阅系统目标文件的结构

有关针对 GRT 和 ERT 系统目标文件默认生成的优化调用接口的说明,请参阅为模型入口函数配置生成的 C 函数接口

使用 GRT 和 ERT 系统目标文件的代码生成采用实时模型数据结构体 (rtModel)。此结构体封装模型特定信息的形式比仿真结构体 SimStruct 的封装形式紧凑得多。所生成代码的许多高效功能取决于 rtModel 而非 SimStruct 的生成,包括:

  • 整数绝对时间和已用时间计时服务

  • 异步任务的独立计时器

  • 为信号、状态和参数监测生成改进的 C API 代码

  • 删减数据结构体以最小化其大小(仅限 ERT 派生的系统目标文件)

有关 rtModel 数据结构体的说明,请参阅Real-Time Model Data Structure

比较产品系统目标文件

您可以使用 System Target File Browser 从一系列系统目标文件中进行选择。通过此选择,您可以使用配置选项进行试验并保存具有不同配置的模型。

除非您的系统上有所需的软件,否则不能为非 GRT 系统目标文件编译或生成代码。例如,对于 ERT 系统目标文件,需要 Embedded Coder®;对于 SLDRT 系统目标文件,需要 Simulink® Desktop Real-Time™,等等。

为模型选择系统目标文件时,会选择工具链方法或模板联编文件方法进行编译过程控制。有关这些方法的详细信息,请参阅Approaches for Building Code Generated from Simulink Models

可从 System Target File Browser 获得的系统目标文件

支持的系统目标文件

文件名

参考

Embedded Coder(适用于 PC 或 UNIX® 平台)

ert.tlc
ert_shrlib.tlc

配置系统目标文件 (Embedded Coder)

为 Embedded Coder 创建 Visual C++® 解决方案文件

ert.tlc

(需要 RTW.MSVCBuild 作为 TMF。请参阅注释。)

配置系统目标文件 (Embedded Coder)

适用于 AUTOSAR 的 Embedded Coder

autosar.tlc

开发符合 AUTOSAR 标准的模型 (Embedded Coder)

一般实时(适用于 PC 或 UNIX 平台)

grt.tlc

按 STF 比较生成的代码的功能

创建 Visual C++ 解决方案文件

grt.tlc

(需要 RTW.MSVCBuild 作为 TMF。请参阅注释。)

按 STF 比较生成的代码的功能

快速仿真(默认适用于 PC 或 UNIX 平台)

rsim.tlc

Accelerate, Refine, and Test Hybrid Dynamic System on Host Computer by Using RSim System Target File

适用于 LCC 编译器的快速仿真

rsim.tlc

Accelerate, Refine, and Test Hybrid Dynamic System on Host Computer by Using RSim System Target File

适用于 UNIX 平台的快速仿真

rsim.tlc

Accelerate, Refine, and Test Hybrid Dynamic System on Host Computer by Using RSim System Target File

适用于 Visual C++ 编译器的快速仿真

rsim.tlc

Accelerate, Refine, and Test Hybrid Dynamic System on Host Computer by Using RSim System Target File

适用于 PC 或 UNIX 平台的 S-Function

rtwsfcn.tlc

使用 S-Function 目标加速仿真、重用代码或保护知识产权

适用于 LCC 的 S-Function

rtwsfcn.tlc

使用 S-Function 目标加速仿真、重用代码或保护知识产权

适用于 UNIX 平台的 S-Function

rtwsfcn.tlc

使用 S-Function 目标加速仿真、重用代码或保护知识产权

适用于 Visual C++ 编译器的 S-Function

rtwsfcn.tlc

使用 S-Function 目标加速仿真、重用代码或保护知识产权

ASAM-ASAP2 数据定义

asap2.tlc

(在以后的版本中将会删除。有关如何生成 A2L 文件的信息,请参阅生成 ASAP2 和 CDF 标定文件

生成 ASAP2 和 CDF 标定文件

Simulink Desktop Real-Time

sldrt.tlc
sldrtert.tlc

Set Run in Kernel Mode Code Generation Parameters (Simulink Desktop Real-Time)

Simulink Real-Time™

slrealtime.tlc

Simulink Real-Time Options Pane (Simulink Real-Time)

注意

要使用调试配置创建和编译 Visual C++ 解决方案 (.sln) 文件,请在 Template makefile 字段中选择 RTW.MSVCBuild。

比较代码样式和 STF 支持

代码生成器生成两种样式的代码。一种代码样式适用于快速原型构建(以及使用代码生成进行仿真)。另一种样式适用于嵌入式应用程序。下表将系统目标文件映射到对应的代码样式。

系统目标文件列出的代码样式

系统目标文件

代码样式

用途

Embedded Coder 嵌入式实时 (ERT)

嵌入式

以此为起点开发 C/C++ 生成代码的嵌入式应用程序。

Simulink Coder™ 一般实时 (GRT)

快速原型

以此为起点,创建不使用实时操作系统任务原语的快速原型目标硬件,以及在台式计算机上验证生成的 C/C++ 代码。

快速仿真 (RSim)

快速原型

在台式计算机和高速或批量仿真工具上提供非实时仿真。

S-Function

快速原型

创建 C MEX S-Function,用于在另一个 Simulink 模型中进行仿真。

Simulink Desktop Real-Time

快速原型

当台式计算机在后台运行 Microsoft® Windows® 时,在中断级别实时运行模型。

Simulink Real-Time

快速原型

在运行 Simulink Real-Time 内核的台式计算机上实时运行模型。

第三方供应商提供其他系统目标文件以支持其产品的代码生成。有关第三方产品的详细信息,请参阅供应商网站或 MathWorks Connections 计划网页:https://www.mathworks.com/products/connections

按产品比较生成的代码的功能

实时系统目标文件(例如 GRT)的代码生成过程提供许多嵌入式代码优化。选择基于 ERT 的系统目标文件提供比 GRT 更广泛的功能。系统目标文件选择确定代码生成产品的可用功能。当您选择与开发过程匹配的代码生成目标时,请使用下表来比较随 Simulink Coder 提供的代码生成功能和随 Embedded Coder 提供的功能。

比较 Simulink CoderEmbedded Coder 的代码生成功能

功能

Simulink Coder

Embedded Coder

rtModel 数据结构体

  • 生成完整的 rtModel 结构体

  • GRT 变量声明:rtModel_model model_M_;

  • 针对模型对 rtModel 进行优化

  • 可选择隐藏错误状态字段和数据记录字段

  • ERT 变量声明:RT_MODEL_model model_M_;

自定义存储类 (CSC)

代码生成会忽略 CSC。为对象分配一个 CSC(默认为 Auto 存储类)。

支持使用 CSC 生成代码

HTML 代码生成报告

基本 HTML 代码生成报告

包含更多详细信息和模型超链接的增强报告

符号格式设置

根据硬编码默认值生成符号(用于信号、参数等)

对生成的符号施加详细控制

用户定义的针对生成符号的最大标识符长度

支持

支持

生成终止函数

生成

可选择是否隐藏终止函数

组合的输出/更新函数

生成单独的输出/更新函数

可选择是否生成组合的输出/更新函数

优化的数据初始化

不适用

可选择是否为零值内存、I/O 端口等生成不必要的初始化代码

注释生成

可选择包含或禁止注释生成

可选择是否在注释中包含 Simulink 模块说明、Stateflow® 对象说明和 Simulink 数据对象说明

模块打包功能 (MPF)

不支持

广泛的代码自定义功能。请参阅Control Data Type Names in Generated Code (Embedded Coder)MPT Data Object Properties (Embedded Coder)

针对系统目标文件优化的数据类型头文件

需要完整的 tmwtypes.h 头文件

生成优化的 rtwtypes.h 头文件,包括系统目标文件所需的定义

用户定义的类型

用户定义的类型默认为代码生成中的基类型

代码生成支持用户定义的数据类型别名

速率分组

不支持

支持

主程序模块自动生成

不支持。提供静态主程序模块。

支持自动和可自定义的主程序模块生成(也可使用静态主程序)

可重用(多实例)代码生成

可选择是否使用动态内存分配生成可重用代码

可选择是否使用静态或动态内存分配生成可重用代码

软件约束选项

支持浮点数、复数和非有限数

可选择启用或禁用浮点数、复数和非有限数支持

应用程序寿命

默认为 inf

用户指定。确定整数计时器的最有效字长

ANSI® -C/C++ 代码生成

支持

支持

ISO® -C/C++ 代码生成

支持

支持

GNU® -C/C++ 代码生成

支持

支持

生成标量内联参数作为 #DEFINE 语句

不支持

支持

MAT 文件变量名称修饰符

支持

支持

数据交换:C API、ASAP2、外部模式

支持

支持

按 STF 比较生成的代码的功能

代码生成器支持不同系统目标文件的生成代码的一系列功能。在每个系统目标文件中,CodeFormat TLC 变量的值标识功能集。

下表总结了不同系统目标文件对应用程序的支持。

应用程序

系统目标文件 (STF)

固定或变步长加速

RSIM、S-Function、模型引用

定步长实时部署

GRT、ERT、 Simulink Real-TimeSimulink Desktop Real-Time...

下表总结了对每个 System target file 选项可用的各种选项,也说明了例外情况。

为系统目标文件 (STF) 生成的代码所支持的功能

 系统目标文件 (STF)

功能

grt.tlc

(请参阅注释 1。)

ert.tlc

(请参阅注释 1。)

ert_shrlib.tlc

(请参阅注释 1。)

rtwsfcn.tlc

(请参阅注释 1。)

rsim.tlc

(请参阅注释 1。)

sldrt.tlc

(请参阅注释 1。)

slrealtime.tlc

(请参阅注释 1。)

其他

(请参阅注释 1。)

静态内存分配

X

X

 

X

X

X

动态内存分配

X

(请参阅注释 4、5。)

X

(请参阅注释 4、5。)

X

X

X

连续时间

X

X

X

X

X

X

C/C++ MEX S-Function
(非内联)

X

X

X

X

X

X

S-Function(内联)

X

X

X

X

X

X

X

最小化 RAM/ROM 使用量

X

X2

X

支持外部模式

X

X

X

X

X

快速原型

X

X

X

X

生产代码

X

X2

X

(请参阅注释 3。)

批量参数调整和蒙特卡罗方法

X

X

系统级仿真器

X

硬实时执行

X

(请参阅注释 3。)

X

(请参阅注释 3。)

X

X

X5

包括非实时可执行文件

X

X

X

模型的多个实例

X

(请参阅注释 4、5。)

X

(请参阅注释 4、5。)

X4

X

(请参阅注释 4、5。)

X

(请参阅注释 4、5。)

支持变步长求解器

X

X

支持 SIL/PIL

X

X

X

注释

  1. 系统目标文件:

    • grt.tlc - 一般实时目标

    • ert.tlc - 嵌入式实时目标

    • ert_shrlib.tlc - 嵌入式实时目标共享库

    • rtwsfcn.tlc - S-Function

    • rsim.tlc - 快速仿真

    • sldrt.tlc - Simulink Desktop Real-Time

    • slrealtime.tlc - Simulink Real-Time

    • Other - Simulink Coder 中的嵌入式实时功能支持其他系统目标文件

  2. 不适用于基于 GRT 的系统目标文件。仅适用于基于 ERT 的系统目标文件。

  3. 默认的 GRT 和 ERT rt_main 文件模拟硬实时执行。当显式连接到实时时钟时,它们会硬实时执行。

  4. 您可以为 Stateflow 图的多个实例或包含图的子系统的多个实例生成代码,但当该图包含导出的图形函数或 Stateflow 模型包含机器级别事件时例外。

  5. 在 Configuration Parameters 对话框中,对于 Code interface packaging 字段,选择 “Reusable function”。

相关主题