什么是允许在嵌入式系统中进行安全软件升级的技术

Lan*_*son 11 embedded reliability

升级嵌入式设备的软件通常有可能"堵塞"设备,例如,如果在将软件写入FLASH的过程中电源应该发生故障.两个问题:

  1. 实施升级机制的最佳实践是什么,以最大限度地降低设备被"砖砌"的可能性?
  2. 使升级过程成为故障安全的最佳实践有哪些,以便在将软件安装到FLASH时发生电源故障等事件可以从中恢复?

Sea*_*agh 11

这完全取决于应用程序的重要程度.有时也会组合两种基本方法(备份和引导加载程序).

许多系统都有一个只读引导程序(如redboot),然后是两组闪存(在同一芯片上,最常见).然后,引导加载程序有一个标志,用于选择要从哪个存储区引导.然后,该标志将根据升级(失败或成功)等事件进行更改.

因此,在升级时,正在运行的版本会将新负载复制到备份库中,检查校验和,切换引导标志,然后重新启动设备.设备将使用新负载重新启动新银行.重新启动后,新负载可以将自身复制到备份库中.

通常还有一个带硬件复位的看门狗定时器.这样,如果固件发生故障,它就无法启动看门狗,硬件复位将重启设备,引导加载程序将寻找合理的负载.

Open Mesh项目就是这种方法的一个很好的例子.