自由运行定时器需求(Requirements on Free Running Timer)

📄 文档 ID:211 🏷 类型:SRS(软件需求规范) 📅 版本:AUTOSAR CP 4.4.0 📑 页数:19 📌 状态:Final 🔗 原 PDF:AUTOSAR_SRS_FreeRunningTimer.pdf

目录

1 文档范围(Scope of Document)

本文档定义了软件自由运行定时器(Software Free Running Timer,SWFRT)功能的需求。OS SWS 规范应当满足这些需求。

约束:特定微控制器的硬件可能无法支持自由运行定时器功能——那么此功能应当被省略。这在以下情况尤其适用:

此模块的可配置性及其与其他模块的依赖关系是最关键的部分,因为许多情况下用于自由运行定时器的定时器应在模块之间共享。实现 SW-FRT 的模块应当导入任何其他工具关于定时器/时钟的设置,而不是定义设置。

2 约定(Conventions to be Used)

AUTOSAR 文档中的需求表示遵循 [5] 中指定的表格。在需求中,使用以下特定语义(基于 IETF RFC 2119):

3 缩略语与缩写(Acronyms and Abbreviations)

缩略语说明
APIApplication Programming Interface(应用程序编程接口)
BSWBasic Software(基础软件)
COMCommunications(通信)
ECUElectronic Control Unit(电子控制单元)
GPTGeneral Purpose Timer(通用定时器,SWS 模块)
HWHardware(硬件)
Tick硬件定时器的一个增量 = HW 定时器 Tick;如果未明确说明,则指硬件定时器。TickType 由许多 HW-Timer Tick 组成;明确指向时将指出。
Interval of Timer两个测量点之间的时间距离
OSAUTOSAR Operating System(AUTOSAR 操作系统)
Range of Timer定时器可能覆盖的最大间隔
Reset Timer超过预定义边距时以预定义值启动的定时器。
Resolution of Timer可测量的最小时间间隔
SIInternational System of Units(国际单位制,法语缩写 SI)
SLASoftware Layered Architecture(软件分层架构)
SWCSoftware Component(软件组件)
SWFRTSoftware extending features of HW Free running timers(软件扩展硬件自由运行定时器功能)
Test Value当前读出值所比较的值。
Wrap Around定时器达到定义的最大值时采取的动作。

每个需求都有以 SWFRT 前缀开头的唯一标识符。

4 功能概述(Functional Overview)

本章描述了自由运行定时器(Free Running Timer)模块的功能需求。第 4.1 节通过概述介绍 SWFRT,第 4.2 和 4.3 节包含需求。该功能将被底层软件和应用层访问。因此在 SLA 中的位置需要是服务层(SLA ID:02-06)。

范围内的功能:

A) SWFRT 模块提供的代码访问一个或多个硬件定时器。此硬件定时器在运行期间不得被任何其他 SW 模块修改(自由运行硬件定时器或复位定时器,SRS_Gpt_12404:配置为连续模式)。该定时器也可以为不同目的执行功能。SWFRT 代码将可能变化的硬件功能始终映射到相同的 SW 功能:

功能 A)抽象 GPT 读出函数(SRS_Gpt_12117)或直接硬件访问(定时器单元可由 OS 直接管理,见第 5 章 SWS OS)。

B) SWFRT 还应扩展硬件的可能有限范围。特别是当硬件定时器的位数受到限制时,范围需要扩展。为此扩展,SWFRT 增加一个循环计数器。此计数器计数的间隔是硬件定时器的最大范围。

用于功能 A)和功能 B)的硬件定时器不一定是相同的定时器;在不同时间启动的两个不同硬件定时器以及范围也可以满足此功能。因此,功能 A)的硬件定时器和功能 B)的定时器之间可能会出现偏移。

范围内的用例:

开销限制:

应用两种可能功能中的哪一种取决于 SWFRT 导入的配置需求(要测量的最小和最大间隔、定时器的范围和分辨率)以及合理的资源消耗。

