嵌入式编码器

为嵌入式系统优化C和C++代码

嵌入式编码器®为批量生产中的嵌入式处理器生成可读取、紧凑、快速的C和C++代码,扩展了MATLAB编码器。™ 和Simulink编码器™ 通过高级优化,可精确控制生成的函数、文件和数据。这些优化可提高代码效率,促进与旧代码、数据类型和校准参数的集成。您可以使用第三方开发工具在万博1manbetx嵌入式系统或rap上构建交钥匙部署的可执行文件id原型板。

嵌入式编码器提供了内置的支持万博1manbetxAUTOSAR米斯拉C®,以及ASAP2软件标准。它还提供跟踪报告、代码文档和自动化软件验证,以支持万博1manbetxDO-178IEC 61508ISO 26262软件开发。嵌入式编码器代码是可移植的,并且可以在任何处理器上编译和执行。此外,嵌入式编码器还提供支持包,其中包含高级优化和设备驱动程序,用于万博1manbetx专用硬件

了解公司如何使用嵌入式编码器生成产品代码控制信号处理图像处理与计算机视觉机器学习应用。

开始:

为代码生成进行配置

为嵌入式编码器配置代码生成设置的步骤®,您可以使用MATLAB编码器应用程序MATLAB®或Simulink的嵌入式编码器快速入门。万博1manbetx您还可以使用MATLAB命令和脚本直接配置每个设置。

从MATLAB编码器应用程序,您可以:

  • 为MATLAB文件和函数生成代码
  • 选择处理器和代码生成输出
  • 选择嵌入式编码器优化

从Simulink的嵌入式编码器快速入门,您可以:万博1manbetx

  • 为Simulink模型和子系统生成代码万博1manbetx
  • 选择处理器和代码生成输出
  • 选择嵌入式编码器以优化RAM或执行速度

使用嵌入式编码器Quick Start从Simulink生成jumpstart生产代码。万博1manbetx

选择目标

嵌入式编码器使用配置对象和系统目标文件将MATLAB代码和Simulink模型转换为产品质量源代码和可执行文件。万博1manbetx

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

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

对于Si万博1manbetxmulink,您可以指定一种准备运行的配置,包括:

嵌入式实时目标-生成ANSI/ISO C、C++和封装的C++代码,其中浮点和定点数据用于几乎任何生产处理器的实时实时执行。

自动雷达目标生成支持的C代码和运行时接口万博1manbetxAUTOSAR软件组件(需要AUTOSAR区块集)

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

此外,MathWorks和第三方还提供MATLAB附加组件,扩展嵌入式编码器以支持万博1manbetx专用硬件包括手臂®,英特尔®,NXP™, 意法半导体®,以及德州仪器™。

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

使用自定义数据

嵌入式编码器使您能够定义和控制模型数据在生成的代码中的显示方式,以便于软件集成。

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

对于Si万博1manbetxmulink模型,嵌入式编码器支持以下数据字典和规范功能:万博1manbetx

嵌入式编码词典-用于查看和自定义代码定义,包括函数接口、存储类和内存部分

万博1manbetx模型数据对象-提供预定义的存储类,包括常量、易失性、导出全局、导入全局、定义指令、结构、位字段(包括位压缩结构)以及获取和设置访问方法

模块封装数据对象-为通常用于批量生产的高级数据对象提供预配置属性,例如用于校准或优化查找表的内存段

用户数据类型-允许您为复杂数据创建抽象类型,以便精确控制模型数据在生成的代码中的显示方式、与任何遗留数据的接口,以及扩充或替换Simulink内置类型万博1manbetx

Embedded Coder允许您访问Simulink中的ASAP2数据交换文件,使您能够使用ASAP2标准导出具有复杂数据定义万博1manbetx的模型数据。您可以修改内置功能以生成其他数据交换机制。

使用嵌入式编码器字典来定义和控制模型和数据在生成代码中的显示方式。

优化和包装代码

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

用于从MATLAB代码和Simulink模型生成代码的嵌入式编码器选项使您能够:万博1manbetx

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

附加的嵌入式编码器优化和配置选项可用于Simulink模型,使您能够:万博1manbetx

  • 使用宏生成用于预处理器编译的代码变体
  • 控制每个生成文件的格式
  • 确定如何定义和引用全局数据
  • 指定评论的内容和位置

从Simulink模型生成SIMD代码。万博1manbetx

注释、跟踪和记录代码

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

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

通过Sim万博1manbetxulink,嵌入式编码器还可以将高级需求作为代码注释插入,并链接到需求源(需要)万博1manbetx仿真软件需求™)。Simulink代码生成的代码报告还包括代万博1manbetx码接口说明、可追溯性报告以及生成的源文件和代码的显示。模型和生成的代码之间存在双向链接,使得在每行代码及其对应的Simulink模型元素(包括子系统、块、MATLAB函数和代码)之间易于导航,以及Stateflow®图表和过渡。

万博1manbetxSimulink代码生成报告,突出显示算法和实现之间的双向可追溯性。

执行和验证代码

Embedded Coder使您能够将生成的代码合并到代码执行环境中。

在MATLAB中,由Embedded Coder生成的代码使用与MATLAB Coder提供的相同的执行框架执行。

通过Sim万博1manbetxulink,嵌入式编码器显著扩展了Simulink编码器提供的实时执行框架。默认情况下,代码可以使用或不使用实时操作系统(RTOS)执行在单任务、多任务、多核或异步模式下。您还可以使用嵌入式软件在环编码器(SIL)和处理器在环(PIL)测试验证代码执行结果。万博1manbetx模拟试验™万博1manbetx模拟链路覆盖帮助自动化测试执行、结果比较和覆盖率分析。还支持代码执行评测分析。万博1manbetx

生成主程序

Embedded Coder基于您提供的用于在实时环境中部署代码的信息生成可扩展的主程序。此功能允许您从模型生成和构建一个完整的定制可执行文件。

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

内嵌编码器使用模型中指定的周期采样时间生成单速率或多速率代码。对于多速率、多任务模型,它采用一种称为速率分组的策略,为基本速率任务和模型中的每个子任务生成单独的函数。您还可以使用Simulink并发执万博1manbetx行建模来生成用于多核处理的多线程代码。

执行SIL和PIL测试

Embedded Coder使用Simulink仿真模式或S-function块在Simulink中自动执行生成万博1manbetx的代码,用于SIL测试,或用于PIL测试的嵌入式目标。万博1manbetx模拟试验™帮助自动化测试执行,并将测试结果与原始模型的模拟结果进行比较。可以使用结构代码覆盖率分析来度量测试的完整性万博1manbetx模拟链路覆盖或者与第三方工具集成。代码分析提供主机或目标处理器上的执行时间。

对嵌入式编码器生成的代码执行软件在环(SIL)和处理器在环(PIL)测试。

最新功能

单个代码映射

在代码映射编辑器中为单个数据元素配置存储类

SIMD代码生成

在Intel SSE、AVX 256/512和Arm NEON处理器上生成用于快速循环和阵列执行的SIMD内部函数

多线程图像处理代码

通过为具有多线程功能的图像处理工具箱函数生成代码,提高执行速度

优化多维数组

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

MISRA合规

用较少的MISRA C和2012和MISRA C++ 2008生成C和C++代码

Arm的优化FFT

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

位操作符

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

看到发行说明有关这些特性和相应功能的详细信息。

编码峰会

观察现场工程师和开发人员介绍软件设计、嵌入式代码生成等方面的新功能。