打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
UDS bootloader刷写报文实例解析

最近有同事问起UDS的事情,为了熟悉14229当时还写过简易的tester上位机,录了报文。

UDS的全称叫通用诊断规范,主要的功能分为故障诊断和刷写两个部分,14229就是通用诊断规范的具体协议,规定了tester和ECU之间的通讯方式方法。对于协议中的内容是也就是子功能的内容是由主机厂自行规定,所以每个主机厂都有自己的诊断规范。

主机厂会根据自己的车型分配CAN网络的ID给UDS使用,故障定义分配DTC故障码给UDS使用,定义冻结帧列表给UDS使用,定义数据流的DID,识别UDS的子功能,

文章的最后有一个刷写的报文数据流,用于展示UDS的刷写过程框架,对于UDS数据流的具体细节会在以后的文章中体现,

1,UDS地址

  • UDS地址分为持物理寻址和功能寻址,物理地址像是广播帧,暂时假设功能寻址请求ID= KillBug,ECU回复ID=godKnow,物理寻址请求ID=Fixdall,

2,DTC故障码

  • DTC故障码有一个编写规则,该数字码代表了一个故障,详细见图

DTC故障码命名规则

3,冻结帧列表

  • 冻结帧是对应的故障发生时刻需要锁定的标量数据,存储到ECU中,为故障排查过程提供数据支持,但是冻结帧受到存储空间大小和存储过程对CPU消耗的影响不能存储过多,另外单个上电周期同一故障的存储次数同样需要谨慎处理,

4,DID列表

  • DID是两个字节的数字,UDS通讯传输过程中具体的传输的数据代表的实际意义,比如:F183表示bootloader版本,F184表示硬件版本,

5,刷写的报文数据流实例

  • 先要介绍下UDS的服务

    • 基本每个UDS服务又有子服务详细的可以参考14229,比如:10服务下就有01,02,03三个子服务,01代表常规会话,02代表刷写会话,03代表扩展会话,每个会话有对应的权限,有些服务只能在指定的会话下执行,参见 'UDS服务列表’图,

UDS服务表

  • UDS 的服务包括:

    • 10服务:诊断会话的控制,

UDS会话

  • 11服务:ECU复位控制

  • 27服务:密钥密匙的安全控制

UDS_27服务

    • 28服务:通讯功能控制

    • 3E服务:tester 在线控制

    • 85服务:DTC设置的控制

    • 22服务:根据DID读取数据

    • 2E服务:根据DID写入数据

    • 2F服务:一些输入输出口的控制,一些外设比如IO等的控制等

    • 14服务:清空诊断信息

    • 19服务:读取DTC的信息

    • 31服务:刷写的控制,开始,停止以及检查是否满足刷写状态等

    • 34服务:请求下载

    • 36服务:开始传输数据

    • 37服务:请求传输退出

  • UDS报文刷写实例及解析

    • 每一帧CAN报文都是8个字节

    • KillBug 8 02 10 01 00 00 00 00 00

      • //与上位机连接,请求CANID:KillBug,CAN报文的字节长度:8,UDS服务有效字节数:02,UDS服务:10,子服务:01,

    • godKnow 8 06 50 01 00 32 00 C8 AA

      • //上面请求的回复,回复CANID:godKnow,CAN报文的字节长度:8,UDS服务有效字节数:06,UDS服务:10 40,子服务:01,

    • Fixdall 8 02 10 03 00 00 00 00 00

      • //进入扩展会话,请求CANID:KillBug,CAN报文的字节长度:8,UDS服务有效字节数:02,UDS服务:10,子服务:03,

    • KillBug 8 04 31 01 02 03 00 00 00

    • godKnow 8 03 7F 31 33 AA AA AA AA

      • //刷写的控制,请求CANID:KillBug,CAN报文的字节长度:8,UDS服务有效字节数:04,UDS服务:31,子服务:01,DID:0203 ,其中 子服务:01=开始刷写,使能刷写,DID:0203=检测刷写条件是否满足,

  • Fixdall 8 02 85 02 00 00 00 00 00

  • godKnow 8 02 C5 02 AA AA AA AA AA

    • //DTC控制,请求CANID:Fixdall,CAN报文的字节长度:8,UDS服务有效字节数:02,UDS服务:85,子服务:02,其中 子服务02:停止DTC的记录,

  • Fixdall 8 03 28 03 01 00 00 00 00

  • godKnow 8 02 68 03 AA AA AA AA AA

    • //DTC控制,请求CANID:Fixdall,CAN报文的字节长度:8,UDS服务有效字节数:03,UDS服务:28,子服务:03,01,其中 子服务03:禁止CAN报文的发送和接受, 子服务03后的01表示:禁止的CAN报文类型是普通报文,不包括UDS自身的报文,

  • KillBug 8 03 22 F1 83 00 00 00 00

  • godKnow 8 10 0D 62 F1 83 42 43 55

  • KillBug 8 30 00 00 00 00 00 00 00

  • godKnow 8 21 20 15 04 21 32 30 30

    • //UDS服务有效字节数:03,UDS服务:22,DID:F183,其中DID F183: 表示读取bootloader版本,该DID由主机厂定义,

  • KillBug 8 02 10 02 00 00 00 00 00

  • godKnow 8 06 50 02 00 32 00 C8 AA

    • //UDS服务有效字节数:02,UDS服务:10,子服务:02,其中子服务02:表示ECU进入刷写会话,

  • KillBug 8 02 27 11 00 00 00 00 00

  • godKnow 8 06 67 11 04 01 0B 65 AA

    • //UDS服务有效字节数:02,UDS服务:27,子服务:11,其中子服务11:表示请求密钥,

  • KillBug 8 06 27 12 92 91 11 6E 00

  • godKnow 8 02 67 12 AA AA AA AA AA

    • //UDS服务有效字节数:02,UDS服务:27,子服务:12,其中子服务12:表示请接收计算好的密匙,

  • KillBug 8 10 0C 2E F1 84 00 00 00

  • godKnow 8 30 00 01 AA AA AA AA AA

  • KillBug 8 21 00 00 00 00 00 00 AA

  • godKnow 8 03 6E F1 84 AA AA AA AA

    • //UDS服务有效字节数:0C,UDS服务:2E,DID:F184,其中0C前面的10表示传输的是多帧数据,流控帧稍后整理资料介绍,DID F184:表示硬件版本 这又主机厂自行定义,

  • KillBug 8 10 0B 34 00 44 D4 00 00

  • godKnow 8 30 00 01 AA AA AA AA AA

  • KillBug 8 21 00 00 00 05 00 AA AA

  • godKnow 8 04 74 20 01 02 AA AA AA

    • //write=34 写入的其实地址和数据量的大小,UDS服务有效字节数:0B,UDS服务:34,其中服务34表示请求下载,0C前面的10表示传输的是多帧数据,流控帧稍后整理资料介绍,

