通信硬件抽象(Communication Hardware Abstraction)能够将通信控制器的位置以及 ECU的硬件结构举行抽象化处理。对于全部的通信系统,如 LIN、CAN、FlexRay 等,都必要特定的通信硬件抽象。
以一个具体的 ECU 为例,它具有一个带有 2 个内部 CAN 通道的微控制器,以及一个带有 4 个 CAN 控制器的板载 ASIC(专用集成电路),并且该 CAN - ASIC 通过 SPI(串行外设接口)与微控制器相连。
通信硬件抽象的告急任务是提供划一的机制来访问总线通道,而无需思量其位置(是在芯片上还是在板载上)。其具有以部属性:
实现方式:独立于微控制器(μC),但依靠于 ECU 硬件以及外部设备。
上层接口:依靠于总线,而独立于微控制器和 ECU 硬件。
在实际架构中,通信驱动程序通过特定于总线的接口(比方 CAN 接口)举行访问。通信硬件抽象层包罗了如 CAN 接口、CAN 收发器驱动、外部 CAN ASIC 驱动等模块,它们协同工作,为上层软件提供了一个同一且与硬件细节无关的通信接口,使得上层软件能够更加便捷、高效地与底层硬件举行通信交互,同时也增强了系统的可移植性和可维护性,为汽车电子系统的稳定运行和功能实现奠定了结实的底子。
三、通佩服务
在汽车电子系统的软件架构里,通佩服务是一组服务于车辆网络通信(涵盖 CAN、LIN、FlexRay 和以太网等)的模块集合。它们借助通信硬件抽象层与通信驱动程序交互,任务在于为车辆网络通信提供同一接口,为网络管理提供同一服务,为诊断通信提供同一接口,同时向应用层隐藏协议与消息属性。其属性方面,实现上独立于微控制器和 ECU 硬件,部分依靠总线范例,上层接口则独立于微控制器、ECU 硬件及总线范例。
在示例图里,诸如 LdCom、Com、PduR 这类模块具备能够独立与总线相连的特性。简单来讲,不管是在哪种总线上,这些模块都是通用的。
对于此中一些模块而言,当其应用于不同总线时,又会存在一定差异。比方,总线状态管理模块,在示例图中呈现为<Bus specific>State Manager,而当具体对应到特定的总线时,就会分别表现为 CanSm(对应 CAN 总线)、EthSm(对应以太网总线)等不同形式。再比如传输控制模块<Bus specific>Transport Protocol,当它应用到特定总线时,就会相应地酿成 CanTp(对应 CAN 总线)、LinTp(对应 LIN 总线)等具体的形式。
CAN 通佩服务是一组专为车辆网络中 CAN 通信系统服务的模块集合,确保车辆各电子控制单元(ECU)之间基于 CAN 总线的高效、稳定通信。其告急任务有:
提供同一接口:为 CAN 网络提供一个同一的接口,使得应用层无需关心底层 CAN 通信的复杂细节,只需通过该同一接口就能与 CAN 网络举行交互,大大低落了应用层开辟的难度和复杂度,进步了软件开辟的效率和可维护性。
隐藏协议与消息属性:将 CAN 通信的协议以及消息的具体属性对应用层举行隐藏,应用层只需关注要传输的数据内容,而无需深入相识 CAN 协议的帧格式、位定时等底层技能细节,进一步简化了应用层的开辟工作,使开辟者能够更专注于应勤奋能的实现。
CAN协议栈支持的通信范例有:
经典 CAN 通信(CAN 2.0):这是 CAN 通信的底子版本,广泛应用于汽车电子系统中,能够满足大多数常规的车辆通信需求,如发动机控制、车身电子等系统之间的数据交互。
CAN FD 通信(若硬件支持):CAN FD(具有机动数据速率的 CAN)是 CAN 通信的一种扩展,在保持与经典 CAN 兼容性的底子上,进步了数据传输速率和数据帧的有效载荷,适用于对实时性和数据量要求更高的场景,如自动驾驶相干的传感器数据传输等。但必要注意的是,其使用依靠于硬件的支持,如果车辆的 ECU 硬件不具备 CAN FD 功能,则无法使用这种通信方式。
在实现方面,CAN 通佩服务独立于微控制器(μC)和 ECU 硬件,这意味着它可以在不同的硬件平台上举行移植和复用,进步了软件的通用性和可扩展性。但同时,它又部分依靠于 CAN 总线自己,比方在一些与 CAN 总线特性相干的参数设置、错误处理等方面,必要根据 CAN 总线的具体规范和要求举行适配和处理。
AUTOSAR COM(遵照 AUTOSAR 标准的通信模块)、通用 NM(网络管理)接口和诊断通信管理器这几个模块对于全部车辆网络系统是类似的,并且在每个 ECU 上仅存在一个实例。通用 NM 接口仅包罗一个调理器,不包罗其他进一步的功能。但在网关 ECU 的情况下,它还可以包罗 NM 和谐器功能,该功能答应同步多个不同的网络(类似或不同范例),以便同步叫醒或关闭它们,从而实现整个车辆网络系统的高效电源管理和协同工作。而 CAN NM 是专门针对 CAN 网络的,会根据每个 CAN 车辆网络系统举行实例化,以满足不同 CAN 网络的特定管理需求,比方网络状态监测、节点状态管理等。
通信系统特定的 Can 状态管理器(CanSM)负责处理与通信系统相干的启动和关闭特性。此外,它还控制 COM 模块的不同选项,比方发送协议数据单元(PDUs)以及监控信号超时等功能,确保 CAN 通信的可靠性和实时性,及时发现和处理通信过程中的异常情况,保障车辆网络的正常运行。
3.2 J1939通信协议栈
J1939 通佩服务是对普通 CAN 通信栈的扩展,其同样基于CAN总线传输数据(扩展帧),专门用于重型车辆的车辆网络通信。它在重型车辆的电子系统中起着关键作用,确保车辆各部件之间能够高效、可靠地举行信息交互。具体有关于J1939协议的先容我们将在后续文章中单独先容。
CanTp 与 J1939Tp 的使用场景:在 CAN 栈中有两个传输协议模块,即 CanTp 和 J1939Tp,它们可以在不同通道上交替或并行使用。CanTp 告急用于 ISO 诊断(DCM)以及在标准 CAN 总线上传输大型协议数据单元(PDU);而 J1939Tp 则用于 J1939 诊断以及在 J1939 驱动的 CAN 总线上传输大型 PDU。这样的设计使得系统能够根据不同的应用场景和需求,机动选择符合的传输协议模块,进步了系统的适应性和机动性。
J1939通信协议栈的告急特点有:
实现独立性与基于 CAN:在实现上,J1939 通佩服务独立于微控制器(μC)和 ECU 硬件,这为其在不同硬件平台上的应用提供了便利,增强了软件的可移植性和通用性。同时,它是基于 CAN 的,继续了 CAN 总线的一些基本特性和上风,如可靠性高、实时性强等,但又在 CAN 的底子上举行了针对重型车辆网络通信的扩展和优化。
LIN 通佩服务是一组专门用于车辆网络中 LIN 通信系统的模块集合,在汽车电子系统的 LIN 网络通信中发挥着核心作用,确保车辆内各 LIN 节点之间能够顺畅地举行信息交互。同样的,其告急任务有:
提供同一 LIN 网络接口:为 LIN 网络提供一个同一的接口,使得应用层能够以一种简便、一致的方式与 LIN 网络举行通信,无需关心底层 LIN 通信的复杂细节和协议规范,大大低落了应用层开辟的难度和复杂度,进步了软件开辟效率。
隐藏协议与消息属性:将 LIN 通信的协议以及消息的具体属性对应用层举行隐藏,应用层只需关注要传输的数据内容,而无需深入相识 LIN 协议的帧格式、位定时、校验方式等底层技能细节,使开辟者能够更专注于应勤奋能的实现,提拔了开辟的便捷性和机动性。
LIN 通佩服务包罗内容有: 1、符合 ISO 17987 标准的通信栈:
调理表管理器(针对 LIN 主节点):用于处理切换到其他调理表的请求,确保 LIN 主节点能够按照预定的调理计谋有序地与 LIN 从节点举行通信,实现对 LIN 网络通信的高效管理和控制,保证数据传输的及时性和正确性。
不同 LIN 帧范例的通信处理:能够处理 LIN 网络中各种范例的帧,包括数据帧、事件触发帧、诊断帧等,满足不同应用场景下的数据传输需求,确保 LIN 网络能够适应车辆电子系统中多样化的通信要求。
用于诊断的传输协议:提供了专门用于诊断的传输协议,方便对 LIN 网络中的节点和系统举行故障诊断和状态监测,有助于快速定位和解决车辆电子系统中的问题,进步车辆的可靠性和可维护性。
叫醒和睡眠接口:具备叫醒和睡眠接口,实现 LIN 网络的节能管理。当车辆处于休眠状态时,LIN 网络可以进入低功耗的睡眠模式,而当必要叫醒时,通过该接口能够快速、可靠地将 LIN 网络叫醒,恢复正常通信,在保证车辆功能正常运行的同时,低落车辆的能耗。
2、底层 LIN 驱动:
实现 LIN 协议与硬件访问:负责实现 LIN 协议的具体细节,包括数据的编码、解码、错误检测等,并能够访问特定的硬件资源,如 LIN 控制器、收发器等,确保 LIN 通信能够在硬件层面上顺遂举行,是 LIN 通佩服务与硬件设备之间的桥梁。
支持多种 LIN 硬件:支持简单的 UART(通用异步收发传输器)和复杂的基于帧的 LIN 硬件,具有良好的硬件兼容性,能够适应不同范例的 LIN 硬件平台,为系统的硬件选型和集成提供了更大的机动性。
LIN 与 AUTOSAR 集成相干内容
LIN 接口的作用:LIN 接口控制叫醒 / 睡眠 API,并且答应从节点采用去中心化的方式保持总线叫醒状态。这种去中心化的叫醒机制使得 LIN 网络中的从节点能够在一定条件下自主控制总线的叫醒状态,进步了系统的机动性和可靠性,避免了因主节点故障导致整个 LIN 网络无法叫醒的情况。
LIN 状态管理器的功能:通信系统特定的 LIN 状态管理器负责处理与通信相干的启动和关闭特性,确保 LIN 网络在启动和关闭过程中能够按照预定的流程和时序举行操作,保证网络的稳定性和可靠性。此外,它还控制来自通信管理器的通信模式请求,和谐 LIN 网络的通信模式切换,以满足不同的通信需求。同时,LIN 状态管理器通过与 COM(通信模块)接口,控制 I-PDU(交互层协议数据单元)组,实现对数据传输的精细化管理和控制,确保数据能够正确、高效地在 LIN 网络中传输。
LIN 帧发送时的数据请求机制:当发送 LIN 帧时,LIN 接口会在必要数据(即正幸亏发送 LIN 帧之前)的时候,从 PDU 路由器请求该帧(I-PDU)的数据。这种实时的数据请求机制能够确保发送的数据是最新的,并且与当前的通信需求相匹配,进步了 LIN 网络数据传输的实时性和正确性。