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