UDS学习笔记(六)——基于UDS的程序烧写流程

 

 

在学习了这么多的服务之后,我们就可以正式开始学习程序烧写流程这一环节了。根据ISO14229提供的文档或者网上的很多资料都能知道,程序烧写可以分为三大流程:预编程阶段,编程阶段,后编程阶段。本文也是根据这三大流程进行一步步的分析的。

预编程阶段

里面的有的步骤不是必须的

预编程阶段的功能是使ECU进入到刷写状态。首先我们要进入到扩展模式,使用的是10服务中的03子服务进入到扩展模式。

切换扩展模式:    02 10 03 XX XX XX XX XX (10表示切换模式,03表示扩展模式)

之后设置禁止故障码,则使用的是85服务中的02子服务来关闭ECU存储DTC的功能。

禁止故障码:      02 85 02 XX XX XX XX XX (85表示DTC,02表示OFF)

之后是使用28服务的03子服务表示关闭非刷写数据流,同时使用01参数表示关闭的通讯类型为普通应用报文。(预编程的必须进行的三步,其他步骤可选)

关闭刷新数据:    03 28 03 01 XX XX XX XX (28表示通讯控制,03表示关闭接收和发送,0x1代表普通应用报文)

编程阶段 

 编程阶段要对原来的程序进行擦除,如图,首先要进入编程(刷新)模式。

切换编程模式:    02 10 02 XX XX XX XX XX (10表示切换模式,02表示编程模式)

进入编程模式之后,就需要进行解锁了。解锁的步骤就是向控制器发生请求“seed”,然后控制器回复“seed”对应的数据。诊断仪对回复的数据加上自己预设的密码之后再回复给控制器,控制器校验成果后就可以进入下一步了。安全校验需要算法才能进行,因此具体怎么回复不同控制器都不一样。参考文章

安全校验: 02 27 05 XX XX XX XX XX XX (27表示安全服务,05表示seed)

在完成安全验证之后,就要对控制器的应用区进行擦除了。擦除使用的是0x31服务。值得注意的是,在这里需要使用到多帧传输模式。多帧传输中,首诊的前两位被ISO15765占用了。同时有一个addressAndLengthFormatIdentifier,用于指示后面两个部分所占用的字节,高4bit表示memorySize所占的字节长度,低4bit表示memoryAddress

擦写控制器 10 0D 31 01 FF 00 44 XX (10中的1表示首帧,后面的D表示有效数据位数为13位,31表示31号服务,01表示开启服务,FF与后面的00表示擦除服务,44翻译成中文为地址与数据标识,XX表示地址的高两位)
连续帧 21 XX XX XX YY YY YY YY (XX表示地址,YY表示数据的大小)

 

在擦除完数据后,就是开始传输数据了,首先我们要设置上传数据的大小以及地址。

请求上传数据 10 0B 34 00 44 XX XX XX (10中的1表示首帧,后面的D表示有效数据位数为11位,34表示请求上传数据服务,00表示数据格式未加密,,44翻译成中文为地址与数据标识,XX表示地址高位)
连续帧 21 XX YY YY YY YY (XX表示地址,YY表示数据从高到底的大小)

这时候控制器会回复一串数据,用来表示块大小,表示一次性能够上传多少组数据。

之后便是使用36服务进行传输数据 了,这一部分涉及到大量的数据,因此在这里也无法完全写出来。使用完36服务后再通过37服务进行检查后就完成数据传输。(34服务可以一次性请求,然后通过多帧传输不停传输数据就好)

数据校验 02 37 00 (37表示进行数据校验,00表示校验mode)

以上就是编程阶段的数据代码简介,如果有什么问题,以后再进行补充。

后编程阶段

后编程阶段功能就是重启控制器然后将诊断对话切换为正常模式。

  • 27
    点赞
  • 217
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
基于CAN盒编写UDS诊断程序是指利用CAN通信协议来实现统一诊断服务(Unified Diagnostic Services, UDS)的诊断程序UDS是由国际标准组织制定的一种用于车辆诊断和程序编程的通信协议。 CAN盒是一种硬件设备,用于连接车辆的CAN总线和诊断设备。它可以接收和发送CAN消息,提供对车辆CAN数据的读取和控制能力。 编写UDS诊断程序需要以下步骤: 1. 确定诊断需求:根据需要对车辆进行故障诊断、参数配置等需求,明确诊断操作和要求。 2. 准备CAN盒:选用合适的CAN盒,确保它具备与车辆CAN总线通信的能力,并配置好硬件连接。 3. 编写CAN通信模块:使用CAN通信接口的API,通过CAN盒与车辆CAN总线进行通信。建立和管理CAN通信连接,发送和接收CAN消息。 4. 实现UDS协议逻辑:根据UDS协议规范,编写相关代码实现诊断服务的逻辑。包括创建和解析UDS报文、处理诊断请求和响应、完成各种诊断功能。 5. 测试和调试:使用合适的车辆模拟器或真实车辆,对编写的UDS诊断程序进行测试与调试。验证程序的功能和性能,进行必要的修改和优化。 6. 部署和应用:将编写好的UDS诊断程序部署到适合的诊断设备上,例如车辆诊断仪、OBD扫描工具等。应用于实际的车辆诊断场景中,完成相应的诊断任务。 基于CAN盒编写UDS诊断程序能够有效地实现车辆的诊断和编程操作。通过CAN通信协议的高效性和灵活性,结合UDS协议的标准化和通用性,可以实现对车辆故障的诊断、参数的配置和调整等功能,提高了车辆维护和故障排查的效率。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值