应当避免高频通知功能。即:不要使用 SRS_Gpt_12120:GPT 通知来提供长范围。而是基于调用 SWFRT 主函数的 OS 任务构建长范围。

典型用户场景序列:

  1. 读取 HW-FRT 或计数器;
  2. 执行某些动作;
  3. 循环测试此动作的成功;
  4. 再次读出上述 FRT,并且
  5. 如果与该 FRT 的后续读出值的差异未超过预定义超时,则将此动作标记为成功。

SWFRT 软件功能有时使用多个递增计数器。HW 计数器递增 1 应称为"tick"。进一步,微控制器硬件(HW)可提供仅递增和/或递减的定时器。Ticks 将表示显著不同的值(ns、ms、s)。溢出或超过设定最大值(/最小值)会自动以零(/最大值)重新启动定时器。此动作称为 wrap around(环绕)

在 SWFRT 定时器的定义范围内,任何时间计算都需要调整到环绕值。

硬件特性抽象

应当考虑以下特性:

这些硬件特性应当与 MCU、GPT 和 OS 模块一起作为配置参数本地定义(其参数集可能不可移植到不同的微控制器)。它们的集合导致具有定义分辨率和范围的一个定时器的转换规则(可能不可移植到不同的配置);生成的代码需要为每个新配置从头开始生成。应用这些转换规则将导致函数(宏)以定义的分辨率读取自由运行定时器以及可测量的最大/最小间隔。"用户"对由定时器、规则、分辨率和范围组成的一套感兴趣。

以上所有内容都将映射到所涉及模块的配置章节中。

5 需求追溯(Requirements Tracing)

需求描述由以下 SRS 满足
RS_BRF_01048AUTOSAR 模块设计应当支持模块在多任务环境中协作。SRS_Frt_00044
RS_BRF_01056AUTOSAR BSW 模块应当提供标准化接口。SRS_Frt_00033SRS_Frt_00034SRS_Frt_00047
RS_BRF_01096AUTOSAR 应当支持 ECU 的启动和关闭。SRS_Frt_00020SRS_Frt_00029SRS_Frt_00041SRS_Frt_00048
RS_BRF_01104AUTOSAR 应当支持 ECU 和总线的睡眠与唤醒。SRS_Frt_00048
RS_BRF_01472AUTOSAR 应当支持模式。SRS_Frt_00022
RS_BRF_01856AUTOSAR 微控制器抽象应当提供对内部 MCU 配置的访问。SRS_Frt_00023SRS_Frt_00024SRS_Frt_00025SRS_Frt_00026
RS_BRF_01904AUTOSAR 微控制器抽象应当提供对硬件定时器的访问。SRS_Frt_00019SRS_Frt_00020SRS_Frt_00021SRS_Frt_00022SRS_Frt_00023SRS_Frt_00024SRS_Frt_00025SRS_Frt_00026SRS_Frt_00028SRS_Frt_00029SRS_Frt_00030SRS_Frt_00031SRS_Frt_00032SRS_Frt_00033SRS_Frt_00034SRS_Frt_00041SRS_Frt_00044SRS_Frt_00047SRS_Frt_00048

6 需求规范(Requirements Specification)

本章中同类需求按以下标题分组:

6.1 功能需求(Functional Requirements)

6.1.1 配置(Configuration)

本章说明模块可配置性的需求。

[SRS_Frt_00019] 应当配置硬件定时器类型。

类型New
描述根据要测量的范围、分辨率和最大/最小间隔,这定义了 SWFRT 模块应使用哪个(或哪些)硬件定时器用于哪个功能。选择满足分辨率范围等需求的定时器类型。这可以是 OS TickType 计数器或微控制器的硬件定时器。
理由限制可用的可能性以及实现的变体/开销。
用例定义:晶振和 PLL 的允许范围以及生成的定时器是否提供恒定频率;定时器应向上计数还是向下计数(虽然不阻碍使用,但所需程序会有所不同);首选寄存器宽度;该定时器是否需要与寄存器宽度不同的环绕边距;环绕值;是否可以使用预分频器;可为哪些预分频器设置哪些值(范围);可以级联哪些定时器;环绕之间的时间。
例如:选择 TriCore 的 System Timer。
依赖
支持材料
满足RS_BRF_01904

