MCU OTA升级流程

MCU OTA升级流程

本文档以 STM32F103C8 为例。此 MCU 的 flash 共 64k,分为 64 页,每页 1k ,flash 的擦除需要以页为单位进行。

OTA 实现的思路是,代码分为 bootload 、应用代码、OTA数据,三个区域。使用 bootload 代码进行引导,可以通过识别 OTA 标志来决定是直接跳转到应用代码还是搬移OTA数据后跳转(此部分可以自行设计)。应用代码执行期间,如果收到 OTA 数据,要存储到 flash 的 OTA 数据区,并在接收完整个 OTA 数据后,将 OTA 升级标志置位,然后重启 MCU 。重启后,由 bootload 搬运 OTA 数据到 flash 的应用代码区,搬运完成之后跳转到应用代码区。由此实现 OTA 升级。

1. flash分区

可以将 flash 分为 bootload 、应用代码、OTA数据,三个区域。

bootload 代码为最开始要运行的代码,所以此区域的起始地址必须是 0x08000000 。bootload 编译完成后的大小可以作为 bootload 分区大小的依据,一般分为8k就可以了(编译的结果为 2k )。

应用代码和 OTA 数据区的大小需要相等,(64 - 8)/ 2 = 28k,所以应用代码的起始地址是 0x08002000,OTA 数据的起始地址是 0x08009000 。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值