【Autosar从入门到精通到进阶实战篇】86 UDS on CAN:从零实现诊断刷写协议栈
86 UDS on CAN:从零实现诊断刷写协议栈老张上个月又栽了。他负责的ECU在产线上刷写时,突然卡在“请求下载”阶段——安全验证明明通过了,但0x34服务就是返回NRC 0x31(请求超出范围)。他拿着CANoe日志盯了两小时,发现是传输层帧长度计算多了一个字节。这种问题,我年轻时也踩过。今天我们就手写一个完整的UDS刷写流程,把0x34(请求下载)、0x36(传输数据)、0x37(请求退出)这三个服务串成一条流水线。更重要的是,我会集成上一讲的安全验证逻辑,让你看到“数字签名+防回滚”是如何在诊断通信中落地的。痛点拆解:你写的刷写为什么总失败?最常见的错误是把UDS当普通CAN报文发。比如有人这样写:# 错误示例:直接发送0x34请求defrequest_download_wrong(ecu_id,data_length)