主要内容

目标语言编译器基础

目标语言编译器概述

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

TLC包括:

  • 与所提供的Simulink的子集相对应的文件万博1manbetx®块。

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

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

目标语言编译器提供了一套完整的随时可用的TLC文件来生成ANSI®C或c++代码。您可以查看TLC文件,并对它们进行微小或广泛的更改。这个开放环境为定制生成的代码提供了巨大的灵活性。

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

请注意

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

TLC工艺概述

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

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

目标语言编译器转换Simulink块图的表示形式,称为万博1manbetx模型.rtw,转换成C或c++代码。的模型.rtw文件包含模型的部分表示。表示用高级语言描述了框图的执行语义。有关更多信息,请参见模型。rtw文件和作用域

在阅读完模型.rtw文件,目标语言编译器将基于目标文件,它为每个块指定特定的代码model-wide文件,它指定整体的代码样式。TLC使用目标文件和模型.rtw文件生成ANSI C或c++代码。

要创建特定于目标的应用程序,代码生成器需要一个模板makefile,该makefile为构建过程指定C或c++编译器和编译器选项。代码生成器将模板生成文件转换为目标生成文件(模型楼上),通过执行特定于给定模型的令牌展开。目标makefile是泛型的修改版本rt_main文件(或grt_main).你必须修改grt_main符合目标的特定要求,如中断服务程序。看到模板制作文件和制作选项自定义模板makefile

目标语言编译器与HTML、Perl和MATLAB有相似之处®.它具有类似于HTML的标记语法,具有Perl和其他脚本语言的强大和灵活性,具有MATLAB的数据处理能力(TLC可以调用MATLAB函数)。TLC生成的代码经过了高度优化,并进行了完整的注释。通过TLC,您可以从线性、非线性、连续、离散或混合的Simulink模型中生成代码。万博1manbetx模型可以包括自动转换为代码的Simulink块万博1manbetx。异常是MATLAB函数块和调用MATLAB文件的s -函数块。目标语言编译器使用块目标文件中的每个块进行转换模型.rtw文件和一个model-wide目标文件用于代码的全局定制。

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

代码生成过程概述

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

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

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

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

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

  • 头文件(模型.h

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

  • 一个makefile,模型楼上,用于构建应用程序

  • 其他文件,在管理构建过程文件

相关的话题