2. AUTOSAR通信栈架构总览
AUTOSAR通信栈的核心设计思想是“分层解耦、接口标准化”。无论底层是CAN、CAN FD、FlexRay还是以太网,上层应用看到的都是统一的信号与服务接口。ETAS作为AUTOSAR基础软件的重要供应商,其通信栈(RTA-CAR系列中的COM、PduR、CanIf、EthIf等模块)严格遵循这一分层模型。理解这套分层结构,是后续配置PDU路由、信号打包、网络管理以及诊断通信的前提。
一、通信栈的纵向分层:从应用到总线
从纵向看,AUTOSAR通信栈可以划分为四个逻辑层:应用层、RTE层、服务层(BSW服务与ECU抽象)、驱动层。应用软件组件(SWC)通过RTE提供的端口(Port)发送或接收数据。RTE并不直接操作总线,而是把信号级的读写请求交给COM模块。COM负责信号的打包/解包、超时监控、更新位与发送模式管理,是“信号”与“PDU”之间的转换枢纽。
PDU(Protocol Data Unit)是通信栈中真正被传输的数据单元。COM把多个信号按配置打包成一个I-PDU,交给PduR(PDU Router)。PduR是通信栈的“交通枢纽”,它根据路由表把I-PDU分发到不同的下层模块:CAN方向交给CanIf,FlexRay方向交给FrIf,以太网方向交给SoAd或EthIf。CanIf再调用Can驱动访问CAN控制器;以太网方向则经过TCP/IP协议栈或直接使用SoAd(Socket Adaptor)完成PDU到Socket的映射。
这里需要特别强调RTE与COM的关系:RTE是应用与BSW之间的“合同层”,它把SWC的Runnable与通信事件绑定;COM是“信号处理层”,它不关心应用逻辑,只负责信号到PDU的映射与传输语义。二者通过Rte_COM接口交互,应用发信号时调用Rte_Write,RTE再调用Com_SendSignal,最终由COM触发PduR的发送请求。
二、不同总线的接入差异
虽然上层接口统一,但不同总线在通信栈中的接入方式存在明显差异。CAN与CAN FD共用CanIf、CanDrv和CanTp,区别主要在帧格式与数据长度:CAN FD支持最高64字节数据场和更高的数据段波特率,因此在COM打包时一个I-PDU可以承载更多信号,CanIf配置中需要设置CAN FD使能与BRS(比特率切换)参数。FlexRay通过FrIf接入,其通信基于静态段与动态段,PDU在FlexRay帧中的位置由通信周期和时隙决定,因此FrIf配置需要关联FlexRay集群的调度表。以太网则通过EthIf、EthTrcv、SoAd接入,PDU通常映射为Socket连接上的数据,需要配置IP地址、端口号、协议类型(TCP/UDP),并可能经过TcpIp模块。
ETAS通信栈的一个工程优势在于:这些差异被封装在各自的接口模块(CanIf、FrIf、EthIf)中,PduR以上的COM、RTE、应用层几乎不需要改动。这意味着当项目从CAN升级到CAN FD,或从CAN迁移到以太网时,上层信号数据库和SWC代码可以保持稳定,主要修改集中在底层驱动配置和PduR路由表。
三、BSW模块划分与数据流
在ETAS RTA-CAR中,通信相关的BSW模块大致分为三类:通信服务模块(COM、PduR、IpduM、ComM、Nm)、通信硬件抽象模块(CanIf、FrIf、EthIf、LinIf)、通信驱动模块(Can、Fr、Eth、Lin)。此外还有诊断通信模块(Dcm、Dem)和网络管理模块(CanNm、FrNm、UdpNm),它们也通过PduR或直接与接口层交互。
以一条CAN发送路径为例:SWC调用Rte_Write发送车速信号 → RTE调用Com_SendSignal → COM按配置把信号写入I-PDU缓冲区 → COM触发PduR_ComTransmit → PduR查路由表选择CanIf → CanIf调用Can_Write把PDU写入CAN控制器的发送邮箱 → CAN控制器在总线空闲时发出帧。接收路径则相反:CAN控制器收到帧后触发CanIf的RxIndication → CanIf调用PduR_CanIfRxIndication → PduR路由到COM → COM解包信号并调用Rte_Receive → SWC读取信号值。
下面这张图展示了ETAS通信栈的分层模型与典型数据流,重点标出了CAN、CAN FD、FlexRay、以太网四条接入路径在PduR处的分叉关系,以及RTE与COM之间的接口位置。
四、工程配置中的关键观察点
在ETAS工具链(如ISOLAR-AB或RTA-CAR配置器)中配置通信栈时,有几个参数直接决定数据能否正确传输。第一是PDU长度与信号布局:COM中每个I-PDU的字节长度必须与CanIf中该PDU的DLC一致,CAN FD下还要确认是否启用BRS以及数据段波特率。第二是PduR路由表:每个I-PDU必须明确指定源模块和目标模块,网关场景下还要配置路由使能条件。第三是发送模式:周期发送、事件触发、混合模式的选择会影响COM的发送超时和更新位行为。第四是接收超时监控:COM的Deadline Monitoring用于判断信号是否在预期时间内更新,超时后可以触发替代值或错误通知。
以太网方向还需要额外关注Socket连接与PDU的映射关系。一个UDP Socket可以承载多个PDU,但每个PDU需要配置唯一的PDU ID和长度;TCP方向则要考虑连接建立与断开对通信可用性的影响。FlexRay方向需要核对通信周期、时隙分配与PDU在帧中的偏移,任何一项配置错误都会导致FrIf无法正确收发。