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® 的 MATLAB Coder 应用程序或针对 Simulink的 Embedded Coder Quick Start。也可以使用 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 变量、导出的全局变量、导入的全局变量、定义指令、结构、位字段(包括位打包结构)以及获取和设置访问方法

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

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

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

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

优化和打包代码

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

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

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

为 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 函数块,在 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),生成支持参数调整和信号观测的代码

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

程序员峰会

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