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

工程项目中,软件维护和修复是整个软件生命周期永恒的议题,换句话说:软件的鲁棒程度是相对的,而软件存在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刷写软件的流程,示意如下:
提示:车辆下线时,总成号通过诊断服务写入。
对于oem来说,每次从供应商拿到产品就需要先确认产品的批次,如果控制器硬件+bootloader没有变更,则认为是同一批次产品。如果供应商对控制器硬件或者bootloader做了升级,oem则认为产品有迭代,如此,则需要为新的产品分配总成号,同时,oem工厂会产生生成断点。如何理解生产断点呢?如果产品没有迭代之前,oem所拿到的产品为a批次,供应商产品更新后,oem拿到的产品为b批次,这就意味着之前车辆装配的产品为a批次,之后车辆装配的产品为b批次,如此,oem的车辆或者库存中就会存在两种产品,进而就形成了产品断点,示意如下所示:
形成产品断点会带来怎样的市场影响呢?如果是控制器产品硬件或者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流程更新即可。方案示意如下:
核心点:将原有的pbl功能进行拆分,将容易出问题的功能独立出来,等同于app处理,不与总成号绑定。
(二)方案二
工程中,pbl出问题,很多时候是因为路由子节点、队列刷写、并行刷写造成的。如果将pbl中的这些功能移交给sbl(secondary bootloader)处理,也就意味着pbl出现问题的概率极大降低,进而降低总成号分配频次,避免形成过多的产品断点。因为sbl本身放在ram区,即使每次修改也不会带来额外影响,示意如下:
其实,不管方案一、方案二还是其它方案,最终都需要考虑对整车测试、ee测试、oem产线、ota等各个环节的影响,尽量做到影响范围最小,实施性最高。
延伸思考:当产品更新时,通过诊断服务(eg:$2e,write data by identifier service)把总成号写成一样的不可以吗?听起来似乎很合理,但是,不可行。这涉及到产线(eg:eol,end of line)软件结算维护问题,我们需要从工程流程化角度考虑,不能只盯着技术实现维度。

区块链的应用价值主要表现在哪些方面
深鉴科技被美国赛灵思收购_实现两家企业双赢
利用人工智能识别歌曲风格,从而进行分类
东京国际智能制造技术综合博览会——线上线下五展同期!1.20-1.22不容错过!
华为智能汽车解决方案带来的线路板市场需求和潜力
工程思考:为什么OEM抵触Bootloader更新?
智慧城市溶解氧水质在线如何监测?
研华IoT案例 AI赋能iDAQ旋转机械预测维护方案
基于FPGA的实时图像边缘检测系统
Semtech的LoRa技术帮助实现痴呆症患者的定位与主动监控
惠普OMEN暗影精灵7游戏本重磅首发 七大进化升级游戏体验,燃爆内力出“7”制胜
简述Cortex-M0―4各个优势
什么是脉冲 周围存在的脉冲有哪些
基于LTE Cat1 通信的一键紧急报警按钮(SOS)
苹果手机经常出现“无SIM卡”是什么问题?
面对华为nova 5i Pro和荣耀V20你会怎么选择那?
国产最强性能CPU!龙芯自研笔记本微边框惊艳亮相
银锌电池的用途
Verizon称其4G网络实际平均下载速度达12Mbps
HJT-0BB:积势待发可期