AUTOSAR COM是AUTOSAR通讯的重要组成部分,它是从OSEK COM标准的基础上发展而来的。它提出了一个不同速率的总线网络之间进行数据交换的方法,为汽车控制单元应用软件提供了统一的通信环境,为内部和外部通信定义了公共的软件通信接口和行为,增强了应用软件模块的可移植性。
图1 AUTOSAR COM在分层架构中的位置
AUTOSAR COM提供了基本的通信服务,它有明确的上层模块RTE(Runtime Environment)和下层模块PDU Router。
上下层关系
上层RTE
RTE使用AUTOSAR COM模块的功能来发送和接收信号,AUTOSAR COM模块为RTE提供面向信号的数据接口,主要包括:
- 将AUTOSAR信号打包传送给I-PDUs
- 将接收到的I-PDUs打包并将接收到的信号提供给RTE
- 将接收到的I-PDUs信号路由到I-PDU进行传输
- 将接收到的I-PDUs中的信号簇路由到I-PDU中进行传输
- 通信传输控制(I-PDU组的启动/停止)
- 发送请求的复制
- 保证传输I-PDUs之间的最小距离
- 接收信号监控(信号超时)
- 传入信号的过滤机制
- 不同的通知机制
- 提供初始值和更新指示
- 字节顺序的转换
- 符号扩展
- 每个I-PDU支持两种不同的传输模式
- 基于信号的网关
- 支持大型和动态长度数据类型
- 支持I-PDU计数器和I-PDU复制
图2 COM和RTE的通信
下层PDUR
AUTOSAR COM模块使用两组PDU Router上层模块API的联合,即用于使用TP的上层模块API和用于不使用TP的上层模块API。由于AUTOSAR COM模块通过简单未片分的L-PDUs或通过片分的TP来传输I-PDUs,所以从这点来看,还是非常有必要的。
图3 COM和PDUR的通信
来自底层PDU Router对AUTOSAR COM模块的功能需求包括:
- 输入I-PDUs的指示 用于发送I-PDUs的发送接口,
- 包括通信控制器是否已发送I-PDU的确认
- 触发接口,使PDU router能够引起来自AUTOSAR COM模块的传输
- 用于TP通信的缓冲区处理
图4 COM和RTE、PDUR的通信
信号值
AUTOSAR COM的信号值包括三种:
初始值:AUTOSAR COM模块使用配置参数ComSignalInitValue的低N位初始化发送方和接收方的每个N位的信号类型, 配置的ComSignalInitValues也用于I-PDU的初始化信号。一个信号的ComSignalInitValue可以与ComSignalDataInvalidValue值相同。初始化阶段会清空所有update-bits值。默认情况下,所有I-PDU组应在停止状态,不得由Com_Init()调用启动。
数据无效值:通过调用Com_InvalidateSignal, AUTOSAR COM模块将在内部执行带有配置ComSignalDataInvalidValue的Com_SendSignal。ComTransferProperty和传