AUTOSAR与UDS

一、AUTOSAR基本概念

什么是AUTOSAR:
AUTOSAR全称为“AUTomotive Open System ARchitecture”,译为“汽车开放系统体系结构”;
AUTOSAR架构由应用层(Application Layer AP)、通信层(Communication Layer CP)和基础层(Foundation Layer FO)三个部分组成。
什么是CP:
Classic Platform(CP);
CP框架进行方法(软件开发作业的流程和输入输出的形式的定义)以及应用程序接口(API)的标准化;
CP架构在最高抽象级别上区分了在微控制器上运行的三个软件层:应用程序、运行时环境 (RTE) 和基本软件 (BSW)。
什么是AP:
Adaptive Platform(AP);
AP实现了 AUTOSAR Runtime for Adaptive Applications (ARA);
Adaptive标准主要针对自动驾驶和娱乐系统应用相关的标准;
AP有两种类型的接口可用:服务和 API。
什么是FO:
Foundation(FO);
FO目的是在 AUTOSAR 平台之间实现互操作性;
FO包含AUTOSAR平台之间共享的常见要求和技术规范;

二、UDS基本概念
什么是UDS:
UDS协议即ISO14229,全称Unified Diagnostic Services,统一诊断服务;
UDS不属于AUTOSAR,他们之间的关系,只是AUTOSAR提供了一些接口,可以与UDS进行集成;
在AUTOSAR架构中,应用层(Application Layer)提供了一些标准的应用程序接口(API),可以与诊断协议进行集成,这些诊断协议之中就包括UDS协议。而这些接口中也包含了DCM与DEM,虽然这两个名字与UDS中的类似,但是它们的实现方式与作用,有一些不同:
1、UDS协议中的DCM和DEM是用于实现通信管理和故障管理的两个服务。
2、AUTOSAR架构中的DCM和DEM是两个具体的模块,分别用于实现车辆诊断系统中的通信管理和故障管理功能,DCM和DEM还可以与其他模块和服务进行集成,例如CanTp、PduR等,实现更加复杂的车辆诊断和通信功能。

DCM和DEM是UDS协议栈的两个组成部分,属于应用层;
应用层是整个协议栈的核心部分,它定义了大部分的诊断服务和数据标识符,包括DEM和DCM服务;
UDS服务:
0x10 - Diagnostic Session Control:用于开启、关闭、切换诊断会话。
0x11 - ECU Reset:用于重置ECU,包括所有参数和存储的故障码。
0x18 - Read Trouble Codes:用于读取ECU存储的故障码,以便诊断故障。
0x14 - Clear Trouble Codes:用于清除ECU存储的故障码。
0x22 - Read Data By Identifier:用于读取ECU中特定的参数或数据流。
0x23 - Read Memory By Address:用于读取ECU中特定地址的内存数据。
0x3E - Tester Present:用于告知ECU诊断仪是否在线。
0x27 - Security Access:用于授权特定用户或设备访问ECU的安全功能。
0x31 - Routine Control:用于启动或停止ECU中特定的例程,例如重新初始化ECU。
0x34 - Request Download:用于ECU软件更新的数据下载请求。
0x35 - Request Upload:用于ECU软件更新的数据上传请求。
0x36 - Transfer Data:用于ECU软件更新时的数据传输。
0x37 - Request Transfer Exit:用于ECU软件更新时终止数据传输。
0x38 - Request File Transfer:用于ECU软件更新时的文件传输请求。
0x3D - Write Memory By Address:用于向ECU中特定地址的内存写入数据。

UDS协议栈:
应用层:定义了UDS服务和数据标识符,包括诊断会话的开启和关闭、读取和清除故障码、读取参数和数据流、重置ECU等服务。
会话层:提供了与ECU进行通信的接口,包括会话的开启和关闭,以及安全访问的验证。
传输层:定义了UDS数据传输的方式,包括传输协议(ISO 15765-2)、物理层(CAN、K线等)以及传输协议参数设置。
硬件接口层:将UDS协议栈与实际硬件接口(例如CAN总线)连接起来,实现数据的物理传输。
应用程序:实现诊断应用程序,使用UDS协议栈与ECU进行通信,并执行诊断和编程操作。
这些部分组成了UDS协议栈的整体架构,其中应用层是UDS协议栈的核心,定义了大部分诊断服务和数据标识符。
传输层和硬件接口层提供了数据传输的物理层面支持,而会话层则提供了与ECU进行通信的接口。应用程序则使用UDS协议栈来实现具体的诊断和编程操作。

