从 Stateflow 模块生成 C 或 C++ 代码
要基于包含 Stateflow® 图的 Simulink® 模型生成 C 或 C++ 代码,您必须使用 Simulink Coder™。除了 Simulink Coder,您还可以使用 Embedded Coder® 使您的代码更易读、更紧凑、执行速度更快。
使用 Simulink Coder 生成代码
Simulink Coder 允许您基于包含 Stateflow 图的模型生成 C 和 C++ 代码。然后,您可以将生成的代码用于实时和非实时应用程序,包括:
仿真加速
快速原型
硬件在环 (HIL) 测试
使用 Simulink Coder 还允许您访问加速和快速加速模式。加速模式的工作原理是先生成目标代码,然后再用代码来执行任务。有关这些模式的详细信息,请参阅加速模式的工作原理 (Simulink)。
HIL 测试允许您测试控制器设计并确定物理系统模型是否有效。
有关详细信息,请参阅使用 Simulink Coder 生成代码 (Simulink Coder)。
使用 Embedded Coder 生成代码
通过添加 Embedded Coder,您可以生成更紧凑、更易于阅读、运行速度更快的 C 或 C++ 代码。Embedded Coder 还允许对生成的函数、文件和数据进行控制,进而扩展了 SimulinkCoder 的功能。此外,Embedded Coder 能够轻松集成原有代码、数据类型和标定参数。Embedded Coder 支持 AUTOSAR、MISRA C 和 ASAP 2 软件标准。
Embedded Coder 还为特定硬件提供具有高级优化和设备驱动的支持包。
有关详细信息,请参阅使用 Embedded Coder 生成代码 (Embedded Coder)。
优化为 Stateflow 生成的代码
有关优化从 Stateflow 对象生成的代码的设计提示,请参阅Design Techniques to Optimize Stateflow Objects for Code Generation (Embedded Coder)。
为快速原型和生产部署生成代码
目标 | Simulink Coder 文档 | Embedded Coder 文档 |
---|---|---|
生成 C/C++ 源代码 | 源代码生成 (Simulink Coder) | 源代码生成 (Embedded Coder) |
生成 C++ 源代码和编译可执行文件 | 生成代码编译 (Simulink Coder) | 生成代码编译 (Embedded Coder) |
集成外部代码 | 外部代码导入 (Simulink Coder) | 外部代码导入 (Embedded Coder) |
仅包含针对库图的外部代码(库图位于可移植、自包含的库中,可在多个模型中使用) | 为库图集成外部代码 (Simulink Coder) | 为库图集成外部代码 (Embedded Coder) |
优化生成的代码 | 代码效率 (Simulink Coder) | 代码效率 (Embedded Coder) |
生成代码中 Stateflow 对象的可追溯性
可追溯性注释可用于:
验证生成的代码。您可以标识与某行代码对应的 Stateflow 对象,并从您已查看或未查看的不同对象追踪代码。
在为大型模型生成的代码中包含注释。您可以在生成的代码中标识对象,避免手动输入注释或说明。
要启用可追溯性注释,您必须拥有 Embedded Coder 或 HDL Coder™ 软件。有关详细信息,请参阅Trace Stateflow Elements in Generated Code (Embedded Coder)和Navigate Between Simulink Model and HDL Code by Using Traceability (HDL Coder)。
注意
如果其中一个数据使用别名类型并具有可变大小,则 Stateflow 模块不支持代码生成。此限制不适用于图级别的输入、输出或局部数据。有关定义可变大小数据的详细信息,请参阅Declare Variable-Size Data in Stateflow Charts。
相关主题
- Generate Code from Atomic Subcharts
- 使用 Simulink Coder 生成代码 (Simulink Coder)
- 使用 Embedded Coder 生成代码 (Embedded Coder)