谈谈Bootloader自更新

2023-05-16

目录

01.Supplier Boot(SB) + Customer Boot(CB)

02.将Boot先放到RAM中运行,然后更新Boot的Flash区域

03.两个CB+minBoot

04.小结


汽车控制器的BootLoader(下文简称Boot)主要作用是更新App程序

以往在不打开控制器的情况下,是无法更新Boot。

随着主机厂对车上各控制器要求实现OTA功能,App备份、Boot自更新的需求也随之到来。

App备份和Boot自更新是两个重要的功能,接下来主要先来梳理一下Boot自更新。

在新四化的智能车时代,这样的更新方式很可能被OTA替换。

01.Supplier Boot(SB) + Customer Boot(CB)

通常情况下,供应商都有自己的平台软件,包括Boot和App。

而各主机厂都有自己不同的软件升级规范,为了适配主机厂的需求,通常的做法是加一层Customer Boot来实现客户的需求

那软件的运行顺序就是供应商bootSB-->客户bootCB-->应用程序App.

如图1所示。这种做法可以简单、快速的满足CB也可以更新。

图1 SB+CB的升级方式(来源网络)

不过这种方式,通常情况下通过SB更新CB是通过供应商自己定义的升级流程,并且通过自己的上位机来实现升级。也就意味着这种方式只适应项目开发阶段,因为供应商的升级流程无法接入到整车的OTA流程。

这种方式的优点就是简单,能很快地适配客户的需求,而且即使面向不同的客户,只需要简单的更改CB就可以满足需求,适应性比较好。但是缺点就是会浪费Flash空间。

02.将Boot先放到RAM中运行,然后更新Boot的Flash区域

这种方式只需要一份Boot,其具体方案是,在Boot的链接文件中,将程序和数据映射到特性的RAM空间,然后在控制器上电时,首先将Boot的代码和数据搬运到RAM中,程序运行在RAM中,当收到更新Boot的需求时(这里需要上位机在发送更新指令的时候,区别是更新Boot还是App,比如通过在0x31服务写入不同的标志位进行区分),通过RAM中的程序以及上位机下载的Flash Driver,将Boot的Flash区域进行更新。

图2 方案二

这种方式的优点就是节省Flash空间,而且如果客户想把Boot自更新的功能保留到量产之后,也是可以的,因此控制器的升级是完全遵循主机厂的要求的。

不过这种方式有个缺点,就是在更新过程中,不能断电,一旦断电,控制器就会变成板砖,需要换件。另外程序运行在RAM中,对踩内存这种行为更加敏感。

不过在整车上,出现意外断电的情况应该很少。首先升级之前会检查低压蓄电池的电压水平,甚至对新能源车来说,可以启动DCDC,来保证12V的稳定供应。

03.两个CB+minBoot

这种方案下,有两个Customer Boot和一个miniBoot。

miniBoot的作用是根据引导区的标志位来决定切换到哪个Boot。

其具体的运行方式是: 当软件收到Boot更新指令时,软件复位。

首先跳转到miniBoot,在miniBoot中,根据引导区标记(标记所需运行的Boot号,比如1代表Boot1,2代表Boot2)跳转到相应的Boot。

假设当前运行是Boot1,在Boot1中根据刷新指令,将Boot2的Flash区域进行更新,更新完之后,将引导区标记写为2,然后软件复位,那么下次运行的时候就会切换到Boot2运行了。

图3 2个CB+miniBoot方案

种方案的优势就是可以保证刷新过程中断电不会导致控制器变成板砖,而且也可以在SOP之后继续使用。缺点也很明显,空间占用率比较大,软件复杂,需要三个Boot

04.小结

三种方案中,简单来说分为两类:

一类是依赖一个启动Boot来切换到Customer Boot的,方案一和方案三都是这种思路,只不过方案三将Supplier Boot进行了简化,作用仅仅是一个跳转。

第二类是将Boot放到RAM中运行,然后更新自己的Flash区域,这种的致命缺陷就是更新过程中不能断电。

另外三种方案中都需要对现有的Boot方案进行改进,共同点就是必须增加一个流程,来确定是更新Boot,还是更新App,这里就需要在升级流程中增加一个步骤,比如是0x2E服务,写入升级的标志位,在跳转到Boot后,再识别该标志位来确定是更新Boot还是App。

对于2个CB+miniBoot方案而言,还需增加切换引导区标志位,用来确定当前所运行的Boot,另外由于这些参数很敏感,增加一些安全校验手段,来保护敏感数据也是必须的。

