# 通信模块规范 (Specification of Communication) > **AUTOSAR CP Release 4.4.0** > **文档 ID 015: AUTOSAR_SWS_COM** ## 元信息 | 项目 | 内容 | | --- | --- | | 文档标题 | 通信(COM)模块规范 | | 文档所有者 | AUTOSAR | | 文档责任方 | AUTOSAR | | 文档标识号 | 015 | | 文档状态 | Final | | 所属 AUTOSAR 标准 | Classic Platform | | 所属标准版本 | 4.4.0 | ## 文档变更历史 | 日期 | 版本 | 变更方 | 变更说明 | | --- | --- | --- | --- | | 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 大型 COM 集成,部分参数清理,细微更正 | | 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 | 信号触发增强 | | 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 网关增强 | | 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 滤波器增强 | | 2013-03-15 | 4.1.1 | AUTOSAR Administration | I-PDU 计数器添加 | | 2011-12-22 | 4.0.3 | AUTOSAR Administration | 复制添加 | | 2010-09-30 | 3.1.5 | 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 | 初始发布 | --- ## 目录 - [1. 介绍与功能概述](#1-介绍与功能概述) - [2. 缩略语与定义](#2-缩略语与定义) - [3. 相关文档](#3-相关文档) - [4. 约束与假设](#4-约束与假设) - [5. 与其他模块的依赖](#5-与其他模块的依赖) - [6. 需求可追溯性](#6-需求可追溯性) - [7. 功能规范](#7-功能规范) - [8. API 规范](#8-api-规范) - [9. 时序图](#9-时序图) - [10. 配置规范](#10-配置规范) - [11. 不适用需求](#11-不适用需求) - [12. 附录 A](#12-附录-a) --- ## 1. 介绍与功能概述 本规范是 AUTOSAR COM 模块软件规范。基于 AUTOSAR COM SRS [7]。规定 AUTOSAR COM SRS 需求如何实现。 在 AUTOSAR 分层架构中,AUTOSAR COM 模块位于 RTE 和 PDU 路由器之间 [1]。 ### 1.1 主要功能 - 为 RTE 提供面向信号的数据接口 - 将 AUTOSAR 信号打包到 I-PDU 中以便发送 - 解包接收到的 I-PDU 并将接收信号提供给 RTE - 从接收 I-PDU 路由信号到要发送的 I-PDU(信号网关) - 从接收 I-PDU 路由信号组到要发送的 I-PDU - 通信发送控制(I-PDU 组的启动/停止) - 发送请求的复制 - 保证发送 I-PDU 之间的最小间距 - 接收信号监视(信号超时) - 接收信号过滤机制 - 多种通知机制 - 提供初始值和更新指示 - 字节序转换 - 符号扩展 - 每 I-PDU 支持两种不同发送模式 - 基于信号的网关 - 支持大型和动态长度数据类型 - 支持 I-PDU 计数器和 I-PDU 复制 --- ## 2. 缩略语与定义 ### 2.1 缩略语与缩写 | 缩略语 | 描述 | | --- | --- | | API | Application Programming Interface | | AUTOSAR | Automotive Open System Architecture | | BSW | Basic Software | | CDD | Complex Device Driver | | COM | Communication | | DET | Default Error Tracer | | DEM | Diagnostic Event Manager | | DLC | Data Length Code | | ECU | Electronic Control Unit | | FIFO | First In First Out | | HW | Hardware | | I-PDU | Interaction Layer PDU | | I-PDU Counter | I-PDU 计数器 | | ISR | Interrupt Service Routine | | L-PDU | Data Link Layer PDU | | MDT | Minimum Delay Time | | MIB | Maximum Information Bus | | MSB / LSB | Most/Least Significant Bit | | N-PDU | Network Layer PDU | | OS | Operating System | | OSI | Open System Interconnection | | PDU | Protocol Data Unit | | PduR | PDU Router | | RTE | Runtime Environment | | RX | Reception | | SDU | Service Data Unit | | SRS | Software Requirement Specification | | SW-C | Software Component | | SWS | Software Specification | | TMS | Transmission Mode Selection | | TX | Transmission | ### 2.2 定义 | 术语 | 定义 | | --- | --- | | Signal | 信号:由配置定义的数据元素 | | Signal Group | 信号组:多个信号的集合 | | Group Signal | 组信号:信号组的成员 | | I-PDU | 包含信号的协议数据单元 | | Filter | 过滤器:控制接收信号通知 | | Notification | 通知:RTE 接收信号到达的方式 | --- ## 3. 相关文档 ### 3.1 输入文档 - [1] Layered Software Architecture - [2] General Requirements on Basic Software Modules - [3] Specification of Communication Stack Types - [4] Specification of PDU Router - [5] Specification of Default Error Tracer - [6] Specification of ECU Configuration - [7] Requirements on Communication - [8] Basic Software Module Description Template - [9] Specification of RTE - [10] List of Basic Software Modules - [11] Specification of Memory Mapping - [12] Specification of Standard Types - [13] Specification of Platform Types - [14] Specification of Diagnostic Event Manager - [15] Specification of LDCom - [16] General Specification of Basic Software Modules - [17] Volcano Network Architect 文档 --- ## 4. 约束与假设 ### 4.1 限制 - 一个 I-PDU 中所有信号必须有相同的字节序属性 - 多播 I-PDU 不可在 COM 中处理 ### 4.2 适用车域 适用于所有车域。 --- ## 5. 与其他模块的依赖 - **RTE**:COM 上层主要客户端 - **PDU Router**:下层路由 - **DET**:错误上报 - **DEM**:生产错误上报 --- ## 6. 需求可追溯性 | 需求 ID | 描述 | 满足者 | | --- | --- | --- | | SRS_BSW_00101 | 初始化 | SWS_Com_00128 | | SRS_BSW_00407 | 版本信息 | SWS_Com_00407 | | SRS_Com_02000 | 信号编/解码 | SWS_Com_00301 | | SRS_Com_02006 | 信号网关 | SWS_Com_00310 | | SRS_Com_02007 | TMS | SWS_Com_00466 | | SRS_Com_02060 | 死期监视 | SWS_Com_00290 | > **[摘要]** 完整需求追溯表见原文 PDF 第 18-26 页。 --- ## 7. 功能规范 ### 7.1 概述 AUTOSAR COM 模块是 AUTOSAR 通信栈的核心,处理信号到 I-PDU 的打包/解包和路由。 ### 7.2 静态信号定义 #### 7.2.1 信号属性 每个 COM 信号有: - ID - 起始位 (start position) - 长度 - 字节序 (BE/LE) - 符号扩展 - 初始值 - 过滤器(可选) - 网关属性(可选) - 死期监视(可选) #### 7.2.2 信号值 信号可为基础类型(BOOLEAN、UINT8 ~ UINT64、SINT8 ~ SINT64、FLOAT32、FLOAT64)或动态/静态数组、字符串等。 #### 7.2.3 字节序转换与符号扩展 - 主机字节序(MSB/LSB) ↔ 总线字节序 - 符号扩展:小宽度有符号到大宽度 #### 7.2.4 过滤 COM 提供 9 种过滤算法: - ALWAYS, NEVER, MASKED_NEW_EQUALS_X, MASKED_NEW_DIFFERS_X - MASKED_NEW_DIFFERS_MASKED_OLD, NEW_IS_OUTSIDE/INSIDE, ONE_EVERY_N #### 7.2.5 信号网关 COM 信号网关:从一个 I-PDU 接收信号 → 路由到另一个 I-PDU 发送。 ### 7.3 正常操作 #### 7.3.1 启动行为 - **[SWS_Com_00128]** ⌈Com_Init 应初始化所有 COM 内部变量。⌋ #### 7.3.2 反初始化 - Com_DeInit 关闭所有 I-PDU 组。 #### 7.3.3 通信模式 - **DIRECT**:信号 update 立即触发发送 - **CYCLIC**:周期发送 - **DIRECT+CYCLIC** (MIXED):立即 + 周期 - **NONE**:被触发时才发送 - **TX_MODE_TRUE / TX_MODE_FALSE**:基于 TMS(发送模式选择) ##### TMS (Transmission Mode Selection) 基于一个或多个信号条件选择 TRUE 或 FALSE 模式。 #### 7.3.4 信号无效化 通过 invalid value 标识信号无效,RTE 接收时收到无效通知。 #### 7.3.5 I-PDU 处理 - **[SWS_Com_00466]** ⌈COM 应根据 TMS 选择 TX_MODE_TRUE 或 TX_MODE_FALSE。⌋ #### 7.3.6 死期监视(Deadline Monitoring) - **[SWS_Com_00290]** ⌈COM 应监视接收信号超时。⌋ - 超时通知 RTE。 #### 7.3.7 通知处理 - Tx 确认通知 (TxConfirmation) - Rx 指示通知 (RxIndication) - TimeOut 通知 ### 7.4 信号组 — 复杂数据类型 #### 7.4.1 初始化 信号组通过 ComSignalGroup 配置。 #### 7.4.2 发送 - Com_SendSignalGroup → Com_SendSignal(对每个 group signal) - Com_SendSignalGroupArray 提供 uint8 数组 #### 7.4.3 接收 - Com_ReceiveSignalGroup - Com_ReceiveSignalGroupArray #### 7.4.4 通知 信号组级别的 Tx/Rx 通知。 #### 7.4.5 信号组属性 - ID - 长度 - 字节序 - 通知 #### 7.4.6 基于 UINT8 数组的信号组访问 直接 byte array 访问,用于 transformer 链。 ### 7.5 大型数据类型 (LdCom) #### 7.5.1 发送大型信号/I-PDU 通过 LdCom 模块直接到 PduR(绕过 COM 处理)。 #### 7.5.2 接收大型信号/I-PDU 反向。 ### 7.6 动态长度信号 #### 7.6.1 发送动态长度信号/I-PDU 信号长度在运行时可变。 #### 7.6.2 接收动态长度信号/I-PDU ### 7.7 与 PDU Router 接口 COM 通过 PduR 收发 I-PDU。 ### 7.8 Update-Bits 每个信号可有一个 update bit,表示该信号在 I-PDU 中是否更新。 #### 7.8.1 发送端 update bit 在 send 时设置。 #### 7.8.2 接收端 update bit 用于决定是否通知 RTE 信号到达。 ### 7.9 数据序列控制 (DSC) #### 7.9.1 发送端 I-PDU 含计数器字段。 #### 7.9.2 接收端 检查计数器序列。 ### 7.10 通信保护 通过 E2E Library 实现。 ### 7.11 信号网关 COM 处理信号级网关(信号路由)。 #### 7.11.1 处理信号 直接路由。 #### 7.11.2 处理组信号 路由整个信号组。 #### 7.11.3 路由过时信号和信号组 基于配置决定。 #### 7.11.4 处理 Update-Bits 网关时保留 update bits。 #### 7.11.5 解耦信号网关 通过 Com_MainFunctionRouteSignals。 ### 7.12 错误分类 #### 7.12.1 开发错误 | 错误名 | 错误码 | 含义 | | --- | --- | --- | | COM_E_PARAM | 0x01 | 参数错误 | | COM_E_UNINIT | 0x02 | 未初始化 | | COM_E_PARAM_POINTER | 0x03 | NULL 指针 | | COM_E_INIT_FAILED | 0x04 | 初始化失败 | #### 7.12.2 运行时错误 | 错误名 | 含义 | | --- | --- | | COM_E_TIMEOUT | 接收超时 | #### 7.12.3 瞬态故障 / 7.12.4 生产错误 / 7.12.5 扩展生产错误 无。 ### 7.13 错误通知 ### 7.14 错误处理 ### 7.15 AUTOSAR COM 模块交互模型 --- ## 8. API 规范 ### 8.1 导入类型 | 模块 | 头文件 | 导入类型 | | --- | --- | --- | | ComStack_Types | ComStack_Types.h | PduIdType, PduInfoType, PduLengthType | | Std_Types | Std_Types.h | Std_ReturnType, Std_VersionInfoType | ### 8.2 类型定义 #### 8.2.1 Com_StatusType ```c typedef enum { COM_INIT, COM_UNINIT } Com_StatusType; ``` #### 8.2.2 Com_SignalIdType ```c typedef uint16 Com_SignalIdType; ``` #### 8.2.3 Com_SignalGroupIdType ```c typedef uint16 Com_SignalGroupIdType; ``` #### 8.2.4 Com_IpduGroupIdType ```c typedef uint16 Com_IpduGroupIdType; ``` #### 8.2.5 Com_ConfigType ```c typedef struct Com_ConfigType Com_ConfigType; ``` ### 8.3 函数定义 #### 8.3.1 返回码 | 返回码 | 含义 | | --- | --- | | E_OK | 成功 | | E_NOT_OK | 失败 | | COM_SERVICE_NOT_AVAILABLE | 服务不可用(信号未配置等) | | COM_BUSY | 模块繁忙 | #### 8.3.2 启动与控制服务 ##### Com_Init ```c void Com_Init(const Com_ConfigType* config) ``` | Service ID | 0x01 | | --- | --- | ##### Com_DeInit ```c void Com_DeInit(void) ``` | Service ID | 0x02 | | --- | --- | ##### Com_IpduGroupControl ```c void Com_IpduGroupControl( Com_IpduGroupVector ipduGroupVector, boolean Initialize ) ``` ##### Com_ReceptionDMControl ```c void Com_ReceptionDMControl(Com_IpduGroupVector ipduGroupVector) ``` ##### Com_GetStatus ```c Com_StatusType Com_GetStatus(void) ``` ##### Com_GetVersionInfo ```c void Com_GetVersionInfo(Std_VersionInfoType* versioninfo) ``` #### 8.3.3 通信服务 ##### Com_SendSignal ```c uint8 Com_SendSignal( Com_SignalIdType SignalId, const void* SignalDataPtr ) ``` ##### Com_ReceiveSignal ```c uint8 Com_ReceiveSignal( Com_SignalIdType SignalId, void* SignalDataPtr ) ``` ##### Com_SendSignalGroup ```c uint8 Com_SendSignalGroup(Com_SignalGroupIdType SignalGroupId) ``` ##### Com_ReceiveSignalGroup ```c uint8 Com_ReceiveSignalGroup(Com_SignalGroupIdType SignalGroupId) ``` ##### Com_InvalidateSignal ```c uint8 Com_InvalidateSignal(Com_SignalIdType SignalId) ``` ##### Com_TriggerIPDUSend ```c void Com_TriggerIPDUSend(PduIdType PduId) ``` ##### Com_SwitchIpduTxMode ```c void Com_SwitchIpduTxMode(PduIdType PduId, boolean Mode) ``` ##### Com_SendSignalGroupArray ```c uint8 Com_SendSignalGroupArray( Com_SignalGroupIdType SignalGroupId, const uint8* SignalGroupArrayPtr ) ``` ##### Com_ReceiveSignalGroupArray ```c uint8 Com_ReceiveSignalGroupArray( Com_SignalGroupIdType SignalGroupId, uint8* SignalGroupArrayPtr ) ``` ### 8.4 回调函数与通知 #### 8.4.1 Com_TriggerTransmit ```c Std_ReturnType Com_TriggerTransmit( PduIdType PduId, PduInfoType* PduInfoPtr ) ``` #### 8.4.2 Com_RxIndication / 8.4.3 Com_TpRxIndication / 8.4.4 Com_TxConfirmation / 8.4.5 Com_TpTxConfirmation PduR 调用的回调。 #### 8.4.6 Com_StartOfReception / 8.4.7 Com_CopyRxData / 8.4.8 Com_CopyTxData TP 接收/发送的回调。 ### 8.5 调度函数 #### 8.5.1 Com_MainFunctionRx 处理接收的 I-PDU。 #### 8.5.2 Com_MainFunctionTx 处理发送队列。 #### 8.5.3 Com_MainFunctionRouteSignals 处理信号网关路由。 ### 8.6 期望接口 #### 8.6.1 强制接口 - PduR_ComTransmit - Det_ReportError #### 8.6.2 可选接口 - Det_ReportRuntimeError #### 8.6.3 可配置接口 - 各种 RX 指示/TX 确认回调 - 网关回调 --- ## 9. 时序图 ### 9.1 AUTOSAR COM 模块和 PDU 路由器接口 ### 9.2 PDU 路由器、COM 模块和 RTE 之间确认处理 ### 9.3 PDU 路由器、COM 模块和 RTE 之间指示处理 > **[摘要]** 详细时序图见原文 PDF 第 111-114 页。 --- ## 10. 配置规范 ### 10.1 容器与配置参数 #### 10.1.1 AUTOSAR COM 模块配置 全部参数树。 #### 10.1.2 Com 根容器。 #### 10.1.3 ComGeneral | 参数 | 类型 | 说明 | | --- | --- | --- | | ComConfigurationUseDet | bool | DET 启用 | | ComEnableMDTForCyclicTransmission | bool | 周期发送启用 MDT | | ComEnableSignalGroupArrayApi | bool | 启用信号组 array API | | ComMainFunctionRxPeriod | float | Rx main 周期 | | ComMainFunctionTxPeriod | float | Tx main 周期 | | ComSupportedIPduGroups | int | 支持的 I-PDU 组数 | | ComVersionInfoApi | bool | 版本信息 API | #### 10.1.4 ComConfig 配置集容器。 #### 10.1.5 ComTimeBase 时基配置(秒)。 #### 10.1.6 ComFilter 过滤器配置: - ComFilterAlgorithm - ComFilterMin, ComFilterMax - ComFilterMask - ComFilterX, ComFilterPeriodFactor - ComFilterOffset #### 10.1.7 ComIPdu I-PDU 配置(方向、PDU 处理、信号引用等)。 #### 10.1.8 ComIPduCounter 计数器配置。 #### 10.1.9 ComIPduReplication I-PDU 复制配置。 #### 10.1.10 ComTxIPdu TX I-PDU 特定配置(callout、MDT 等)。 #### 10.1.11 ComIPduGroup I-PDU 组配置(可启用/禁用一组 I-PDU)。 #### 10.1.12 ComSignal 信号配置: | 参数 | 说明 | | --- | --- | | ComBitPosition | 位起始位置 | | ComBitSize | 位大小 | | ComSignalEndianness | LITTLE_ENDIAN / BIG_ENDIAN / OPAQUE | | ComSignalInitValue | 初始值 | | ComSignalLength | 字节长度 | | ComSignalType | 数据类型 | | ComFilter | 过滤器引用 | | ComTransferProperty | TRIGGERED / PENDING / 等 | | ComUpdateBitPosition | update bit 位置 | | ComTimeoutFactor | 超时因子 | | ComInvalidNotification | 无效通知 | | ComTimeoutNotification | 超时通知 | | ComErrorNotification | 错误通知 | | ComNotification | 接收通知 | #### 10.1.13 ComSignalGroup 信号组配置。 #### 10.1.14 ComGroupSignal 组信号配置(同信号但属于信号组)。 #### 10.1.15 ComTxMode TX 模式容器(TRUE/FALSE 各一)。 #### 10.1.16 / 10.1.17 ComTxModeTrue / ComTxModeFalse | 参数 | 说明 | | --- | --- | | ComTxModeMode | DIRECT / CYCLIC / MIXED / NONE / PERIODIC | | ComTxModeNumberOfRepetitions | 重复次数 | | ComTxModeRepetitionPeriod | 重复周期 | | ComTxModeTimeOffset | 时间偏移 | | ComTxModeTimePeriod | 周期 | #### 10.1.18-10.1.23 信号网关配置 (ComGw*) - ComGwMapping:映射条目 - ComGwSource / ComGwSourceDescription:源 - ComGwDestination / ComGwDestinationDescription:目的 - ComGwSignal:网关信号 > **[摘要]** 完整配置参数详见原文 PDF 第 115-170 页。 ### 10.2 配置规则 #### 10.2.1 通用规则 #### 10.2.2 信号配置 #### 10.2.3 信号组配置 #### 10.2.4 发送模式配置 #### 10.2.5 信号网关配置 #### 10.2.6 过滤器配置 #### 10.2.7 Post Build 配置 #### 10.2.8 动态长度 I-PDU #### 10.2.9 复制 I-PDU #### 10.2.10 I-PDU 组 > **[摘要]** 配置规则详见原文 PDF 第 171-175 页。 --- ## 11. 不适用需求 详见原文 PDF 第 176 页。 --- ## 12. 附录 A 附录 A 包含信号编码示例、TMS 选择示例等。详见原文 PDF 第 177-184 页。 --- ## 翻译说明 - 本译本基于 AUTOSAR CP 4.4.0 的 COM 规范 (Document ID 015,共 185 页) - 摘要标记位置: - 第 6 章需求追溯表 - 第 9 章时序图 - 第 10 章配置参数(详细) - 第 11 章不适用需求 - 第 12 章附录 A