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)
🌎总结
- 虽然Flash刷写流程是个业内常规的流程,但是只给一张流程图,对于刚入门的同学,理解还是有障碍的,希望我加了一些辅助的资料能够帮助大家理解。
- 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!
- 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。
相关文章:

CANoe中使用CAPL刷写流程详解(Trace图解)(CAN总线)
🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…...

【MySQL】002 -- 日志系统:一条SQL更新语句是如何执行的
此文章为《MySQL 实战 45 讲》的学习笔记,其课程链接可参见:MySQL实战45讲_MySQL_数据库-极客时间 目录 一、日志系统 1、重做日志:redo log(引擎层) 2、归档日记:binlog(Server层) …...
C++---背包模型---数字组合(每日一道算法2023.3.14)
注意事项: 本题是"动态规划—01背包"的扩展题,优化思路不多赘述,dp思路会稍有不同,下面详细讲解。 题目: 给定 N个正整数 A1,A2,…,AN,从中选出若干个数,使它们的和为 M,…...

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

10个最频繁用于解释机器学习模型的 Python 库
文章目录什么是XAI?可解释性实践的步骤技术交流1、SHAP2、LIME3、Eli54、Shapash5、Anchors6、BreakDown7、Interpret-Text8、aix360 (AI Explainability 360)9、OmniXAI10、XAI (eXplainable AI)XAI的目标是为模型的行为和决定提供有意义的解释,本文整理…...

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

8大主流编程语言的适用领域,你可能选错了语言
很多人学编程经常是脑子一热然后就去网上一搜资源就开始学习了,但学到了后面发现目前所学的东西并不是自己最喜欢的,好像自己更喜欢另一个技术,感觉自己学错了,于是乎又去学习别的东西。 结果竹篮打水一场空,前面所付…...

关于Python库的问题
关于Python库的问题 问题1: ModuleNotFoundError: No module named ‘requests’ Python库 Pycharm使用Requests库时报错: No module named requests’解决方法 未安装requests库,使用"pip install requests"命令安装 依然提示P…...
好记性不如烂笔头(2)
概述:用来记录一些小技巧。 1.查看MyBatis执行的sql 类:org.apache.ibatis.mapping.MappedStatement方法:getBoundSql(Object parameterObject)在IDEA的Evaluate Expression查看sql:boundSql.getSql() 2.maven仓库地址为https&…...

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

关于我拒绝了腾讯测试开发岗offer这件事
2022年刚开始有了向要跳槽的想法,之前的公司不能算大厂但在重庆也算是数一数二。开始跳槽的的时候我其实挺犹豫的 其实说是有跳槽的想法在2022年过年的时候就有了,因为每年公司3月会有涨薪的机会,所以想着看看那能不能涨(其实还是…...

从GPT到GPT-3:自然语言处理领域的prompt方法
❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...
Git代码提交规范
Git 代码规范Git 每次提交代码,都是需要写 Commit message(提交说明),否则就不允许提交。Commit message 的格式 (三部分):Heaher ----- 必填type ---必需scope --- 可选subject --- 必需Body ---- 可省略Footer ---- …...

【JavaScript速成之路】JavaScript内置对象--Math和Date对象
📃个人主页:「小杨」的csdn博客 🔥系列专栏:【JavaScript速成之路】 🐳希望大家多多支持🥰一起进步呀! 文章目录前言1,Math对象1.1,常用属性方法1.1.1,获取x的…...

(自用POC)Fortinet-CVE-2022-40684
本文转载于:https://mp.weixin.qq.com/s?__bizMzIzNDU5Mzk2OQ&mid2247485332&idx1&sn85931aa474f1ae2c23a66bf6486eec63&chksme8f54c4adf82c55c44bc7b1ea919d44d377e35a18c74f83a15e6e20ec6c7bc65965dbc70130d&mpshare1&scene23&srcid…...

ConvNeXt V2实战:使用ConvNeXt V2实现图像分类任务(二)
文章目录训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整算法设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法运行以及结果查看测试热力图可视化展示完…...
【人工智能与深度学习】基于正则化潜在可变能量的模型
【人工智能与深度学习】基于正则化潜在可变能量的模型 正则化潜变量能量基础模型稀疏编码FISTALISTA稀疏编码示例卷积稀疏编码自然图像上的卷积稀疏编码可变自动编码器正则化潜变量能量基础模型 具有潜在变量的模型能够生成预测分布 y ‾ \overline{y}...

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

ChatGPT研究分享:机器第一次开始理解人类世界目录
0、为什么会对ChatGPT感兴趣一开始,我对ChatGPT是没什么关注的,无非就是有更大的数据集,完成了更大规模的计算,所以能够回答更多的问题。但后来了解到几个案例,开始觉得这个事情并不简单。我先分别列举出来,…...

【linux】Linux基本指令(上)
前言: 在之前我们已经简单了介绍了一下【Linux】,包括它的概念,由来啊等进行了讲解,接下来我们就将正式的踏入对其的学习!!! 本文目录👉操作系统的概念1.命令的语法1.1命令介绍1.2选…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...