0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

工程思考:为什么OEM抵触Bootloader更新?

汽车ECU开发 来源:汽车ECU开发 2023-09-28 16:05 次阅读

工程项目中,软件维护和修复是整个软件生命周期"永恒"的议题,换句话说:软件的鲁棒程度是相对的,而软件存在bug是绝对的。所以,当软件出现bug时,如何最大程度地降低维护成本是OEM(Original Equipment Manufacturer)最为关切的问题。相比Application程序或者Calibration程序的更新,Bootloater程序的更新成本更"高昂",如何理解这里的"高昂"呢?这需要先从OEM升级Bootloader的痛点说起。

1、OEM升级Booloater程序的痛点

为什么OEM更新某个控制器的Bootloater程序更"痛苦"呢?搞清楚这个问题,就得从OEM的视角去看问题,OEM作为主机厂,生产的每一辆车,其实可以看作成千上万商品的组装。这里的商品包括大量供应商的产品。比如:某供应商A的控制器A,而供应商A的控制器A中,需要提前预刷Bootloader,之后由OEM刷写对应的Application、Calibration等软件程序。所以,从OEM视角看产品:产品A = 控制器A硬件+Bootloader程序。OEM为了维护和追踪产品,当车辆下线时,伴随车辆的产品A批次会分配唯一的"总成号"。这也就意味着,如果产品A批次出现硬件或者Bootloader迭代,则需要重新分配一个总成号。供应商某批次控制器交付OEM,到OEM刷写软件的流程,示意如下:

2859918c-5d90-11ee-939d-92fbcf53809c.png

提示:车辆下线时,总成号通过诊断服务写入。

对于OEM来说,每次从供应商拿到产品就需要先确认产品的批次,如果控制器硬件+Bootloader没有变更,则认为是同一批次产品。如果供应商对控制器硬件或者Bootloader做了升级,OEM则认为产品有迭代,如此,则需要为新的产品分配总成号,同时,OEM工厂会产生"生成断点"。如何理解生产断点呢?如果产品没有迭代之前,OEM所拿到的产品为A批次,供应商产品更新后,OEM拿到的产品为B批次,这就意味着之前车辆装配的产品为A批次,之后车辆装配的产品为B批次,如此,OEM的车辆或者库存中就会存在两种产品,进而就形成了产品断点,示意如下所示:

28683354-5d90-11ee-939d-92fbcf53809c.png

形成产品断点会带来怎样的市场影响呢?如果是控制器产品硬件或者Bootloader问题,且影响驾/乘人员安全,则意味着产品需要召回,或者需要进行远程升级,修复软件Bug。如果产品召回,则意味着OEM需要承担召回的成本开销,这里的开销不单单是一个产品替换的成本,还会涉及售后、维修人员等费用开销。而且产品断点还会带来产品管控的风险,举例:由于产品批次混淆,在OEM产线端,可能出现新下线车辆装错产品批次问题。

本文讨论Bootloader出现问题如何解决,或者说是否有更好的方案避免产品断点问题。

Bootloader本身就属于软件范畴,只是因为从OEM角度,将其看作产品的一部份。按照OEM的生产处理流程,如果Bootloader出问题,且必须升级时,则OEM一定需要为修复的产品批次分配总成号,进而出现产品断点。所以,产品断点的原因之一是因为Bootloader和总成号绑定,深度耦合。如果Bootloader程序不与总成号绑定,像Application或者Calibration那样,出现bug,随时更新,是否就不会形成产品断点呢?答:是的。

2、避免产品断点方案

(一)方案一

既然Bootloader改动需要重新分配总成号,是否可以在软件中将总成号与Bootloadr程序解绑?答:可以。在软件层面,将总成号单独拆分出来,放在某固定区域(该区域不随着Bootloader更新而改动),只要OEM分配一次总成号即可。在软件的角度,此处的PBL(Primary Bootloader)与总成号绑定,PBL只起到跳转作用。由于总成号不再修改,OEM工厂也就认为Bootloader永远不用修改,即:产品不会形成断点。同时,将原有的PBL升级功能放到内存的其他区域,与App、Cal等软件程序同等处理,当更新程序出问题时,按照App流程更新即可。方案示意如下:

2870274e-5d90-11ee-939d-92fbcf53809c.png

核心点:将原有的PBL功能进行拆分,将容易出问题的功能独立出来,等同于App处理,不与总成号绑定。

(二)方案二

工程中,PBL出问题,很多时候是因为路由子节点、队列刷写、并行刷写造成的。如果将PBL中的这些功能移交给SBL(Secondary Bootloader)处理,也就意味着PBL出现问题的概率极大降低,进而降低总成号分配频次,避免形成过多的产品断点。因为SBL本身放在RAM区,即使每次修改也不会带来额外影响,示意如下:

2878928a-5d90-11ee-939d-92fbcf53809c.png

其实,不管方案一、方案二还是其它方案,最终都需要考虑对整车测试、EE测试、OEM产线、OTA等各个环节的影响,尽量做到影响范围最小,实施性最高。

延伸思考:当产品更新时,通过诊断服务(eg:$2E,Write Data By Identifier service)把总成号写成一样的不可以吗?听起来似乎很合理,但是,不可行。这涉及到产线(eg:EOL,End of Line)软件结算维护问题,我们需要从工程流程化角度考虑,不能只盯着技术实现维度。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16090

    浏览量

    177014
  • OEM
    OEM
    +关注

    关注

    4

    文章

    400

    浏览量

    50233
  • bootloader
    +关注

    关注

    2

    文章

    234

    浏览量

    45496

