如何实现BootLoader自更新呢?
内容提要
汽车软件Boot程序的刷新方式有五种:SB更新CB、RAM+Flash Reboot更新、RAM+RAM ReBoot更新、借助App程序Flash空间更新、借助额外Flash空间更新。根据软件架构、资源和成本等因素选择适合的刷新方式。
延伸解读
Boot自更新为何缺乏行业规范
文章指出,整车厂只对App程序刷新进行规范,没有关于Boot自动刷新的规范。这是因为规范针对量产车,售后只负责App升级,不允许Boot升级。因此,Boot自动刷新仅存在于项目开发阶段,由供应商提供方案。这意味着工程师在实现Boot自更新时,需自行权衡方案,并确保其不影响量产后的售后流程。
五种方式的核心取舍:资源、风险与时间
五种Boot自更新方式可归为三类:依赖SB、借助RAM、借助Flash。方式一需要额外Flash和复杂结构;方式二、三节省Flash但掉电风险高,可能导致控制器瘫痪;方式四、五更可靠,但方式四步骤繁多、耗时较长,方式五需要独立Flash块。选择时需综合软件架构、CPU资源和成本因素。
方式四的“刷不死”有条件,附录给出对策
文章附录澄清,方式四借助App Flash空间更新时,若在擦除旧CB后、刷入新CB完成前掉电,仍可能刷死。对策一是将Boot有效性标志与启动地址重合,先擦除、最后写入标志,确保掉电后从另一启动地址运行ReBoot;对策二将Boot分段并增加有效性检查逻辑。对策一经实际测试验证,可满足稳定刷新ECU的要求。
Q&A
汽车Boot程序自更新有哪些常见方式?
共有五种方式:1. SB更新CB;2. RAM+Flash Reboot更新;3. RAM+RAM ReBoot更新;4. 借助App程序Flash空间更新;5. 借助额外Flash空间更新。
为什么整车厂没有Boot自动刷新的规范?
整车厂规范只针对量产车,售后只负责App程序升级,不允许Boot升级,因此Boot自动刷新仅存在于项目开发阶段,由供应商提供方案。
SB更新CB方式有什么优缺点?
优点:逻辑结构简单清晰,软件分工明确,只需一次刷新。缺点:需要较大Flash空间存放刷新逻辑,SOP后需禁止造成浪费;软件分三级启动结构复杂,开发和维护成本高;无法更新SB本身。
RAM+Flash Reboot更新方式存在什么风险?
在CB更新过程中如果CPU掉电,重新上电后Reboot内容丢失,CB已破损,程序无法正常启动,控制器瘫痪,只能开盖用JTAG烧写。
借助App程序Flash空间更新Boot的步骤和优缺点是什么?
步骤:1. 运行CB,擦除App,将ReBoot下载到App区域;2. 运行ReBoot,擦除旧CB,刷入新CB;3. 运行新CB,刷回App。优点:不需要额外Flash和RAM资源;稳定可靠,通过优化设计可保证掉电不刷死;对CB稍加改造即可成为ReBoot。缺点:步骤繁多,至少三次刷新,易混淆;整体刷新时间较长。
如何降低方式四中Boot刷新时掉电导致控制器刷死的风险?
可采用对策一:将Boot有效性标志与启动地址重合,调整刷新顺序,先擦除并刷新Boot主体,最后一步再写入启动地址的有效性标志(从RAM写入,10ms内完成),确保掉电后仍能从另一启动地址运行Reboot继续刷新。对策二:将Boot分为两段,Sec1存放启动自检查逻辑,Sec2末尾存放有效性标志,检查无效则跳转到启动地址2运行Reboot。
如何根据项目需求选择Boot自刷新方式?
若CPU Flash资源富余且需要两级Boot,选方式一最节省时间;若只需单级Boot且能容忍刷死开盖的成本,选方式二或三较方便;若不允许开盖但能容忍步骤繁多时间较长,选方式四或五最可靠。需综合考虑软件架构、CPU资源、时间人力物料等成本。