我正试图找出通过总线(can/ethernet)升级软件的方法。在执行此操作时,安全状态建议回滚到以前的软件。请问谁能帮助我了解如何以及如何实现这一目标?
回滚的唯一方法是有足够的闪存来存储旧的应用程序,直到新应用程序被证明可以工作。
由于跨ecu的应用程序相互依赖,一些协调器(通常位于中央网关)必须对其进行协调。
第一步,这个协调器下载整个车辆的软件版本,将其存储在本地内存中,并进行一些真实性和完整性检查。
如果尚未存储,它也可以下载最新版本,该版本当前被闪存到本地空间。另一种选择是在ecu中设置第二个闪存区,这通常更昂贵。
然后协调器确保车辆处于安全状态,例如推进系统关闭,车内没有人并且门锁上。
如果确保了这一点,则使用正常的闪存程序将所有ecu与缓存的软件一起闪存。
之后,检查每个ECU以确保闪烁成功。
如果是,则可以丢弃存储的内容。
否则,如果ecu没有切换回内部副本,它会再次闪烁旧的应用程序。
当然,这也有失败的风险,为什么人们可能希望在每个ECU中都有这两个flash部分。
然而,后者对于像LIN slave这样的小型ecu是不现实的。