传送门 -> AUTOSAR配置与实践总目录
AutoSAR配置与实践(基础篇)3.3 BSW的通信功能
- 一、收发过程概览
- 1.1 发送过程概览
- 1.2 接收过程概览
- 二、BSW的通信功能模块组成
- 三、收发过程解析
- 3.1 发送过程
- 3.2 发送后的结果确认
- 3.3 接收过程
一、收发过程概览
1.1 发送过程概览
-
COM Stack 指的是通信层相应模块COM/PduR/BusIf/BusDriver,一起协作供用户完成数据发送;
-
发送时,用户先请求COM Stack发送,COM Stack发送完毕后通知用户结果,结果可能是发送成功、发送超时、或者发送错误。
1.2 接收过程概览
接收时,COM Stack数据直接反馈User数据
二、BSW的通信功能模块组成
图中Bus Interface/BusTp/Bus Driver,其中Bus为了方便理解可以认为是常见的Can通信。
图中介绍了通信相关的服务层、抽象层以及驱动层的模块细分。
Com: Communication,通信层的功能
- 解析报文内的信号,用户不用关心信号布局
COM模块会解析OEM给的arxml、dbc、xml等描述报文内信号layout的文件,转化成信号接口提供给SWC使用。SWC层只需调用COM接口即可完成数据收发,不用关心信号在报文内的占位。
- 转发用户数据,用户不用关心总线类型
上层SWC发下来的信号,最先经过Com层,Com重点关心数据长度,不关心是LIN发下来,还是CAN发下来的。
PduR: 全称Protocol Data Unit Router,协议数据单元路由器,一个主要作用就是把Com发下来的PDU分发到不同的总线上(CAN/LIN等),实现PDU级别的网关,或者将不同的协议变成统一信号上传给COM。
IpduM: I-PDU Multiplexer,可选模块,使用场景为当表示CAN ID的位不足时,用户从数据字节中拿出一些字节作为协议用,而IpduM可以解析这些特殊的协议。
举例:需求要使用0x2A8 这个CAN ID来传输10个字节的车辆VIN码,而标准CAN ID一次只能传8字节数据可以分两帧来传,最前面的那个字节用作协议传输,1代表VIN码的前7个字节,2代表VIN码的后3个字节,而接收方也按对应协议解析,可以实现1个ID传输10字节的数据
TP: Transport Protocol,传输协议层,一般做诊断用到,发送数据流向 PduR -> Bus TP->Bus interface。如果非诊断功能,发送数据流向PduR ->Bus interface。
Interface: 与硬件无关的一层,总线特有的功能(与总线的发送和接收机制有关系),比如管理发送队列,FlexRay总线的组帧,基于时间触发的总线(LIN、Flexray)在这一层处理。
Driver: 主芯片CAN模块的驱动,主要完成芯片CAN控制器的初始化,buffer的填充以及CAN中断的实施。
Trcv Driver: 外置CAN收发器需要用到的驱动。
三、收发过程解析
3.1 发送过程
Step 1: SWC使用RTE接口发送数据到COM层, COM层把数据写入PDU buffer;
Step 2: COM调用PDUR触发数据的发送(PDU触发发送方式为周期或者立即,可在COM层配置);
Step 3: PDUR根据报文及总线类型选择不同的下发路径:
- 若是普通报文,PDUR 将根据总线类型将数据转发到下层对应的BusIf层(PDUR-> BusIf);
- 若是诊断报文,PDUR 将数据转发到下层TP层,再转到对应的BusIf层(PDUR -> TP -> BusIf);
Step 4: BusIf层根据不同的通道,把报文写入不同的队列;
Step 5: Bus Driver根据报文的优先级发送报文。
3.2 发送后的结果确认
参考上述发送过程Step6.发送完成后,由下层依次给上层PDU发送的确认(Tx_Confirmation)。数据发送后对来自底层的发送确认事件的检测方式,其中Driver层和COM层方式是可配置的
-
Bus Driver:可以选择对物理层轮询(对应Polling配置),也可以选择直接由物理层中断触发通知Bus Driver(对应Interrupt配置)
-
COM层: 处理下层信号的方式可以选择立即(对应IMMEDIATE配置)或者延迟处理(对应DEFERRED配置)
以上检测方式在此仅做了解即可,详细内容会在后续章节中展开 。
备注:图中物理层到SWC传递简化描述所以用了一条线,其实也是逐层上报的,和发送过程相逆。
3.3 接收过程
Step 1: 接收来自物理层Bus上的报文(同上述Tx_Confirmation流程,分为Polling和Interrupt方式)
Step 2: 由Driver调用RxIndication,数据被传递到Bus Interface层
Step 3: Bus Interface将数据传递到PDUR
Step 4: PDUR将数据传递到COM(同上述Tx_Confirmation流程,分为IMMEDIATE和DEFERRED方式)
Step 5: 信号通过RTE通知SWC(也可被SWC通过轮询方式读取)
传送门 -> AUTOSAR配置与实践总目录