主要内容

可视化任务调度的XCP外部模式模拟

如果你运行一个XCP-based外部模式模拟启用了代码执行概要,您可以使用模拟数据检查员可视化目标硬件如何执行生成的代码。

这个例子展示了如何配置和运行模拟和显示任务活动和诊断和CPU活动和利用率。

模型配置

  1. 创建和配置一个模型在一个文件夹中。

  2. 对待每个离散率作为一个单独的任务。

    set_param (gcs,“EnableMultiTasking”,“上”);
  3. 使代码执行分析。

    set_param (gcs,“CodeExecutionProfiling”,“上”);set_param (gcs,“CodeProfilingInstrumentation”,“详细”);set_param (gcs,“CodeProfilingSaveOptions”,“AllData”);
  4. 检查员打开模拟数据。

    金宝appSimulink.sdi.view;
  5. 开始仿真。

    set_param (gcs,“SimulationCommand”,“开始”);

运行时可视化

在仿真数据检查,检查面板提供了显示组。此表描述了可用的概要信息。

显示组 可用的信息

分析

对于每个任务,执行时间在仿真时间的变化。

任务活动

对于每个任务,随着时间的变化其状态。一个任务可以在这些国家之一:

  • NotActive——的任务还没有开始。

  • 运行——任务运行在一个处理器核心。

  • 抢占——执行另一个任务的任务是抢占拥有更高的优先级。

诊断任务

对于每个任务,任务的变化诊断值在仿真时间。一个任务的诊断可以有这些值之一:

  • 好吧——没有检测到调度问题。

  • 警告——警告说,任务是抢占低优先级的任务。

  • PriorityInversion——优先级反转检测

软件使用rate-monotonic分析来确定任务优先级。

任务生成诊断只能为目标应用程序运行:

  • 开发计算机

  • Linux的目标设备®的。

CPU活动

对于每个CPU核心,任务的名字在CPU上运行的核心在仿真时间。在任何时候,如果没有任务在CPU上运行的核心,价值闲置会显示出来。

CPU利用率

为每个CPU核心任务上运行,规范化的利用率在仿真时间。利用值介于0.0和1.0之间。例如,值为0.5时表示CPU核心是50%的时间空闲。

监控任务抢占优先级反转:

  1. 选择一个次要情节。然后,在检查窗格中,从任务活动显示组,选择0.01 myModel_step0 [0]0.02 myModel_step1 [0]复选框。

  2. 选择下一个次要情节。然后,在检查窗格中,从诊断任务显示组,选择0.01 myModel_step0 [0]0.02 myModel_step1 [0]复选框。

  3. 使用放大的时间(Ctrl + Shift + T)控制,查看一个特定的时间剖面。

监视CPU核心活动和利用:

  1. 选择一个次要情节。在检查窗格中,从CPU活动显示组,选择,例如,核心1,酷睿2,核心3,核心4复选框。

  2. 选择下一个次要情节。在检查窗格中,从CPU利用率显示组,选择,例如,核心1,酷睿2,核心3,核心4复选框。

  3. 使用放大的时间(Ctrl + Shift + T)控制,查看一个特定的时间剖面。

离线可视化

仿真完成后,您可以使用时间表函数来生成显示(诊断任务除外)。在这个例子中,运行:

计划(executionProfile)

函数添加任务活动,CPU核心活动和CPU核心利用率显示分析组。默认情况下,该函数产生八个次要情节。

特定的任务调度和可视化相关具体任务的CPU活动,您可以使用金宝appSimulink.sdi功能。例如,观察任务活动myModel_step0myModel_step1和CPU核心活动和利用核心4:

  1. 清晰的显示和指定三个次要情节。

    金宝appSimulink.sdi.clearAllSubPlots;金宝appSimulink.sdi.setSubPlotLayout (3,1);

  2. 在仿真数据检查,执行这些操作:

    • 单击第一次要情节,然后选择任务:myModel_step0 0.01 [0]任务:myModel_step1 0.02 [0]复选框。

    • 单击第二次要情节,然后选择核心4复选框。

    • 单击3次要情节,然后选择使用核心4复选框。

  3. 使用放大的时间(Ctrl + Shift + T)控制,查看活动为一个特定的时间剖面。

另请参阅

相关的话题