您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
汽车ECU BootLoader升级
 
 
  199  次浏览      2 次
 2024-7-16
 
编辑推荐:
本文主要介绍什么是 BootLoader,Bootloader中诊断升级流程,希望对你的学习有帮助。
本文来自于开放原子开发者工作坊,由火龙果软件Alice编辑,推荐。

Bootloader是一段独立的程序。它包含启动代码、中断、主程序(Boot_main函数)、操作系统(非必须)。Bootloader存在的意义就是指更新App程序。

什么是 BootLoader

MCU正常运行时总是从固定地方取指令,顺序运行,程序更新时需要使用烧录器等工具烧录,于是有人将程序设计成,由一个程序跳转到另一个程序,这个程序通常称作Bootloader,另一个叫做APP。

Bootloader是一段独立的程序。它包含启动代码、中断、主程序(Boot_main函数)、操作系统(非必须)。 Bootloader存在的意义就是指更新App程序。

Bootloader刷写使用的协议

UDS(Unified Diagnostic Services,统一诊断服务)诊断协议是用于汽车行业诊断通信的需求规范,由ISO 14229系列标准定义。

Bootloader 的划分

一个ECU包含了三部分 Boot Manager 、 Application Software 以及 Boot Software ,其中 Boot Software 由 Boot Manager 和 Reprogramming Software 组成,在汽车嵌入式中,我们常说的 bootloader 就是 Boot Software 。

  • Boot manager :引导程序启动
  • Reprogramming Software : 更新软件程序,主要更新App程序

程序运行到Boot Manager以后,通过一些条件判断,决定进入Application Software还是Reprogramming Software。

如果进入Application Software,则意味着功能运行;如果进入Reprogramming Software,则意味着需要更新Application Software。

FBL、PBL、SBL

Boot Loader在嵌入式系统里,一般分为两部分:PBL(Primary Bootloader,第一引导加载程序)和SBL(Second Bootloader,第二引导加载程序)。

FBL 和 PBL 实际是一个。

ECU的内存至少需要划分三个部分:FBL、SBL、App。

1、SBL

SBL的本质就是Reprogramming Software,和我们经常提到的"Bootloader"作用一样,为更新Application而生。

2、PBL

因为整车销售到终端用户以后,只能通过OBD接口或者OTA方式升级Application,而这两种方式,均需要依赖Bootloader程序,如果Bootloader程序不可用,对应的ECU就不能正常使用。

所以,针对Bootloader更新失败这种工况,需要一个程序专门刷写Reprogramming Software,这个程序仅出厂烧录一次,以后永远不更新。这个程序就是 PBL。

这样,即使刷写Reprogramming Software失败,还可以重新刷写Reprogramming Software,之后,Reprogramming Software再更新Application程序。这样,就不会出现ECU不可用的情况。

PBL依然保留刷写程序的功能,但是,限定PBL仅刷写或者激活SBL,激活SBL以后,由SBL负责更新Application Software。

ECU 升级/刷写

ECU 升级的内容一般分为 boot 和 APP 。

同时,ECU的升级方式又有2种:

  • 通过 OBD 接口升级
  • 通过 OTA 云升级

1、OBD接口升级

OBD接口升级,即使用诊断仪,通过OBD 接口与 ECU 连接进行升级。

Boot 刷新 所用到的两个文件是FlashDriver驱动程序和boot软件,在这里我们可以将SBL理解为FlashDriver驱动程序,PBL理解为Boot软件。

Boot 刷写一般都是刷写 SBL,SBL存在的意义就是更新APP程序。

当MCU收到1002请求,ECU复位后会进入PBL模式中判断是否跳转到 SBL;如果需要进行APP 更新,程序就会跳转到SBL进行APP更新。

APP 刷新 是通过 SBL,SBL先擦除 APP flash数据,再将新的 APP 刷写到 flash。

2、OTA 云升级

OTA是Over-the-Air的简称,既空中下载的意思,具体指远程无线方式。

