当前位置: 首页 > 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时间超时,程序重新复位。
在这里插入图片描述

http://www.lryc.cn/news/174963.html

相关文章:

  • inject和provide的使用
  • 2023年中国研究生数学建模竞赛D题
  • Unity制作曲线进度条
  • 面试:C++ 11 智能指针
  • 设计模式——3. 抽象工厂模式
  • vscode 无法使用 compilerPath“D:.../bin/arm-none-eabi-g++.exe”解析配置。
  • Vue.js入门模板语法[上] 及Vue.js实现购物车---详细讲解
  • windows下gvim的配置
  • 基于复旦微的FMQL45T900全国产化ARM开发开发套件(核心板+底板)
  • Leetcode Top100(23)环形链表
  • 线性代数基础-行列式
  • RT-Thread(学习)
  • 【MySQL】 MySQL 死锁问题分析优化器特性及优化方案
  • 【C++面向对象侯捷】8.栈,堆和内存管理
  • 在比特币上使用可检索性证明支付存储费用
  • 使用SSE(Server-Sent Events)实现服务端给客户端发消息
  • 【Redis】使用rpm包安装redis
  • 论文阅读-Group-based Fraud Detection Network on e-Commerce Platforms
  • java程序启动时指定JVM内存参数和Xms、Xmx参数学习
  • 【C++编程能力提升】
  • FlashDuty Changelog 2023-09-21 | 自定义字段和开发者中心
  • 贪心算法-
  • 漫谈:C语言 C++ 左值、右值、类型转换
  • 前车之鉴,后车之师
  • WEB使用VUE3实现地图导航跳转
  • 今天聊一聊高性能系统架构设计是什么样的
  • 鼠标不动了怎么办?3招解决问题!
  • 2023-09-23力扣每日一题
  • C#中使用Newtonsoft.Charp实现Json对象序列化与反序列化
  • Golang开发--互斥锁和读写锁