Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

对通过 Embedded Coder 生成的代码运行 Polyspace 分析

如果您使用 Embedded Coder® 或 TargetLink® 从 Simulink® 模型中生成代码,则可以在 Simulink 环境中使用 Polyspace® 分析生成的代码是否存在 Bug 或运行时错误。您不必手动设置 Polyspace 工程。

本主题介绍如何使用 Embedded Coder 来生成代码。有关如何分析使用 TargetLink 生成的代码,请参阅Run Polyspace Analysis on Code Generated with TargetLink

有关适用于特定模型的教程,请参阅Run Polyspace Analysis on Code Generated from Simulink Model

您可能希望使用其他手写代码分析在 Simulink 之外生成的代码。在此工作流中,提取 Polyspace 选项并运行分析,例如从 Windows 命令行执行操作。请参阅使用打包的选项文件对生成的代码运行 Polyspace 分析。对于较早的版本,Polyspace 支持从生成的代码导航回模型。请参阅Navigate Back to Model

前提条件

在从 Simulink 中运行 Polyspace 之前,必须将已安装的 Polyspace 与 MATLAB® 相关联。请参阅将 Polyspace 与 MATLAB 和 Simulink 集成

生成并分析代码

配置代码生成并生成代码

要配置代码生成并从某个模型生成代码,请执行以下操作之一

  • App 选项卡上,选择 Embedded Coder。然后,在 C 代码选项卡上,选择快速启动。按照屏幕上的说明进行操作。

  • C 代码选项卡上,点击设置并通过 Simulink 配置参数配置代码生成。要设置的主要参数如下:

    • 类型 (Simulink):选择固定步长

    • 求解器 (Simulink):选择自动(自动求解器选择)离散(无连续状态)

    • 系统目标文件 (Simulink Coder):输入 ert.tlcautosar.tlc。如果您从 ert.tlc 派生目标文件,则还可以对其进行指定。

    • Code-to-model (Embedded Coder):选择此选项可启用从代码到模型的链接。

    有关要设置的参数的完整列表,请参阅推荐用于 Polyspace 分析的模型配置参数

    或者,以 Polyspace 为目标运行代码生成顾问,并查看是否已设置了必需的参数。请参阅Configure Model for Code Generation Objectives by Using Code Generation Advisor (Embedded Coder)

    要从模型生成代码,请在 C 代码 选项卡上选择生成代码。您可以在诊断查看器中跟踪代码的生成进度。

配置代码分析

App 选项卡上,选择 Polyspace 代码验证器。在 Polyspace 选项卡上:

  1. 选择要运行的产品:Bug FinderCode Prover。Code Prover 分析可检测运行时错误,而 Bug Finder 分析可检测编码缺陷和编码违规。

  2. 选择设置。如果需要,可更改这些选项的默认值。

    • 设置来源:除工程配置中指定的默认检查之外,还支持对 MISRA™ 编码规则的检查。默认 Bug Finder 检查会查找编码缺陷。默认 Code Prover 检查会查找运行时错误。

    • :对输入、可调参数或输出进行约束,以执行更精确的 Code Prover 分析。

    • :为结果指定一个专用文件夹。默认分析会将结果保存在当前工作文件夹的 results_modelName 文件夹中。

    有关要设置的选项的完整列表,请参阅在 Simulink 中进行 Code Prover 分析

分析代码

要分析从模型生成的代码,请点击画布上的任意位置。分析以下来源的代码字段显示模型名称。选择运行分析

使用 Embedded Coder 时,Polyspace 会在您点击运行分析时检查生成的代码。如果不存在生成的代码,或者模型自上次执行 Polyspace 分析以来已发生更改,则 Polyspace 首先会启动代码生成过程,然后再开始进行分析。

如果另一个模型中引用了当前模型,并且您希望在引用该模型的上下文中验证生成的代码,请使用生成的模型引用代码而非生成的顶层模型代码。在后一种情况下,如果不存在生成的代码,则 Polyspace 不会自动启动代码生成。分析生成的模型引用代码时,请在运行 Polyspace 分析前生成代码。

您可以在 MATLAB 命令窗口中跟踪分析进度。

结果将自动打开,除非被显式禁用。默认情况下,结果将保存在当前文件夹的 results_ModelName 文件夹中。每次新运行时都会覆盖以前的结果。您可以更改默认文件夹或将结果保存到 Simulink 工程。要进行这些更改,请在 Polyspace 选项卡上选择设置

Polyspace如果您已关闭结果并要在稍后打开它们,请在 选项卡上选择分析结果。要打开上次运行之前的结果,请选择打开较早的结果并导航到包含之前结果的文件夹。

审查分析结果

在代码中审查结果

结果显示在 Polyspace 用户界面的结果列表窗格中。点击每个结果即可在窗格中查看源代码,并在结果详细信息窗格中查看详细信息。另请参阅:

从代码导航到模型

代码注释中的链接会显示生成后续代码行的模块。要查看模型中的模块,请点击链接中的模块名称。如果遇到问题,请参阅Troubleshoot Navigation from Code to Model

另外,您也可以右键点击变量名称并选择转至模型。此选项适用于可直接追溯到 Simulink 模块的部分源代码变量。有关生成的代码中哪些变量可以追溯到 Simulink 模块的更多详细信息,请参阅Trace Simulink Model Elements in Generated Code (Embedded Coder)

修复问题

调查代码中的问题是否与模型中的设计缺陷相关。

模型中的设计缺陷可能会导致生成的代码出现问题。例如:

  • 仅当某个模块参数处于特定范围时,生成的代码才有可能不出现特定的运行时错误。要修复此问题,您可以使用配置参数更改该模块参数的存储类,或使用标定数据进行分析。

  • 仅当输入处于特定范围时,生成的代码才有可能不出现特定的运行时错误。要确定此范围,您可以为 Inport 模块信号指定最小值和最大值。Polyspace 分析将使用此受限范围。请参阅在模块中使用信号范围 (Simulink)

  • Stateflow® 图中的某些转换可能无法实现。

您可以将生成的代码与手写代码集成。Polyspace 分析可以检测由集成引起的编码缺陷和编码违规。如果您的 Simulink 模型中包含任何手写代码,您可以单独分析包含的手写代码。请参阅:

为模块添加注解以对问题进行申述

您可能要在不修改代码或模型的情况下对某些 Polyspace 结果进行申述。请通过 Polyspace 用户界面或 Simulink 编辑器为 Simulink 模块添加注解。请参阅Address Polyspace Results by Annotating Simulink Blocks

相关主题