matlab嵌入式代码生成

更新时间:2024-04-25 17:12:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Embedded Coder

——为嵌入式系统生成优化的C/C++代码

Embedded coder可为嵌入式处理器、目标上的快速原型及产品中使用的微处理器生成可读的、集成的、高效的C/C++代码。Embedded coder扩展了Matlab coder和Simulink coder配置选项和优化设置,来更好的控制生成代码的函数、文件和数据。这些优化设置提高了代码的执行效率,并能够集成产品应用时的外部代码、数据类型及标定参数。还可以将第三方开发环境集成到为嵌入式系统生成可执行文件的build过程中。

Embedded coder本身提供对AUTOSAR和ASAP2软件标准的支持。同时也提供可追溯性报告、代码接口文件和自动化的软件测试来支持DO-178B,IEC61508和ISO26262的软件开发。

特点:

? ? ? ? ?

扩展了Matlab coder和Simulink coder的优化和代码生成配置选项。? 具有使用Simulink数据字典进行存储类型、数据类型和别名定义的能力。? 针对具体目标平台的代码优化。?

无论有无RTOS的多速率、多任务和多核的代码执行。?

代码验证,包含SIL/PIL测试,自定义注释,具有模型和需求到代码双向追踪的代码报告。?

? 集成Texas Instruments Code Composer Studio?, Analog? Devices? VisualDSP++?及其它的第三方嵌入式开发环境。

? 对标准的支持,包含ASAP2, AUTOSAR, DO-178, IEC 61508, ISO 26262,? and MISRA C。

一个生成代码的定点模型和它的设置为SIL执行的仿真模型。

Embedded Coder可进行产品级的嵌入式系统代码快速生成、归档和测试。

强大的功能

■ 配置目标平台

可使用Matlab Coder的工程用户界面及Simulink Model Explore来设置Embedded Coder的代码生成的配置选项。也可以直接使用Matlab命令和脚本的形式对每个选项进行设置。

从Matlab Coder的工程用户界面,可进行:

? ? ? ?

为MATLAB文件和函数生成代码。? 选择使用Embedded Coder特性。? 为代码生成配置功臣设置选项。? 创建、加载和重用多个工程。?

从Simulink Model Explore,可进行:

? ? ? ?

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

■ 选择目标

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

对于一个MATLAB配置对象,需要说明如下的输出目标:

? ? ?

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

对于Simulink系统目标文件,需要说明生成的代码即将运行在哪种实时环境中。

Embedded Coder包含多种配置的目标文件,也支持第三方和自定义目标。内置的目标

包括:

? Embedded Real-Time目标:为任意的产品级处理器生成具有定点和浮点数据的ANSI/ISO? C,C++代码,可进行高效的实时运行。

? ?

AUTOSAR 目标:生成支持AUTOSAR软件组件的C代码和实时运行接口。? 共享库目标:生成可在主机目标平台上运行的静态库,如windows的动态链接库(.dll),UNIX共享目标文件(.so)。?

? IDE? LINK目标:生成支持第三方集成开发环境编译和下载的代码,如(CCS)。

■ 定义嵌入式硬件特性

可从预定义的列表或者使用目标设置为MATLAB或者SIMULINK代码生成选择目标平台。可通过自定义环境来扩展这个预定义的列表。

可通过Simulink Model Explore为代码部署设置预定义列表或者设置生成的微处理器选项。 Embedded Coder可为任意的微处理器或者DSP生成代码,包括8位,16位,32位。

■ 定义及控制自定义数据

Embedded Coder可以定义及控制生成代码中的数据格式。为了便于软件集成,可以通过MATLAB Coder工程用户界面说明入口函数和全局数据的类型、长度及是否是复数。

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

对于Simulink模型,Embedded Coder生成代码支持如下的数据说明及数据字典定义:

? Simulink data? object—提供预定义存储类型,包括constant,volatile,exported global,imported global,structure,bit fileld及获取和设置的方法。

? Module packaging data? object—为高级的数据对象提供预定义的特性,主要用于多种产品,如内存分配来进行标定或者调节查表数据。

? User data? type-从复杂的数据中创建抽象的数据类型,可精确控制生成代码中的模型数据,可与legacy data进行交互,同时也可替代simulink内置的数据类型。

如下的工具将有助于在simulink中设计和管理工程数据:

? Custom Storage Class? Designer-通过图形化的界面创建自定义的数据定义和声明,将数据结构导入到生成的代码中,或者是导出数据,分配内存,将自动生成与交换标准如ASAM或者ASAP2兼容的数据格式。

? Simulink Model? Explore—显示simulink模型和stateflow图中所有用到的数据,可以以数据字典的格式查看所有自定义数据的信息。

? Embedded? Coder可以创建ASAP2的数据交换文件,能够使用ASAP2标准导出具有复杂数据定义的模型数据。可修改内置的属性生成其它的数据交换机制文件。

通过Custom Storage Class Designer创建自定义的存储类型,可使用内置图形用户界面进

行设计、查看及验证复杂数据类型。

■ 优化及打包代码

使用Embedded Coder,可控制函数边界、保留表达式,对多个模块使用优化选项以减少代码量。数据通过全局变量或者函数参数的形式与生成的代码进行交换。可将生成的代码追溯到模型中的模块和信号。

从MATLAB代码和Simulink模型生成代码,Embedded Coder选项可进行:

? ? ? ?

为数学函数和操作符生成具体目标平台的代码。? 生成导出到外部环境的可重用代码。?

减少不必要的初始化、终止、记录和错误处理的代码。? 从整形应用中去除浮点型代码。?

Embedded Coder还为simulink模型提供额外的代码优化和配置选项,可进行:

从模型中生成具有处理器编译宏定义的代码变量。

按位存储布尔型数据和stateflow状态。

? ? ?

可控制每个生成文件的格式。?

控制全局变量数据是如何定义和引用的。? 对注释的内容和放置位置进行说明。?

具有具体目标平台的数学扩展函数和重用函数优化选项的MATLAB例子和Simulink例子。 Embedded Coder使用具体目标平台和可移植的代码优化选项来提高代码的执行效率。

■ 注释、追溯及记录代码

Embedded Coder提供多种方式来检查从MATLAB文件和函数或者Simulink模型和子系统生成的代码。使用这些方式,可进行:

? ? ?

生成代码生成报告,来描述模型和模块的配置选项。? 控制生成代码中全局数据,数据烈性和函数的标识符。?

在生成的代码中可将MATLAB代码作为注释,包含函数帮助文档。?

Embedded Coder也可将高级需求作为代码注释插入到代码中,与需求文档可进行链接(需要Simulink Verification and Validation)。代码生成报告也包含代码接口描述文件,追溯性报告及可显示生成的源文件和代码。模型和代码间存在双向的链接,可以方便的在每行代码和相关的simulink模型间进行定位,包含子系统、模块、MATLAB函数和代码及Stateflow

状态图和转换。可点击一个链接以高亮显示相关的模型元素或者代码行,更加方便代码检查和调试。

Simulink代码生成报告,高亮现实算法和代码间的双向追踪。

■ 执行和验证代码

Embedded Coder可将生成的代码与代码执行环境进行集成,Embedded Coder对MATLAB生成的代码的执行与使用MATLAB Coder生成的代码具有相同的执行框架。

对于Simulink,Embedded Coder扩展了Simulink Coder提供的实时执行的框架。默认情况下,代码可在具有或者没有实时操作系统、单任务多任务或者异步模式下执行。也可以使用软件在环(SIL)和处理器在环(PIL)的方式验证代码执行的结果。

◆ 生成主程序

Embedded Coder按照所提供的实时环境代码部署信息生成一个可扩展的主程序。这种特性可为模型生成和创建一个完整的自定义可执行文件。

◆ 速率分组

Embedded Coder按照模型中的采样时间设置生成单速率或者多速率代码。对于多速率多任务模型,按照速率分组为每个速率任务生成独立的函数。

◆ 使用链接和目标

第三方IDE、微处理器及RTOS包括Wind River Systems? VxWorks支持生成代码的自动下载、集成、优化和执行。

◆ SIL和PIL测试

Embedded Coder可在simulink中使用simulink仿真模型或者s-function模块自动执行生成代码进行SIL测试,或者在嵌入式目标平台上进行PIL测试。代码生成测试API可帮助自动测试的执行,并与之前的模型比较测试结果。与第三方工具的集成可进行代码结构覆盖度分析来确保测试的完整性。

Simulink Coder

——从Simulink和Stateflow模型生成C和C++代码

