Files
autosar_standard_spec_v4.4/MCAL/AUTOSAR_SRS_GPTDriver.md
T

477 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AUTOSAR GPT 驱动需求规范
> **Requirements on GPT Driver**
> AUTOSAR CP Release 4.4.0
## 元信息
- **文档类别**SRSSoftware Requirements Specification,软件需求规范)
- **模块名称**GPT DriverGeneral Purpose Timer Driver,通用定时器驱动)
- **关联层级**MCALMicrocontroller Abstraction Layer,微控制器抽象层)
- **AUTOSAR 版本**Classic Platform 4.4.0
- **文档标识号**187
## 文档标识
| 项 | 值 |
| --- | --- |
| Document Title | Requirements on GPT Driver |
| Document Owner | AUTOSAR |
| Document Responsibility | AUTOSAR |
| Document Identification No | 187 |
| Document Status | Final |
| Part of AUTOSAR Standard | Classic Platform |
| Part of Standard Release | 4.4.0 |
## 文档变更历史
| 日期 | 版本 | 变更方 | 变更说明 |
| --- | --- | --- | --- |
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 编辑性修订 |
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 编辑性修订 |
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 编辑性修订 |
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 编辑性修订 |
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 新的 RS feature 关联至 GPT Predef Timer 需求 |
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 编辑性修订 |
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | 新增 GPT Predef Timer 功能需求 |
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | 重做需求追溯 |
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 删除 BSW12460;修订法律免责声明 |
| 2008-08-13 | 3.1.1 | AUTOSAR Administration | 修订法律免责声明 |
| 2007-12-21 | 3.0.1 | AUTOSAR Administration | 扩展文档元信息;微调版面 |
| 2007-01-24 | 2.1.15 | AUTOSAR Administration | 修订法律免责声明;修订"用户须知";新增"修订信息" |
| 2006-05-16 | 2.0 | AUTOSAR Administration | 作为独立文档发布。SRS SPAL V1.0.0 在 Release 2.0 时被拆分为 12 份独立文档。新增需求:[SRS_Gpt_13601] 唤醒功能;[SRS_Gpt_13602] 使能/禁用唤醒;[SRS_Gpt_13603] 唤醒模式选择服务 |
| 2005-05-31 | 1.0 | AUTOSAR Administration | 作为 SRS SPAL V1.0.0 的一部分首次发布 |
## 免责声明
> 本节为版权与法律声明,以英文形式发布,翻译时予以保留原文。详情请参考英文原版。
---
## 目录
1. [文档范围](#1-文档范围)
2. [如何阅读本文档](#2-如何阅读本文档)
- 2.1 [使用的约定](#21-使用的约定)
- 2.2 [需求结构](#22-需求结构)
3. [功能概述](#3-功能概述)
4. [缩略语与缩写](#4-缩略语与缩写)
5. [需求规范](#5-需求规范)
- 5.1 [功能性需求](#51-功能性需求)
- 5.1.1 [通用](#511-通用)
- 5.1.2 [配置](#512-配置)
- 5.1.3 [初始化](#513-初始化)
- 5.1.4 [正常操作](#514-正常操作)
- 5.1.5 [故障操作](#515-故障操作)
6. [需求追溯](#6-需求追溯)
7. [参考文献](#7-参考文献)
---
## 1 文档范围
本文档规定了 GPT Driver 模块的需求。
### 约束
基础软件模块需求规范的首要范围是不涉及安全相关的系统。因此,安全需求被赋予中等优先级。
---
## 2 如何阅读本文档
每个需求都有以前缀 "BSW"(代表"Basic Software")开头的唯一标识符。任何评审注释、备注或问题请引用此唯一 ID,而非章节或页码!
### 2.1 使用的约定
- AUTOSAR 文档中需求的表示形式遵循 [TPS_STDT_00078] 中规定的表格。
- 在需求中,以下特定语义被使用(摘自 IETF 的 Request for Comment RFC 2119):
本文档中的关键词 "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY" 和 "OPTIONAL" 应按 RFC 2119 中描述进行解释。注意,使用这些词的文档的需求级别会修改这些词的强度。
- **MUST**:此词或"REQUIRED"或"SHALL"表示该定义是规范的绝对要求。
- **MUST NOT**:此短语或"SHALL NOT"表示该定义是规范的绝对禁止。
- **SHOULD**:此词或形容词"RECOMMENDED"表示在特定情况下可能存在有效理由忽略某一项,但在选择不同方案前必须充分理解并仔细权衡其影响。
- **SHOULD NOT**:此短语或"NOT RECOMMENDED"表示在特定情况下可能存在有效理由认为特定行为是可接受的甚至是有用的,但在实施被此标签描述的行为之前应充分理解并仔细权衡其影响。
- **MAY**:此词或形容词"OPTIONAL"表示某项确实是可选的。一个供应商可以选择包含该项(因为特定市场需求或供应商认为它能提升产品),而另一供应商可以省略相同的项。不包含特定可选项的实现 MUST 准备好与包含该选项的实现互操作(可能功能有所缩减)。同理,包含特定选项的实现 MUST 准备好与不包含该选项的实现互操作(当然,除了该选项所提供的特性之外)。
### 2.2 需求结构
每个模块特定章节包含基础软件模块的简短功能描述。每章中同类型需求按以下标题分组(如适用):
**功能性需求**:
- 配置(模块中哪些元素需要可配置)
- 初始化
- 正常操作
- 关机操作
- 故障操作
- ...
**非功能性需求**:
- 时序需求
- 资源使用
- 易用性
- 给其他工作包的输出(例如 Description Templates、Tooling 等)
- ...
---
## 3 功能概述
GPT 驱动是 microcontroller abstraction layer (MCAL) 的一部分。它初始化并控制微控制器内部的 General Purpose Timer (GPT)。
GPT 驱动提供以下服务和配置参数:
- 启动与停止硬件定时器
- 获取定时器值
- 控制时间触发的中断通知
- 控制时间触发的唤醒中断
GPT 驱动能够提供精确而短期的时序。当 OS Alarm 服务的开销过大时,可以使用 GPT 驱动的单次/连续中断通知。
典型周期时间范围的示例为 50µs ... 5 ms。
定义了一些自由运行的递增计数器——即所谓的 GPT Predef Timers。这些定时器具有预定义的 tick 持续时间和预定义的位数(物理时间单位与范围)。GPT Predef Timers 被 Time Service 模块使用。
---
## 4 缩略语与缩写
具有局部范围的缩略语和缩写不包含在 AUTOSAR 术语表中。它们必须出现在本地术语表中。
| 缩写 | 描述 |
| --- | --- |
| CS | Chip select(片选) |
| DIO | Digital Input Output(数字输入输出) |
| ECU | Electric Control Unit(电子控制单元) |
| EOL | End Of Line(产线终点),常用于"EOL Programming"或"EOL Configuration" |
| ICU | Input Capture Unit(输入捕获单元) |
| MAL | 微控制器抽象层的旧称(已被 MCAL 取代,因为'MAL'在法语中意为'坏的') |
| MCAL | Microcontroller Abstraction Layer(微控制器抽象层) |
| MCU | Microcontroller Unit(微控制器单元) |
| MMU | Memory Management Unit(内存管理单元) |
| Master | 控制其他设备(从设备,见下文)的设备 |
| Slave | 完全由主设备控制的设备 |
| NMI | Non maskable interrupt(不可屏蔽中断) |
| OS | Operating System(操作系统) |
| PLL | Phase Locked Loop(锁相环) |
| PWM | Pulse Width Modulation(脉冲宽度调制) |
| RX | Reception(总线通信场景下的接收) |
| SPAL | Standard Peripheral Abstraction Layer(本工作组名称) |
| SFR | Special Function Register(专用功能寄存器) |
| RTE | Runtime environment(运行时环境) |
| WP | Work Package(工作包) |
| STD | Standard(标准) |
| REQ | Requirement(需求) |
| UNINIT | Uninitialized(未初始化) |
由于本文档是面向专业人员的专业文档,其余术语默认读者已知。
---
## 5 需求规范
### 5.1 功能性需求
#### 5.1.1 通用
##### 5.1.1.1 [SRS_Gpt_12328] GPT 驱动应对所有与 GPT 定时器通道相关的 API 服务使用时间单位 ticks
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应对所有与 GPT 定时器通道相关的 API 服务使用时间单位 ticks。 |
| Rationale | 物理时间单位与 ticks 之间的转换应是用户软件的一部分。 |
| Use Case | -- |
| Dependencies | [SRS_BSW_00343] 时间的规范与配置 |
| Supporting Material | -- |
⌋(RS_BRF_01904)
##### 5.1.1.2 [SRS_Gpt_13604] GPT 驱动应支持特殊的自由运行递增计数器(GPT Predef Timers)
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应支持具有预定义 tick 持续时间和预定义位数(物理时间单位与范围)的自由运行递增计数器(GPT Predef Timers)。GPT Predef Timers 的功能应与 GPT 定时器通道相关功能相分离。 |
| Rationale | GPT 驱动应为 Time Service 模块提供硬件时间基准。 |
| Use Case | 时间测量、基于时间的状态机、超时监督、忙等待。 |
| Dependencies | [SRS_BSW_00343] 时间的规范与配置 |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01468)
##### 5.1.1.3 [SRS_Gpt_13605] GPT 驱动应支持不同类型的 GPT Predef Timers
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应支持下列类型的 GPT Predef Timers:<br>- Timer 1µs 16bit<br>- Timer 1µs 24bit<br>- Timer 1µs 32bit<br>- Timer 100µs 32bit |
| Rationale | 1µs:高分辨率定时器。<br>16bit timer:支持 16bit 硬件定时器。<br>24bit timer:支持 24bit 硬件定时器。<br>32bit timer:支持 32bit 硬件定时器。<br>100µs 32bit timer:覆盖汽车应用用例(时间跨度 4.9 天)。 |
| Use Case | 时间测量、基于时间的状态机、超时监督、忙等待。 |
| Dependencies | -- |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01468)
#### 5.1.2 配置
##### 5.1.2.1 [SRS_Gpt_12404] 应可对每个定时器通道配置单次/连续模式
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应允许对每个定时器通道进行如下静态配置:<br>- One-Shot mode:定时器达到结束值后停止<br>- Continuous mode:定时器达到结束值后自动重启 |
| Rationale | 提供保证的最小延迟时间或保证的频率。 |
| Use Case | One-shot 模式:<br>步进电机控制,其中线圈驱动脉冲必须具有定义的最小持续时间。在输出信号设置后定时器重启。即使一个输出脉冲被延迟(例如由于中断禁用),下一个脉冲也不会过早出现。<br><br>Continuous 模式:<br>ADC 转换触发。ADC 以固定速率连续触发,无需重启定时器。<br>输入信号采样。输入信号以固定速率采样。 |
| Dependencies | -- |
| Supporting Material | BMW Specification MCAL V1.0a, REQ MAL30.1.5 |
⌋(RS_BRF_01904)
##### 5.1.2.2 [SRS_Gpt_12114] 每个定时器通道应可配置为使用不同的时钟源
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应使得每个定时器通道可在静态配置上使用不同的时钟源(如果硬件支持)。 |
| Rationale | 提供通用功能。 |
| Use Case | 时钟源在正常模式和省电模式下不同。 |
| Dependencies | -- |
| Supporting Material | -- |
⌋(RS_BRF_01904)
##### 5.1.2.3 [SRS_Gpt_13606] GPT 驱动应可对 GPT Predef Timers 的使能进行静态配置
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应使得能够静态配置哪些 GPT Predef Timers 已使能。 |
| Rationale | 当硬件原因无法支持时,可禁用 GPT Predef Timers。 |
| Use Case | 硬件不支持某一 GPT Predef Timer |
| Dependencies | -- |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01468)
#### 5.1.3 初始化
##### 5.1.3.1 [SRS_Gpt_12116] GPT 驱动应提供将定时器通道去初始化为上电复位状态的功能
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应提供将定时器通道去初始化为上电复位状态的功能。 |
| Rationale | 在进行有效初始化之前,需将所有硬件寄存器重置为相同状态。否则,上电复位后的初始化与模式变更后的初始化代码会不同。 |
| Use Case | 在变更省电模式的内部时钟频率后,可能需要以有效的预分频值重新初始化定时器模块。 |
| Dependencies | -- |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01056)
#### 5.1.4 正常操作
##### 5.1.4.1 [SRS_Gpt_12117] GPT 驱动应提供同步服务以读取每个定时器通道的当前定时器值
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应提供同步服务以读取每个定时器通道的当前定时器值。 |
| Rationale | -- |
| Use Case | 某些信号需要时间戳。 |
| Dependencies | -- |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01056)
##### 5.1.4.2 [SRS_Gpt_12128] GPT 驱动应提供以特定参数启动定时器的服务
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应提供以以下参数启动定时器的服务:<br>- timer channel<br>- time period(通知发生前的 tick 数) |
| Rationale | 基本功能。 |
| Use Case | -- |
| Dependencies | -- |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01056)
##### 5.1.4.3 [SRS_Gpt_12119] GPT 驱动应提供停止每个定时器通道的服务
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应提供停止每个定时器通道的服务。 |
| Rationale | 在没有控制的情况下,只要供电,定时器就会运行。 |
| Use Case | 必须在有效初始化或改变其值之前停止定时器,以避免与定时器值绑定的不期望活动。 |
| Dependencies | -- |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01056)
##### 5.1.4.4 [SRS_Gpt_12120] GPT 驱动应为每个通道提供时间周期到期时调用的通知
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应为每个通道提供时间周期到期时调用的通知。此回调应可按通道静态配置。 |
| Rationale | 定时器通常会被关联连接。 |
| Use Case | 1. 某项功能需要时间已过的信息。<br>2. 同步用户函数的另一动作。 |
| Dependencies | [SRS_Gpt_12128] 启动定时器 |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01064)
##### 5.1.4.5 [SRS_Gpt_12121] GPT 驱动应在运行时提供使能每通道通知函数调用的功能
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应提供在运行时使能每通道通知函数调用的功能。 |
| Rationale | 通知函数必须被显式声明。 |
| Use Case | 当定时器翻转时。翻转表示定时器达到最大值后从零重新开始,或达到预定义值后从零重新开始。 |
| Dependencies | -- |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01056, RS_BRF_01064)
##### 5.1.4.6 [SRS_Gpt_12122] GPT 驱动应在运行时提供禁用每通道通知函数调用的功能
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应提供在运行时禁用每通道通知函数调用的功能。 |
| Rationale | 如果不禁用,只要定时器活动,通知就会保持活动。 |
| Use Case | 当定时器翻转时(参见使能通知)。 |
| Dependencies | -- |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01056, RS_BRF_01064)
##### 5.1.4.7 [SRS_Gpt_13601] 当预定义的唤醒周期到期时,GPT 驱动应能够执行唤醒事件
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | 当预定义的唤醒周期到期时,GPT 驱动应能够执行唤醒事件。此特性仅在硬件支持时可用。 |
| Rationale | 降低功耗 |
| Use Case | 闪烁的 LED。ECU 在闪烁间隙被置入睡眠模式,当 LED 应再次点亮时被唤醒。 |
| Dependencies | -- |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01104)
##### 5.1.4.8 [SRS_Gpt_13602] GPT 驱动应提供使能/禁用单个定时器通道唤醒能力的服务
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应提供使能/禁用单个定时器通道唤醒能力的服务。该通道相关的通知应被使能/禁用。 |
| Rationale | 控制 MCU 的唤醒条件需要使能或禁用通知。 |
| Use Case | -- |
| Dependencies | [SRS_Gpt_13601] 唤醒功能 |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01056, RS_BRF_01104)
##### 5.1.4.9 [SRS_Gpt_13603] GPT 驱动应提供选择唤醒模式的服务
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应提供选择唤醒模式的服务:<br>- Normal mode(必须支持)<br>- Wake-up mode<br><br>在 normal mode 下,所有按配置可用的通知均可用。<br>在 Wake-up mode 下,仅那些会引起具备唤醒能力通知的通知可用。<br>所有其他通知被禁用,且当事件发生时不得使 MCU 退出 reduced power mode 状态(例如 idle、halt)。 |
| Rationale | 允许使能/禁用所有 ECU 唤醒不必需的通知。 |
| Use Case | 在 ECU 进入降功耗模式期间,MCU 的所有通知应被禁用,而不必在此期间禁用唤醒源。否则唤醒事件可能丢失。 |
| Dependencies | [SRS_Gpt_13601] 唤醒功能 |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01056, RS_BRF_01104, RS_BRF_01448, RS_BRF_01472)
##### 5.1.4.10 [SRS_Gpt_13607] GPT Predef Timers 应由 GPT 驱动自动启动/停止
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT Predef Timers 应由 GPT 驱动自动启动/停止。 |
| Rationale | 确保所有已使能的 GPT Predef Timers 尽可能持续运行(初始化/去初始化后、进入正常/睡眠模式后)。 |
| Use Case | 避免上层模块启动 GPT Predef Timers。 |
| Dependencies | -- |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01468)
##### 5.1.4.11 [SRS_Gpt_13608] GPT 驱动应提供同步服务以读取每个 GPT Predef Timer 的当前定时器值
| 项 | 值 |
| --- | --- |
| Type | Valid |
| Description | GPT 驱动应提供同步服务以读取每个 GPT Predef Timer 的当前定时器值。 |
| Rationale | 获取定时器值。 |
| Use Case | 时间测量、基于时间的状态机、超时监督、忙等待。 |
| Dependencies | -- |
| Supporting Material | -- |
⌋(RS_BRF_01904, RS_BRF_01056, RS_BRF_01468)
#### 5.1.5 故障操作
无。
---
## 6 需求追溯
| 上层需求 | 描述 | 由以下需求满足 |
| --- | --- | --- |
| RS_BRF_01056 | AUTOSAR BSW 模块应提供标准化接口 | SRS_Gpt_12116, SRS_Gpt_12117, SRS_Gpt_12119, SRS_Gpt_12121, SRS_Gpt_12122, SRS_Gpt_12128, SRS_Gpt_13602, SRS_Gpt_13603, SRS_Gpt_13608 |
| RS_BRF_01064 | AUTOSAR BSW 应提供回调函数以访问上层模块 | SRS_Gpt_12120, SRS_Gpt_12121, SRS_Gpt_12122 |
| RS_BRF_01104 | AUTOSAR 应支持 ECU 与总线的睡眠与唤醒 | SRS_Gpt_13601, SRS_Gpt_13602, SRS_Gpt_13603 |
| RS_BRF_01448 | AUTOSAR 服务应支持模式与状态管理 | SRS_Gpt_13603 |
| RS_BRF_01468 | AUTOSAR 服务应支持相对时间测量的时间服务 | SRS_Gpt_13604, SRS_Gpt_13605, SRS_Gpt_13606, SRS_Gpt_13607, SRS_Gpt_13608 |
| RS_BRF_01472 | AUTOSAR 应支持模式 | SRS_Gpt_13603 |
| RS_BRF_01904 | AUTOSAR 微控制器抽象应提供对硬件定时器的访问 | SRS_Gpt_12114, SRS_Gpt_12116, SRS_Gpt_12117, SRS_Gpt_12119, SRS_Gpt_12120, SRS_Gpt_12121, SRS_Gpt_12122, SRS_Gpt_12128, SRS_Gpt_12328, SRS_Gpt_12404, SRS_Gpt_13601, SRS_Gpt_13602, SRS_Gpt_13603, SRS_Gpt_13604, SRS_Gpt_13605, SRS_Gpt_13606, SRS_Gpt_13607, SRS_Gpt_13608 |
---
## 7 参考文献
### 7.1 AUTOSAR 交付物
- [DOC_LAYERED_ARCH] Layered Software Architecture, AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
- [AUTOSAR_GLOSSARY] Glossary, AUTOSAR_TR_Glossary.pdf
- [SRS_BSW_GENERAL] General Requirements on Basic Software Modules, AUTOSAR_SRS_BSWGeneral.pdf
- [SRS_BSW_SPAL] General Requirements on SPAL, AUTOSAR_SRS_SPALGeneral.pdf
- [TPS_STDT_0078] Software Standardization Template, AUTOSAR_TPS_StandardizationTemplate.pdf
---
## 翻译说明
- 本文档由 AUTOSAR CP 4.4.0 英文原文翻译。
- 模块缩写(GPT、MCAL、MCU、ECU、DIO、PORT、ADC、PWM、ICU、SPI、SPAL 等)保留原文。
- API 标识符、需求 ID(SRS_Gpt_xxxxx、RS_BRF_xxxxx、SRS_BSW_xxxxx)保留原文。
- AUTOSAR 方括号符 `⌈ ⌋` 保留原貌,以保持需求结构的可追溯性。
- 版权声明保持英文原文。
- 跨文档引用以英文文件名形式保留。
- GPT Predef Timer 在 AUTOSAR 中是特定的术语(预定义定时器),翻译时保留英文以便与规范保持一致。