当前位置: 首页 > news >正文

【CANdelaStudio-从入门到深入到实战】50 从“硬复位”到“软着陆”:0x34/0x36/0x37 窗口下载的流量控制艺术

老张上周差点被客户骂到自闭。他负责的ECU刷写工具在传输一个32MB的固件时,每传3MB就断连一次,反复重连了7次才勉强刷完。

客户指着日志里密密麻麻的“0x7F 36 78(RCRRP)”说:“你这工具是在跟ECU玩拔河比赛吗?”老张委屈——明明按照UDS规范实现了0x34(请求下载)、0x36(传输数据)、0x37(请求退出传输),怎么传输效率还不如串口助手手动发呢?

我看了他的代码,发现一个典型问题:他把0x36的数据块大小设成了固定的4096字节,而ECU的接收缓冲区只有2048字节。

每次发完数据,ECU都回复“等待(0x78)”,但工具端根本不等,直接发下一包——结果ECU缓冲区溢出,直接丢包,工具端收不到肯定回复就报超时重连。这不是协议问题,是流量控制没做好。

痛点拆解:你以为的“窗口机制”可能只是“窗口期”

很多工程师对0x34/0x36/0x37的理解停留在“三步走”表面:先协商大小,再分块传输,最后确认结束。

但实际刷写时,ECU的接收能力不是恒定的——它可能一边擦除Flash一边接收数据,也可能因为DMA通道被高优先级任务抢占而暂时“卡住”。

常见错误实现

# 反例:固定块大小,忽视ECU的流控反馈defdownload_firmware
http://www.jsqmd.com/news/1067562/

相关文章:

  • 15.1 | 潜江模式:潜龙一号全链条AI平台架构解析
  • 保姆级实战:手把手写一个需求分析 Skill,复制即用,全平台稳定触发
  • MPC561嵌入式实战:PowerPC架构、TPU3协处理器与汽车电子系统设计
  • 驱动车辆诊断测试创新 | 支持诊断测试的模拟器及数据文件转换生成
  • GEO+外贸开发信,这样组合让回复率翻倍
  • 基于mobileGT平台的车载蓝牙免提系统:从架构设计到嵌入式实现
  • Chat2DB技术选型指南:开源版与企业版的技术架构对比与实施决策
  • 居然有5种工艺?南京别墅推拉门选购避坑指南
  • 别再一个一个打开复制了!PPT合并这样做,几秒钟全搞定
  • 3步搞定!让Windows电脑变身AirPlay 2无线投屏接收器
  • RS485、CAN、Modbus、EtherCAT 的关系与区别:工业通信到底该怎么理解?
  • 告别繁琐操作:5个功能让League Akari成为你的英雄联盟智能管家
  • 如何用AutoJs6解放你的Android手机:终极自动化脚本开发指南
  • SAMA5D3 Xplained开发板硬件勘误与修复指南:SD卡、以太网、ADC与PCB设计优化
  • 亲测有效!智能锡膏管理厂家实践经验分享
  • 终极免费Verilog仿真工具:Icarus Verilog完整使用指南
  • PPTist:基于Vue 3的企业级在线演示文稿解决方案
  • 从芯片手册到实战:PLL环路滤波器设计全解析与工程实践
  • Speechless:3分钟实现微博内容智能备份的高效方案
  • 深入解析ANSI C标准库:数学函数与文件I/O的核心原理与实战避坑
  • 为什么说bilibili-parse改变了我的视频资源管理方式
  • 3分钟掌握开源Verilog仿真:Icarus Verilog完整实战指南
  • 半导体洁净室协作机器人怎么选?颗粒控制、ESD与精度是关键
  • ESP32-C2在Arduino-ESP32中的技术实现与生态整合策略
  • 深入解析NXP LS2088A SEC Job Ring架构与中断处理机制
  • NXP工业Linux解决方案:基于Yocto构建实时TSN与1588系统
  • NXP QCVS安装配置指南:嵌入式硬件开发效率提升利器
  • I2C、SPI与I3C总线技术解析及NXP产品选型实战指南
  • 【数集】4位超前进位加法器设计-参考74HC283
  • 嵌入式系统LPUART DMA与LTC硬件加密引擎协同设计实战