STM32+Cubemx+腾讯云OTA(二)APP①
·
一、创建Cubeme工程
一样,直接复制之前用过的,改个名字。需要注意的是,上一篇提到,加入FreeRTOS后占用过大,只用主芯片无法实现分成bootloader、APP1区和APP2区实现升级程序。所以我这里把FreeRTOS先不要了,做一个小一点的例程:

二、程序框架
我之前做过一个裸机的简单OS,时基是1ms,每个任务规定多久执行一次,就通过OS_TimeManager函数计时,就绪的任务压进队列

然后现在就直接复制这个程序中的esp8266文件和uart1文件,再1ms执行一次esp8266任务就好了。1ms的计算原本另外用了一个定时器,现在一切从简,直接在滴答计时器里边做就好:



然后串口接收部分还是像我之前的文章一样,用一个定时器配合来接收不定长的帧。

主循环里只有2个测试任务:
1、Esp8266的任务

任务很简单,就是一个计时,一个发送,一个接收。具体跟之前文章的思路差不多

我们这里验证ota,用到的只有登录腾讯云和update部分,后面再结合Esp8266的腾讯云API分析。
2、Update_Check
这个任务就是一直检测标志位是否置1,然后复位

三、OTA程序部分
1、流程介绍
在我之前发的资源里边有一个腾讯AT指令使用手册,这个在乐鑫官网应该也能找到。实现的流程大概就是:
1、设备设置版本号主动上报

2、设备等待腾讯云服务器下发OTA升级,模组给设备反馈信息,有以下两条:
![]()
第一条为模组开始下载升级固件,第二条为模组已经成功将升级固件下载完成。
3、设备收到模组下载完成后,先读取模组缓存的固件信息:

这一步可以读版本号、大小、md5校验码
4、读取完固件信息后,开始读取数据,并保存到储存区。
这里当返回的长度为error或者返回的长度小于读取长度时,说明为最后一帧。这时候通过校验之后,就可以置复位标志和写入Update标志,固件开始由APP2复制到APP1,最后完成。
更多推荐
所有评论(0)