踮起脚摘苹果 发表于 2020-7-17 15:42:11

用ML302远程升级STM32F1固件要怎么做?

目前接触到中移的4G模块ML302,但是不知道怎么用它OTA远程升级STM32F103的固件,有坛友知道的吗?

cloudcn 发表于 2020-7-17 16:00:46

自己写bootloader 代码估计要留到16k左右 一般在flash前面留16k 上电后检测标记 决定是升级还是运行
主程序需要升级时 设定标记并重启

butterflyspring 发表于 2020-7-29 10:15:41

看看厂家的应用笔记和例程就会清楚很多了。很多人都是这么走过来做产品的:)

zhuoyemp4 发表于 2020-7-29 13:44:29

把flash分两部分,一部分放BOOT,一部分放APP。再留几个字节放升级标志位。
自己写BOOT,上电先运行BOOT,检查升级标志位,如果升级标志存在说明已经升级成功就跳转到APP,如果升级标志被清,说明升级失败,就在BOOT中运行,等待升级指令,直至升级成功后再跳转到APP。

当在APP中运行时,收到升级指令后把升级标志清掉,再跳转到BOOT。

你需要做一套升级的协议,比如查询版本号、升级状态,写数据、跳转、固件CRC校验,校验结果查询等等。考虑好升级失败后怎么处理,哪些情况会导致错误(比如固件CRC校验失败,固件大小超过了你的FLash大小,某一包失败时重传还是重新从第一包开始传等等)画个自己的升级流程图慢慢实现。

另外,是外挂Flah还是就用MCU的flash都要考虑清楚,机制差不多,只是详细步骤差一点点。有问题我们可以再探讨,祝你成功。

BOOT做的尽量简洁,只负责搬固件数据。

废鱼 发表于 2020-7-30 09:33:41

自己写下载过程,将下载的数据存储到指定的地方,然后进入boot刷新新的程序。如果空间足够大,可以再boot中增加通讯过程,直接更新app程序。
页: [1]
查看完整版本: 用ML302远程升级STM32F1固件要怎么做?