主要内容

波尔盖斯生成的代码分析嵌入式编码器

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

本主题使用Embedded Coder来生成代码。有关targetlink生成的代码的分析,请参见使用TargetLink生成的代码运行PolySpace分析

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

先决条件

在从Simulink运行Polyspace之前,必须将Pol金宝appyspace和MATLAB连接起来®安装。看将Polyspace与MATLAB和Simulink集成金宝app

生成和分析代码

配置代码生成和生成代码

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

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

  • 在这方面C代码选项卡,单击设置并通过Simulink配置参数配置代码生成。金宝app需要设置的主要参数有:

    • 类型(金宝appSimulink):选择固定步骤

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

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

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

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

    或者,带着目标运行代码生成顾问波尔盖斯并查看是否已经设置了所需的参数。看使用代码生成顾问配置代码生成目标模型(嵌入式编码器)

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

配置代码分析

在这方面应用选项卡上,选择PolySpace代码验证者.在这方面波尔盖斯标签:

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

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

    • 设置从:启用Misra的检查®在项目配置中指定的默认检查之外的编码规则。默认的Bug Finder检查查找Bug。默认的代码验证程序检查查找运行时错误。

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

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

    • 验证后自动打开结果

    有关要设置的选项的完整列表,请参见Simulink中的代码抄本分析金宝app

分析代码

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

当使用Embedded Coder时,Polyspace会在单击时检查生成的代码运行分析.如果没有生成的代码,Polyspace首先启动代码生成过程,然后开始分析。

如果当前模型在另一个模型中被引用,并且您希望在引用模型的上下文中验证生成的代码,而不是代码生成为顶级模型,使用作为模型引用生成的代码.在后一种情况下,如果没有生成代码,Polyspace不会自动启动代码生成。在分析作为模型引用生成的代码,在运行PolySpace分析之前生成代码。

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

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

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

回顾分析结果

评审代码的结果

控件上的Polyspace用户界面显示结果结果列表窗格。单击每个结果以查看源代码窗格和细节结果细节窗格。参见:

从代码导航到模型

代码注释中的链接显示生成后续代码行的块。要查看模型中的块,请单击链接中的块名称。如果遇到问题,请参见从代码到型号的导航问题

或者,您可以右键单击变量名并选择去模型.此选项不适用于所有变量。只有源代码变量的子集可以直接跟踪到Simulink块。金宝app这去模型对于这样的变量,可以使用选项。有关生成代码中哪些变量可以跟踪到Simulink块的详细信息,请参见金宝app在生成的代码金宝app中跟踪Simulink模型元素(嵌入式编码器)

修复问题

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

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

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

  • 生成的代码可能没有特定的运行时错误,只适用于特定的输入范围。要确定这个无错误范围,可以指定import块信号的最小值和最大值。Polyspace分析使用这个受限范围。看使用块中的信号范围(金宝appSimulink)

  • statflow中的某些转换®图表可以无法访问。

如果在S函数块中包含手写C / C ++代码,则PolySpace分析可以揭示手写和生成代码之间的可能集成问题。您还可以分析单独的手写代码。看在S函数代码运行PolySpace分析

注释块以证明问题

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

在使用嵌入式编码器生成的代码中,有来自MISRA C的已知偏差®: 2012。看偏差理由为MISRA C:2012遵从性(嵌入式编码器).通过注释块来证明这些已知的问题。

在Simulink块或生成代码金宝app中的注释没有考虑到分析的历史。如果更新模型,Polyspace结果可能会改变,而注释不会。更新模型可能会使现有的注释过时。在更新模型或生成的代码时检查注释。

注释块通过波尔盖斯用户界面

如果使用嵌入式编码器生成代码,则可以直接通过PolySpace用户界面注释Simulink块。金宝app找到要注释的问题,然后通过添加输入审核信息严重程度地位,以及可选的注释结果细节窗格。例如,在PolySpace用户界面中:

  • 设置地位的问题调查

  • 设置评论对于这个问题可能会影响“模块”

在源代码中,右键单击显示问题的变量(或同一表达式中的另一个变量),并从上下文菜单中选择注释块

评审信息作为块注释传递到Simulink Editor中,注释的块被突出显示。金宝app

您可以多次注释Simulink块。金宝app将块的后续注释附加到以前的注释。在Simulink编辑器中看不到这些注释。金宝app使用PolySpace分析生成的代码时,这些注释将显示为审核信息结果细节窗格的Polyspace用户界面。

Polyspace使用用户提供的信息在Simulink中预填充注释。金宝app的双引号中显示在Polyspace用户界面中设置的注释评论simulink的金宝app字段。如果在PolySpace用户界面中的评论中有双引号,则使用Simulink中的单引号替换。金宝app

的选项注释块用于可跟踪到Simulink块的代码元素。金宝app有关更多信息,请参见在生成的代码金宝app中跟踪Simulink模型元素(嵌入式编码器)

注释块金宝app编辑器

要在Simulink编辑器中注释一个块,请选择块并在金宝app波尔盖斯选项卡上,选择添加注释.在里面Polyspace注释窗户:

  • 从下拉菜单中选择要注释的PolySpace结果类型注释类型

  • 如果要注释相同类型的多个结果,请在文本框中输入逗号分隔的结果首字母缩写列表。看:

  • 如果您只想注释一个结果,请选择只有1检查.文本框被转换为下拉菜单。从下拉菜单中选择要注释的结果。

  • 在相应的文本框中,输入要分配给结果的状态、严重性和注释。

在里面Polyspace注释窗口,您可以一次注释一种Polyspace结果类型。注释多种类型的结果。打开Polyspace注释窗口多次。每次添加一个注释,对应于一种类型的Polyspace结果。不同的注释相互添加。在Simulink编辑器中看不到这些注释。金宝app使用PolySpace分析生成的代码时,这些注释将显示为审核信息结果细节窗格的Polyspace用户界面。

有时,生成代码中的操作会导致代码验证程序中出现橙色检查。假设一个操作可能溢出。生成的代码通过跟随饱和操作来防止溢出。Polyspace仍然将可能的溢出标记为橙色检查。要通过代码注释验证这些检查,请指定配置参数操作员注释(嵌入式编码器)

复制注释块然后在不同的模型中使用它或在同一模型中的不同位置时,更改的上下文可以呈现注释不正确。

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

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

相关的话题