PDU:Protocol Data Unit(协议数据单元),一个比较常见的概念,可以自行某度,或者理解为数据包。
I-PDU:Interaction Layer PDU,因为 COM 在 ISO 标准中被称为 Interaction Layer,因此 COM 中的 PDU 被称为 I-PDU。
Message:常说的 Message 在 COM 中等同于 Signal,但是在 DBC 中等同于I-PDU,相当于一条报文。这点是易错的。
PduR:Pdu Router,COM 向下交互的主要对象。顾名思义,是一个路由 PDU 的模块。
Com 与 ComM
Com:就是我们研究的模块,有时候写 COM 有时候写 Com,都是相同的。主要就是来通信的(收发信号,在 COM 中组包为 I-PDU 交付给 PduR 路由到目标总线协议的处理模块)。但是有时候也会用来泛指所有的通信模块,例如,车上所有参与通信的相关模块,也会被称为 Communication 模块,即 Com,指车上实现通信的所有模块的总和。我们说 Com 模块或者 COM 模块,一般说的是前者,即我们本文研究的模块。而不是实现通信的所有模块。
ComM:就是特指 Communication Management,这里的 Com 指的是所有底层总线通信模块,ComM 并不管理通信的所有模块,实现网络管理也不需要管理所有模块,只需要管理对总线的抽象即可。ComM 通过管理底层总线协议的抽象,实现相关的各个协议的总线网络管理功能。
一、五个词语获取对 COM 模块的基本理解
Signal。AUTOSAR 最上层 APPL(应用层,每个应用程序为 SWC,即 SoftWare Component,通常会为每个 SWC 配置一个任务或者进程来运行)。SWC 可以实现一些软件功能,例如,手机靠近,车内有 ECU(Electronic Control Unit 电子控制单元,理解为一个零部件中有一个小小的而且非常简单的电脑,可以通过这个电脑来控制这个零部件)读取到手机的蓝牙信号,ECU 把读取到的蓝牙的相关数据传输给 车控系统 (汽车控制系统,理解为汽车的大脑,汽车的操作系统,可以协调车身上各个零部件 ECU 的运行,给各个 ECU 发指令,或者从 ECU 中得到信息),系统得到信息后经过底层的一些处理(相当于电脑的 TCP\IP 协议栈对网络报文的处理),然后传递给 SWC。此时 SWC 可以进行一些计算判断是否是车主来了,如果是就给他开车门。这个过程中,SWC 需要用到一些关键数据,比如说蓝牙传来的认证数据长度等等,这个数据在 AUTOSAR RTE 以及 AUTOSAR APPL 中,就是一个 Signal。COM 在 CAN 通信协议栈的最顶层,向上层与 RTE 交互,因此 COM 层需要向上层提供 Signal
PDU。一个一个信号发效率太低了,类比TCP\IP协议栈的组包,COM 层就把很多信号放到了一个 PDU 中(Protocol Data Unit,理解为一个数据包,或者说一个数组或者结构体,里面放很多数据) 。COM 层向下层与 PduR 交互,PduR 负责把报文路由给相应的模块。AUTOSAR 中包含很多总线协议,这是为了满足不同 ECU 的总线需求以及成本需求。信号可能来自多个不同的 ECU,有的 ECU 使用 Lin 总线,有的使用 Can 总线,有的使用 FlexRay 等等,PduR 的责任就是把 COM 组的包,路由给目的总线的处理模块。由相应的处理模块去发送。接收就是从相应的总线模块路由给上层。同样 COM 只负责解包 PDU 为 RTE 提供 Signal,还有一些其他模块比如网络管理模块(管理总线网络,总线处于不同的模式时有不同的功耗,所以需要网络管理,平衡功耗和需求)也需要收发报文,有时候也会路由给他们。
这个图和上面所说的内容就对应起来了。也证明了 PduR 存在的意义,他不是单独为 Com 服务的,而且有了 PduR 的抽象,方便可以对路由路径修改。
为什么说 ComM 不需要管理所有的模块,如图橙色箭头所示,只需要管理总线协议,就可以实现对相关总线的使能、监控。 网络管理和业务所需的报文数据是分开的,因此如果通过底层通信协议之上的业务模块来网络管理的话,例如 Com,就会导致业务数据和网络管理的数据耦合都需要从底层总线经由 PduR 到达 Com,在交给 ComM,产生了耦合。很有可能存在紧急业务数据,例如弹出安全气囊的信号,因为网络管理报文的收发、处理导致带来延迟,哪怕可能1、2ms,对驾驶者、乘客而言肯定是不希望看到的情况。网络管理和业务数据分开,属于垂直方向的解耦(不是专业术语,重点会意就行) 。
Com 涉及到的总线协议理论上应该是包括 CAN、CANFD、TP(TP 总线具体是什么有待研究,COM 官方文档中提及到的大报文使用的就是 TP 总线)(这里不确定全不全,有待补充,欢迎讨论,交流,希望懂的大佬不吝赐教)。实际 COM 官方文档中提到的只有 CAN 和 TP。关于总线协议可以看这篇文章 CAN\CANFD\FlexRay\LIN 一文深度解析常见通信协议。