你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F405在片 Flash 存放多份固件镜像实现固件升级

[复制链接]
patch1582 提问时间:2026-7-17 16:16 / 未解决

平台基于 STM32F405、FreeRTOS。目前正在调研多种 OTA 空中升级方案。我评估了几条路线,认为最简单可靠的架构设计如下: 开发一个 Bootloader,可以在两份应用固件镜像App A、App B之间选择启动,两份镜像都存放在 1MB 片内 Flash。Bootloader + AppA + AppB 总大小不能超过 1MB Flash 空间。App B 本质是 App A 的升级版本。 设备出厂预装 Bootloader 与 App A,Flash 预留足够区域存放后续升级包;一旦 OTA 升级到 App B 失败、App B 镜像损坏,设备可以回滚启动 App A。 后续发布新版本固件 App B;应用程序A 和 B都具备 Flash 烧写能力:App A 通过空中链路接收 App B 固件,并写入 Flash 对应的分区。 Bootloader 依据 Flash 内标记校验值,决定启动 App B 而非 App A;App A 仍然保留在 Flash 中,当 App B 运行异常时 Bootloader 能够切回 App A。 后续持续发布新版本 C、D 等,流程循环执行。标准升级路径 A→B→C→D……;但也存在特殊场景:A 升级 B 失败,或者用户还没收到 B 就直接获取 C,出现 A→C 跨版本升级。因此不能假定新版本固件固定写入某一个绝对地址。 查阅资料后我认为这套方案可行,相当于用软件模拟其他 STM32 芯片自带的双 Bank 硬件特性,由应用层实现 Flash 升级逻辑。Bootloader 负责选择启动镜像;每一份应用固件只能擦写、烧写自身不占用的 Flash 扇区。请问从整体架构角度,这套思路是否合理?

收藏 评论0 发布时间:2026-7-17 16:16

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版