Simulink Code(之前版本为 Real-Time Workshop)从 Simulink框图、Stateflow图和 MATLAB函数生成并执行 C和C++代码。生成的代码可用于实时和非实时应用,包括仿真加速、快速原型建立和硬件在回路测试。可以使用 Simulink 对生成的代码进行调优和监测,或在 MATLAB和 Simulink之外运行代码并与之交互。

特点

离散、连续或混合 Simulink 和 Stateflow 模型的 ANSI/ISO C 和 C++ 代码及可执行文件

用于大型模型的增量代码生成

支持整型、浮点型和定点型数据类型

针对单采样率、多采样率和异步模型的代码生成 使用或不使用 RTOS 的单任务、多任务和多核代码执行 用于参数调优和信号监测的外部模式仿真

强大的功能

■ 选择和使用目标

Simulink 模型资源管理器在 Simulink 中提供了单一用户界面,用于配置所有代码生成设置。模型资源管理器可提供:

? ? ?

选择代码生成目标? 配置目标以进行代码生成? 为模型或子系统生成代码?

Code Generation Advisor 会检查模型和代码生成设置,然后根据需求针对如何改进配置提供建议。 一旦为项目确定了最优设置之后,便可以将这些设置保存为配置集以重复用于其他模型。

使用 Simulink 建模的大型飞机系统。 Simulink Coder 支持用于大规模建模的高级 Simulink

功能,包括模型块、变量子系统和总线数组。

◆ 选择目标:

Simulink Coder 使用系统目标文件将模型转换为源代码和可执行文件。 目标文件指定生成的代码将要在其中运行的环境。 Simulink Coder 包括若干个准备好运行的配置的目标文件,还支持第三方目标和自定义目标。 内置目标包括:

? 一般实时目标——生成用于模型参数交互式调优的代码,记录和显示实时仿真结果并静态分配数据为进行高效的实时执行;?

? 一般实时 Malloc? 目标——在生成的代码中使用动态内存分配,以便在一个可执行文件中包含同一模型的多个实例或包含多个模型;

? 快速仿真目标 (RSim)——提供快速灵活的测试平台用于使用定步长或变步长求解器执行批量或 Monte? Carlo 仿真研究,并使您可以将每次运行的数据保存到唯一的输出文件中。

可以扩展这些目标以创建自定义的运行时接口和设备驱动程序文件,从而能以特定环境为目标,访问 Simulink Coder 的执行并调试其中的功能。

■ 编译和执行生成的代码

Simulink Coder为使用常用桌面环境编译和执行生成的代码提供内置支持,包括:

? ? ? ?

Eclipse? IDE?

Microsoft? Visual C++? IDE? Linux? 操作系统? Windows? 操作系统?

可以使用 Embedded Coder 在实时嵌入式系统中生成和运用优化的 C 和 C++ 代码。

■ 定义和控制数据

Simulink Coder 允许用户定义和控制模型数据在所生成代码中的出现方式。 可通过以下方式管理数据:

? ? ? ?

将数据类型声明为整型、浮点型和定点型? 指定调优和校准参数或常数的存储区? 指定监测和记录信号数据的存储区? 重复使用存储区以最小化局部范围的数据?

Simulink Coder 从存储在 Simulink 框图或数据字典(通过 Simulink 模型资源管理器访问)中的数据生成代码。 通过利用不同的数据字典集,可以将代码从一个模型重新运用到多个目标。

Simulink 模型资源管理器可显示模型中使用的各种数据类型和存储类。

注意存储类要求Embedded Coder。

■ 生成代码

Simulink Coder 为 Simulink 和 Stateflow 功能和组件提供了全面的代码生成支持,包括:

? ? ?

模型块用于增量生成代码?

原子子系统和原子子图表,用于通过可重入 C 函数的重用代码? 在代码中,总线对象和总线数组用于生成结构?

? S-函数,用于对已有代码进行仿真和对接?

Simulink 中的 MATLAB 函数块和 Stateflow 中的 MATLAB 函数,用于从具有 MATLAB 组件的模型生成代码

Simulink Coder 还支持 Simulink 系列产品,包括定点建模、物理建模、信号处理和通信建模以及快速原型建立和硬件在回路 (HIL) 测试产品。

◆ 代码生成选项:

Simulink Coder 提供了用户可选择的选项,以便在桌面和仿真环境中执行生成的代码。选项包括:

? ? ? ? ? ?

代码重用? 表达式折叠? 信号存储区重用? 死路径消除? 参数内联?

