当前位置: 首页 > news >正文

【车载开发系列】ECU Application Software程序刷新步骤

【车载开发系列】ECU Application Software程序刷新步骤

ECU Application Software程序刷新步骤

  • 【车载开发系列】ECU Application Software程序刷新步骤
    • 一. Boot Software(引导软件)
      • 1)boot manager(启动管理器)
      • 2)Reprogramming Software(重编程软件)
      • 3)boot memory partition(启动内存分区)
    • 二. Tester(测试仪)与Client(客户端)
      • 1)Client客户端
      • 2)Tester测试仪
    • 三. Diagnostic Data(诊断数据)
      • 1)当前值
      • 2)存储值
      • 3)静态值
    • 四. Application Software程序升级步骤
      • 1)Pre-Programming Step
      • 2)Programming Step
      • 3)Post-Programming Step

一. Boot Software(引导软件)

在服务器存储器的一个特殊部分中执行的软件,主要用于启动ECU和执行服务器编程,该内存区域在正常编程序列期间不会被擦除,并且必须在服务器应用程序丢失或被视为无效时执行,以始终确保重新编程服务器的能力
一个ECU包含了三部分 Boot Manager、Application Software以及Boot Software,其中Boot Software由Boot Manager和Reprogramming Software组成,在汽车嵌入式中,我们常说的bootloader就是Boot Software。
在这里插入图片描述

1)boot manager(启动管理器)

在ECU开机或重置后立即执行的引导软件的一部分,其主要目的是检查与将控制转移到重编程软件,还有是否有有效的应用程序可供执行。启动管理器还可以考虑到将控制转换到重编程软件的其他条件。

2)Reprogramming Software(重编程软件)

引导软件的一部分,用于重新编程电子控制单元。

3)boot memory partition(启动内存分区)

引导软件所在的服务器内存中的区域。

二. Tester(测试仪)与Client(客户端)

1)Client客户端

作为测试仪一部分并使用诊断服务的功能,测试仪通常使用其他功能,如数据库管理、特定解释、人机界面。

2)Tester测试仪

控制车载电子控制单元的测试、检查、监控或诊断等功能的系统,可以专用于特定类型的操作员(例如,专用于车库机械的非车载扫描工具、专用于装配厂的非车载测试工具或车载测试仪)。

三. Diagnostic Data(诊断数据)

位于电子控制单元存储器中的数据,可由测试仪检查和/或修改。诊断数据包括模拟输入和输出、数字输入和输出,中间值和各种状态信息。
诊断数据的示例包括车速、节气门角度、后视镜位置、系统状态等。
诊断数据定义了三种类型的值:

1)当前值

电子控制单元正常操作当前使用的值(或由此产生的值)

2)存储值

在特定时刻(例如发生故障或周期性故障时)生成的当前值的内部副本,该副本在电子控制单元的控制下制作;比如DTC快照数据就是存储值。

3)静态值

例如,VIN。服务器没有义务为诊断目的保存其数据的内部副本,在这种情况下,测试仪只能请求当前值。
定义维修车间或开发测试会话会选择不同的服务器功能(例如,仅在开发测试会话中才允许访问所有内存位置)。

四. Application Software程序升级步骤

对于汽车ECU的Application Software升级,OEM几乎都是遵循UDS规范。
Application Software程序升级主要分为三个阶段:Pre-Programming Step、Programming Step、Post-Programming Step。
在这里插入图片描述

1)Pre-Programming Step

此阶段的主要​做一些Application Software升级前的检查,确保正式升级Application软件之前,车辆工况的安全性。这里举几个常见的检查条件:车速、诊断电压、KL15信号有效性等。
车速:约束车速<2Km/h,也就是说不允许车辆行驶过程中进行软件升级。
诊断电压:诊断电压会约束在一定的范围,比如:10V~16V,避免升级过程中,因电压过低或者过高导致刷写失败。
KL15信号有效性:为了确保收到的信号质量,一般会检查这个信号的有效性(Valid or Invalid),有效的信号才能确保升级过程中的稳定性。
以上这些都是安全检查,目的就是一个保证安全。

2)Programming Step

