汽车ECU BootLoader升级

什么是 BootLoader

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

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

Bootloader刷写使用的协议

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

Bootloader 的划分

一个ECU包含了三部分 Boot ManagerApplication Software以及Boot Software,其中Boot SoftwareBoot ManagerReprogramming 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时间超时,程序重新复位。

参考

  • https://zhuanlan.zhihu.com/p/554132450
  • 38
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本资源是TSMaster在2021-07-15发布的最新版 Release Note: [1] Mini program VC++ project can be generated directly in editor [2] MDI now supports colorful window title color 本软件安装后就不用再到网络上寻找升级包了,只要打开软件-帮助-更新,就可以自动在线更新,请勾选beta版本以享受超快功能推送,若有希望增加的功能请联系同星智能,我们承诺95%以上的核心功能都是永久免费!永久免费!永久免费! TSMaster 是同星智能推出的虚拟仪器软件平台,可连接、配置并控制所有的同星硬件工具、设备,实现汽车总线监控、仿真、诊断、标定、BootLoader、I/O 控制、测量测试、EOL等多种场合的功能需求。 永久免费,但性能堪比CANoe,CANape,首款同时支持TOSUN、Vector、PEAK、Intrepidcs、Kvaser、周立功硬件的软件产品,可与CarSim、Carla联合仿真,可直接编译Simulink生成的ECU代码做SIL仿真。 TSMaster 自带的小程序功能支持用户自定义仿真测试面板,测试流程,测试逻辑,甚至测试系统和报告自动化生成。 特性: CAN、LIN、CAN FD总线监控、仿真、测试; 报文信息,显示总线报文数据、帧率; 报文发送,可配置周期发送且连续变化的总线信号; 图形窗口,显示总线信号的变化曲线; 数据库管理,加载并解析DBC文件、LDF文件; 仿真功能,支持剩余总线仿真,以及任意逻辑模拟节点行为; 通道映射,支持用户自定义应用程序的逻辑通道进行联合仿真; 报文记录和回放功能,支持BLF格式的CAN、LIN、CANFD报文记录和回放, 记录文件大小没有限制; 测试系统,用户可以定义完整的测试系统,支持自动化测试和自动报告生成; 支持同星CAN/CAN FD/LIN/FastLIN系列硬件; 支持Vector、Kavaser、PEAK、Interpics等多家厂商CAN总线硬件; 支持报文监测,分析,仿真发送,图形界面Panel绘制等功能; 支持blf、asc格式数据记录和离线/在线回放; 内置脚本编辑,支持虚拟仿真、半实物仿真; 支持外部程序调用API接口。
### 回答1: 汽车电子控制单元(ECU)是现代汽车中必不可少的电子设备之一,它负责管理发动机、变速器、车辆稳定性控制系统等多个重要部件。而ECU中的bootloader则是支持ECU软件更新的重要组成部分,它具有一个特殊的启动程序,用于将新的软件加载到ECU中。 ECU bootloader的工作原理主要是将新的软件程序通过CAN总线或其他通信方式,发送到ECU中进行更新。具体步骤如下:首先,ECU bootloader会检查当前系统中的软件版本是否需要更新。如果需要更新,则它会在系统启动时自动进入bootloader模式,并等待接收新的软件程序。接下来,ECU bootloader将通过通信接口接收新的程序,并将其存储在特定的flash存储器中。然后,ECU bootloader会进行程序校验和解压缩等动作,以确保接收到的程序没有任何问题。最后,ECU bootloader将新的程序加载到内存中,并将控制权交给新程序,完成软件更新过程。 在进行ECU bootloader的开发时,需要注意以下几个要点:首先是要选择适当的存储器,并确定软件程序的大小。其次,需要实现通信接口,确定通信协议和数据传输方式。然后,需要设计和实现程序校验和解压缩等安全和稳定性相关的功能。最后,还需要进行一系列的测试和验证,以确保软件更新功能的正确性和可靠性。 总之,ECU bootloader是现代汽车中非常重要的一个电子组件,它支持汽车ECU软件更新,保证了车辆的正常运行和安全。在进行ECU bootloader开发时,需要充分考虑软件大小、通信接口、安全性等方面的因素,确保实现出稳定可靠的功能。 ### 回答2: 汽车电子ECU Bootloader是一种可以更新车辆控制器软件的重要工具,本文将介绍汽车电子ECU Bootloader的工作原理和开发要点。 汽车电子ECU Bootloader的工作原理主要是通过分区管理技术将存储器划分为Bootloader和应用程序两个区域,Bootloader负责车辆控制器的引导和固件更新,而应用程序则实现车辆控制器的各项功能。当车辆控制器出现故障或升级需要时,Bootloader通过CAN总线接受来自外部设备的控制命令,对存储器中的数据进行读写操作,完成软件更新等任务。 开发汽车电子ECU Bootloader需要考虑以下几个要点: 1.安全性:保证Bootloader在更新过程中不会遭到外部攻击或出现故障,同时需要遵守汽车规范和安全标准,确保车辆控制器的安全性和稳定性。 2.可靠性:Bootloader需要对存储器中的数据进行正确的读写操作,避免数据丢失或损坏等可能出现的问题,同时需要实现固件校验技术,确保固件的完整性和正确性。 3.灵活性:Bootloader需要支持多种协议和接口,以适应不同车辆控制器的要求,同时需要支持多种固件格式,以避免与其他系统不兼容的问题。 4.可测试性:Bootloader需要为软件开发人员提供方便的测试和调试工具,以便快速迭代和改进,同时需要支持错误日志和故障诊断技术,以帮助分析和解决问题。 综上所述,汽车电子ECU Bootloader是进行车辆控制器软件更新和管理的重要工具,其开发需要考虑多个要点,包括安全性、可靠性、灵活性和可测试性等,以确保车辆控制器的安全性、稳定性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值