主要内容

部署生成软件

金宝app®提供了功能设计模型和部署它们生成的代码,表现在目标执行环境中像在仿真模型的行为。这个数字和下面的表显示了所需的步骤通过使用仿真软件和嵌入式编码软件部署金宝app®

基于模型的软件部署工作流

一步 目标

确定需求

评估项目部署需求和确定自己的目标是为您的项目部署一个应用程序或组件。

创建代码接口配置(C)

创建一个配置,告诉代码生成器生成的代码如何定制建模者可以满足目标环境接口的要求。

开发部署代码

设计一个模型,将嵌入式编码字典定义了一个代码接口配置模型(C),选择一个输出类型,接口模型元素映射到代码,生成和验证所需的接口代码生成器生成的代码。

生成部署代码

部署应用程序代码作为一个独立的可执行程序运行在单个进程或多进程目标环境。

部署组件源代码模块与外部主程序的集成,其他目标环境的软件,和其他组件。

确定需求

确定项目的要求。需求帮助您确定是否部署模型作为一个应用程序或组件。这图显示了如何调度和处理架构部署目标之间的差异。

比较的部署目标。

你需要决定哪些部署目标满足调度和其他项目目标环境的需求。应用程序部署,生成的代码包含一个主程序,适用于单一任务,rate-monotonic调度(RMS),或并发调度方案。这个方案配置的模型并确定入口点函数如何被分配到的任务。对于执行算法的代码,您可以使用生成的调度和数据传输代码,改变它,或取代它。同时,组件部署需要与外部函数生成的函数代码的集成调度程序和其他目标环境的软件。

为应用程序部署生成的代码可以运行在单个进程或多进程架构作为一个实时或非实时应用程序的一部分,而组件部署代码只能运行在单个进程的体系结构。单个进程的体系结构,生成的代码优化为一个特定的目标设备和满足硬实时的需求。多进程部署地址高通量和分布式执行应用程序的需求。

的要求和条件,适用于每个部署目标,明白了软件部署目标和部署类型。使用这些信息来确定最好的部署类型符合你的项目需求。

评估项目需求的更多信息,请参阅嵌入式系统架构映射到仿真软件的建模环境金宝app

创建C代码接口配置

研究C代码接口需求之后,您可以创建一个使用嵌入式编码字典代码接口配置。您可以创建数据和服务代码接口配置,代码接口和代码接口规范代码接口配置描述。您创建的接口,作为代码接口配置的一部分取决于你的项目需求和部署目标。

创建代码接口配置的详细信息,请参阅代码接口定义

研究代码接口需求

之前,您可以定义一个自定义代码接口配置符合特定目标环境的需求,您需要收集需求。研究与你的目标环境所需的应用程序或组件交互的软件。识别源所需的输入和输出。确定的代码与其他目标环境资源必须看起来像,它必须如何表现。例如,你的模型或生成的代码需要交换数据与目标环境服务吗?如果是这样,地图输入、输出,参数对应的服务接口。典型的服务接口包括函数参数和返回值,全局变量和访问功能。

以下问题可以帮助您确定接口需求相关的应用程序或组件的部署。答案你收集作为输入在定义代码接口配置。

类别 问题
目标环境服务
  • 目标环境的使用标准的中间件平台,如AUTOSAR或DDS吗?AUTOSAR的信息或DDS,看到AUTOSAR BlocksetDDS Blockset

  • 什么目标环境软件部署代码与吗?例如,目标环境包括操作系统吗?什么目标服务可用?一个代码接口配置定义了服务接口标识。

  • 目标软件预计部署代码来处理启动或关闭事件吗?如果是这样的话,代码接口配置应该定义接口初始化和终止功能。

  • 目标软件有命名要求入口点函数调用来启动部署代码的执行吗?如果是这样,代码接口配置应该指定函数名或函数命名规则与要求一致。

  • 什么是函数的名称已部署的代码需要使用目标服务电话吗?代码接口配置应该指定函数命名规则与要求一致。

