配置以生成代码
要为 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 使用配置对象和系统目标文件,将 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 提供针对 matlab 代码和 simulink 模型的代码生成选项,支持:
- 为数学函数和运算符生成特定于处理器的代码
- 重用代码以导出到已有环境或外部环境
- 消除不必要的初始化、终止、记录和错误处理代码
- 从仅限整数的应用程序中删除浮点代码
此外还针对 simulink 模型提供额外的 embedded coder 优化和配置选项,支持:
- 使用宏生成代码变体以用于预处理器编译
- 控制每个生成的文件的格式
- 确定全局数据的定义和引用方式
- 指定注释的内容和放置
代码的注释、追踪和文档记录
embedded coder 提供了几种功能,用于检查为 matlab 文件和函数或 simulink 模型和子系统所生成的代码。使用这些功能,您可以:
- 生成描述代码模块、函数接口和静态代码度量指标的代码报告
- 控制生成的全局数据、数据类型和函数的标识符格式
- 在生成的代码中以注释形式包含 matlab 代码,包括函数帮助文本
结合 simulink,embedded coder 还可以插入高层级需求作为代码注释,并包含指向需求来源的链接(需要 requirements toolbox™)。simulink 代码生成的代码报告还包括代码接口描述、可追溯性报告以及生成的源文件和代码的显示。模型与生成的代码之间存在双向链接,方便您在每行代码与对应的 simulink 模型元素(包括子系统、模块、matlab 函数和代码以及 stateflow® 图和转移)之间导航。
执行和验证代码
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 或与第三方工具集成,您可以进行结构性的代码覆盖率分析以衡量测试的完整性。代码性能分析则可提供主机或目标处理器上的执行时间。