UDS_CAN_BootLoader_Based_On_STM32F429IGT6
【CAN_BootLoader1.0_伪UDS接入实现-哔哩哔哩】 CAN_BootLoader_伪UDS实现_哔哩哔哩_bilibili
【CAN_BootLoader1.2_UDS接入实现-哔哩哔哩】 CAN_BootLoader1.2_UDS接入实现_哔哩哔哩_bilibili
【CAN_BootLoader1.2_UDS接入实现模拟效果演示(解说版)】 CAN_BootLoader1.2_UDS接入实现模拟效果演示_哔哩哔哩_bilibili
2022/4/10 | 否定应答 7f | ||
预编程阶段_APP | |||
内容 | 类型 | 8位数据 | |
进入扩展会话模式 | S | [0x10, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
肯定响应 | R | [0x50, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
关闭DTC | S | [0x85, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
肯定响应 | R | [0xc5, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
禁止非诊断报文的发送和接收 | S | [0x28, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00] | |
肯定响应 | R | [0x68, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00] | |
主编程阶段_BOOT | |||
内容 | 类型 | 8位数据 | |
进入编程会话模式 | S | [0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
肯定响应 | R | [0x50, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | 由Boot段回复肯定响应 |
读取一个DID|密钥的一部分信息 | S | [0x22, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
肯定响应 | R | [0x62, 0xf1, 0x00, 0x4f, 0x4b, 0x00, 0x00, 0x00] | 读取DIDF100的数据:下位机模拟数据 0x4f, 0x4b ASCII: O,K |
安全访问检查 | S | [0x27, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | 请求seed |
肯定响应 | R | [0x67, 0x01, 0x36, 0x57, 0x00, 0x00, 0x00, 0x00] | 下位机模拟seed数据0x36, 0x57 |
安全访问检查 | S | [0x27, 0x02, 0x4f, 0x4b, 0x00, 0x00, 0x00, 0x00] | 输入seed的key,预设读取的key数据 0x4f, 0x4b |
肯定响应 | R | [0x67, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | 解锁成功 |
写入数据 | S | [0x2e, 0x19, 0x96, 0x4c, 0x49, 0x41, 0x4e, 0x47] | 预设,模拟数据向DID1996写入数据:L,I,A,N,G |
肯定响应 | R | [0x6e, 0x19, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00] | |
擦除Memory | S | [0x31, 0x01, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00] | 请求执行RID1005擦除Memory信息, |
肯定响应(#5 OEM定义) Status | R | [0x71, 0x01, 0x10, 0x05, 0x77, 0x00, 0x00, 0x00] | |
请求下载 | S | [0x34, 0x00, 0x32, 0x00, 0x13, 0x0c, 0x08, 0x01] [0x34, 0x00, 0x32, 0x00, 0x13, 0x10, 0x08, 0x01] | #2 0x00以外的值是车辆制造商特定的 #3 7-4:size长度,3-0:Address长度 |
肯定响应 | R | [0x74, 0x30, 0x02, 0xd0, 0x00, 0x00, 0x00, 0x00] | 返回最大缓冲区大小 |
传输数据|最多可以支持255个块 | S | [0x36, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | 每个块传输完成后,ECU肯定响应。判断是否还有更多块需要下载。 |
肯定响应 | R | [0x76, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | (简化块只传输一块)size为0x34指定的大小 |
请求退出传输 | S | [0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | ECU肯定响应 |
肯定响应 | R | [0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | ECU肯定响应 |
检查一致性和数据完整性 | S | [0x31, 0x01, 0x15, 0x55, 0x00, 0x00, 0x00, 0x00] | 请求执行RID1555检查数据完整性 |
肯定响应(#5 OEM定义) Status | R | [0x71, 0x01, 0x15, 0x55, 0x77, 0x00, 0x00, 0x00] | |
复位(跳转进入APP) | S | [0x11, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | 0x40 – 0x5F 给车辆制造商特定用途 |
肯定响应(跳转进入APP) | R | [0x51, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | 跳转识别成功 |
后编程状态_APP | |||
内容 | 类型 | 8位数据 | |
执行服务(11->10) | S | [0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | 跳转到新下载的APP段程序 |
进入扩展会话模式 | S | [0x10, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
肯定响应 | R | [0x50, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
允许非诊断报文的发送和接收 | S | [0x28, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00] | 注意先执行28,后执行85,避免DTC误报 |
肯定响应 | R | [0x68, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00] | |
开启DTC | S | [0x85, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
肯定响应 | R | [0xc5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
清除诊断信息 | S | [0x14, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00] | 三个0xff全清空3byteDTC |
肯定响应 | R | [0x54 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
27服务,安全校验,准备写入数据 | S | [0x27, 0xXX, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
2E服务,将编程信息写入到ECU中 | S | [0x2E, 0xXX, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
切换到01默认会话模式 | S | [0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |
肯定响应 | S | [0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] | |