文档

在Simulink环境外构建集成代码金宝app

识别在外部构建过程中调用生成代码所需的文件和接口。

学习如何:

  • 收集在Simulink®之外构建集成代码所需的文件。金宝app

  • 与外部变量和函数的接口。

有关示例模型和相关示例的信息,请参见从嵌入式系统的控制算法生成C代码

收集和构建所需的数据和文件

Embedded Coder®生成的代码需要MathWorks®提供的支持文件。金宝app要将生成的代码重新定位到另一个开发环境,例如专用的构建系统,您必须重新定位这些支持文件。金宝app方法将这些文件打包到zip文件中packNGo实用程序。此实用程序查找并打包构建可执行映像所需的文件。该实用程序使用工具在代码生成后自定义构建过程,其中包括buildinfo_data结构和一个packNGo函数。类中标识的外部文件包括代码生成>自定义代码窗格中的“模型配置参数”对话框。该实用程序保存buildinfo中的mat文件模型_ert_rtw文件夹中。

打开示例模型,rtwdemo_PCG_Eval_P5

该模型被配置为运行packNGo代码生成后。

从整个模型生成代码。

手动生成zip文件:

  1. 加载文件buildInfo.mat(位于rtwdemo_PCG_Eval_P5_ert_rtw子文件夹)。

  2. 在命令提示符下,输入命令packNGo (buildInfo)

zip文件中的文件数量取决于Embedded Coder®的版本和所使用的模型的配置。编译器可能需要zip文件中的一个文件子集。编译后的可执行文件大小(RAM/ROM)取决于链接过程。链接器可能只包含必要的目标文件。

将生成的代码集成到现有系统中

这个例子展示了如何将生成的代码集成到现有的代码库中。该示例使用Eclipse™IDE和Cygwin™/gcc编译器。所需的集成任务对于集成环境是通用的。

集成环境概述

一个完整的嵌入式控制系统由多个硬件和软件组成。控制算法只是一种类型的组件。其他组件可以是:

  • 操作系统(OS)

  • 调度层

  • 物理硬件I/O

  • 底层硬件设备驱动程序

通常,您不会在这些组件中使用生成的代码。相反,生成的代码包括与这些组件连接的接口。MathWorks®为许多常见的嵌入式控制器提供了硬件接口块库。有关示例,请参见Embedded Targets块库。

这个例子提供了一些文件来展示如何构建一个完整的系统。主文件是example_main.c,其中包含一个简单的main函数,只执行基本的操作来练习代码。

视图example_main.c

文件:

  • 定义函数接口(函数原型)。

  • 包括声明外部数据的文件。

  • 定义了走读生数据。

  • 初始化数据。

  • 调用模拟硬件。

  • 调用算法函数。

功能执行的顺序与测试集模型中子系统执行的顺序相匹配rtwdemo_PCG_Eval_P5.h.如果你改变了执行的顺序example_main.c,可执行图像产生的结果与仿真结果不同。

匹配系统接口

集成需要匹配数据而且函数生成的代码和现有系统代码的接口。在本例中,example_main.c文件通过导入和导出数据# include语句和走读生声明。该文件还从生成的代码中调用函数。

连接输入数据

系统有三个输入信号:pos_rqstfbk_1,fbk_2.生成的代码通过直接引用导入的全局变量(存储类)访问两个反馈信号ImportedExtern).代码通过导入的指针(存储类)访问位置信号ImportedExternPointer).

手写文件defineImportedData.c定义变量和指针。生成的代码不定义变量和指针,因为手写代码定义了它们。相反,生成的代码声明导入的数据(走读生)在档案内rtwdemo_PCG_Eval_P5_Private.h.在实际系统中,数据通常来自其他软件组件或硬件设备。

视图defineImportedData.c

视图rtwdemo_PCG_Eval_P5_Private.h

连接输出数据

在本例中,您不访问系统的输出数据。这个例子测试生成的代码说明如何将输出数据保存到标准日志文件。您可以通过引用该文件来访问输出数据rtwdemo_PCG_Eval_P5.h

视图rtwdemo_PCG_Eval_P5.h

访问其他数据

生成的代码包含几个存储常用数据的结构,包括:

  • 块状态值(积分器、传递函数)

  • 本地参数

  • 时间

下表列出了常用的数据结构。根据模型的配置,这些结构的组合将出现在生成的代码中。数据在文件中声明rtwdemo_PCG_Eval_P5.h,但在本例中,您不访问此数据。

数据类型数据名称数据用途
常量|model_cP|常量参数|model_cB|固定块I/O输出|model_U|根和原子子系统输入输出|model_Y|根和原子子系统输出内部数据|model_B|块输出值内部数据|model_D|状态信息向量内部数据|model_M|时间和其他系统级数据内部数据|model_Zero|过零参数|model_P|参数

匹配函数调用接口

默认情况下,代码生成器生成的函数具有无效函数(空白)接口。如果您将模型或原子子系统配置为生成可重入代码,代码生成器将创建更复杂的函数原型。在本例中,example_main函数使用有效的输入参数调用生成的函数。

调用函数PI_Cntrl_Reusable使用独立的非结构化全局变量和Simulink®Coder™数据结构的混合。金宝app手写代码定义了这些变量。结构类型定义在rtwdemo_PCG_Eval_P5.h

在Eclipse™环境中构建项目

本示例使用Eclipse™IDE和Cygwin™GCC调试器构建嵌入式系统。该示例提供了两个程序的安装文件。软件组件和版本号如下:

  • Eclipse™SDK 3.2

  • Eclipse™CDT 3.3

  • Cygwin™/ GCC 3.4.4-1

  • Cygwin™/ GDB 20060706 - 2所示

要安装和使用Eclipse™和GCC,请参见安装和使用Cygwin和Eclipse

你可以通过点击这个超链接来安装这个例子中的文件:

设置构建文件夹。

或者,手动安装文件:

  1. 创建构建文件夹(Eclipse_Build_P5).

  2. 解压缩文件rtwdemo_PCG_Eval_P5.zip进入构建文件夹。

  3. 删除文件rtwdemo_PCG_Eval_P5.cert_main.c而且rt_logging.c,则由example_main.c

您可以使用Eclipse™调试器逐级检查和评估生成的C代码的执行行为。参见示例安装和使用Cygwin和Eclipse

要使用输入数据练习模型,请参见测试生成的代码

相关的话题

相关的话题