通信栈类型规范(Specification of Communication Stack Types)

📄 文档 ID:050 🏷 类型:SWS(软件规范) 📅 版本:AUTOSAR CP 4.4.0 📑 页数:26 📌 状态:Final 🔗 原 PDF:AUTOSAR_SWS_CommunicationStackTypes.pdf

目录

1 介绍与功能概述(Introduction and functional overview)

本规范定义了 AUTOSAR 通信栈类型头文件。它包含所有在基础软件通信栈多个模块中复用的类型,以及所有与平台和编译器无关的基础软件模块类型。

强烈推荐在 AUTOSAR 社区内统一使用这些通信栈类型文件,以保证类型的唯一性,并避免从供应商 A 切换到供应商 B 时类型发生变化。

2 缩略语与术语(Acronyms and abbreviations)

仅在本文件局部使用、因而未收录到 AUTOSAR 术语表中的缩略语与术语,必须在本节"局部术语表"中列出。

缩略语说明
APIApplication Programming Interface(应用程序编程接口)
DCMDiagnostic Communication Manager(诊断通信管理器)
I-PDUInteraction Layer PDU(交互层 PDU)。在 AUTOSAR 中,交互层等同于"通信服务层"(Communication Services Layer)。
L-PDUData Link Layer PDU(数据链路层 PDU)。在 AUTOSAR 中,数据链路层等同于"通信硬件抽象层"和"微控制器抽象层"。
N-PDUNetwork Layer PDU(网络层 PDU)。在 AUTOSAR 中,网络层等同于"传输协议"。
OSEK/VDXOffene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug(汽车电子开放系统及其接口)。1993 年 5 月由德国汽车行业联合发起,目标是为车辆分布式控制单元提供开放式架构标准。初始成员:BMW、Bosch、DaimlerChrysler、Opel、Siemens、VW 及卡尔斯鲁厄大学 IIIT;1994 年法国 PSA 与 Renault 携 VDX(Vehicle Distributed eXecutive)方案加入。
PDUProtocol Data Unit(协议数据单元)
SDUService Data Unit(服务数据单元),即 PDU 的有效载荷
TPTransport Protocol(传输协议)
缩写说明
ComCommunication(通信)
EcuCECU Configuration(ECU 配置)
e.g.[lat.] exempli gratia = [eng.] for example(例如)
i.e.[lat.] it est = [eng.] that is(即)

3 相关文档(Related documentation)

3.1 输入文档

编号 / 标签文档名原 PDF
[1] GeneralSRSGeneral Requirements on Basic Software ModulesAUTOSAR_SRS_BSWGeneral.pdf
[2] SRSSPALGeneral Requirements on SPALAUTOSAR_SRS_SPALGeneral.pdf
[3] StdTypesSpecification of Standard TypesAUTOSAR_SWS_StandardTypes.pdf
[4] PltfTypesSpecification of Platform TypesAUTOSAR_SWS_PlatformTypes.pdf
[5] CompTypesSpecification of Compiler AbstractionAUTOSAR_SWS_CompilerAbstraction.pdf
[6] CANTPSpecification of CAN Transport LayerAUTOSAR_SWS_CANTransportLayer.pdf
[7] FlexRayTPSpecification of FlexRay Transport LayerAUTOSAR_SWS_FlexRayTransportLayer.pdf
[8] CANTRCVSpecification of CAN Transceiver DriverAUTOSAR_SWS_CANTransceiverDriver.pdf
[9] FRTRCVSpecification of FlexRay Transceiver DriverAUTOSAR_SWS_FlexRayTransceiverDriver.pdf
[10] BSMDTBasic Software Module Description TemplateAUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf
[11] BSWModuleList of Basic Software ModulesAUTOSAR_TR_BSWModuleList
[12] BSWGeneralGeneral Specification of Basic Software ModulesAUTOSAR_SWS_BSWGeneral.pdf

3.2 相关标准与规范

3.3 相关规范

AUTOSAR 提供了通用基础软件模块规范(参见 3.1 节 [12],SWS BSW General),该规范对通信栈类型同样适用。

