Embedded Coder

生成针对嵌入式系统优化的 C 和 C++ 代码

 

Embedded Coder® 可生成可读、紧凑且快速的 C 和 C++ 代码,以便用于大规模生产中使用的嵌入式处理器。它扩展了 MATLAB Coder™ 和 Simulink Coder™ 的功能,支持通过高级优化对生成的函数、文件和数据进行精确控制。这些优化可提高代码效率,并有助于与已有代码、数据类型和标定参数集成。您可以集成第三方开发工具,以便为嵌入式系统或快速原型板上的全套部署构建可执行文件。

Embedded Coder 为 AUTOSARMISRA C® 和 ASAP2 软件标准提供内置支持。它还提供可追溯性报告、代码文档记录和自动化软件验证功能,以支持 DO-178IEC 61508ISO 26262 软件开发。Embedded Coder 代码可移植,并且可在任何处理器上编译和执行。此外,Embedded Coder 为特定硬件提供了包含高级优化和设备驱动程序的支持软件包。

了解各家公司如何使用 Embedded Coder 生成产品级代码,用于控制信号处理图像处理和计算机视觉以及机器学习应用。

快速入门:

配置以生成代码

要为 Embedded Coder® 配置代码生成设置,请使用 MATLAB Coder(针对 MATLAB®)或 Embedded Coder Quick Start(针对 Simulink)。您也可以使用 MATLAB 命令和脚本直接配置每项设置。

通过 MATLAB Coder,您可以:

  • 为 MATLAB 文件和函数生成代码
  • 选择处理器和代码生成输出
  • 选择 Embedded Coder 优化

通过针对 Simulink 的 Embedded Coder Quick Start,您可以:

  • 为 Simulink 模型和子系统生成代码
  • 选择处理器和代码生成输出
  • 选择 Embedded Coder 以优化 RAM 或执行速度

使用 Embedded Coder Quick Start 在 Simulink 中快速开始生成产品级代码。

选择目标

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

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

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

对于 Simulink,指定即用型配置之一,包括:

嵌入式实时目标 — 生成支持浮点和定点数据的 ANSI/ISO C、C++ 和封装 C++ 代码,以便在各类产品级处理器上高效实时执行

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

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

另外,借助来自 MathWorks 和第三方的 MATLAB 附加功能,您可以扩展 Embedded Coder 的功能以支持特定硬件,包括 ARM®、Intel®、NXP™、STMicroelectronics® 和 Texas Instruments™。

使用硬件支持包在嵌入式设备上快速部署生成的代码。

使用自定义数据

Embedded Coder 允许您定义和控制模型数据在所生成代码中的出现方式,以便进行软件集成。

对于 MATLAB 代码,Embedded Coder 支持所有 MATLAB Coder 数据定义,包括定点对象和预定义的存储类。

对于 Simulink 模型,Embedded Coder 支持以下数据字典和设定功能:

Embedded Coder 字典 — 允许您查看和自定义代码定义,包括函数接口、存储类和内存区段

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

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

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

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

使用 Embedded Coder 字典来定义和控制模型与数据在所生成代码中的出现方式。

优化和打包代码

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

Embedded Coder 提供针对 MATLAB 代码和 Simulink 模型的代码生成选项,支持:

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

此外还针对 Simulink 模型提供额外的 Embedded Coder 优化和配置选项,支持:

  • 使用宏生成代码变体以用于预处理器编译
  • 控制每个生成的文件的格式
  • 确定全局数据的定义和引用方式
  • 指定注释的内容和放置

从 Simulink 模型生成 SIMD 代码。

代码的注释、追踪和文档记录

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

  • 生成描述代码模块、函数接口和静态代码度量指标的代码报告
  • 控制生成的全局数据、数据类型和函数的标识符格式
  • 在生成的代码中以注释形式包含 MATLAB 代码,包括函数帮助文本

结合 Simulink,Embedded Coder 还可以插入高层级需求作为代码注释,并包含指向需求来源的链接(需要 Simulink Requirements™)。Simulink 代码生成的代码报告还包括代码接口描述、可追溯性报告以及生成的源文件和代码的显示。模型与生成的代码之间存在双向链接,方便您在每行代码与对应的 Simulink 模型元素(包括子系统、模块、MATLAB 函数和代码以及 Stateflow® 图和转移)之间导航。

Simulink 代码生成报告,其中突出显示了算法与实现之间的双向可追溯性。

执行和验证代码

Embedded Coder 支持您将生成的代码纳入代码执行环境。

对于 MATLAB,从 Embedded Coder 生成的代码通过 MATLAB Coder 提供的同一执行框架来执行。

对于 Simulink,Embedded Coder 极大扩展了 Simulink Coder 提供的实时执行框架。默认情况下,代码可以在使用或不使用实时操作系统 (RTOS) 的情况下执行,并可在单任务、多任务、多核或异步模式下执行。您还可以使用 Embedded Coder 进行软件在环 (SIL) 和处理器在环 (PIL) 测试来验证代码执行结果。借助 Simulink Test™Simulink Coverage,您可以将测试执行、结果比较和覆盖率分析自动化。您还可以对代码执行开展性能分析。

生成主程序

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

执行多速率、多任务和多核代码

Embedded Coder 使用模型中指定的周期采样次数生成单速率或多速率代码。对于多速率、多任务模型,它采用一种名为速率分组的策略,该策略分别为模型中的基本速率任务和每个子速率任务生成单独的函数。您还可以使用 Simulink 并行执行建模生成多线程代码以用于多核处理。

执行 SIL 和 PIL 测试

Embedded Coder 使用 Simulink 仿真模式或 S-function 模块,在 Simulink 中自动执行生成的代码以进行 SIL 测试,或在嵌入式目标上自动执行生成的代码以进行 PIL 测试。借助 Simulink Test™,您可以自动执行测试,并将测试结果与来自原始模型的仿真结果进行比较。通过 Simulink Coverage 或与第三方工具集成,您可以进行结构性的代码覆盖率分析以衡量测试的完整性。代码性能分析则可提供主机或目标处理器上的执行时间。

对 Embedded Coder 生成的代码执行软件在环 (SIL) 和处理器在环 (PIL) 测试。

最新特性

支持 Arm 的 FFT 代码替换库

使用针对 Arm Cortex-A 和 Cortex-M 处理器的代码替换库,为快速傅里叶变换 (FFT) 生成优化的代码

减少数据副本

减少为 Data Store Memory 模块所生成代码中的数据副本,该模块在子系统内部和跨模型引用边界存储大型总线结构

优化多维数组

对保留维度的多维数组,通过重用缓冲来减少内存

按位运算符

通过从逻辑运算符模块生成按位运算符来减少 ROM

多线程 Image Processing Toolbox 函数

为具有多线程功能的 Image Processing Toolbox 函数生成代码,以提高执行速度

循环体的 SIMD 向量化

使用 SIMD 内部函数针对 Intel 和 ARM 处理器将循环和数组向量化

通过 XCP 和第三方工具进行标定和监测

通过 ASAM MCD-1 XCP 通信通道和第三方标定工具(如 ETAS INCA 和 Vector CANape),生成支持参数调优和信号监测的代码

关于这些特性和相应函数的详细信息,请参阅发行说明

Coder Summit

观看现场工程师和开发人员演示软件设计、嵌入式代码生成以及其他方面的新功能。