主要内容

目标语言编译器基础

目标语言编译器概述

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

TLC包括:

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

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

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

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

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

请注意

请勿在文件夹中自定义TLC文件matlabroot./ RW / C / TLC,即使能力存在。在代码生成过程中可能无法应用此类TLC自定义,并导致不可预测的结果。

TLC过程概述

此顶级图显示了目标语言编译器如何使用代码生成过程。

目标语言编译器(TLC)旨在转换模型描述文件模型.rtw(或类似的文件)进入特定于目标的代码或文本。

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

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

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

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

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

代码生成过程概述

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

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

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

放置在构建文件夹中的文件包括:

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

  • 头文件(模型.h

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

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

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

相关话题