单精度和预制数学库(包括 ISO C 和 GNU C)?

生成的代码,其中将 For 循环融合和表达式折叠用于一个 10 元素数组模型。

Simulink Coder 为单维和多维信号生成高效且可读的代码。

Simulink中合成前期和后期时序信息的关键路径突出显示。能够快速迭代设计,以规避时序限制瓶颈。

Simulink HDL Coder能够生成可读的,独立于目标机的HDL代码,并且支持遗产代码集成。因此,用户能够根据设计需求在FPGA和ASIC的实现之间快速转换。

Simulink PLC Coder

——生成PLCs和PACs的IEC 61131结构化文本

Simulink PLC Coder?能够将Simulink模型,Stateflow?图和Embedded MATLAB?函数,生成与硬件无关的IEC 61131结构化文本。结构化文本可以是PLCopen规范的XML格式,也可以是广泛应用于集成开发环境(IDEs)的其他文件格式。因此,我们可以对各种可编程逻辑控制器(PLC)及可编程自动化控制器(PAC)设备进行应用程序的编译和配置。

Simulink PLC Coder通过PLC和PAC IDEs,以及仿真工具的使用,能够生成测试平台,帮助我们来验证结构化文本。 特点

? ? ? ? ?

自动生成IEC 61131-3结构化文本;

支持Simiulink,包括可重复利用子系统,PID控制器模块及查找表; 支持Stateflow,包括图形功能,真值表及状态机;

支持嵌入式MATLAB,包括if-else语句,循环结构及数学运算;

支持多种数据类型,包括布尔型、整数型、枚举类型、浮点型,以及向量、矩阵、总线和可调参数;

? 支持IDE,包括B&R Automation?,PLCopen XML,Rockwell Automation? RSlogix? 5000,及3S-Smart Software Solutions CoDeSys;

? 创建测试平台。

从模型到结构化文本再到应用,Simulink PLC Coder将模型生成结构化文本,供IDE应用到工业控制系统。

Simulink PLC Coder的使用

在Simulink环境中,利用Simulink PLC Coder生成结构化文本,需右键点击Simulink子系统模块,在打开的右键菜单中选择PLC Coder>Generate Code for Subsystem选项。在MATLAB环境中,用户可以调用plcgeneratecode命令,来创建脚本文件,生成结构

化文本,使得结构化文本的生成过程自动化且可重复。

Simulink PLC Coder支持130多个Smulink模块,包括所有的Stateflow结构以及大部分嵌入式MATLAB函数;对于包含了反馈环路,模型和状态逻辑以及复杂数学算法的控制系统模型,Simulink PLC Coder也能完全够执行。用户利用Simulink PLC Coder可以将离散对象模型转换成结构化文本,用来进行硬件在回路(HIL)测试。另外,也可以使用Real-Time Workshop?生成C/C++代码,对离散或者连续系统模型进行硬件在回路(HIL)测试。

在Simulink环境中,利用Simulink PLC Coder生成结构化文本,需右键点击Simulink子系统模块,在打开的右键菜单中选择PLC Coder>Generate Code for Subsystem选项。

代码优化和IDE集成

Simulink PLC Coder提供了优化策略,使得内存大小减少,并且所生成的结构化文本的执行速度也得以提高。优化策略包括:

? 死代码消除;

? ? ? ? ?

折叠表达式; 循环合并; 内联参数; 信号存储和复用; 子系统复用。

用户对于优化的需求可以随着项目发展阶段的不同而变化。例如,在快速开发原型阶段,可以定义全局参量来对模型进行调节和校准;在后续的产品生成阶段,可以通过内嵌参数选项生成数值形式的参数来生成更多的优化代码。

Simulink PLC Coder能够输出多种格式的结构化文本,供第三方IDE使用。Simulink PLC Coder支持的文档格式包括:

? 3S-Smart Software Solutions CoDeSys;PLCopen XML,Rockwell Automation? RSlogix? 5000,

? ? ? ? ?

B&R Automation Studio; Beckhoff? TwinCAT?; Generic ASCII; PLCopen XML;

Rockwell Automation RSlogix 5000

从Simulink PLC Coder参数配置对话框中所列出的“supported IDEs”选择IDE,然后生成结构化文本,利用所选的IDE对结构化文本进行集成和编译。

本文来源:https://www.bwwdw.com/article/l67p.html

Top