[SRS_Frt_00020] 如果不使用 GPT 定时器,配置和初始化应当由提供 SWFRT 功能的模块(OS)执行。

类型New
描述如果不使用 GPT 定时器,配置和初始化应当由提供 SWFRT 功能的模块(OS)执行。
理由最高效地使用硬件。
用例通常有 "System Timer"、"Periodic Interrupt Timer"、"GPT Timer" 等定时器,可用于 SWFRT 和其他模块。使用哪个类型由需求 6.1.1.1 选择。它们仍具有需要按微控制器详细化和选择的功能——但不是按实现。这些设置不应被彼此覆盖,也不应被遗忘。
依赖SRS_Frt_00021
支持材料
满足RS_BRF_01904RS_BRF_01096

[SRS_Frt_00021] 计算 tick 持续时间所需的元素应当是导入的配置项。

类型New
描述如果没有合适的硬件定时器配置,则设置新的硬件定时器配置。这是关于 SWS 第 10 章依赖项的需求。这应当确保设置是由 OS 完成还是 OS 将重用来自不同模块(例如 GPT)的定时器。
理由最高效地使用硬件。
用例硬件定时器能够提供大范围以及分辨率。它可用于 OS TickType 以及 SW FRT 的定时功能。只需应用不同的掩码操作。
依赖SRS_Frt_00020
支持材料
满足RS_BRF_01904

[SRS_Frt_00022] 应当能够说明使用哪个硬件定时器。

类型Valid
描述
理由代码将根据使用的定时器而有显著不同。
用例定义将支持哪些定时器。
依赖
支持材料
满足RS_BRF_01472RS_BRF_01904

[SRS_Frt_00023] 应当设置一个 tick 的持续时间。

类型Valid
描述根据对定时器寄存器的访问,这会导致不同的分辨率——必须知道此分辨率。
理由SRS_Frt_00021SRS_Frt_00020 的组合定义了用于哪个定时器及其规则的设置。这些规则按微控制器和硬件定时器(分别为 OS GlobalTimeTickType)定义。
用例在 80MHz 速度下运行的 TC1766 中,寄存器 TIM0 提供 12.5ns 的一个 tick。在用例 -C-(来自介绍章节)中,循环应循环读取定时器值并测试可能有故障的硬件。最大测试间隔为 500ns,因此第一次读取与其连续读取之间的差异被预定义为 40。
这样,基本 SW 模块和应用层都通过抽象的时间提供。
依赖[SRS_Frt_00021]、[SRS_Frt_00020]
支持材料
满足RS_BRF_01904RS_BRF_01856

[SRS_Frt_00024] SWFRT 应当支持不同的分辨率和范围。

类型Valid
描述SWFRT 应当支持不同的分辨率和范围。即以覆盖范围和分辨率的方式设置不同 tick 长度的集合。这些由表示不同时间量的 tick 支持(见第 2.1 章表中的范围定义)。范围应当假定为从 0 到最大。
理由
用例在 40MHz 速度下运行并使用 256 预分频器的 Star12 的 PIT 寄存器集提供 6.4µs 的一个 tick。对 16 位寄存器集寄存器的访问将提供 0...420ms 范围内的 ticks。由于无法覆盖大于 420ms 的间隔,因此应当实现额外的主函数计数器用于 0…2.6E3 s(1.8 天)的范围。
依赖
支持材料
满足RS_BRF_01904RS_BRF_01856

[SRS_Frt_00025] 应为不同用户提供访问时间信息的方法。

