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

CANoe中使用CAPL刷写流程详解(Trace图解)(CAN总线)

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

请添加图片描述

目录

  • 📙 流程概述
  • 📙 UDS指令详解
    • 🍅 编程前(PreProgramming)
    • 步骤1:进入拓展会话(10 83)
    • 步骤2:会话保持(3E 80)
    • 步骤3:编程前条件预检查(31 01 02 03)(可选)
    • 步骤4:禁用 DTC功能(85 82 FF FF FF)
    • 步骤5:停止通讯报文(28 81 03)
    • 🍅 编程过程(MainProgramming)
    • 步骤6:进入Boot(10 02)
    • 步骤7:Boot下的安全解锁(27 xx)
    • 步骤8:写入指纹信息(2E F1 5A 01 01 01 01 02 03 04 05 06 07 08 09)(可选)
    • 步骤9:刷写Driver文件
    • 步骤10:完整性检查(31 01 02 02)
    • 步骤11:擦除APP文件的内存(31 01 FF 00 44 01 00 00 00 00 3C 00 00 )
    • 步骤12:刷写APP文件
    • 步骤13:APP文件完整性检查(31 01 02 02)
    • 步骤14:最后全部文件下载完毕后,进行编程依赖性检查(31 01 FF 01)
    • 步骤15:硬件重启(11 01)
    • 🍅 编程后(PostProgramming)
    • 步骤16:进入拓展会话(10 03)
    • 步骤17:使能通讯(28 80 03)
    • 步骤17:解除DTC控制(85 81 FF FF FF)
  • 🌎总结

请添加图片描述


📙 流程概述

  • 网上找了张图,基本描述了刷写的流程
    在这里插入图片描述
  • 我也截图了Vflash 刷写的一个过程图,辅佐理解

在这里插入图片描述


📙 UDS指令详解

🍅 编程前(PreProgramming)

步骤1:进入拓展会话(10 83)

  • 这没什么好说的,因为下面的服务不支持默认会话
  • 功能寻址,没响应
    在这里插入图片描述

步骤2:会话保持(3E 80)

  • 开启ECU的会话保持,因为我们知道有个S3 Server 的时间一般是5000ms ,如果没有开启会话保持,5000m后ECU就会切回默认会话。而我们刷写要保持在Boot下的。
  • 功能寻址,没响应

在这里插入图片描述


步骤3:编程前条件预检查(31 01 02 03)(可选)

  • 编程前条件预检查,检查待测ECU的自身条件是否满足刷写,一般情况下会检查电压是否正常车速信号是否接收到且<3km/s,不同的Tier1/OEM可能有不同的检查条件。
  • 物理寻址在这里插入图片描述

步骤4:禁用 DTC功能(85 82 FF FF FF)

  • 禁止ECU产生各种DTC.
  • 功能寻址,没响应
    在这里插入图片描述

步骤5:停止通讯报文(28 81 03)

  • 停止通讯报文.,降低总线负载。
  • 01 表示 enableRxAndDisableTx
  • 03表示停掉APP和网络报文都停掉
  • 功能寻址,没响应

在这里插入图片描述

🍅 编程过程(MainProgramming)


步骤6:进入Boot(10 02)

  • 物理寻址

在这里插入图片描述


步骤7:Boot下的安全解锁(27 xx)

  • 物理寻址

在这里插入图片描述


步骤8:写入指纹信息(2E F1 5A 01 01 01 01 02 03 04 05 06 07 08 09)(可选)

  • 写入指纹可能不太好理解,就是在4S店刷件的时候,写入年月日信息和4S店的编码
  • 物理寻址
    在这里插入图片描述

步骤9:刷写Driver文件

  • 刷写引导文件
    UDS 14229 -1 刷写34,36,37服务简介

  • 和刷写APP文件的不同之处,Driver文件一般很小,且无需刷写前擦除内存。


