【车载开发系列】 ECU的在线刷写流程

2023-11-11 10:28

本文主要是介绍【车载开发系列】 ECU的在线刷写流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【车载开发系列】 ECU的在线刷写流程

【车载开发系列】 ECU的在线刷写流程

  • 【车载开发系列】 ECU的在线刷写流程
    • 一. ECU的刷写概念
    • 二. 什么是OTA
    • 三. 什么是Flash Driver
    • 四. FlashDriver的特点
    • 五. ECU刷写流程汇总
      • 1)刷写前准备
      • 2)刷写主流程
      • 3)刷写完成流程

一. ECU的刷写概念

成品车上要进行ECU的软件刷新,可以通过即Bootloader刷写和OTA升级。通过OBD接口进行Bootloader刷新的方式是目前的主流方式。
Bootloader分为Primary Bootloader跟Secondary Bootloader。
Primary Bootloader由ECU供应商预先编辑到非易失性存储器中,包含PBL的区域必须防止擦除,避免由于意外擦除PBL。Secondary Bootloader存储在易失性存储器中

二. 什么是OTA

OTA是“over-the-air”的缩写,是一种无线技术,用于在不需要接触设备的情况下向移动设备或物联网设备提供更新、补丁或新版本的软件。OTA更新通常通过无线网络(如Wi-Fi或移动数据)进行,这使得设备可以在不需要任何物理连接的情况下获得更新。这种技术在智能手机、智能家居设备和车载系统等设备中得到广泛应用。
总结起来就是OTA让BootLoader完成:接收新APP—擦除旧APP—写入新APP—跳转到新APP执行 的这么一系列的过程。

三. 什么是Flash Driver

在ECU OTA 程序升级过程中,需要执行一段比较特殊的代码,这段代码实现对自身Flash的擦除与写入,它就是Flash Driver。
在OTA开始后,会先传入Flash Driver到RAM中,再开始刷写APP
在OTA完成之后,会执行SID$11$01 MCU复位的操作,复位前会清除这部分RAM空间,或者重新给ECU上电后,Flash Driver就失效了。

四. FlashDriver的特点

FlashDriver程序和boot程序的ld文件不同,FlashDriver需要在ld文件中指定RAM地址,这样生成的代码的地址就固定在RAM里。
为了安全的考虑,会尽可能的避免在代码中固化有对flash空间进行擦除或写入的操作,主要为了避免在程序跑飞时误调用该部分代码,使软件代码部分受到破坏。
通过34服务将地址告诉下位机。下位机通过指针调用烧写函数。

五. ECU刷写流程汇总

在车载ECU软件刷新的时候,会使用到FlashDriver。刷写主流程见下面。主机厂会对刷写流程及校验算法做出规定,并且刷写流程基本没有太多差别。
所以我们下载的flash driver其实可以认为是擦写flash的一段代码下载到指定的ram位置。

1)刷写前准备

1)进入扩展会话SID$10$03
2)解锁安全密钥
3)检查预编程条件
4)SID$85关闭DTC记录
5)SID$28停发APP报文及NM报文
上面的步骤4和步骤5目的是在Download FlashDriver和APP之前,增加带宽。

2)刷写主流程

1)进入编程会话
2)解锁boot级别的安全密钥
3)写指纹信息
4)请求下载flash driver
5)下载flash driver
6)完成flash driver下载
7)检查flash driver有效性
8)擦除pflash
9)请求下载app file
10)下载app file
11)完成app file 下载
12)检查app file程序有效性

3)刷写完成流程

1)进入扩展会话
2)28使能APP和NM
3)85打开DTC记录
4)进入默认会话

这篇关于【车载开发系列】 ECU的在线刷写流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/389395

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla