主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

使用打包的选项文件对生成的代码运行 Polyspace 分析

当您直接从 Simulink® 工具条开始 Polyspace® 分析时,分析会考虑特定于模型的上下文,例如设计范围。当从 Simulink 外部运行 Polyspace 分析时,您必须使用选项文件指定特定于模型的信息。请使用通过函数 polyspacePackNGo 生成和打包的选项文件,而不是编写这些选项文件。

在从 Simulink 外部运行 Polyspace 分析时,保存 Simulink 模型上下文信息在各种情况下都很有用。例如:

  • 分布式工作流:Simulink 用户从模型生成代码,并将代码发送到另一个开发环境。在该环境中,Polyspace 用户会对生成的代码运行单独的分析,而该用户可能没有 Simulink。通过使用打包的选项文件,设计范围和其他特定于模型的信息将保留在 Polyspace 分析中。

  • Simulink 中不可用的分析选项:某些 Polyspace 分析选项仅当独立于 Simulink 运行 Polyspace 分析时才可用。使用打包的选项文件运行单独的 Polyspace 分析,同时保留特定于模型的信息。例如,通过使用打包的选项文件在生成的代码中运行 Polyspace 分析,来分析生成代码中的并发线程。

您必须拥有 Simulink 才能运行函数 polyspacePackNGo。但是,从 Simulink 模型生成选项文件不需要有 Polyspace。polyspacePackNGo 函数支持 Embedded Coder® 和 TargetLink® 生成的代码。有关使用 polyspacePackNGo 的教程,请参阅Analyze Code Generated as Standalone Code in a Distributed Workflow (Simulink)

生成并打包 Polyspace 选项文件

要生成并打包 Polyspace 选项文件以分析从 Simulink 模型生成的代码,请使用 polyspacePackNGo

  1. 在 Simulink 编辑器中,打开“配置参数”对话框并为代码生成配置模型。

  2. 要配置与 Polyspace 兼容的模型,请选择 ert.tlc 作为系统目标文件

  3. 要启用生成代码存档,请选择选项代码和工件打包。或者,在字段 Zip 文件名中为选项包提供名称。如果您的代码包含自定义代码块,请在代码生成 > 自定义代码窗格中选择使用与仿真目标相同的自定义代码设置

    或者,在 MATLAB® 命令行窗口中,输入:

    % Configure the Simulink model mdlName for code generation
    configSet = getActiveConfigSet(mdlName);
    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true);
    set_param(configSet, 'PackageName', 'CodeArchive.zip');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');
    set_param(configSet,'RTWUseSimCustomCode','on');

  4. 生成代码存档。

    • 要从顶层模型生成独立生成代码的存档,请使用函数 slbuild (Simulink)

    • 要生成模型引用代码,请使用函数 slbuild (Simulink)。生成模型引用代码后,使用函数 packNGo (Embedded Coder) 创建代码存档。

    • 或者,您可以使用 TargetLink 生成代码。通过将生成的代码存档到 zip 文件中来创建代码存档。

  5. 要生成和打包 Polyspace 选项文件,请在 MATLAB 命令行窗口中使用以下 polyspacePackNGo 函数:

    zipFile = polyspacePackNGo(mdlName);
    请参阅Generate and Package Polyspace Options Files

    如果您使用 TargetLink 生成代码,则使用 TargetLink 子系统名称作为 polyspacepacknGo 的输入参量。

  6. 或者,您可以使用 pslinkoptions 对象作为第二个参量来修改 Polyspace 分析的默认模型配置。创建 pslinkoptions 对象,修改模型配置并在创建存档时指定对象:

    psOpt = pslinkoptions(mdlName);
    psOpt.InputRangeMode = 'FullRange';
    psOpt.ParamRangeMode = 'DesignMinMax';
    zipFile = polyspacePackNGo(mdlName,psOpt);
    
    请参阅Package Polyspace Options Files That Have Specific Polyspace Analysis Options

  7. 使用可选的第三个参量指定是否为生成的模型引用代码生成和打包 Polyspace 选项文件。假设您使用 slbuild 函数生成模型引用代码。要为代码生成和打包 Polyspace 选项,请在 MATLAB 命令行窗口中输入:

    zipFile = polyspacePackNGo(mdlName,[],true);
    请参阅Package Polyspace Options Files for Code Generated as a Model Reference

    函数 polyspacepackNGo 会返回包含选项文件的存档的完整路径。这些文件位于存档文件夹层次结构中的 polyspace 文件夹中。polyspace 文件夹的内容取决于 polyspacePackNGo 函数的输入。

    • 如果您不指定可选的第二个和第三个参量,则文件夹 polyspace 将在平面层次结构中包含以下选项文件:

      • optionsFile.txt:该文件指定了使用 Polyspace 分析生成的代码所需的源文件、包含文件、数据范围设定以及分析选项。如果您的代码包含自定义 C 代码,则该文件指定自定义源文件和头文件的相对路径。

      • modelname_drs.xml:该文件指定了模型的设计范围设定。

      • linksData.xml:该文件将生成的代码链接到模型的组件。

    • 如果您指定 psOpts.ModelbyModelRef = true,则会为所有引用的模型生成相应的选项文件。这些选项文件存储在代码存档内名为 polyspace_<referenced model name> 的单独文件夹中。文件夹 polyspace 包含顶层模型的选项文件。

使用打包的选项文件运行 Polyspace 分析

生成代码存档和 Polyspace 选项文件后,您可以使用存档在没有 Simulink 的不同开发环境中对生成的代码运行 Polyspace 分析。

  1. 解压缩代码存档并找到 polyspace 文件夹。

  2. 在 Windows® 或 Linux® 命令行上运行:productname -options-file optionsFile.txt -results-dir resultdir

    • productname 对应于以下值之一:polyspace-bug-finder、polyspace-code-prover、polyspace-bug-finder-server 或 polyspace-code-prover-server。

    • resultdir 对应于 Polyspace 结果的位置。该参量为可选参量。

    要将生成的代码与 Simulink 模型链接,需要文件 linksData.xml。如果选项文件存档中未生成文件 linksData.xml,请使用 Polyspace 桌面端用户界面中的选项代码生成器支持来指定代码中的哪些注释用作指向 Simulink 模型的链接。在 Polyspace 桌面端用户界面中,选择工具 > 预设项并找到其他选项卡。从上下文菜单充当代码与模型之间链接的代码注释中,选择您使用的代码生成器。如果您选择用户定义,则通过在字段注释前缀中指定注释的前缀来指定充当代码与模型之间链接的注释。例如,如果您将前缀指定为 //Link_to_model,则 Polyspace 会将以 //Link_to_model 开头的注释解释为到模型的链接。

    如果您使用 Polyspace Access 来查看结果,请将文件 linksData.xml 上传到 Polyspace 结果所在的文件夹中。如果没有文件 linksData.xml 或者在 Polyspace 结果文件夹之外上传了该文件,则无法将代码与 Simulink 模型链接。

  3. 要查看结果,请将其上传到 Polyspace Access 并在 Web 浏览器中查看结果。或者,使用 Polyspace 桌面端产品的用户界面查看结果。

另请参阅

| | (Simulink) | (Embedded Coder)

主题