运行Polyspace对生成的代码进行分析嵌入式编码器

如果您从Simulink中生成代码万博1manbetx®使用嵌入式编码器建模®或TargetLink®,您可以使用Polyspace分析生成的代码中的bug或运行时错误®在Simulink环境中。万博1manbetx您不必手动设置Polyspace项目。

本主题使用嵌入式编码器进行代码生成。有关targetlink生成的代码的分析,请参见对TargetLink生成的代码运行Polyspace分析.

有关特定模型的教程,请参阅对Simulink模型生成的代码运行Polyspace分析万博1manbetx.

先决条件

在从Simulink运行Polyspace之前,必须链接Po万博1manbetxlyspace和MATLAB®安装。看到将Polyspace与MATLAB和Simulink集成万博1manbetx.

生成和分析代码

配置代码生成和生成代码

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

  • 应用程序选项卡上,选择嵌入式编码器.然后,在C代码选项卡上,选择快速启动.按照屏幕上的说明操作。

  • C代码选项卡上,单击设置并通过Simulink配置参数配置代码生成。万博1manbetx主要设定参数如下:

    • 类型(万博1manbetx模型):选择固定步.

    • 解算器(万博1manbetx模型):选择自动(自动解决方案选择)离散(无连续状态).

    • 系统目标文件(万博1manbetx仿真软件编码器):进入ert.tlcautosar.tlc.如果您从中派生目标文件ert.tlc,您也可以指定它们。

    • Code-to-model(嵌入式编码器):选择此选项以启用从代码到模型的链接。

    有关要设置的完整参数列表,请参阅多空间分析的推荐模型配置参数.

    或者,运行带有目标的代码生成顾问Polyspace看看是否已经设置了所需的参数使用代码生成顾问为代码生成目标配置模型(嵌入式编码)。

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

配置代码分析

应用程序选项卡上,选择Polyspace代码验证器.在Polyspace标签:

  1. 选择要运行的产品:错误发现者代码验证.

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

    • 设置从: MISRA的启用检查®除了在项目配置中指定的默认检查之外,还要编写代码规则。默认的错误查找器检查寻找错误。默认的代码验证器检查寻找运行时错误。

    • 输入,可调参数输出:约束输入、可调参数或输出,以实现更精确的代码验证程序分析。

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

    • 验证后自动打开结果

    有关要设置的选项的完整列表,请参阅Simulink中的多空间分析万博1manbetx.

分析代码

要分析从模型生成的代码,单击画布上的任何地方。的分析代码字段显示模型名称。选择运行分析.

如果当前模型是在另一个模型中引用的,并且您希望在模型引用的上下文中验证生成的代码,而不是作为顶级模型生成的代码,使用作为模型参考生成的代码.

您可以在MATLAB命令窗口中跟踪分析过程。

除非显式禁用,否则结果将自动打开。默认情况下,结果保存在一个文件夹中results_ModelName在当前文件夹中。每次新的运行都会覆盖以前的结果。您可以更改默认文件夹或将结果保存到Simulink项目中。万博1manbetx要做出这些改变,就必须Polyspace选项卡上,选择设置.

如果您已经关闭了结果,并希望以后再打开它们,请点击Polyspace选项卡上,选择分析结果.若要在最后一次运行之前打开结果,请选择开放前的结果并导航到包含以前结果的文件夹。

回顾分析结果

在代码中评审结果

的Polyspace用户界面中出现结果列表窗格。的源代码的详细信息结果细节窗格。参见:

从代码导航到模型

代码注释中的链接显示生成后续代码行的代码块。要查看模型中的块,请单击链接中的块名称。如果你遇到问题,看看从代码到模型的故障诊断.

或者,您可以右键单击一个变量名并选择去模型.此选项并不适用于所有变量。

解决问题

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

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

  • 生成的代码可能只有在某个块参数的特定范围内没有特定的运行时错误。要修复此问题,您可以更改该块参数的存储类,或者使用配置参数使用校准数据进行分析可调参数.

  • 生成的代码可能只针对一定范围的输入没有特定的运行时错误。要确定这个无错误范围,可以为Inport块信号指定一个最小值和最大值。多空间分析使用这个约束范围。看到处理以块为单位的信号范围(万博1manbetx模型)。

  • 状态流中的某些过渡®图表可能无法访问。

如果将手写的C/ c++代码包含在S-function块中,多空间分析可以揭示手写代码和生成代码之间可能存在的集成问题。您还可以单独分析手写代码。看到在s函数代码上运行Polyspace分析.

注释块以证明问题

如果不希望对Polyspace结果做出更改,请注释相关块。在对一个块进行注释之后,从该块生成的代码操作将显示用注释预先填充的结果。如果您注释了一个子系统块或导致函数调用的块,则从该块生成的代码操作不会在分析结果中显示您的注释。如果该块是一个查找表,则启用存根查找表而不是使用注释。

若要对一个块进行注释,请选择该块并在Polyspace选项卡上,选择添加注释.输入以下:

有时,已知生成的代码中的操作会导致代码验证器中的橙色检查。假设已知某个操作可能溢出。生成的代码通过在操作之后使用饱和来防止溢出。Polyspace仍然将可能的溢出标记为橙色的复选框。要通过代码注释自动验证这些检查,请指定配置参数操作员注释(嵌入式编码)。

当您在不同的位置或模型中重用带注释的块时,更改的上下文可能导致注释不正确。为了避免错误的注释:

  • Polyspace不允许在库和非原子子系统中的块中使用注释,因为这些块可以在许多不同的上下文中重用。您不能在库中注释一个块并对该块的所有实例进行结果验证。

  • 万博1manbetxSimulink不会在复制到不同位置或模型的块中保留Polyspace注释。

相关的话题