admin 管理员组

文章数量: 1184232

概要

Autosar OS可以配置Task,Alarm可以周期地激活Task。一个Alarm可以配置一个任务,激活多个任务只需要配置多个Alarm,那么为什么Autosar要引入调度表(Schedule Table) 的概念呢?

因为每个Alarm激活自己任务,没法保证各任务间的同步。 一个调度表则相当于封装了多个Alarm。

任务间同步的概念:保证任务按照一定的顺序执行,以达到正确的结果。

调度表的结构

上图是一个调度表的示例,主要包括持续时间(Duration)到期点(Expiry Point)

Duration代表这个调度表会运行多长时间,单位可以为tick或者纳秒,具体单位跟OS counter的counter类型一致。调度表的起始位置加上偏移量(Offset),就是每个Expiry Point的位置。每个调度表至少有一个Expiry Point,到达 Expiry Point后,可以激活任务或者设置事件。

注意:调度表在一个到期点如果既要激活任务,又要设置事件,OS一定会先激活所有任务,然后再设置事件。

因为如果扩展任务的事件跟扩展任务都配置在同一个到期点,先设置事件,扩展任务还没激活(处于挂起状态),那么设置事件将失败。

如图,从调度表的起始位置到第一个Expiry Point的偏移量(Offset)叫初始偏移(InitialOffset);从调度表最后

本文标签: 详解 OS schedule table