Main Content

TLC 文件

TLC 程序

目标语言编译器 (TLC) 与 Simulink® 软件一起工作来生成代码。

TLC 程序是一组称为脚本的 ASCII 文件。由于 TLC 是一种解释型语言,因此没有目标文件。调用(使用 %include 指令)程序所用其他目标文件的单个目标文件称为入口点

可用的目标文件

TLC 解释目标文件集,将 Simulink 模型的部分表示形式 (model.rtw) 变换为特定于目标的代码。

使用目标文件,您可以灵活地自定义编译器生成的代码。例如,如果您使用可用的系统目标文件,将可以从 Simulink 模型中生成泛型 C 或 C++ 代码。此可执行代码不是特定于平台的。

注意

不要自定义 TLC 文件,即使有此功能也尽量不要尝试这种 TLC 自定义可能不会在代码生成过程中应用,并可能导致不可预测的结果。请仅自定义您创建的 TLC 文件。

目标文件中的参数是从 model.rtw 文件中读取的,并使用模块作用域规则对其进行查找。您可以使用 %assign 语句在目标文件中定义附加参数。

使用目标语言指令编写目标文件。Target Language Compiler Directives 提供模块作用域规则和目标语言指令的完整描述。

model.rtw File and Scopes 描述 model.rtw 文件,该文件对于创建和修改目标文件非常有用。

在代码生成的上下文中,有两种类型的目标文件:

  • 系统目标文件

    系统目标文件确定代码生成的整体框架。它们确定何时执行模块、如何记录数据等。

  • 模块目标文件

    每个模块都有一个目标文件,用于确定应为该模块生成哪些代码。代码可能根据模块的确切参数或与模块的连接的类型(例如,宽输入与标量输入)而变化。有关详细信息,请参阅Block Target File Methods

模型范围的目标文件和系统目标文件

您可以在整个模型范围内使用模型范围的目标文件。模型范围的目标文件为 TLC 提供基本信息,TLC 将 model.rtw 文件变换为特定于目标的代码。

系统目标文件是 TLC 的入口点。它类似于 C 程序的 main() 例程。系统目标文件监督整个代码生成过程。例如,系统目标文件 grt.tlccodegenentry.tlc(系统目标文件的入口点)设置一些变量。有关可用的系统目标文件的完整列表,请参阅比较各产品的系统目标文件支持

目标文件的用途

使用目标文件可以:

  • 内联 S-Function

    内联 S-Function 意味着编写模块目标文件,指示 TLC 如何为该 S-Function 模块生成代码。编译器可以为非内联的 C MEX S-Function 生成代码。如果内联 C MEX S-Function,编译器可以生成更高效的代码。非内联 C MEX S-Function 通过使用 S-Function 应用程序编程接口 (API) 来执行,效率可能不高。您可以内联 MATLAB® 文件或 Fortran S-Function。在这两种情况下,TLC 都可以为 S-Function 生成代码。

  • 自定义适用所有模型的代码生成

    您可能要对生成的代码进行插桩以进行分析,或对所有模型的整体代码生成进行其他更改。要完成这些更改,请修改一些系统目标文件。

系统目标文件

整个代码生成过程开始于您在代码生成窗格的“配置参数”对话框中指定的单个系统目标文件。为此,请点击浏览按钮激活系统目标文件浏览器。仔细检查系统目标文件可了解代码生成是如何发生的。下面列出了 grt.tlc 文件中的非注释行,该文件是为一般实时可执行文件生成代码的目标文件。

%selectfile NULL_FILE
%assign TargetType = "RT" 
%assign Language   = "C"  
%assign MatFileLogging = 1 
%include "codegenentry.tlc"

三个变量 LanguageTargetTypeMatFileLogging 是供其他函数使用的全局 TLC 变量。然后通过调用 codegenentry.tlc 文件来启动代码生成,该文件是代码生成的主要入口点。

如果要修改整个代码生成,必须更改系统目标文件。在初始设置后,您必须调用自己的 TLC 文件,而不是调用 codegenentry.tlc。以下代码显示名为 mygrt.tlc 的示例系统目标文件。

%% Set up variables, etc.
%% Load my library functions 
%% Note that mylib.tlc should %include funclib.tlc at the  
%% beginning. 
%include "mylib.tlc"  
%include "commonsetup.tlc"  

%% Next, you can include TLC files that you need for 
%% preprocessing information about the model and to fill in 
%% hooks. The following is an example of including a single
%% TLC file that contains custom hooks. 
%include "myhooks.tlc"  

%% Finally, call the code generator. 
%include "commonentry.tlc"

生成的代码放在模型或子系统函数中。相关的生成函数名称及其执行顺序在 Execution of Code Generated from a Model为模型入口函数配置生成的 C 函数接口 中进行描述。在代码生成期间,会执行每个模块目标文件中的函数,并将生成的代码放在模型或子系统函数中。

相关主题