因此,SWS BSW General 应被视为通信栈类型的附加且必需的规范

4 约束与假设(Constraints and assumptions)

4.1 限制(Limitations)

无限制。

4.2 对汽车领域的适用性(Applicability to car domains)

无限制。

4.3 对功能安全相关环境的适用性(Applicability to safety related environments)

无限制,因为本规范的主题是定义类型的头文件,它不包含或实现任何功能

5 软件架构(Software Architecture)

5.1 对其他模块的依赖(Dependencies to other modules)

通信栈类型头文件基于平台类型 [PltfTypes](PlatformTypes.h)和编译器头文件 [CompTypes](Compiler.h)定义通信类型。为防止头文件被多次包含,通信栈头文件包含标准类型头文件 [StdTypes],而后者已经包含了上述两个文件。

6 需求追溯(Requirements traceability)

本规范引用了大量 SRS 需求,绝大多数通过 SWS_Comtype_NA_0SWS_Comtype_NA_5 声明"不适用"(详见 第 11 节)。

SRS 需求由以下满足
配置类相关(无配置参数):SRS_BSW_00158SRS_BSW_00159SRS_BSW_00160SRS_BSW_00167SRS_BSW_00171SRS_BSW_00342SRS_BSW_00343SRS_BSW_00344SRS_BSW_00345SRS_BSW_00346SRS_BSW_00380SRS_BSW_00381SRS_BSW_00383SRS_BSW_00388SRS_BSW_00389SRS_BSW_00390SRS_BSW_00392SRS_BSW_00393SRS_BSW_00394SRS_BSW_00395SRS_BSW_00396SRS_BSW_00397SRS_BSW_00398SRS_BSW_00399SRS_BSW_00400SRS_BSW_00401SRS_BSW_00404SRS_BSW_00405SRS_BSW_00408SRS_BSW_00412SWS_Comtype_NA_0
SW-C 依赖相关:SRS_BSW_00168SRS_BSW_00170SRS_BSW_00423SWS_Comtype_NA_1
中断/驱动/OS 相关(无中断实现):SRS_BSW_00005SRS_BSW_00101SRS_BSW_00161SRS_BSW_00162SRS_BSW_00164SRS_BSW_00172SRS_BSW_00314SRS_BSW_00325SRS_BSW_00347SRS_BSW_00361SRS_BSW_00375SRS_BSW_00406SRS_BSW_00410SRS_BSW_00413SRS_BSW_00416SRS_BSW_00424SRS_BSW_00425SRS_BSW_00426SRS_BSW_00427SRS_BSW_00428SRS_BSW_00429SWS_Comtype_NA_2
命名/类型/API 等通用规范:SRS_BSW_00006SRS_BSW_00007SRS_BSW_00009SRS_BSW_00010SRS_BSW_00300SRS_BSW_00301SRS_BSW_00302SRS_BSW_00304SRS_BSW_00306SRS_BSW_00307SRS_BSW_00308SRS_BSW_00309SRS_BSW_00310SRS_BSW_00312SRS_BSW_00321SRS_BSW_00323SRS_BSW_00330SRS_BSW_00331SRS_BSW_00333SRS_BSW_00334SRS_BSW_00335SRS_BSW_00341SRS_BSW_00348SRS_BSW_00353SRS_BSW_00357SRS_BSW_00358SRS_BSW_00359SRS_BSW_00360SRS_BSW_00371SRS_BSW_00373SRS_BSW_00374SRS_BSW_00377SRS_BSW_00378SRS_BSW_00379SRS_BSW_00407SRS_BSW_00411SRS_BSW_00414SRS_BSW_00415SRS_BSW_00432SRS_BSW_00433SRS_BSW_00328SWS_Comtype_NA_3
关闭功能:SRS_BSW_00336SWS_Comtype_NA_4
错误处理:SRS_BSW_00327SRS_BSW_00337SRS_BSW_00339SRS_BSW_00350SRS_BSW_00369SRS_BSW_00385SRS_BSW_00386SRS_BSW_00409SRS_BSW_00417SRS_BSW_00422SWS_Comtype_NA_5

