主要内容

目标语言编译器基础

目标语言编译器概述

目标语言编译器(TLC)是代码生成器不可分割的一部分。它使您能够自定义生成的代码。通过定制,您可以生成特定于平台的代码,也可以合并您自己的算法更改以提高性能、代码大小或与现有方法的兼容性。

TLC包括:

  • 与所提供的Simulink的子集相对应的文件金宝app®块。

  • 用于指定标头和参数信息的模型范围信息的文件。

TLC文件是ASCII文件,它显式地控制代码生成的方式。通过编辑TLC文件,您可以更改代码生成的方式。

目标语言编译器为生成ANSI提供了一整套现成的TLC文件®C或C++代码。您可以查看TLC文件并对其进行较小或较大的更改。这种开放环境为定制生成的代码提供了极大的灵活性。

有关更多信息,请参见实现C / c++ S-Functions,它描述了如何编写包装的和完全内联的S函数,重点是mdlRTW()功能。

不定制文件夹中的TLC文件matlabroot/ rtw / c /薄层色谱,即使这种能力存在。这样的TLC定制可能不会在代码生成过程中应用,并可能导致不可预测的结果。

TLC工艺概述

这个顶层图显示了目标语言编译器如何适应代码生成过程。

目标语言编译器(TLC)设计用于转换模型描述文件模型.rtw(或类似文件)转换为特定于目标的代码或文本。

目标语言编译器转换Simulink框图的表示形式,称为金宝app模型.rtw,进入C或C++代码。这个模型.rtw文件包含模型的部分表示。表示用高级语言描述了框图的执行语义。有关更多信息,请参见model.rtw文件和作用域.

看完报纸后模型.rtw文件,目标语言编译器将基于目标文件,为每个块指定特定代码,以及模型范围的文件,它指定了总体代码样式。TLC使用目标文件和模型.rtw文件生成ANSI C或c++代码。

为了创建特定于目标的应用程序,代码生成器需要模板MaFig文件,它指定了C或C++编译器和编译过程的编译器选项。代码生成器将模板生成文件转换为目标生成文件(模型mk)通过执行特定于给定模型的令牌扩展。目标makefile是泛型的修改版本里图梅因酒店文件(或格尔图梅因酒店). 您必须修改格尔图梅因酒店符合目标的特定要求,如中断服务程序。看到模板生成文件和生成选项自定义模板makefile.

目标语言编译器与HTML、Perl和MATLAB有相似之处®. 它具有类似于HTML的标记语法、Perl和其他脚本语言的强大功能和灵活性,以及MATLAB的数据处理能力(TLC可以调用MATLAB函数)。TLC生成的代码经过了高度优化和充分注释。使用TLC,您可以从线性、非线性、连续、离散或混合Simulink模型生成代码。这些模型可以包括自动转换为代码的Simulink块。例外情况是调用MATLAB文件的MATLAB函数块和S函数块。目标语言编译器使用金宝app阻止目标文件变换图形中的每个块的步骤模型.rtw文件和一个model-wide目标文件用于代码的全局自定义。

你可以把C MEX s -函数,用生成的代码转换成程序可执行文件。您可以为您的C MEX s -函数编写一个目标文件内联S函数(参见内联C-MEX S函数),通过消除对s函数本身的函数调用和内存开销来提高性能西姆斯特雷特S-函数的一种形式。内联S函数将S函数块代码合并到为模型生成的代码中。当SLS目标文件不存在于S函数时,它通过函数调用调用C或C++代码文件。看见内联S-Functions. 您还可以为MATLAB语言文件或Fortran S函数编写目标文件。

代码生成过程概述

目标语言编译器使用其目标文件和代码生成器输出生成代码。

当从金宝app在Simulink模型中,自动化过程的第一步是生成一个模型.rtw文件。这个模型.rtw文件包含从Simulink模型生成代码所需的特定于模型的信息。金宝app模型.rtw传递给目标语言编译器,该编译器将其与一组包含的系统目标文件和块目标文件结合使用以生成代码。

只有最终的可执行文件直接写入当前文件夹。对于在代码生成过程中创建的其他文件,包括模型.rtw文件,则使用构建文件夹。此文件夹在当前文件夹中创建,并命名为模型_目标_rtw.目标是目标环境的缩写吗grt这是一个通用的实时目标。

放置在build文件夹中的文件包括:

  • 用于生成C或C++源代码的主体(模型. c模型.cpp)

  • 头文件(模型. h)

  • 头文件模型_private.h定义生成代码专用的参数和数据结构

  • 一个生成文件,模型mk,用于构建应用程序

  • 其他文件,如中所述管理构建过程文件

相关的话题