步骤10:完整性检查(31 01 02 02)

  • 文件刷写完,要进行完整性校验
  • 前些年ECU的校验方式多是CRC的,近几年看到的都是RSA文件验签的。
  • 如果时CRC,可能发送的指令是 31 01 02 02 + 3个字节的校验码
  • 如果是RSA,则 31 01 02 02 + 128/256字节的校验码
    在这里插入图片描述

步骤11:擦除APP文件的内存(31 01 FF 00 44 01 00 00 00 00 3C 00 00 )

  • 再刷写非Flash文件时,需要先执行擦除内存的操作
  • 注意,一般情况,ECU要擦很久,对这个指令的响应就比较久。10秒到300多秒我都遇到过,这取决于擦除地址的大小。
    在这里插入图片描述

步骤12:刷写APP文件

  • app的地址有可能是不连续的

  • 地址不连续的情况

在这里插入图片描述

  • 地址连续的情况,就一个Block块

在这里插入图片描述

  • 如果地址不连续那么刷写的过程的逻辑就是这样的,涉及到多次34地址和长度的请求了。

for(i=0;i<BlockNumber;i++)
{
	34 00 44 52 80 90 00 00 00 16 00
	36 01 xx xx
	36 02 xx xx
	....
	37
}

步骤13:APP文件完整性检查(31 01 02 02)

  • 同 步骤10

步骤14:最后全部文件下载完毕后,进行编程依赖性检查(31 01 FF 01)

  • 最后全部文件下载完毕后,进行编程依赖性检查(31 01 FF 01)

在这里插入图片描述

步骤15:硬件重启(11 01)

  • 全部检查都通过后,硬件重启,进入APP模式下
    在这里插入图片描述

🍅 编程后(PostProgramming)

步骤16:进入拓展会话(10 03)

步骤17:使能通讯(28 80 03)

步骤17:解除DTC控制(85 81 FF FF FF)

在这里插入图片描述

🌎总结

23

  • 虽然Flash刷写流程是个业内常规的流程,但是只给一张流程图,对于刚入门的同学,理解还是有障碍的,希望我加了一些辅助的资料能够帮助大家理解。
    7
  • 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!

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

相关文章:

  • Angular学习笔记(一)
  • 技术掉:PDF显示,使用pdf.js
  • Xinlinx zynq7045国产替代 FMQL45T900全国产化 ARM 核心板+扩展板
  • 硬刚ChatGPT!文心一言能否为百度止颓?中国版ChatGPT“狂飙”的机会在哪儿?
  • 【python】喜欢XJJ?这不得来一波大采集?
  • 用Python求解牛顿的草地与母牛问题
  • 面试官:MQ的好处到底有哪些?
  • 想要成为高级网络工程师,只需要具备这几点
  • 我在字节当主管:百次面试结果,总结一个刷掉99%求职者的问题!
  • 基于GPT-4的免费代码生成工具
  • 今年还能学java么?
  • 硬刚ChatGPT!文心一言能否为百度止颓?
  • CSS实现一个展示框
  • 【Java实战】不会还有人用if else进行参数校验吧
  • 系统架构:经典三层架构
  • 28岁小公司程序员,无车无房不敢结婚,要不要转行?
  • 十二、51单片机之DS1302
  • ES+Redis+MySQL,这个高可用架构设计太顶了!
  • Linux基础命令大全(上)
  • 蓝桥杯刷题冲刺 | 倒计时28天
  • HTB-baby~
  • Docker使用DockerFile部署Go项目
  • 自己设计的网站,如何实现分页功能?(详细代码+注释)
  • O2O、C2C、B2B、B2C是什么意思
  • 带你一文透彻学习【PyTorch深度学习实践】分篇——加载数据集(Dataset类、DataLoader类核心参数讲解)附:实例源代码
  • 基于html+css的图片居中排列
  • Python通用验证码识别OCR库ddddocr的安装使用
  • 「无服务器架构」无服务器架构是应用程序的正确选择?需要考虑利弊。
  • Pycharm中修改git提交代码的账户和用户名【Git追溯注解,git blame】
  • 中介变量、调节变量与协变量