主要内容

目标语言编译基础

目标语言编译器概述

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

TLC包括:

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

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

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

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

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

请注意

没有自定义TLC文件的文件夹matlabroot/ rtw / c /薄层色谱,即使能力存在。在代码生成过程中可能不会应用此类TLC定制,并可能导致不可预知的结果。

TLC工艺概述

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

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

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

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

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

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

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

代码生成过程概述

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

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

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

build文件夹中的文件包括:

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

  • 头文件(模型.h

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

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

  • 中描述的其他文件管理构建过程文件

相关的话题