Polyspace分析代码来生成与嵌入式编码器

如果您从Simulink生成代码金宝app®通过使用嵌入式编码器模型®或TargetLink®,你可以分析错误或Polyspace运行时错误生成的代码®在Simulink环境中。金宝app您不必手动设置Polyspace项目。

本课题采用嵌入式编码器生成代码。对于TargetLink的生成的代码分析,见生成与TargetLink的运行Polyspace分析代码

有关特定模型的教程,请参见运行Polyspace分析代码从Simulink的模型生成金宝app

先决条件

你从Simulink中运行Polyspace之前,必须链接您金宝appPolyspace和MATLAB®安装。看到将Polyspace与MATLAB和Simulink相结合金宝app

生成和分析代码

配置代码生成和生成代码

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

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

  • C代码选项卡,单击设置和配置代码生成通过Simulink的配置参数。金宝app主要参数设置如下:

    • 类型(金宝appSIMULINK):选择固定步长

    • 解算器(金宝appSIMULINK):选择自动(自动解算器选择)离散(无连续状态)

    • 系统目标文件(金宝appSimulink的编码器):输入ert.tlcautosar.tlc。如果您从中派生目标文件ert.tlc,也可以指定它们。

    • 代码到模型(嵌入式编码):选择此选项,以便从代码到模型的链接。

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

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

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

配置代码分析

应用选项卡上,选择Polyspace代码验证。在Polyspace标签:

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

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

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

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

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

    • 验证后自动打开结果

    对于选项来设置的完整列表,请参阅Polyspace分析在Simulink金宝app

代码分析

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

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

您可以在MATLAB命令窗口中了解分析的过程。

除非显式禁用,否则结果将自动打开。默认情况下,结果保存在一个文件夹中results_型号名称在当前文件夹。每次新的运行覆盖以前的结果。您可以更改默认的文件夹或结果保存到Simulink的项目。金宝app为了使这些变化,在Polyspace选项卡上,选择设置

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

回顾分析结果

在代码审查结果

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

从代码导航到模型

代码注释中的链接显示生成后续代码行的代码块。要查看模型中的块,单击链接中的块名。如果你遇到问题,看看疑难解答导航从代码到模型

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

修复问题

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

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

  • 所生成的代码可能只对一定范围内的块参数的自由特定的运行时错误的。要解决这个问题,你可以通过配置参数更改存储类分析该块参数或使用校准数据可调参数

  • 所生成的代码可能只对一定范围内的输入是自由特定的运行时错误的。为了确定这个无错误的范围,可以指定为INPORT块的信号的最小和最大值。所述Polyspace分析使用此受约束的范围内。看到与信号工作范围块(金宝app模型)。

  • 状态流中的某些转换®图表可以到达。

如果包括手写的C / C ++中的S-功能模块的代码中,Polyspace分析可以揭示手写和生成的代码之间可能存在的整合问题。您也可以分析隔离手写代码。看到运行Polyspace分析S-功能代码

注释块以证明问题

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

若要注释一个块,请选择该块并在Polyspace选项卡上,选择添加注释。输入以下内容:

有时,在生成的代码操作已知会导致代码证明器橙色检查。假设的操作是已知的可能溢出。所生成的代码通过用饱和以下操作防止溢出。Polyspace仍标志可能溢出橙色检查。为了证明自动通过代码注释这些检查,指定配置参数操作员注释(嵌入式编码)。

当您在不同的位置或模型重用注释块,改变的上下文可以使注释不正确。为了避免不正确的注释:

  • Polyspace不允许标注在图书馆和非原子子系统内部的块,因为这些块在许多不同的上下文中重用。你不能注释块的库中,并证明该块的所有实例的结果。

  • 金宝appSimulink不会在复制到不同位置或模型的块中保留Polyspace注释。

相关的话题