经过了前面车辆工况的安全检查,此时可以进行Application Software的软件升级。Application Software的软件遵循UDS协议
在这里插入图片描述
Step1:
进入编程会话,只有特定的编程会话下,才能进行Application Software升级。
Step2:
进行安全检查,通过OEM指定的算法进行Key的比对,主要是确认操作人员的合法性。就好比每个人只有自家的钥匙,自家的钥匙只能打开自家的门,而不能打开别人家的门一样,也就是Key的唯一性。
Step3:
写指纹信息,比如Application程序的软件版本号等。
Step4:
此过程将Flash Driver下载到ECU中,为擦除旧的Application Software做准备,确切说是下载内存擦除例程(memory erase routine)。一般Flash Driver不会放在ECU内部,担心程序异常跑到Flash Driver位置,将有效的Application擦除,所以,Flash Driver只有在Application程序升级时下载到ECU的RAM区。
Step5:
检查Flash Driver的有效性,只有Flash Driver成功下载,之后的Application程序擦除和更新才能成为可能
Step6:
执行旧Application程序的擦除。
Step7与Step8:
与Step4~Step6功能类似,这里是下载Flash Driver的内存编程例程(memory programming routine)。在实际项目中,Step4~Step8就是Flash Driver的下载,包括memory erase routine和memory programming routine。
Step9:
刷写新的Application Software到ECU。Step10:
更新Application Software以后,需要检查下载数据的完整性,确保数据可靠。
Step11:
检查Application Software的有效性,比如签名(signature)是否正确等。
Step12:
写配置信息,比如车辆VIN等。

3)Post-Programming Step

此阶段主要是Application Software更新后的网络恢复,即:Application Software更新好以后,重新参与工作。常用的做法就是执行ECU Reset,也可以让诊断刷写的S3时间超时,程序重新复位。
在这里插入图片描述

相关文章:

【车载开发系列】ECU Application Software程序刷新步骤

【车载开发系列】ECU Application Software程序刷新步骤 ECU Application Software程序刷新步骤 【车载开发系列】ECU Application Software程序刷新步骤一. Boot Software(引导软件)1)boot manager(启动管理器)2&…...

inject和provide的使用

官网介绍用法 V2.2.0 新增的方法 类型 provide&#xff1a;Object | () > Object inject&#xff1a;Array<string> | { [key: string]: string | Symbol | Object }介绍 这对选项需要一起使用&#xff0c;以允许一个祖先组件向其所有子孙后代注入一个依赖&#xff…...

2023年中国研究生数学建模竞赛D题

一、背景介绍 2021年9月22日&#xff0c;中共中央国务院正式发布《关于完整准确全面贯彻新发展理念做好碳达峰碳中和工作的意见》&#xff08;以下简称《意见》&#xff09;&#xff0c;明确了中国双碳行动的顶层设计。 我国是世界上最大的发展中国家&#xff0c;为实现中华民…...

Unity制作曲线进度条

unity制作曲线进度条 大家好&#xff0c;我是阿赵。   在使用Unity引擎做进度条的时候&#xff0c;有时会遇到一个问题&#xff0c;如果进度条不是简单的横向、纵向或者圆形&#xff0c;而是任意的不规则形状&#xff0c;那该怎么办呢&#xff1f;比如这样的&#xff1a; 一…...

面试:C++ 11 智能指针

查询内存泄露方法 啥是内存泄露 内存泄露在维基百科中的解释如下&#xff1a; 在计算机科学中&#xff0c;内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失&#xff0c;而是应用程序分配某段内存后&#xff0c;由于设计错误&…...

设计模式——3. 抽象工厂模式

1. 说明 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建一组相关或依赖对象的方式,而无需指定它们的具体类。抽象工厂模式是工厂模式的扩展,它关注于创建一组相关的对象家族,而不仅仅是一个单一的对象。 抽象工厂模式通常涉及以下几个角…...

vscode 无法使用 compilerPath“D:.../bin/arm-none-eabi-g++.exe”解析配置。

最近在使用vscode搭建ODrive STM32开发环境,依次安装了以下内容: 1.Python3: 用于运行工程构建脚本 2.ST-Link/V2 Drivers: STLink/v2编程器的驱动 3.Visual Studio Code: 轻量级但功能强大的源代码编辑器 …...

Vue.js入门模板语法[上] 及Vue.js实现购物车---详细讲解

前言 前面我们学习了Vue的基础入门&#xff0c;接下来我们学习有关Vue的模板语法&#xff0c;学习Vue语法能提高我们的前端开发效率 Vue.js 使用了基于 HTML 的模板语法&#xff0c;允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML &a…...

windows下gvim的配置

