BootLoader—基于CAN的FBL详解

功能概述

  BootLoader,顾名思义,就是驻留在ECU非易失性存储器(NVM)中的一段程序加载代码,每次ECU复位后,都会运行bootloader。它会检查是否有来自通信总线的远程程序加载请求(外部重编程请求,比如10 02),如果有,则进入bootloader模式,建立与程序下载端(通常为PC上位机)的总线通信并接收通信总线下载的应用程序、解析其地址和数据代码,运行NVM驱动程序,将其编程到NVM中,并校验其完整性,从而完成应用程序更新。如果没有来自通信总线的远程程序加载请求,则直接跳转到应用程序复位入口函数。

FBL刷写流程图

  Start或者Reset以后,首先会检查是否有外部重编程请求(10 02),如果有重编程请求,此时就会直接进入BT的编程会话进行软件升级操作。

  如果没有外部重编程请求,再检查APP是否有效,如果APP有效,就跳到APP默认会话;如果APP无效,就跳到BT里面的默认会话。

  如果没有外部重编程请求,且APP有效,这时候就进入APP里的默认会话,在APP默认会话里请求10 03进入扩展会话,扩展也可以请求10 01进入默认会话,但是扩展会话请求10 02以后,就会把外部重编程位置1,也就是外部重编程有效,这时候再进行Reset操作,Reset相当于是一个开关,然后流程重新开始,外部重编程有效,进入BT里面的编程会话,就开始升级操作,升级完成后然后进行reset。

  如果没有外部重编程请求,且APP无效,就会进入BT下的默认会话,走相应的流程,也会重新进行升级的操作,软件的升级就是在BT里的编程会话下完成,APP有效一般是跟Flash Driver擦除有关,在擦除前,我们就该把APP的有效位置0,防止擦除中Reset进APP,APP有效位置0的情况有,擦除前置0,APP扩展会话下使外部重编程标志位有效时使APP有效位置0

BT升级步骤

Step1:预编程

10 03 (Func) 进扩展

31 01 02 03 预编程检查(车速、转速)

85 02 (Func) 停止DTC状态位的更新

28 03 01 (Func) 禁通信

Step2:主编程

10 02 进编程会话

27 01 安全访问请求种子

27 02 安全访问发送密钥

#34 请求下载FlashDriver

#36 传输FlashDriver数据

#37 退出FlashDriver数据传输

31 01 02 02 完整性校验

31 01 FF 00 擦除内存,一般与APP大小相同

#34 请求下载APP

#36 传输APP数据

#37 退出APP数据传输

31 01 02 02 完整性校验

31 01 FF 01 兼容性校验,检查下载的内容与服务器的内存是否协调

Step3:后编程

#28 开启通信

#85 开启DTC

#11 Reset

相关推荐
结城明日奈是我老婆9 分钟前
基于stm32f103c8t6最小系统板俩块版通讯
stm32·单片机·嵌入式硬件
SDWAN_Cheap11 分钟前
网络基础扫盲第二弹:DNS、DHCP、ARP、NAT、TCP/IP,从原理到实践
网络·tcp/ip·dns·网络基础
z92098102313 分钟前
常用的改机软件 MTK 高通 展讯 紫光展锐 改串 一键新机 怎么做?修改SN NV数据 qcn
网络
weixin_4568083814 分钟前
【沁恒蓝牙开发】从机判断主机是否使能CCCD
单片机·嵌入式硬件
Dynadot_tech15 分钟前
掘金优质中文域名——Nameclub中文IDN交易板块重磅上线
网络·域名·中文域名·dynadot·域名管理·域名交易
鼎讯信通15 分钟前
一机多能,能源通信运维优选——鼎讯JM-Q150 实测解析
运维·能源·信息与通信·天馈线测试仪
Bobolink_19 分钟前
海外拍卖直播风控数据上报:跨境网络加密传输方案设计实践
网络·数据传输·跨境直播·直播网络
sensen_kiss25 分钟前
CPT304 SoftwareEngineeringII 软件工程 2 Pt.6 批判性分析 / 关键性分析(Critical Analysis)
学习·软件工程
梦想的旅途226 分钟前
企业微信自动化系统从 0 到 1:架构设计与踩坑实录
网络·机器人·自动化·企业微信·rpa
2501_9419820529 分钟前
# 企业微信群管理机器人的技术实现:从创建到解散的完整方案
网络·机器人·自动化·企业微信·rpa