数据通信
  • 目标服务使用什么数据通信方法来处理并发访问数据通信时部署代码(直接访问,外执行,或在执行期间)?代码接口配置应该定义接口,使用数据通信方法,结合使用的目标环境服务。

数据类型
  • 目标环境的期望部署代码的输入和输出表示为数组,结构,或枚举类型?在仿真软件环境金宝app中,您可以将这些类型表示为向量,巴士和IntEnum,分别。

  • 定点支持是必需的吗?金宝app如果你使用仿真软件定点接口,您金宝app可以指定偏移。

  • 目标环境的软件使用正确的数据类型吗?如果是的,你有嵌入式编码软件,创建别名类型来表示这些类型。代码生成器使用别名类型在它产生的代码。例如,一旦定义,您可以指定别名输入一个函数原型,对于一个临时变量,或阻碍输出。

内存使用和延迟
  • 部署代码需要访问共享内存吗?如果是,在代码中定义和使用内存部分接口配置。

  • 你需要部署代码时最小化延迟或优化内存使用发送、接收或共享数据吗?目标环境的要求部署代码优化内存使用发送数据?定义和模型元素映射到代码接口,使用数据通信的方法与要求一致。

参数调优和数据测量
  • 目标环境需要访问变量代表的参数调优或数据测量目的?如果是这样,如何目标环境预计数据代表在已部署的代码?数据需要驻留在一个特定的头文件吗?定义接口与需求一致。

  • 目标环境中运行的应用程序代码是由多个部署源代码模块独立开发和集成和一个目标函数的调度器手动吗?或者是独立运行的应用程序代码生成的可执行程序在目标设备(信号处理)或可执行程序的集合,同时运行在多处理架构?

部署目标
  • 生成的代码是否运行在目标环境包含多个部署源代码模块独立开发和集成和一个目标函数的调度器手动吗?或者是运行独立的代码生成的可执行程序在目标设备(信号处理)或可执行程序的集合,同时运行在多处理架构?

对于一些项目来说,这些需求捕获在一个接口控制文档(ICD)。一个ICD提供代码的部署单元之间的接口的详细信息和目标环境服务。

决定一种接口配置和存储

决定是否要创建数据或服务接口配置和配置是否model-owned或共享。

目标 数据接口 服务接口 Model-Owned与数据接口 共享
为应用程序部署代码接口。 X X
为组件部署代码接口 X X X
使模型元素的映射存储类和特定属性设置(例如,支持遗留模型)。金宝app X X
定制接口代码,包括内置的保障维护数据一致性outside-execution或执行期间数据通信。 X
定制代码之间的数据传输函数之外的之前和之后()函数执行。 X
金宝app支持访问时间值的任务。 X
启用映射模型元素来完成接口的抽象。 X
模型的小范围或不共享代码接口需求与其他模型。 X
使多个模型高度相同的共享嵌入式编码字典和使用相同的代码接口配置中定义的字典。 X
跨组织和标准化接口代码生成的模型设计为一个特定的目标环境。 X
使代码生成模型能够满足需求的不同的目标环境。 X

自定义默认model-owned字典,在嵌入式编码器应用将来发布,点击代码接口>嵌入式编码字典(模型)

创建一个共享嵌入式编码字典,在Model Explorer中,单击>创建嵌入式编码字典或嵌入式编码应用,点击代码接口>设置共享嵌入式编码字典

更多信息见代码接口和代码接口规范,代码接口配置,为代码生成配置代码接口

开发部署代码

这个图显示的步骤开发一个顶级模特,你打算部署生成的代码。

工作流开发部署代码。

部署代码从一个顶级模型,设计模型通过将该算法分解为子组件和识别相关的实用程序。选择和实施建模风格和建模模式,结合你打算如何部署生成的代码。应用相关建模指南。

