![](https://img-blog.csdnimg.cn/d9a69849e9e240d78e03e850f66b095d.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
ISO 14229
文章平均质量分 75
基于ISO 14229 整理得到的个人的学习笔记
小趴菜_自动驾驶搬砖人
自动驾驶领域小白,希望跟大家一起学习自动驾驶相关内容。
展开
-
UDS(ISO14229)诊断服务功能及描述完结篇
文章目录前言一、诊断和通信管理功能单元1. 0x10(DiagnosticSessionControl)2. 0x11(ECUReset)3. 0x27(SecurityAccess)4. 0x28(CommunicationControl)5. 0x3E(TesterPresent)6. 0x83(AccessTimingParameter)7. 0x84(SecuredDataTransmission)8. 0x85(ControlDTCSetting)9. 0x86(ResponseOnEvent)1原创 2021-07-01 09:23:42 · 33749 阅读 · 3 评论 -
跟我学UDS(ISO14229) ———— 0x29(Authentication)
该服务的目的是为客户提供一种证明其身份的方法,允许其访问数据或诊断服务,这部分数据或服务因安全、排放或安全原因而受到限制。该服务致力于解决将例程或数据下载或上传到服务器并从服务器读取特定内存位置的诊断服务是可能需要身份验证的情况。不当程序或数据可能会损坏电子设备或其他车辆组件,或危及车辆遵守排放、安全或安保标准的风险。另一方面,从服务器检索数据也可能会违反数据安全性。该服务支持两个安全概念:1. 基于使用非对称加密的 PKI 证书交换程序。...原创 2022-08-08 12:06:14 · 5872 阅读 · 5 评论 -
跟我学UDS(ISO14229) ———— 0x19 服务参数介绍
相关链接:跟我学UDS(ISO14229) ———— 0x19(ReadDTCInformation)目录前言工作状态bit 作用说明bit 切换逻辑19 01(reportNumberOfDTCByStatusMask)请求正响应19 02(reportDTCByStatusMask)请求正响应19 03(reportDTCSnapshotIdentification)请求正响应前言 虽然在上面的文章中,介绍了 0x19(ReadDTCInformation) 服务。但是,对于初学者和项目来说,并不原创 2021-10-19 08:49:58 · 6474 阅读 · 0 评论 -
跟我学UDS(ISO14229) ———— 0x37(RequestTransferExit)
客户端请求终止数据传输。参数 transferRequestParameterRecord 记录包含服务器支持数据传输所需的参数。 这些参数的格式和长度是由主车厂定义的。诊断请求格式 具体的格式如下:正响应格式 具体的格式如下:负响应NRC码 具体的NRC码如下:...原创 2021-07-01 09:23:05 · 1906 阅读 · 2 评论 -
跟我学UDS(ISO14229) ———— 0x36(TransferData)
客户端将数据传输到服务器(下载)或从服务器请求数据(上传)。数据传输方向由前面的 RequestDownload 或 RequestUpload 服务定义。 如果客户端启动了 RequestDownload,则要下载的数据将包含在 TransferData 请求消息中的参数 transferRequestParameter 中。 如果客户端启动了 RequestUpload,则要上载的数据将包含在 TransferData 响应消息中的参数 transferResponseParameter中。Tran原创 2021-06-30 08:38:20 · 4399 阅读 · 3 评论 -
跟我学UDS(ISO14229) ———— 0x35(RequestUpload)
客户端请求从服务器到客户端的数据传输。服务器收到requestUpload请求消息后,服务器应采取所有必要的措施在发送肯定响应消息之前发送数据。在这里,ISO 14229 中并没有明确定义需要采用什么措施来确保接受数据的可行性。因此,需要额外关注主车厂给到的相关措施。诊断请求格式 具体的格式如下:参数 memoryAddress 与 memorySize 的长度均取决于参数 addressAndLengthFormatIdentifier。message data parameter de原创 2021-06-29 08:21:54 · 2485 阅读 · 0 评论 -
跟我学UDS(ISO14229) ———— 0x34(RequestDownload)
客户端请求从客户端到服务器的数据传输。服务器收到 requestDownload 请求消息后,服务器应在发送肯定响应消息之前采取所有必要的措施来接收数据。在这里,ISO 14229 中并没有明确定义需要采用什么措施来确保接受数据的可行性。因此,需要额外关注主车厂给到的相关措施。我所在项目的要求是:进入ProgrammingSession 会话模式下,并对安全访问进行解锁之后才能进行数据的传输。诊断请求格式 具体的格式如下:参数 memoryAddress 与 memorySize 的长度均取决于原创 2021-06-28 08:43:17 · 4894 阅读 · 2 评论 -
跟我学UDS(ISO14229) ———— 0x31(RoutineControl)
客户端请求启动/停止服务器中的例程或请求例程结果。客户端使用 RoutineControl 服务来控制 RID,RID 由两字节的例程标识符标识。具体的控制类型有以下三种:第一种: 启动 RID;第二种: 停止 RID;第三种: 查询 RID 执行结果。这里对 RID 的三种控制类型做一个详细的介绍:启动 RID 如果对诊断请求的响应是肯定或否定,则表明该请求已被执行或正在进行中,例程将从 StartRoutine 请求消息完成到第一响应消息完成之间的某个时间在服务器的内存中启动。例程可以是运行,原创 2021-06-24 08:39:09 · 9352 阅读 · 7 评论 -
跟我学UDS(ISO14229) ———— 0x2F(InputOutputControlByIdentifier)
请求控制特定于服务器的输入/输出。客户端请求消息包含一个dataIdentifier,用于引用服务器的输入信号,内部服务器功能和/或输出信号(执行器)(在设备控制访问的情况下,它可能引用一组信号)。 controlOptionRecord参数应包含服务器的输入信号,内部功能和/或输出信号所需的所有信息。 (可选)请求消息可以包含controlEnableMask,如果将controlState#1用作inputOutputControlParameter,则可能存在该控件并且要控制的dataIdentif原创 2021-06-23 08:42:19 · 3047 阅读 · 1 评论 -
跟我学UDS(ISO14229) ———— 0x19(ReadDTCInformation)
该服务允许客户端从服务器请求诊断信息(包括 DTC,捕获的数据等)。该服务允许客户端从车辆内的任何服务器或服务器组读取服务器驻留诊断故障代码(DTC)信息的状态。 除非另有说明,否则服务器应返回与排放有关的 DTC 信息和与排放无关的 DTC 信息。 该服务允许客户端执行以下操作:—— 检索与客户端定义的 DTC 状态掩码匹配的 DTC 数量(在请求时);—— 检索与客户端定义的 DTC 状态掩码匹配的所有 DTC 的列表;—— 检索与客户端定义的 DTC 和状态掩码组合相关联的 DTC Snap原创 2021-06-22 08:16:39 · 7806 阅读 · 0 评论 -
跟我学UDS(ISO14229) ———— 0x3D(WriteMemoryByAddress)
该服务是客户端请求覆盖指定的内存范围。该服务会将参数 dataRecord 指定的数据写入由参数 memoryAddress 和 memorySize 指定的存储位置的服务器中。memoryAddress 和 memorySize 参数的字节数由addressAndLengthFormatIdentifier(低半字节和高半字节)定义。 还可以在 memoryAddress 或 memorySize 参数中使用固定的 addressAndLengthFormatIdentifier 和未使用的字节在较高原创 2021-06-21 08:25:42 · 2024 阅读 · 0 评论 -
跟我学UDS(ISO14229) ———— 0x2E(WriteDataByIdentifier)
该服务是请求写入提供的 DID 指定的数据。该服务允许客户端在由提供的 DID 指定的内部位置将数据写入服务器。数据并且可能会受到保护,也有可能不受到保护。0x2C(DynamicallyDefineDataIdentifier)服务不得与此服务一起使用。 在执行此服务时,如何满足写入的条件应有主车厂定义清楚。 该服务的可能用途是:—— 将配置信息编程到服务器中(例如VIN号码);—— 清除非易失性存储器—— 重置学习价值—— 设置选项内容。服务器可以限制或禁止对某些 DID 值(由系统原创 2021-06-17 08:27:27 · 3340 阅读 · 0 评论 -
跟我学UDS(ISO14229) ———— 0x2C(DynamicallyDefineDataIdentifier)
客户端请求动态定义数据标识符,这些数据标识符随后可以由 0x22(ReadDataByIdentifier) 服务读取。该服务的目的是为客户端提供将一个或多个数据元素分组为数据超集的功能,可以通过 0x22(ReadDataByIdentifier) 或0x2A(ReadDataByPeriodicIdentifier) 服务进行整体请求。动态定义的 dataIdentifier 会将包含数据参数定义的串联。分组的数据元素可以由以下任何一个组成:—— 源数据标识符,位置和大小—— 内存地址和内存长度原创 2021-06-16 08:28:47 · 4081 阅读 · 0 评论 -
跟我学UDS(ISO14229) ———— 0x14(ClearDiagnosticInformation)
该服务允许客户端从服务器清除诊断信息(包括 DTC,捕获的数据等)。完全处理该服务后,服务器应发送肯定响应。即使没有存储任何DTC,服务器也应发送肯定的响应。 如果服务器支持内存中 DTC 状态信息的多个副本(例如,RAM中的一个副本和EEPROM中的一个副本),则服务器应清除 ReadDTCInformation 状态报告服务使用的副本。其他副本,例如长期记忆中的备份副本会根据适当的备份策略进行更新(例如,在电源锁存阶段)。如果电源闩锁阶段受到干扰(例如,在电源闩锁阶段断开电池连接),则可能导致数据不原创 2021-06-14 08:16:06 · 3068 阅读 · 0 评论 -
跟我学UDS(ISO14229) ———— 0x2A(ReadDataByPeriodicIdentifier)
客户端请求调度服务器中的数据以进行定期传输。该服务允许客户端从服务器请求由一个或多个 PeriodicDataIdentifiers 标识的数据记录值的定期传输。dataRecord 的格式和定义应特定于车辆制造商,并且如果服务器支持,则可以包括模拟输入和输出信号,数字输入和输出信号,内部数据和系统状态信息。在收到除 stopSending 以外的 ReadDataByPeriodicIdentifier 请求时,服务器应检查条件是否正确以执行服务。如果条件正确,则服务器应发送肯定的响应消息,仅包括服务原创 2021-06-09 08:21:51 · 3722 阅读 · 1 评论 -
跟我学UDS(ISO14229) ———— 0x24(ReadScalingDataByIdentifier)
该服务允许客户端请求读取DID记录的缩放信息。客户端请求消息包含一个DID值,该值标识服务器维护的数据记录(有关允许的dataIdentifier值,请参阅下方表格)。 dataRecord的格式和定义应特定于车辆制造商,并且如果服务器支持,则可以包括模拟输入和输出信号,数字输入和输出信号,内部数据和系统状态信息。在收到ReadScalingDataByIdentifier请求后,服务器应访问与指定的dataIdentifier参数关联的缩放信息,并在一个ReadScalingDataByIdentifie原创 2021-06-07 08:38:43 · 6689 阅读 · 5 评论 -
跟我学UDS(ISO14229) ———— 0x23(ReadMemoryByAddress)
客户端请求读取提供的内存范围的当前值。该服务允许客户端通过提供的起始地址从服务器请求内存数据,并指定要读取的内存大小。 该服务请求消息用于从由参数memoryAddress和memorySize标识的服务器请求内存数据。对于memoryAddress和memorySize参数的字节数由addressAndLengthFormatIdentifier定义。 也可以使用固定的addressAndLengthFormatIdentifier,在memoryAddress或memorySize参数中未使用的字节在较原创 2021-06-01 08:40:26 · 4608 阅读 · 0 评论 -
跟我学UDS(ISO14229) ———— 0x22(ReadDataByIdentifier)
客户端请求读取由提供的dataIdentifier标识的记录的当前值。该服务允许客户端从服务器请求由一个或多个 DID 标识的数据记录值。客户端请求消息包含一个或多个两字节的DID值,这些值标识服务器维护的数据记录。 dataRecord的格式和定义应特定于车辆制造商或系统供应商,并且如果服务器支持,则可以包括模拟输入和输出信号,数字输入和输出信号,内部数据和系统状态信息。**服务器可以限制车辆制造商和系统供应商所同意的可同时请求的DID的数量。**收到ReadDataByIdentifier请求后,服务原创 2021-05-31 08:43:58 · 5335 阅读 · 0 评论 -
跟我学UDS(ISO14229) ———— 0x87(LinkControl)
客户端请求控制通信波特率。LinkControl服务用于控制客户端和服务器之间的通信链接波特率,以交换诊断数据。 该服务可选地应用于那些数据链路层,这些数据链路层允许在活动诊断会话期间进行波特率转换。在实现转换数据链路层的波特率过程中,将整个流程划分为两个步骤。主要是为了克服功能性通信,即必须同时在多个服务器中转换波特率。步骤1:客户端验证是否可以执行转换,并通知服务器要使用的波特率。在客户端执行步骤2之前,要求每个服务器都应作出肯定响应。但此步骤并不执行波特率转换。步骤2:客户端实际上请求转换波特率原创 2021-05-27 15:05:06 · 1989 阅读 · 0 评论 -
跟我学UDS(ISO14229) ———— 0x86(ResponseOnEvent)
客户端请求启动服务器中的事件机制。该服务是请求服务器启动或停止对指定事件的响应的传输。如果服务器中发生指定的事件,此服务提供了自动执行诊断服务的可能性。 客户端指定事件(包括可选的事件参数)和事件发生时要执行的服务(包括服务参数)。 有关客户端和服务器行为的简要概述,请参见下图:注意:上图的流程中是假定事件窗口计时器配置为在服务器掉电之前超时,因此最终的ResponseOnEvent肯定响应消息显示在事件计时窗口的末尾。服务器应在接收时评估ResponseOnEvent请求消息的子功能和数据内容。 这包原创 2021-05-25 10:36:46 · 3828 阅读 · 1 评论 -
跟我学UDS(ISO14229) ———— 0x85(ControlDTCSetting)
客户端应使用ControlDTCSetting服务停止或恢复服务器中诊断故障代码(DTC)的设置。该服务请求消息可用于停止在单个服务器或一组服务器中设置诊断故障代码。如果被寻址的服务器不能停止诊断故障代码的设置,则它应以ControlDTCSetting否定响应消息作为响应,指示拒绝原因。一旦执行了将子功能设置为“ on”的ControlDTCSetting请求或发生会话层超时(服务器转换为defaultSession),DTC状态位信息的更新将继续。如果活动会话中支持该服务且请求了该请求,则服务器仍应发送原创 2021-05-24 08:26:56 · 3843 阅读 · 0 评论 -
跟我学UDS(ISO14229) ———— 0x27(SecurityAccess)
文章目录前言一、发送seed请求二、发送key密钥正响应格式前言为什么需要安全访问?因为在下载/上传的诊断服务例行程序或数据进入服务器并从服务器读取特定的内存位置的情况是可能需要安全访问。 不正确的例程或数据下载到服务器中可能损坏电子设备或其他车辆部件,或冒着车辆遵守排放,安全或安全标准。所以,安全访问还是很重要的。如何解锁安全模式?具体的流程又是怎样的?第一步:客户端发送seed请求第二步:服务端发出seed第三步:客户端发送key密钥,依据服务发出的seed进行处理第四步:服务端分析客户端原创 2021-05-13 11:49:38 · 8961 阅读 · 5 评论 -
跟我学UDS(ISO14229) ———— 0x84(SecuredDataTransmission)
客户端使用此服务以扩展的数据链路安全性执行数据传输。此服务主要是在传输数据的过程中,防止受到来自第三方的危害数据安全的数据攻击,更详细的介绍请参考 ISO 15764。也可以用于在客户端和服务器之间以安全模式传输符合某些其他应用程序协议的外部数据。 在这种情况下,安全模式意味着所传输的数据受到保护。这里引入另外一个概念:Scurity sub-layer 在另外一个ISO标准(ISO 15746)中的定义如下。为了在安全模式下执行诊断服务,必须在服务器和客户端应用程序中添加Security sub-lay原创 2021-05-20 08:38:02 · 2532 阅读 · 4 评论 -
跟我学UDS(ISO14229) ———— 0x83(AccessTimingParameter)
该服务用于在该通信链路处于活动状态的持续时间内读取和更改该通信链路的默认时序参数。该服务的使用较为复杂,并且跟服务器的容量与数据链路的拓扑结构有着紧密的关联。每个诊断会话模式仅支持一个扩展定时参数集。由于服务器支持的扩展定时参数集不同,建议仅将此服务与物理寻址一起使用。具体的建议如下:⎯ DiagnosticSessionControl (诊断模式) service⎯ AccessTimingParameter (读取扩展定时参数) service⎯ AccessTimingParameter (赋原创 2021-05-18 17:07:26 · 2551 阅读 · 4 评论 -
跟我学UDS(ISO14229) ———— NRC码
在学习ISO 14229的过程中,我们肯定会接触到正负响应,而负响应的错误码(NRC码)是我们判断为什么出现负响应的重要判断依据。那么,在ISO 14229 中,有哪些NRC码是定义好了的?又有哪些是还没有被定义的?请查看下方的表格:...原创 2021-05-17 15:57:49 · 69176 阅读 · 14 评论 -
跟我学UDS(ISO14229) ———— 0x3E(TesterPresent)
该服务用于向一个或多个服务器指示客户端仍连接到车辆,并且先前已激活的某些诊断服务和/或通信将保持活动状态。按照我的理解就是,当你进入到某一个模式(非DefaultSession/安全解锁)下,你需要发送3E 服务来维持在该状态下,否则就会退出到默认模式下。这也是一个3E服务的重要测试点。另外,在自动化的过程中,也需要考虑到这个模式的使用,否则会出现在一系列的错误。一、诊断请求具体的格式定义如下:这里需要对sub-function参数进行一个说明:该函数只支持请求定义中的 0x00与 0x80。这与原创 2021-05-17 09:32:01 · 6613 阅读 · 0 评论 -
跟我学UDS(ISO14229) ———— 0x28(CommunicationControl)
该服务主要运用于控制某些类型数据的收发。因为在项目中只是验证该服务是否能够正常生效,并没有做更深入的研究。这里主要以介绍为主。诊断请求格式具体的格式要求如下:关于controlType的参数说明请看下方表格:HexNameDescription00enableRxAndTx启用消息接受与传输01enableRxAndDisableTx启用消息接收,禁用消息传输02disableRxAndEnableTx禁用消息接收,启用消息传输03disabl原创 2021-05-14 17:12:38 · 4001 阅读 · 0 评论 -
跟我学UDS(ISO14229) ———— 0x11(ECUReset)
qwrq原创 2021-05-12 16:36:08 · 5837 阅读 · 2 评论 -
跟我学UDS(ISO14229) ———— 0x10(DiagnosticSessionControl)
文章目录前言为什么需要有不同的诊断会话模式呢?诊断请求发送发送格式前言在UDS协议中,我们首先接触到的是诊断和通信管理功能单元(Diagnostic and communication management functional unit)模块。在这个模块里面,DiagnosticSessionControl是我们第一个需要掌握的内容。按照ISO 14229上面的划分,我们可以将诊断会话模式分为两大类;一类是DefaultSession;另一类是OtherSession。该服务的作用是:用于在服务器中启原创 2021-04-23 17:27:59 · 11729 阅读 · 1 评论