STM32F1系列阿里云的OTA升级

一、使用硬件

所用芯片:STM32F103RCT6 

所用wifi模块:安信可ESP 01S(以ESP8266为核心封装的芯片) + 华邦w25q128外部FLASH模块

所用云平台:阿里云(飞燕平台+物联网平台)

所用协议:MQTT协议

 

二、前置知识

        接下来依次介绍,我给出相关知识链接,后期我会以一个一个补全相关知识,现在请先浏览一遍官方给的相关知识,能更容易理解我的代码:

        1 .STM32F103RCT6 这是一个M3内核的ARM架构的芯片,也是我使用的最小系统板上所用到的芯片。

        内存:48kSROM + 256K FLASH                主频:最大72MHZ

其余芯片资料请参考官方网站STM32F103 - Arm Cortex-M3 Microcontrollers (MCU) 72 MHz - 意法半导体STMicroelectronics

        2.模块为安信可的ESP 01S(安信可封装的esp8266模块)华邦w25q128 

ESP8266系列模组专题 | 安信可科技 (ai-thinker.com)

技术文档 - 华邦电子 (winbond.com)

        3.平台为阿里云平台,需要用到物联网平台和生活物联网/飞燕平台

阿里云-计算,为了无法计算的价值 (aliyun.com)

        4.MQTT协议 + pahomqtt库

MQTT 入门介绍 | 菜鸟教程 (runoob.com)

GitHub - eclipse/paho.mqtt.c: An Eclipse Paho C client library for MQTT for Windows, Linux and MacOS. API documentation: https://eclipse.github.io/paho.mqtt.c/

        5.IAP升级相关知识(参考我前面的文章)

STM32F1的IAP升级_stm32f103 提高flash写入速度-CSDN博客

 

三、OTA升级

1.相关概念  

      OTA(Over-The-Air,空中升级)是一种通过无线通信技术实现远程更新设备固件或软件的方法。 这项技术广泛应用于现代物联网(IoT)设备、智能手机、汽车、嵌入式系统等领域,提供了一种无需物理连接的便捷更新方式。

        MQTT是一个建立在TCP/IP上的基于主题,订阅,发布 的一个轻量级的应用层的通信协议。

        我们使用AT指令集,基于esp8266先和阿里云建立TCP/IP连接,再与阿里云建立MQTT连接。

 

2.地址分配:

分为四个区域,三个标志位。

区域                        地址范围                                                          功能

BootLoader  内部FLASH:0X0800 0000 - 0X0800 6800(16K)      引导程序,进行升级判断等功能

APP1区        内部FLASH:0X0800 6800 - 0X0804 0000(240K)    功能代码,运行项目程序

APP1_FLAG 内部FLASH:0X0803 FFFC- 0X0804 0000(4Byte)   APP1的标志位,判断是否存在

APP2区        外部FLASH:0X0000 0000 - 0X0004 0000(240K)     升级的代码需要存放的区域

APP2_FLAG 外部FLASH:0X0003 FFFC- 0X0004 0000(4Byte)   升级码标志位,判断是否存在

APP1备份区 外部FLASH:0X0004 0000 - 0X0008 0000(240K)     正在运行程序的备份区

BACK_UP     外部FLASH:0X0007 FFFC- 0X0008 0000(4Byte)   备份区标志位,判断是否存在

 

3.代码流程

        我们依旧分为三个工程,BootLoader,APP1,APP2。

        (1)BootLoader

                 b260ead30f3249beaf568a8c472f09c6.png

        (2)APP1

        相比于IAP的APP1代码,我们的OTA的APP1代码就要简单的多,只需在运行时判断是否有更新标志的产生即可。

        df56ce674c7843a4b77c7ee133ef6e4f.png

 

目作者很忙,代码没时间些,先更新下流程图,代码后面补上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值