当你准备来生成代码,完成这个一次性代码生成设置。您可以选择使用一个模型模板来创建一个模型,根据这个设置是自动配置。

  1. 如果相关,附加一个共享嵌入式编码字典到模型中。这一步是必需的,当你部署一个组件,该组件使用一个服务接口的代码。这一步是不相关的,当你部署c++代码。

  2. 选择一个代码生成的输出类型。根据部署的目标模型,一个输出类型指定一个或目标文件系统的应用,编程语言的输出,或平台中间件,如AUTOSAR或DDS。AUTOSAR的信息或DDS,看到AUTOSAR BlocksetDDS Blockset

  3. 检查是否部署类型显示在嵌入式编码器将来发布符合你的期望。通常,您可以接受默认的部署类型设置。

    部署目标 部署类型设置
    C应用程序部署 自动。代码生成器生成可部署的应用程序或组件代码基于模型内容和配置。例如,对于一个导出功能模型,配置了一个数据接口,代码生成器生成可部署的组件的代码。代码生成器自动配置参考模型为子组件。
    C组件部署 组件。代码生成器自动配置参考模型为子组件。
    c++代码生成 不适用。

然后,遍历这些步骤:

  1. 模型元素映射到代码接口。例如,C语言,可用代码中定义的接口模型嵌入编码字典。映射告知代码生成器的外表,位置,和行为需求的模型元素的代码。

  2. 使用模型顾问检查模型是否准备代码生成。使用代码生成顾问检查代码生成和配置模型应用目标,如跟踪或调试。

  3. 生成代码并确认输出符合接口要求的代码。

  4. 如果需要的话,调整你的模型设计和重复步骤1 - 3。

建模指南和工具促进发展的顶级模特,你打算部署:

  • C函数源代码与目标环境功能模块集成调度程序和其他信号处理环境中运行的目标服务。

  • 独立的可执行程序,复制模拟为单一任务调度器和优化调度代码,rate-monotonic多任务处理,或并发执行,根据模型的配置。可执行程序运行作为一个单个进程或多进程应用程序。单个进程应用程序代码的目的是运行在一个特定的目标设备。

当部署一个组件,每个组件开发隔离。然后,您或其他人在你的组织将生成的函数代码集成到一个完整的应用程序源代码级别的。

为模型,部署的组件使用一个数据接口,看到组件部署嵌入式程序员指南支持包金宝app,它提供了指南和工具来帮助生产代码,与这些方面的目标平台服务:

  • 生成的可调用的入口点函数的接口

  • 平台调用服务的接口

  • 数据通信方法

设计模型

你可以设计模型的代码生成的代码生成器使用代码接口映射生成的代码与目标服务需求的一致性。

开始部署项目的设计工作,项目作为应用程序或分割成组件。为每个应用程序或组件识别子组件和潜在的实用程序。

高级应用程序或组件的代码接口需求模型可以包括:

  • 启动和关闭事件的反应

  • 调度周期和非周期利率

  • 通信服务接口安全处理访问数据,包括数据共享的任务或线程并发执行

  • 非易失性内存服务接口

  • 定时器服务接口

  • 编程接口访问数据的定制

部署模型的类型决定了模型构造映射到目标环境提供的服务接口和同伴相互作用和范围的规则模型的数据和函数的可访问性的层次结构。层次结构中的每个模型都与部署相关类型基于模型的作用。为组件部署一个服务接口配置,代码生成器设置部署类型组件。否则,代码生成器设置它自动。在这两种情况下,对于增量开发,您可以更改设置子组件

选择和实施建模风格和建模模式,结合你打算如何部署生成的代码。应用相关建模指南。信息建模风格,看到的周期和非周期函数的接口。信息建模指南,请参阅标准、指南和块使用

组件部署嵌入式程序员指南支持包金宝app提供组件建模指南部署组件,使用数据接口。该指南帮助您设计组件模型的代码生成器生成的代码,可以集成和接口与平台服务和其他组件在目标平台上运行的代码。准则确定模型元素和模型元素的代码配置为执行和其他服务需求。当你设计和配置组件基于组件建模指南:

  • 代码生成器产生的一系列可调用的入口点函数,结合目标调度程序服务调用。

  • 在生成的函数代码,调用目标平台服务功能与目标服务编程接口一致。

  • 生成的函数代码的荣誉目标平台服务使用的数据通信方法。