对于汽车的OTA升级,主要分FOTA和SOTA两种。

  • SOTA只针对软件升级,例如显示屏上某个APP软件的升级 ;是对车系系统的VI展现、操作方式方面的优化,对于车辆驾驶体验来说不会有任何提升。
  • FOTA是对ECU、悬架控制单元等等车辆核心驾控部件的升级 ,带来的更多是驾驶体验的整体提升。例如更新 BMS的 APP 数据。

OTA 升级只能用来升级 APP 数据,通常使用 A/B 双bank 分区策略。

所谓A/B 双bank 分区升级,是指在设备上开辟两个存储空间(A/B存储空间),每个存储空间上均安装有一个系统,其中一个系统处于激活使用状态,另外一个系统处于备用待命状态。在进行系统升级时候,可在激活的系统中对备用系统进行升级,升级完成重启后切换成新升级的系统。

是否同步分区风险,详细点击跳转原文

Bootloader中诊断升级流程

UDS服务设计复杂,Bootloader升级一般分为以下三步:

1)预编程

2)编程

3)后编程

1、预编程

在进入刷新之前,UDS的85服务和28服务,关闭DTC诊断同时停发非诊断报文。 使整个CAN网络处于静默(Silent)状态。这是对整车网络进行操作的,一般都是以功能寻址(Functional addressing)的方式来发送。

注意:先用85服务关闭DTC,再使用28服务关报文。

  • 关闭DTC诊断是防止升级过程误报DTC(例如通信丢失DTC等)
  • 关闭CAN通信是为了降低总线负载,加快刷写速度。

此阶段的主要​做一些Application Software升级前的检查,确保正式升级Application软件之前,车辆工况的安全性。

这里举几个常见的检查条件:车速、诊断电压、KL15信号有效性等。

  • 车速:约束车速<2Km/h,也就是说不允许车辆行驶过程中进行软件升级。
  • 诊断电压:诊断电压会约束在一定的范围,比如:10V~16V,避免升级过程中,因电压过低或者过高导致刷写失败。
  • KL15信号有效性:为了确保收到的信号质量,一般会检查这个信号的有效性(Valid or Invalid),有效的信号才能确保升级过程中的稳定性。

以上这些都是安全检查,目的就是一个保证安全。

2、编程

3、后编程

刷写完成之后,ECU进行重启,重新进入扩展会话,打开之前关闭的配置。

注意:先使用28服务开启报文,再用85服务打开DTC记录。

ECU重启 常用的做法就是执行ECU Reset,也可以让诊断刷写的S3时间超时,程序重新复位。

 

 

   
199 次浏览       2
相关文章

一文了解汽车嵌入式AUTOSAR架构
嵌入式Linux系统移植的四大步骤
嵌入式中设计模式的艺术
嵌入式软件架构设计 模块化 & 分层设计
相关文档

企点嵌入式PHP的探索实践
ARM与STM简介
ARM架构详解
华为鸿蒙深度研究
相关课程

嵌入式C高质量编程
嵌入式操作系统组件及BSP裁剪与测试
基于VxWorks的嵌入式开发、调试与测试
嵌入式单元测试最佳实践

最新活动计划
SysML和EA系统设计与建模 7-26[特惠]
Python、数据分析与机器学习 8-23[特惠]
软件架构设计方法、案例与实践 8-23[特惠]
嵌入式软件架构设计 8-22[线上]
Linux内核编程及设备驱动 7-25[北京]
 
 
最新文章
基于FPGA的异构计算在多媒体中的应用
深入Linux内核架构——简介与概述
Linux内核系统架构介绍
浅析嵌入式C优化技巧
进程间通信(IPC)介绍
最新课程
嵌入式Linux驱动开发
代码整洁之道-态度、技艺与习惯
嵌入式软件测试
嵌入式C高质量编程
嵌入式软件可靠性设计
成功案例
某军工所 嵌入式软件架构
中航工业某研究所 嵌入式软件开发指南
某轨道交通 嵌入式软件高级设计实践
深圳 嵌入式软件架构设计—高级实践
某企业 基于IPD的嵌入式软件开发
更多...