7 功能规范(Functional specification)

7.1 通用问题(General issues)

[SWS_Comtype_00004]

本文件不得添加任何项目或供应商特定的扩展。任何扩展都将使 AUTOSAR 一致性失效。

[SWS_Comtype_00015]

由于许多通信栈类型依赖于具体的 ECU,本文件应根据每个 ECU 的具体配置独立生成

[SWS_Comtype_00030]

PduIdTypePduLengthType 的取值应当分别派生自 EcuC 虚拟层中 EcuCPduCollection 容器的 PduIdTypeEnumPduLengthTypeEnum

8 API 规范(API specification)

8.1 类型定义(Type definitions)

8.1.1 PduIdType

[SWS_COMTYPE_00005]

名称(Name)PduIdType
类型(Type)uint8, uint16
取值(Range)0...<PduIdmax> —— 从零开始的整数。
该全局类型的大小取决于一个软件模块内使用的最大 PDU 数。此参数由生成工具根据 EcuC 虚拟层中配置的值生成,并写入 ComStack_Cfg.h 文件。
示例
· 若模块处理的 PDU 超过 256 个,可设为 uint8
· 若至少一个模块处理超过 256 个 PDU,则必须全局设为 uint16
说明(Description)该类型在整个 AUTOSAR 通信栈中使用,不包含总线驱动。
可获取于(Available via)ComStackTypes.h

[SWS_Comtype_00006]

此类型的变量用作软件模块(或其集合)内 PDU 的唯一标识符,也用于两个软件模块之间的交互——此时使用目标模块对应的 PduId 进行引用。

[SWS_Comtype_00007]

为支持在软件模块内进行表索引,此类型的变量应当从零开始且连续。模块内可以有多个 PduId 范围,每种操作类型(如发送与接收)对应一个范围。

[SWS_Comtype_00014]

PduIdmax(一个 PduId 范围的最大值)为该模块中相应操作类型所处理的 PDU 数减 1。

8.1.2 PduLengthType

[SWS_COMTYPE_00008]

名称(Name)PduLengthType
类型(Type)uint8, uint16, uint32
取值(Range)0...<PduLengthmax> —— 从零开始的整数。
该全局类型的大小取决于一个 ECU 所发送 PDU 的最大长度。此参数由生成工具根据 EcuC 虚拟层中配置的值生成,并写入 ComStack_Cfg.h 文件。
示例
· 若不使用分段传输,长度取决于底层通信系统单帧的最大有效载荷(FlexRay 最大为 255,因此使用 uint8)。
· 若使用分段传输,则取决于分段 N-PDU 的最大长度(通常使用 uint16)。
说明(Description)该类型应当在一个 ECU 的整个 AUTOSAR 通信栈中使用,不包含总线驱动。
可获取于(Available via)ComStackTypes.h

[SWS_Comtype_00010]

此类型的变量用作 PDU 的长度信息。长度信息以字节数给出。

[SWS_Comtype_00017]

PduLengthmax(PDU 的最大长度)是该 ECU 所发送最大(可能分段的)PDU 的长度。

8.1.3 PduInfoType

[SWS_COMTYPE_00011]

名称(Name)PduInfoType
类型(Type)Structure(结构体)
元素(Element)uint8* SduDataPtr     指向 PDU 的 SDU(即有效载荷数据)的指针。该指针的类型取决于编译时使用的内存模型。
uint8* MetaDataPtr     指向 PDU 的元数据(例如 CAN ID、socket ID、诊断地址)的指针,由一系列元数据项组成。每个 PDU 的元数据项的长度和类型在配置时静态确定。超过 8 位的元数据项使用平台字节序。
PduLengthType SduLength     SDU 的字节长度。
说明(Description)此类型的变量应当用于存储任意类型 PDU 的基本信息,即:一个指向其 SDU(有效载荷)的指针变量、一个指向 PDU 元数据的指针、以及 SDU 对应的字节长度。
可获取于(Available via)ComStackTypes.h

