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

UDS 14229 -1 刷写34,36,37服务,标准加Trace讲解,没理由搞不明白

  • 🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用
  • 🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】
  • 🍅 玩转CANoe,博客目录大全,点击跳转👉

目录

  • 📙 RequestDownload (0x34) service
    • 请求格式
    • 正响应格式:
    • 负响应格式:
  • 📙 TransferData (0x36) service
    • 请求格式
    • 正响应格式:
    • 负响应格式:
  • 📙 RequestTransferExit (0x37) service
    • 正响应格式:
    • 负响应格式:
  • 🌎总结

请添加图片描述

📙 RequestDownload (0x34) service

  • Tester向目标ECU请求下载服务

请求格式

在这里插入图片描述

  • dataFormatIdentifier :这是第二个字节的参数,其中高4个bit表示压缩方法,低4个bit表示加密方法一般情况就是0x00
  • addressAndLengthFormatIdentifier:请求刷写地址和长度格式,高4个bit表示下面的memorySize参数占几个字节,低4个bit表示下面的memoryAddress参数占几个字节。常规就是0x44,就是memorySizememoryAddress各占4个字节。
  • memoryAddress :请求刷写的首地址,这个参数占几个字节由addressAndLengthFormatIdentifier参数的低4个bit决定的
  • memorySize : 请求刷写的字节长度,这个参数占几个字节由addressAndLengthFormatIdentifier参数的高4个bit决定的

如下图的实例Trace : 34 00 44 52 80 90 00 00 00 16 00

在这里插入图片描述

正响应格式:

在这里插入图片描述

  • lengthFormatIdentifier:高4个bit表示下面的maxNumberOfBlockLength参数占几个字节,低4个bit默认0
  • maxNumberOfBlockLength : 目标ECU允许Tester传输最大的字节数
  • 比如下面34服务响应的 maxNumberOfBlockLength等于0x0802,下面36服务就传输了0x0802个字节(包括36 01)
  • 0x1802的解释:CAN TP层的第一个字节的高4bit表示帧类型,1就表示是首帧,2是连续帧,3是流控帧,0是单帧。
  • 实际上,36服务传输可以小于maxNumberOfBlockLength,但不能大于,

在这里插入图片描述

负响应格式:

在这里插入图片描述

  • 0x13 :36服务传输字节大于maxNumberOfBlockLength
  • 0x22 :当目标ECU正在接受数据,发送S34服务请求,ECU应该响应CNC(0x22)
  • 0x31 :请求参数中,参数不对
  • 0x33 :没有进入指定的安全会话
  • 0x70: 没事先擦除内存会报这个NRC

📙 TransferData (0x36) service

  • 刷写过程,即Tester向ECU中下载数据的过程叫download
  • Teser向ECU请求返回数据,即ECU向Tester传输数据的过程叫 upload

请求格式

在这里插入图片描述

  • blockSequenceCounter:数据传输计数器,第一帧从1开始,到了0xFF后,再从0开始,循环往复,直到下载完毕
  • transferRequestParameterRecord:传输数据,正常来说就是(maxNumberOfBlockLength - 2)

在这里插入图片描述

正响应格式:

在这里插入图片描述

  • blockSequenceCounter: 响应的结果和请求时一样
  • transferRequestParameterRecord : 刷写过程是没有这个参数的,35服务请求数据时,才有这个参数
  • 34和35服务,互为逆过程,36服务的请求和响应也是互逆的。

负响应格式:

在这里插入图片描述

  • 0x24 : 不先请求34或者35服务,会响应这个NRC
  • 0x71:xxxxx
  • 0x72:xxxxx
  • 0x73:传输Block计数器错误,比如第一帧传输时不是1,或者,不连续
  • 0x92/0x93: 刷写时电压过高或者过低

📙 RequestTransferExit (0x37) service

正响应格式:

在这里插入图片描述

  • transferResponseParameterRecord:从没见过
    在这里插入图片描述

负响应格式:

在这里插入图片描述

在这里插入图片描述

🌎总结

23

7

  • 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!

  • 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。
    18

http://www.kler.cn/a/9.html

相关文章:

  • MySQL 如何赶上 PostgreSQL 的势头?
  • ue5 蒙太奇,即上半身动画和下半身组合在一起,并使用。学习b站库得科技
  • 【微服务】1、引入;注册中心;OpenFeign
  • 网络基础1 http1.0 1.1 http/2的演进史
  • 运放输入偏置电流详解
  • 嵌入式系统 (2.嵌入式硬件系统基础)
  • MySQL基本查询
  • 关于Vue3中reactive的意义
  • 不会前端没事,用GWT Boot和Spring Boot构建Web程序
  • 植物大战 仿函数——C++
  • 【C++】类和对象(二)
  • CPU平均负载高问题定位分析
  • 第十三届蓝桥杯省赛 C++ A 组 F 题、Java A 组 G题、C组 H 题、Python C 组 I 题——青蛙过河(AC)
  • 嵌入式 串口通信