学习是个漫长且痛苦的过程,道路艰辛而曲折,希望我们都在时代的长河中做一颗闪闪发光的尘埃。只有持之以恒才能有所成就 ——Tom
目录
3,22服务:$22 F1 xx 读取相关指纹信息,VIN,钥匙编码等(具体根据车厂要求定义是否需要该服务)
9,34&36&37服务:开始下载传输Flash Driver
10,31服务:$31 xx xx ..... 例程控制,检查编程完整性
11,31服务:$31 xx xx ......例程控制,擦除程序
13,31服务:$31 xx xx.... 例程控制,检查编程完整性
14,31服务:$31 xx xx ..... 例程控制,检查编程兼容性
16,2E服务:2E xx xx ..... 写入本次升级的配置参数
系列目录:
《CANoe_UDS-Bootloader刷写系列-含源码(一)刷写基本流程》
《CANoe_UDS-Bootloader刷写系列-含源码(二)CAPL实现$10服务》
《CANoe_UDS-Bootloader刷写系列-含源码(三)CAPL实现$27服务密钥解锁》
《CANoe_UDS-Bootloader刷写系列-含源码(四)CAPL实现$34 & $36 & $37服务数据传输》
《CANoe_UDS-Bootloader刷写系列-含源码(五)CAPL实现$31服务例程控制》 --待续
《CANoe_UDS-Bootloader刷写系列-含源码(六)CAPL实现$22 & $2E 服务读写配置》
《CANoe_UDS-Bootloader刷写系列-含源码(七)CAPL实现$85 & $28服务预编程步骤》
《CANoe_UDS-Bootloader刷写系列-含源码(七)干货 CAPL实现CRC数据校验》
《CANoe_UDS-Bootloader刷写系列-含源码(八)干货 CANoe_Panel刷写上位机面板制作》
《CANoe_UDS-Bootloader刷写系列-含源码(九)CAPL框架全流程测试及报文分析-查漏补缺》
哈喽,大家好呀!哈哈哈哈哈~ 这是我第一篇文章,不知道要写啥,寻思只写一篇的话也不如直接写一个系列吧,省去很多麻烦,也让文章更整洁,易读。
Tom也在不断学习当中,后面学到的新知识会及时分享给大家, 走着
刷写基础篇-刷写流程
对于刚接触UDS刷写的小伙伴来说首先要明白诊断刷写的基本步骤和诊断发送原理,Tom博客内有相关ISO14229,ISO15765,ISO11898等系列中文翻译协议与相关测试用例,需要请自取!
本系列文章从操作步骤到CAPL源码一站式教你学习Bootloader刷写操作步骤(纯手打)哈哈哈~
本篇主要阐述一下FBL刷写基本流程,加深一下印象
UDS-BootLoader刷写分为三个步骤:预编程步骤,主编程步骤,后编程步骤。在刷写流程开始后,诊断设备需以S3client时间 以(0-2000ms)的周期功能寻址(F)发送诊断在线服务($3E 80),以保持总线上其它ECU的诊断会话;
$3E 00/80(肯定响应抑制位,即为周期性请求,目的为保持会话状态,无需回复响应)
注意:只有功能寻址的$3E 80才能做旁路处理,$3E 00进入到诊断处理会导致阻塞刷写失败。
诊断在线服务($3E)不能打断或影响ECU的任何其他服务
一,预编程步骤
预编程步骤是为刷写做准备,主要使用$85 和$28服务关闭通信和关闭DTC记录,本步骤包括功能寻址和物理寻址
功能寻址:一对多的发送
物理寻址:一对一的发送
1,10服务:$10 01 进入默认会话
诊断设备使用功能寻址发送该请求,建立通讯,为跳转到扩展会话做准备。
2,10服务:$10 03 进入扩展会话
诊断设备使用功能寻址发送该指令,在该会话下进行DTC和通信设置。
3,22服务:$22 F1 xx 读取相关指纹信息,VIN,钥匙编码等(具体根据车厂要求定义是否需要该服务)
使用物理寻址请求发送该指令
4,85服务:$85 02 关闭记录DTC
使用功能寻址请求发送该指令,如果在刷写过程中没有关闭DTC,则会记录不必要的DTC,所以需要在预编程步骤关闭
5,25服务:$28 03 03通讯报文控制
使用功能寻址请求发送该指令,如果在刷写过程中没有关闭通信报文,则会在刷写过程中继续发送和接受报文,干扰刷写导致刷写失败,所以需要在预编程步骤关闭
二,主编程步骤(正式编程)
主编程步骤也叫正式编程,由此开始进行Bootloader刷写
6,10服务:$10 02 进入编程会话
使用物理寻址发送该指令,在此会话下开始正式刷写
7,27服务:$27 01 $27 02安全访问/密钥解锁
使用物理寻址发送此服务,通过安全算法验证合法性
注:(27服务略显复杂,具体需要在上位机加入CRC校验等相关算法,通过27 01返回的正响应计算27 02密钥,后续Tom会专开一个文章来讲解如何CAPL实现27解锁)
8,2E服务:$2E xx xx ... 写入指纹信息
使用物理寻址请求发送该指令,写入本次发送的指纹信息记录等。附图仅作为演示
9,34&36&37服务:开始下载传输Flash Driver
$34 xx xx ...
$36 01 .......
$36 02 .......
...
$37
使用物理寻址请求发送该指令,下载
10,31服务:$31 xx xx ..... 例程控制,检查编程完整性
诊断设备使用物理寻址请求发送该指令,用来验证上一步的Flash Driver是否下载成功
11,31服务:$31 xx xx ......例程控制,擦除程序
诊断设备使用物理寻址请求发送该指令,使用FlashDriver程序擦除ECU中的应用程序,方便后续下载新应用程序。
12,34&36&37服务:开始下载传输ECU应用程序
$34 xx xx ...
$36 01 .......
$36 02 .......
...
$37
诊断设备使用物理寻址请求发送该指令,此文件根据具体项目大小决定传输时间,大概需要几分钟不等。
13,31服务:$31 xx xx.... 例程控制,检查编程完整性
诊断设备使用物理寻址请求发送该指令,用来验证上一步的ECU应用程序是否下载成功
14,31服务:$31 xx xx ..... 例程控制,检查编程兼容性
诊断设备使用物理寻址请求发送该指令,ECU接收到本指令后执行一段程序证明本次程序的下载和刷新工作成功
三,后编程步骤
到后编程步骤后Bootloader刷写基本完成,只需将软件进行复位,开启通信和DTC设置。写入本次刷写配置参数即可。
15,11服务:$11 01 复位
诊断设备使用功能寻址请求发送该指令
16,2E服务:2E xx xx ..... 写入本次升级的配置参数
诊断设备使用物理寻址请求发送该指令
17,28服务:$28 00 03
诊断设备使用功能寻址请求发送该指令,对所有ECU进行通讯报文打开。使本ECU能够发送和接受报文
18,85服务:$85 01 ... DTC设置
诊断设备使用功能寻址请求发送该指令,对所有 ECU 进行记 DTC 设置: DTC 设置类型为打开
至此,所有刷写的步骤就结束了,ECU已经是最新的程序,可以愉快的进行后续测试~
源码我会在后续专栏一一发布,敬请期待