单片机固件自更新的一个方法!

💡 原文中文,约4100字,阅读约需10分钟。
📝

内容提要

汽车软件的Boot程序用于更新App程序。Boot自更新方式有五种:SB更新CB、RAM+Flash Reboot更新、RAM+RAM ReBoot更新、借助App程序Flash空间更新、借助额外Flash空间更新。每种方式都有优缺点,工程师需要根据软件架构、资源和成本等因素选择适合的方式。其中,借助Flash空间更新的方式四最稳定可靠。

🔎

延伸解读

Boot自更新的适用场景

Boot自更新仅存在于项目开发阶段,由供应商提供方案。量产车售后只允许升级App,不允许升级Boot,因为整车厂规范只针对App更新。因此,Boot自更新是开发阶段解决Boot自身升级需求的方法,需与软件开发计划配合。

五种方式的核心权衡

五种Boot自更新方式可归为三类:依赖SB、借助RAM、借助Flash。选择时需权衡Flash/RAM资源、掉电风险、刷新时间及成本。方式一需大Flash且结构复杂;方式二、三节省Flash但掉电易瘫痪;方式四、五更可靠但步骤多或需额外Flash。

方式四的刷死风险与对策

方式四虽稳定可靠,但若在擦除旧CB后、刷入新CB完成前掉电,且启动地址1已更新为有效,程序会进入不完整的CB导致刷死。对策一将启动地址1的有效性标志最后写入,确保掉电后仍从启动地址2运行Reboot继续刷新。对策二则独立设置Boot有效性标志并增加检查逻辑。

❓

Q&A

汽车软件的Boot程序有什么作用?

汽车软件的Boot程序主要用于更新App程序。

Boot自更新的方式有哪些?

Boot自更新方式有五种:SB更新CB、RAM+Flash Reboot更新、RAM+RAM ReBoot更新、借助App程序Flash空间更新、借助额外Flash空间更新。

哪种Boot自更新方式最稳定可靠?

借助Flash空间更新的方式最稳定可靠。

SB更新CB的优缺点是什么?

优点是逻辑结构简单清晰,缺点是需要较大Flash空间,开发和维护成本高。

RAM+Flash Reboot更新的主要风险是什么?

主要风险是如果在更新过程中掉电,控制器可能会瘫痪,无法正常启动。

工程师在选择Boot自更新方式时需要考虑哪些因素?

工程师需考虑软件架构、资源、成本等因素选择合适的Boot自更新方式。

🏷️

标签

➡️

继续阅读