有关更多信息,请参见体系结构和组件设计

把字典

如果你选择使用一个共享的嵌入式编码字典,你必须把字典模型。当你部署一个组件,该组件使用一个服务接口代码,代码生成器需要使用一个共享的嵌入式编码字典。嵌入式编码字典不相关,当你部署c++代码。

将嵌入式编码字典模型,在嵌入式编码程序,单击代码接口>设置共享嵌入式编码字典。在出现的对话框中,单击开放,浏览并选择一个字典(SLDD)文件包含代码接口配置,然后单击好吧。或者,您可以创建一个编码器字典并将其附加到模型中。

有关创建和附加的更多信息嵌入编码字典,看到的嵌入式编码字典

选择输出类型

当使用嵌入式编码应用,对加载模型生成代码之前,您必须选择一个输出类型。在将来发布列出可用的输出类型输出菜单。有关更多信息,请参见代码生成输出

检查部署类型

对于C代码生成配置,嵌入式编码器应用将来发布的部署类型字段显示当前加载的部署类型模型。通常情况下,您不需要调整部署类型设置。代码生成器设置部署类型基于模型的风格和代码的接口配置。为模型配置一个数据接口配置,代码生成器设置字段自动。如果你想生成代码的子组件模型,您可以更改设置子组件

如果代码生成器确定你部署一个组件,该组件使用一个服务接口代码,组件模型的层次结构模型,您可以配置部署类型。默认情况下,代码生成器设置部署类型的加载模型组件模型和模型引用的子组件。对于每个模型在模型层次结构,您可以选择一个部署类型基于模型的作用。

角色模型 部署类型
发布代码接口根据相关的代码接口配置模式。代码生成自模型可以直接与目标环境交互的软件。 组件
引用并运行作为一个父组件模型的一部分。的上下文中执行和通信接口访问父模型。生成的代码无法访问目标环境软件。 子组件

审查或一组的部署类型在整个模型层次结构模型,从部署类型菜单中,选择设置部署类型层次结构模型。有关更多信息,请参见为模型层次结构配置C代码部署类型

模型元素映射到代码接口

在嵌入式编码应用,使用映射编辑器模型界面元素映射到代码界面元素。或者,您可以使用代码编程接口映射。界面元素的代码你可以映射模型元素取决于类型的代码接口配置相关联的模型(数据或服务)。对C代码生成,可用代码定义界面元素在嵌入式编码字典与模型相关联。

有关更多信息,请参见:

评估代码生成准备

准备验证您的模型代码生成模型通过使用顾问和代码生成的顾问。模型顾问检查评估准备来生成代码。通用嵌入式程序员检查和检查组件的部署模型配置一个服务接口配置中可用金宝app模型检查™。检查组件的部署模型配置了数据接口配置的一部分组件部署嵌入式程序员指南支持包金宝app

代码生成顾问为代码生成的应用程序检查你的模型目标跟踪或调试等。

使用模型顾问的信息,请参阅:

使用代码生成的信息顾问,请参阅配置模型,通过使用代码生成目标代码生成的顾问

生成和验证代码

你有不同的选项来生成代码取决于您正在为一个应用程序或组件模型生成代码。对于一个应用程序模型,默认情况下,代码生成器生成的源代码模型和算法为代表主要函数处理函数调度。然后,代码生成器生成的代码编译和链接成一个可执行程序。或者,您可以生成源代码和抑制编译和链接通过选择模型配置参数只生成代码和定制的过程产生一个可执行程序。

