对通过 embedded coder 生成的代码运行 polyspace 分析
如果您使用 embedded coder® 或 targetlink® 从 simulink® 模型中生成代码,则可以在 simulink 环境中使用 polyspace® 分析生成的代码是否存在 bug 或运行时错误。您不必手动设置 polyspace 工程。
本主题介绍如何使用 embedded coder 来生成代码。有关如何分析使用 targetlink 生成的代码,请参阅。
有关适用于特定模型的教程,请参阅。
您可能希望使用其他手写代码分析在 simulink 之外生成的代码。在此工作流中,提取 polyspace 选项并运行分析,例如从 windows 命令行执行操作。请参阅。对于较早的版本,polyspace 支持从生成的代码导航回模型。请参阅。
前提条件
在从 simulink 中运行 polyspace 之前,必须将已安装的 polyspace 与 matlab® 相关联。请参阅。
生成并分析代码
配置代码生成并生成代码
要配置代码生成并从某个模型生成代码,请执行以下操作之一:
在 apps 选项卡上,选择 embedded coder。然后,在 c code 选项卡上,选择 quick start。按照屏幕上的说明进行操作。
在 c code 选项卡上,点击 settings 并通过 simulink 配置参数配置代码生成。要设置的主要参数如下:
(simulink):选择 fixed-step。
(simulink):选择 auto (automatic solver selection) 或 discrete (no continuous states)。
(simulink coder):输入
ert.tlc
或autosar.tlc
。如果您从ert.tlc
派生目标文件,则还可以对其进行指定。(embedded coder):选择此选项可启用从代码到模型的链接。
有关要设置的参数的完整列表,请参阅。
或者,以 polyspace 为目标运行代码生成顾问,并查看是否已设置了必需的参数。请参阅 (embedded coder)。
要从模型生成代码,请在 c code 选项卡上选择 generate code。您可以在诊断查看器中跟踪代码的生成进度。
配置代码分析
在 apps 选项卡上,选择 polyspace code verifier。在 polyspace 选项卡上:
选择要运行的产品:bug finder 或 code prover。
选择 settings。如果需要,可更改这些选项的默认值。
:除工程配置中指定的默认检查之外,还支持对 misra® 编码规则的检查。默认 bug finder 检查会查找 bug。默认 code prover 检查会查找运行时错误。
、和:对输入、可调参数或输出进行约束,以执行更精确的 code prover 分析。
:为结果指定一个专用文件夹。默认分析会将结果保存在当前工作文件夹的
results_
文件夹中。modelname
有关要设置的选项的完整列表,请参阅。
分析代码
要分析从模型生成的代码,请点击画布上的任意位置。analyze code from 字段显示模型名称。选择 run analysis。
使用 embedded coder 时,polyspace 会在您点击 run analysis 时检查生成的代码。如果不存在生成的代码,或者模型自上次执行 polyspace 分析以来已发生更改,则 polyspace 首先会启动代码生成过程,然后再开始进行分析。
如果另一个模型中引用了当前模型,并且您希望在引用该模型的上下文中验证生成的代码,请使用 code generated as model reference 而非 code generated as top model。在后一种情况下,如果不存在生成的代码,则 polyspace 不会自动启动代码生成。分析 code generated as model reference 时,请在运行 polyspace 分析前生成代码。
您可以在 matlab 命令窗口中跟踪分析进度。
结果将自动打开,除非被显式禁用。默认情况下,结果将保存在当前文件夹的 results_
文件夹中。每次新运行时都会覆盖以前的结果。您可以更改默认文件夹或将结果保存到 simulink 工程。要进行这些更改,请在 polyspace 选项卡上选择 settings。modelname
如果您已关闭结果并要在稍后打开它们,请在 polyspace 选项卡上选择 analysis results。要打开上次运行之前的结果,请选择 open earlier results 并导航到包含之前结果的文件夹。
审查分析结果
在代码中审查结果
结果显示在 polyspace 用户界面的 results list 窗格中。点击每个结果即可在 source 窗格中查看源代码,并在 result details 窗格中查看详细信息。另请参阅:
从代码导航到模型
代码注释中的链接会显示生成后续代码行的模块。要查看模型中的模块,请点击链接中的模块名称。如果遇到问题,请参阅。
另外,您也可以右键点击变量名称并选择 go to model。此选项并非适用于所有变量。只有部分源代码变量可以直接追溯到 simulink 模块。go to model 选项适用于此类变量。有关生成的代码中哪些变量可以追溯到 simulink 模块的更多详细信息,请参阅 (embedded coder)。
修复问题
调查代码中的问题是否与模型中的设计缺陷相关。
模型中的设计缺陷可能会导致生成的代码出现问题。例如:
仅当某个模块参数处于特定范围时,生成的代码才有可能不出现特定的运行时错误。要修复此问题,您可以使用配置参数更改该模块参数的存储类,或使用标定数据进行分析。
仅当输入处于特定范围时,生成的代码才有可能不出现特定的运行时错误。要确定该不出错的范围,您可以为 inport 模块信号指定最小值和最大值。polyspace 分析将使用此受限范围。请参阅 (simulink)。
stateflow® 图中的某些转换可能无法实现。
如果您在 s-function 模块中包含手写的 c/c 代码,则 polyspace 分析可以显示手写代码与生成的代码之间可能存在的集成问题。您还可以单独分析手写代码。请参阅。
为模块添加注解以对问题进行申述
您可能要在不修改代码或模型的情况下对某些 polyspace 结果进行申述。请通过 polyspace 用户界面或 simulink 编辑器为 simulink 模块添加注解。请参阅。