Embedded Coder

主要特性

  • 扩展 MATLAB Coder 和 Simulink Coder 的优化和代码配置选项
  • 使用 Simulink® 数据字典功能的存储类、类型和别名定义
  • 特定于处理器的代码优化
  • 使用或不使用 RTOS 的多速率、多任务和多核代码执行
  • 代码验证,包括 SIL 和 PIL 测试、自定义注释以及代码报告(从模型追踪到代码和要求以及从代码和要求追踪模型)
  • 集成了 Texas Instruments 的 Code Composer Studio、Analog Devices VisualDSP++® 和其他第三方嵌入式开发环境
  • Simulink 中的标准支持,包括 ASAP2、AUTOSAR、DO-178、IEC 61508、ISO 26262 和 MISRA C®
A fixed-point model with generated code and its simulation mode set for SIL execution.
一个定点模型,具有生成的代码及其针对 SIL 执行的仿真模式设置。 Embedded Coder 使您可以为生产嵌入式系统快速生成、记录和测试代码。

配置和使用目标

若要为 Embedded Coder 配置代码生成设置,可使用 MATLAB Coder 项目用户界面或 Simulink 模型资源管理器。 也可以使用 MATLAB 命令和脚本直接配置每个设置。

通过 MATLAB Coder 项目用户界面,可以:

  • 为 MATLAB 文件和函数生成代码
  • 选择使用 Embedded Coder 功能
  • 配置项目设置以进行代码生成
  • 创建、加载和重用多个项目

通过 Simulink 模型资源管理器,可以:

  • Simulink 模型和子系统生成代码
  • 选择 Embedded Coder 目标
  • 配置目标以进行代码生成
  • 创建、加载和重用多个配置集

选择目标

Embedded Coder 使用配置对象和系统目标文件,将 MATLAB 代码和 Simulink 模型转换为产品级源代码和可执行文件。

对于 MATLAB 配置对象,指定以下输出目标之一:

  • MEX 文件
  • C/C++ 静态库
  • C/C++ 可执行文件

对于 Simulink 系统目标文件,指定将用于运行生成的代码的实时环境。Embedded Coder 包括若干个准备好运行的配置目标文件,还支持第三方目标和自定义目标。内置目标包括:

嵌入式实时目标 — 生成包含浮点和定点数据的 ANSI/ISO C、C++ 和封装 C++ 代码,以便在几乎所有产品处理器上进行高效实时执行

AUTOSAR 目标 — 生成支持 AUTOSAR 软件组件开发的 C 代码和运行时接口

共享库目标 — 以 Windows® 动态链接库 (.dll) 文件或 UNIX® 共享对象 (.so) 文件的形式,生成可供主机平台执行的代码的共享库版本

 IDE 链接目标 — 使用支持的第三方集成开发环境 (IDE),如 Texas Instruments 的 Code Composer Studio,生成可供编译和部署的代码

定义嵌入式硬件特性

为进行 MATLAB 或 Simulink 代码生成,您从预定义列表中选择部署处理器或使用通用目标设置。还可以针对您的自定义环境扩展预定义列表。

Simulink Model Explorer, which provides access to a predefined list or generic settings for specifying the microprocessor for code deployment.
Simulink 模型资源管理器,通过它可访问一个预定义列表或用于为代码部署指定微处理器的通用设置。Embedded Coder 可为任何微处理器或 DSP(包括 8 位、16 位和 32 位)生成代码。

定义和控制自定义数据

Embedded Coder 允许您定义和控制模型数据在所生成代码中的出现方式。 为了便于进行软件集成,可以使用 MATLAB Coder 项目用户界面为入口点函数和全局数据指定 MATLAB 数据的类、大小和复杂性。

对于 MATLAB 代码,Embedded Coder 支持所有 MATLAB Coder 数据定义,包括定点对象。

对于 Simulink 模型,Embedded Coder 支持以下数据规格和数据字典功能以生成代码:

Simulink 数据对象 — 提供预定义存储类,包括常数、volatile 变量、导出的全局变量、导入的全局变量、定义指令、结构、位字段(包括位打包结构)以及获取和设置访问方法

模块打包数据对象 — 为通常用于大规模生产的高级数据对象(如用于校准或调节查找表的内存段)提供预配置属性

用户数据类型 — 使您可为复杂数据创建抽象类型,以便能精确控制模型数据在所生成代码中的出现方式、与任何已有数据结合以及扩展或替换 Simulink 内置类型

以下工具可帮助您设计和管理 Simulink 中的项目数据:

自定义存储类设计器 — 使您可通过图形方式创建自定义定义和声明,以便将数据结构导入到生成的代码中、导出数据、保留内存或自动生成符合交换标准(如 ASAM 或 ASAP2)的数据