组件模型,您可以生成源代码和抑制编译和链接,或者你可以生成一个组件模型库。代码生成器产生的构件,包括头文件services.h在文件夹中codeGenerationFolder/modelBuildFolder/服务和一个MAT-filebuildInfo.mat在文件夹中codeGenerationFolder/modelBuildFolder/服务/ lib。的services.h文件,您可以重命名的嵌入式编码字典,为目标平台服务指定函数原型。的buildInfo.mat文件存储一个RTW.BuildInfo对象包含编译生成的代码的信息并产生一个图书馆。默认情况下,代码生成器生成源代码和不执行编译和链接。生成一个图书馆,清晰的模型配置参数只生成代码。如果您配置的组件模型库生成或运行作为一个software-in-the-loop (SIL)或处理器循环中的(公益诉讼)仿真、代码生成器构建组件模型库根据模型工具链配置。银或公益诉讼模拟验证该库包含的代码。

当您生成源代码没有编译和链接,您可以构建一个可执行程序为应用程序或组件模型库以外的MATLAB®环境通过使用CMake工作流。您可以创建一个:

  • CMake配置(CMakeLists.txt)文件使用codebuild函数

  • 用于传输文件的ZIP文件到另一个开发环境中通过设置配置参数模型包代码和工件和使用packNGo函数

例如,看到的部署组件使用CMake组件模型库的算法

代码生成的代码来验证是否符合接口要求,使用编码器应用程序中的代码视图窗格和生成的代码接口报告。其他一些工具可用于其他类型的验证,如分析代码的执行,测试数值模拟和代码之间的等价执行和检查意想不到的功能。

探索验证代码生成的组件模型,您可以使用测试工具模型中提供的示例部署导出功能组件配置为C代码生成服务接口部署组件服务接口配置为C代码生成率

有关更多信息,请参见:

生成部署代码

生成和验证代码后,部署它。你如何部署生成的代码取决于你部署一个应用程序或组件。

部署类型 部署目标
应用程序
  • 在目标环境中生成的可执行程序运行作为一个独立的应用程序。

  • 与其他代码整合生成可执行程序运行在目标环境。

  • 自定义生成的源代码集成与其他在目标环境中运行的代码。在这种情况下,您可以使用生成的例子主要为开发一个定制的一个起点主要程序。

组件 集成源代码生成的组件或组件模型库与其他在目标环境中运行的代码。

应用程序部署工作流选项

应用程序部署,默认情况下,代码生成器生成源代码编译和链接成一个可执行程序,可以下载到目标的执行环境。如果你选择配置代码生成器生成源代码没有编译和链接,您可以:

  1. 定制或替换生成的主要函数。你必须小心对齐接口与接口的代码生成的模型算法代码。

  2. 产生一个可执行程序使用codebuild命令来编译和链接生成的代码。

看到构建过程管理文件夹,方法从模型生成的代码构建模型金宝app,编译代码在另一个开发环境

组件部署工作流选项

对于组件部署,您有多个工作流选项。在每种情况下,您必须整合与外部生成的代码主要调度程序处理函数。

您可以:

  • 整合与外部生成的源代码主要函数和其他目标环境源代码和构建一个可执行程序。

  • 生成的组件模型库与外部链接主要功能和其他目标环境的代码来创建一个可执行程序。

  • 使用codebuild命令来构建一个组件模型库生成的源代码。然后,内部或外部的MATLAB环境,图书馆与外部链接主要功能和其他目标环境的代码来创建一个可执行程序。

看到构建过程管理文件夹,配置CMake构建过程,方法从模型生成的代码构建模型金宝app,编译代码在另一个开发环境

生成的组件代码集成目标环境的代码

对嵌入式系统来说,主要功能:

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

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

  • 定义了走读生数据。

  • 初始化数据。

  • 使用模拟或实际的硬件。

  • 调用算法功能。

集成组件代码与生成主要功能和其他目标环境代码,您必须:

  • 匹配的数据和函数接口生成的代码与其他现有系统代码的接口。

  • 连接输入数据。

  • 连接输出数据。

  • 访问其他数据,如块状态值,局部参数,和时间。

设计和配置组件模型,生成的代码与目标环境的代码接口。例如,如果您的目标环境软件定义一个全局变量用于存储输出数据和生成的代码读取这些数据作为输入,您可以配置相应的尺寸,这样生成的代码与现有的变量。目标环境的软件调用入口点函数必须提供输入信号数据,并根据应用程序的调度信息。同时,假设生成算法计算输出数据,调用环境中可以使用。目标环境的软件和算法可以交换这些数据通过使用全局变量或正式的参数(参数)。的输入和输出数据集和数据访问机制构成的入口点函数的接口。

当你理解了代码接口和如何控制它们,您可以:

  • 生成代码可以调用其他组件代码和目标服务。

  • 编写代码来调用生成的代码。

  • 生成可重用的代码(凹),您可以在单个应用程序调用多次。

  • 将生成的代码与其他外部代码在您的应用程序。

在一个模型中,港口和外港根级代表组件的主要输入和输出算法。默认情况下,代码生成器聚集这输入和输出数据转换成标准的结构。

有关示例,请参见根据接口控制文件规格配置生成的代码集成外部应用程序代码和代码生成的PID控制器

有关更多信息,请参见部署、集成和硬件支持金宝app

检查生成的接口代码

确认代码生成器产生预期的界面代码报告通过评审代码接口。该报告描述了生成的代码界面,包括接口信息:

  • 每个组件模型入口点函数(函数名、原型、时间信息,参数,返回值,以及头文件)

  • 每个模型根级尺寸和根级输出港(代码块名称、标识符、数据类型、扩展信息,和尺寸)

  • 可调参数的相关模型(数据存储源代码,代码标识符、数据类型、扩展信息,和尺寸)

  • 全球数据存储和数据存储与非自动存储与模型相关联

模型配置为组件部署的服务接口,该报告包括信息:

  • 每个周期和非周期可调用的入口点函数(原型、头文件、模拟速度和服务调用原型)

  • 初始化和终止可调用的入口点函数(原型和头文件)

  • 每个类型的服务(函数原型、数据通信方法,函数名称,数据类型,尺寸,以及头文件)

配置代码生成器生成的代码接口报告生成的HTML报告的一部分。

关于这份报告的更多信息,请参阅分析生成的数据代码接口

得到元生成的代码的信息

默认情况下,代码生成器代码创建一个描述符文件(codedescriptor.dmr)建立文件夹。该文件包含关于生成的代码的元数据信息,包括:

  • 数据接口(港口、外港、参数、数据存储和内部数据)

  • 函数接口(初始化、输出、更新和终止)

  • 执行信息数据和函数接口,如时间要求

  • 模型层次结构信息和信息参考模型

您可以使用描述符的代码编程接口获取代码描述符文件的内容生成和使用结果确认接口满足集成需求。您还可以使用编程接口提供的输入工具,生成目标平台服务的接口。

有关更多信息,请参见得到代码生成的代码的描述coder.codedescriptor.CodeDescriptor类。

识别并为部署包文件

组件部署,审查和之后,如果有必要,提炼为一个模型,生成的代码接口识别文件构建集成所需的代码。您可以为一个组件模型生成代码和编译一个组件模型库为部署通过清算模型配置参数只生成代码和初始化一个模型构建。如果代码组件模型已经生成,您可以构建一个组件模型库使用codebuild命令的路径codeGenerationFolder/modelBuildFolder/服务/ lib。你可以链接生成的组件模型库主要功能和其他目标环境的代码来创建一个可执行程序。

当你生成源代码没有编译和链接,您可以构建一个组件模型库以外的MATLAB环境使用CMake工作流。您可以创建一个:

  • CMake配置(CMakeLists.txt)文件使用codebuild函数。看到配置CMake构建过程

  • ZIP文件通过设置配置参数模型包代码和工件和使用packNGo函数。的packNGo实用程序发现和包文件,您需要构建一个可执行映像。然后,您可以把ZIP文件到另一个开发环境,如一个专门的应用程序的构建系统。看到搬迁或共享生成的代码

构建集成的代码可执行程序

嵌入式编码器为自定义构建过程提供了广泛的功能。例如:

相关的话题