类型Valid
描述可能需要不同的定时器、定时器掩码。如果是这样,必须定义每种访问方法。
理由避免在 tick 计数和基于 SI 单位的比较之间的多次转换;改为使用具有预定义测试值的统一方法。
用例可以访问基本 tick,也可以访问每第 n 个 tick。其中 n 取决于微控制器(例如仅读取相应计数器的位 8...24)。如果访问跨越 16/32 位边界或超过一个时钟周期,必须特别注意一致性。
依赖SRS_Frt_00019SRS_Frt_00020SRS_Frt_00021SRS_Frt_00022SRS_Frt_00023SRS_Frt_00034
支持材料
满足RS_BRF_01904RS_BRF_01856

[SRS_Frt_00026] 设置目标计数值:时间差应当在配置时以 SI 单位离线计算。

类型Valid
描述目标计数值是与读取的定时器值进行比较的值。目标计数值应当以 SI 单位配置。等效的 tick 存储在 ECU 的内存中。
理由运行时应当保持低开销:在配置时计算用于测试定时器差值的边距(而不是在运行时乘以)。
用例离线计算的目标计数值可以是任何配置类。目标计数值是那些将在运行时与定时器的当前值进行比较的常量。这意味着比较指令必须遵守范围、分辨率和有效的定时器间隔。这样代码简化为比较指令。
用户模块所需的值在其 XML 中表达。SWFRT 的自动配置编辑器检查其他模块的时间,当找到时,使用定时器的范围和分辨率的知识来计算以 counter ticks 为单位的时间。然后将这些值放回用户的 XML 中,以便用户的代码生成可以访问这些值。
依赖SRS_Frt_00025
支持材料
满足RS_BRF_01904RS_BRF_01856

[SRS_Frt_00028] 应当确保连续运行模式。

类型Valid
描述使用的硬件定时器可以具有不同目的的功能。此硬件应当是自由运行的硬件定时器或复位定时器,SRS_Gpt_12404:配置为连续模式。
理由
用例
依赖
支持材料
满足RS_BRF_01904

6.1.2 初始化(Initialisation)

[SRS_Frt_00029] 应当提供一个独立于是否需要设置或修改任何寄存器的初始化函数。

类型Valid
描述如果 MCU 驱动执行初始化,则必须在 MCU 驱动初始化被调用后调用 SWFRT init 函数。如果 GPT 驱动执行初始化,则必须在 GPT 驱动被调用后调用 SWFRT init 函数。
理由确保定时器和 PLL 已初始化。
用例
依赖
支持材料
满足RS_BRF_01904RS_BRF_01096

6.1.3 正常运行(Normal Operation)

[SRS_Frt_00030] 读出值应当从零开始。

类型Valid
描述读出值从零开始;即使硬件从最大值向下计数到零。
理由支持定义标准接口。
用例例如,硬件以 0xE000 启动并向下运行到 0x100,由于需要一些比例因子,对读出值的所有调整应当在 SWFRT 内完成。
依赖
支持材料
满足RS_BRF_01904

[SRS_Frt_00031] SWFRT 应当递增,即连续读出值将增加——除非超过 SWFRT 的定义范围。

类型Valid
描述这意味着:当硬件定时器向下计数时反转计数器;进一步:调整任何可能存在的偏移(当硬件定时器从某个边距向下计数到零或从某个边距向上计数到溢出时)。
理由支持定义标准接口。
用例
依赖
支持材料
满足RS_BRF_01904

[SRS_Frt_00032] 环绕(wrap around)应当无需软件交互即可工作。

类型Valid
描述
理由节省运行时。不要让时间"走动",即中断消耗时间,因此增加了定时器未跟踪的时间。
用例硬件定时器应当配置为连续运行。应当不需要任何动作来重新启动定时器。环绕应当在硬件支持下加载重新启动值:例如,没有额外的自由运行定时器可用。CapCom 定时器应当共享。其配置如下:CapCom 定时器从 0xFFFF 启动,重新加载边距值为 0x3ff,重新加载值为 0xFFFF,计数器配置为向下计数器。向下计数到 0x3FF 后,在没有软件交互的情况下重新加载 0xFFFF。
依赖
支持材料
满足RS_BRF_01904