8.1.4 PNCHandleType

[SWS_COMTYPE_00036]

名称(Name)PNCHandleType
类型(Type)uint8
说明(Description)用于存储部分网络(Partial Network)集群的标识符。
可获取于(Available via)ComStackTypes.h

8.1.5 TPParameterType

[SWS_COMTYPE_00031]

名称(Name)TPParameterType
类型(Type)Enumeration(枚举)
取值(Range)TP_STMIN     0x00     Separation Time(分隔时间)
TP_BS     0x01     Block Size(块大小)
TP_BC     0x02     FlexRay 传输协议模块中使用的带宽控制参数
说明(Description)指定要修改其值的参数(BS 或 STmin)。
可获取于(Available via)ComStackTypes.h

8.1.6 BufReq_ReturnType

[SWS_COMTYPE_00012]

名称(Name)BufReq_ReturnType
类型(Type)Enumeration(枚举)
取值(Range)BUFREQ_OK     0x00     缓冲区请求成功完成。该状态的取值必须为 0。
BUFREQ_E_NOT_OK     0x01     缓冲区请求不成功,无法访问缓冲区。该状态的取值必须为 1。
BUFREQ_E_BUSY     0x02     暂时无可用缓冲区。由请求方在一段时间后重试。该状态的取值必须为 2。
BUFREQ_E_OVFL     0x03     无法提供所需长度的缓冲区。该状态的取值必须为 3。
说明(Description)此类型的变量应当用于存储缓冲区请求的结果。
可获取于(Available via)ComStackTypes.h

8.1.7 TpDataStateType

[SWS_COMTYPE_00027]

名称(Name)TpDataStateType
类型(Type)Enumeration(枚举)
取值(Range)TP_DATACONF     0x00     表示到目前为止已复制的数据都已确认,可以从 TP 缓冲区移除。本次 API 调用复制的数据除外,将在之后确认。
TP_DATARETRY     0x01     表示本次 API 调用应重新复制已复制的数据以从错误中恢复。此时 TxTpDataCnt 指定本次 API 调用要复制的第一个字节的偏移。
TP_CONFPENDING     0x02     表示之前复制的数据必须保留在 TP 中。
说明(Description)此类型的变量应当用于存储 TP 缓冲区的状态。
可获取于(Available via)ComStackTypes.h

8.1.8 RetryInfoType

[SWS_COMTYPE_00037]

名称(Name)RetryInfoType
类型(Type)Structure(结构体)
元素(Element)TpDataStateType TpDataState     用于存储 TP 缓冲区状态的枚举类型。
PduLengthType TxTpDataCnt     从当前位置开始的偏移,标识需要重传的字节数。
说明(Description)此类型的变量应当用于存储 TP 缓冲区处理的相关信息。
可获取于(Available via)ComStackTypes.h

8.1.9 NetworkHandleType

[SWS_COMTYPE_00038]

名称(Name)NetworkHandleType
种类(Kind)Type(类型)
派生自(Derived from)uint8
说明(Description)NetworkHandleType 类型的变量应当用于存储通信通道的标识符。
取值(Range)0..255     从零开始的整数
变化(Variation)
可获取于(Available via)ComStackTypes.h

8.1.10 IcomConfigIdType

[SWS_COMTYPE_00039]

名称(Name)IcomConfigIdType
类型(Type)uint8
说明(Description)IcomConfigIdType 定义配置 ID。ID 为 0 表示默认配置。ID 大于 0 应当用于识别"拟网络(Pretended Networking)"的一种配置。允许存在多种配置。
可获取于(Available via)ComStackTypes.h

8.1.11 IcomSwitch_ErrorType

[SWS_COMTYPE_00040]

名称(Name)IcomSwitch_ErrorType
类型(Type)Enumeration(枚举)
取值(Range)ICOM_SWITCH_E_OK     0x00     拟网络的激活成功。
ICOM_SWITCH_E_FAILED     0x01     拟网络的激活失败。
说明(Description)IcomSwitch_ErrorType 定义激活或去激活"拟网络"时可能发生的错误。
可获取于(Available via)ComStackTypes.h

