【车载开发系列】 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

相关文章

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

Nginx、Tomcat等项目部署问题以及解决流程

《Nginx、Tomcat等项目部署问题以及解决流程》本文总结了项目部署中常见的four类问题及其解决方法:Nginx未按预期显示结果、端口未开启、日志分析的重要性以及开发环境与生产环境运行结果不一致... 目录前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类