什么是DCM:
DCM(Diagnostic Communication Manager)协议是UDS协议栈的一部分,用于管理诊断通信过程;
在 DCM 协议中,DSL 层和 DSD 层一起构成了 UDS 协议的会话层,负责管理会话的建立、维护和关闭,并提供了多种服务来满足诊断的需求。
DSP 层则是在底层物理通信协议之上实现的一层协议,用于确保诊断数据的可靠传输。
DCM协议包含:
DSP:第三层
Diagnostic Request(诊断请求):由ECU接收到的UDS诊断请求。
Diagnostic Response(诊断响应):ECU返回给诊断工具的UDS诊断响应。
DSD:第二层
Diagnostic Control(诊断控制):包括诊断会话的管理,例如会话的开始和结束。
Session Layer Management(会话层管理):用于管理会话层协议。
Security Access(安全访问):用于提供安全访问保护。
DSL:第一层
Port Management(端口管理):用于管理通信端口,例如CAN总线和诊断仪之间的通信端口。

DSL(Diagnostic Services Layer):DSL是DCM协议的第一层,用于管理诊断通信和建立诊断会话。包含端口管理,用于管理通信端口和建立诊断连接。
DSD(Diagnostic Session Layer):DSD是DCM协议的第二层,用于管理诊断会话,包括会话的开始、结束和切换等操作。包含诊断控制、会话层管理和安全访问,用于管理诊断会话和保证通信安全。

DSP(Diagnostic Service Processor):DSP是DCM协议的第三层,用于执行具体的诊断服务,例如读取故障码、清除故障码等。包含诊断请求和诊断响应,用于实现具体的诊断功能。
DCM包含的常用服务:

0x10 - DiagnosticSessionControl:用于建立会话、设置诊断的安全访问级别和时间限制等。
0x11 - ECUReset:用于重置 ECU(Electronic Control Unit,电子控制单元)。
0x19 - ReadDTCInformation:用于读取故障码信息。
0x22 - ReadDataByIdentifier:用于读取特定数据的值。
0x27 - SecurityAccess:用于访问受保护的服务和数据。
0x28 - CommunicationControl:用于控制通信的参数和行为。
0x2E - WriteDataByIdentifier:用于写入特定数据的值。
0x3E - TesterPresent:用于向诊断仪发送信号,表明 ECU 正在被测试。
0x85 - ControlDTCSetting:用于配置和控制故障码的存储和清除。

什么是DEM:
DEM(Diagnostic Event Mannger),用于处理诊断事件的信息和相关的数据,DCM模块通过服务请求可以获得这些数据。DEM模块主要是处理的DTC相关的数据;
服务代码是用于诊断事件管理的一组服务,用于读取和清除故障码以及管理故障事件等。以下是UDS中常用的DEM服务代码及其解释:
复制代码
0x04:ClearDiagnosticInformation(清除诊断信息):该服务代码用于清除存储在ECU中的诊断信息,例如故障码和诊断结果等。
0x19:ReadDTCInformation(读取DTC信息):该服务代码用于读取存储在ECU中的DTC信息,例如当前的故障码、历史故障码以及故障事件计数器等。
0x14:ClearDiagnosticInformationByAddress(通过地址清除诊断信息):该服务代码用于通过地址来清除存储在ECU中的诊断信息,例如RAM、NVRAM等。
0x14:ClearDTCInformation(清除DTC信息):该服务代码用于清除存储在ECU中的DTC信息,例如当前的故障码、历史故障码以及故障事件计数器等。
0x04:ReadDataByIdentifier(读取数据标识符):该服务代码用于读取存储在ECU中的数据标识符,例如车速、发动机转速等。它可以用于诊断和监控车辆状态。
至于有两个0x04、0x14,是因为在UDS中,他们有连个不同的用途。

你可能感兴趣的:(车载相关技术畅谈,linux,网络)