原文标题:工程思考:为什么OEM抵触Bootloader更新?

文章出处:【微信号:eng2mot,微信公众号:汽车ECU开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是Bootloader 浅谈STM32中bootloader的内存分配

    1. 什么是Bootloader Bootloader是硬件启动的引导程序,是运行操作系统的前提。在操作系统内核或用户应用程序运行之前运行的一段小代码。对硬件进行相应的初始化和设定,最终为操作系统
    的头像 发表于 02-15 06:10 1.7w次阅读
    什么是<b class='flag-5'>Bootloader</b> 浅谈STM32中<b class='flag-5'>bootloader</b>的内存分配

    工程监测多通道振弦模拟信号采集仪VTN如何OEM代工

    OEM
    河北稳控科技
    发布于 :2023年03月23日 15:00:12

    bootloader更新时pcb板子为什么会重启

    bootloader更新时pcb板子为什么会重启?是什么原因呢?如何去解决这个问题?
    发表于 09-02 07:19

    BK7252更新带ymodem的bootloader功能

    提示: 如果板子还能正常启动,可以直接更新RBL文件,一、更新带 ymodem 的bootloader 固件硬件准备:麻雀1号开发板,配套的无线编程器,typeC 线,PC 电脑软件准备:带
    发表于 09-27 10:55

    使用OTA升级的方法更新带ymodem bootloader的rbl文件

    前言上次分享了一个需要使用无线编程器烧录带 ymodem 功能的 bootloader ,有些朋友反馈说手上没有无线编程器,so 建议造一个可以通过 ota 更新的带 ymodem
    发表于 09-27 10:59

    BOOTLOADER (基于Platform Flash)

    Xilinx FPGA工程例子源码:BOOTLOADER (基于Platform Flash)
    发表于 06-07 14:13 9次下载

    Bootloader 系统使用新应用代码和/或数据管理组件闪存的更新流程

    Bootloader 系统使用新应用代码和/或数据管理组件闪存的更新流程
    发表于 10-09 16:17 4次下载
    <b class='flag-5'>Bootloader</b> 系统使用新应用代码和/或数据管理组件闪存的<b class='flag-5'>更新</b>流程

    Bootloader系统使用新应用代码和/或数据管理组件闪存的更新流程

    Bootloader系统使用新应用代码和/或数据管理组件闪存的更新流程
    发表于 10-10 08:24 12次下载
    <b class='flag-5'>Bootloader</b>系统使用新应用代码和/或数据管理组件闪存的<b class='flag-5'>更新</b>流程

    bootloader如何更新

    BootLoader就是单片机启动时候运行的一段小程序,这段程序负责单片机固件的更新,也就是单片机选择性的自己给自己下程序。可以更新,也可以不更新
    发表于 11-10 08:22 7763次阅读
    <b class='flag-5'>bootloader</b>如何<b class='flag-5'>更新</b>

    STM32 BootLoader升级固件

    Bootloader应该是每个成熟产品都必须具备的功能,有了它,我们不用担心产品销售出去后发现产品固件有问题而无法解决的问题,有了Bootloader功能,我们可以非常方便的升级更新我们产品的固件!
    发表于 11-10 08:59 5025次阅读
    STM32 <b class='flag-5'>BootLoader</b>升级固件

    Bootloader是什么Bootloader的介绍和过程详细解

    本文档的主要内容详细介绍的是Bootloader是什么Bootloader的介绍和过程详细解主要内容包括了: 1. Bootloader简介2.几种发布的Bootloader
    发表于 12-11 17:33 46次下载
    <b class='flag-5'>Bootloader</b>是什么<b class='flag-5'>Bootloader</b>的介绍和过程详细解

    STM32系统bootloader的应用有哪些

    嵌入式开发中,经常需要bootloader进行程序固件升级和系统维护,所以bootloader是必不可少的功能。STM32系统自带的系统bootloader很方便使用。大量减少了工程
    的头像 发表于 10-22 12:19 5509次阅读
    STM32系统<b class='flag-5'>bootloader</b>的应用有哪些

    两线bootloader工程设置

    Other Parts Discussed in Post: CC1310, CC2538作者: TI 工程师 Louis Lu    CC1310是TI Simplelink MCU系列中支
    的头像 发表于 12-29 14:06 1247次阅读

    STM32系统bootloader应用

    嵌入式开发中,经常需要bootloader进行程序固件升级和系统维护,所以bootloader是必不可少的功能。STM32系统自带的系统bootloader很方便使用。大量减少了工程
    发表于 11-26 13:36 17次下载
    STM32系统<b class='flag-5'>bootloader</b>应用

    mm32-2nd-bootloader技术进阶设计:实现Ymodem更新代码

    ?从本章开始,将会讲解几种 2nd Bootloader 进阶设计,实现类似 ISP 更新固件的功能,以及在 OTA 升级时避免变“砖”等设计,以及讲解一些 2nd Bootloader 的程序设计思路。
    的头像 发表于 06-09 09:28 1778次阅读
    mm32-2nd-<b class='flag-5'>bootloader</b>技术进阶设计:实现Ymodem<b class='flag-5'>更新</b>代码