17 KiB
通信模块规范 (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. 介绍与功能概述
- 2. 缩略语与定义
- 3. 相关文档
- 4. 约束与假设
- 5. 与其他模块的依赖
- 6. 需求可追溯性
- 7. 功能规范
- 8. API 规范
- 9. 时序图
- 10. 配置规范
- 11. 不适用需求
- 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
typedef enum {
COM_INIT,
COM_UNINIT
} Com_StatusType;
8.2.2 Com_SignalIdType
typedef uint16 Com_SignalIdType;
8.2.3 Com_SignalGroupIdType
typedef uint16 Com_SignalGroupIdType;
8.2.4 Com_IpduGroupIdType
typedef uint16 Com_IpduGroupIdType;
8.2.5 Com_ConfigType
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
void Com_Init(const Com_ConfigType* config)
| Service ID | 0x01 |
|---|
Com_DeInit
void Com_DeInit(void)
| Service ID | 0x02 |
|---|
Com_IpduGroupControl
void Com_IpduGroupControl(
Com_IpduGroupVector ipduGroupVector,
boolean Initialize
)
Com_ReceptionDMControl
void Com_ReceptionDMControl(Com_IpduGroupVector ipduGroupVector)
Com_GetStatus
Com_StatusType Com_GetStatus(void)
Com_GetVersionInfo
void Com_GetVersionInfo(Std_VersionInfoType* versioninfo)
8.3.3 通信服务
Com_SendSignal
uint8 Com_SendSignal(
Com_SignalIdType SignalId,
const void* SignalDataPtr
)
Com_ReceiveSignal
uint8 Com_ReceiveSignal(
Com_SignalIdType SignalId,
void* SignalDataPtr
)
Com_SendSignalGroup
uint8 Com_SendSignalGroup(Com_SignalGroupIdType SignalGroupId)
Com_ReceiveSignalGroup
uint8 Com_ReceiveSignalGroup(Com_SignalGroupIdType SignalGroupId)
Com_InvalidateSignal
uint8 Com_InvalidateSignal(Com_SignalIdType SignalId)
Com_TriggerIPDUSend
void Com_TriggerIPDUSend(PduIdType PduId)
Com_SwitchIpduTxMode
void Com_SwitchIpduTxMode(PduIdType PduId, boolean Mode)
Com_SendSignalGroupArray
uint8 Com_SendSignalGroupArray(
Com_SignalGroupIdType SignalGroupId,
const uint8* SignalGroupArrayPtr
)
Com_ReceiveSignalGroupArray
uint8 Com_ReceiveSignalGroupArray(
Com_SignalGroupIdType SignalGroupId,
uint8* SignalGroupArrayPtr
)
8.4 回调函数与通知
8.4.1 Com_TriggerTransmit
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