UDS 34服务解析

  • KillBug 8 11 02 36 01 82 12 82 00

  • godKnow 8 30 00 01 AA AA AA AA AA

    • //UDS服务有效字节数:02,UDS服务:36,其中服务36表示请求传输,36后面的01是有意义的,表示数据块的计数器,34服务后的第一个36的数据块是01,之后累加,直到FF,这之后变成00继续累加,

  • //..........此处省略被刷写的数据..........

  • KillBug 8 01 37 00 00 00 00 00 00

  • godKnow 8 01 77 AA AA AA AA AA AA

    • //UDS服务有效字节数:01,UDS服务:37,其中服务37请求传输退出,

  • KillBug 8 10 08 31 01 02 02 3B 2B

  • godKnow 8 30 00 01 AA AA AA AA AA

  • KillBug 8 21 61 06 AA AA AA AA AA

  • godKnow 8 05 71 01 02 02 01 AA AA

    • //当刷写完成后,需要恢复之前的状态,UDS服务有效字节数:08,UDS服务:31,子服务:01,服务31:表示刷写控制,子服务01:表示使能使能服务,0202:表示检查数据CRC结果,

  • KillBug 8 04 31 01 FF 01 00 00 00

  • godKnow 8 05 71 01 FF 01 00 AA AA

    • //UDS服务有效字节数:04,UDS服务:31,子服务:01,服务31:表示刷写控制,子服务01:表示使能使能服务,FF01:有主机厂定义,表示检查APP的刷写完成标志,

  • KillBug 8 10 09 2E F1 99 16 02 17

  • godKnow 8 30 00 01 AA AA AA AA AA

  • KillBug 8 21 09 40 21 AA AA AA AA

  • godKnow 8 03 6E F1 99 AA AA AA AA

    • //刷写完成后,写入当下时间戳,

  • KillBug 8 02 11 01 00 00 00 00 00

  • godKnow 8 02 51 01 AA AA AA AA AA

    • //ECU复位

  • Fixdall 8 02 10 03 00 00 00 00 00

    • //退出了02的刷写会话,进入扩展会话,

  • Fixdall 8 03 28 00 01 00 00 00 00

  • godKnow 8 02 68 00 AA AA AA AA AA

    • //恢复CAN通讯

  • Fixdall 8 02 85 01 00 00 00 00 00

  • godKnow 8 02 C5 01 AA AA AA AA AA

    • //重新使能DTC的记录,

  • Fixdall 8 02 10 01 00 00 00 00 00

  • godKnow 8 06 50 01 00 32 00 C8 AA

    • //进入默认会话,

  • done,

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
UDS 诊断服务详细解读
UDS网络层/TP层(ISO 15765-2)的解读
FOTA技术专栏—UDS刷写
图解基于UDS的Flash BootLoader
基于UDS刷写,0x28、0x85服务可以不用吗?
Step by Step学习CANoe CAPL诊断API和诊断自动化测试
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服