一、vim配置文件 "查看自己的vimrc所在的目录 "在命令模式下 :echo $MYVIMRC"打开自己的vimrc文件 "在命令模式下 :e $MYVIMRC 二、排版 "查看自己当前的字体及大小 "在命令模式下 :set guifont?"设置默认的字体为仿宋_GB2312&#xff…...

基于复旦微的FMQL45T900全国产化ARM开发开发套件(核心板+底板)

TES745D是我司自主研制的一款基于上海复旦微电子FMQL45T900的全国产化ARM核心板&#xff08;模块&#xff09;。该核心板将复旦微的FMQL45T900&#xff08;与XILINX的XC7Z045-2FFG900I兼容&#xff09;的最小系统集成在了一个87*117mm的核心板上&#xff0c;可以作为一个核心模…...

Leetcode Top100(23)环形链表

给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索…...

线性代数基础-行列式

一、行列式之前的概念 1.全排列&#xff1a; 把n个不同的元素排成一列&#xff0c;称为n个元素的全排列&#xff0c;简称排列 &#xff08;实际上就是我们所说的排列组合&#xff0c;符号是A&#xff0c;arrange&#xff09; 2.标准序列&#xff1a; 前一项均小于后一项的序列…...

RT-Thread(学习)

RT-Thread是一款完全由国内团队开发维护的嵌入式实时操作系统&#xff08;RTOS&#xff09;&#xff0c;具有完全的自主知识产权。经过16个年头的沉淀&#xff0c;伴随着物联网的兴起&#xff0c;它正演变成一个功能强大、组件丰富的物联网操作系统。 RT-Thread概述 RT-Threa…...

【MySQL】 MySQL 死锁问题分析优化器特性及优化方案

MySQL 死锁问题分析优化器特性及解决方案 MySQL 锁机制介绍 1、MySQL常用存储引擎的锁机制 MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-level locking)或表级锁&#xff0c;默认为页面锁 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级…...

【C++面向对象侯捷】8.栈,堆和内存管理

文章目录 栈&#xff0c;堆stack object的生命周期static local object的生命周期global object的生命周期heap objects 的生命期new&#xff1a;先分配memory&#xff0c;再调用构造函数delete: 先调用析构函数&#xff0c;再释放 memory动态分配所得的内存块&#xff0c;in V…...

在比特币上使用可检索性证明支付存储费用

我们为用户开发了一种为云存储付费的新方法。 与亚马逊的 S3 等传统云存储相比&#xff0c;用户不必信任服务器。 我们使用比特币智能合约来确保支付取决于服务器的可检索性证明 (PoR)&#xff0c;该证明只能在数据仍然可用且需要时可以检索的情况下生成。 可检索性证明 (PoR)…...

使用SSE(Server-Sent Events)实现服务端给客户端发消息

首先是客户端&#xff0c;看着比较简单。但实际应用中可能要比这复杂&#xff0c;因为默认sse只支持get请求&#xff0c;而且没法携带header。所以如果默认的方法达不到需求的话可能需要额外实现&#xff0c;当然也可以引用第三方库&#xff0c;比如rangermauve/fetch-event-so…...

【Redis】使用rpm包安装redis

背景说明 公司环境处于内网&#xff0c;某同事需要安装redis&#xff0c;如果使用通过源码编译安装redis&#xff0c;很多编译工具如gcc就需要先安装&#xff0c;但处于内网安装起来不太方便&#xff0c;当然也不是不可以。我们此处就选用通过redis的rpm包进行安装。 rpm包查…...

论文阅读-Group-based Fraud Detection Network on e-Commerce Platforms

目录 摘要 1 Introduction 2 BACKGROUND AND RELATED WORK 2.1 Preliminaries 2.2 Related Works 3 MODEL 3.1 Structural Feature Initialization 3.2 Fraudster Community Detection 3.3 Training Objective 4 EXPERIMENT 4.1 Experimental Setup 4.2 Prediction …...

java程序启动时指定JVM内存参数和Xms、Xmx参数学习

先找个java程序来试验&#xff1b;找这个&#xff0c; java实现计算机图形学中点画线算法_java 多个点连成一条线 算法-CSDN博客 JVM内存参数中&#xff0c; -Xms&#xff1a;设置堆内存的初始大小&#xff0c;默认为物理内存的1/64&#xff1b; -Xmx&#xff1a;设置堆内存的…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...