AUTOSAR图解==>AUTOSAR_SRS_TimeService

AUTOSAR TimeService模块详解

AUTOSAR经典平台时间服务分析与图解

目录


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架构中具有以下特点:

  1. 层次位置

    • TimeService位于AUTOSAR的服务层(Services Layer)
    • 它位于应用层和ECU抽象层之间
    • 通过标准化接口向上提供服务,向下访问硬件资源
  2. 关键接口

    • 向上提供Timer API,供应用模块使用
    • 向下访问GPT Predef Timer API,使用GPT驱动提供的预定义定时器
  3. 依赖关系

    • 直接依赖GPT驱动模块提供的底层定时器功能
    • 间接依赖微控制器抽象层提供的硬件访问功能
    • 不依赖中断或通知功能,采用轮询模式工作

2.2 模块功能职责

根据AUTOSAR规范,TimeService模块承担以下主要职责:

  1. 时间基础功能

    • 提供基于预定义定时器的时间服务
    • 确保时间功能在不同平台上的兼容性
  2. 时间状态机支持

    • 提供基于时间的状态转换功能
    • 支持状态超时和状态保持时间计算
  3. 时间测量功能

    • 提供高精度的时间间隔测量
    • 支持不同精度的时间单位(微秒、毫秒等)
  4. 超时监控功能

    • 提供超时检测和处理机制
    • 支持不同超时策略
  5. 忙等待功能

    • 提供基于轮询的等待机制
    • 不使用中断或回调机制

3. TimeService组件结构

3.1 预定义定时器类型

TimeService模块的内部组件结构如下图所示:

在这里插入图片描述

图3.1 AUTOSAR TimeService模块组件结构图

从上图可以看出,TimeService模块内部包含以下预定义定时器类型:

  1. 精度分类

    • 1微秒定时器:提供微秒级精度
    • 100微秒定时器:提供百微秒级精度
    • 1毫秒定时器:提供毫秒级精度
    • 其他可配置定时器类型
  2. 预定义定时器特性

    • 每种定时器都有预定义的时间单位
    • 每种定时器都有预定义的位数范围
    • 基于GPT Predef Timer实现
    • 可以通过配置启用或禁用
  3. 定时器限制

    • 硬件依赖性:需要硬件支持相应的定时器功能
    • 配置依赖性:需要在配置时启用
    • 采用轮询模式,不支持通知功能

3.2 时间函数功能

TimeService模块提供的主要时间函数包括:

  1. 获取经过时间(GetElapsed)

    • 计算从参考时间点到当前时间的时间差
    • 返回经过的时间值
    • 用于时间测量功能
  2. 获取剩余时间(GetRemaining)

    • 计算从当前时间到目标时间的时间差
    • 返回剩余的时间值
    • 用于超时计算
  3. 检查超时(IsExpired)

    • 判断是否已经超过设定的目标时间
    • 返回超时状态(布尔值)
    • 用于状态机和超时监控
  4. 忙等待(BusyWait)

    • 在指定的时间内执行循环等待
    • 基于轮询实现,不释放CPU
    • 用于精确的短时间延迟

3.3 与GPT驱动关系

TimeService与GPT驱动之间的关系:

  1. 依赖关系

    • TimeService直接依赖GPT驱动提供的预定义定时器
    • 不使用GPT驱动的所有功能,只使用预定义定时器部分
  2. GPT预定义定时器特性

    • 自由运行的硬件计数器
    • 具有预定义的物理时间单位和范围
    • 采用轮询模式工作,不使用通知功能
    • 可以有多个硬件计数器实例

4. TimeService定时器实例

4.1 实例数据结构

TimeService定时器实例的类结构如下图所示:

在这里插入图片描述

图4.1 AUTOSAR TimeService定时器实例类图

从上图可以看出,TimeService定时器实例的数据结构包括:

  1. 核心数据成员

    • 参考时间(reference time):记录定时器启动时的时间点
    • 目标时间(target time):设定的目标超时时间点
    • 状态(status):定时器当前的运行状态
  2. 主要方法

    • StartTimer():启动定时器,设置参考时间
    • IsTimerElapsed():检查定时器是否已超时
    • GetElapsedValue():获取已经过的时间值
    • GetRemainingValue():获取剩余的时间值
  3. 实例特性

    • 可以被用户完全独立使用
    • 数量只受可用内存限制
    • 基于特定的预定义时间类型创建

4.2 定时器类型与状态

