假设您在现场有 1000 台物联网设备。现在,如果有一天,你在生产代码中发现了一个错误,并希望修复它,你会召回所有的上千台设备并在其中刷入新固件吗?可能不会!您更愿意拥有一种通过无线方式远程更新所有设备的方法。如今,OTA 更新非常普遍。时不时地,您会不断收到 Android 或 iOS 智能手机的软件更新。就像软件更新可以远程进行一样,固件更新也可以。在本章中,我们将了解如何远程更新 ESP32 的固件。
OTA更新流程
这个过程很简单。设备首先以块的形式下载新固件并将其存储在内存的单独区域中。我们称这个区域为“OTA 空间”。我们将存储当前代码或应用程序代码的内存区域称为“应用程序空间”。下载并验证整个固件后,设备引导加载程序就会开始运行。将引导加载程序视为在内存的单独区域(我们称之为“引导加载程序空间”)中编写的代码,其唯一目的是在每次设备重新启动时在应用程序空间中加载正确的代码。
因此,每次设备重启时,Bootloader 空间中的代码都会首先执行。大多数时候,它只是将控制权传递给应用程序空间中的代码。但是,在下载更新的固件后,当设备重新启动时,引导加载程序会注意到更新的应用程序代码可用。因此它将更新的代码从 OTA 空间闪存到应用程序空间,然后将控制权交给应用程序空间中的代码。结果将是升级设备固件。