主要内容

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

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

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

有关具有特定模型的教程,请参见对Simulink模型生成的代码进行多空间分析万博1manbetx

您可能希望用其他手写代码在Simulink外部分析生成的代码。万博1manbetx在此工作流程中,提取Polyspace选项并运行分析,例如,从Windows命令行。看到使用打包的选项文件对生成的代码运行Polyspace分析.对于较老的版本,Polyspace支持从生成的代码导航回模型万博1manbetx。看到导航回到模型

先决条件

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

生成和分析代码

配置代码生成和生成代码

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

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

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

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

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

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

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

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

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

    以从模型生成代码C代码选项卡上,选择生成代码.您可以在Diagnostic Viewer中跟踪代码生成的进度。

配置代码分析

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

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

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

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

    • 输入可调参数而且输出:约束输入、可调参数或输出,以便进行更精确的代码验证器分析。

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

    • 验证后自动打开结果

    有关要设置的选项的完整列表,请参见Simulink中的代码验证器分析万博1manbetx

分析代码

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

当使用Embedded Coder时,Polyspace在单击时检查生成的代码运行分析.如果没有生成的代码,或者自上次Polyspace分析以来模型发生了更改,Polyspace首先启动代码生成过程,然后开始分析。

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

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

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

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

回顾分析结果

代码评审结果

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

从代码导航到模型

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

或者,您也可以右键单击变量名并进行选择转到模型.此选项并非对所有变量都可用。只有源代码变量的子集可以直接追踪到Simulink块。万博1manbetx的转到模型Options可用于此类变量。有关生成代码中的哪些变量可以追踪到Simulink块的更多细节,请参见万博1manbetx在生成的代码万博1manbetx中跟踪Simulink模型元素(嵌入式编码)

解决问题

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

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

  • 生成的代码可能只有在块参数的一定范围内才不会出现特定的运行时错误。要解决此问题,您可以更改该块参数的存储类,或通过使用配置参数为分析使用校准数据可调参数

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

  • 状态流中的某些转换®图表可能无法获取。

如果在s函数块中包含手写的C/ c++代码,Polyspace分析可以揭示手写代码和生成代码之间可能的集成问题。还可以单独分析手写代码。看到对s函数码进行多元空间分析

注释块以证明问题

您可能希望在不修改代码或模型的情况下验证Polyspace的一些结果。从Polyspac万博1manbetxe用户界面或Simulink编辑器对Simulink块进行注释。看到通过注释Simulink块来解决Polyspace结果万博1manbetx

相关的话题