TimeService支持多种定时器类型和状态:

  1. 定时器类型(TimerType)

    • StdTimer_1us:标准1微秒定时器
    • StdTimer_100us:标准100微秒定时器
    • StdTimer_1ms:标准1毫秒定时器
    • WakeupTimer_16bits:16位唤醒定时器
    • WakeupTimer_24bits:24位唤醒定时器
    • WakeupTimer_32bits:32位唤醒定时器
  2. 定时器状态(TimerStatus)

    • TIMER_STOPPED:定时器停止状态
    • TIMER_RUNNING:定时器运行中状态
    • TIMER_EXPIRED:定时器已超时状态
  3. 配置设置

    • 可用的预定义定时器类型
    • 定时器频率配置
    • 硬件定时器映射关系

4.3 与GPT预定义定时器的关系

TimeService定时器实例与GPT预定义定时器的关系:

  1. 依赖关系

    • TimeService定时器实例基于GPT预定义定时器创建
    • 使用GPT提供的时间值作为基础
  2. GPT预定义定时器属性

    • 时间单位(tick duration):定时器的最小时间粒度
    • 计数器位数(bits):决定了定时器的计数范围
    • 计数器当前值(current value):当前的计数器读数
    • GetTimeValue()方法:获取当前计数值
  3. 转换机制

    • TimeService将GPT计数器值转换为特定时间单位
    • 处理计数器溢出和回绕情况
    • 保证跨平台的时间功能兼容性

5. TimeService操作流程

5.1 定时器初始化过程

TimeService的操作时序如下图所示:

在这里插入图片描述

图5.1 AUTOSAR TimeService操作时序图

从上图可以看出,定时器初始化过程包括以下步骤:

  1. 启动流程

    • 应用模块调用TimeService API的StartTimer函数
    • 传入定时器类型和目标时间参数
  2. 获取当前时间

    • TimeService调用Gpt_GetTimeValue获取当前时间值
    • 作为定时器的参考时间点
  3. 存储参数

    • 将参考时间存储在定时器实例中
    • 设置定时器状态为TIMER_RUNNING
    • 计算并存储目标时间点
  4. 完成初始化

    • 返回操作结果给应用模块
    • 定时器实例准备就绪,可以被使用

5.2 定时器状态检查

检查定时器状态的流程包括:

  1. 调用流程

    • 应用模块调用IsTimerElapsed函数
    • 传入需要检查的定时器实例
  2. 获取当前时间

    • TimeService调用Gpt_GetTimeValue获取当前时间
  3. 计算经过时间

    • 计算从参考时间点到当前时间的时间差
    • 考虑计数器可能的溢出情况
  4. 判断超时状态

    • 将经过的时间与目标时间比较
    • 如果已超过目标时间,返回TRUE
    • 否则返回FALSE
  5. 更新定时器状态

    • 如果超时,将定时器状态更新为TIMER_EXPIRED
    • 返回超时状态给应用模块

5.3 时间测量与等待功能

TimeService提供的时间测量和等待功能:

  1. 获取经过时间

    • 应用模块调用GetElapsedValue函数
    • TimeService获取当前时间并计算时间差
    • 返回经过的时间值给应用模块
  2. 忙等待实现

    • 应用模块调用BusyWait函数,指定等待时间
    • TimeService记录起始时间并计算目标时间
    • 循环检查当前时间,直到达到目标时间
    • 等待完成后返回给应用模块
  3. 操作特点

    • 所有服务都基于轮询模式
    • 不支持中断或通知功能
    • 定时器实例可以完全独立使用

6. 总结

AUTOSAR TimeService模块是AUTOSAR经典平台中提供时间服务的关键组件,具有以下特点:

  1. 架构特点

    • 位于服务层,连接应用层和ECU抽象层
    • 使用标准化接口提供服务
    • 依赖GPT驱动提供的底层定时器功能
  2. 功能特点

    • 提供多种预定义定时器类型,支持不同精度要求
    • 支持时间测量、超时监控、忙等待等功能
    • 采用轮询模式工作,不使用中断或通知
  3. 实现机制

    • 基于GPT预定义定时器实现
    • 使用定时器实例存储时间状态
    • 通过计算时间差实现各种时间功能
  4. 应用场景

    • 时间状态机:基于时间的状态转换
    • 时间测量:精确测量程序执行时间
    • 超时监控:检测操作是否超时
    • 忙等待:精确的短时间延迟

TimeService模块通过提供标准化的时间服务接口,确保了时间功能在不同AUTOSAR平台上的兼容性,为汽车电子系统提供可靠的时间管理功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KaiGer666

慧眼~施主!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值