一、创建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,最后完成。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