目录
CAN TP模块提供的基本服务包括对负载超过8字节的消息进行分段,流控制下的消息传输,以及在接收端重新组装分段消息。
CAN接口(CANIF)是ECU抽象层中的一个模块,负责传输请求、传输确认、接收指示、控制器模式控制和PDU模式控制等服务。
Can模块:“访问微控制器寄存器以在物理总线上发送实际的CAN帧”
该模块是MCAL层的一部分,为上层服务提供硬件访问,并为上层提供与硬件无关的接口。CANIF是唯一可以访问CAN驱动程序的模块。
AUTOSAR通信(COM)模块在汽车软件开发中发挥着几个重要作用:
往期推荐
- ETAS工具链自动化实战指南<一>
- ETAS工具链自动化实战指南<二>
- ETAS工具链自动化实战指南<三>
- AUTOSAR工程师必读:Artop的核心功能
- Vector工具链自动化实战指南<一>
- isolar高手秘籍| ECU Configuration三分钟速成!
- 掌握核心步骤:RTA-BSW以太网配置全解析
- 一文详解TC399 CAN MCAL 配置
- LSL常见应用场景及示例<一>
- LSL常见应用场景及示例<二>
- LSL常见应用场景及示例<三>
- 为什么Autosar钟情arxml而非json?大揭秘!
Autosar ComStack概述
在AUTOSAR的分层架构中,通信栈(ComStack)促进了车载网络通信。因此,ComStack可以定义为一个为基础软件模块和应用层/应用软件提供通信服务的软件栈。
一个典型的AUTOSAR通信栈的模块分布在基础软件层的三个子层中:
- 服务层
- ECU抽象层
- 微控制器抽象层 (MCAL)
在AUTOSAR中,通信栈是一组模块,如:
- COM模块(服务层)
- PDU路由器模块(服务层)
- 特定总线接口模块(ECU抽象层),如CanIf、LinIf、FrIf等
- 外部总线驱动程序(ECU抽象层)
- 内部总线驱动程序(MCAL层)
ECU通过不同的网络(如CAN、LIN、FlexRay等)发送消息,这些消息被称为PDU(协议数据单元)。
应用程序发送或接收的数据项被映射为signals。
区分I-PDU, N-PDU和 L-PDU
在各层之间传输PDU时,PDU会根据所在的层被赋予相应的名称。PDU的名称包括I-PDU(交互层PDU)、N-PDU(网络层PDU)和L-PDU(数据链路层PDU)。
-
当PDU位于通信硬件抽象层之上时,称其为I-PDU。
-
当PDU位于PDUR以下且通信驱动程序层之上时,称其为N-PDU。
-
当PDU位于通信硬件抽象层之下时,称其为L-PDU。
SDU 与 PCI
SDU是服务数据单元(Service Data Unit)的缩写,PCI是协议控制信息(Protocol Control Information)。
SDU代表要传输的数据。在传输过程中,SDU与PCI一起从上层移动到下层。在接收时,SDU从下层提取并转发到上层。PCI包含有关SDU下一个目的地的重要信息,主要包括SDU的源和目的地的详细信息,指示PDU(协议数据单元)应传递到的下一个层级。
简单来说,PDU在上层和下层之间传输,包含SDU和PCI。
常见的AUTOSAR通信协议
CAN(Controller Area Network)是一种广泛使用的汽车通信协议,以其高速和可靠性著称。它通常用于安全关键的应用,如刹车和转向控制。
FlexRay是一种高速汽车通信协议,以其确定性和鲁棒性而闻名。它通常用于需要高带宽和保证消息传递的应用,如动力总成和底盘控制。
LIN(Local Interconnect Network)是一种低成本的汽车通信协议,通常用于不需要高带宽的应用,如气候控制系统和信息娱乐系统的控制。
MOST(Media Oriented Systems Transport)是一种高速汽车通信协议,通常用于音频和视频应用。
Ethernet(以太网)是一种广泛使用的网络技术,在汽车应用中越来越受欢迎。它通常用于需要高带宽和与外部网络连接的应用,如远程信息处理系统和信息娱乐系统。
AUTOSAR通信栈可以支持多种通信协议,具体取决于应用的需求。这使得AUTOSAR通信栈可以用于各种配置不同的车辆。
选择通信协议时需要考虑以下因素:
-
需要传输的数据类型:某些协议比其他协议更适合某些类型的数据。例如,CAN非常适合传输小而简单的消息,而FlexRay则更适合传输大而复杂的消息。
-
带宽要求:系统的带宽要求将决定通信协议必须支持的最大数据传输速率。
-
可靠性要求:系统的可靠性要求将决定通信协议必须提供的错误检测和纠正级别。
-
硬件成本:实现通信协议的硬件成本也是选择过程中的一个因素。
如下所示:是不同车载网络协议的汇总比较信息:
AUTOSAR架构中的CAN通信栈
当目标总线类型为符合AUTOSAR的软件是CAN时,ComStack实现会针对CAN总线进行执行。从接口(IF)和状态管理器到低级驱动程序,这些模块都需要为CAN总线进行配置。
CAN通信栈的不同模块列表:
-
AUTOSAR COM(服务层)
-
PDU Router(服务层)
-
CAN State Manager(服务层)
-
CAN Network Manager(服务层)
-
CAN Transport Protocol (服务层)
-
CAN Interface(ECU抽象层)
-
CAN Transceiver Driver(ECU抽象层)
-
CAN Driver(MCAL层)
AUTOSAR Com Stack各模块的角色
-
Com模块:“将信号打包成PDU”
AUTOSAR COM是RTE和PDU路由器之间的一个模块。它基于OSEK COM规范,提供一个统一的CAN网络接口。它负责为应用层提供信号级访问,并为底层提供PDU级访问,无论协议如何。在发送端,它将信号打包成PDU;在接收端,它解包接收到的PDU,以提供信号级访问。COM在PDU级别负责对PDU进行分组,并启动/停止PDU组。
-
PduR模块:“将PDU<