[SRS_Frt_00033] 应当有一个原子读取定时器值的函数。

类型Valid
描述此函数读取定时器 ticks。不包括从定时器 ticks 到 SI 单位(秒、毫秒、微秒、纳秒)的转换。
理由避免不一致的访问。
用例必须一致地读取定时器值(即使跨越字节边界或多个时钟周期)。这可能涉及对 8 位/16 位/32 位/64 位寄存器的保护访问:
例如,TriCore TC1766 提供 56 位的定时器宽度。这 56 位可通过 TIM0 ... TIM6 寄存器访问。其中 TIM0 读取 ticks。TIM1 每 16 ticks 读取一次,TIM2:216,TIM3:4096,TIM4:65536,TIM5:220,TIM6:232。如果按硬件定义的顺序读取寄存器,这些寄存器将在 32 位以上提供一致性。
依赖
支持材料
满足RS_BRF_01904RS_BRF_01056

[SRS_Frt_00047] SWFRT 应当提供一个"用户"相关的 API(函数/宏)以将 ticks 转换为时间。

类型Valid
描述此函数以 ticks 数作为参数,并将其参数转换为 SI 单位(秒、毫秒、微秒、纳秒)的时间。
理由允许转换为基于 SI 的时间单位。
用例A) 外围设备在被访问之前需要启动时间。此启动时间在 HW 描述中指定。需要实现超时(以 SI 单位)以避免读取无效数据。此超时需要映射到 a) 能处理该间隔的硬件定时器 b) 给该定时器 ticks 数的值。
B) 诊断通信需要可变的帧间时间(STMIN)。它们需要设置为测量间隔,范围为 100µs 到 900µ(9 个值)和第二个测量间隔 1...127 ms(126 个值)。这 135 个值需要基于可用的定时器和循环主函数进行离线计算。
依赖
支持材料
满足RS_BRF_01904RS_BRF_01056

[SRS_Frt_00034] 该模块应当提供计算先前存储值(作为参数传递)与当前定时器值之间经过的 ticks 的功能。

类型Valid
描述调用者需要提供最后读取的值。
理由支持不同功能级别(代码大小和执行时间)。
用例读取当前定时器值,并使用参数中的时间函数计算差异。
依赖
支持材料
满足RS_BRF_01904RS_BRF_01056

6.1.4 关闭操作(Shutdown Operation)

[SRS_Frt_00041] SWFRT 不应有关闭操作。

类型Valid
描述
理由没有可关闭的内容;并非所有定时器都可以停止。
用例
依赖
支持材料
满足RS_BRF_01904RS_BRF_01096

[SRS_Frt_00048] SW FRT 功能应当在其 Init 函数之后被保证,并且在 ECU 的 'SLEEP'、'Wakeup I'、'StartUP I'、'Go OFF II' 和 'Power Off' 状态下不可用。

类型Valid
描述在 ECU 的上述状态下,功能将返回未定义的结果,因此在这些状态下不应使用它。
理由PLL 可能不可用/降低等。
用例当存在未知定时器设置的风险时,不要使用此功能。
依赖
支持材料
满足RS_BRF_01904RS_BRF_01104RS_BRF_01096

6.1.5 故障操作(Fault Operation)

无特定需求。

6.2 非功能需求(Non-Functional Requirements)

6.2.1 时序需求(Timing Requirements)

无特定的时序需求。

6.2.2 资源使用(Resource Usage)

[SRS_Frt_00044] SWFRT 不应为使用而阻塞定时器。

类型valid
描述允许多个模块使用相同的定时器。如果其他模块的需求在类似范围内,应当能够重用其配置。
理由支持定时器共享。
用例如果 PWM 以 SWFRT 需求范围内的频率工作,应当提供该定时器供使用。
依赖
支持材料
满足RS_BRF_01904RS_BRF_01048

7 引用的 AUTOSAR 文档(Referenced AUTOSAR documents)

📋 校对记录

校对轮次:L1 自动校对(2026-06-13)