AUTOSAR TimeService模块详解
目录
1. 概述
Time Service模块是AUTOSAR经典平台的一个重要组件,提供时间相关的基础服务。根据AUTOSAR规范,该模块属于服务层,为基于时间的功能提供支持。本文档基于AUTOSAR SRS对TimeService模块进行详细分析和图解。
Time Service模块主要提供以下功能:
- 基于时间的状态机
- 时间测量
- 超时监控
- 忙等待
该模块通过一系列预定义的定时器(Time Service Predef Timers)实现其功能,这些定时器基于GPT驱动提供的硬件定时器。
2. TimeService架构分析
2.1 模块位置与组件关系
TimeService模块在AUTOSAR架构中的位置及其与其他模块的交互关系如下图所示:
图2.1 AUTOSAR TimeService模块架构图
从上图可以看出,TimeService模块在AUTOSAR架构中具有以下特点:
-
层次位置:
- TimeService位于AUTOSAR的服务层(Services Layer)
- 它位于应用层和ECU抽象层之间
- 通过标准化接口向上提供服务,向下访问硬件资源
-
关键接口:
- 向上提供Timer API,供应用模块使用
- 向下访问GPT Predef Timer API,使用GPT驱动提供的预定义定时器
-
依赖关系:
- 直接依赖GPT驱动模块提供的底层定时器功能
- 间接依赖微控制器抽象层提供的硬件访问功能
- 不依赖中断或通知功能,采用轮询模式工作
2.2 模块功能职责
根据AUTOSAR规范,TimeService模块承担以下主要职责:
-
时间基础功能:
- 提供基于预定义定时器的时间服务
- 确保时间功能在不同平台上的兼容性
-
时间状态机支持:
- 提供基于时间的状态转换功能
- 支持状态超时和状态保持时间计算
-
时间测量功能:
- 提供高精度的时间间隔测量
- 支持不同精度的时间单位(微秒、毫秒等)
-
超时监控功能:
- 提供超时检测和处理机制
- 支持不同超时策略
-
忙等待功能:
- 提供基于轮询的等待机制
- 不使用中断或回调机制
3. TimeService组件结构
3.1 预定义定时器类型
TimeService模块的内部组件结构如下图所示:
图3.1 AUTOSAR TimeService模块组件结构图
从上图可以看出,TimeService模块内部包含以下预定义定时器类型:
-
精度分类:
- 1微秒定时器:提供微秒级精度
- 100微秒定时器:提供百微秒级精度
- 1毫秒定时器:提供毫秒级精度
- 其他可配置定时器类型
-
预定义定时器特性:
- 每种定时器都有预定义的时间单位
- 每种定时器都有预定义的位数范围
- 基于GPT Predef Timer实现
- 可以通过配置启用或禁用
-
定时器限制:
- 硬件依赖性:需要硬件支持相应的定时器功能
- 配置依赖性:需要在配置时启用
- 采用轮询模式,不支持通知功能
3.2 时间函数功能
TimeService模块提供的主要时间函数包括:
-
获取经过时间(GetElapsed):
- 计算从参考时间点到当前时间的时间差
- 返回经过的时间值
- 用于时间测量功能
-
获取剩余时间(GetRemaining):
- 计算从当前时间到目标时间的时间差
- 返回剩余的时间值
- 用于超时计算
-
检查超时(IsExpired):
- 判断是否已经超过设定的目标时间
- 返回超时状态(布尔值)
- 用于状态机和超时监控
-
忙等待(BusyWait):
- 在指定的时间内执行循环等待
- 基于轮询实现,不释放CPU
- 用于精确的短时间延迟
3.3 与GPT驱动关系
TimeService与GPT驱动之间的关系:
-
依赖关系:
- TimeService直接依赖GPT驱动提供的预定义定时器
- 不使用GPT驱动的所有功能,只使用预定义定时器部分
-
GPT预定义定时器特性:
- 自由运行的硬件计数器
- 具有预定义的物理时间单位和范围
- 采用轮询模式工作,不使用通知功能
- 可以有多个硬件计数器实例
4. TimeService定时器实例
4.1 实例数据结构
TimeService定时器实例的类结构如下图所示:
图4.1 AUTOSAR TimeService定时器实例类图
从上图可以看出,TimeService定时器实例的数据结构包括:
-
核心数据成员:
- 参考时间(reference time):记录定时器启动时的时间点
- 目标时间(target time):设定的目标超时时间点
- 状态(status):定时器当前的运行状态
-
主要方法:
StartTimer()
:启动定时器,设置参考时间IsTimerElapsed()
:检查定时器是否已超时GetElapsedValue()
:获取已经过的时间值GetRemainingValue()
:获取剩余的时间值
-
实例特性:
- 可以被用户完全独立使用
- 数量只受可用内存限制
- 基于特定的预定义时间类型创建
4.2 定时器类型与状态
TimeService支持多种定时器类型和状态:
-
定时器类型(TimerType):
StdTimer_1us
:标准1微秒定时器StdTimer_100us
:标准100微秒定时器StdTimer_1ms
:标准1毫秒定时器WakeupTimer_16bits
:16位唤醒定时器WakeupTimer_24bits
:24位唤醒定时器WakeupTimer_32bits
:32位唤醒定时器
-
定时器状态(TimerStatus):
TIMER_STOPPED
:定时器停止状态TIMER_RUNNING
:定时器运行中状态TIMER_EXPIRED
:定时器已超时状态
-
配置设置:
- 可用的预定义定时器类型
- 定时器频率配置
- 硬件定时器映射关系
4.3 与GPT预定义定时器的关系
TimeService定时器实例与GPT预定义定时器的关系:
-
依赖关系:
- TimeService定时器实例基于GPT预定义定时器创建
- 使用GPT提供的时间值作为基础
-
GPT预定义定时器属性:
- 时间单位(tick duration):定时器的最小时间粒度
- 计数器位数(bits):决定了定时器的计数范围
- 计数器当前值(current value):当前的计数器读数
GetTimeValue()
方法:获取当前计数值
-
转换机制:
- TimeService将GPT计数器值转换为特定时间单位
- 处理计数器溢出和回绕情况
- 保证跨平台的时间功能兼容性
5. TimeService操作流程
5.1 定时器初始化过程
TimeService的操作时序如下图所示:
图5.1 AUTOSAR TimeService操作时序图
从上图可以看出,定时器初始化过程包括以下步骤:
-
启动流程:
- 应用模块调用TimeService API的
StartTimer
函数 - 传入定时器类型和目标时间参数
- 应用模块调用TimeService API的
-
获取当前时间:
- TimeService调用
Gpt_GetTimeValue
获取当前时间值 - 作为定时器的参考时间点
- TimeService调用
-
存储参数:
- 将参考时间存储在定时器实例中
- 设置定时器状态为
TIMER_RUNNING
- 计算并存储目标时间点
-
完成初始化:
- 返回操作结果给应用模块
- 定时器实例准备就绪,可以被使用
5.2 定时器状态检查
检查定时器状态的流程包括:
-
调用流程:
- 应用模块调用
IsTimerElapsed
函数 - 传入需要检查的定时器实例
- 应用模块调用
-
获取当前时间:
- TimeService调用
Gpt_GetTimeValue
获取当前时间
- TimeService调用
-
计算经过时间:
- 计算从参考时间点到当前时间的时间差
- 考虑计数器可能的溢出情况
-
判断超时状态:
- 将经过的时间与目标时间比较
- 如果已超过目标时间,返回TRUE
- 否则返回FALSE
-
更新定时器状态:
- 如果超时,将定时器状态更新为
TIMER_EXPIRED
- 返回超时状态给应用模块
- 如果超时,将定时器状态更新为
5.3 时间测量与等待功能
TimeService提供的时间测量和等待功能:
-
获取经过时间:
- 应用模块调用
GetElapsedValue
函数 - TimeService获取当前时间并计算时间差
- 返回经过的时间值给应用模块
- 应用模块调用
-
忙等待实现:
- 应用模块调用
BusyWait
函数,指定等待时间 - TimeService记录起始时间并计算目标时间
- 循环检查当前时间,直到达到目标时间
- 等待完成后返回给应用模块
- 应用模块调用
-
操作特点:
- 所有服务都基于轮询模式
- 不支持中断或通知功能
- 定时器实例可以完全独立使用
6. 总结
AUTOSAR TimeService模块是AUTOSAR经典平台中提供时间服务的关键组件,具有以下特点:
-
架构特点:
- 位于服务层,连接应用层和ECU抽象层
- 使用标准化接口提供服务
- 依赖GPT驱动提供的底层定时器功能
-
功能特点:
- 提供多种预定义定时器类型,支持不同精度要求
- 支持时间测量、超时监控、忙等待等功能
- 采用轮询模式工作,不使用中断或通知
-
实现机制:
- 基于GPT预定义定时器实现
- 使用定时器实例存储时间状态
- 通过计算时间差实现各种时间功能
-
应用场景:
- 时间状态机:基于时间的状态转换
- 时间测量:精确测量程序执行时间
- 超时监控:检测操作是否超时
- 忙等待:精确的短时间延迟
TimeService模块通过提供标准化的时间服务接口,确保了时间功能在不同AUTOSAR平台上的兼容性,为汽车电子系统提供可靠的时间管理功能。