AUTOSAR OS (操作系统)详解
目录
1. 概述
AUTOSAR OS是AUTOSAR架构中的核心基础软件模块,为应用软件组件和其他基础软件模块提供运行环境。它管理任务的调度、资源共享、事件处理以及中断服务等功能,是整个AUTOSAR架构的基础。
根据AUTOSAR规范,OS模块具有以下主要特性:
- 兼容OSEK OS API:确保与现有OSEK OS应用的兼容性
- 隔离与保护:支持故障隔离和保护能力,允许多个逻辑应用在同一处理器上安全共存
- 静态配置调度表:提供基于时间表的静态配置调度表
- 多核支持:支持多核微控制器,提供核心间通信和同步机制
- 保护机制:提供时间保护、内存保护、服务保护和访问保护
- 可扩展性:根据应用需求提供不同配置级别
本文档基于AUTOSAR SRS OS规范分析AUTOSAR OS的架构、组件、状态和流程,并通过图表进行直观展示。
2. AUTOSAR OS架构
2.1 整体架构
AUTOSAR OS作为AUTOSAR架构中的基础软件模块,位于应用层和硬件抽象层之间,提供任务管理、资源管理、事件管理等核心服务。下图展示了AUTOSAR OS的整体架构:
架构说明:
-
应用层
- 软件组件(SWC):实现具体功能的应用软件组件
- 应用服务:应用层提供的服务,通过OS API进行系统调用
-
AUTOSAR运行时环境(RTE)
- 在应用层和基础软件层之间提供标准化接口
- 通过OS API调用操作系统服务
-
AUTOSAR操作系统(OS)
-
核心OS功能:
- 任务管理:负责任务的创建、调度和终止
- 资源管理:处理共享资源的访问和优先级继承
- 事件管理:处理任务间的事件通知
- 中断管理:管理中断服务例程
- 计数器和警报:提供基于时间或事件的触发机制
-
扩展OS功能:
- 调度表管理:管理基于时间表的静态调度
- 保护机制:提供内存、时间和服务保护
- OS应用管理:管理OS应用的启动、终止和重启
- 多核支持:提供多核调度和同步
- 定时保护:防止任务超时执行
- 内存保护:防止非法内存访问
-
OS服务接口:
- OSEK兼容API:提供与OSEK OS兼容的API
- AUTOSAR扩展API:提供AUTOSAR特有的扩展功能
-
-
BSW模块和硬件抽象:
- 提供硬件抽象,屏蔽底层硬件差异
- 与OS交互,实现底层功能
2.2 保护机制
AUTOSAR OS提供多种保护机制,确保系统的稳定性、安全性和可靠性。下图展示了AUTOSAR OS的保护机制类图:
保护机制说明:
-
保护机制基类
- 定义通用的错误检测、错误通知和错误恢复方法
- 作为各种具体保护机制的基础
-
时间保护
- 功能:确保任务不会超出预先配置的最大执行时间
- 监控对象:
- 执行时间预算
- 锁定时间预算
- 跨时间帧保护
- 中断锁定时间
- 资源锁定时间
- OS服务执行时间
-
内存保护
- 功能:确保任务只能访问被授权的内存区域
- 保护方式:
- 内存区域定义和隔离
- 访问权限设置
- 栈保护
- 非法访问检测和处理
-
服务保护
- 功能:控制对OS服务的访问
- 保护方式:
- 服务访问控制
- 服务调用权限检查
- 服务保护错误处理
-
OS应用
- 功能:作为逻辑隔离单元,包含多个相关的OS对象
- 组成:
- 任务、ISR、资源、计数器、警报和调度表
- 操作:
- 启动、终止和重启
-
错误处理
- 功能:处理保护违规错误
- 处理级别:
- 任务级别恢复
- 应用级别恢复
- 系统级别恢复
-
隔离
- 功能:实现故障隔离机制
- 隔离类型:
- 时间隔离
- 空间隔离
- 故障隔离区域
3. 任务管理
3.1 任务状态
AUTOSAR OS任务在生命周期中经历不同的状态,状态转换由OS API和调度器控制。下图展示了AUTOSAR OS任务的状态转换:
任务状态说明:
-
挂起状态 (SUSPENDED)
- 任务未激活或已完成执行
- 不消耗CPU资源
- 通过
ActivateTask()
或ChainTask()
激活进入就绪状态
-
就绪状态 (READY)
- 任务已激活,等待CPU资源
- 调度器按优先级选择任务
- 多个任务可同时处于就绪状态
- 被调度器选中后进入运行状态
-
运行状态 (RUNNING)
- 任务当前正在执行
- 每个核心同一时刻只有一个任务运行
- 可被高优先级任务抢占回到就绪状态
- 通过
TerminateTask()
或ChainTask()
终止回到挂起状态 - 通过
WaitEvent()
等待事件进入等待状态
-
等待状态 (WAITING)
- 扩展任务等待事件
- 任务暂停执行
- 当等待的事件通过
SetEvent()
被触发时,返回就绪状态
3.2 任务调度
AUTOSAR OS支持以下调度策略:
-
优先级调度:
- 高优先级任务可抢占低优先级任务
- 同优先级任务按先进先出(FIFO)调度
-
非抢占式调度:
- 任务一旦获得CPU,将执行到完成或主动放弃
- 适用于关键任务
-
混合调度:
- 不同任务可配置不同的调度策略
- 提供更灵活的调度方案
-
基于表的调度:
- 通过调度表定义任务激活的时间点
- 支持周期性和静态定义的调度
4. 系统流程
4.1 启动与关闭序列
AUTOSAR OS的启动和关闭过程涉及多个组件的初始化和终止。下图展示了启动与关闭的序列:
启动与关闭序列说明:
-
启动阶段
- 硬件初始化:配置基本硬件
- C/C++启动代码执行:初始化C运行环境
- 全局变量初始化:初始化系统所需变量
- StartOS调用:开始OS初始化
- OS应用初始化:初始化OS应用
- 中断向量表初始化:配置中断控制器
- 计时服务初始化:配置系统计时器
- 任务管理器初始化:初始化任务控制块
- 自动启动任务执行:执行配置为自动启动的任务
- 调度器启动:开始正常调度
-
关闭阶段
- ShutdownOS调用:开始OS关闭
- 停止所有任务:终止当前运行的任务
- 停止所有计时器:关闭系统计时器
- 禁用中断:配置中断控制器禁用中断
- 执行关闭钩子函数:执行用户定义的关闭钩子
- 系统关闭/重启:完成关闭或重启操作
5. 总结
AUTOSAR OS作为AUTOSAR架构的核心组件,提供了丰富的功能和灵活的配置选项,满足汽车电子控制单元(ECU)的多样化需求。其主要特点包括:
-
标准化与兼容性
- 向后兼容OSEK OS API,支持现有代码迁移
- 符合AUTOSAR标准,确保不同供应商实现的互操作性
-
安全性与可靠性
- 提供全面的保护机制,包括时间保护、内存保护和服务保护
- 支持故障隔离和恢复,提高系统鲁棒性
-
扩展功能
- 支持多核处理器,提高系统性能
- 提供静态配置的调度表,满足确定性需求
- 支持OS应用的管理,实现逻辑隔离
-
可扩展性
- 根据应用需求提供不同配置级别
- 可裁剪架构,优化资源使用
-
实时性能
- 高效的任务管理和调度机制
- 精确的时间管理和监控
通过本文的分析和图解,我们可以更直观地了解AUTOSAR OS的架构、组件、状态和流程,为AUTOSAR系统的设计、开发和调试提供参考。