MCAILayerAUTOSAR 中 CAN 通信协议栈配置详解AUTOSAR 的通信协议栈是由 BSW 通信服务,通信硬件抽象和通信驱动程序组成。AUTOSARCOMBUSstateGenericNMPDURouterManagerTPBusKIMBusinterfaceBusTrcvDrvExt.BusDriverAsi 匚图 1AUTOSAR 通信协议栈的组件COM 模块 AUTOSARCOM 是位于 RTE 和 PduR 之间的服务层模块,主要用于与 RTE 之间的信号交互,对信号进行打包和解包。另外在该模块中还可以配置 IPDU 的通信周期、通信周期偏移量、IPDUGroup 等。PduR 模块 PduR 的作用是为通信协议栈中的不同总线的 IPDU 提供路由路径。例如它将接收的IPDU 路由至 COM、Dcm 等模块,或者将 COM 模块需要发送的 IPDU 路由至 CanIf模块,最后传送至芯片的 CANDriver,将信号发送至总线。CanTp 模块 Tp 表示传输协议。该模块是特定于总线,其配置取决于基础总线协议,可以是CAN、LIN、CANFD 等总线。该模块主要用于长报文的分段发送,以及对分段报文进行重组。BusSM 模块 总线状态管理模块负责相应总线状态机的管理和总线故障的处理。它可以基于 CAN总线的 CanSM,或者是基于 LIN 总线的 LinSM 等。ServicesLayerI/ODriversHCommuinicationDriversDIODIHH 申『■£Pih^hdlerDriivei*BusDriverECUAbsLayerBusTrcvDriver 模块 它是 ECU 抽象层的一部分。它可以是用于 CAN 收发器的 CanTrcv,用于以太网收发器的 EthTrcv,用于 Flexray 收发器的 FrTrcv 等。此模块用于对收发器进行初始化配置,它提供独立于控制器硬件的用于启动传输的服务和用于通知接收事件的回调函数。BusDriver 该模块是 AUTOSARMCAL 层的一部分(例如:CanDrv,LinDrv,FrDrv),它实际上与 ECU 的底层硬件进行交互,并为其上层提供独立于硬件的接口。此模块取决于硬件,并且驱动程序代码可能会根据基础硬件而有所不同。Buslf 是唯一可以访问此总线驱动程序的模块。CAN 总线的 COM 配置实施下面我们来看看 CAN 通信协议栈,如下图 2 所示,包括Com、PduR、CanTp、CanSm、Canlf、CANDriver 等模块,其中 COM 与 PduR 模块是通用的,其功能与总线铜线协议无关。Com.CansmCanTp■匚anlfCANDriver图 2AUTOSARCAN 通信协议栈下面来详细聊聊各个模块的配置选项。COM 模块 配置的 COM 模块基本目的是在上层 RTE 层和下层 PDU 路由器之间建立系统通信,而不考虑通信协议。这可以通过定义和配置四个不同的对象来完成。1...