谈谈Bootloader自更新汽车控制器的BootLoader(下文简称Boot)主要作用是更新App程序。以往在不打开公控制器的情况下,https://mp.weixin.qq.com/s?__biz=Mzg4NjIxODk4Mg==&mid=2247497149&idx=1&sn=dc1f9f68f7b18c0ed6f9c2626d34ff18&chksm=cf9fbc34f8e835228a39c1da7d4e87b2b5005f29772e9b14b693ec65263e870bad9b1e7abb2a&scene=21#wechat_redirect

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

谈谈Bootloader自更新 的相关文章

  • STM32使用RTOS BootLoader跳转app进入异常中断问题

    一 问题描述 在boot中不使用RTOS xff0c 跳转到APP中 xff0c APP可以正常运行 但是boot中使用RTOS跳转到APP中 xff0c 程序配置完时钟后就会进入MemManage Handler错误中断 二 解决方法 1
  • uboot和bootloader有啥区别

    uboot和bootloader有啥区别 reboot to bootloader有什么用 IT教学网 片内的ram用来存储启动代码 xff0c 在2440初始化sdram之前 xff0c 代码就在片内ram中运行 片内ram装载的是nor
  • px4 uavcan linux,UAVCAN - UAVCAN Bootloader - 《PX4中文维基》 - 书栈网 · BookStack

    安装UAVCAN启动程序警告 xff1a 无人机控制器局域网络 Unmanned Aerial Vehicle Controller Area Network xff0c UAVCAN 设备通常在出厂时就预安装了启动程序 如果你不对UAVC
  • 一文搞懂Bootloader跳转到APP 的方法和原理

    一 跳转方法 1 检查栈顶地址是否合法 if uint32 t NRF52840 APP BASE amp 0xffff0000 61 61 0x20040000 nrf bootloader app start 在编译生成的APP bin
  • bootloader中的中断服务程序的相关解释

    前一段时间在学习bootloader代码时 就是不明白bootloader的中断服务怎么跳转过去的 到网上查了半天 还是没能弄明白 只好自己动手了 下面是我对中断服务程序的理解 可能有点偏差
  • Flash概念简述

    1 Flash全名叫做Flash Memory Flash存储芯片的一种 通过特定的程序可以修改里面的数据 Flash属于非易失性存储设备 Non volatile Memory Device 与此相对应的是易失性存储设备 Volatile
  • u-boot移植详细文档

    本文转载至 http blog chinaunix net uid 9672747 id 3590141 html 一 Boot Loader的概念和功能 二 U boot简介 三 开发环境准备 四 U boot的使用 一 四 U boot
  • uboot启动流程分析

    FS4412 SOC的启动过程 在图中有 Cortax A9 其是芯片核心 也就是中央处理器 CPU Internal Rom 是一个只读存储器 里面存储了代码 总大小为64K 它的功能是用于读写pin脚 其作用是用来告诉系统从何处去读取u
  • 【STM32】制作一个bootloader

    工作环境 STM32CubeMX Keil 相关环境准备这里就不介绍了 bootloader是什么 bootloader就是单片机启动时候运行的一段小程序 这段程序负责单片机固件的更新 也就是单片机选择性的自己给自己下载程序 可以更新 可以
  • STM32在线升级 (IAP)

    来自QQ群 Linux 技术分享 311078264 打开链接加入QQ群 https jq qq com wv 1027 k 5Gr3bAx 此文档由elikang整理 为了文章简单直接 许多细节未能在文章中体现 如有疑问请进群讨论 STM
  • 一些常见BootLoader介绍

    首先区分一下BootLoader和Monitor的概念 严格来说 BootLoader只是引导设备并且执行主程序的固件 而Monitor还提供了更多的命令行接口 可以进行调试 读写内存 烧写Flash 配置环境变量等 Monitor在嵌入式
  • 从 UEFI 应用程序内部运行 UEFI shell 命令

    我是 UEFI 应用程序开发新手 我的要求是 我需要从 UEFI 应用程序运行 UEFI shell 命令 app efi 源代码 需要指导我如何做到这一点 Example cpUEFI shell 中的命令用于将文件从一个路径复制到 其他
  • “times 510-($-$$) db 0”不起作用

    我正在学习引导扇区 我从以下位置下载了 nasm installer x64 exeNASM网站 我的操作系统是win7 64位 当我运行以下代码时 它无法正常工作 mov ah 0x0e mov al the secret int 0x1
  • 引导加载程序如何读取 DVD(cd)?

    我有一个用汇编语言编写的第一阶段引导加载程序 我需要它从 DVD 或 CD 加载第二阶段引导加载程序 我只找到了从软盘或硬盘读取的示例 那里使用的中断是13h 在中断描述中它说它可以读取软盘和硬盘 我尝试使用 13h 来读取 CD 就好像它
  • 程序集 32 位打印显示在 qemu 上运行的代码,无法在真实硬件上运行

    我已经用 x86 汇编语言编写了一小段在裸硬件上运行的代码 此时 它已启用受保护的 32 位模式 然而 我遇到了与屏幕打印有关的问题 我读到 要在不中断的情况下执行此操作 可以将字符加载到特殊的内存区域 即 RAM 地址 0xb8000 知
  • 系统启动时哪个核心首先初始化?

    我想知道CPU启动时多核处理器的哪个核心首先初始化 我的意思是在引导加载程序级别 是第一个核心 还是随机核心 您想要阅读本地 apic 您可以在 卷 2a 中阅读 http www intel com content www us en p
  • 如何将 bin 文件(512 字节)写入软盘的第一个扇区(扇区 0)?

    如何将 bin 文件写入软盘 虚拟软盘 软盘映像的第一个扇区 我正在尝试启动一个简单的 512 字节引导加载程序 到处都显示 512 字节 的大小 所以我应该已经很好了 附加信息 引导加载程序仅显示一个字符串 我正在学习simple集会 有
  • 如何获取 RAM 大小、引导加载程序

    我想问如何在引导加载程序中获取总 RAM 大小和可用 RAM 大小 截至目前 我知道如何获得较低的内存 但由于某种原因我无法将其打印到屏幕上 因为它保存在斧头寄存器中 这是我到目前为止所拥有的 BITS 16 BootLoader alwa
  • 如何将以下 NASM 代码转换为 AT&T 语法,以修复“无法处理 jmp 中的非绝对段”错误

    我是 AT T 语法新手 我想将以下 NASM 语法代码转换为 AT T 语法只是为了便于理解 我尝试将其转换为 AT T 语法 lgdt gdtpointer jmp gdtcode start gdt quad 0x0000000000
  • 将引导加载程序存储在软盘映像上的哪里?

    我将编写并测试引导加载程序 为了做到这一点 我计划将引导加载程序复制到软盘映像文件上并将其安装在虚拟机中 但是 我不确定将引导加载程序的机器代码放在哪里 它是否只是转储到文件的前几个字节中 软盘的引导扇区是第一个扇区 如果您谈论的是原始软盘