8.2 函数定义(Function definitions)

不适用。

9 时序图(Sequence diagrams)

不适用。

10 配置规范(Configuration specification)

10.1 发布参数(Published parameters)

详细信息参见 SWS_BSWGeneral [12] 的 10.3 节"发布信息"。

11 不适用的需求(Not applicable requirements)

[SWS_Comtype_NA_0]

本条目引用的需求不适用,因为 ComStack_Types 既无可配置参数,也未引用其他模块的配置参数。

SRS_BSW_00344SRS_BSW_00404SRS_BSW_00405SRS_BSW_00345SRS_BSW_00159SRS_BSW_00167SRS_BSW_00171SRS_BSW_00380SRS_BSW_00381SRS_BSW_00412SRS_BSW_00383SRS_BSW_00388SRS_BSW_00389SRS_BSW_00390SRS_BSW_00392SRS_BSW_00393SRS_BSW_00394SRS_BSW_00395SRS_BSW_00396SRS_BSW_00397SRS_BSW_00398SRS_BSW_00399SRS_BSW_00400SRS_BSW_00342SRS_BSW_00343SRS_BSW_00160SRS_BSW_00408SRS_BSW_00346SRS_BSW_00158SRS_BSW_00401

[SWS_Comtype_NA_1]

本条目引用的需求不适用,因为 ComStack_Types 与软件组件(SW-C)之间没有依赖关系

SRS_BSW_00170SRS_BSW_00168SRS_BSW_00423

[SWS_Comtype_NA_2]

本条目引用的需求不适用,因为 ComStack_Types 不实现任何中断,不是驱动或 MCAL 抽象层,也未直接访问 OS。

SRS_BSW_00375SRS_BSW_00101SRS_BSW_00406SRS_BSW_00416SRS_BSW_00424SRS_BSW_00425SRS_BSW_00426SRS_BSW_00427SRS_BSW_00428SRS_BSW_00429SRS_BSW_00161SRS_BSW_00162SRS_BSW_00005SRS_BSW_00164SRS_BSW_00325SRS_BSW_00413SRS_BSW_00347SRS_BSW_00314SRS_BSW_00410SRS_BSW_00361SRS_BSW_00172

[SWS_Comtype_NA_3]

本条目引用的需求不适用,因为 ComStack_Types 不实现版本检查、主函数、API、标准类型等。

SRS_BSW_00323SRS_BSW_00415SRS_BSW_00007SRS_BSW_00300SRS_BSW_00307SRS_BSW_00310SRS_BSW_00373SRS_BSW_00335SRS_BSW_00411SRS_BSW_00348SRS_BSW_00353SRS_BSW_00301SRS_BSW_00302SRS_BSW_00328SRS_BSW_00312SRS_BSW_00006SRS_BSW_00357SRS_BSW_00377SRS_BSW_00304SRS_BSW_00378SRS_BSW_00306SRS_BSW_00308SRS_BSW_00309SRS_BSW_00371SRS_BSW_00358SRS_BSW_00407SRS_BSW_00432SRS_BSW_00433SRS_BSW_00414SRS_BSW_00359SRS_BSW_00360SRS_BSW_00330SRS_BSW_00331SRS_BSW_00009SRS_BSW_00010SRS_BSW_00333SRS_BSW_00374SRS_BSW_00379SRS_BSW_00321SRS_BSW_00341SRS_BSW_00334

[SWS_Comtype_NA_4]

本条目引用的需求不适用,因为 ComStack_Types 不包含任何关闭功能。

SRS_BSW_00336

[SWS_Comtype_NA_5]

本条目引用的需求不适用,因为 ComStack_Types 不实现开发错误和生产错误。

SRS_BSW_00337SRS_BSW_00369SRS_BSW_00339SRS_BSW_00422SRS_BSW_00417SRS_BSW_00409SRS_BSW_00385SRS_BSW_00386SRS_BSW_00327SRS_BSW_00350

📋 校对记录

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