如果您从Simulink生成代码万博1manbetx®模型使用嵌入式编码器®或TargetLink®,您可以使用Polyspace分析生成的代码中的bug或运行时错误®从Simulink环境中。您不必万博1manbetx手动设置多边形空间项目。
本主题使用嵌入式编码器生成代码。有关TargetLink生成代码的分析,请参阅对用TargetLink生成的代码运行Polyspace分析.
有关特定模型的教程,请参见对由Simulink模型生成的代码进行多空间分析万博1manbetx.
在从Simulink运行Polyspace之前,必须将Pol万博1manbetxyspace与MATLAB链接起来®安装。看见利用MATLAB和Simulink集成Polyspace万博1manbetx.
要配置代码生成并从模型生成代码,请执行以下其中之一:
在应用程序选项卡,选择嵌入式编码器.然后,在C代码选项卡,选择快速启动.按照屏幕上的说明操作。
在C代码选项卡上,单击设置并通过Simulink配置参数配置代码生成。要设置的主要参数有:万博1manbetx
类型(万博1manbetx模型):选择固定步.
解算器(万博1manbetx模型):选择自动(自动解算器选择)或离散(无连续状态).
系统目标文件(万博1manbetx仿真软件编码器):输入ert.tlc
或autosar.tlc
.如果你从ert.tlc
,也可以指定它们。
Code-to-model(嵌入式编码):选择此选项可启用从代码到模型的链接。
有关要设置的参数的完整列表,请参见Polyspace分析的推荐模型配置参数.
或者,使用目标运行代码生成顾问Polyspace并查看是否已经设置了所需的参数。看到使用代码生成顾问为代码生成目标配置模型(嵌入式编码).
从模型生成代码,在C代码选项卡,选择生成代码. 您可以在诊断查看器中跟踪代码生成的进度。
在应用程序选项卡,选择Polyspace代码验证器. 上Polyspace标签:
要分析从模型生成的代码,请单击画布上的任何位置。的分析代码字段显示模型名称。选择运行分析.
当使用Embedded Coder时,Polyspace会在单击时检查生成的代码运行分析.如果没有生成的代码,Polyspace首先启动代码生成过程,然后开始分析。
如果当前模型在另一个模型中引用,并且您希望在引用该模型的上下文中验证生成的代码,而不是作为顶级模型生成的代码,使用作为模型引用生成的代码.在后一种情况下,如果没有生成代码,Polyspace不会自动启动代码生成。在分析作为模型引用生成的代码,在运行Polyspace分析之前生成代码。
您可以在MATLAB命令窗口中跟踪分析的进度。
除非明确禁用,否则结果将自动打开。默认情况下,结果保存在文件夹中results_
在当前文件夹中。每次新的运行都会覆盖以前的结果。您可以更改默认文件夹或将结果保存到Simulink项目中。万博1manbetx要做出这些改变,就在Polyspace选项卡,选择设置.ModelName
如果您已经关闭了结果,并想稍后打开它们,在Polyspace选项卡,选择分析结果.要在最后一次运行之前打开结果,请选择开放前的结果并导航到包含前面结果的文件夹。
结果显示在上的Polyspace用户界面中结果列表窗格。单击每个结果以查看源代码源窗格和详细信息结果细节窗玻璃另见:
代码注释中的链接显示生成后续代码行的块。要查看模型中的块,请单击链接中的块名称。如果遇到问题,请参阅故障排除导航从代码到模型.
或者,您可以右键单击变量名称并选择去模型.这个选项不是对所有变量都可用。只有源代码变量的子集可以直接追踪到Simulink块。万博1manbetx的去模型对于这样的变量,可以使用选项。有关生成代码中哪些变量可以跟踪到Simulink块的详细信息,请参见万博1manbetx跟踪生成代码万博1manbetx中的Simulink模型元素(嵌入式编码).
调查代码中的问题是否与模型中的设计缺陷有关。
模型中的设计缺陷可能导致生成的代码出现问题。例如:
如果在s -函数块中包含手写的C/ c++代码,Polyspace分析可以揭示手写代码和生成代码之间可能存在的集成问题。您还可以单独分析手写代码。看到对s函数代码进行多空间分析.
如果您不想对模型进行更改以响应Polyspace结果,请对相关块进行注释。在注释一个块之后,从该块生成的代码操作将显示用注释预填充的结果。如果注释了子系统块或导致函数调用的块,则从块生成的代码操作不会在分析结果中显示注释。如果块是查找表,则启用存根查找表
而不是使用注释。看见存根查找表
在使用嵌入式编码器生成的代码中,存在与MISRA C的已知偏差®:2012.见MISRA C:2012合规性的偏差理由(嵌入式编码).通过注释块来证明这些已知的问题。
Simulink块或生成代码中万博1manbetx的注释不考虑分析的历史记录。如果更新模型,则多边形空间结果可能会更改,而注释不会更改。更新模型可能会使现有注释过时。更新模型或生成的代码时,请检查注释。
如果您使用Embedded Coder生成代码,您可以直接通过Polyspace用户界面注释Simulink块。万博1manbetx定位要注释的问题,然后通过添加输入评审信息严重程度,状态,以及可选的注释结果细节窗格。例如,在Polyspace用户界面中:
设定状态将问题提交给调查
设定评论这个问题可能会影响“模块”
在源代码中,右键单击显示问题的变量(或同一表达式中的另一个变量),并从上下文菜单中选择注释块.
评审信息作为块注释传递到Simulink Editor中,注释的块被突出显示。万博1manbetx
您可以对一个Simulink块进行多次万博1manbetx注释。块上的后续注释会被附加到之前的注释。在Simulink编辑器中看不到这些注释。万博1manbetx当您使用Polyspace分析生成的代码时,这些注释将作为评审信息显示在结果细节窗格的Polyspace用户界面。
Polyspace使用用户提供的信息在Simulink中预填充注释。在Polyspace用户界面中设置的注释显示在万博1manbetx评论仿真软件。万博1manbetx如果你在Polyspace User界面的注释中使用了双引号,那么在Simulink中就会用单引号代替。万博1manbetx
选择权注释块可用于可跟踪到Simulink块的代码元素。有关更多信息,请参阅万博1manbetx跟踪生成代码万博1manbetx中的Simulink模型元素(嵌入式编码).
要在Simulink编辑器中注释块,请选择该块并在万博1manbetxPolyspace选项卡,选择添加注释.在Polyspace注释亮点:
从下拉菜单中选择要注释的Polyspace结果的类型注释类型
.
如果要注释同一类型的多个结果,请在文本框中输入以逗号分隔的结果缩略词列表。看到的:
代码验证程序运行时检查的简短名称(Polyspace代码验证)
如果您只想注释一个结果,请选择只有1检查.文本框被转换为下拉菜单。从下拉菜单中选择要注释的结果。
在相应的文本框中,输入要分配给结果的状态、严重性和注释。
在Polyspace注释窗口中,可以一次注释单个类型的多边形空间结果。注释多种类型的结果。打开Polyspace注释窗口多次打开。每次,添加一个对应于一种类型的多边形空间结果的注释。不同的注释会相互附加。在Simulink编辑器中无法看到这些注释。当您使用Polyspace分析生成的代码时,这些注释将作为审阅信息显示在万博1manbetx结果细节窗格的Polyspace用户界面。
有时,生成代码中的操作会导致代码验证程序中出现橙色检查。假设一个操作可能溢出。生成的代码通过跟随饱和操作来防止溢出。Polyspace仍然将可能的溢出标记为橙色检查。要通过代码注释验证这些检查,请指定配置参数运算符注释(嵌入式编码).
当您复制一个带注释的块,然后在不同的模型或相同模型的不同位置使用它时,更改的上下文可能会使注释显示不正确。
Polyspace不允许在库和非原子子系统中的块中进行注释,因为这些块可以在许多不同的上下文中重用。例如,您不能在库块中注释一个块,并在库块的所有实例上验证结果。
万博1manbetxSimulink不会在复制到不同模型或相同模型中不同位置的块中保留Polyspace注释。