主要内容

SoC应用设计中的任务调度

此示例演示如何在SoC Blockset模型中跨多个核调度应用程序任务时间表编辑器工具。考虑一个有两个周期任务的应用程序:

  • 第一个周期性任务,periodicTask1,每秒钟运行一次。

  • *第二个周期任务,periodicTask2每两秒运行一次。

该应用程序还有两个非周期任务,aperiodicTask1而且aperiodicTask2偶尔跑步。该模型在具有双核处理器的硬件板上实现应用程序。

不使用进度编辑器的任务管理

检查模型及其任务。

open_system (“soc_schedule_editor_initial”

假设在硬件板上完成任务执行的初始实现和分析之后,您将获得这些任务持续时间。有关任务分析的更多信息,请参见处理器上的任务分析

期间(s)持续时间(s)

周期1 0.45

periodicTask2 2 2.05

aperiodicTask1 - 0.35

aperiodicTask2 - 0.15

第二个周期任务执行时间过长,耗尽了处理器上的计算资源,这就需要另一种实现。

第二个周期任务包含两个独立的数据路径。因此,这个任务可以分成两个周期任务,每个任务每两秒运行一次:periodicTask2a而且periodicTask2b再次分析任务将生成更新的任务持续时间。

期间(s)持续时间(s)

周期1 0.45

periodicTask2a 2 0.50

periodicTask2b 2 1.55

aperiodicTask1 - 0.35

aperiodicTask2 - 0.15

分配periodicTask2a而且periodicTask2b到两个不同的核心产生一个可调度的实现。默认情况下,您不能为Simulink®模型中的每个离散速率创建多个任务。创建periodicTask2a而且periodicTask2b在Simulink中,使用Schedule Editor工具。

使用进度编辑器进行任务管理

时间表编辑器创建任务分区,可以是周期性的或非周期性的。不同于缺省的Simulink速率分组,多个任务分区可以共享相同的速率。现在可以创建第二个任务的两个子任务,并将它们设置为在不同的核心上运行。

创建计划编辑器任务分区

将所有速率转换为任务分区。要创建一个分区,创建一个Simulink原子子系统,并给它一个分区名称。对于周期任务,需要创建周期分区并设置周期。类似地,对于非周期任务,创建一个非周期分区。该模型有两个周期为2的周期分区和两个非周期分区。

open_system (“soc_schedule_editor”

打开Schedule Editor并查看分区的默认执行顺序。

soc_schedule_editor_periodic.png

连接任务分区到任务管理器块

将包含算法模型的Model块连接到新的顶层模型中的Task Manager块。Model块上的速率端口表示参考模型中的分区,必须连接到Task Manager块。每个分区必须与相应的任务相匹配。

单击任务管理器块。通过检查,配置任务管理器块以使用Schedule Editor中的执行顺序使用日程编辑器.任务管理器块指定任务核心关联性。配置periodicTask2a而且periodicTask2b在不同的内核上运行,异步任务在相同的内核上运行periodicTask3通过设置核心财产。

周期(s)持续时间(s)核心

periodicTask1 1 0.45 0

periodicTask2a 2 0.50 0

periodicTask2b 2 1.55 1

aperiodicTask1 - 0.20 1

aperiodicTask2 N/A 0.05 1

对模型进行仿真,并对任务分析结果进行分析模拟数据检查器.第二个周期任务的两个子任务每两秒并行运行一次,没有任务超时。

soc_schedule_editor_periodic_profile.png

控制非周期任务的优先级

在任务分析结果中,aperiodicTask1首先运行aperiodicTask2第二次运行。

soc_schedule_editor_aperiodic_order1_profile.png

Event Source2块触发aperiodicTask2,在5.7秒时创建一个触发器,这是由timeseries对象设置的ts2.自aperiodicTask1具有更高的优先级,模型不会抢占此任务。

通过在Schedule Editor中更改分区的执行顺序,可以更改非周期分区的优先级。在参考模型中打开Schedule Editor并拖动aperiodicTask2以上aperiodicTask1

soc_schedule_editor_aperiodic.png

再次运行模拟。在这种情况下,aperiodicTask2挑出毛病aperiodicTask1一旦触发aperiodicTask2发生。

soc_schedule_editor_aperiodic_order2_profile.png

进一步的探索

  • 以外部模式在支持的硬件板上运行模型。确认计时器驱动的任务规范与Schedule Editor中设置的任务规范相匹配。

  • 取代事件源块与I/O外设块,例如UDP读,为您的硬件板。验证事件驱动任务的行为。

Baidu
map