- 博客(26)
- 资源 (6)
- 收藏
- 关注

原创 UDS系列讲解总目录
总目录欢迎大家来到《UDS系列讲解》。博主学习UDS的时间也不长,有一些心得体会与大家分享。后面会不定时更新。一、UDS入门篇二、UDS基础知识UDS常用缩写UDS中的定时器与时间参数三、UDS中的常用服务讲解...
2020-06-03 13:39:24
9853
2
原创 .mot文件解析
MOTOROLA S-Record的格式数据如下所示: <type> <length> <address> <data> <checksum><type>:标示记录的类型,该字段占据1-byte。它可以有如下数值:S0、S1、S2、S3、S4、S5、S6、S7、S8、S9。S0 -- 记录描述信息;S1, S2, S3记录存储的数据。这三者的区别在于地址长度不同;S5包含了S1, S2, S3的信息;S7, S8,S9确定程序的开始
2021-04-09 15:14:15
2288
原创 .lcf文件解析
.lcf文件是飞思卡尔使用的链接文件,用来控制编译器生成可执行文件或者二进制文件时的数据排列的方式。Lcf文件中首先是对整个memory map(MEMORY)地址空间内的所有RAM,ROM进行分割,将其分为几个区域,便于放置不同类型的存储内容,而这些区域内包含的内容可以是用户自定义的段或者系统预定义的段(SECTION)。一个工程通常在建立的时候默认的都是在RAM中执行,由于RAM中执行的效率高于FLASH。在生成的ROM Image中常量,初始化过的数据或者代码如果没有被定义在ROM区域则假设为这
2021-04-09 11:12:31
3214
原创 清除故障信息$14服务
一、服务说明诊断仪使用$14服务来清除一个或多个ECU内存中的诊断信息。$14服务没有子服务。二、服务应用当采用$14服务清除一个DTC时,服务ID后直接接DTC码即可;当采用$14服务清除所有DTC时,服务ID后接三个FF...
2021-03-22 15:03:45
2467
2
原创 通过标志符写数据$2E服务
一、服务说明通过标识符写数据服务(WriteDataByIdentifier )允许诊断仪将相关信息写入到数据标识符规定的ECU内部位置。通过本服务写入的DID数值应立即保存结果至EEPROM,由于EEprom写入时间较长,因此需要注意,必须要在完成全部EEPROM操作后,才能给出最终响应,若无法在规定时间内给出最终响应,应该启用增强型定时参数(NRC78)。执行此服务之前,ECU必须(must)通过安全访问服务($27)使其解锁。二、服务应用第一个字节为服务ID$22,第二个字节和第三
2021-03-17 16:50:42
1459
原创 通过标志符读数据$22服务
一、服务说明$22服务(ReadDataByIdentifier)通过标识符读数据服务允许诊断仪从一个或多个数据标识符(DID)的ECU中请求的数据记录的数值。诊断仪请求消息包含一个或多个占2个字节的DID,ECU通过此标识符标识记录的数据。从属性的角度来看,ECU中记录的数据可分为两部分:一部分是对所有ECU的通用性数据;另一部分是针对每个ECU的独立数据。通常通用型数据放在flash或者RAM中,只能读不能写,如软件版本号;独立数据放在EEprom或者模拟EEprom中,可读可写,如零件号。二
2021-03-17 16:30:45
1688
2
原创 DTC设置控制$85服务
一、服务说明DTC设置控制服务(ControlDTCSetting)简称CDTCS诊断服务,客户端通过该诊断服务停止或恢复诊断故障码的设置。开启DTC:子服务代码是0x01,服务器应该继续更新诊断故障码状态位关闭DTC:子服务代码是0x02,服务器应停止更新诊断故障码状态位当启用了DTC关闭后,若会话跳转到不支持$85服务,ECU应该继续更新DTC状态位信息;如果诊断仪发送$14服务,可以重置ECU状态位。需要注意的是,关闭DTC并不是关闭故障监控。二、服务应用第一个字节85表示DT
2021-03-17 14:10:39
2994
原创 KL15和汽车各个档位
KL是德语Klemme的缩写,意思是ECU的管脚、接线柱,和Pin意思相同,后面的数字代表不同的电源模式。KL15表示发动机的点火信号和启动车辆的信号KL15R,其中R表示Radio,用于启动车辆的仪表盘、中控、门窗等,但是发动机不启动。KL30表示蓄电池的正极,为各ECU进行低压供电,通常为11V~15V。KL31表示蓄电池的负极。KL30a表示12/24V输出设备的正极。KL40表示48V电池的正极。KL41表示48V的负极。KL50表示汽车的Crank 模式,点火档.
2021-02-04 10:45:37
4129
原创 BootLoader和App的诊断会话切换
上电或复位后,若有引导程序,ECU 首先执行引导程序,ECU执行一些基本的初始化,其中必须完成对CAN的初始化,同时开启延时定器, 然后检查外部重编程请求标志是否已设置。如果标志已经被设置,那么即使应用程序是有效的,引导也会继续进一步执行。在引导程序设置的延迟时间内判断是否有诊断报文,若有则也进入下载流程。如果当前没有重编程请求,则检验应用程序的状态。如果应用程序有效,则引导程序启动应用程序,应用程序在默认会话中启动,如果应用程序无效,ECU在默认会话模式等待。ECU处于应用程序会话时,诊断仪...
2020-11-16 10:24:55
4103
原创 ODX简单介绍
ODX的全称是Open diagnostic data exchange , 它是ASAM制定的标准架构诊断仪(MVCI ,Modular Vehicle Communication Interface )所使用的数据文件,从字面上我们可以知道,ODX是基于开放式诊断协议的数据库,可用于诊断数据的交换。MVCI的大体结构如下图所示:ODX是标准化格式的诊断文件,对诊断不同的车或ECU,只需要加载对应的ODX文件即可。同时由于格式的统一,诊断文件在研发到售后的整个生命周期里,不需要进行格式转换。比如说
2020-09-03 10:39:42
4883
原创 DTC的解析与状态掩码
返回UDS系列讲解总目录一、DTC的构成根据ISO 15031-6和ISO 14229-1的故障诊断码格式规定,故障码信息由四字节组成,如下表所示其中DTCHighByte,DTCMiddleByte,DTCLowByte表示服务中的故障诊断码;StatusOfDTC表示故障码状态。DTCHighByte,DTCMiddleByte两字节表示故障内码,对应5位标准故障码,如表下所示。5位标准故障码,第1位是字母,后面4位是数字,如P0120。第一位字母表示故障所属系统,我们把汽车系统
2020-08-07 14:19:23
33993
2
原创 UDS中数据的存储(FLASH/EEPROM/RAM)
UDS中数据的存储是一个容易混淆但又非常重要的点,下面我们就来简单捋一捋。ECU中用到的存储芯片通常有三种:FLASH,RAM,EEPROM,很多人都分不清楚这三种芯片有什么区别,其实是很好理解的。FLASH是一次写入,掉电数据不消失,也就是说只能在刷程序的时候写一次,我们不能调用2E服务对其进行操作。EEPROM可以多次写入,掉电数据不消失,我们可以通过2E服务多次重复写操作。RAM掉电消失,不能通过2E服务进行操作。因此针对这三种存储芯片的特点,我们对它们分别应用。FLASH只能写一次,而且
2020-08-04 13:54:19
4522
原创 安全访问$27服务
返回UDS系列讲解总目录一、服务描述该服务提供了一种保护机制,该机制用来保护访问限制的诊断服务。 加密策略采用种子和密钥相关联的方法。采用随机产生的种子,通过安全算法得到唯一的秘钥。若秘钥匹配正确则可以调用受到保护的诊断服务。秘钥核查过程如下所示:1) 客户端请求“种子”;2) 服务器发送“种子”;3) 客户端发送“密钥”(根据接收到的“种子”生成“密钥”);4) 服务器判断“密钥”是否合法,如果合法,则服务器解锁,否则服务器锁定;需要注意,会话模式切换、重置、安...
2020-08-03 15:39:31
4744
4
原创 复位$11服务
一、服务说明$11服务的功能是通过该服务控制ECU重启,通常用在调用完$2E服务后读数据看是否写入成功,刷写完成后也常调用$11服务重启。常用的子服务有三个:硬件重置:子服务代码是0x01,该服务模拟了服务器断开其电源之后通常会执行的流程,这可能导致易失性存储器和非易失性存储器初始化。点火重置:子服务代码是0x02,该服务模拟钥匙开关关闭后执行的流程。通常情况下非易失性存储器的值为保留值,易失性存储器初始化。软件重置:子服务代码是0x03,该服务可使ECU重启应用程序。若执行$11服务时
2020-08-03 13:22:07
2222
原创 诊断仪在线$3E服务
返回UDS系列讲解总目录一、服务描述$3E服务通过周期性地传输请求消息或者在没有其他诊断服务的时候启动,将一个或者多个ECU保持在非默认会话状态,防止服务器自动返回默认会话。这个服务的理解需要结合$10服务的特点。$10服务的非默认会话子服务——扩展会话和刷写会话通常支持$27服务,为了避免误操作,非默认回话在超过一定时间没收到请求消息时会自动跳回默认会话。但有时候我们需要长时间停留在非默认会话,这时候就需要调用$3E服务。因此$3E服务没有特定的对ECU操作的功能,仅仅只是发送一帧报文告诉EC
2020-08-03 11:27:55
2662
原创 通信控制$28服务
返回UDS系列讲解总目录一、服务描述$28服务主要用于关闭或者开启ECU的通信报文的传输或接收。简单理解,就是当你需要将CAN报文的收发关闭的时候就调用这个服务,$28服务可以单独对收或者发进行设置,控制ECU只能收报文或者只能发报文。$28服务常用的子服务有四个:启用收发:子服务代码是0x00,当ECU收发状态处于禁止时调用,开启通信。启用收禁用发:子服务代码是0x01,该服务调用后ECU只能收到报文而不能发送报文。禁用收启用发:子服务代码是0x02,该服务调用后ECU只能发送报文而不
2020-08-03 10:49:07
6329
1
原创 如何将.cs文件转化为.dll文件
步骤一:新建一个文本文件,将下列代码输入Path=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc /out:dll文件路径/t:library CS文件名称.csecho Done!pause步骤二:将路径改为你要保存的文件夹路径,如下所示:csc /out:C:\Desktop\Test.dll/t:library Test.cs步骤三:将文本保存为.bat格式后点击运行...
2020-07-22 11:24:06
1297
原创 UDS中常用的的否定响应代码
UDS中定义的否定响应代码非常多,但常用的只有以下这些:ServiceNotSupported/服务不支持($11 )当诊断仪发送的请求消息中服务标识符无法识别或不支持时,ECU应发送该响应码SubFunctionNotSupported/不支持子功能($12 )该响应码表明请求的动作不能执行的原因是ECU不支持请求消息中的服务特定参数。如果诊断仪已经发送了一请求消息,并且该请求消息包含能识别且支持的服务标识符,但子功能要么无法识别要么不支持,此时ECU应(shall)发送此响应代码In
2020-06-05 13:25:05
25242
原创 怎样学习ISO 14229和ISO 15765?
一、ISO 14229UDS协议就是ISO14229,你需要做的就是了解并牢固掌握ISO14229中的内容,但是14229里的内容实在是太多了,还没开始看就头疼了。从作者的学习经历来看,如果从头开始看14229是不切实际的,不但需要很长的时间,而且标准里面的描述非常生硬晦涩难懂,需要有极大的耐心,大可不必。学习没有捷径,但是学习是有方法的,因此,作者推荐初学者可以先从第八章、第九章、第十章、第十一章、第十三章、第十四章等服务介绍内容入手,如果学有余力,可以再将附表A中的内容大致了解一下。不用看得特别细致
2020-06-05 11:50:29
2751
原创 UDS入门
一、UDS是什么?UDS全称是Unified Diagnostic Services,即统一诊断服务。从字面“诊断”的意思理解就可以知道,它主要作用就是用来诊断汽车的故障的。当然啦,UDS的作用不仅限于此。它还可以用来进行汽车的下线检测,汽车下线时把VIN码、软硬件版本号、生产日期等信息写入汽车中的各个零部件中(ECU),以及一些其他的功能等等。二、为什么要做UDS?有人可能会问了,如果是要实现上面的那些功能,那自己定义一个接口就可以实现故障查询呀,写入就更简单了,为什么还要搞这么复杂。这就要解
2020-06-05 11:26:48
5170
原创 诊断会话控制$10服务
诊断会话控制服务是用于激活控制器中各种不同的会话模式的。诊断会话主要有三个子服务,分为两大类:默认会话和非默认会话。其中非默认会话又包括编程会话和扩展会话。默认会话:顾名思义,就是ECU在刚启动时保持的状态,当ECU复位的时候也是会返回默认会话,不需要超时处理。编程会话:刷写程序时用的,超时或者刷写失败时会跳转回默认会话,即ECU从底层软件跳转到应用软件。扩展会话:通常诊断用的大部分功能以及特殊功能都在这个会话模式下进行。ECU内部应始终且仅有一个激活的诊断会话。当上电时,ECU应总是首先启动默.
2020-06-03 13:38:18
5823
2
原创 动态dll文件的加载与卸载问题
刚开始用Assembly.LoadFile()和Assembly.LoadFrom()的方法加载dll文件,加载完后需要删除,发现删不了。Assembly asm = Assembly.LoadFile(@comm_dat.PATH.SeedkeyFilePath);后改用Assembly.Load()文件字节组替代,先将动态库里的数据读出来,再将数据加载,这样文件本身不会被锁住,就可以删除了。byte[] fileData = File.ReadAllBytes(@comm_dat.PATH.
2020-06-02 17:13:53
916
1
原创 UDS中的定时器与时间参数
P2定时器P2定时器是在默认会话模式下工作的,如果ECU无法在规定时间内完成对诊断服务的判断,服务器便向诊断仪发送延迟的负响应。参数P2CAN_ECU(即ISO 15765-3中的P2CAN_Server)表示从ECU接收到请求消息到开始发送响应消息之间的定时器性能要求数值。ECU必须确保一个单帧响应消息或者多帧响应消息的第一帧消息在P2CAN_ECU 时间内完成。参数P2*CAN_ECU(即ISO 15765-3中的P2*CAN_Server)表示从ECU发送了NRC为0x78的否定响应消息到
2020-05-22 17:35:07
15447
原创 “;”expected问题
这里写自定义目录标题“;”expected问题问题描述:编译时报期待分号错误问题分析:1、期待冒号分号等类似问题通常指这一行少了“;”如果行尾加了“;”,那肯定就是该行还存在两个连在一起的变量。2、该行程序如:extern UINT8 DID_USED_NUM;所示行尾是有“;”的,对每个变量进行定义查找,发现是字符类型没有定义,CW把字符类型也当做是变量了解决方法:对字符类型进行定义,问题解决。...
2020-05-22 10:13:33
14121
1
原创 UDS中的常用缩写
OBD On-Board Diagnostic 在线诊断/车载诊断UDS Unified Diagnostic Service 统一诊断服务DCM Diagnostic Communication Management 诊断通信管理ECU Electronic Control Unit 电子控制单元DID Data Identifier 数据标识符SID Servic...
2020-04-02 19:39:27
4482
4
原创 make: *** No rule to make target 错误原因、分析和解决办法
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2020-01-06 11:51:29
46562
4
酒店管理系统JAVA源代码
2018-12-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人