随机推荐

  • 聚焦芯片:GPU,CPU,SOC,DSP,FPGA,ASIC,MCU,MPU,GPP,ECU等都是什么?

    先上部分概念 xff1a CPU xff1a 中央处理器 xff08 Central Processing Unit xff09 是一块超大规模的集成电路 xff0c 是一台计算机的运算核心 xff08 Core xff09 和控制核心 x
  • 怎么样实现车辆信息安全

    1 车载IDS 正成为持续网络安全保护的核心要素 持续的网络信息安全风险管理正成为VTA的要求 通过IDS车载入侵检测可以为整个车队提供信息安全保护 但是 xff0c 分布式IDS的指导原则是什么 xff1f 为了满足UNECE WP29法
  • SOA通信架构和SOME/IP-SD的主要功能

    1 SOA面向服务的通信交互 如上图所示 xff0c 女神去热水澡堂洗澡 xff0c 想搓背 xff08 find服务 xff09 xff0c 于是她付要付搓背钱给澡堂老板 xff0c 这时澡堂老板知道通过小王和小明的毛遂自荐 xff08
  • OTA升级的实现原理

    一 简介 1 1 概念 OTA xff1a Over the Air Technology xff0c 即空中下载技术 OTA升级 xff1a 通过OTA方式实现固件或软件的升级 只要是通过无线通信方式实现升级的 xff0c 都可以叫OTA
  • 为什么特斯拉自动驾驶汽车不需要激光雷达

    光 糖果Autosar 2022 02 14 08 08 特斯拉仪表板 打造全自动驾驶汽车所需的技术堆栈是什么 xff1f 公司和研究人员对该问题的答案存在分歧 自动驾驶的方法范围从相机和计算机视觉到计算机视觉和高级传感器的组合 特斯拉一直
  • 架构与中台

    做架构工作最重要的是练好内功 什么是内功 xff1f 大局观 认知层次 xff0c 思维方式 xff0c 方法论 概念抽象能力等等都属于内功 零件设计主外 xff0c 架构设计主内 零件设计五花八门 xff0c 紧随新技术新热点 架构设计苦
  • UDS服务简易教程

    本文主要以简单易懂的描述向大家介绍CAN诊断基础知识 xff0c 本文主要介绍CAN诊断中UDS服务的基本内容 xff0c 主要参考文件ISO15765 2 ISO15765 3 ISO14229 1 xff0c 读完本篇文章后希望进一步了
  • 五万字读懂c++

    const作用 修饰变量 xff0c 说明该变量不可以被改变 xff1b 修饰指针 xff0c 分为指向常量的指针 xff08 pointer to const xff09 和自身是常量的指针 xff08 常量指针 xff0c const
  • 在AP_EM上的骚操作

    最近大家都对AP兴趣很大 xff0c 也不知CP大家玩转了木有 xff0c 反正咱也不知道咱也不敢问 xff0c 这次楼主就扯下AP中的状态管理SM和执行管理EM部分 言归正传 xff1a AP的应用 xff0c 在通过工具配置后 xff0
  • 编译型语言和解释型语言的区别

    我们编写的源代码是人类语言 xff0c 我们自己能够轻松理解 xff1b 但是对于计算机硬件 xff08 CPU xff09 xff0c 源代码就是天书 xff0c 根本无法执行 xff0c 计算机只能识别某些特定的二进制指令 xff0c
  • 什么情况下需要加extern “C“,通俗易懂

    下午看了一些关于extern 34 C 34 的博客 xff0c 都写得很啰嗦 xff0c 看来看去还是有一些细节不怎么了解 xff0c 自己开了个程序测试了一下 xff0c 总结了什么情况下需要加入extern C 首先c 43 43 和
  • POSIX介绍

    POSIX表示可移植操作系统接口 xff08 Portable Operating System Interface of UNIX xff0c 缩写为 POSIX xff09 xff0c POSIX标准定义了操作系统应该为应用程序提供的接
  • Linux crond 命令使用实例

    每一分钟调用一次 ls l etc gt tmp to txt crontab e 进行编辑 1 ls l etc gt tmp to txt 1 代表每一分钟执行一次 1 第二个 代表一天中的某个小时 案例2 xff1a 写一个脚本 vi
  • DoIP诊断技术一点通

    DoIP的全称是Diagnostic Over Internet Protocol xff0c 即基于TCP IP协议的诊断协议 随着以太网技术在车载领域的应用范围逐步扩大 xff0c 越来越多的控制器支持通过以太网进行诊断通信 xff0c
  • 嵌入式必备基础一

    嵌入式必备知识 Oliver H的博客 CSDN博客 一 进程与线程 1 1 进程和线程的概念 1 1 1 什么是进程 线程 xff0c 各自有什么优点 概念 xff1a 进程是对运行时程序的封装 xff0c 是系统进行资源调度和分配的的基
  • 嵌入式基础二——C/C++

    二 C C 43 43 2 1 c和c 43 43 区别 概念相关面试题 2 1 1 new和malloc的区别 属性 xff1a new delete是C 43 43 关键字 xff0c 需要编译器支持 malloc free是库函数 x
  • ​Linux 黑话解释:什么是 POSIX?

    POSIX xff0c 你肯定在各种在线论坛和文章中 xff0c 听到过这个缩写 xff0c 或读到过关于它的信息 程序员和系统开发人员似乎最关心这个问题 它听起来很神秘 xff0c 虽然有很多关于这个主题的好资料 xff0c 但一些讨论区
  • 科研进阶篇——论文完结

    终于完成了人生的第一篇学术论文 xff0c 对这次的科研做个总结 xff0c 画上一个完美的问号 xff0c 让我们快乐的继续进阶 xff0c 投了会议 xff0c 中了的话应该会推荐到CCF C期刊 虽然还没出结果 xff0c 还是为自己
  • AP AUTOSAR 平台设计总体框架全解

    AP AUTOSAR 平台设计总体框架全解 01 简介 1 1内容 本规范描述技术范围和方法 AP的背景 逻辑和物理视图的架构 xff0c 是AUTOSAR自适应平台设计的总体框架 全文32000余字 xff0c 建议收藏阅读 02 技术范
  • 谈谈Bootloader自更新

    目录 01 Supplier Boot SB 43 Customer Boot CB 02 将Boot先放到RAM中运行 xff0c 然后更新Boot的Flash区域 03 两个CB 43 minBoot 04 小结 汽车控制器的BootL