我正在为我的项目使用32位ARM STM32F439ZI微控制器。数据手册指出,该微控制器具有2 MB的闪存,分为2个1 MB的存储区,每个存储区可同时进行读写和擦除操作。
我想介绍微控制器的空中(OTA)固件更新。
我正在使用大约200-400 KB的闪存作为固件。
当然,我只能使用引导加载程序来刷新下载更新二进制文件。但是,我想通过使用两个1兆字节的闪存组作为故障保护功能来引入安全网。
例如:
如果STM32F4可以进行“双重启动”,我找不到资源(关于STM32F7系列,有一些东西被宣传为专用的“功能”。)
STM32F4系列是否可能或推荐该过程?有没有更好的方法?引导加载程序分派调用(对活动闪存组的主要功能)的外观如何(Ansi C)?
答案 0 :(得分:0)
我不确定,如果我完全理解“双启动”,但是如果要在闪存中包含两个版本的固件(当前将要替换的一个版本和新固件),那么最简单的方法是在启动OTA之前允许引导加载程序在闪存的单独区域中备份应用程序固件,但这会减少可用闪存的总量。我的硕士论文(Fail-proof over the air firmware upgrade for embedded systems)的主题非常相似。您可能想看看。
答案 1 :(得分:0)
具有故障转移功能的OTA由Mongoose OS https://mongoose-os.com用于STM32(包括STM32F4)实现。 Mongoose操作系统存储库位于https://github.com/cesanta/mongoose-os。引导加载程序存储库位于https://github.com/mongoose-os-apps/bootloader
对于没有内置连接的STM32设置,另一种方法是使用https://vcon.io。也就是说,一个ESP32 / ESP8266通信模块(以太网,WiFi,蜂窝)可以对任何连接的STM32微控制器进行OTA,并通过多种模式(例如透明UART桥)提供连接。
免责声明:我同时代表Mongoose OS和VCON产品。