当前位置: 首页 > 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 0036 01 xx xx36 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

相关文章:

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

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…...

【MySQL】002 -- 日志系统:一条SQL更新语句是如何执行的

此文章为《MySQL 实战 45 讲》的学习笔记&#xff0c;其课程链接可参见&#xff1a;MySQL实战45讲_MySQL_数据库-极客时间 目录 一、日志系统 1、重做日志&#xff1a;redo log&#xff08;引擎层&#xff09; 2、归档日记&#xff1a;binlog&#xff08;Server层&#xff09; …...

C++---背包模型---数字组合(每日一道算法2023.3.14)

注意事项&#xff1a; 本题是"动态规划—01背包"的扩展题&#xff0c;优化思路不多赘述&#xff0c;dp思路会稍有不同&#xff0c;下面详细讲解。 题目&#xff1a; 给定 N个正整数 A1,A2,…,AN&#xff0c;从中选出若干个数&#xff0c;使它们的和为 M&#xff0c;…...

并查集(不相交集)详解

目录 一.并查集 1.什么是并查集 2.并查集的基本操作 3.并查集的应用 4.力扣上的题目 二.三大操作 1.初始化 2.查找 3.合并 三.省份数量 1.题目描述 2.问题分析 3.代码实现 四.冗余连接 1.题目描述 2.问题分析 3.代码实现 一.并查集 1.什么是并查集 并查集&…...

10个最频繁用于解释机器学习模型的 Python 库

文章目录什么是XAI&#xff1f;可解释性实践的步骤技术交流1、SHAP2、LIME3、Eli54、Shapash5、Anchors6、BreakDown7、Interpret-Text8、aix360 (AI Explainability 360)9、OmniXAI10、XAI (eXplainable AI)XAI的目标是为模型的行为和决定提供有意义的解释&#xff0c;本文整理…...

final关键字:我偏不让你继承

哈喽&#xff0c;小伙伴们大家好&#xff0c;我是兔哥呀&#xff0c;今天就让我们继续这个JavaSE成神之路&#xff01; 这一节啊&#xff0c;咱们要学习的内容是Java所有final关键字。 之前呢&#xff0c;我们学习了继承&#xff0c;这大大提高了代码的灵活性和复用性。但是总…...

8大主流编程语言的适用领域,你可能选错了语言

很多人学编程经常是脑子一热然后就去网上一搜资源就开始学习了&#xff0c;但学到了后面发现目前所学的东西并不是自己最喜欢的&#xff0c;好像自己更喜欢另一个技术&#xff0c;感觉自己学错了&#xff0c;于是乎又去学习别的东西。 结果竹篮打水一场空&#xff0c;前面所付…...

关于Python库的问题

关于Python库的问题 问题1&#xff1a; ModuleNotFoundError: No module named ‘requests’ Python库 Pycharm使用Requests库时报错&#xff1a; No module named requests’解决方法 未安装requests库&#xff0c;使用"pip install requests"命令安装 依然提示P…...

好记性不如烂笔头(2)

概述&#xff1a;用来记录一些小技巧。 1.查看MyBatis执行的sql 类&#xff1a;org.apache.ibatis.mapping.MappedStatement方法&#xff1a;getBoundSql(Object parameterObject)在IDEA的Evaluate Expression查看sql&#xff1a;boundSql.getSql() 2.maven仓库地址为https&…...

Java for循环嵌套for循环,你需要懂的代码性能优化技巧

前言 本篇分析的技巧点其实是比较常见的&#xff0c;但是最近的几次的代码评审还是发现有不少兄弟没注意到。 所以还是想拿出来说下。 正文 是个什么场景呢&#xff1f; 就是 for循环 里面还有 for循环&#xff0c; 然后做一些数据匹配、处理 这种场景。 我们结合实例代码来…...

关于我拒绝了腾讯测试开发岗offer这件事

2022年刚开始有了向要跳槽的想法&#xff0c;之前的公司不能算大厂但在重庆也算是数一数二。开始跳槽的的时候我其实挺犹豫的 其实说是有跳槽的想法在2022年过年的时候就有了&#xff0c;因为每年公司3月会有涨薪的机会&#xff0c;所以想着看看那能不能涨&#xff08;其实还是…...

从GPT到GPT-3:自然语言处理领域的prompt方法

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️&#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…...

Git代码提交规范

Git 代码规范Git 每次提交代码&#xff0c;都是需要写 Commit message&#xff08;提交说明&#xff09;&#xff0c;否则就不允许提交。Commit message 的格式 (三部分)&#xff1a;Heaher ----- 必填type ---必需scope --- 可选subject --- 必需Body ---- 可省略Footer ---- …...

【JavaScript速成之路】JavaScript内置对象--Math和Date对象

&#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f525;系列专栏&#xff1a;【JavaScript速成之路】 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 文章目录前言1&#xff0c;Math对象1.1&#xff0c;常用属性方法1.1.1&#xff0c;获取x的…...

(自用POC)Fortinet-CVE-2022-40684

本文转载于&#xff1a;https://mp.weixin.qq.com/s?__bizMzIzNDU5Mzk2OQ&mid2247485332&idx1&sn85931aa474f1ae2c23a66bf6486eec63&chksme8f54c4adf82c55c44bc7b1ea919d44d377e35a18c74f83a15e6e20ec6c7bc65965dbc70130d&mpshare1&scene23&srcid…...

ConvNeXt V2实战:使用ConvNeXt V2实现图像分类任务(二)

文章目录训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整算法设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法运行以及结果查看测试热力图可视化展示完…...

【人工智能与深度学习】基于正则化潜在可变能量的模型

【人工智能与深度学习】基于正则化潜在可变能量的模型 正则化潜变量能量基础模型稀疏编码FISTALISTA稀疏编码示例卷积稀疏编码自然图像上的卷积稀疏编码可变自动编码器正则化潜变量能量基础模型 具有潜在变量的模型能够生成预测分布 y ‾ \overline{y}...

【Leetcode——排序的循环链表】

&#x1f60a;&#x1f60a;&#x1f60a; 文章目录一、力扣题之排序循环链表二、解题思路1. 使用双指针法2、找出最大节点&#xff0c;最大节点的下一个节点是最小节点&#xff0c;由此展开讨论总结一、力扣题之排序循环链表 题目如下&#xff1a;航班直达&#xff01;&#…...

ChatGPT研究分享:机器第一次开始理解人类世界目录

0、为什么会对ChatGPT感兴趣一开始&#xff0c;我对ChatGPT是没什么关注的&#xff0c;无非就是有更大的数据集&#xff0c;完成了更大规模的计算&#xff0c;所以能够回答更多的问题。但后来了解到几个案例&#xff0c;开始觉得这个事情并不简单。我先分别列举出来&#xff0c…...

【linux】Linux基本指令(上)

前言&#xff1a; 在之前我们已经简单了介绍了一下【Linux】&#xff0c;包括它的概念&#xff0c;由来啊等进行了讲解&#xff0c;接下来我们就将正式的踏入对其的学习&#xff01;&#xff01;&#xff01; 本文目录&#x1f449;操作系统的概念1.命令的语法1.1命令介绍1.2选…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...