BMS(电池管理系统)第九课—AUTOSAR操作系统-1

时间:2024-04-11 15:07:04

​AUTOSAR操作系统

上节中对AUTOSAR整个基础软件层框架做了介绍,今天我们来在大框架中添砖加瓦讲一下最核心的操作系统服务模块的详细内容上一篇(没认真听课的童鞋回去复习喲)上文中提到操作系统OS在AUTOSAR架构中被划分在基础软件层中的服务层里的系统服务,它是用于管理计算机硬件和计算机软件资源并为用户程序提供通用服务的系统软件。主要功能分为:任务管理、时间管理、CPU管理、I/O管理、消息管理以及内存管理等。

AUTOSAR架构中的系统服务是一种实时操作系统(Real Time Operating System)RTOS对系统的实时性要求很高,需要保证在特定的时间内处理完相应的事件和数据。RTOS可以分为单任务型和多任务型,AUTOSAR操作系统就属于多任务的实时操作系统,通过事件驱动来实现不同优先级的任务相互切换从而完成用户程序的执行。

实时操作系统的设计原则是:采用各种算法和策略,始终保证行为的可预测性,即在任何情况下,在系统的运行时刻,操作系统的资源配置策略都能够为抢占资源的对个实时任务合理分配资源,使每个实时任务的实时性要求都能满足。

1. 任务管理

1.1 任务

首先引入任务Task的概念,一个复杂的系统由若干个子部分组成,这些子部分可以由任务来实现,任务是用户函数的载体。操作系统通过调度器来管理任务的先后执行顺序,为任务提供了异步执行和并发执行的管理机制。AUTOSAR提供了两种任务:基本任务和扩展任务;

基本任务在两种情况下释放处理器资源:

1.操作系统切换到更高优先级的任务时;

2.发生了一个中断,处理器切换到中断服务程序时;

#include “BasicTask.h”

TASK(BasicTask)

{

    /*User code*/

    TerminnateTask();

}

扩展任务与基本任务最大的区别是它可以调用AUTOSAR操作系统服务WaitEvent_API.当调用该服务时任务会从运行状态切换至等待状态,此时处理器资源被释放,操作系统会执行处于就绪状态且有限期最高的任务,而不需要终止该扩展任务;

#include"ExtendedTask.h"

TASK(ExtendedTask)

{

    for(;;)

}

WaitEvent(Event1);

/*Perform Actions*/

ClearEvent(Event1)

{

}

这样看来扩展任务比基本任务更复杂功能更多,他们都属于用户任务,用户根据自己需求去定义,除了用户任务还有空闲任务,空闲任务属于系统任务优先级最低;

1.2 任务状态

扩展任务状态切换如下图

BMS(电池管理系统)第九课—AUTOSAR操作系统-1

扩展任务状态模型

  • 运行状态:处理器资源分配给此任务,该任务被执行,在同一CPU上任何时候只有一个任务能处于此状态,而其他状态可以有很多;

  • 就绪状态:此状态是任务转换到运行状态的先决条件,由调度器决定那个就绪任务将在接下来的时间里被执行;

  • 等待状态:任务因等待至少一个事件而无法继续执行

  • 挂起状态:处于挂起状态时任务时被动的,需要被**;

基本任务状态和扩展任务状态模型很像只是没有等待状态

BMS(电池管理系统)第九课—AUTOSAR操作系统-1

基本任务状态模型

1.3任务优先级

AUTOSAR任务优先级里0被定义为最低优先级,任务优先级越高数值越大。

1.4任务调度策略

AUTOSAR支持三种任务调度策略:

  • 非抢占任务调度:非抢占只在特定的调度点进行任务调度,非抢占可能会影响有时间要求任务按时完成;

  • 全抢占任务调度:抢占任务调度意味着,运行的任务在任何时刻都有可能由于更高优先级任务的就绪而释放处理器;

BMS(电池管理系统)第九课—AUTOSAR操作系统-1

  • 混合抢占任务调度:混合型抢占任务调度策略取决于当前任务的可抢占属性;

这节课内容较多分两次写完,敬请期待~