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

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

一个Java的main方法在JVM中的执行流程示例详解

《一个Java的main方法在JVM中的执行流程示例详解》main方法是Java程序的入口点,程序从这里开始执行,:本文主要介绍一个Java的main方法在JVM中执行流程的相关资料,文中通过代码... 目录第一阶段:加载 (Loading)第二阶段:链接 (Linking)第三阶段:初始化 (Initia

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn