主要内容

使用SIL和PIL的代码执行分析

您可以配置软件在环(SIL)或处理器在环(PIL)模拟以生成生成代码中的任务和函数的执行时间度量。该软件从添加到SIL或PIL应用程序的代码插装获得的数据或测试中生成的代码计算执行时间。您可以使用执行时度量来确定生成的代码是否满足在目标硬件上实时部署的要求。

例如,您可以执行以下分析:

  1. 确定最需要时间的任务。任务是生成代码的主要入口点。例如,抽样速率的阶跃函数或模型_initialize函数。

  2. 在这些任务中,研究需要最多时间的代码部分。

  3. 确定执行时间随时间步骤的变化。

如果您试图减少执行时间,分析结果将帮助您关注最关键的代码部分。要观察更新模型的性能变化,请重新运行SIL或PIL模拟,并将新的度量与以前的度量进行比较。

请注意

执行时间度量很大程度上取决于所使用的硬件。为了获得可靠的结果,使用您计划在其上部署生成的代码的硬件收集执行时间度量,也就是说,运行在目标硬件上执行代码的PIL模拟。在您的主机上执行代码的SIL模拟可能不会产生具有代表性的指标。

当SIL或PIL模拟完成后,您可以:

  • 通过显示窗口或报告查看执行时间指标。

  • 使用模拟数据检查器来查看和比较模拟中执行时间的变化。

  • 在MATLAB中分析测量结果®环境。

配置代码执行分析

为SIL或PIL模拟配置代码执行分析:

  1. 在您的顶级模型中,打开配置参数对话框,并选择代码生成>验证窗格。

  2. 选择测量任务执行时间复选框。

  3. 对于函数执行时间,请从测量函数执行时间下拉列表,选择其中一个选项:

    • 粗糙(仅引用模型和子系统)如果你想分析生成的主要模型组件的功能代码。

    • 详细的(所有函数调用站点)——如果你想分析模型中所有块生成的函数代码。

  4. 工作空间变量字段,指定名称。当您运行模拟时,该软件在MATLAB基本工作区中生成一个具有此名称的变量。该变量包含执行时间度量,是类型对象coder.profile.ExecutionTime

    如果数据导入/导出>单一的模拟输出复选框时,软件将在金宝app仿真软件。SimulationOutput对象。

  5. 保存选项下拉列表,选择其中一个选项:

    • 总结数据只-如果你想只生成一个报告和减少内存使用,例如,在一个长时间的模拟。

    • 所有的数据-允许您生成报告并在基本工作区中存储执行时概要文件。模拟完成后,可以使用方法coder.profile.ExecutionTime而且coder.profile.ExecutionTimeSection类检索模拟期间发生的对每个分析代码部分的每次调用的执行时度量。

    • 指标只—减少Simulink之间通信通道的带宽使用金宝app®和目标应用程序。在模拟过程中,软件在目标硬件上存储最大执行时间、平均执行时间和调用次数。在模拟结束时,Simulink将数据从目标硬件上传到您的开发金宝app计算机。

  6. 点击好吧

对于PIL模拟,您必须配置一个特定于硬件的计时器。在为目标设置连接性配置时,创建一个计时器对象。对于SIL模拟,不需要此操作。

如果您选择所有的数据保存选项下拉列表中,指标显示窗口和生成的报告显示仿真数据检查器图标.当您单击其中一个图标时,该软件将模拟结果导入到模拟数据检查器中。然后,您可以绘制执行时间图,并管理和比较来自各种模拟的图。

控制粒度分析

您可以控制执行时分析的粒度,也就是说,防止向特定的函数调用站点添加代码插装。通过对剖析粒度的控制,您可以:

  • 关注需要改进的模型组件的性能。例如,在初始运行之后,禁用那些需要很少处理时间的块的分析。此操作将减少分析报告所显示的项的数量。

  • 减少代码插装开销。例如,对于简单函数,代码插装开销可能大于函数代码的执行时间。

方法上仅为任务生成执行时间度量代码生成>验证的“配置参数”对话框中,选择测量任务执行时间复选框并设置测量函数执行时间

为顶级模型中的引用模型和原子子系统生成函数执行数据代码生成>验证窗格中,选择测量任务执行时间复选框并设置测量函数执行时间粗糙(仅引用模型和子系统)

函数执行数据的生成需要在生成的代码中插入度量探测。只有当您设置了函数包装字段(在代码生成选项卡)那种一次性的功能可重用的功能.如果该字段设置为汽车,则探针的插入取决于由汽车设置。如果该字段设置为内联,该软件不插入探针。

请注意

在生成的代码中,软件用测量探头包装每个函数调用,除非:

为模型引用层次结构生成函数执行时间:

  1. 在top model中,打开“Configuration Parameters”对话框,选择代码生成>验证窗格。

  2. 选择测量任务执行时间复选框

  3. 为每一个模型指定要进行概要分析的块测量函数执行时间仅在需要函数执行时间的引用级别上。

例如,考虑一个顶级模特模型块A,它又包含模型块B。

如果您想为模型B中的函数生成执行时间,请选择测量任务执行时间为顶级模型并指定测量函数执行时间对模型B。

top模型的这些参数覆盖了引用模型的相应参数:

  • 测量任务执行时间.如果您禁用了顶级模型的此参数,您也禁用了引用模型的函数分析。

  • 工作空间变量

  • 保存选项

控件可以控制模型中某个块(例如子系统块)的代码执行分析CodeProfilingOverride块参数:

  1. 在Simuli金宝appnk编辑器中,选择块。

  2. 在命令窗口中执行:

    set_param (gcb,‘CodeProfilingOverride’,blockParameterValue
    使用这些值中的一个blockParameterValue

    • “关闭”——禁用块的分析。

    • “上”——如果父模型启用了分析,则启用对块的分析。

    • “继承”(默认)——应用父块的分析设置。

更改块分析配置不会导致重新生成生产代码。

如果您的顶级模型有一个PIL块,那么应用于PIL块的执行分析设置是来自您用来创建PIL块的原始模型的设置。看到用子系统的块进行模拟.你不能使用CodeProfilingOverride来控制PIL块的分析。

另请参阅

|||

相关的话题