首页 > 编程语言 >1-STM32F103+EC800K(移远4G Cat1)远程升级篇(阿里云物联网平台)-STM32F103使用EC800K通过阿里云物联网平台升级程序(一机一密)

1-STM32F103+EC800K(移远4G Cat1)远程升级篇(阿里云物联网平台)-STM32F103使用EC800K通过阿里云物联网平台升级程序(一机一密)

时间:2024-01-19 14:56:21浏览次数:33  
标签:STM32F103 程序 升级 单片机 EC800K 云物 用户程序 固件 BootLoader

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/EC800K/aliyunota.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

<iframe frameborder="0" height="1500" name="ifd" scrolling="auto" src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/EC800K/aliyunota.html" width="100%"></iframe>

 

 

前言

这节说明一下如何使用阿里云物联网平台的OTA远程升级STM32程序

用户必须已经学习完了基本控制篇里面的阿里云物联网平台教程和看完了(主要是熟悉下流程)自建物联网平台OTA教程.

阿里云物联网平台是通过MQTT获取升级固件的版本,固件大小和下载地址信息.

 

升级概述

1,实现升级是使用的基础通信里面的Topic

阿里云介绍文档:

https://help.aliyun.com/document_detail/85700.html

 

 

 

 

 

 

/ota/device/inform/a1m7er1nJbQ/${deviceName} 

设备通过这个主题上报设备的固件版本号,要求设备在连接上服务器以后第一时间上报.

格式:

 

 

 

 

/ota/device/upgrade/a1m7er1nJbQ/${deviceName}

设备需要订阅这个主题,服务器会通过这个主题下发固件信息

一般在上传新固件以后,在平台上操作以后,平台才会主动下发.

size是固件大小;  version是服务器固件版本;  url是固件下载地址

提示:url虽然给的是https 但是同样可以使用 http 80 端口进行下载, 这个阿里云平台没有强制SSL

{
  "code": "1000",
  "data": {
    "size": 432945,
    "version": "2.0.0",
    "isDiff": 1,
    "url": "https://iotx-ota-pre.oss-cn-shanghai.aliyuncs.com/nopoll_0.4.4.tar.gz?Expires=1502955804&OSSAccessKeyId=XXXXXXXXXXXXXXXXXXXX&Signature=XfgJu7P6DWWejstKJgXJEH0qAKU%3D&security-token=CAISuQJ1q6Ft5B2yfSjIpK6MGsyN1Jx5jo6mVnfBglIPTvlvt5D50Tz2IHtIf3NpAusdsv03nWxT7v4flqFyTINVAEvYZJOPKGrGR0DzDbDasumZsJbo4f%2FMQBqEaXPS2MvVfJ%2BzLrf0ceusbFbpjzJ6xaCAGxypQ12iN%2B%2Fr6%2F5gdc9FcQSkL0B8ZrFsKxBltdUROFbIKP%2BpKWSKuGfLC1dysQcO1wEP4K%2BkkMqH8Uic3h%2Boy%2BgJt8H2PpHhd9NhXuV2WMzn2%2FdtJOiTknxR7ARasaBqhelc4zqA%2FPPlWgAKvkXba7aIoo01fV4jN5JXQfAU8KLO8tRjofHWmojNzBJAAPpYSSy3Rvr7m5efQrrybY1lLO6iZy%2BVio2VSZDxshI5Z3McKARWct06MWV9ABA2TTXXOi40BOxuq%2B3JGoABXC54TOlo7%2F1wTLTsCUqzzeIiXVOK8CfNOkfTucMGHkeYeCdFkm%2FkADhXAnrnGf5a4FbmKMQph2cKsr8y8UfWLC6IzvJsClXTnbJBMeuWIqo5zIynS1pm7gf%2F9N3hVc6%2BEeIk0xfl2tycsUpbL2FoaGk6BAF8hWSWYUXsv59d5Uk%3D",
    "md5": "93230c3bde425a9d7984a594ac55ea1e",
    "sign": "93230c3bde425a9d7984a594ac55****",
    "signMethod": "Md5",
    "module": "MCU"
  },
  "id": "1507707025",
  "message": "success"
}

 

 

/ota/device/progress/a1m7er1nJbQ/${deviceName}

设备可以使用这个主题上报更新进度, 发布的消息格式看下面

 

 

/sys/a1m7er1nJbQ/${deviceName}/thing/ota/firmware/get

设备可以使用这个主题主动请求云端固件信息, 详细说明看下面

 

 

 

 

 

 

模组连接

GPRS模块和单片机连接说明

