1 介绍与功能概述(Introduction and functional overview)
本规范定义了 AUTOSAR 标准类型头文件。它包含所有在多个基础软件模块中复用、且与平台和编译器无关的类型。
强烈推荐在 AUTOSAR 社区内统一使用该标准类型文件,以保证类型的唯一性,并避免从供应商 A 切换到供应商 B 时类型发生变化。
2 缩略语与术语(Acronyms and abbreviations)
仅在本文件局部使用、因而未收录到 AUTOSAR 术语表中的缩略语与术语,必须在本节"局部术语表"中列出。
| 缩略语 | 说明 |
|---|---|
| API | Application Programming Interface(应用程序编程接口) |
| OSEK/VDX | Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug(汽车电子开放系统及其接口) |
| 缩写 | 说明 |
|---|---|
| STD | Standard(标准) |
3 相关文档(Related documentation)
3.1 输入文档
| 编号 | 文档名 | 原 PDF |
|---|---|---|
| [1] | General Requirements on Basic Software Modules | AUTOSAR_SRS_BSWGeneral.pdf |
| [2] | General Requirements on SPAL | AUTOSAR_SRS_SPALGeneral.pdf |
| [3] | Specification of RTE Software | AUTOSAR_SWS_RTE.pdf |
| [4] | Basic Software Module Description Template | AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf |
| [5] | List of Basic Software Modules | AUTOSAR_TR_BSWModuleList |
| [6] | General Specification of Basic Software Modules | AUTOSAR_SWS_BSWGeneral.pdf |
3.2 相关标准与规范
| 编号 | 标准 |
|---|---|
| [7] | OSEK/VDX Operating System, ISO 17356-3: OS |
| [8] | ISO/IEC 9899:1990 Programming Language – C |
3.3 相关规范
AUTOSAR 提供了通用基础软件模块规范 [6](SWS BSW General),该规范对标准类型同样适用。
因此,SWS BSW General 应被视为标准类型的附加且必需的规范。
4 约束与假设(Constraints and assumptions)
4.1 限制(Limitations)
无限制。
4.2 对汽车领域的适用性(Applicability to car domains)
本规范中定义的许多符号(如 OK、NOT_OK、ON、OFF)在遗留软件中已经定义并使用。这些"现有符号被重定义"的冲突预期会出现,但因以下原因而被忽略:
- AUTOSAR 必须保持与遗留 ECU 的网络兼容性,但不必保持与遗留软件的软件架构兼容性。许多类型定义和使用方式与遗留软件完全相同,遗留软件可继续使用这些符号,只需移除其原有定义并改用本文件的定义即可。
5 软件架构(Software Architecture)
5.1 对其他模块的依赖(Dependencies to other modules)
无。
5.2 文件结构(File structure)
包含结构在属于 COM 栈的 BSW 模块和其他模块之间有所不同:
- 被视为 COM 栈一部分的 BSW 模块应当包含
ComStackTypes.h; - 其他模块应当包含
StandardTypes.h。
5.2.1 通信相关 BSW 模块
[SWS_Std_00016]
包含文件的结构应当(shall)如下:
ComStackTypes.h应当包含StandardTypes.h;- 与通信相关的基础软件模块应当包含
ComStackTypes.h。
参考:SRS_BSW_00024
6 需求追溯(Requirements traceability)
下表列出本规范涉及的 SRS 需求及其满足情况。本文档共引用了约 100+ SRS 需求条目,绝大部分通过 SWS_Std_00999 声明"不适用"(见 第 11 节)。实际适用的 SRS 需求包括:
| SRS 需求 | 描述 | 由以下满足 |
|---|---|---|
SRS_BSW_00004 | 所有基础软件模块应当对所包含的头文件版本进行预处理检查 | SWS_Std_00015 |
SRS_BSW_00024 | — | SWS_Std_00016 |
SRS_BSW_00059 | — | SWS_Std_00014 |
SRS_BSW_00348 | 所有 AUTOSAR 标准类型与常量应当放置和组织在标准类型头文件中 | SWS_Std_00007、SWS_Std_00010、SWS_Std_00013 |
SRS_BSW_00357 | API 调用成功/失败应当使用一个标准返回类型 | SWS_Std_00005、SWS_Std_00006、SWS_Std_00011 |
SRS_BSW_00441 | 类型、宏、函数的命名约定 | SWS_Std_00011 |
| 其余 ~100 条 | 由 SWS_Std_00999 声明"不适用" | SWS_Std_00999 |
提示:完整 SRS 需求追溯表共 ~100 项,本译文仅展示实际生效的条目。其余条目均通过 SWS_Std_00999("不适用"声明)集中处理,详见 第 11 节。
7 功能规范(Functional specification)
7.1 通用问题(General issues)
[SWS_Std_00004]
本文件不得(shall not)添加任何项目或供应商特定的扩展。任何扩展都将使 AUTOSAR 一致性失效。
参考:SRS_BSW_00161
[SWS_Std_00014]
标准类型头文件应当防止被多次包含:
#ifndef STD_TYPES_H
#define STD_TYPES_H
..
/*
* Contents of file
*/
..
#endif /* STD_TYPES_H */
参考:SRS_BSW_00059
8 API 规范(API specification)
8.1 类型定义(Type definitions)
8.1.1 Std_ReturnType
[SWS_Std_00005]
| 名称(Name) | Std_ReturnType |
|---|---|
| 种类(Kind) | Type(类型) |
| 派生自(Derived from) | uint8 |
| 说明(Description) | 该类型可用作 RTE 与 BSW 模块之间共享的标准 API 返回类型。应当按下述方式定义:typedef uint8 Std_ReturnType; |
| 取值范围(Range) | E_OK 0 见 8.2.1,SWS_Std_00006 |
E_NOT_OK 1 见 8.2.1,SWS_Std_00006 | |
| 0x02-0x3F 2 留给用户自定义错误使用 | |
| 变化(Variation) | — |
| 可获取于(Available via) | StandardTypes.h |
参考:SRS_BSW_00357
[SWS_Std_00011]
Std_ReturnType 一般使用值 E_OK 或 E_NOT_OK。如果这两个返回值不够用,可使用低 6 位定义用户自定义值。
用户自定义值的命名应当按 SRS_BSW_00441 的要求使用模块前缀。
Std_ReturnType 的布局应与 RTE 规范一致。Bit 7 和 Bit 8 由 RTE 规范保留和定义。
参考:SRS_BSW_00357, SRS_BSW_00441
8.1.2 Std_VersionInfoType
[SWS_Std_00015]
| 名称(Name) | Std_VersionInfoType |
|---|---|
| 类型(Type) | Structure(结构体) |
| 元素(Element) | uint16 vendorID |
uint16 moduleID | |
uint8 sw_major_version | |
uint8 sw_minor_version | |
uint8 sw_patch_version | |
| 说明(Description) | 该类型应当用于通过 <Module name>_GetVersionInfo() 函数请求 BSW 模块的版本信息。 |
| 可获取于(Available via) | StandardTypes.h |
参考:SRS_BSW_00004
8.2 符号定义(Symbol definitions)
8.2.1 E_OK、E_NOT_OK
[SWS_Std_00006]
| 名称(Name) | E_OK、E_NOT_OK |
|---|---|
| 类型(Type) | Enumeration(枚举) |
| 取值(Range) | E_OK 0x00u — |
E_NOT_OK 0x01u — | |
| 说明(Description) | 由于 E_OK 已在 OSEK 中定义,该符号需共享使用。为避免命名冲突和重定义问题,符号应按下述方式定义(已通过实现审批): |
| 可获取于(Available via) | StandardTypes.h |
参考:SRS_BSW_00357
8.2.2 STD_HIGH、STD_LOW
[SWS_Std_00007]
| 名称(Name) | STD_HIGH、STD_LOW |
|---|---|
| 类型(Type) | Enumeration(枚举) |
| 取值(Range) | STD_LOW 0x00u |
STD_HIGH 0x01u | |
| 说明(Description) | STD_HIGH 和 STD_LOW 应当按下述方式定义: |
| 可获取于(Available via) | StandardTypes.h |
参考:SRS_BSW_00348
8.2.3 STD_ACTIVE、STD_IDLE
[SWS_Std_00013]
| 名称(Name) | STD_ACTIVE、STD_IDLE |
|---|---|
| 类型(Type) | Enumeration(枚举) |
| 取值(Range) | STD_IDLE 0x00u |
STD_ACTIVE 0x01u | |
| 说明(Description) | STD_ACTIVE 和 STD_IDLE 应当按下述方式定义: |
| 可获取于(Available via) | StandardTypes.h |
参考:SRS_BSW_00348
8.2.4 STD_ON、STD_OFF
[SWS_Std_00010]
| 名称(Name) | STD_ON、STD_OFF |
|---|---|
| 类型(Type) | Enumeration(枚举) |
| 取值(Range) | STD_OFF 0x00u |
STD_ON 0x01u | |
| 说明(Description) | STD_ON 和 STD_OFF 应当按下述方式定义: |
| 可获取于(Available via) | StandardTypes.h |
参考:SRS_BSW_00348
8.3 函数定义(Function definitions)
不适用。
9 时序图(Sequence diagrams)
不适用。
10 配置规范(Configuration specification)
不适用。
11 不适用的需求(Not applicable requirements)
[SWS_Std_00999]
以下需求对本规范不适用:
SRS_BSW_00300、SRS_BSW_00301、SRS_BSW_00302、SRS_BSW_00304、SRS_BSW_00305、SRS_BSW_00306、SRS_BSW_00307、SRS_BSW_00308、SRS_BSW_00309、SRS_BSW_00310、SRS_BSW_00312、SRS_BSW_00314、SRS_BSW_00321、SRS_BSW_00325、SRS_BSW_00327、SRS_BSW_00330、SRS_BSW_00331、SRS_BSW_00333、SRS_BSW_00334、SRS_BSW_00335、SRS_BSW_00342、SRS_BSW_00343、SRS_BSW_00341、SRS_BSW_00346、SRS_BSW_00347、SRS_BSW_00350、SRS_BSW_00353、SRS_BSW_00358、SRS_BSW_00359、SRS_BSW_00360、SRS_BSW_00361、SRS_BSW_00371、SRS_BSW_00373、SRS_BSW_00374、SRS_BSW_00377、SRS_BSW_00378、SRS_BSW_00379、SRS_BSW_00401、SRS_BSW_00408、SRS_BSW_00410、SRS_BSW_00411、SRS_BSW_00413、SRS_BSW_00414、SRS_BSW_00415、SRS_BSW_00005、SRS_BSW_00006、SRS_BSW_00007、SRS_BSW_00009、SRS_BSW_00010、SRS_BSW_00158、SRS_BSW_00160、SRS_BSW_00161、SRS_BSW_00162、SRS_BSW_00164、SRS_BSW_00172、SRS_BSW_00344、SRS_BSW_00404、SRS_BSW_00405、SRS_BSW_00345、SRS_BSW_00159、SRS_BSW_00167、SRS_BSW_00171、SRS_BSW_00170、SRS_BSW_00380、SRS_BSW_00419、SRS_BSW_00381、SRS_BSW_00412、SRS_BSW_00383、SRS_BSW_00388、SRS_BSW_00389、SRS_BSW_00390、SRS_BSW_00392、SRS_BSW_00393、SRS_BSW_00394、SRS_BSW_00395、SRS_BSW_00396、SRS_BSW_00397、SRS_BSW_00398、SRS_BSW_00399、SRS_BSW_00400、SRS_BSW_00375、SRS_BSW_00101、SRS_BSW_00416、SRS_BSW_00406、SRS_BSW_00168、SRS_BSW_00407、SRS_BSW_00423、SRS_BSW_00424、SRS_BSW_00425、SRS_BSW_00426、SRS_BSW_00427、SRS_BSW_00428、SRS_BSW_00429、SRS_BSW_00432、SRS_BSW_00433、SRS_BSW_00336、SRS_BSW_00337、SRS_BSW_00369、SRS_BSW_00339、SRS_BSW_00422、SRS_BSW_00417、SRS_BSW_00323、SRS_BSW_00409、SRS_BSW_00385、SRS_BSW_00386、SRS_BSW_00452、SRS_BSW_00473、SRS_BSW_00458、SRS_BSW_00466。