Simulink 模型资源管理器 — 显示 Simulink 模型和 Stateflow® 图使用的所有数据,并提供可自定义的视图,以便您可以通过数据字典格式定制信息

通过 Embedded Coder 可以访问 Simulink 中的 ASAP2 数据交换文件,从而使您可以使用 ASAP2 标准导出包含复杂数据定义的模型数据。 可以修改内置功能以生成其他数据交换机制。

A custom storage class created using the Customer Storage Class Designer.
使用自定义存储类设计器创建的自定义存储类,通过该设计器可以使用直观的图形界面来设计、查看和验证复杂数据类型。

优化和打包代码

使用 Embedded Coder,可以控制函数边界、保留表达式并对多个模块应用优化以进一步缩小代码大小。通过全局变量或函数参数而与生成的代码交换数据。可以从生成的代码追踪到模型中的模块和信号。

通过用于从 MATLAB 代码和 Simulink 模型生成代码的 Embedded Coder 选项,可以:

  • 为数学函数和运算符生成特定于处理器的代码
  • 重用代码以导出到已有环境或外部环境
  • 消除不必要的初始化、终止、记录和错误处理代码
  • 从仅限整数的应用程序中删除浮点代码

为 Simulink 模型提供了其他 Embedded Coder 优化和配置选项,从而使您可以:

  • 使用宏生成代码变量,以便从模型进行预处理器编译
  • 将布尔数据和 Stateflow 状态存储在位集中
  • 控制每个生成的文件的格式
  • 确定全局数据的定义和引用方式
  • 指定注释的内容和放置
MATLAB example of target-specific math extensions and reusable function optimizations.
Simulink example of target-specific math extensions and reusable function optimizations.
特定于目标的数学扩展和可重复使用的函数优化的 MATLAB 示例(左)及 Simulink 示例(右)。Embedded Coder 通过使用特定于目标和可移植的代码优化来提高代码效率。

注释、追踪和记录代码

Embedded Coder 提供了几个功能,用于检查为 MATLAB 文件和函数或 Simulink 模型和子系统而生成的代码。使用这些功能,您可以:

  • 生成描述模块和模型配置设置的代码报告
  • 控制生成的全局数据、数据类型和函数的标识符格式
  • 在生成的代码中包含 MATLAB 代码作为注释,包括函数帮助文本

对于 Simulink,通过 Embedded Coder 还可以插入高层次需求作为代码注释,包含指向需求来源的链接(需要 Simulink Verification and Validation)。Simulink 代码生成的代码报告还包括代码接口描述、可溯源性报告以及生成的源文件和代码的显示。模型与生成的代码之间存在双向链接,从而可方便地在每行代码与其对应的 Simulink 模型元素(包括子系统、模块、MATLAB 函数和代码以及 Stateflow 图和转移)之间导航。可以单击链接来突出显示对应模型元素或代码行,从而便于进行代码评审和调试。

Simulink code generation report highlighting bidirectional traceability between algorithm and implementation.
突出显示算法与实现之间的双向可溯源性的 Simulink 代码生成报告。

执行和验证代码

Embedded Coder 使您可以将生成的代码并入到代码执行环境中。

对于 MATLAB,从 Embedded Coder 生成的代码使用 MATLAB Coder 提供的相同执行框架来执行。

对于 Simulink,Embedded Coder 极大扩展了 Simulink Coder 提供的实时执行框架。默认情况下,代码可以在使用或不使用实时操作系统 (RTOS) 的情况下执行,并可在单任务、多任务或异步模式下执行。还可以使用软件在回路 (SIL) 和处理器在回路 (PIL) 测试来验证代码执行结果。

生成主程序

Embedded Coder 基于您为在实时环境中部署代码而提供的信息生成可扩展的主程序。通过此功能可以从模型生成和构建完整的自定义可执行文件。

对速率分组

Embedded Coder 使用模型中指定的周期采样次数生成单采样率或多采样率代码。对于多采样率、多任务模型,它采用一种名为速率分组的策略,该策略为基本速率任务和模型中的每个子速率任务生成不同的函数。

使用链接和目标

对于支持的第三方 IDE、微处理器和 RTOS(包括 Wind River Systems® VxWorks®),可以自动部署、集成、优化和执行生成的代码。

执行 SIL 和 PIL 测试

Embedded Coder 使用 Simulink 仿真模式或 S 函数块,在 Simulink 中自动执行生成的代码以进行 SIL 测试,或在嵌入式目标上自动执行生成的代码以进行 PIL 测试。代码生成验证 API 可帮助自动执行测试,并将测试结果与来自原始模型的仿真结果进行比较。通过与第三方工具集成,可以进行结构化代码覆盖率分析以测量测试是否完整。

试用 Embedded Coder

获取试用版软件

MATLAB快速雷达系统设计与仿真

观看网上技术交流会录像