单片机通过串口2和GPRS模块通信;  单片机PA8引脚作为复位模组使用;PB15连接模组的开机引脚

(单片机)PA2    ----   (EC800K)RX;

(单片机)PA3    ----   (EC800K)TX;

(单片机)PA8    ----   (EC800K)RST

(单片机)PB15  ----   (EC800K)PWR

 

注意: 单片机都是使用串口2和模组通信,所以需要拆掉ESP8266

 

 

开始测试

1.使用下载器下载BootLoader程序

 

 

 

 

使用单片机串口1打印串口日志(115200)

 

 

 

 

 

 

2.打开用户程序

 

3.修改为阿里云的设备参数(根据自己的注册设备修改)

 

 

 

4.修改完成以后,编译下载用户程序

 

5.正常运行

 

 

 

把升级包上传到服务器

1.修改用户程序(mcu_project)里面的固件版本

注:这个随意,我修改的是0.0.1

 

 

2.编译下工程

 

 

3.会在工程目录的bin文件夹生成bin文件

 

 

4.打开OTA Tools上位机软件

 

 

5.按照红框选择配置

 

 

6.选择用户程序生成的 bin文件

 

 

 

7.点击 生成固件

 

 

 

8.将在user.bin目录生成user_crc.bin文件

 

 

在物联网平台上新增固件

1.设备运维 - 固件升级 

 

 

 

 

2.选择添加模块(使用默认的好像不能主动查询到固件信息)

升级包名称:随意写,  所属产品:选择您当前设备所属的产品

 

 

3.模块名称填写1,这个是和单片机程序对应的

这个模块名称其实就是一个参数,命名最好是以产品型号进行命名

这个要和单片机里面设置的一样

 

 

 

 

 

4.选择咱刚才添加的升级包模块,版本号填写刚才用户程序设置的版本号

 

 

 

5.上传固件

 

 

 

 

6.先不选择验证

验证的话需要先让其中一个设备远程升级验证下.有个繁琐的过程

不过实际产品应用尽量选择验证!

这个验证呢后面会说,咱先快速的使用起来.

 

 

 

开始控制设备升级了

1.点击批量升级

 

 

 

2.选择动态升级

注意哈,待升级版本号那里之所以是0.0.0 是因为咱设备刚刚上报了自己的版本号

 

 

3.下面这些选项,按照自己的需求更改

 

 

 

 

4.观察下串口日志

服务器推送给了咱设备固件信息, 接收到固件信息以后重启执行BootLoader

 

 

5.BootLoader下载程序

 

 

6.下载完成

 

 

 

7.用户程序第一时间上报版本, 每隔一段时间获取下服务器上的固件信息

具体一会看程序,因为是16进制编码,看不清楚

 

 

 

假设咱更新了程序

1.修改版本号

 

 

 

2.编译下工程

 

 

 

3.打开OTA Tools.exe软件生成带有CRC校验的固件

 

 

 

 

4.添加升级包

 

 

 

 

5.下面的步骤我就不多说了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

假设需要验证

1.改个新版本

 

 

2.生成带有CRC校验的固件

 

 

 

3.添加升级包

 

 

 

 

 

 

 

4.点击验证

现在批量升级不可以点击,必须先验证下固件

 

 

 

这个是咱先前设备更新完成以后上报的版本号

 

 

 

 

5.选择可以用来测试的设备

 

 

 

 

 

 

6.可以看到设备开始升级

 

 

 

 

 

8,刷新下页面

然后按照前面的操作批量升级就可以了.

 

 

 

 

单片机程序说明

提示:

用户必须已经学习完了基本控制篇里面的阿里云物联网平台教程和看完了(主要是熟悉下流程)自建物联网平台的OTA教程.

我下面说明一下整个的流程

首先梳理一下思路:

阿里云物联网平台提供的升级其实和咱自建物联网平台里面的使用APP控制设备升级是一样的道理

其实就是用户程序通过mqtt获取程序文件下载地址,然后存储起来以后跳转到BootLoader

BootLoader访问下载地址,就下载了程序.

 

1,BootLoader程序就是原先的自建物联网平台里的程序,这里不再赘述

 

 

2,现在看用户程序

初始化处理

 

 

3,连接MQTT服务器

 

 

 

4,在连接成功函数中订阅主题和发布消息

那个上报升级进度没用到

 

 

 

5,每隔一段时间请求固件版本

 

 

 

 

 

 

6,接收到固件信息以后存储记录数据,重启

 

 

 

关于Flash分配调整

1.打开BootLoader 或者 用户程序(mcu_project)里面的iap_interface.h 文件

--------------------------------------------------------内部flash--------------------------------------------------------

如果是使用内部flash备份程序,flash的开头存储的BootLoader程序,  结尾存储更新相关数据, 预留一些空间让用户存储其它数据

最后剩下的平半分, 一部分存储用户程序, 另一部分用来备份用户程序

 

 

--------------------------------------------------------外部flash--------------------------------------------------------

备份的程序存储到了外部flash, 内部flash的最一开始存储的BootLoader程序, 

然后是存储用户程序, 然后是存储更新相关数据, 最后预留一些空间让用户存储其它数据

 

 

 

2,用户可以根据自己的需求调整Flash分配大小, 注意:BootLoader程序和用户程序的Flash分配要保证一样.

--------------------------------------------------------内部flash--------------------------------------------------------

2.调整完成以后,下载BootLoader程序, 串口会打印flash具体分配

 

 

 

 

用户需要根据上面打印的设置下用户程序(mcu_project)运行地址和占用空间

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

''

标签:STM32F103,程序,升级,单片机,EC800K,云物,用户程序,固件,BootLoader
From: https://www.cnblogs.com/yangfengwu/p/17974619

相关文章

  • 2-STM32F103+EC800K(移远4G Cat1)远程升级篇(自建物联网平台)-STM32通过EC800K使用htt
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/EC800K/myota.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  说明前......
  • STM32F103C8T6移植RT_Thread nane过程记录
    一、创建基于官方库的裸机工程(这教程很多,每个人创建的工程风格也不一样,就不多赘述了) 二、下载RT-ThreadNano源代码(https://github.com/RT-Thread/rtthread-nano/archive/refs/heads/master.zip)  三、RT-ThreadNano源码目录结构 四、将核心文件添加到裸机工程中 ......
  • 基于stm32f103c8t6蓝牙连接模块hc-05
    一、蓝牙通信流程最简单实际的的蓝牙通信过程就是单片机——蓝牙——手机蓝牙app蓝牙作为桥梁进行单片机与手机数据的交换蓝牙就如同一个无线的USART一样,将两者连接。二、硬件资料1.管教图 连接图: 实物:连接图    三、软件资料1.电脑蓝牙调试软件网址广州汇承......
  • 002-STM32F103+EC800K(移远4G Cat1)基本控制篇(阿里云物联网平台)--STM32+EC800K使用M
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/EC800K/aliyun.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 说明阿里......
  • 14-STM32F103+ESP8266+EC800K(移远4G Cat1)--STM32+EC800K以SSL单向认证方式连接MQTT
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/EC800K/my.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  说明安装的M......
  • 1-STM32F103+ESP8266+EC800K(移远4G Cat1)--硬件使用说明
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/EC800K/my.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 实物图  ......
  • ARM架构与编程--基于STM32F103 (1)LED原理图
    ARM架构与编程--基于STM32F103--(1)LED原理图--前言学习笔记《硬件知识_LED原理图》一、点亮一个led的步骤当我们学习C语言的时候,我们会写个Hello程序。那当我们写ARM程序,也该有一个简单的程序引领我们入门,这个程序就是点亮LED。我们怎样去点亮一个LED呢?分为三步:1.看原理图,确......
  • 【STM32F103】HC-SR04超声波测距模块详解(附工程文件)
    前言:使用的硬件:STM32F103C8T6,HC-SR04,ST-Link(其他烧录器也可以),0.96寸OLED屏幕(非必须,仅供显示测距结果,可以使用串口助手代替),若干杜邦线。涉及操作stm32的GPIO口,外部中断,定时器,本文中不会详细解释,仅提供代码思路。HC-SR04:HC-SR04超声波测距模块提供2cm~400cm的测距功能,精度达3mm。......
  • stm32f103rbt6芯片部分知识点总结。
    使用的工具开发板:stm32f103rbt6内核:arm-cotex-m3系类v7架构r:64脚,b:128字节,6:工作温度范围muc就是stm32单片机芯片,soc是带操作系统的开发板,例如a53。 学习的主要内容掌握接口编程技术即裸板驱动开发通过直接写寄存器(寄存器地址=基地址加偏移地址)或调用函数实现cpu对......
  • STM32F103:SWJ调试接口设置成普通的IO口——PA13,PA14,PA15,PB3,PB4
    一、STM32调试端口STM32有两种程序调试接口,具体如下:SWD调试接口: PA13、PA14共两个引脚。JTAG调试接口: PA13、PA14、PA15、PB3、PB4共五个引脚。 单片机启动后,初始状态这五个引脚就默认是调试接口。而实际使用中,一般只使用SWCLK、SWDIO这两个引脚用做S......